[Mongobrowser-commit] SF.net SVN: mongobrowser:[71] trunk/mongobrowser/src/com/mebigfatguy/ mongobr
Status: Pre-Alpha
Brought to you by:
dbrosius
From: <dbr...@us...> - 2010-01-01 02:48:16
|
Revision: 71 http://mongobrowser.svn.sourceforge.net/mongobrowser/?rev=71&view=rev Author: dbrosius Date: 2010-01-01 02:48:10 +0000 (Fri, 01 Jan 2010) Log Message: ----------- add ability to add key/values Modified Paths: -------------- trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/actions/NewKeyValueAction.java trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/dialogs/KeyValueDialog.java Modified: trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/actions/NewKeyValueAction.java =================================================================== --- trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/actions/NewKeyValueAction.java 2010-01-01 02:33:21 UTC (rev 70) +++ trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/actions/NewKeyValueAction.java 2010-01-01 02:48:10 UTC (rev 71) @@ -22,10 +22,14 @@ import javax.swing.AbstractAction; import javax.swing.JTree; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreePath; import com.mebigfatguy.mongobrowser.MongoBundle; import com.mebigfatguy.mongobrowser.MongoContext; import com.mebigfatguy.mongobrowser.dialogs.KeyValueDialog; +import com.mebigfatguy.mongobrowser.dialogs.MongoTreeNode; +import com.mongodb.DBObject; public class NewKeyValueAction extends AbstractAction { @@ -45,7 +49,19 @@ dialog.setModal(true); dialog.setVisible(true); if (dialog.isOK()) { - + String key = dialog.getKey(); + Object value = dialog.getValue(); + TreePath path = tree.getSelectionPath(); + MongoTreeNode objectNode = (MongoTreeNode)path.getLastPathComponent(); + DBObject object = (DBObject) objectNode.getUserObject(); + object.put(key, value); + MongoTreeNode kv = new MongoTreeNode(MongoTreeNode.Type.KeyValue, key + " : " + object.get(key)); + objectNode.add(kv); + DefaultTreeModel model = (DefaultTreeModel)tree.getModel(); + model.nodeStructureChanged((MongoTreeNode)model.getRoot()); + TreePath selection = new TreePath(kv.getPath()); + tree.scrollPathToVisible(selection); + tree.setSelectionPath(selection); } } Modified: trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/dialogs/KeyValueDialog.java =================================================================== --- trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/dialogs/KeyValueDialog.java 2010-01-01 02:33:21 UTC (rev 70) +++ trunk/mongobrowser/src/com/mebigfatguy/mongobrowser/dialogs/KeyValueDialog.java 2010-01-01 02:48:10 UTC (rev 71) @@ -4,6 +4,8 @@ import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; import javax.swing.BorderFactory; import javax.swing.Box; @@ -15,16 +17,19 @@ import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JTextField; +import javax.swing.text.BadLocationException; +import javax.swing.text.PlainDocument; import com.jgoodies.forms.layout.CellConstraints; import com.jgoodies.forms.layout.FormLayout; import com.mebigfatguy.mongobrowser.MongoBundle; +import com.mongodb.BasicDBObject; public class KeyValueDialog extends JDialog { private static final long serialVersionUID = 4909101478144542212L; - private JTextField keyName; + private JTextField keyField; private JComboBox valueTypeBox; private JTextField valueField; private JButton okButton; @@ -53,10 +58,10 @@ JLabel keyLabel = new JLabel(MongoBundle.getString(MongoBundle.Key.Key)); p.add(keyLabel, cc.xy(2, 2)); - keyName = new JTextField(); - p.add(keyName, cc.xy(4, 2)); + keyField = new JTextField(); + p.add(keyField, cc.xy(4, 2)); - keyLabel.setLabelFor(keyName); + keyLabel.setLabelFor(keyField); JLabel valueLabel = new JLabel(MongoBundle.getString(MongoBundle.Key.Value)); p.add(valueLabel, cc.xy(2, 4)); @@ -70,6 +75,7 @@ model.addElement(new DoubleValueType()); model.addElement(new StringValueType()); model.addElement(new ObjectValueType()); + valueTypeBox.setSelectedIndex(2); p.add(valueTypeBox, cc.xy(6, 4)); valueLabel.setLabelFor(valueField); @@ -107,19 +113,56 @@ dispose(); } }); + + valueTypeBox.addItemListener(new ItemListener() { + + @Override + public void itemStateChanged(ItemEvent ie) { + if (ie.getStateChange() == ItemEvent.SELECTED) { + ValueType vt = (ValueType)ie.getItem(); + vt.installDocument(valueField); + } + } + }); } public boolean isOK() { return ok; } + public String getKey() { + return keyField.getText(); + } + + public Object getValue() { + return ((ValueType)valueTypeBox.getSelectedItem()).getValue(valueField); + } + interface ValueType { - + void installDocument(JTextField field); + Object getValue(JTextField field); } class IntegerValueType implements ValueType { @Override + public void installDocument(JTextField field) { + try { + String val = field.getText(); + field.setText(""); + field.setDocument(new IntegerDocument()); + field.getDocument().insertString(0, val, null); + field.setEnabled(true); + } catch (BadLocationException ble) { + } + } + + @Override + public Object getValue(JTextField field) { + return Integer.valueOf(field.getText()); + } + + @Override public String toString() { return MongoBundle.getString(MongoBundle.Key.Integer); } @@ -128,6 +171,22 @@ class DoubleValueType implements ValueType { @Override + public void installDocument(JTextField field) { + try { + String val = field.getText(); + field.setText(""); + field.setDocument(new IntegerDocument()); + field.getDocument().insertString(0, val, null); + field.setEnabled(true); + } catch (BadLocationException ble) { + } + } + + @Override + public Object getValue(JTextField field) { + return Double.valueOf(field.getText()); + } + @Override public String toString() { return MongoBundle.getString(MongoBundle.Key.Double); } @@ -136,6 +195,23 @@ class StringValueType implements ValueType { @Override + public void installDocument(JTextField field) { + try { + String val = field.getText(); + field.setText(""); + field.setDocument(new PlainDocument()); + field.getDocument().insertString(0, val, null); + field.setEnabled(true); + } catch (BadLocationException ble) { + } + } + + @Override + public Object getValue(JTextField field) { + return field.getText(); + } + + @Override public String toString() { return MongoBundle.getString(MongoBundle.Key.String); } @@ -144,6 +220,18 @@ class ObjectValueType implements ValueType { @Override + public void installDocument(JTextField field) { + field.setText(""); + field.setDocument(new PlainDocument()); + field.setEnabled(false); + } + + @Override + public Object getValue(JTextField field) { + return new BasicDBObject(); + } + + @Override public String toString() { return MongoBundle.getString(MongoBundle.Key.Object); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |