From 004458bb854fe4376fe35ec55d7f08853e08895b Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Wed, 21 May 2008 15:21:58 +0000 Subject: JTable editor better now. --- sources/prefs/editors/VSEditorTable.java | 53 +++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 5 deletions(-) (limited to 'sources/prefs/editors/VSEditorTable.java') diff --git a/sources/prefs/editors/VSEditorTable.java b/sources/prefs/editors/VSEditorTable.java index 874abaa..ef4488f 100644 --- a/sources/prefs/editors/VSEditorTable.java +++ b/sources/prefs/editors/VSEditorTable.java @@ -10,6 +10,7 @@ import javax.swing.table.*; import prefs.*; public class VSEditorTable extends JTable { + private static final int MIN_ROWS = 20; private VSPrefs prefs; private ArrayList nodes; private VSEditorTableModel model; @@ -30,17 +31,18 @@ public class VSEditorTable extends JTable { public Component getComponent() { return comp; } + + public Component getRendererComponent() { + return comp; + } } - private class VSEditorTableModel extends AbstractTableModel { + private class VSEditorTableModel extends AbstractTableModel implements TableCellRenderer { public VSEditorTableModel() { } public String getColumnName(int col) { - if (col == 0) - return prefs.getString("lang.variable"); - - return prefs.getString("lang.value"); + return ""; } public int getRowCount() { @@ -69,13 +71,54 @@ public class VSEditorTable extends JTable { public void setValueAt(Object value, int row, int col) { } + + public Component getTableCellRendererComponent(JTable table, + Object object, boolean isSelected, boolean hasFocus, int + row, int col) { + + VSNode node = nodes.get(row); + + if (col == 0) { + JTextField field = new JTextField(" "+node.getKey()+":"); + field.setBorder(null); + field.setEditable(false); + field.setBackground(Color.WHITE); + return field; + } + + return node.getRendererComponent(); + } + } + + private class VSTableCellEditor extends AbstractCellEditor implements TableCellEditor { + + public Component getTableCellEditorComponent(JTable table, Object object, + boolean isSelected, int row, int col) { + return nodes.get(row).getComponent(); + } + + public Object getCellEditorValue() { + return new String(""); } + } public VSEditorTable(VSPrefs prefs) { this.prefs = prefs; this.nodes = new ArrayList(); this.model = new VSEditorTableModel(); setModel(model); + setDefaultRenderer(Object.class, model); + setDefaultEditor(Object.class, new VSTableCellEditor()); + setIntercellSpacing(new Dimension(5, 5)); + setRowHeight(25); + setBackground(Color.WHITE); + getTableHeader().setVisible(false); + TableColumn col = getColumnModel().getColumn(1); + col.setMaxWidth(90); + col.setResizable(false); + + col = getColumnModel().getColumn(0); + col.sizeWidthToFit(); } public void addVariable(String key, Component comp) { -- cgit v1.2.3