Author: bobtarling
Date: 2010-08-05 04:44:32-0700
New Revision: 18628
Added:
trunk/src/argouml-app/src/org/argouml/kernel/ActionList.java
Modified:
trunk/src/argouml-app/src/org/argouml/ui/ContextActionFactoryManager.java
trunk/src/argouml-app/src/org/argouml/ui/explorer/ExplorerPopup.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.java
trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java
trunk/src/argouml-core-transformer/src/org/argouml/transformer/TransformerManager.java
Log:
Put transformer submenu back
Added: trunk/src/argouml-app/src/org/argouml/kernel/ActionList.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/kernel/ActionList.java?view=markup&pathrev=18628
==============================================================================
--- (empty file)
+++ trunk/src/argouml-app/src/org/argouml/kernel/ActionList.java 2010-08-05 04:44:32-0700
@@ -0,0 +1,88 @@
+/* $Id$
+ *******************************************************************************
+ * Copyright (c) 2010 Contributors - see below
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Bob Tarling
+ *******************************************************************************
+ */
+
+package org.argouml.kernel;
+
+import java.awt.event.ActionEvent;
+import java.beans.PropertyChangeListener;
+import java.util.ArrayList;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.Icon;
+
+/**
+ * This class is both a List and an Action although it purpose is not to serve
+ * as a true executable Action.
+ * Its purpose is to allow menu items, toolbars and toolbuttons etc to be built
+ * from a model mode up of Actions where each Action is either an executable
+ * action to be shown as a menu item or toolbutton. However should an Action
+ * be of this specific class it provides the name and icon only for building
+ * a submenu node or dropdown toolbutton and contains a list of further
+ * Actions to be contained in that subnode.
+ *
+ * @param <E>
+ * @author Bob Tarling
+ */
+public class ActionList extends ArrayList<Action> implements Action {
+
+ private Action dummyAction;
+
+ public ActionList(String name) {
+ dummyAction = new DummyAction(name);
+ }
+
+ public ActionList(String name, Icon icon) {
+ dummyAction = new DummyAction(name, icon);
+ }
+
+ public void addPropertyChangeListener(PropertyChangeListener arg0) {
+ dummyAction.addPropertyChangeListener(arg0);
+ }
+
+ public Object getValue(String arg0) {
+ return dummyAction.getValue(arg0);
+ }
+
+ public boolean isEnabled() {
+ return dummyAction.isEnabled();
+ }
+
+ public void putValue(String key, Object value) {
+ dummyAction.putValue(key, value);
+ }
+
+ public void removePropertyChangeListener(PropertyChangeListener arg0) {
+ dummyAction.removePropertyChangeListener(arg0);
+ }
+
+ public void setEnabled(boolean b) {
+ dummyAction.setEnabled(b);
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ dummyAction.actionPerformed(e);
+ }
+
+ private static class DummyAction extends AbstractAction {
+ DummyAction(String name) {
+ super(name);
+ }
+ DummyAction(String name, Icon icon) {
+ super(name, icon);
+ }
+ public void actionPerformed(ActionEvent e) {
+ // Do nothing
+ }
+ }
+}
Modified: trunk/src/argouml-app/src/org/argouml/ui/ContextActionFactoryManager.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/ui/ContextActionFactoryManager.java?view=diff&pathrev=18628&r1=18627&r2=18628
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/ui/ContextActionFactoryManager.java (original)
+++ trunk/src/argouml-app/src/org/argouml/ui/ContextActionFactoryManager.java 2010-08-05 04:44:32-0700
@@ -41,11 +41,11 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.Vector;
import javax.swing.Action;
-import javax.swing.JSeparator;
+import org.apache.log4j.Logger;
+import org.argouml.kernel.ActionList;
import org.argouml.ui.targetmanager.TargetManager;
/**
@@ -105,11 +105,12 @@
for (ContextActionFactory factory : ContextActionFactoryManager
.getFactories()) {
tmpActionsContainer = factory.createContextPopupActions(element);
- if (tmpActionsContainer != null && tmpActionsContainer.size() > 0) {
- if (allActionsFound.size() > 0) {
- allActionsFound.add(null);
- }
- allActionsFound.addAll(tmpActionsContainer);
+ if (tmpActionsContainer instanceof ActionList) {
+ allActionsFound.add((Action) tmpActionsContainer);
+ } else {
+ if (tmpActionsContainer != null && tmpActionsContainer.size() > 0) {
+ allActionsFound.addAll(tmpActionsContainer);
+ }
}
}
return allActionsFound;
Modified: trunk/src/argouml-app/src/org/argouml/ui/explorer/ExplorerPopup.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/ui/explorer/ExplorerPopup.java?view=diff&pathrev=18628&r1=18627&r2=18628
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/ui/explorer/ExplorerPopup.java (original)
+++ trunk/src/argouml-app/src/org/argouml/ui/explorer/ExplorerPopup.java 2010-08-05 04:44:32-0700
@@ -53,9 +53,11 @@
import javax.swing.JMenu;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
+import javax.swing.MenuElement;
import org.apache.log4j.Logger;
import org.argouml.i18n.Translator;
+import org.argouml.kernel.ActionList;
import org.argouml.kernel.ProfileConfiguration;
import org.argouml.kernel.Project;
import org.argouml.kernel.ProjectManager;
@@ -514,9 +516,33 @@
private void initMenuCreateModuleActions() {
final List<Action> contextActions =
ContextActionFactoryManager.getContextPopupActions();
- for (Action a : contextActions) {
- LOG.info("Adding the Action " + a);
- add(a);
+ LOG.info(contextActions);
+ if (contextActions instanceof ActionList) {
+ recursiveAdd(this, (Action) contextActions);
+ } else {
+ for (Action a : contextActions) {
+ recursiveAdd(this, a);
+ }
+ }
+ }
+
+ private void recursiveAdd(MenuElement menu, Action a) {
+ if (a instanceof List<?>) {
+ JMenu m = new JMenu(a);
+ if (menu instanceof JPopupMenu) {
+ ((JPopupMenu) menu).add(m);
+ } else if (menu instanceof JMenu) {
+ ((JMenu) menu).add(m);
+ }
+ for (Action subAction : (List<Action>) a) {
+ recursiveAdd(m, subAction);
+ }
+ } else {
+ if (menu instanceof JPopupMenu) {
+ ((JPopupMenu) menu).add(a);
+ } else if (menu instanceof JMenu) {
+ ((JMenu) menu).add(a);
+ }
}
}
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.java?view=diff&pathrev=18628&r1=18627&r2=18628
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigEdgeModelElement.java 2010-08-05 04:44:32-0700
@@ -60,6 +60,7 @@
import javax.swing.Action;
import javax.swing.Icon;
+import javax.swing.JMenu;
import javax.swing.JSeparator;
import javax.swing.SwingUtilities;
@@ -331,8 +332,17 @@
// Added this part to load the extra menu content
final List<Action> modulesActions =
ContextActionFactoryManager.getContextPopupActions();
- if(modulesActions!=null && modulesActions.size()>0){
- popUpActions.addAll(modulesActions);
+
+ for (Action a : modulesActions) {
+ if (a instanceof List) {
+ JMenu m = new JMenu((Action) a);
+ popUpActions.add(m);
+ for (Action subAction : (List<Action>) a) {
+ m.add(subAction);
+ }
+ } else {
+ popUpActions.add(a);
+ }
}
// popupAddOffset should be equal to the number of items added here:
Modified: trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java?view=diff&pathrev=18628&r1=18627&r2=18628
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/diagram/ui/FigNodeModelElement.java 2010-08-05 04:44:32-0700
@@ -62,6 +62,7 @@
import javax.swing.Action;
import javax.swing.Icon;
+import javax.swing.JMenu;
import javax.swing.JSeparator;
import javax.swing.SwingUtilities;
@@ -603,8 +604,17 @@
final List<Action> modulesActions =
ContextActionFactoryManager.getContextPopupActions();
- if(modulesActions!=null && modulesActions.size()>0){
- popUpActions.addAll(modulesActions);
+
+ for (Action a : modulesActions) {
+ if (a instanceof List) {
+ JMenu m = new JMenu((Action) a);
+ popUpActions.add(m);
+ for (Action subAction : (List<Action>) a) {
+ m.add(subAction);
+ }
+ } else {
+ popUpActions.add(a);
+ }
}
// Show ...
Modified: trunk/src/argouml-core-transformer/src/org/argouml/transformer/TransformerManager.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-transformer/src/org/argouml/transformer/TransformerManager.java?view=diff&pathrev=18628&r1=18627&r2=18628
==============================================================================
--- trunk/src/argouml-core-transformer/src/org/argouml/transformer/TransformerManager.java (original)
+++ trunk/src/argouml-core-transformer/src/org/argouml/transformer/TransformerManager.java 2010-08-05 04:44:32-0700
@@ -19,6 +19,7 @@
import javax.swing.Action;
+import org.argouml.kernel.ActionList;
import org.argouml.kernel.Project;
import org.argouml.kernel.ProjectManager;
import org.argouml.ui.ContextActionFactory;
@@ -63,9 +64,9 @@
}
public List createContextPopupActions(Object element) {
- Project p = ProjectManager.getManager().getCurrentProject();
+ final Project p = ProjectManager.getManager().getCurrentProject();
- List<Action> result = new ArrayList<Action>();
+ final ActionList result = new ActionList("Transform to");
for (Transformer t : getTransformers()) {
if (t.canTransform(element)) {
result.addAll(t.actions(p, element));
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2643235
To unsubscribe from this discussion, e-mail: [[email protected]].
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.