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();