[jboss-svn-commits] JBL Code SVN: r11056 - labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Apr 17 00:55:09 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-04-17 00:55:09 -0400 (Tue, 17 Apr 2007)
New Revision: 11056

Added:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/DropDownMenuWithDefaultAction.java
Modified:
   labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericActionBarContributor.java
Log:
JBRULES-803 DropDownMenyWithDefaultAction
-alignmet now uses DropDownMenuWithDefaultAction

Added: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/DropDownMenuWithDefaultAction.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/DropDownMenuWithDefaultAction.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/DropDownMenuWithDefaultAction.java	2007-04-17 04:55:09 UTC (rev 11056)
@@ -0,0 +1,159 @@
+package org.drools.eclipse.flow.common.editor;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.ActionContributionItem;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IMenuCreator;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Menu;
+import org.eclipse.swt.widgets.MenuItem;
+
+public class DropDownMenuWithDefaultAction extends Action
+    implements
+    IMenuCreator {
+
+    private Menu                    dropDownMenu;
+
+    private IAction                 delegate;
+
+    private List                    list;
+
+    private IPropertyChangeListener enabledListener;
+    private SelectionListener       selectionListener;
+
+    public DropDownMenuWithDefaultAction(final IAction action) {
+        this.selectionListener = new ItemSelectionListener( this );
+        setMenuCreator( this );
+        this.dropDownMenu = null;
+        setAction( action );
+        this.list = new ArrayList();
+    }
+
+    public void dispose() {
+        if ( this.dropDownMenu != null ) {
+            this.dropDownMenu.dispose();
+            this.dropDownMenu = null;
+        }
+    }
+
+    public void add(final IContributionItem item) {
+        this.list.add( item );
+    }
+
+    public void add(final IAction action) {
+        this.list.add( action );
+    }
+
+    public Menu getMenu(final Control parent) {
+        if ( this.dropDownMenu == null ) {
+            this.dropDownMenu = new Menu( parent );
+            populateMenu();
+        }
+        return this.dropDownMenu;
+    }
+
+    public Menu getMenu(final Menu parent) {
+        if ( this.dropDownMenu == null ) {
+            this.dropDownMenu = new Menu( parent );
+            populateMenu();
+        }
+        return this.dropDownMenu;
+    }
+
+    private void populateMenu() {
+        for ( final Iterator it = this.list.iterator(); it.hasNext(); ) {
+            final Object object = it.next();
+            if ( object instanceof IContributionItem ) {
+                final IContributionItem item = (IContributionItem) object;
+                item.fill( this.dropDownMenu,
+                           -1 );
+            } else {
+                final IAction action = (IAction) object;
+                final ActionContributionItem item = new ActionContributionItem( action );
+                item.fill( this.dropDownMenu,
+                           -1 );
+            }
+        }
+        final MenuItem[] items = this.dropDownMenu.getItems();
+        for ( int i = 0; i < items.length; i++ ) {
+            items[i].addSelectionListener( this.selectionListener );
+        }
+    }
+
+    public void setAction(final IAction action) {
+        if ( this.enabledListener == null ) {
+            this.enabledListener = new EnabledPropertyChangeListener( this );
+        }
+        setText( action.getText() );
+        setToolTipText( action.getToolTipText() );
+        setImageDescriptor( action.getImageDescriptor() );
+        setDisabledImageDescriptor( action.getDisabledImageDescriptor() );
+        setEnabled( action.isEnabled() );
+        setDescription( action.getDescription() );
+        setHelpListener( action.getHelpListener() );
+        setHoverImageDescriptor( action.getHoverImageDescriptor() );
+        if ( this.delegate != null ) {
+            this.delegate.removePropertyChangeListener( this.enabledListener );
+        }
+        this.delegate = action;
+        this.delegate.addPropertyChangeListener( this.enabledListener );
+    }
+
+    /* (non-Javadoc)
+     * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction)
+     */
+    public void run() {
+        this.delegate.run();
+    }
+
+    public static class EnabledPropertyChangeListener
+        implements
+        IPropertyChangeListener {
+        private IAction action;
+
+        public EnabledPropertyChangeListener(final IAction action) {
+            this.action = action;
+        }
+
+        public void propertyChange(final PropertyChangeEvent event) {
+            if ( event.getProperty().equals( IAction.ENABLED ) ) {
+                this.action.setEnabled( ((Boolean) event.getNewValue()).booleanValue() );
+            }
+        }
+    }
+
+    public static class ItemSelectionListener
+        implements
+        SelectionListener {
+        private DropDownMenuWithDefaultAction dropDownMenu;
+
+        public ItemSelectionListener(final DropDownMenuWithDefaultAction dropDownMenu) {
+            this.dropDownMenu = dropDownMenu;
+        }
+
+        public void widgetDefaultSelected(final SelectionEvent e) {
+            final MenuItem menuItem = (MenuItem) e.getSource();
+            if ( menuItem.getData() instanceof ActionContributionItem ) {
+                final ActionContributionItem item = (ActionContributionItem) menuItem.getData();
+                this.dropDownMenu.setAction( item.getAction() );
+            }
+        }
+
+        public void widgetSelected(final SelectionEvent e) {
+            final MenuItem menuItem = (MenuItem) e.getSource();
+            if ( menuItem.getData() instanceof ActionContributionItem ) {
+                final ActionContributionItem item = (ActionContributionItem) menuItem.getData();
+                this.dropDownMenu.setAction( item.getAction() );
+            }
+        }
+    }
+}

Modified: labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericActionBarContributor.java
===================================================================
--- labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericActionBarContributor.java	2007-04-17 01:42:42 UTC (rev 11055)
+++ labs/jbossrules/trunk/drools-eclipse/drools-eclipse-plugin/src/main/java/org/drools/eclipse/flow/common/editor/GenericActionBarContributor.java	2007-04-17 04:55:09 UTC (rev 11056)
@@ -1,4 +1,5 @@
 package org.drools.eclipse.flow.common.editor;
+
 /*
  * Copyright 2005 JBoss Inc
  * 
@@ -17,12 +18,14 @@
 
 import org.eclipse.draw2d.PositionConstants;
 import org.eclipse.gef.ui.actions.ActionBarContributor;
+import org.eclipse.gef.ui.actions.AlignmentAction;
 import org.eclipse.gef.ui.actions.AlignmentRetargetAction;
 import org.eclipse.gef.ui.actions.DeleteRetargetAction;
 import org.eclipse.gef.ui.actions.GEFActionConstants;
 import org.eclipse.gef.ui.actions.RedoRetargetAction;
 import org.eclipse.gef.ui.actions.UndoRetargetAction;
 import org.eclipse.gef.ui.actions.ZoomComboContributionItem;
+import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IToolBarManager;
 import org.eclipse.jface.action.Separator;
 import org.eclipse.ui.actions.ActionFactory;
@@ -34,41 +37,39 @@
  */
 public class GenericActionBarContributor extends ActionBarContributor {
 
-	protected void buildActions() {
-		addRetargetAction(new UndoRetargetAction());
-		addRetargetAction(new RedoRetargetAction());
-		addRetargetAction(new DeleteRetargetAction());
+    protected void buildActions() {
+        addRetargetAction( new UndoRetargetAction() );
+        addRetargetAction( new RedoRetargetAction() );
+        addRetargetAction( new DeleteRetargetAction() );
 
-		addRetargetAction(new AlignmentRetargetAction(PositionConstants.LEFT));
-		addRetargetAction(new AlignmentRetargetAction(PositionConstants.CENTER));
-		addRetargetAction(new AlignmentRetargetAction(PositionConstants.RIGHT));
-		addRetargetAction(new AlignmentRetargetAction(PositionConstants.TOP));
-		addRetargetAction(new AlignmentRetargetAction(PositionConstants.MIDDLE));
-		addRetargetAction(new AlignmentRetargetAction(PositionConstants.BOTTOM));
-	}
+        addRetargetAction( new AlignmentRetargetAction( PositionConstants.LEFT ) );
+        addRetargetAction( new AlignmentRetargetAction( PositionConstants.CENTER ) );
+        addRetargetAction( new AlignmentRetargetAction( PositionConstants.RIGHT ) );
+        addRetargetAction( new AlignmentRetargetAction( PositionConstants.TOP ) );
+        addRetargetAction( new AlignmentRetargetAction( PositionConstants.MIDDLE ) );
+        addRetargetAction( new AlignmentRetargetAction( PositionConstants.BOTTOM ) );
+    }
 
-	public void contributeToToolBar(IToolBarManager toolBarManager) {
-		toolBarManager.add(getAction(ActionFactory.UNDO.getId()));
-		toolBarManager.add(getAction(ActionFactory.REDO.getId()));
-		toolBarManager.add(new Separator());
-		toolBarManager.add(new ZoomComboContributionItem(getPage()));
-		toolBarManager.add(new Separator());
-		toolBarManager.add(getActionRegistry().getAction(
-				GEFActionConstants.ALIGN_LEFT));
-		toolBarManager.add(getActionRegistry().getAction(
-				GEFActionConstants.ALIGN_CENTER));
-		toolBarManager.add(getActionRegistry().getAction(
-				GEFActionConstants.ALIGN_RIGHT));
-		toolBarManager.add(new Separator());
-		toolBarManager.add(getActionRegistry().getAction(
-				GEFActionConstants.ALIGN_TOP));
-		toolBarManager.add(getActionRegistry().getAction(
-				GEFActionConstants.ALIGN_MIDDLE));
-		toolBarManager.add(getActionRegistry().getAction(
-				GEFActionConstants.ALIGN_BOTTOM));
+    public void contributeToToolBar(IToolBarManager toolBarManager) {
+        toolBarManager.add( getAction( ActionFactory.UNDO.getId() ) );
+        toolBarManager.add( getAction( ActionFactory.REDO.getId() ) );
+        toolBarManager.add( new Separator() );
+        toolBarManager.add( new ZoomComboContributionItem( getPage() ) );
+        toolBarManager.add( new Separator() );                              
+        
+        DropDownMenuWithDefaultAction alignMenu = new DropDownMenuWithDefaultAction( getActionRegistry().getAction( GEFActionConstants.ALIGN_LEFT ) );
+        alignMenu.add( getActionRegistry().getAction( GEFActionConstants.ALIGN_LEFT ) );
+        alignMenu.add( getActionRegistry().getAction( GEFActionConstants.ALIGN_CENTER ) );
+        alignMenu.add( getActionRegistry().getAction( GEFActionConstants.ALIGN_RIGHT ) );
+        alignMenu.add( new Separator() );
+        alignMenu.add( getActionRegistry().getAction( GEFActionConstants.ALIGN_TOP ) );
+        alignMenu.add( getActionRegistry().getAction( GEFActionConstants.ALIGN_MIDDLE ) );
+        alignMenu.add( getActionRegistry().getAction( GEFActionConstants.ALIGN_BOTTOM ) );
+        toolBarManager.add( alignMenu );
 
-	}
+    }
 
-	protected void declareGlobalActionKeys() {
-	}
+    protected void declareGlobalActionKeys() {
+        
+    }
 }




More information about the jboss-svn-commits mailing list