public SwtWindow(Element self, XulComponent parent, XulDomContainer container, String tagName) {
    super(tagName);

    Shell possibleParent = null;

    orient = Orient.VERTICAL;

    if (container.getOuterContext() != null
        && container.getOuterContext() instanceof Shell
        && (self != null && self.getAttributeValue("proxyoutercontext") != null)) {
      shell = (Shell) container.getOuterContext();
    } else {

      // First, check to see if an outer context was passed before parser started...
      if (container.getOuterContext() != null && container.getOuterContext() instanceof Shell) {
        possibleParent = (Shell) container.getOuterContext();
      }

      // If not, then try to use the API's parent parameter...
      if ((possibleParent == null) && (parent != null)) {
        possibleParent = (Shell) parent.getManagedObject();
      }

      // Otherwise, you're on your own...
      shell =
          (possibleParent != null)
              ? new Shell(possibleParent, SWT.SHELL_TRIM)
              : new Shell(SWT.SHELL_TRIM);
    }

    shell.setLayout(new GridLayout());
    shell.setBackgroundMode(SWT.INHERIT_DEFAULT);
    setManagedObject(shell);
    xulDomContainer = container;
  }
  /**
   * Child XUL elements need to be notified of visibility changes if they implement Resizable.
   *
   * <p>This method is recursive.
   *
   * @param ele
   */
  private void notifyOnShow(Element ele) {

    if (ele instanceof Resizable) {
      ((Resizable) ele).onResize();
    }
    for (Element e : ele.getChildNodes()) {
      notifyOnShow(e);
    }
  }
  public SwtLabel(Element self, XulComponent parent, XulDomContainer container, String tagName) {
    super(tagName);

    String multi = (self != null) ? self.getAttributeValue("multiline") : null;
    if (multi != null && multi.equals("true")) {
      label = new Label((Composite) parent.getManagedObject(), SWT.WRAP);
      setManagedObject(label);
    } else {
      cLabel = new CLabel((Composite) parent.getManagedObject(), SWT.NONE);
      setManagedObject(cLabel);
    }
  }