Author: tfmorris
Date: 2008-04-23 20:17:50-0700
New Revision: 14452

Modified:
   trunk/src/argouml-app/src/org/argouml/uml/ui/TabProps.java

Log:
Refactor to split up long createPropPanel method

Modified: trunk/src/argouml-app/src/org/argouml/uml/ui/TabProps.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/argouml-app/src/org/argouml/uml/ui/TabProps.java?view=diff&rev=14452&p1=trunk/src/argouml-app/src/org/argouml/uml/ui/TabProps.java&p2=trunk/src/argouml-app/src/org/argouml/uml/ui/TabProps.java&r1=14451&r2=14452
==============================================================================
--- trunk/src/argouml-app/src/org/argouml/uml/ui/TabProps.java  (original)
+++ trunk/src/argouml-app/src/org/argouml/uml/ui/TabProps.java  2008-04-23 
20:17:50-0700
@@ -1,5 +1,5 @@
 // $Id$
-// Copyright (c) 1996-2007 The Regents of the University of California. All
+// Copyright (c) 1996-2008 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
@@ -46,6 +46,7 @@
 import org.argouml.uml.diagram.sequence.ui.UMLSequenceDiagram;
 import org.argouml.uml.diagram.state.ui.UMLStateDiagram;
 import org.argouml.uml.diagram.static_structure.ui.UMLClassDiagram;
+import org.argouml.uml.diagram.ui.PropPanelDiagram;
 import org.argouml.uml.diagram.ui.PropPanelString;
 import org.argouml.uml.diagram.ui.PropPanelUMLActivityDiagram;
 import org.argouml.uml.diagram.ui.PropPanelUMLClassDiagram;
@@ -54,6 +55,7 @@
 import org.argouml.uml.diagram.ui.PropPanelUMLSequenceDiagram;
 import org.argouml.uml.diagram.ui.PropPanelUMLStateDiagram;
 import org.argouml.uml.diagram.ui.PropPanelUMLUseCaseDiagram;
+import org.argouml.uml.diagram.ui.UMLDiagram;
 import org.argouml.uml.diagram.use_case.ui.UMLUseCaseDiagram;
 import org.argouml.uml.ui.behavior.activity_graphs.PropPanelActionState;
 import org.argouml.uml.ui.behavior.activity_graphs.PropPanelActivityGraph;
@@ -68,6 +70,7 @@
 import org.argouml.uml.ui.behavior.collaborations.PropPanelCollaboration;
 import org.argouml.uml.ui.behavior.collaborations.PropPanelInteraction;
 import org.argouml.uml.ui.behavior.collaborations.PropPanelMessage;
+import org.argouml.uml.ui.behavior.common_behavior.PropPanelAction;
 import org.argouml.uml.ui.behavior.common_behavior.PropPanelActionSequence;
 import org.argouml.uml.ui.behavior.common_behavior.PropPanelArgument;
 import org.argouml.uml.ui.behavior.common_behavior.PropPanelCallAction;
@@ -95,6 +98,7 @@
 import org.argouml.uml.ui.behavior.state_machines.PropPanelSignalEvent;
 import org.argouml.uml.ui.behavior.state_machines.PropPanelSimpleState;
 import org.argouml.uml.ui.behavior.state_machines.PropPanelStateMachine;
+import org.argouml.uml.ui.behavior.state_machines.PropPanelStateVertex;
 import org.argouml.uml.ui.behavior.state_machines.PropPanelStubState;
 import org.argouml.uml.ui.behavior.state_machines.PropPanelSubmachineState;
 import org.argouml.uml.ui.behavior.state_machines.PropPanelSynchState;
@@ -111,6 +115,7 @@
 import org.argouml.uml.ui.foundation.core.PropPanelAssociationEnd;
 import org.argouml.uml.ui.foundation.core.PropPanelAttribute;
 import org.argouml.uml.ui.foundation.core.PropPanelClass;
+import org.argouml.uml.ui.foundation.core.PropPanelClassifier;
 import org.argouml.uml.ui.foundation.core.PropPanelComment;
 import org.argouml.uml.ui.foundation.core.PropPanelComponent;
 import org.argouml.uml.ui.foundation.core.PropPanelConstraint;
@@ -123,10 +128,12 @@
 import org.argouml.uml.ui.foundation.core.PropPanelGeneralization;
 import org.argouml.uml.ui.foundation.core.PropPanelInterface;
 import org.argouml.uml.ui.foundation.core.PropPanelMethod;
+import org.argouml.uml.ui.foundation.core.PropPanelModelElement;
 import org.argouml.uml.ui.foundation.core.PropPanelNode;
 import org.argouml.uml.ui.foundation.core.PropPanelOperation;
 import org.argouml.uml.ui.foundation.core.PropPanelParameter;
 import org.argouml.uml.ui.foundation.core.PropPanelPermission;
+import org.argouml.uml.ui.foundation.core.PropPanelRelationship;
 import org.argouml.uml.ui.foundation.core.PropPanelUsage;
 import org.argouml.uml.ui.foundation.extension_mechanisms.PropPanelStereotype;
 import 
org.argouml.uml.ui.foundation.extension_mechanisms.PropPanelTagDefinition;
@@ -164,7 +171,8 @@
 
     private boolean shouldBeEnabled = false;
     private JPanel blankPanel = new JPanel();
-    private Hashtable<Class, TabModelTarget> panels = new Hashtable<Class, 
TabModelTarget>();
+    private Hashtable<Class, TabModelTarget> panels = 
+        new Hashtable<Class, TabModelTarget>();
     private JPanel lastPanel;
     private String panelClassBaseName = "";
 
@@ -194,6 +202,8 @@
     public TabProps(String tabName, String panelClassBase) {
         super(tabName);
         setIcon(new UpArrowIcon());
+        // TODO: This should be managed by the DetailsPane TargetListener - tfm
+        // remove the following line
         TargetManager.getInstance().addTargetListener(this);
         setOrientation(Horizontal.getInstance());
         panelClassBaseName = panelClassBase;
@@ -253,10 +263,11 @@
      * @param t the new target
      * @see org.argouml.ui.TabTarget#setTarget(java.lang.Object)
      */
+    @Deprecated
     public void setTarget(Object t) {
         // targets ought to be UML objects or diagrams
         t = (t instanceof Fig) ? ((Fig) t).getOwner() : t;
-        if (!(t == null || Model.getFacade().isAUMLElement(t)
+        if (!(t == null || Model.getFacade().isAUMLElement(t) 
                 || t instanceof ArgoDiagram)) {
             return;
         }
@@ -267,6 +278,12 @@
                 removeTargetListener((TargetListener) lastPanel);
             }
         }
+  
+        // TODO: No need to do anything if we're not visible      
+//        if (!isVisible()) {
+//            return;
+//        }
+        
         target = t;
         if (t == null) {
             add(blankPanel, BorderLayout.CENTER);
@@ -337,201 +354,23 @@
     }
 
     /**
-     * A factory method to create a PropPanel for a particular model
-     * element.
+     * A factory method to create a PropPanel for a particular target (Diagram,
+     * UML Element or GEF Fig).
      *
-     * @param modelElement The model element
+     * @param targetObject the target object
      * @return A new prop panel to display any model element of the given type
      */
-    private TabModelTarget createPropPanel(Object modelElement) {
-
+    private TabModelTarget createPropPanel(Object targetObject) {
        TabModelTarget propPanel = null;
 
-
-       
-        // Create prop panels for diagrams
-        if (modelElement instanceof UMLActivityDiagram) {
-            propPanel = new PropPanelUMLActivityDiagram();
-        } else if (modelElement instanceof UMLClassDiagram) {
-            propPanel = new PropPanelUMLClassDiagram();
-        } else if (modelElement instanceof UMLCollaborationDiagram) {
-            propPanel = new PropPanelUMLCollaborationDiagram();
-        } else if (modelElement instanceof UMLDeploymentDiagram) {
-            propPanel = new PropPanelUMLDeploymentDiagram();
-        } else if (modelElement instanceof UMLSequenceDiagram) {
-            propPanel = new PropPanelUMLSequenceDiagram();
-        } else if (modelElement instanceof UMLStateDiagram) {
-            propPanel = new PropPanelUMLStateDiagram();
-        } else if (modelElement instanceof UMLUseCaseDiagram) {
-            propPanel = new PropPanelUMLUseCaseDiagram();
-        }
-            // TODO: This needs to be in type hierarchy order to work properly
-            // and create the most specific property panel properly
-            
-        else if (Model.getFacade().isASubmachineState(modelElement)) {
-            propPanel = new PropPanelSubmachineState();
-        } else if (Model.getFacade().isASubactivityState(modelElement)) {
-            propPanel = new PropPanelSubactivityState();
-        } else if (Model.getFacade().isAAbstraction(modelElement)) {
-            propPanel = new PropPanelAbstraction();
-        } else if (Model.getFacade().isACallState(modelElement)) {
-            propPanel = new PropPanelCallState();
-        } else if (Model.getFacade().isAActionSequence(modelElement)) {
-            propPanel = new PropPanelActionSequence();
-        } else if (Model.getFacade().isAActionState(modelElement)) {
-            propPanel = new PropPanelActionState();
-        } else if (Model.getFacade().isAActivityGraph(modelElement)) {
-            propPanel = new PropPanelActivityGraph();
-        } else if (Model.getFacade().isAActor(modelElement)) {
-            propPanel = new PropPanelActor();
-        } else if (Model.getFacade().isAArgument(modelElement)) {
-            propPanel = new PropPanelArgument();
-        } else if (Model.getFacade().isAAssociationClass(modelElement)) {
-            propPanel = new PropPanelAssociationClass();
-        } else if (Model.getFacade().isAAssociationRole(modelElement)) {
-            propPanel = new PropPanelAssociationRole();
-        } else if (Model.getFacade().isAAssociation(modelElement)) {
-            propPanel = new PropPanelAssociation();
-        } else if (Model.getFacade().isAAssociationEndRole(modelElement)) {
-            propPanel = new PropPanelAssociationEndRole();
-        } else if (Model.getFacade().isAAssociationEnd(modelElement)) {
-            propPanel = new PropPanelAssociationEnd();
-        } else if (Model.getFacade().isAAttribute(modelElement)) {
-            propPanel = new PropPanelAttribute();
-        } else if (Model.getFacade().isACallAction(modelElement)) {
-            propPanel = new PropPanelCallAction();
-        } else if (Model.getFacade().isAClassifierInState(modelElement)) {
-            propPanel = new PropPanelClassifierInState();
-        } else if (Model.getFacade().isAClass(modelElement)) {
-            propPanel = new PropPanelClass();
-        } else if (Model.getFacade().isAClassifierRole(modelElement)) {
-            propPanel = new PropPanelClassifierRole();
-        } else if (Model.getFacade().isACollaboration(modelElement)) {
-            propPanel = new PropPanelCollaboration();
-        } else if (Model.getFacade().isAComment(modelElement)) {
-            propPanel = new PropPanelComment();
-        } else if (Model.getFacade().isAComponent(modelElement)) {
-            propPanel = new PropPanelComponent();
-        } else if (Model.getFacade().isAComponentInstance(modelElement)) {
-            propPanel = new PropPanelComponentInstance();
-        } else if (Model.getFacade().isACompositeState(modelElement)) {
-            propPanel = new PropPanelCompositeState();
-        } else if (Model.getFacade().isAConstraint(modelElement)) {
-            propPanel = new PropPanelConstraint();
-        } else if (Model.getFacade().isACreateAction(modelElement)) {
-            propPanel = new PropPanelCreateAction();
-        } else if (Model.getFacade().isAEnumeration(modelElement)) {
-            propPanel = new PropPanelEnumeration();
-        } else if (Model.getFacade().isADataType(modelElement)) {
-            propPanel = new PropPanelDataType();
-        } else if (Model.getFacade().isADestroyAction(modelElement)) {
-            propPanel = new PropPanelDestroyAction();
-        } else if (Model.getFacade().isAEnumerationLiteral(modelElement)) {
-            propPanel = new PropPanelEnumerationLiteral();
-        } else if (Model.getFacade().isAElementImport(modelElement)) {
-            propPanel = new PropPanelElementImport();
-        } else if (Model.getFacade().isAElementResidence(modelElement)) {
-            propPanel = new PropPanelElementResidence();
-        } else if (Model.getFacade().isAExtend(modelElement)) {
-            propPanel = new PropPanelExtend();
-        } else if (Model.getFacade().isAException(modelElement)) {
-            propPanel = new PropPanelException();
-        } else if (Model.getFacade().isAExtensionPoint(modelElement)) {
-            propPanel = new PropPanelExtensionPoint();
-        } else if (Model.getFacade().isAFinalState(modelElement)) {
-            propPanel = new PropPanelFinalState();
-        } else if (Model.getFacade().isAFlow(modelElement)) {
-            propPanel = new PropPanelFlow();
-        } else if (Model.getFacade().isAGeneralization(modelElement)) {
-            propPanel = new PropPanelGeneralization();
-        } else if (Model.getFacade().isAGuard(modelElement)) {
-            propPanel = new PropPanelGuard();
-        } else if (Model.getFacade().isAInclude(modelElement)) {
-            propPanel = new PropPanelInclude();
-        } else if (Model.getFacade().isAInteraction(modelElement)) {
-            propPanel = new PropPanelInteraction();
-        } else if (Model.getFacade().isAInterface(modelElement)) {
-            propPanel = new PropPanelInterface();
-        } else if (Model.getFacade().isALink(modelElement)) {
-            propPanel = new PropPanelLink();
-        } else if (Model.getFacade().isALinkEnd(modelElement)) {
-            propPanel = new PropPanelLinkEnd();
-        } else if (Model.getFacade().isAMessage(modelElement)) {
-            propPanel = new PropPanelMessage();
-        } else if (Model.getFacade().isAMethod(modelElement)) {
-            propPanel = new PropPanelMethod();
-        } else if (Model.getFacade().isAModel(modelElement)) {
-            propPanel = new PropPanelModel();
-        } else if (Model.getFacade().isANode(modelElement)) {
-            propPanel = new PropPanelNode();
-        } else if (Model.getFacade().isANodeInstance(modelElement)) {
-            propPanel = new PropPanelNodeInstance();
-        } else if (Model.getFacade().isAObject(modelElement)) {
-            propPanel = new PropPanelObject();
-        } else if (Model.getFacade().isAObjectFlowState(modelElement)) {
-            propPanel = new PropPanelObjectFlowState();
-        } else if (Model.getFacade().isAOperation(modelElement)) {
-            propPanel = new PropPanelOperation();
-        } else if (Model.getFacade().isAPackage(modelElement)) {
-            propPanel = new PropPanelPackage();
-        } else if (Model.getFacade().isAParameter(modelElement)) {
-            propPanel = new PropPanelParameter();
-        } else if (Model.getFacade().isAPartition(modelElement)) {
-            propPanel = new PropPanelPartition();
-        } else if (Model.getFacade().isAPackageImport(modelElement)) {
-            propPanel = new PropPanelPermission();
-        } else if (Model.getFacade().isAPseudostate(modelElement)) {
-            propPanel = new PropPanelPseudostate();
-        } else if (Model.getFacade().isAReception(modelElement)) {
-            propPanel = new PropPanelReception();
-        } else if (Model.getFacade().isAReturnAction(modelElement)) {
-            propPanel = new PropPanelReturnAction();
-        } else if (Model.getFacade().isASendAction(modelElement)) {
-            propPanel = new PropPanelSendAction();
-        } else if (Model.getFacade().isASignal(modelElement)) {
-            propPanel = new PropPanelSignal();
-        } else if (Model.getFacade().isASimpleState(modelElement)) {
-            propPanel = new PropPanelSimpleState();
-        } else if (Model.getFacade().isAStateMachine(modelElement)) {
-            propPanel = new PropPanelStateMachine();
-        } else if (Model.getFacade().isAStereotype(modelElement)) {
-            propPanel = new PropPanelStereotype();
-        } else if (Model.getFacade().isAStimulus(modelElement)) {
-            propPanel = new PropPanelStimulus();
-        } else if (Model.getFacade().isAStubState(modelElement)) {
-            propPanel = new PropPanelStubState();
-        } else if (Model.getFacade().isASubsystem(modelElement)) {
-            propPanel = new PropPanelSubsystem();
-        } else if (Model.getFacade().isASynchState(modelElement)) {
-            propPanel = new PropPanelSynchState();
-        } else if (Model.getFacade().isATaggedValue(modelElement)) {
-            propPanel = new PropPanelTaggedValue();
-        } else if (Model.getFacade().isATagDefinition(modelElement)) {
-            propPanel = new PropPanelTagDefinition();
-        } else if (Model.getFacade().isATerminateAction(modelElement)) {
-            propPanel = new PropPanelTerminateAction();
-        } else if (Model.getFacade().isATransition(modelElement)) {
-            propPanel = new PropPanelTransition();
-        } else if (Model.getFacade().isAUninterpretedAction(modelElement)) {
-            propPanel = new PropPanelUninterpretedAction();
-        } else if (Model.getFacade().isAUsage(modelElement)) {
-            propPanel = new PropPanelUsage();
-        } else if (Model.getFacade().isAUseCase(modelElement)) {
-            propPanel = new PropPanelUseCase();
-        } else if (Model.getFacade().isACallEvent(modelElement)) {
-            propPanel = new PropPanelCallEvent();
-        } else if (Model.getFacade().isAChangeEvent(modelElement)) {
-            propPanel = new PropPanelChangeEvent();
-        } else if (Model.getFacade().isASignalEvent(modelElement)) {
-            propPanel = new PropPanelSignalEvent();
-        } else if (Model.getFacade().isATimeEvent(modelElement)) {
-            propPanel = new PropPanelTimeEvent();
-        } else if (Model.getFacade().isADependency(modelElement)) {
-            propPanel = new PropPanelDependency();
-        } else if (modelElement instanceof FigText) {
+       if (targetObject instanceof UMLDiagram) {
+            propPanel = getDiagramPropPanel((UMLDiagram) targetObject);
+        } else if (Model.getFacade().isAElement(targetObject)) {
+            propPanel = getElementPropPanel(targetObject);
+        } else if (targetObject instanceof FigText) {
             propPanel = new PropPanelString();
         }
-        
+
         if (propPanel instanceof Orientable) {
             ((Orientable) propPanel).setOrientation(getOrientation());
         }
@@ -544,6 +383,242 @@
         return propPanel;
     }
 
+    // Create prop panels for diagrams
+    private PropPanelDiagram getDiagramPropPanel(UMLDiagram diagram) {
+        if (diagram instanceof UMLActivityDiagram) {
+            return new PropPanelUMLActivityDiagram();
+        } else if (diagram instanceof UMLClassDiagram) {
+            return new PropPanelUMLClassDiagram();
+        } else if (diagram instanceof UMLCollaborationDiagram) {
+            return new PropPanelUMLCollaborationDiagram();
+        } else if (diagram instanceof UMLDeploymentDiagram) {
+            return new PropPanelUMLDeploymentDiagram();
+        } else if (diagram instanceof UMLSequenceDiagram) {
+            return new PropPanelUMLSequenceDiagram();
+        } else if (diagram instanceof UMLStateDiagram) {
+            return new PropPanelUMLStateDiagram();
+        } else if (diagram instanceof UMLUseCaseDiagram) {
+            return new PropPanelUMLUseCaseDiagram();
+        }
+        throw new IllegalArgumentException("Unsupported diagram type");
+    }
+
+    
+    private PropPanelModelElement getElementPropPanel(Object element) {
+        if (Model.getFacade().isAClassifier(element)) {
+            return getClassifierPropPanel(element);
+        } else if (Model.getFacade().isARelationship(element)) {
+            return getRelationshipPropPanel(element);
+        } else if (Model.getFacade().isAStateVertex(element)) {
+            return getStateVertexPropPanel(element);
+        } else if (Model.getFacade().isAActionSequence(element)) {
+            // This is not a subtype of PropPanelAction, so it must come first
+            return new PropPanelActionSequence();
+        } else if (Model.getFacade().isAAction(element)) {
+            return getActionPropPanel(element);
+            // TODO: This needs to be in type hierarchy order to work properly
+            // and create the most specific property panel properly.  
Everything
+            // which has been factored out of this method has been reviewed.
+            // Anything below this point still needs to be review - tfm
+        } else if (Model.getFacade().isAActivityGraph(element)) {
+            return new PropPanelActivityGraph();
+        } else if (Model.getFacade().isAArgument(element)) {
+            return new PropPanelArgument();
+        } else if (Model.getFacade().isAAssociationEndRole(element)) {
+            return new PropPanelAssociationEndRole();
+        } else if (Model.getFacade().isAAssociationEnd(element)) {
+            return new PropPanelAssociationEnd();
+        } else if (Model.getFacade().isAAttribute(element)) {
+            return new PropPanelAttribute();
+        } else if (Model.getFacade().isACollaboration(element)) {
+            return new PropPanelCollaboration();
+        } else if (Model.getFacade().isAComment(element)) {
+            return new PropPanelComment();
+        } else if (Model.getFacade().isAComponentInstance(element)) {
+            return new PropPanelComponentInstance();
+        } else if (Model.getFacade().isAConstraint(element)) {
+            return new PropPanelConstraint();
+        } else if (Model.getFacade().isAEnumerationLiteral(element)) {
+            return new PropPanelEnumerationLiteral();
+        } else if (Model.getFacade().isAElementImport(element)) {
+            return new PropPanelElementImport();
+        } else if (Model.getFacade().isAElementResidence(element)) {
+            return new PropPanelElementResidence();
+        } else if (Model.getFacade().isAExtensionPoint(element)) {
+            return new PropPanelExtensionPoint();
+        } else if (Model.getFacade().isAGuard(element)) {
+            return new PropPanelGuard();
+        } else if (Model.getFacade().isAInteraction(element)) {
+            return new PropPanelInteraction();
+        } else if (Model.getFacade().isALink(element)) {
+            return new PropPanelLink();
+        } else if (Model.getFacade().isALinkEnd(element)) {
+            return new PropPanelLinkEnd();
+        } else if (Model.getFacade().isAMessage(element)) {
+            return new PropPanelMessage();
+        } else if (Model.getFacade().isAMethod(element)) {
+            return new PropPanelMethod();
+        } else if (Model.getFacade().isAModel(element)) {
+            return new PropPanelModel();
+        } else if (Model.getFacade().isANodeInstance(element)) {
+            return new PropPanelNodeInstance();
+        } else if (Model.getFacade().isAObject(element)) {
+            return new PropPanelObject();
+        } else if (Model.getFacade().isAOperation(element)) {
+            return new PropPanelOperation();
+        } else if (Model.getFacade().isAPackage(element)) {
+            return new PropPanelPackage();
+        } else if (Model.getFacade().isAParameter(element)) {
+            return new PropPanelParameter();
+        } else if (Model.getFacade().isAPartition(element)) {
+            return new PropPanelPartition();
+        } else if (Model.getFacade().isAReception(element)) {
+            return new PropPanelReception();
+        } else if (Model.getFacade().isAStateMachine(element)) {
+            return new PropPanelStateMachine();
+        } else if (Model.getFacade().isAStereotype(element)) {
+            return new PropPanelStereotype();
+        } else if (Model.getFacade().isAStimulus(element)) {
+            return new PropPanelStimulus();
+        } else if (Model.getFacade().isASubsystem(element)) {
+            return new PropPanelSubsystem();
+        } else if (Model.getFacade().isATaggedValue(element)) {
+            return new PropPanelTaggedValue();
+        } else if (Model.getFacade().isATagDefinition(element)) {
+            return new PropPanelTagDefinition();
+        } else if (Model.getFacade().isATransition(element)) {
+            return new PropPanelTransition();
+        } else if (Model.getFacade().isACallEvent(element)) {
+            return new PropPanelCallEvent();
+        } else if (Model.getFacade().isAChangeEvent(element)) {
+            return new PropPanelChangeEvent();
+        } else if (Model.getFacade().isASignalEvent(element)) {
+            return new PropPanelSignalEvent();
+        } else if (Model.getFacade().isATimeEvent(element)) {
+            return new PropPanelTimeEvent();
+        } else if (Model.getFacade().isADependency(element)) {
+            return new PropPanelDependency();
+        }
+        throw new IllegalArgumentException("Unsupported Element type");
+    }
+    
+    private PropPanelClassifier getClassifierPropPanel(Object element) {
+        if (Model.getFacade().isAActor(element)) {
+            return new PropPanelActor();
+        } else if (Model.getFacade().isAAssociationClass(element)) {
+            return new PropPanelAssociationClass();
+        } else if (Model.getFacade().isAClass(element)) {
+            return new PropPanelClass();
+        } else if (Model.getFacade().isAClassifierInState(element)) {
+            return new PropPanelClassifierInState();
+        } else if (Model.getFacade().isAClassifierRole(element)) {
+            return new PropPanelClassifierRole();
+        } else if (Model.getFacade().isAComponent(element)) {
+            return new PropPanelComponent();
+        } else if (Model.getFacade().isADataType(element)) {
+            if (Model.getFacade().isAEnumeration(element)) {
+                return new PropPanelEnumeration();
+            } else {
+                return new PropPanelDataType();
+            }
+        } else if (Model.getFacade().isAInterface(element)) {
+            return new PropPanelInterface();
+        } else if (Model.getFacade().isANode(element)) {
+            return new PropPanelNode();
+        } else if (Model.getFacade().isASignal(element)) {
+            if (Model.getFacade().isAException(element)) {
+                return new PropPanelException();
+            } else {
+                return new PropPanelSignal();
+            }
+        } else if (Model.getFacade().isAUseCase(element)) {
+            return new PropPanelUseCase();
+        }
+        throw new IllegalArgumentException("Unsupported Element type");
+    }
+
+    private PropPanelRelationship getRelationshipPropPanel(Object element) {
+        if (Model.getFacade().isAAssociation(element)) {
+            if (Model.getFacade().isAAssociationRole(element)) {
+                return new PropPanelAssociationRole();
+            } else {
+                return new PropPanelAssociation();
+            }
+        } else if (Model.getFacade().isADependency(element)) {
+            if (Model.getFacade().isAAbstraction(element)) {
+                return new PropPanelAbstraction();
+            } else if (Model.getFacade().isAPackageImport(element)) {
+                return new PropPanelPermission();
+            } else if (Model.getFacade().isAUsage(element)) {
+                return new PropPanelUsage();
+            } else {
+                return new PropPanelDependency();
+            }
+        } else if (Model.getFacade().isAExtend(element)) {
+            return new PropPanelExtend();
+        } else if (Model.getFacade().isAFlow(element)) {
+            return new PropPanelFlow();
+        } else if (Model.getFacade().isAGeneralization(element)) {
+            return new PropPanelGeneralization();
+        } else if (Model.getFacade().isAInclude(element)) {
+            return new PropPanelInclude();
+        }
+        throw new IllegalArgumentException("Unsupported Relationship type");
+    }
+
+    private PropPanelAction getActionPropPanel(Object action) {
+        if (Model.getFacade().isACallAction(action)) {
+            return new PropPanelCallAction();
+        } else if (Model.getFacade().isACreateAction(action)) {
+            return new PropPanelCreateAction();
+        } else if (Model.getFacade().isADestroyAction(action)) {
+            return new PropPanelDestroyAction();
+        } else if (Model.getFacade().isAReturnAction(action)) {
+            return new PropPanelReturnAction();
+        } else if (Model.getFacade().isASendAction(action)) {
+            return new PropPanelSendAction();
+        } else if (Model.getFacade().isATerminateAction(action)) {
+            return new PropPanelTerminateAction();
+        } else if (Model.getFacade().isAUninterpretedAction(action)) {
+            return new PropPanelUninterpretedAction();
+        }
+        throw new IllegalArgumentException("Unsupported Action type");
+    }
+    
+    private PropPanelStateVertex getStateVertexPropPanel(Object element) {
+        if (Model.getFacade().isAState(element)) {
+            if (Model.getFacade().isAActionState(element)) {
+                return new PropPanelActionState();
+            } else if (Model.getFacade().isACallState(element)) {
+                return new PropPanelCallState();
+            } else if (Model.getFacade().isACompositeState(element)) {
+                if (Model.getFacade().isASubmachineState(element)) {
+                    if (Model.getFacade().isASubactivityState(element)) {
+                        return new PropPanelSubactivityState();
+                    } else {
+                        return new PropPanelSubmachineState();
+                    }
+                } else {
+                    return new PropPanelCompositeState();
+                }
+            } else if (Model.getFacade().isAFinalState(element)) {
+                return new PropPanelFinalState();
+            } else if (Model.getFacade().isAObjectFlowState(element)) {
+                return new PropPanelObjectFlowState();
+            } else if (Model.getFacade().isASimpleState(element)) {
+                return new PropPanelSimpleState();
+            }
+        } else if (Model.getFacade().isAPseudostate(element)) {
+            return new PropPanelPseudostate();
+        } else if (Model.getFacade().isAStubState(element)) {
+            return new PropPanelStubState();
+        } else if (Model.getFacade().isASynchState(element)) {
+            return new PropPanelSynchState();
+        }
+        throw new IllegalArgumentException("Unsupported State type");
+    }
+
+    
     /**
      * @return the name
      */
@@ -561,6 +636,7 @@
      * @return the target
      * @see org.argouml.ui.TabTarget#getTarget()
      */
+    @Deprecated
     public Object getTarget() {
         return target;
     }

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to