Support for enums?

SWT Designer allows you to create the views, editors, perspectives, pref pages, composites, etc. that comprise Eclipse SWT & RCP applications and plug-ins.

Moderators: Konstantin.Scheglov, gnebling, Alexander.Mitin, jwren, Eric Clayberg

Support for enums?

Postby Slot Head » Wed Feb 08, 2006 2:39 pm

I've made a widget that uses enums for some of its properties. For example, left, centered or right alignment of text in a grid cell.

Any plans to support enums as Designer properties in the future?[/img]
Slot Head
 
Posts: 36
Joined: Sun Jul 10, 2005 9:50 am

Postby admin » Mon Feb 13, 2006 3:43 am

Do you mean real, Java5 enums? This is not supported yet, but I feel that I need them myself, so probably I will add them in near future. :-)

If you want not "real" enums, but something like them, you can look on interface IComboPropertyEditor in "api_src" folder. For custom SWT controls you can create custom properties.

See http://www.swt-designer.com/forum/viewtopic.php?t=756 for description and example project.
admin
Moderator
 
Posts: 166
Joined: Thu Jul 24, 2003 12:25 am

Postby Slot Head » Mon Feb 13, 2006 9:34 am

Yes, I should've said real enum's that were intorduced in Java 5.0 (aka 1.5).

That would be really cool if SWT-Designer supported them.
Slot Head
 
Posts: 36
Joined: Sun Jul 10, 2005 9:50 am

Postby Eric Clayberg » Sun Feb 26, 2006 8:16 pm

Slot Head wrote:Yes, I should've said real enum's that were intorduced in Java 5.0 (aka 1.5).
That would be really cool if SWT-Designer supported them.

The latest v4.2.1 build now supports enums and EnumSets for properties within Eclipse 3.1 and 3.2.

Here's a test case:

Code: Select all
package model.swt.frames.enums;
public enum ButtonEnum {
   REFRESH, COMMIT, ROLLBACK, ADD, DELETE
}

Code: Select all
package model.swt.frames;
import java.util.EnumSet;
import model.swt.frames.enums.ButtonEnum;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
public class ButtonEnumComposite extends Composite {
   ////////////////////////////////////////////////////////////////////////////
   //
   // Constructor
   //
   ////////////////////////////////////////////////////////////////////////////
   public ButtonEnumComposite(Composite parent, int style) {
      super(parent, style);
      setLayout(new GridLayout());
   }
   ////////////////////////////////////////////////////////////////////////////
   //
   // Subclassing support
   //
   ////////////////////////////////////////////////////////////////////////////
   @Override
   public void dispose() {
      super.dispose();
   }
   @Override
   protected void checkSubclass() {
      // Disable the check that prevents subclassing of SWT components
   }
   ////////////////////////////////////////////////////////////////////////////
   //
   // Simple enum property
   //
   ////////////////////////////////////////////////////////////////////////////
   private ButtonEnum m_activeButton = ButtonEnum.ADD;
   public ButtonEnum getActiveButton() {
      return m_activeButton;
   }
   public void setActiveButton(ButtonEnum activeButton) {
      m_activeButton = activeButton;
      System.out.println("setActiveButton: " + activeButton);
   }
   ////////////////////////////////////////////////////////////////////////////
   //
   // EnumSet property
   //
   ////////////////////////////////////////////////////////////////////////////
   private EnumSet<ButtonEnum> m_activeButtons = EnumSet.of(ButtonEnum.COMMIT, ButtonEnum.ROLLBACK);
   public EnumSet<ButtonEnum> getActiveButtons() {
      return m_activeButtons;
   }
   public void setActiveButtons(EnumSet<ButtonEnum> activeButtons) {
      m_activeButtons = activeButtons;
      System.out.println("setActiveButtons: " + activeButtons);
   }
}

Code: Select all
package model.swt.frames;
import static model.swt.frames.enums.ButtonEnum.COMMIT;
import java.util.EnumSet;
import model.swt.frames.enums.ButtonEnum;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
public class ButtonEnumCompositeTest {
   private ButtonEnumComposite m_ButtonEnumComposite;
   private ButtonEnumComposite m_TableComposite;
   protected Shell shell;
   /**
    * Launch the application
    * @param args
    */
   public static void main(String[] args) {
      try {
         ButtonEnumCompositeTest window = new ButtonEnumCompositeTest();
         window.open();
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
   /**
    * Open the window
    */
   public void open() {
      final Display display = Display.getDefault();
      createContents();
      shell.open();
      shell.layout();
      while (!shell.isDisposed()) {
         if (!display.readAndDispatch())
            display.sleep();
      }
   }
   /**
    * Create contents of the window
    */
   protected void createContents() {
      shell = new Shell();
      shell.setSize(750, 600);
      shell.setText("SWT Application");
      shell.setLayout(new GridLayout());
      {
         m_TableComposite = new ButtonEnumComposite(shell, SWT.NONE);
         m_TableComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
      }
      {
         m_ButtonEnumComposite = new ButtonEnumComposite(shell, SWT.NONE);
         m_ButtonEnumComposite.setActiveButton(ButtonEnum.REFRESH);
         m_ButtonEnumComposite.setActiveButtons(EnumSet.of(ButtonEnum.REFRESH, ButtonEnum.ADD, ButtonEnum.DELETE));
         m_ButtonEnumComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
      }
      {
         m_ButtonEnumComposite = new ButtonEnumComposite(shell, SWT.NONE);
         m_ButtonEnumComposite.setActiveButtons(EnumSet.of(ButtonEnum.ADD, ButtonEnum.DELETE));
         m_ButtonEnumComposite.setActiveButton(COMMIT);
         m_ButtonEnumComposite.setLayoutData(new GridData(GridData.FILL_BOTH));
      }
   }
}
Eric Clayberg
Software Engineering Manager
Google
http://code.google.com/webtoolkit/download.html

Author: "Eclipse Plug-ins"
http://www.qualityeclipse.com
Eric Clayberg
Moderator
 
Posts: 4503
Joined: Tue Sep 30, 2003 6:39 am
Location: Boston, MA USA


Return to SWT Designer

Who is online

Users browsing this forum: No registered users and 1 guest