svn commit: r18197 - trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui
Bob Tarling <[email protected]>
| Newsgroups | gmane.comp.lang.uml.argouml.cvs |
|---|---|
| Message-ID | <[email protected]> |
Author: bobtarling
Date: 2010-03-29 05:59:48-0700
New Revision: 18197
Added:
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/NavigateSiblingAction.java
Modified:
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/NavigateNextAction.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/NavigatePreviousAction.java
trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/SwingUIFactory.java
Log:
Issue 6032 and issue 6035. Allow association ends to be traversed and disable controls when they are not available.
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/NavigateNextAction.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/NavigateNextAction.java?view=diff&pathrev=18197&r1=18196&r2=18197
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/NavigateNextAction.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/NavigateNextAction.java 2010-03-29 05:59:48-0700
@@ -13,53 +13,28 @@
package org.argouml.core.propertypanels.ui;
-import java.awt.event.ActionEvent;
import java.util.List;
-import javax.swing.AbstractAction;
-
-import org.argouml.application.helpers.ResourceLoaderWrapper;
-import org.argouml.i18n.Translator;
-import org.argouml.model.Model;
-import org.argouml.ui.targetmanager.TargetManager;
-
/**
* This action changes the target to the owning model element
* of the given element.
*
* @author Bob Tarling
*/
-class NavigateNextAction extends AbstractAction {
+class NavigateNextAction extends NavigateSiblingAction {
- final Object modelElement;
-
- public NavigateNextAction(Object modelElement) {
- super(Translator.localize("action.navigate-forward"),
- ResourceLoaderWrapper.lookupIcon("action.navigate-forward"));
-
- this.modelElement = modelElement;
+ public NavigateNextAction(final Object modelElement) {
+ super(modelElement, "action.navigate-forward");
}
- public void actionPerformed(ActionEvent arg0) {
- final Object owner =
- Model.getFacade().getModelElementContainer(modelElement);
- Object newTarget = null;
- List list = null;
- if (Model.getFacade().isAAttribute(modelElement)) {
- list = Model.getFacade().getAttributes(owner);
- }
- if (Model.getFacade().isAOperation(modelElement)
- || Model.getFacade().isAReception(modelElement)) {
- list = Model.getFacade().getOperationsAndReceptions(owner);
- }
- if (Model.getFacade().isAParameter(modelElement)) {
- list = Model.getFacade().getParametersList(owner);
- }
+
+ protected Object getTargetSibling() {
+ List list = getAllSiblings();
if (list != null) {
final int posn = list.indexOf(modelElement);
if (posn >= 0 && posn < list.size() - 1) {
- newTarget = list.get(posn + 1);
- TargetManager.getInstance().setTarget(newTarget);
+ return list.get(posn + 1);
}
}
+ return null;
}
}
Modified: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/NavigatePreviousAction.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/NavigatePreviousAction.java?view=diff&pathrev=18197&r1=18196&r2=18197
==============================================================================
--- trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/NavigatePreviousAction.java (original)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/NavigatePreviousAction.java 2010-03-29 05:59:48-0700
@@ -13,54 +13,28 @@
package org.argouml.core.propertypanels.ui;
-import java.awt.event.ActionEvent;
import java.util.List;
-import javax.swing.AbstractAction;
-
-import org.argouml.application.helpers.ResourceLoaderWrapper;
-import org.argouml.i18n.Translator;
-import org.argouml.model.Model;
-import org.argouml.ui.targetmanager.TargetManager;
-
/**
* This action changes the target to the owning model element
* of the given element.
*
* @author Bob Tarling
*/
-class NavigatePreviousAction extends AbstractAction {
+class NavigatePreviousAction extends NavigateSiblingAction {
- final Object modelElement;
-
public NavigatePreviousAction(Object modelElement) {
- super(Translator.localize("action.navigate-forward"),
- ResourceLoaderWrapper.lookupIcon("action.navigate-back"));
-
- this.modelElement = modelElement;
+ super(modelElement, "action.navigate-back");
}
- public void actionPerformed(ActionEvent arg0) {
- final Object owner =
- Model.getFacade().getModelElementContainer(modelElement);
- Object newTarget = null;
- List list = null;
- if (Model.getFacade().isAAttribute(modelElement)) {
- list = Model.getFacade().getAttributes(owner);
- }
- if (Model.getFacade().isAOperation(modelElement)
- || Model.getFacade().isAReception(modelElement)) {
- list = Model.getFacade().getOperationsAndReceptions(owner);
- }
- if (Model.getFacade().isAParameter(modelElement)) {
- list = Model.getFacade().getParametersList(owner);
- }
+
+ protected Object getTargetSibling() {
+ List list = getAllSiblings();
if (list != null) {
final int posn = list.indexOf(modelElement);
if (posn > 0) {
- newTarget = list.get(posn - 1);
- TargetManager.getInstance().setTarget(newTarget);
+ return list.get(posn - 1);
}
}
+ return null;
}
-
}
Added: trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/NavigateSiblingAction.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/NavigateSiblingAction.java?view=markup&pathrev=18197
==============================================================================
--- (empty file)
+++ trunk/src/argouml-core-umlpropertypanels/src/org/argouml/core/propertypanels/ui/NavigateSiblingAction.java 2010-03-29 05:59:48-0700
@@ -0,0 +1,68 @@
+/* $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.core.propertypanels.ui;
+
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.swing.AbstractAction;
+
+import org.argouml.application.helpers.ResourceLoaderWrapper;
+import org.argouml.i18n.Translator;
+import org.argouml.model.Model;
+import org.argouml.ui.targetmanager.TargetManager;
+
+/**
+ * This action changes the target to the owning model element
+ * of the given element.
+ *
+ * @author Bob Tarling
+ */
+abstract class NavigateSiblingAction extends AbstractAction {
+
+ final Object modelElement;
+
+ public NavigateSiblingAction(Object modelElement, String name) {
+ super(Translator.localize(name),
+ ResourceLoaderWrapper.lookupIcon(name));
+
+ this.modelElement = modelElement;
+ setEnabled(getTargetSibling() != null);
+ }
+
+ public void actionPerformed(ActionEvent arg0) {
+ TargetManager.getInstance().setTarget(getTargetSibling());
+ }
+
+ abstract protected Object getTargetSibling();
+
+ protected List getAllSiblings() {
+ List list = null;
+ final Object owner =
+ Model.getFacade().getModelElementContainer(modelElement);
+ if (Model.getFacade().isAAttribute(modelElement)) {
+ list = Model.getFacade().getAttributes(owner);
+ } else if (Model.getFacade().isAOperation(modelElement)
+ || Model.getFacade().isAReception(modelElement)) {
+ list = Model.getFacade().getOperationsAndReceptions(owner);
+ } else if (Model.getFacade().isAParameter(modelElement)) {
+ list = Model.getFacade().getParametersList(owner);
+ } else if (Model.getFacade().isAAssociationEnd(modelElement)) {
+ list = new ArrayList(
+ Model.getFacade().getConnections(owner));
+ }
+ return list;
+ }
+}
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=18197&r1=18196&r2=18197
==============================================================================
--- 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-03-29 05:59:48-0700
@@ -123,7 +123,8 @@
if (Model.getFacade().isAAttribute(target)
|| Model.getFacade().isAOperation(target)
|| Model.getFacade().isAReception(target)
- || Model.getFacade().isAParameter(target)) {
+ || Model.getFacade().isAParameter(target)
+ || Model.getFacade().isAAssociationEnd(target)) {
tb.add(new NavigatePreviousAction(target));
tb.add(new NavigateNextAction(target));
}
------------------------------------------------------
http://argouml.tigris.org/ds/viewMessage.do?dsForumId=5905&dsMessageId=2466647
To unsubscribe from this discussion, e-mail: [[email protected]].