Author: mvw
Date: 2008-02-28 14:33:11-0800
New Revision: 14164

Modified:
   trunk/src/app/src/org/argouml/kernel/Project.java
   trunk/src/app/src/org/argouml/kernel/ProjectImpl.java
   trunk/src/app/src/org/argouml/persistence/ArgoParser.java
   trunk/src/app/src/org/argouml/persistence/ArgoTokenTable.java
   trunk/src/app/src/org/argouml/persistence/argo.tee
   trunk/src/app/src/org/argouml/uml/diagram/ArgoDiagram.java

Log:
Fix for issue 3208: Selection of default diagram after load.

This works by storing the name of the diagram in the project.

Modified: trunk/src/app/src/org/argouml/kernel/Project.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/app/src/org/argouml/kernel/Project.java?view=diff&rev=14164&p1=trunk/src/app/src/org/argouml/kernel/Project.java&p2=trunk/src/app/src/org/argouml/kernel/Project.java&r1=14163&r2=14164
==============================================================================
--- trunk/src/app/src/org/argouml/kernel/Project.java   (original)
+++ trunk/src/app/src/org/argouml/kernel/Project.java   2008-02-28 14:33:11-0800
@@ -610,7 +610,11 @@
     public void setVetoSupport(VetoableChangeSupport theVetoSupport);
 
     /**
-     * Get the current viewed diagram.
+     * Get the current viewed diagram. <p>
+     * 
+     * Used by "argo.tee" to save the name 
+     * of this diagram, so that the same diagram 
+     * can be initially shown when reloading this project..
      *
      * @return the current viewed diagram
      */
@@ -620,6 +624,12 @@
      * @param theDiagram the ArgoDiagram
      */
     public void setActiveDiagram(final ArgoDiagram theDiagram);
+    
+    /**
+     * @param diagramName the name of the diagram to show 
+     * by default after loading
+     */
+    public void setSavedDiagramName(String diagramName);
 
     /**
      * Remove the project.

Modified: trunk/src/app/src/org/argouml/kernel/ProjectImpl.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/app/src/org/argouml/kernel/ProjectImpl.java?view=diff&rev=14164&p1=trunk/src/app/src/org/argouml/kernel/ProjectImpl.java&p2=trunk/src/app/src/org/argouml/kernel/ProjectImpl.java&r1=14163&r2=14164
==============================================================================
--- trunk/src/app/src/org/argouml/kernel/ProjectImpl.java       (original)
+++ trunk/src/app/src/org/argouml/kernel/ProjectImpl.java       2008-02-28 
14:33:11-0800
@@ -136,6 +136,9 @@
      * The active diagram, pointer to a diagram in the list with diagrams.
      */
     private ArgoDiagram activeDiagram;
+    
+    /** The name of the diagram to show by default after loading a project. */
+    private String savedDiagramName;
 
     /**
      * Cache for the default model.
@@ -762,10 +765,19 @@
 
 
     public Object getInitialTarget() {
+        if (savedDiagramName != null) {
+            /* Hence, a diagram name was saved in the project 
+             * that we are loading. So, we use this name 
+             * to retrieve any matching diagram. */
+            return getDiagram(savedDiagramName);
+        }
         if (diagrams.size() > 0) {
+            /* Use the first diagram. */
             return diagrams.get(0);
         }
         if (models.size() > 0) {
+            /* If there was no diagram at all, 
+             * then use the (first) UML model. */
             return models.iterator().next();
         }
         return null;
@@ -1093,7 +1105,10 @@
     public void setActiveDiagram(final ArgoDiagram theDiagram) {
         activeDiagram = theDiagram;
     }
-
+    
+    public void setSavedDiagramName(String diagramName) {
+        savedDiagramName = diagramName;
+    }
 
     public void remove() {
         for (ArgoDiagram diagram : diagrams) {
@@ -1134,6 +1149,7 @@
         currentNamespace = null;
         vetoSupport = null;
         activeDiagram = null;
+        savedDiagramName = null;
 
         emptyTrashCan();
     }

Modified: trunk/src/app/src/org/argouml/persistence/ArgoParser.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/app/src/org/argouml/persistence/ArgoParser.java?view=diff&rev=14164&p1=trunk/src/app/src/org/argouml/persistence/ArgoParser.java&p2=trunk/src/app/src/org/argouml/persistence/ArgoParser.java&r1=14163&r2=14164
==============================================================================
--- trunk/src/app/src/org/argouml/persistence/ArgoParser.java   (original)
+++ trunk/src/app/src/org/argouml/persistence/ArgoParser.java   2008-02-28 
14:33:11-0800
@@ -238,6 +238,9 @@
         case ArgoTokenTable.TOKEN_SHOWASSOCIATIONNAMES:
             handleShowAssociationNames(e);
             break;
+        case ArgoTokenTable.TOKEN_ACTIVE_DIAGRAM:
+            handleActiveDiagram(e);
+            break;
         default:
             if (DBG) {
                 LOG.warn("WARNING: unknown end tag:" + e.getName());
@@ -465,6 +468,12 @@
         ps.setShowAssociationNames(showAssociationNames);
     }
 
+    protected void handleActiveDiagram(XMLElement e) {
+        /* At this stage during loading, the diagrams are 
+         * not created yet - so we have to store this name for later use. */
+        project.setSavedDiagramName(e.getText().trim());
+    }
+
     /**
      * Get the number of diagram members read.
      * @return the number of diagram members read.

Modified: trunk/src/app/src/org/argouml/persistence/ArgoTokenTable.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/app/src/org/argouml/persistence/ArgoTokenTable.java?view=diff&rev=14164&p1=trunk/src/app/src/org/argouml/persistence/ArgoTokenTable.java&p2=trunk/src/app/src/org/argouml/persistence/ArgoTokenTable.java&r1=14163&r2=14164
==============================================================================
--- trunk/src/app/src/org/argouml/persistence/ArgoTokenTable.java       
(original)
+++ trunk/src/app/src/org/argouml/persistence/ArgoTokenTable.java       
2008-02-28 14:33:11-0800
@@ -26,7 +26,7 @@
 
 
 /**
- * These strings are saved in the final output in a zargo.
+ * These strings are used in the final output in a zargo.
  *
  * @author Jim Holt
  */
@@ -42,6 +42,7 @@
 
     ////////////////////////////////////////////////////////////////
     // constants
+    /* These strings match the XML element names in the argo.tee exactly. */
     private static final String STRING_ARGO                   = "argo";
     private static final String STRING_AUTHORNAME            = "authorname";
     private static final String STRING_AUTHOREMAIL            = "authoremail";
@@ -70,6 +71,7 @@
     private static final String STRING_FONTSIZE = "fontsize";
     private static final String STRING_GENERATION_OUTPUT_DIR
         = "generationoutputdir";
+    private static final String STRING_ACTIVE_DIAGRAM = "activediagram";
 
     /** The token for argo. */
     public static final int    TOKEN_ARGO                    = 1;
@@ -120,6 +122,8 @@
     public static final int    TOKEN_GENERATION_OUTPUT_DIR     = 23;
     /** A token for Generation Settings. */
     public static final int    TOKEN_SHOWASSOCIATIONNAMES     = 24;
+    /** A token for the active diagram name **/
+    public static final int    TOKEN_ACTIVE_DIAGRAM     = 25;
 
     /** The token for undefined. */
     public static final int    TOKEN_UNDEFINED               = 99;
@@ -158,6 +162,8 @@
                 Integer.valueOf(TOKEN_GENERATION_OUTPUT_DIR));
         addToken(STRING_SHOWASSOCIATIONNAMES,
                 Integer.valueOf(TOKEN_SHOWASSOCIATIONNAMES));
+        addToken(STRING_ACTIVE_DIAGRAM,
+                Integer.valueOf(TOKEN_ACTIVE_DIAGRAM));
     }
 
 } /* end class ArgoTokenTable */

Modified: trunk/src/app/src/org/argouml/persistence/argo.tee
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/app/src/org/argouml/persistence/argo.tee?view=diff&rev=14164&p1=trunk/src/app/src/org/argouml/persistence/argo.tee&p2=trunk/src/app/src/org/argouml/persistence/argo.tee&r1=14163&r2=14164
==============================================================================
--- trunk/src/app/src/org/argouml/persistence/argo.tee  (original)
+++ trunk/src/app/src/org/argouml/persistence/argo.tee  2008-02-28 14:33:11-0800
@@ -69,6 +69,7 @@
     <fontsize><ocl>self.projectSettings.fontSize</ocl></fontsize>
     
<defaultstereotypeview><ocl>self.projectSettings.defaultStereotypeView</ocl></defaultstereotypeview>
     
<generationoutputdir><ocl>self.projectSettings.generationOutputDir</ocl></generationoutputdir>
+    <activediagram><ocl>self.activeDiagram.name</ocl></activediagram>
   </settings>
 
   <searchpath href="<ocl>self.searchPathList</ocl>" />

Modified: trunk/src/app/src/org/argouml/uml/diagram/ArgoDiagram.java
Url: 
http://argouml.tigris.org/source/browse/argouml/trunk/src/app/src/org/argouml/uml/diagram/ArgoDiagram.java?view=diff&rev=14164&p1=trunk/src/app/src/org/argouml/uml/diagram/ArgoDiagram.java&p2=trunk/src/app/src/org/argouml/uml/diagram/ArgoDiagram.java&r1=14163&r2=14164
==============================================================================
--- trunk/src/app/src/org/argouml/uml/diagram/ArgoDiagram.java  (original)
+++ trunk/src/app/src/org/argouml/uml/diagram/ArgoDiagram.java  2008-02-28 
14:33:11-0800
@@ -316,6 +316,8 @@
     public void add(Fig f);
     
     /**
+     * Used by "argo.tee".
+     * 
      * @return the name of the diagram
      * @see org.tigris.gef.base.Diagram#getName()
      */

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

Reply via email to