[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