Revision: 3517
Author: [email protected]
Date: Mon May 10 12:47:37 2010
Log: Fixing the Bring to Front / Send to Back actions so that they work locally. At current, they do not work properly on a server workspace. Thus, the popup menu for these actions in an enterprise session has been hidden. This should be fixed for the the next release.
http://code.google.com/p/power-architect/source/detail?r=3517

Modified:
 /trunk/src/main/java/ca/sqlpower/architect/swingui/PlayPen.java
 /trunk/src/main/java/ca/sqlpower/architect/swingui/TablePane.java

=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/PlayPen.java Mon May 10 11:20:07 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/PlayPen.java Mon May 10 12:47:37 2010
@@ -65,6 +65,7 @@
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -2716,15 +2717,57 @@
                }

                public void actionPerformed(ActionEvent e) {
+                   pp.getContentPane().begin("Bringing playpen components to 
front.");
+
+ LinkedHashSet<PlayPenComponent> independentComponents = new LinkedHashSet<PlayPenComponent>(); + LinkedHashSet<PlayPenComponent> dependentComponents = new LinkedHashSet<PlayPenComponent>();
+
                        for (PlayPenComponent c : pp.getSelectedItems()) {
-                           try {
-                               pp.contentPane.removeChild(c);
-                           } catch (ObjectDependentException ex) {
-                               throw new RuntimeException(ex);
-                           }
-                               pp.contentPane.addChild(c, 0);
-                       }
+                           if 
(PlayPenContentPane.isDependentComponentType(c.getClass())) {
+                               dependentComponents.add(c);
+
+                               try {
+                                   pp.getContentPane().removeChild(c);
+                               } catch (ObjectDependentException ex) {
+                                   throw new RuntimeException(ex);
+                               }
+                           } else {
+                               independentComponents.add(c);
+                           }
+
+                               if (c instanceof TablePane) {
+ for (Relationship r : pp.getContentPane().getChildren(Relationship.class)) {
+                                       if (c == r.getFkTable() || c == 
r.getPkTable()) {
+                                           if (dependentComponents.add(r)) {
+                                               try {
+                                                   
pp.getContentPane().removeChild(r);
+                                               } catch 
(ObjectDependentException ex) {
+                                                   throw new 
RuntimeException(ex);
+                                               }
+                                           }
+                                       }
+                                   }
+                               }
+                       }
+
+                       for (PlayPenComponent c : independentComponents) {
+                try {
+                    pp.getContentPane().removeChild(c);
+                } catch (ObjectDependentException ex) {
+                    throw new RuntimeException(ex);
+                }
+                       }
+
+                       for (PlayPenComponent c : independentComponents) {
+                           pp.getContentPane().addChild(c, 0);
+                       }
+                       for (PlayPenComponent c : dependentComponents) {
+                           pp.getContentPane().addChild(
+                                   c, 
pp.getContentPane().getFirstDependentComponentIndex());
+                       }
+
                        pp.repaint();
+                       pp.getContentPane().commit();
                }
        }

@@ -2738,15 +2781,59 @@
                }

                public void actionPerformed(ActionEvent e) {
+                   pp.getContentPane().begin("Sending playpen components to 
back");
+
+ LinkedHashSet<PlayPenComponent> independentComponents = new LinkedHashSet<PlayPenComponent>(); + LinkedHashSet<PlayPenComponent> dependentComponents = new LinkedHashSet<PlayPenComponent>();
+
                    for (PlayPenComponent c : pp.getSelectedItems()) {
-                       try {
-                           pp.contentPane.removeChild(c);
-                       } catch (ObjectDependentException ex) {
-                           throw new RuntimeException(ex);
-                       }
-                       pp.contentPane.addChild(c, 
pp.contentPane.getChildren().size());
-                       }
+
+                       if 
(PlayPenContentPane.isDependentComponentType(c.getClass())) {
+                           dependentComponents.add(c);
+
+                           try {
+                               pp.getContentPane().removeChild(c);
+                           } catch (ObjectDependentException ex) {
+                               throw new RuntimeException(ex);
+                           }
+                       } else {
+                           independentComponents.add(c);
+                       }
+
+                if (c instanceof TablePane) {
+ for (Relationship r : pp.getContentPane().getChildren(Relationship.class)) {
+                        if (c == r.getFkTable() || c == r.getPkTable()) {
+                            if (dependentComponents.add(r)) {
+                                try {
+                                    pp.getContentPane().removeChild(r);
+                                } catch (ObjectDependentException ex) {
+                                    throw new RuntimeException(ex);
+                                }
+                            }
+                        }
+                    }
+                }
+                       }
+
+                   for (PlayPenComponent c : independentComponents) {
+                try {
+                    pp.getContentPane().removeChild(c);
+                } catch (ObjectDependentException ex) {
+                    throw new RuntimeException(ex);
+                }
+                   }
+
+                   for (PlayPenComponent c : independentComponents) {
+                       pp.getContentPane().addChild(
+ c, pp.getContentPane().getFirstDependentComponentIndex());
+                   }
+                   for (PlayPenComponent c : dependentComponents) {
+                pp.getContentPane().addChild(
+                        c, pp.getContentPane().getChildren().size());
+                   }
+
                        pp.repaint();
+                       pp.getContentPane().commit();
                }
        }

=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/TablePane.java Mon May 10 11:20:07 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/TablePane.java Mon May 10 12:47:37 2010
@@ -1194,18 +1194,20 @@
         mi.setAction(af.getEditTableAction());
         mi.setActionCommand(PlayPen.ACTION_COMMAND_SRC_PLAYPEN);
         tablePanePopup.add(mi);
-
-        tablePanePopup.addSeparator();
-
-        mi = new JMenuItem();
-        mi.setAction(getPlayPen().bringToFrontAction);
-        mi.setActionCommand(PlayPen.ACTION_COMMAND_SRC_PLAYPEN);
-        tablePanePopup.add(mi);
-
-        mi = new JMenuItem();
-        mi.setAction(getPlayPen().sendToBackAction);
-        mi.setActionCommand(PlayPen.ACTION_COMMAND_SRC_PLAYPEN);
-        tablePanePopup.add(mi);
+
+        if (!getPlayPen().getSession().isEnterpriseSession()) {
+            tablePanePopup.addSeparator();
+
+            mi = new JMenuItem();
+            mi.setAction(getPlayPen().bringToFrontAction);
+            mi.setActionCommand(PlayPen.ACTION_COMMAND_SRC_PLAYPEN);
+            tablePanePopup.add(mi);
+
+            mi = new JMenuItem();
+            mi.setAction(getPlayPen().sendToBackAction);
+            mi.setActionCommand(PlayPen.ACTION_COMMAND_SRC_PLAYPEN);
+            tablePanePopup.add(mi);
+        }

         if (logger.isDebugEnabled()) {
             tablePanePopup.addSeparator();

Reply via email to