diff options
Diffstat (limited to 'java/src/IceGridGUI/Application/ParameterValuesField.java')
-rwxr-xr-x | java/src/IceGridGUI/Application/ParameterValuesField.java | 198 |
1 files changed, 198 insertions, 0 deletions
diff --git a/java/src/IceGridGUI/Application/ParameterValuesField.java b/java/src/IceGridGUI/Application/ParameterValuesField.java new file mode 100755 index 00000000000..5959ca5bd95 --- /dev/null +++ b/java/src/IceGridGUI/Application/ParameterValuesField.java @@ -0,0 +1,198 @@ +// **********************************************************************
+//
+// 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 parameter values
+//
+
+public class ParameterValuesField extends JTable
+{
+ public ParameterValuesField(Editor editor)
+ {
+ _editor = editor;
+
+ _columnNames = new java.util.Vector(2);
+ _columnNames.add("Name");
+ _columnNames.add("Value");
+
+ _useDefaultCombo.setEditable(true);
+ _notSetCombo.setEditable(true);
+ }
+
+ public void set(java.util.List names,
+ java.util.Map values,
+ java.util.Map defaultValues,
+ final Utils.Resolver resolver)
+ {
+ //
+ // Transform map into vector of vectors
+ //
+ java.util.Vector vector = new java.util.Vector(names.size());
+ java.util.Iterator p = names.iterator();
+
+ _hasDefault = new boolean[names.size()];
+ int i = 0;
+
+ while(p.hasNext())
+ {
+ java.util.Vector row = new java.util.Vector(2);
+ String name = (String)p.next();
+ row.add(name);
+
+ _hasDefault[i] = (defaultValues.get(name) != null);
+
+ Object val = values.get(name);
+ if(val == null)
+ {
+ row.add(_hasDefault[i] ? _useDefault : _notSet);
+ }
+ else
+ {
+ row.add(Utils.substitute((String)val, resolver));
+ }
+ vector.add(row);
+ i++;
+ }
+
+ _model = new DefaultTableModel(vector, _columnNames)
+ {
+ public boolean isCellEditable(int row, int column)
+ {
+ if(resolver == null)
+ {
+ return column > 0;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ };
+
+ _model.addTableModelListener(new TableModelListener()
+ {
+ public void tableChanged(TableModelEvent e)
+ {
+ _editor.updated();
+ }
+ });
+ setModel(_model);
+
+ setCellSelectionEnabled(resolver == null);
+ setOpaque(resolver == null);
+ setPreferredScrollableViewportSize(getPreferredSize());
+
+ DefaultTableCellRenderer cr = (DefaultTableCellRenderer)
+ getDefaultRenderer(String.class);
+ cr.setOpaque(resolver == null);
+ }
+
+
+ public java.util.Map getValues()
+ {
+ 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);
+ assert name != null;
+
+ Object val = row.elementAt(1);
+
+ //
+ // Eliminate entries with default or not set value
+ //
+ if(val != _useDefault && val != _notSet)
+ {
+ assert val != null;
+ values.put(name, val);
+ }
+ }
+ return values;
+ }
+
+ public TableCellEditor getCellEditor(int row,
+ int column)
+ {
+ if(column == 1)
+ {
+ return _hasDefault[row] ? _useDefaultEditor : _notSetEditor;
+ }
+ else
+ {
+ return super.getCellEditor(row, column);
+ }
+ }
+
+
+ private static final Object _useDefault = new Object()
+ {
+ public String toString()
+ {
+ return "Use default";
+ }
+ };
+
+ private static final Object _notSet = new Object()
+ {
+ public String toString()
+ {
+ return "Not set";
+ }
+ };
+
+ private JComboBox _useDefaultCombo = new JComboBox(
+ new Object[]{_useDefault});
+
+ private JComboBox _notSetCombo = new JComboBox(
+ new Object[]{_notSet});
+
+ private TableCellEditor _useDefaultEditor = new DefaultCellEditor(_useDefaultCombo);
+ private TableCellEditor _notSetEditor = new DefaultCellEditor(_notSetCombo);
+
+ private DefaultTableModel _model;
+ private java.util.Vector _columnNames;
+ private Editor _editor;
+
+ private boolean[] _hasDefault;
+}
+
+
|