[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Newsgroup Home]
[news.eclipse.technology.albireo] Size-Calculation of Embedded Swing Controls in Dialogs

Hi,

If I'm using a JFace dialog like the TitleAreaDialog and having a SwingControl inside the dialog, the size of the main panel is not correctly calculated after the shell of the dialog is created.

I tried all available Composites for the layoutDeferredAncestor, but no one was working correctly. My workaround was to call pack() on the shell in the afterComponentCreatedSWTThread() method but this works only randomly.

Any ideas to solve this problem?

Thanks,
Dominik

TitleAreaDialog d = new TitleAreaDialog(topLevelShell) {
 protected Control createDialogArea(Composite parent) {
   final Composite comp = (Composite) super.createDialogArea(parent);
   SwingControl control = new SwingControl(comp, SWT.NONE) {
     protected JComponent createSwingComponent() {
       JPanel p = new JPanel();
       p.setLayout(new java.awt.GridLayout(10, 1));
       for (int i = 0; i < 10; i++) {
         p.add(new JTextField(String.valueOf(i)));
       }
       JScrollPane scroll = new JScrollPane(p);
       scroll.setBorder(new EmptyBorder(0, 0, 0, 0));
       return scroll;
     }
     public Composite getLayoutAncestor() {
       return getShell();
     }
   };
   control.setLayoutData(new GridData(GridData.FILL_BOTH));
   return parent;
 }
};
d.open();