diff options
author | Bernard Normier <bernard@zeroc.com> | 2006-05-19 17:09:54 +0000 |
---|---|---|
committer | Bernard Normier <bernard@zeroc.com> | 2006-05-19 17:09:54 +0000 |
commit | 9db11f38325ee65ee12b740a9ed36fb9e01f58f9 (patch) | |
tree | 2cf62a049fea3c4b76aa22d975af15c46e0f22ae /java/src/IceGridGUI/Application/ParametersField.java | |
parent | Bug 996 (diff) | |
download | ice-9db11f38325ee65ee12b740a9ed36fb9e01f58f9.tar.bz2 ice-9db11f38325ee65ee12b740a9ed36fb9e01f58f9.tar.xz ice-9db11f38325ee65ee12b740a9ed36fb9e01f58f9.zip |
Removed pop-up dialogs from Applicatin view
Diffstat (limited to 'java/src/IceGridGUI/Application/ParametersField.java')
-rwxr-xr-x | java/src/IceGridGUI/Application/ParametersField.java | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/java/src/IceGridGUI/Application/ParametersField.java b/java/src/IceGridGUI/Application/ParametersField.java new file mode 100755 index 00000000000..f5f107df0a0 --- /dev/null +++ b/java/src/IceGridGUI/Application/ParametersField.java @@ -0,0 +1,251 @@ +// **********************************************************************
+//
+// 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.JComboBox;
+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;
+import javax.swing.table.TableCellEditor;
+import javax.swing.table.TableColumn;
+
+//
+// A special field used to show/edit parameters
+//
+
+public class ParametersField extends JTable
+{
+ public ParametersField(Editor editor, String valHeading,
+ boolean editNames, final String nullLabel)
+ {
+ _editNames = editNames;
+ _editor = editor;
+
+ _nullObject = new Object()
+ {
+ public String toString()
+ {
+ return nullLabel;
+ }
+ };
+
+ _columnNames = new java.util.Vector(2);
+ _columnNames.add("Name");
+ _columnNames.add(valHeading);
+
+ JComboBox comboBox = new JComboBox();
+ comboBox.setEditable(true);
+ comboBox.addItem(_nullObject);
+ _cellEditor = new DefaultCellEditor(comboBox);
+
+ Action deleteRow = new AbstractAction("Delete selected row(s)")
+ {
+ public void actionPerformed(ActionEvent e)
+ {
+ if(_editable && _editNames)
+ {
+ 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.List names,
+ java.util.Map values,
+ Utils.Resolver resolver, boolean editable)
+ {
+ _editable = editable;
+
+ //
+ // Transform map into vector of vectors
+ //
+ java.util.Vector vector = new java.util.Vector(names.size());
+ java.util.Iterator p = names.iterator();
+ while(p.hasNext())
+ {
+ java.util.Vector row = new java.util.Vector(2);
+ String name = (String)p.next();
+
+ row.add(name);
+
+ Object val = values.get(name);
+ if(val == null)
+ {
+ row.add(_nullObject);
+ }
+ else
+ {
+ row.add(Utils.substitute((String)val, resolver));
+ }
+ vector.add(row);
+ }
+
+ if(_editable && _editNames)
+ {
+ java.util.Vector newRow = new java.util.Vector(2);
+ newRow.add("");
+ newRow.add(_nullObject);
+ vector.add(newRow);
+ }
+
+ _model = new DefaultTableModel(vector, _columnNames)
+ {
+ public boolean isCellEditable(int row, int column)
+ {
+ if(_editable)
+ {
+ if(column == 0)
+ {
+ return _editNames;
+ }
+ else
+ {
+ return true;
+ }
+ }
+ else
+ {
+ return false;
+ }
+ }
+ };
+
+ _model.addTableModelListener(new TableModelListener()
+ {
+ public void tableChanged(TableModelEvent e)
+ {
+ if(_editable)
+ {
+ if(_editNames)
+ {
+ Object lastKey = _model.getValueAt(
+ _model.getRowCount() - 1 , 0);
+ if(lastKey != null && !lastKey.equals(""))
+ {
+ _model.addRow(new Object[]{"", _nullObject});
+ }
+ }
+ _editor.updated();
+ }
+ }
+ });
+ setModel(_model);
+
+ TableColumn valColumn = getColumnModel().getColumn(1);
+ valColumn.setCellEditor(_cellEditor);
+
+ setCellSelectionEnabled(_editable);
+ setOpaque(_editable);
+ setPreferredScrollableViewportSize(getPreferredSize());
+
+ DefaultTableCellRenderer cr = (DefaultTableCellRenderer)
+ getDefaultRenderer(String.class);
+ cr.setOpaque(_editable);
+ }
+
+
+ public java.util.Map get(java.util.List names)
+ {
+ assert _editable;
+
+ if(_editNames)
+ {
+ assert names != null;
+ }
+
+
+ java.util.Map values = new java.util.HashMap();
+
+ if(isEditing())
+ {
+ getCellEditor().stopCellEditing();
+ }
+ java.util.Vector vector = _model.getDataVector();
+
+ java.util.Iterator p = vector.iterator();
+ while(p.hasNext())
+ {
+ java.util.Vector row = (java.util.Vector)p.next();
+
+ //
+ // Eliminate rows with null or empty names
+ //
+ String name = (String)row.elementAt(0);
+ if(name != null)
+ {
+ if(_editNames)
+ {
+ name = name.trim();
+ }
+
+ if(!name.equals(""))
+ {
+ if(_editNames)
+ {
+ names.add(name);
+ }
+
+ Object val = row.elementAt(1);
+
+ //
+ // Eliminate entries with "default" value
+ //
+ if(val != _nullObject)
+ {
+ assert val != null;
+ values.put(name, val);
+ }
+ }
+ }
+ }
+ return values;
+ }
+
+ private final boolean _editNames;
+ private final Object _nullObject;
+ private DefaultTableModel _model;
+ private java.util.Vector _columnNames;
+ private boolean _editable = false;
+ private Editor _editor;
+ private TableCellEditor _cellEditor;
+}
+
+
|