[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. |