diff options
Diffstat (limited to 'java/src/IceGridGUI/Application/ParametersField.java')
-rw-r--r-- | java/src/IceGridGUI/Application/ParametersField.java | 179 |
1 files changed, 179 insertions, 0 deletions
diff --git a/java/src/IceGridGUI/Application/ParametersField.java b/java/src/IceGridGUI/Application/ParametersField.java new file mode 100644 index 00000000000..c922e6cb540 --- /dev/null +++ b/java/src/IceGridGUI/Application/ParametersField.java @@ -0,0 +1,179 @@ +// ********************************************************************** +// +// Copyright (c) 2003-2011 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) + { + _editor = editor; + + _columnNames = new java.util.Vector<String>(2); + _columnNames.add("Name"); + _columnNames.add("Default value"); + + JComboBox comboBox = new JComboBox(new Object[]{_noDefault}); + comboBox.setEditable(true); + _cellEditor = new DefaultCellEditor(comboBox); + + Action deleteRow = new AbstractAction("Delete selected row(s)") + { + public void actionPerformed(ActionEvent e) + { + 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<String> names, java.util.Map<String, String> values) + { + // + // Transform map into vector of vectors + // + java.util.Vector<java.util.Vector<String>> vector = + new java.util.Vector<java.util.Vector<String>>(names.size()); + for(String name : names) + { + java.util.Vector<String> row = new java.util.Vector<String>(2); + + row.add(name); + + String val = values.get(name); + if(val == null) + { + row.add(_noDefault); + } + else + { + row.add(val); + } + vector.add(row); + } + + java.util.Vector<String> newRow = new java.util.Vector<String>(2); + newRow.add(""); + newRow.add(_noDefault); + vector.add(newRow); + + _model = new DefaultTableModel(vector, _columnNames); + + _model.addTableModelListener(new TableModelListener() + { + public void tableChanged(TableModelEvent e) + { + Object lastKey = _model.getValueAt(_model.getRowCount() - 1 , 0); + if(lastKey != null && !lastKey.equals("")) + { + _model.addRow(new Object[]{"", _noDefault}); + } + + _editor.updated(); + } + }); + setModel(_model); + + TableColumn valColumn = getColumnModel().getColumn(1); + valColumn.setCellEditor(_cellEditor); + + setPreferredScrollableViewportSize(getPreferredSize()); + } + + public java.util.Map<String, String> get(java.util.List<String> names) + { + assert names != null; + + java.util.Map<String, String> values = new java.util.HashMap<String, String>(); + + if(isEditing()) + { + getCellEditor().stopCellEditing(); + } + @SuppressWarnings("unchecked") + java.util.Vector<java.util.Vector<String>> vector = + (java.util.Vector<java.util.Vector<String>>)_model.getDataVector(); + + for(java.util.Vector<String> row : vector) + { + // + // Eliminate rows with null or empty names + // + String name = row.elementAt(0); + if(name != null) + { + name = name.trim(); + + if(!name.equals("")) + { + names.add(name); + + String val = row.elementAt(1); + + // + // Eliminate entries with "default" value + // + if(val != _noDefault) + { + assert val != null; + values.put(name, val); + } + } + } + } + return values; + } + + private final String _noDefault = "No default"; + + private DefaultTableModel _model; + private java.util.Vector<String> _columnNames; + private Editor _editor; + private TableCellEditor _cellEditor; +} |