[Mongobrowser-commit] SF.net SVN: mongobrowser:[26] trunk/mongobrowser/src/com/mebigfatguy/ mongobr
Status: Pre-Alpha
Brought to you by:
dbrosius
|
From: <dbr...@us...> - 2009-12-25 05:14:51
|
Revision: 26
http://mongobrowser.svn.sourceforge.net/mongobrowser/?rev=26&view=rev
Author: dbrosius
Date: 2009-12-25 05:14:31 +0000 (Fri, 25 Dec 2009)
Log Message:
-----------
add slugs and tree expansion listeners for collections
Modified Paths:
--------------
trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/MongoBundle.java
trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/dialogs/MongoDataPanel.java
trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/dialogs/MongoTreeNode.java
Modified: trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/MongoBundle.java
===================================================================
--- trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/MongoBundle.java 2009-12-24 03:51:00 UTC (rev 25)
+++ trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/MongoBundle.java 2009-12-25 05:14:31 UTC (rev 26)
@@ -42,7 +42,8 @@
NewDatabase("mongo.newdatabase"),
NewCollection("mongo.newcollection"),
NewObject("mongo.newobject"),
- NewKeyValue("mongo.newkeyvalue");
+ NewKeyValue("mongo.newkeyvalue"),
+ Object("mongo.object");
String id;
Modified: trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/dialogs/MongoDataPanel.java
===================================================================
--- trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/dialogs/MongoDataPanel.java 2009-12-24 03:51:00 UTC (rev 25)
+++ trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/dialogs/MongoDataPanel.java 2009-12-25 05:14:31 UTC (rev 26)
@@ -31,7 +31,10 @@
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTree;
+import javax.swing.event.TreeExpansionEvent;
+import javax.swing.event.TreeWillExpandListener;
import javax.swing.tree.DefaultTreeModel;
+import javax.swing.tree.ExpandVetoException;
import javax.swing.tree.TreePath;
import com.mebigfatguy.mongobrowser.MongoBundle;
@@ -39,6 +42,8 @@
import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
+import com.mongodb.DBCursor;
+import com.mongodb.DBObject;
public class MongoDataPanel extends JPanel implements MongoPanel {
@@ -62,10 +67,14 @@
MongoTreeNode root = (MongoTreeNode)model.getRoot();
if (db != null) {
- Set<String> collections = db.getCollectionNames();
- for (String collection : collections) {
- MongoTreeNode col = new MongoTreeNode(MongoTreeNode.Type.Collection, collection);
+ Set<String> collectionNames = db.getCollectionNames();
+ for (String collectionName : collectionNames) {
+ MongoTreeNode col = new MongoTreeNode(MongoTreeNode.Type.Collection, collectionName);
+ DBCollection collection = db.getCollection(collectionName);
+ col.setUserObject(collection);
root.add(col);
+ MongoTreeNode slug = new MongoTreeNode(MongoTreeNode.Type.ExpansionSlug, "");
+ col.add(slug);
}
} else {
root.removeAllChildren();
@@ -87,6 +96,7 @@
MongoTreeNode root = new MongoTreeNode(MongoTreeNode.Type.Root, "root");
tree = new JTree(root);
tree.setRootVisible(false);
+ tree.setShowsRootHandles(true);
add(new JScrollPane(tree), BorderLayout.CENTER);
newCollectionItem = new JMenuItem(MongoBundle.getString(MongoBundle.Key.NewCollection));
@@ -131,6 +141,41 @@
}
});
+ tree.addTreeWillExpandListener(new TreeWillExpandListener() {
+ @Override
+ public void treeWillExpand(TreeExpansionEvent event) throws ExpandVetoException {
+ MongoTreeNode node = (MongoTreeNode)event.getPath().getLastPathComponent();
+ MongoTreeNode slug = (MongoTreeNode)node.getFirstChild();
+ if (slug.getType() == MongoTreeNode.Type.ExpansionSlug) {
+ node.removeAllChildren();
+ String objectName = MongoBundle.getString(MongoBundle.Key.Object);
+ switch (node.getType()) {
+ case Collection: {
+ DBCollection collection = (DBCollection)node.getUserObject();
+ DBCursor cursor = collection.find();
+ while (cursor.hasNext()) {
+ DBObject obj = cursor.next();
+ MongoTreeNode objNode = new MongoTreeNode(MongoTreeNode.Type.Object, objectName);
+ objNode.setUserObject(obj);
+ node.add(objNode);
+ slug = new MongoTreeNode(MongoTreeNode.Type.ExpansionSlug, "");
+ objNode.add(slug);
+ }
+ }
+ break;
+ }
+ }
+
+ DefaultTreeModel model = (DefaultTreeModel)tree.getModel();
+ model.nodeStructureChanged(node);
+ }
+
+ @Override
+ public void treeWillCollapse(TreeExpansionEvent event) throws ExpandVetoException {
+ }
+
+ });
+
newCollectionItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
Modified: trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/dialogs/MongoTreeNode.java
===================================================================
--- trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/dialogs/MongoTreeNode.java 2009-12-24 03:51:00 UTC (rev 25)
+++ trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/dialogs/MongoTreeNode.java 2009-12-25 05:14:31 UTC (rev 26)
@@ -23,7 +23,7 @@
public class MongoTreeNode extends DefaultMutableTreeNode {
private static final long serialVersionUID = -1710144820086785938L;
- enum Type {Root, Collection, Object, KeyValue};
+ enum Type {Root, Collection, Object, KeyValue, ExpansionSlug};
Type nodeType;
@@ -31,10 +31,6 @@
super(name);
nodeType = type;
}
-
- public boolean isLeaf() {
- return nodeType == Type.KeyValue;
- }
public Type getType() {
return nodeType;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|