svn commit: r13687 - trunk/src_new/org/argouml/ui/DetailsPane.java

[email protected]
Newsgroups gmane.comp.lang.uml.argouml.cvs
Message-ID <[email protected]>
Author: mvw
Date: 2007-10-21 08:11:55-0700
New Revision: 13687

Modified:
   trunk/src_new/org/argouml/ui/DetailsPane.java

Log:
Fix for P1 issue 4883: Presentation tabs did not follow selection.
Part 2 & some clarifications and refactoring.

Modified: trunk/src_new/org/argouml/ui/DetailsPane.java
Url: http://argouml.tigris.org/source/browse/argouml/trunk/src_new/org/argouml/ui/DetailsPane.java?view=diff&rev=13687&p1=trunk/src_new/org/argouml/ui/DetailsPane.java&p2=trunk/src_new/org/argouml/ui/DetailsPane.java&r1=13686&r2=13687
==============================================================================
--- trunk/src_new/org/argouml/ui/DetailsPane.java	(original)
+++ trunk/src_new/org/argouml/ui/DetailsPane.java	2007-10-21 08:11:55-0700
@@ -93,7 +93,7 @@
     private Object currentTarget;
 
     /**
-     * a list of all the tabs, which are JPanels, in the JTabbedPane tabs.
+     * The list of all the tabs, which are JPanels, in the JTabbedPane tabs.
      */
     private List<JPanel> tabPanelList = new ArrayList<JPanel>();
 
@@ -196,9 +196,10 @@
     }
 
     /**
-     * Selects the to do tab, and sets the target of that tab.<p>
+     * Selects the to do tab, and sets the target of that tab.
+     * 
      * @param item the selected todo item
-     * @return true if ? Yes when? TODO: Explain.
+     * @return true if todo tab is really selected.
      */
     public boolean setToDoItem(Object item) {
         enableTabs(item);
@@ -430,18 +431,14 @@
         return null;
     }
 
-    ////////////////////////////////////////////////////////////////
-    // event handlers
-
     /**
      * Reacts to a change in the selected tab by calling
-     *
      * refresh() for TabToDoTarget's
      * &
-     * setTarget on a  TabModelTarget or TabFigTarget instance
+     * setTarget on a  TabModelTarget or TabFigTarget instance. <p>
      *
-     * old notes: called when the user selects a new tab, by clicking or
-     *  otherwise.
+     * Called when the user selects a new tab, by clicking or
+     * otherwise.
      *
      * {@inheritDoc}
      */
@@ -449,22 +446,22 @@
         LOG.debug("DetailsPane state changed");
         Component sel = topLevelTabbedPane.getSelectedComponent();
 
-        // update the tab
+        // update the previously selected tab
         if (lastNonNullTab >= 0) {
 	    Object tab = tabPanelList.get(lastNonNullTab);
 	    if (tab instanceof TargetListener) {
+                // not visible any more - so remove as listener
 	        removeTargetListener((TargetListener) tab);
 	    }
 	}
         Object target = TargetManager.getInstance().getTarget();
 
-        if (!(sel instanceof TargetListener)) {
-            if (sel instanceof TabToDoTarget) {
-                ((TabToDoTarget) sel).setTarget(target);
-            } else if (sel instanceof TabTarget) {
-                ((TabTarget) sel).setTarget(target);
-            }
-        } else {
+        if (sel instanceof TabToDoTarget) {
+            ((TabToDoTarget) sel).setTarget(target);
+        } else if (sel instanceof TabTarget) {
+            ((TabTarget) sel).setTarget(target);
+        }
+        if (sel instanceof TargetListener) {
             removeTargetListener((TargetListener) sel);
             addTargetListener((TargetListener) sel);
         }
@@ -582,7 +579,7 @@
      * @see TargetListener#targetAdded(TargetEvent)
      */
     public void targetAdded(TargetEvent e) {
-        setTarget(TargetManager.getInstance().getSingleTarget(), false);
+        setTarget(e.getNewTarget(), false);
         fireTargetAdded(e);
     }
 
@@ -590,7 +587,7 @@
      * @see TargetListener#targetRemoved(TargetEvent)
      */
     public void targetRemoved(TargetEvent e) {
-        setTarget(TargetManager.getInstance().getSingleTarget(), false);
+        setTarget(e.getNewTarget(), false);
         fireTargetRemoved(e);
     }
 
@@ -598,7 +595,7 @@
      * @see TargetListener#targetSet(TargetEvent)
      */
     public void targetSet(TargetEvent e) {
-        setTarget(TargetManager.getInstance().getSingleTarget(), true);
+        setTarget(e.getNewTarget(), true);
         fireTargetSet(e);
     }
 
@@ -623,17 +620,16 @@
                         shouldEnable = true;
                     }
                 }
+                removeTargetListener((TargetListener) tab);
                 if (shouldEnable) {
-                    removeTargetListener((TargetListener) tab);
                     addTargetListener((TargetListener) tab);
                 }
             }
 
             topLevelTabbedPane.setEnabledAt(i, shouldEnable);
-
         }
-
     }
+
     private void fireTargetSet(TargetEvent targetEvent) {
         //          Guaranteed to return a non-null array
         Object[] listeners = listenerList.getListenerList();
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.