From: <cpm...@us...> - 2008-02-23 03:34:16
|
Revision: 5264 http://pcgen.svn.sourceforge.net/pcgen/?rev=5264&view=rev Author: cpmeister Date: 2008-02-22 19:34:22 -0800 (Fri, 22 Feb 2008) Log Message: ----------- Utilities update Modified Paths: -------------- branches/cdomui/code/src/java/pcgen/gui/proto/editor/PlayerCharacterEditor.java branches/cdomui/code/src/java/pcgen/gui/proto/util/TreeViewHeaderRenderer.java branches/cdomui/code/src/java/pcgen/gui/util/JTreeTable.java branches/cdomui/code/src/java/pcgen/gui/util/ModelSorter.java branches/cdomui/code/src/java/pcgen/gui/util/SortableModel.java branches/cdomui/code/src/java/pcgen/gui/util/SortingHeaderRenderer.java branches/cdomui/code/src/java/pcgen/gui/util/treetable/AbstractTreeTableModel.java branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultSortableTreeTableNode.java branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultTreeTableNode.java branches/cdomui/code/src/java/pcgen/gui/util/treetable/TreeTableNode.java branches/cdomui/code/src/java/pcgen/gui/util/treeview/DataViewColumn.java branches/cdomui/code/src/java/pcgen/gui/util/treeview/TreeViewTableModel.java Added Paths: ----------- branches/cdomui/code/src/java/pcgen/gui/proto/util/JSortableTableHeader.java branches/cdomui/code/src/java/pcgen/gui/util/JSortableTable.java branches/cdomui/code/src/java/pcgen/gui/util/JSortableTreeTable.java branches/cdomui/code/src/java/pcgen/gui/util/table/ branches/cdomui/code/src/java/pcgen/gui/util/table/DefaultSortableTableModel.java branches/cdomui/code/src/java/pcgen/gui/util/table/SortableTableModel.java branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultSortableTreeTableModel.java branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultTreeTableModel.java branches/cdomui/code/src/java/pcgen/gui/util/treeview/DefaultDataViewColumn.java Removed Paths: ------------- branches/cdomui/code/src/java/pcgen/gui/proto/util/JTreeViewTableHeader.java branches/cdomui/code/src/java/pcgen/gui/util/TreeTableModelAdapter.java Modified: branches/cdomui/code/src/java/pcgen/gui/proto/editor/PlayerCharacterEditor.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/proto/editor/PlayerCharacterEditor.java 2008-02-22 23:56:50 UTC (rev 5263) +++ branches/cdomui/code/src/java/pcgen/gui/proto/editor/PlayerCharacterEditor.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -24,7 +24,7 @@ import javax.swing.table.TableColumnModel; import pcgen.gui.util.JTreeViewTable; import pcgen.gui.util.treeview.DataView; -import pcgen.gui.util.treeview.DataViewColumn; +import pcgen.gui.util.treeview.DefaultDataViewColumn; import pcgen.gui.util.treeview.TreeView; import pcgen.gui.util.treeview.TreeViewModel; import pcgen.gui.util.treeview.TreeViewPath; Copied: branches/cdomui/code/src/java/pcgen/gui/proto/util/JSortableTableHeader.java (from rev 5249, branches/cdomui/code/src/java/pcgen/gui/proto/util/JTreeViewTableHeader.java) =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/proto/util/JSortableTableHeader.java (rev 0) +++ branches/cdomui/code/src/java/pcgen/gui/proto/util/JSortableTableHeader.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -0,0 +1,83 @@ +/* + * JSortableTableHeader.java + * Copyright 2008 (C) Connor Petty <mis...@gm...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on Feb 16, 2008, 8:27:21 PM + */ +package pcgen.gui.proto.util; + +import pcgen.gui.util.JTreeViewTable; +import java.awt.Component; +import java.awt.event.MouseEvent; +import java.awt.event.MouseMotionListener; +import javax.swing.table.TableColumn; +import pcgen.gui.util.SortingHeaderRenderer; +import javax.swing.JTable; +import javax.swing.table.JTableHeader; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumnModel; +import pcgen.gui.util.treeview.TreeViewTableModel; + +/** + * + * @author Connor Petty<mis...@gm...> + */ +public class JSortableTableHeader extends JTableHeader +{ + + private TreeViewTableModel tableModel; + private TableColumn trackedColumn; + + public JSortableTableHeader(JTreeViewTable table) + { + super(table.getColumnModel()); + addMouseMotionListener(new ColumnTracker()); + tableModel = table.getTreeViewTableModel(); + } + + @Override + public TableCellRenderer createDefaultRenderer() + { + return new SortingHeaderRenderer(this); + } + + public TableColumn getTrackedColumn() + { + return trackedColumn; + } + + public TreeViewTableModel getTableModel() + { + return tableModel; + } + + private final class ColumnTracker implements MouseMotionListener + { + + public void mouseDragged(MouseEvent e) + { + + } + + public void mouseMoved(MouseEvent e) + { + TableColumnModel model = getColumnModel(); + trackedColumn = model.getColumn(model.getColumnIndexAtX(e.getX())); + } + + } +} Deleted: branches/cdomui/code/src/java/pcgen/gui/proto/util/JTreeViewTableHeader.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/proto/util/JTreeViewTableHeader.java 2008-02-22 23:56:50 UTC (rev 5263) +++ branches/cdomui/code/src/java/pcgen/gui/proto/util/JTreeViewTableHeader.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -1,114 +0,0 @@ -/* - * JTreeViewTableHeader.java - * Copyright 2008 (C) Connor Petty <mis...@gm...> - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - * - * Created on Feb 16, 2008, 8:27:21 PM - */ -package pcgen.gui.proto.util; - -import pcgen.gui.util.JTreeViewTable; -import java.awt.Component; -import java.awt.event.MouseEvent; -import java.awt.event.MouseMotionListener; -import javax.swing.table.TableColumn; -import pcgen.gui.util.SortingHeaderRenderer; -import javax.swing.JTable; -import javax.swing.table.JTableHeader; -import javax.swing.table.TableCellRenderer; -import javax.swing.table.TableColumnModel; -import pcgen.gui.util.treeview.TreeViewTableModel; - -/** - * - * @author Connor Petty<mis...@gm...> - */ -public class JTreeViewTableHeader extends JTableHeader -{ - - private TreeViewTableModel tableModel; - private TableColumn trackedColumn; - - public JTreeViewTableHeader(JTreeViewTable table) - { - super(table.getColumnModel()); - addMouseMotionListener(new ColumnTracker()); - tableModel = table.getTreeViewTableModel(); - } - - @Override - public TableCellRenderer createDefaultRenderer() - { - return new CompoundHeaderRenderer(); - } - - public TableColumn getTrackedColumn() - { - return trackedColumn; - } - - public TreeViewTableModel getTableModel() - { - return tableModel; - } - - private final class ColumnTracker implements MouseMotionListener - { - - public void mouseDragged(MouseEvent e) - { - - } - - public void mouseMoved(MouseEvent e) - { - TableColumnModel model = getColumnModel(); - trackedColumn = model.getColumn(model.getColumnIndexAtX(e.getX())); - } - - } - - private final class CompoundHeaderRenderer implements TableCellRenderer - { - - private TreeViewHeaderRenderer treeRenderer = new TreeViewHeaderRenderer(JTreeViewTableHeader.this); - private SortingHeaderRenderer sortRenderer = new SortingHeaderRenderer(JTreeViewTableHeader.this); - - public Component getTableCellRendererComponent(JTable table, - Object value, - boolean isSelected, - boolean hasFocus, - int row, - int column) - { - if (value == null) - { - return treeRenderer.getTableCellRendererComponent(table, value, - isSelected, - hasFocus, row, - column); - } - else - { - return sortRenderer.getTableCellRendererComponent(table, value, - isSelected, - hasFocus, row, - column); - } - } - - } -} Modified: branches/cdomui/code/src/java/pcgen/gui/proto/util/TreeViewHeaderRenderer.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/proto/util/TreeViewHeaderRenderer.java 2008-02-22 23:56:50 UTC (rev 5263) +++ branches/cdomui/code/src/java/pcgen/gui/proto/util/TreeViewHeaderRenderer.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -29,7 +29,7 @@ public class TreeViewHeaderRenderer extends SortingHeaderRenderer { - public TreeViewHeaderRenderer(JTreeViewTableHeader header) + public TreeViewHeaderRenderer(JSortableTableHeader header) { super(header); } Added: branches/cdomui/code/src/java/pcgen/gui/util/JSortableTable.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/JSortableTable.java (rev 0) +++ branches/cdomui/code/src/java/pcgen/gui/util/JSortableTable.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -0,0 +1,87 @@ +/* + * JSortableTable.java + * Copyright 2008 (C) Connor Petty <mis...@gm...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on Feb 22, 2008, 3:42:02 PM + */ +package pcgen.gui.util; + +import javax.swing.JTable; +import javax.swing.table.TableModel; +import pcgen.gui.util.table.DefaultSortableTableModel; +import pcgen.gui.util.table.SortableTableModel; + +/** + * + * @author Connor Petty <mis...@gm...> + */ +public class JSortableTable extends JTable +{ + + private ModelSorter sorter; + + public JSortableTable() + { + super(); + } + + public JSortableTable(TableModel model) + { + super(model); + } + + @Override + public void setModel(TableModel model) + { + if (model instanceof SortableTableModel) + { + super.setModel(model); + } + else + { + super.setModel(new DefaultSortableTableModel(model)); + } + } + + @Override + @SuppressWarnings("unchecked") + public SortableTableModel getModel() + { + return (SortableTableModel) super.getModel(); + } + + public ModelSorter getModelSorter() + { + return sorter; + } + + public void setModelSorter(ModelSorter sorter) + { + ModelSorter old = this.sorter; + if (old != null) + { + old.setModel(null); + } + if (sorter != null) + { + sorter.setModel(getModel()); + } + this.sorter = sorter; + //TODO: do something with old + } + +} Added: branches/cdomui/code/src/java/pcgen/gui/util/JSortableTreeTable.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/JSortableTreeTable.java (rev 0) +++ branches/cdomui/code/src/java/pcgen/gui/util/JSortableTreeTable.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -0,0 +1,119 @@ +/* + * JSortableTreeTable.java + * Copyright 2008 (C) Connor Petty <mis...@gm...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on Feb 22, 2008, 4:10:15 PM + */ +package pcgen.gui.util; + +import java.util.Comparator; +import java.util.List; +import javax.swing.JTree; +import pcgen.gui.util.table.SortableTableModel; +import pcgen.gui.util.treetable.DefaultSortableTreeTableModel; +import pcgen.gui.util.treetable.SortableTreeTableModel; +import pcgen.gui.util.treetable.TreeTableModel; +import pcgen.util.Comparators; + +/** + * + * @author Connor Petty <mis...@gm...> + */ +public class JSortableTreeTable extends JTreeTable +{ + + private ModelSorter sorter; + + public JSortableTreeTable() + { + this(null); + } + + public JSortableTreeTable(SortableTreeTableModel model) + { + super(model); + } + + @Override + protected TreeTableModelAdapter createDefaultTreeTableModelAdapter(TreeTableModel treeTableModel, + JTree tree) + { + return new SortableTreeTableModelAdapter((SortableTreeTableModel) treeTableModel, + tree); + } + + public ModelSorter getModelSorter() + { + return sorter; + } + + @Override + public void setTreeTableModel(TreeTableModel model) + { + if (model instanceof SortableTreeTableModel) + { + super.setTreeTableModel(model); + } + else + { + super.setTreeTableModel(new DefaultSortableTreeTableModel(model)); + } + } + + public void setModelSorter(ModelSorter sorter) + { + ModelSorter old = this.sorter; + if (old != null) + { + old.setModel(null); + } + if (sorter != null) + { + sorter.setModel((SortableTreeTableModelAdapter) getModel()); + } + this.sorter = sorter; + //TODO: do something with old + } + + private static final class SortableTreeTableModelAdapter extends TreeTableModelAdapter + implements SortableTableModel + { + + SortableTreeTableModelAdapter(SortableTreeTableModel model, JTree tree) + { + super(model, tree); + } + + public void sortModel(Comparator<List<?>> comparator) + { + if (treeTableModel != null) + { + ((SortableTreeTableModel) treeTableModel).sortModel(comparator); + } + } + + public Comparator<?> getComparator(int column) + { + if (treeTableModel != null) + { + return ((SortableTreeTableModel) treeTableModel).getComparator(column); + } + return Comparators.toStringComparator(); + } + + } +} Modified: branches/cdomui/code/src/java/pcgen/gui/util/JTreeTable.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/JTreeTable.java 2008-02-22 23:56:50 UTC (rev 5263) +++ branches/cdomui/code/src/java/pcgen/gui/util/JTreeTable.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -39,13 +39,21 @@ import javax.swing.event.CellEditorListener; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import javax.swing.event.TreeExpansionEvent; +import javax.swing.event.TreeExpansionListener; +import javax.swing.event.TreeModelEvent; +import javax.swing.event.TreeModelListener; +import javax.swing.table.AbstractTableModel; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableModel; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.DefaultTreeSelectionModel; import javax.swing.tree.TreeCellRenderer; import javax.swing.tree.TreeModel; import javax.swing.tree.TreePath; +import pcgen.gui.util.treetable.DefaultTreeTableModel; +import pcgen.gui.util.treetable.TreeTableNode; /** * This example shows how to create a simple JTreeTable component, @@ -97,7 +105,7 @@ // Create the tree. It will be used as a renderer and editor. tree = new TreeTableCellRenderer(treeTableModel); tree.setRootVisible(false); - adapter = new TreeTableModelAdapter(treeTableModel, tree); + adapter = createDefaultTreeTableModelAdapter(treeTableModel, tree); // Install a tableModel representing the visible rows in tree. super.setModel(adapter); @@ -109,8 +117,8 @@ setSelectionModel(selectionWrapper.getListSelectionModel()); // Install the tree editor renderer and editor. - setDefaultRenderer(TreeTableModel.class, tree); - setDefaultEditor(TreeTableModel.class, new TreeTableCellEditor()); + setDefaultRenderer(TreeTableNode.class, tree); + setDefaultEditor(TreeTableNode.class, new TreeTableCellEditor()); // No grid. setShowGrid(false); @@ -132,6 +140,12 @@ } } + protected TreeTableModelAdapter createDefaultTreeTableModelAdapter(TreeTableModel treeTableModel, + JTree tree) + { + return new TreeTableModelAdapter(treeTableModel, tree); + } + @SuppressWarnings("unchecked") public TreeTableModel getTreeTableModel() { @@ -144,6 +158,22 @@ adapter.setTreeTableModel(model); } + @Override + public void setModel(TableModel model) + { + if (model instanceof TreeTableModelAdapter) + { + adapter.setTreeTableModel(null); + adapter = (TreeTableModelAdapter) model; + adapter.setTreeTableModel((TreeTableModel)tree.getModel()); + super.setModel(model); + } + else + { + setTreeTableModel(new DefaultTreeTableModel(model)); + } + } + /** * Workaround for BasicTableUI anomaly. Make sure the UI never tries to * paint the editor. The UI currently uses different techniques to @@ -155,7 +185,7 @@ @Override public int getEditingRow() { - return (getColumnClass(editingColumn) == TreeTableModel.class) ? (-1) + return (getColumnClass(editingColumn) == TreeTableNode.class) ? (-1) : editingRow; } @@ -268,6 +298,175 @@ } /** + * This is a wrapper class takes a TreeTableModel and implements + * the table model interface. The implementation is trivial, with + * all of the event dispatching support provided by the superclass: + * the AbstractTableModel. + * + * @version 1.2 10/27/98 + * + * @author Philip Milne + * @author Scott Violet + */ + protected static class TreeTableModelAdapter extends AbstractTableModel + { + + private JTree tree; + protected TreeTableModel treeTableModel; + private TreeModelListener modelListener; + + /** + * Constructor + * @param treeTableModel + * @param tree + */ + TreeTableModelAdapter(TreeTableModel treeTableModel, JTree tree) + { + this.tree = tree; + this.treeTableModel = treeTableModel; + + tree.addTreeExpansionListener(new TreeExpansionListener() + { + // Don't use fireTableRowsInserted() here; + // the selection model would get updated twice. + public void treeExpanded(TreeExpansionEvent event) + { + fireTableDataChanged(); + } + + public void treeCollapsed(TreeExpansionEvent event) + { + fireTableDataChanged(); + } + + }); + + /** + * Install a TreeModelListener that can update the table when + * tree changes. We use delayedFireTableDataChanged as we can + * not be guaranteed the tree will have finished processing + * the event before us. + **/ + modelListener = new TreeModelListener() + { + + public void treeNodesChanged(TreeModelEvent e) + { + fireTableDataChanged(); + } + + public void treeNodesInserted(TreeModelEvent e) + { + fireTableDataChanged(); + } + + public void treeNodesRemoved(TreeModelEvent e) + { + fireTableDataChanged(); + } + + public void treeStructureChanged(TreeModelEvent e) + { + fireTableStructureChanged(); + } + + }; + if (treeTableModel != null) + { + treeTableModel.addTreeModelListener(modelListener); + } + } + + public void setTreeTableModel(TreeTableModel model) + { + if (treeTableModel != null) + { + treeTableModel.removeTreeModelListener(modelListener); + } + treeTableModel = model; + if (treeTableModel != null) + { + treeTableModel.addTreeModelListener(modelListener); + } + } + + @Override + public boolean isCellEditable(int row, int column) + { + if (treeTableModel == null) + { + return false; + } + return treeTableModel.isCellEditable(nodeForRow(row), column); + } + + @Override + public Class<?> getColumnClass(int column) + { + if (treeTableModel == null) + { + return Object.class; + } + return treeTableModel.getColumnClass(column); + } + + // Wrappers, implementing TableModel interface. + public int getColumnCount() + { + if (treeTableModel == null) + { + return 0; + } + return treeTableModel.getColumnCount(); + } + + @Override + public String getColumnName(int column) + { + if (treeTableModel == null) + { + return null; + } + return treeTableModel.getColumnName(column); + } + + public int getRowCount() + { + return tree.getRowCount(); + } + + @Override + public void setValueAt(Object value, int row, int column) + { + if (treeTableModel == null) + { + return; + } + treeTableModel.setValueAt(value, nodeForRow(row), column); + } + + public Object getValueAt(int row, int column) + { + if (treeTableModel == null) + { + return null; + } + return treeTableModel.getValueAt(nodeForRow(row), column); + } + + private Object nodeForRow(int row) + { + TreePath treePath = tree.getPathForRow(row); + if (treePath != null) + { + return treePath.getLastPathComponent(); + } + return null; + } + + } + + /** * A TreeCellRenderer that displays a JTree. **/ final class TreeTableCellRenderer extends JTree implements @@ -588,7 +787,7 @@ { for (int counter = getColumnCount() - 1; counter >= 0; counter--) { - if (getColumnClass(counter) == TreeTableModel.class) + if (getColumnClass(counter) == TreeTableNode.class) { MouseEvent me = (MouseEvent) e; MouseEvent newME = Modified: branches/cdomui/code/src/java/pcgen/gui/util/ModelSorter.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/ModelSorter.java 2008-02-22 23:56:50 UTC (rev 5263) +++ branches/cdomui/code/src/java/pcgen/gui/util/ModelSorter.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -37,7 +37,6 @@ private final EventListenerList listenerList = new EventListenerList(); private final RowComparator rowComparator = new RowComparator(); private List<? extends SortingPriority> columnkeys = null; - private Map<Integer, Comparator<?>> comparatorMap = null; private SortableModel model; public void addTableSorterListener(ModelSorterListener listener) @@ -62,24 +61,6 @@ listenerList.remove(ModelSorterListener.class, listener); } - public Comparator<?> getComparator(int column) - { - if (comparatorMap != null) - { - return comparatorMap.get(column); - } - return null; - } - - public void setComparator(Comparator<?> comparator, int column) - { - if (comparatorMap == null) - { - comparatorMap = new HashMap<Integer, Comparator<?>>(); - } - comparatorMap.put(column, comparator); - } - public void toggleSort(int column) { List<SortingPriority> list = new ArrayList<SortingPriority>(getSortingPriority()); @@ -111,7 +92,7 @@ public void setSortingPriority(List<? extends SortingPriority> keys) { - this.columnkeys = new ArrayList(keys); + this.columnkeys = new ArrayList<SortingPriority>(keys); sort(); } @@ -134,6 +115,7 @@ private final class RowComparator implements Comparator<List<?>> { + @SuppressWarnings("unchecked") public int compare(List<?> o1, List<?> o2) { @@ -145,7 +127,7 @@ continue; } int column = priority.getColumn(); - Comparator comparator = getComparator(column); + Comparator comparator = model.getComparator(column); int ret = comparator.compare(o1.get(column), o2.get(column)); if (priority.getMode() == SortMode.DESCENDING) { Modified: branches/cdomui/code/src/java/pcgen/gui/util/SortableModel.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/SortableModel.java 2008-02-22 23:56:50 UTC (rev 5263) +++ branches/cdomui/code/src/java/pcgen/gui/util/SortableModel.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -31,4 +31,5 @@ public interface SortableModel { void sortModel(Comparator<List<?>> comparator); + Comparator<?> getComparator(int column); } Modified: branches/cdomui/code/src/java/pcgen/gui/util/SortingHeaderRenderer.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/SortingHeaderRenderer.java 2008-02-22 23:56:50 UTC (rev 5263) +++ branches/cdomui/code/src/java/pcgen/gui/util/SortingHeaderRenderer.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -34,11 +34,12 @@ import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JTable; +import javax.swing.table.JTableHeader; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; -import pcgen.gui.proto.util.JTreeViewTableHeader; -import pcgen.gui.util.treeview.DataViewColumn; +import pcgen.gui.proto.util.JSortableTableHeader; +import pcgen.gui.util.treeview.DefaultDataViewColumn; import pcgen.gui.util.treeview.TreeViewTableModel; import pcgen.util.Comparators; @@ -52,10 +53,10 @@ private static final ButtonModel defaultModel = new DefaultButtonModel(); private final ButtonModel usedModel = new DefaultButtonModel(); - private final JTreeViewTableHeader header; + private final JSortableTableHeader header; private Map<TableColumn, Icon> iconMap = Collections.emptyMap(); - public SortingHeaderRenderer(final JTreeViewTableHeader header) + public SortingHeaderRenderer(final JSortableTableHeader header) { this.header = header; Deleted: branches/cdomui/code/src/java/pcgen/gui/util/TreeTableModelAdapter.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/TreeTableModelAdapter.java 2008-02-22 23:56:50 UTC (rev 5263) +++ branches/cdomui/code/src/java/pcgen/gui/util/TreeTableModelAdapter.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -1,191 +0,0 @@ -/* - * @(#)TreeTableModelAdapter.java 1.2 98/10/27 - * - * Copyright 1997, 1998 by Sun Microsystems, Inc., - * 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. - * All rights reserved. - * - * This software is the confidential and proprietary information - * of Sun Microsystems, Inc. ("Confidential Information"). You - * shall not disclose such Confidential Information and shall use - * it only in accordance with the terms of the license agreement - * you entered into with Sun. - */ -package pcgen.gui.util; - -import pcgen.gui.util.treetable.TreeTableModel; -import javax.swing.JTree; -import javax.swing.event.TreeExpansionEvent; -import javax.swing.event.TreeExpansionListener; -import javax.swing.event.TreeModelEvent; -import javax.swing.event.TreeModelListener; -import javax.swing.table.AbstractTableModel; -import javax.swing.tree.TreePath; - -/** - * This is a wrapper class takes a TreeTableModel and implements - * the table model interface. The implementation is trivial, with - * all of the event dispatching support provided by the superclass: - * the AbstractTableModel. - * - * @version 1.2 10/27/98 - * - * @author Philip Milne - * @author Scott Violet - */ -final class TreeTableModelAdapter extends AbstractTableModel -{ - - private JTree tree; - private TreeTableModel treeTableModel; - private TreeModelListener modelListener; - - /** - * Constructor - * @param treeTableModel - * @param tree - */ - public TreeTableModelAdapter(TreeTableModel treeTableModel, JTree tree) - { - this.tree = tree; - this.treeTableModel = treeTableModel; - - tree.addTreeExpansionListener(new TreeExpansionListener() - { - // Don't use fireTableRowsInserted() here; - // the selection model would get updated twice. - public void treeExpanded(TreeExpansionEvent event) - { - fireTableDataChanged(); - } - - public void treeCollapsed(TreeExpansionEvent event) - { - fireTableDataChanged(); - } - - }); - - /** - * Install a TreeModelListener that can update the table when - * tree changes. We use delayedFireTableDataChanged as we can - * not be guaranteed the tree will have finished processing - * the event before us. - **/ - modelListener = new TreeModelListener() - { - - public void treeNodesChanged(TreeModelEvent e) - { - fireTableDataChanged(); - } - - public void treeNodesInserted(TreeModelEvent e) - { - fireTableDataChanged(); - } - - public void treeNodesRemoved(TreeModelEvent e) - { - fireTableDataChanged(); - } - - public void treeStructureChanged(TreeModelEvent e) - { - fireTableStructureChanged(); - } - - }; - if (treeTableModel != null) - { - treeTableModel.addTreeModelListener(modelListener); - } - } - - public void setTreeTableModel(TreeTableModel model) - { - if (treeTableModel != null) - { - treeTableModel.removeTreeModelListener(modelListener); - } - treeTableModel = model; - if (treeTableModel != null) - { - treeTableModel.addTreeModelListener(modelListener); - } - } - - @Override - public boolean isCellEditable(int row, int column) - { - if (treeTableModel == null) - { - return false; - } - return treeTableModel.isCellEditable(nodeForRow(row), column); - } - - public Class<?> getColumnClass(int column) - { - if (treeTableModel == null) - { - return Object.class; - } - return treeTableModel.getColumnClass(column); - } - - // Wrappers, implementing TableModel interface. - public int getColumnCount() - { - if (treeTableModel == null) - { - return 0; - } - return treeTableModel.getColumnCount(); - } - - @Override - public String getColumnName(int column) - { - if (treeTableModel == null) - { - return null; - } - return treeTableModel.getColumnName(column); - } - - public int getRowCount() - { - return tree.getRowCount(); - } - - @Override - public void setValueAt(Object value, int row, int column) - { - if (treeTableModel == null) - { - return; - } - treeTableModel.setValueAt(value, nodeForRow(row), column); - } - - public Object getValueAt(int row, int column) - { - if (treeTableModel == null) - { - return null; - } - return treeTableModel.getValueAt(nodeForRow(row), column); - } - - public Object nodeForRow(int row) - { - TreePath treePath = tree.getPathForRow(row); - if (treePath != null) - { - return treePath.getLastPathComponent(); - } - return null; - } - -} Added: branches/cdomui/code/src/java/pcgen/gui/util/table/DefaultSortableTableModel.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/table/DefaultSortableTableModel.java (rev 0) +++ branches/cdomui/code/src/java/pcgen/gui/util/table/DefaultSortableTableModel.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -0,0 +1,176 @@ +/* + * DefaultSortableTableModel.java + * Copyright 2008 (C) Connor Petty <mis...@gm...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on Feb 22, 2008, 3:08:09 PM + */ +package pcgen.gui.util.table; + +import pcgen.gui.util.*; +import java.util.Collections; +import java.util.Comparator; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Vector; +import javax.swing.table.DefaultTableModel; +import javax.swing.table.TableModel; +import pcgen.util.Comparators; + +/** + * + * @author Connor Petty <mis...@gm...> + */ +public class DefaultSortableTableModel extends DefaultTableModel implements SortableTableModel +{ + + private Map<Integer, Comparator<?>> comparatorMap = null; + + /** + * Constructs a default <code>DefaultSortableTableModel</code> + * which is a table of zero columns and zero rows. + */ + public DefaultSortableTableModel() + { + super(); + } + + /** + * Constructs a <code>DefaultSortableTableModel</code> with + * <code>rowCount</code> and <code>columnCount</code> of + * <code>null</code> object values. + * + * @param rowCount the number of rows the table holds + * @param columnCount the number of columns the table holds + * + * @see #setValueAt + */ + public DefaultSortableTableModel(int rowCount, int columnCount) + { + super(rowCount, columnCount); + } + + /** + * Constructs a <code>DefaultSortableTableModel</code> with as many columns + * as there are elements in <code>columnNames</code> + * and <code>rowCount</code> of <code>null</code> + * object values. Each column's name will be taken from + * the <code>columnNames</code> vector. + * + * @param columnNames <code>vector</code> containing the names + * of the new columns; if this is + * <code>null</code> then the model has no columns + * @param rowCount the number of rows the table holds + * @see #setDataVector + * @see #setValueAt + */ + public DefaultSortableTableModel(Vector columnNames, int rowCount) + { + super(columnNames, rowCount); + } + + /** + * Constructs a <code>DefaultSortableTableModel</code> with as many + * columns as there are elements in <code>columnNames</code> + * and <code>rowCount</code> of <code>null</code> + * object values. Each column's name will be taken from + * the <code>columnNames</code> array. + * + * @param columnNames <code>array</code> containing the names + * of the new columns; if this is + * <code>null</code> then the model has no columns + * @param rowCount the number of rows the table holds + * @see #setDataVector + * @see #setValueAt + */ + public DefaultSortableTableModel(Object[] columnNames, int rowCount) + { + super(columnNames, rowCount); + } + + /** + * Constructs a <code>DefaultSortableTableModel</code> and initializes the table + * by passing <code>data</code> and <code>columnNames</code> + * to the <code>setDataVector</code> method. + * + * @param data the data of the table, a <code>Vector</code> + * of <code>Vector</code>s of <code>Object</code> + * values + * @param columnNames <code>vector</code> containing the names + * of the new columns + * @see #getDataVector + * @see #setDataVector + */ + public DefaultSortableTableModel(Vector data, Vector columnNames) + { + super(data, columnNames); + } + + /** + * Constructs a <code>DefaultSortableTableModel</code> and initializes the table + * by passing <code>data</code> and <code>columnNames</code> + * to the <code>setDataVector</code> + * method. The first index in the <code>Object[][]</code> array is + * the row index and the second is the column index. + * + * @param data the data of the table + * @param columnNames the names of the columns + * @see #getDataVector + * @see #setDataVector + */ + public DefaultSortableTableModel(Object[][] data, Object[] columnNames) + { + super(data, columnNames); + } + + public DefaultSortableTableModel(TableModel model) + { + super(model.getRowCount(), model.getColumnCount()); + for (int x = 0; x < getRowCount(); x++) + { + for (int y = 0; y < getColumnCount(); y++) + { + setValueAt(model.getValueAt(x, y), x, y); + } + } + } + + @SuppressWarnings("unchecked") + public void sortModel(Comparator<List<?>> comparator) + { + Collections.sort(dataVector, comparator); + } + + public Comparator<?> getComparator(int column) + { + if (comparatorMap != null && comparatorMap.containsKey(column)) + { + return comparatorMap.get(column); + } + return Comparators.toStringComparator(); + } + + public void setComparator(int column, Comparator<?> comparator) + { + if (comparatorMap == null) + { + comparatorMap = new HashMap<Integer, Comparator<?>>(); + } + comparatorMap.put(column, comparator); + } + +} Added: branches/cdomui/code/src/java/pcgen/gui/util/table/SortableTableModel.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/table/SortableTableModel.java (rev 0) +++ branches/cdomui/code/src/java/pcgen/gui/util/table/SortableTableModel.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -0,0 +1,34 @@ +/* + * SortableTableModel.java + * Copyright 2008 (C) Connor Petty <mis...@gm...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on Feb 22, 2008, 3:26:34 PM + */ + +package pcgen.gui.util.table; + +import javax.swing.table.TableModel; +import pcgen.gui.util.SortableModel; + +/** + * + * @author Connor Petty <mis...@gm...> + */ +public interface SortableTableModel extends TableModel, SortableModel +{ + +} Modified: branches/cdomui/code/src/java/pcgen/gui/util/treetable/AbstractTreeTableModel.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/treetable/AbstractTreeTableModel.java 2008-02-22 23:56:50 UTC (rev 5263) +++ branches/cdomui/code/src/java/pcgen/gui/util/treetable/AbstractTreeTableModel.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -25,6 +25,11 @@ public abstract class AbstractTreeTableModel extends DefaultTreeModel implements TreeTableModel { + protected AbstractTreeTableModel() + { + this(null); + } + public AbstractTreeTableModel(TreeTableNode root) { super(root); @@ -36,7 +41,7 @@ */ public boolean isCellEditable(Object node, int column) { - return getColumnClass(column) == TreeTableModel.class; + return getColumnClass(column) == TreeTableNode.class; } public Class<?> getColumnClass(int column) Added: branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultSortableTreeTableModel.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultSortableTreeTableModel.java (rev 0) +++ branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultSortableTreeTableModel.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -0,0 +1,79 @@ +/* + * DefaultSortableTreeTableModel.java + * Copyright 2008 (C) Connor Petty <mis...@gm...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on Feb 22, 2008, 4:49:49 PM + */ +package pcgen.gui.util.treetable; + +import java.util.Comparator; +import java.util.List; +import javax.swing.table.TableModel; +import javax.swing.tree.TreeNode; +import pcgen.util.Comparators; + +/** + * + * @author Connor Petty <mis...@gm...> + */ +public class DefaultSortableTreeTableModel extends DefaultTreeTableModel + implements SortableTreeTableModel +{ + + protected DefaultSortableTreeTableModel() + { + super(); + } + + protected DefaultSortableTreeTableModel(SortableTreeTableNode root) + { + super(root); + } + + public DefaultSortableTreeTableModel(TableModel model) + { + super(model); + } + + public DefaultSortableTreeTableModel(TreeTableModel model) + { + super(model); + } + + @Override + protected TreeTableNode createDefaultTreeTableNode() + { + return new DefaultSortableTreeTableNode(); + } + + @Override + protected TreeTableNode createDefaultTreeTableNode(TreeNode node) + { + return new DefaultSortableTreeTableNode(node); + } + + public void sortModel(Comparator<List<?>> comparator) + { + ((SortableTreeTableNode) getRoot()).sortChildren(comparator); + } + + public Comparator<?> getComparator(int column) + { + return Comparators.toStringComparator(); + } + +} Modified: branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultSortableTreeTableNode.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultSortableTreeTableNode.java 2008-02-22 23:56:50 UTC (rev 5263) +++ branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultSortableTreeTableNode.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -26,6 +26,8 @@ import java.util.Vector; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.MutableTreeNode; +import javax.swing.tree.TreeNode; +import pcgen.util.UnboundedArrayList; /** * @@ -37,6 +39,34 @@ protected Vector<List<Object>> childData = null; + public DefaultSortableTreeTableNode() + { + super(); + } + + public DefaultSortableTreeTableNode(TreeNode node) + { + for (int x = 0; x < node.getChildCount(); x++) + { + TreeNode treeNode = node.getChildAt(x); + DefaultSortableTreeTableNode child = new DefaultSortableTreeTableNode(treeNode); + if (treeNode instanceof TreeTableNode) + { + TreeTableNode treeTableNode = (TreeTableNode) treeNode; + List<Object> data = treeTableNode.getValues(); + if (data != null) + { + data = new UnboundedArrayList<Object>(data); + } + add(child, data); + } + else + { + add(child); + } + } + } + @Override public void add(MutableTreeNode newChild) { @@ -87,7 +117,7 @@ return null; } - private List<Object> getData() + public List<Object> getValues() { DefaultSortableTreeTableNode parentNode = getSortableParent(); if (parentNode != null) @@ -108,7 +138,7 @@ public Object getValueAt(int column) { - List<Object> data = getData(); + List<Object> data = getValues(); if (data != null) { return data.get(column); @@ -118,7 +148,7 @@ public void setValueAt(Object value, int column) { - List<Object> data = getData(); + List<Object> data = getValues(); if (data != null) { data.set(column, value); @@ -172,7 +202,7 @@ public int compare(DefaultSortableTreeTableNode o1, DefaultSortableTreeTableNode o2) { - return comparator.compare(o1.getData(), o2.getData()); + return comparator.compare(o1.getValues(), o2.getValues()); } } Added: branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultTreeTableModel.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultTreeTableModel.java (rev 0) +++ branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultTreeTableModel.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -0,0 +1,121 @@ +/* + * DefaultTreeTableModel.java + * Copyright 2008 (C) Connor Petty <mis...@gm...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on Feb 22, 2008, 5:47:03 PM + */ +package pcgen.gui.util.treetable; + +import java.util.ArrayList; +import java.util.List; +import javax.swing.table.TableModel; +import javax.swing.tree.TreeNode; + +/** + * + * @author Connor Petty <mis...@gm...> + */ +public class DefaultTreeTableModel extends AbstractTreeTableModel +{ + + private List<Class<?>> columnClasses; + private List<String> columnNames; + private int columnCount; + + protected DefaultTreeTableModel() + { + super(); + } + + protected DefaultTreeTableModel(TreeTableNode root) + { + super(root); + } + + public DefaultTreeTableModel(TableModel tableModel) + { + super(null); + TreeTableNode rootNode = createDefaultTreeTableNode(); + columnCount = tableModel.getColumnCount(); + for (int x = 0; x < tableModel.getRowCount(); x++) + { + TreeTableNode child = createDefaultTreeTableNode(); + for (int y = 0; y < columnCount; y++) + { + child.setValueAt(tableModel.getValueAt(x, y), y); + } + rootNode.insert(child, x); + } + columnClasses = new ArrayList<Class<?>>(columnCount); + columnNames = new ArrayList<String>(columnCount); + for (int x = 0; x < columnCount; x++) + { + columnClasses.add(tableModel.getColumnClass(x)); + columnNames.add(tableModel.getColumnName(x)); + } + setRoot(rootNode); + } + + public DefaultTreeTableModel(TreeTableModel treeTableModel) + { + super(null); + TreeTableNode rootNode = createDefaultTreeTableNode((TreeNode) treeTableModel.getRoot()); + columnCount = treeTableModel.getColumnCount(); + columnClasses = new ArrayList<Class<?>>(columnCount); + columnNames = new ArrayList<String>(columnCount); + for (int x = 0; x < columnCount; x++) + { + columnClasses.add(treeTableModel.getColumnClass(x)); + columnNames.add(treeTableModel.getColumnName(x)); + } + setRoot(rootNode); + } + + protected TreeTableNode createDefaultTreeTableNode() + { + return new DefaultTreeTableNode(); + } + + protected TreeTableNode createDefaultTreeTableNode(TreeNode node) + { + return new DefaultTreeTableNode(node); + } + + public int getColumnCount() + { + return columnCount; + } + + @Override + public Class<?> getColumnClass(int column) + { + switch (column) + { + case 0: + return TreeTableNode.class; + default: + return columnClasses.get(column); + } + } + + @Override + public String getColumnName(int column) + { + return columnNames.get(column); + } + +} Modified: branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultTreeTableNode.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultTreeTableNode.java 2008-02-22 23:56:50 UTC (rev 5263) +++ branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultTreeTableNode.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -20,8 +20,11 @@ */ package pcgen.gui.util.treetable; +import java.util.Collections; +import java.util.List; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.TreeNode; +import pcgen.util.UnboundedArrayList; /** * @@ -29,21 +32,62 @@ */ public class DefaultTreeTableNode extends DefaultMutableTreeNode implements TreeTableNode { - private Object[] data; - public DefaultTreeTableNode(Object name, Object[] data) + private List<Object> data; + + public DefaultTreeTableNode() { - super(name); - this.data = data; + this(Collections.emptyList()); } + public DefaultTreeTableNode(List<Object> data) + { + setValues(data); + } + + public DefaultTreeTableNode(TreeNode node) + { + this(); + if (node instanceof TreeTableNode) + { + TreeTableNode treeTableNode = (TreeTableNode) node; + setValues(treeTableNode.getValues()); + } + for (int x = 0; x < node.getChildCount(); x++) + { + add(new DefaultTreeTableNode(node.getChildAt(x))); + } + } + public Object getValueAt(int column) { - return data[column]; + return data.get(column); } public void setValueAt(Object value, int column) { - data[column] = value; + data.set(column, value); } + + public List<Object> getValues() + { + return data; + } + + private void setValues(List<Object> values) + { + this.data = new UnboundedArrayList<Object>(data); + } + + @Override + public String toString() + { + Object name = data.get(0); + if (name != null) + { + return name.toString(); + } + return super.toString(); + } + } Modified: branches/cdomui/code/src/java/pcgen/gui/util/treetable/TreeTableNode.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/treetable/TreeTableNode.java 2008-02-22 23:56:50 UTC (rev 5263) +++ branches/cdomui/code/src/java/pcgen/gui/util/treetable/TreeTableNode.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -20,6 +20,7 @@ */ package pcgen.gui.util.treetable; +import java.util.List; import javax.swing.tree.MutableTreeNode; /** @@ -28,6 +29,7 @@ */ public interface TreeTableNode extends MutableTreeNode { + public List<Object> getValues(); public Object getValueAt(int column); public void setValueAt(Object value, int column); } Modified: branches/cdomui/code/src/java/pcgen/gui/util/treeview/DataViewColumn.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/treeview/DataViewColumn.java 2008-02-22 23:56:50 UTC (rev 5263) +++ branches/cdomui/code/src/java/pcgen/gui/util/treeview/DataViewColumn.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -26,34 +26,13 @@ * * @author Connor Petty <mis...@gm...> */ -public class DataViewColumn +public interface DataViewColumn { - private String name; - private Class<?> dataclass; - private Comparator<?> comparator; + public String getName(); - public <T> DataViewColumn(String name, Class<T> dataclass, - Comparator<T> comparator) - { - this.name = name; - this.dataclass = dataclass; - this.comparator = comparator; - } + public Class<?> getDataClass(); - public String getName() - { - return name; - } + public Comparator<?> getComparator(); - public Class<?> getDataClass() - { - return dataclass; - } - - public Comparator<?> getComparator() - { - return comparator; - } - } Copied: branches/cdomui/code/src/java/pcgen/gui/util/treeview/DefaultDataViewColumn.java (from rev 5249, branches/cdomui/code/src/java/pcgen/gui/util/treeview/DataViewColumn.java) =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/treeview/DefaultDataViewColumn.java (rev 0) +++ branches/cdomui/code/src/java/pcgen/gui/util/treeview/DefaultDataViewColumn.java 2008-02-23 03:34:22 UTC (rev 5264) @@ -0,0 +1,59 @@ +/* + * DefaultDataViewColumn.java + * Copyright 2008 (C) Connor Petty <mis...@gm...> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * Created on Feb 22, 2008, 2:45:05 PM + */ +package pcgen.gui.util.treeview; + +import java.util.Comparator; + +/** + * + * @author Connor Petty <mis...@gm...> + */ +public class DefaultDataViewColumn implements DataViewColumn +{ + + private String name; + private Class<?> dataclass; + private Comparator<?> comparator; + + public <T> DefaultDataViewColumn(String name, Class<T> dataclass, + Comparator<? super T> comparator) + { + this.name = name; + this.dataclass = dataclass; + this.comparator = comparator; + } + + public String getName() + { + return name; + } + + public Class<?> getDataClass() ... [truncated message content] |