Revision: 3801
Author: [email protected]
Date: Thu Jul 29 07:24:00 2010
Log: Added in a None Specified TreeNode in the source column chooser for the ColumnEditPanel. If the source column is set but the connection is not available in the source column chooser, users can now select the None Specified node to deselect the source column.
http://code.google.com/p/power-architect/source/detail?r=3801

Modified:
 /trunk/src/main/java/ca/sqlpower/architect/swingui/ColumnEditPanel.java
 /trunk/src/main/java/ca/sqlpower/architect/swingui/dbtree/DBTreeModel.java

=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/ColumnEditPanel.java Mon Jul 26 15:46:35 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/ColumnEditPanel.java Thu Jul 29 07:24:00 2010
@@ -61,6 +61,8 @@
 import javax.swing.event.TreeSelectionEvent;
 import javax.swing.event.TreeSelectionListener;
 import javax.swing.text.JTextComponent;
+import javax.swing.tree.DefaultMutableTreeNode;
+import javax.swing.tree.TreeNode;
 import javax.swing.tree.TreePath;
 import javax.swing.tree.TreeSelectionModel;

@@ -171,6 +173,9 @@
     private final JButton colSourceButton;

     private final JTree colSourceTree;
+
+    private final TreeNode sourceNotSpecifiedTreeNode =
+ new DefaultMutableTreeNode(Messages.getString("ColumnEditPanel.noneSpecified"), false);

     private final JTextField colLogicalName;

@@ -266,7 +271,58 @@
         }

         colSourceTree = new JTree();
- DBTreeModel sourceTreeModel = new DBTreeModel(session.getRootObject(), colSourceTree, false, true, false, false, false); + DBTreeModel sourceTreeModel = new DBTreeModel(session.getRootObject(), colSourceTree, false, true, false, false, false) {
+            @Override
+            public Object getChild(Object parent, int index) {
+                if (parent == sourceNotSpecifiedTreeNode) {
+                    return null;
+                } else if (parent == getRoot()) {
+                    if (index == 0) {
+                        return sourceNotSpecifiedTreeNode;
+                    } else {
+                        return super.getChild(parent, index - 1);
+                    }
+                } else {
+                    return super.getChild(parent, index);
+                }
+            }
+            @Override
+            public int getChildCount(Object parent) {
+                if (parent == sourceNotSpecifiedTreeNode) {
+                    return 0;
+                } else if (parent == getRoot()) {
+                    return super.getChildCount(parent) + 1;
+                } else {
+                    return super.getChildCount(parent);
+                }
+            }
+            @Override
+            public int getIndexOfChild(Object parent, Object child) {
+                if (parent == sourceNotSpecifiedTreeNode) {
+                    return -1;
+                } else if (child == sourceNotSpecifiedTreeNode) {
+                    return 0;
+                } else if (parent == getRoot()) {
+                    int index = super.getIndexOfChild(parent, child);
+                    if (index != -1) {
+                        return index + 1;
+                    } else {
+                        return -1;
+                    }
+                } else {
+                    return super.getIndexOfChild(parent, child);
+                }
+            }
+            @Override
+            public boolean isLeaf(Object parent) {
+                if (parent == sourceNotSpecifiedTreeNode) {
+                    return true;
+                } else {
+                   return super.isLeaf(parent);
+                }
+            }
+
+        };
         colSourceTree.setModel(sourceTreeModel);
         colSourceTree.setRootVisible(false);
         colSourceTree.setShowsRootHandles(true);
@@ -705,6 +761,8 @@
private void updateComponents(SQLColumn col) throws SQLObjectException {
         SQLColumn sourceColumn = col.getSourceColumn();
         if (sourceColumn == null) {
+ Object[] treePath = {session.getRootObject(), sourceNotSpecifiedTreeNode};
+            colSourceTree.setSelectionPath(new TreePath(treePath));
colSourceButton.setText(Messages.getString("ColumnEditPanel.noneSpecified")); //$NON-NLS-1$
         } else {
             updateComponent(colSourceTree, sourceColumn);
=======================================
--- /trunk/src/main/java/ca/sqlpower/architect/swingui/dbtree/DBTreeModel.java Tue Jul 27 07:08:22 2010 +++ /trunk/src/main/java/ca/sqlpower/architect/swingui/dbtree/DBTreeModel.java Thu Jul 29 07:24:00 2010
@@ -339,6 +339,8 @@
                 return false;
} else if (!showPlayPenDatabase && spObject instanceof SQLDatabase) {
                 return ((SQLDatabase) spObject).isPlayPenDatabase();
+ } else if (!showPlayPenDatabase && SQLPowerUtils.getAncestor(spObject, SQLDatabase.class).isPlayPenDatabase()) {
+                return false;
             } else if (!showColumns && spObject instanceof SQLColumn) {
                 return false;
} else if (!showRelationships && spObject instanceof SQLRelationship) {

Reply via email to