Author: bobtarling
Date: 2010-04-26 05:56:50-0700
New Revision: 18334

Added:
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActivityGraphContextComboBoxModel.java
Modified:
   
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java

Log:
Issue 6080: Allow combo to change context of activity graph

Modified: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java?view=diff&pathrev=18334&r1=18333&r2=18334
==============================================================================
--- 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java
 (original)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java
 2010-04-26 05:56:50-0700
@@ -444,8 +444,14 @@
                             "label.represented-operation.navigate.tooltip"),
                     combo);
         } else if ("context".equals(prop.getName())) {
-            final UMLComboBoxModel model = 
-                new UMLStateMachineContextComboBoxModel(propertyName, target);
+            final UMLComboBoxModel model;
+            if (Model.getFacade().isAActivityGraph(target)) {
+                model = 
+                    new UMLActivityGraphContextComboBoxModel(propertyName, 
target);
+            } else {
+                model = 
+                    new UMLStateMachineContextComboBoxModel(propertyName, 
target);
+            }
             UMLComboBox combo = new UMLComboBox(model);
             comp = new UMLComboBoxNavigator(Translator.localize(
                             "label.context.navigate.tooltip"),

Added: 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActivityGraphContextComboBoxModel.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActivityGraphContextComboBoxModel.java?view=markup&pathrev=18334
==============================================================================
--- (empty file)
+++ 
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/UMLActivityGraphContextComboBoxModel.java
   2010-04-26 05:56:50-0700
@@ -0,0 +1,154 @@
+/* $Id: UMLActivityGraphContextComboBoxModel.java 17883 2010-01-12 21:11:38Z 
linus $
+ *****************************************************************************
+ * Copyright (c) 2009-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
+ *****************************************************************************
+ *
+ * Some portions of this file was previously release using the BSD License:
+ */
+
+// Copyright (c) 2006 The Regents of the University of California. All
+// Rights Reserved. Permission to use, copy, modify, and distribute this
+// software and its documentation without fee, and without a written
+// agreement is hereby granted, provided that the above copyright notice
+// and this paragraph appear in all copies.  This software program and
+// documentation are copyrighted by The Regents of the University of
+// California. The software program and documentation are supplied "AS
+// IS", without any accompanying services from The Regents. The Regents
+// does not warrant that the operation of the program will be
+// uninterrupted or error-free. The end-user understands that the program
+// was developed for research purposes and is advised not to rely
+// exclusively on the program for any reason.  IN NO EVENT SHALL THE
+// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
+// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
+// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
+// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
+// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
+// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
+// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
+// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
+// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+
+package org.argouml.core.propertypanels.ui;
+
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import javax.swing.Action;
+
+import org.argouml.i18n.Translator;
+import org.argouml.kernel.Project;
+import org.argouml.kernel.ProjectManager;
+import org.argouml.model.Model;
+import org.argouml.model.UmlChangeEvent;
+import org.argouml.ui.UndoableAction;
+
+/**
+ * Listmodel for the Context of an ActivityGraph.
+ * 
+ * @author Michiel
+ */
+class UMLActivityGraphContextComboBoxModel extends  UMLComboBoxModel {
+    
+    /**
+     * 
+     */
+    private static final long serialVersionUID = 8957839123057771519L;
+
+    /**
+     * Constructor for UMLStateMachineContextListModel.
+     */
+    public UMLActivityGraphContextComboBoxModel(String propertyName, final 
Object target) {
+        super(propertyName, false);
+        setTarget(target);
+    }
+
+    /*
+     * @see org.argouml.uml.ui.UMLModelElementListModel2#buildModelList()
+     */
+    protected void buildModelList() {
+        Collection elements = new ArrayList();
+        Project p = ProjectManager.getManager().getCurrentProject();
+        for (Object model : p.getUserDefinedModelList()) {
+            elements.addAll(Model
+                    .getModelManagementHelper().getAllModelElementsOfKind(
+                            model, Model.getMetaTypes().getClassifier()));
+            elements.addAll(Model
+                    .getModelManagementHelper().getAllModelElementsOfKind(
+                            model, 
+                            Model.getMetaTypes().getBehavioralFeature()));
+            elements.addAll(Model
+                    .getModelManagementHelper().getAllModelElementsOfKind(
+                            model, Model.getMetaTypes().getPackage()));
+        }
+
+        setElements(elements);
+    }
+
+    /*
+     * @see org.argouml.uml.ui.UMLComboBoxModel2#isValidElement(Object)
+     */
+    protected boolean isValidElement(Object element) {
+        return Model.getFacade().isAClassifier(element)
+            || Model.getFacade().isABehavioralFeature(element)
+            || Model.getFacade().isAPackage(element);
+    }
+    
+    /*
+     * @see org.argouml.uml.ui.UMLComboBoxModel2#getSelectedModelElement()
+     */
+    protected Object getSelectedModelElement() {
+        return Model.getFacade().getContext(getTarget());
+    }
+
+    /*
+     * @see 
org.argouml.uml.ui.UMLComboBoxModel2#propertyChange(java.beans.PropertyChangeEvent)
+     */
+    public void modelChange(UmlChangeEvent evt) {
+        /* Do nothing by design. */
+    }
+    
+    public Action getAction() {
+        return new ActionSetContext();
+    }
+    
+    private class ActionSetContext extends UndoableAction {
+
+        /**
+         * The UID.
+         */
+        private static final long serialVersionUID = -8118983979324112900L;
+
+        /**
+         * Constructor for ActionSetCompositeStateConcurrent.
+         */
+        protected ActionSetContext() {
+            super(Translator.localize("action.set"), null);
+            // Set the tooltip string:
+            putValue(Action.SHORT_DESCRIPTION, 
+                    Translator.localize("action.set"));
+        }
+
+        /*
+         * @see 
java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
+         */
+        public void actionPerformed(ActionEvent e) {
+            super.actionPerformed(e);
+            UMLComboBox source = (UMLComboBox) e.getSource();
+            Object target = source.getTarget();
+            if (Model.getFacade().getContext(target)
+                    != source.getSelectedItem()) {
+                Model.getStateMachinesHelper().setContext(
+                        target, source.getSelectedItem());
+            }
+        }
+    }
+}

------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2595906

To unsubscribe from this discussion, e-mail: 
[[email protected]].

Reply via email to