summaryrefslogtreecommitdiff
path: root/java/src/IceGridGUI/Application/MapField.java
diff options
context:
space:
mode:
authorBernard Normier <bernard@zeroc.com>2006-05-19 17:09:54 +0000
committerBernard Normier <bernard@zeroc.com>2006-05-19 17:09:54 +0000
commit9db11f38325ee65ee12b740a9ed36fb9e01f58f9 (patch)
tree2cf62a049fea3c4b76aa22d975af15c46e0f22ae /java/src/IceGridGUI/Application/MapField.java
parentBug 996 (diff)
downloadice-9db11f38325ee65ee12b740a9ed36fb9e01f58f9.tar.bz2
ice-9db11f38325ee65ee12b740a9ed36fb9e01f58f9.tar.xz
ice-9db11f38325ee65ee12b740a9ed36fb9e01f58f9.zip
Removed pop-up dialogs from Applicatin view
Diffstat (limited to 'java/src/IceGridGUI/Application/MapField.java')
-rwxr-xr-xjava/src/IceGridGUI/Application/MapField.java194
1 files changed, 194 insertions, 0 deletions
diff --git a/java/src/IceGridGUI/Application/MapField.java b/java/src/IceGridGUI/Application/MapField.java
new file mode 100755
index 00000000000..e8d40bf8945
--- /dev/null
+++ b/java/src/IceGridGUI/Application/MapField.java
@@ -0,0 +1,194 @@
+// **********************************************************************
+//
+// Copyright (c) 2003-2006 ZeroC, Inc. All rights reserved.
+//
+// This copy of Ice is licensed to you under the terms described in the
+// ICE_LICENSE file included in this distribution.
+//
+// **********************************************************************
+package IceGridGUI.Application;
+
+import IceGrid.*;
+import IceGridGUI.*;
+
+import java.awt.event.ActionEvent;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.DefaultCellEditor;
+import javax.swing.JTable;
+import javax.swing.JTextField;
+import javax.swing.KeyStroke;
+import javax.swing.event.TableModelEvent;
+import javax.swing.event.TableModelListener;
+import javax.swing.table.DefaultTableCellRenderer;
+import javax.swing.table.DefaultTableModel;
+
+
+//
+// A special field used to show/edit a map
+//
+
+public class MapField extends JTable
+{
+ public MapField(Editor editor, String headKey, String headValue, boolean substituteKey)
+ {
+ _substituteKey = substituteKey;
+
+ _columnNames = new java.util.Vector(2);
+ _columnNames.add(headKey);
+ _columnNames.add(headValue);
+
+ _editor = editor;
+
+ Action deleteRow = new AbstractAction("Delete selected row(s)")
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ if(_editable)
+ {
+ if(isEditing())
+ {
+ getCellEditor().stopCellEditing();
+ }
+
+ for(;;)
+ {
+ int selectedRow = getSelectedRow();
+ if(selectedRow == -1)
+ {
+ break;
+ }
+ else
+ {
+ _model.removeRow(selectedRow);
+ }
+ }
+ }
+ }
+ };
+ getActionMap().put("delete", deleteRow);
+ getInputMap().put(
+ KeyStroke.getKeyStroke("DELETE"), "delete");
+
+ }
+
+ public void set(java.util.Map map, Utils.Resolver resolver,
+ boolean editable)
+ {
+ _editable = editable;
+
+ //
+ // Transform map into vector of vectors
+ //
+ java.util.Vector vector = new java.util.Vector(map.size());
+ java.util.Iterator p = map.entrySet().iterator();
+ while(p.hasNext())
+ {
+ java.util.Vector row = new java.util.Vector(2);
+ java.util.Map.Entry entry = (java.util.Map.Entry)p.next();
+
+ if(_substituteKey)
+ {
+ row.add(Utils.substitute((String)entry.getKey(), resolver));
+ }
+ else
+ {
+ row.add((String)entry.getKey());
+ }
+ row.add(Utils.substitute((String)entry.getValue(), resolver));
+ vector.add(row);
+ }
+
+ if(_editable)
+ {
+ java.util.Vector newRow = new java.util.Vector(2);
+ newRow.add("");
+ newRow.add("");
+ vector.add(newRow);
+ }
+
+ _model = new DefaultTableModel(vector, _columnNames)
+ {
+ public boolean isCellEditable(int row, int column)
+ {
+ return _editable;
+ }
+ };
+
+ _model.addTableModelListener(new TableModelListener()
+ {
+ public void tableChanged(TableModelEvent e)
+ {
+ if(_editable)
+ {
+ Object lastKey = _model.getValueAt(
+ _model.getRowCount() - 1 , 0);
+ if(lastKey != null && !lastKey.equals(""))
+ {
+ _model.addRow(new Object[]{"", ""});
+ }
+ _editor.updated();
+ }
+ }
+ });
+ setModel(_model);
+
+ setCellSelectionEnabled(_editable);
+ setOpaque(_editable);
+ setPreferredScrollableViewportSize(getPreferredSize());
+
+ DefaultTableCellRenderer cr = (DefaultTableCellRenderer)
+ getDefaultRenderer(String.class);
+ cr.setOpaque(_editable);
+ }
+
+
+ public java.util.TreeMap get()
+ {
+ assert _editable;
+
+ if(isEditing())
+ {
+ getCellEditor().stopCellEditing();
+ }
+ java.util.Vector vector = _model.getDataVector();
+
+ java.util.TreeMap result = new java.util.TreeMap();
+
+ java.util.Iterator p = vector.iterator();
+ while(p.hasNext())
+ {
+ java.util.Vector row = (java.util.Vector)p.next();
+
+ //
+ // Eliminate rows with null or empty keys
+ //
+ String key = (String)row.elementAt(0);
+ if(key != null)
+ {
+ key = key.trim();
+ if(!key.equals(""))
+ {
+ String val = (String) row.elementAt(1);
+ if(val == null)
+ {
+ val = "";
+ }
+ result.put(key, val);
+ }
+ }
+ }
+ return result;
+ }
+
+ private DefaultTableModel _model;
+ private java.util.Vector _columnNames;
+ private boolean _editable = false;
+
+ private boolean _substituteKey;
+
+ private Editor _editor;
+}
+
+