From: <cpm...@us...> - 2008-02-28 08:59:37
|
Revision: 5373 http://pcgen.svn.sourceforge.net/pcgen/?rev=5373&view=rev Author: cpmeister Date: 2008-02-28 00:59:42 -0800 (Thu, 28 Feb 2008) Log Message: ----------- Added JTableExScrollPane Modified Paths: -------------- branches/cdomui/code/src/java/pcgen/gui/util/JTableSortingHeader.java branches/cdomui/code/src/java/pcgen/gui/util/ResourceManager.java branches/cdomui/code/src/java/pcgen/gui/util/panes/Utilities.java branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultSortableTreeTableNode.java Added Paths: ----------- branches/cdomui/code/src/java/pcgen/gui/util/JTableExScrollPane.java Added: branches/cdomui/code/src/java/pcgen/gui/util/JTableExScrollPane.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/JTableExScrollPane.java (rev 0) +++ branches/cdomui/code/src/java/pcgen/gui/util/JTableExScrollPane.java 2008-02-28 08:59:42 UTC (rev 5373) @@ -0,0 +1,110 @@ +/* + * JTableExScrollPane.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 27, 2008, 10:44:14 PM + */ +package pcgen.gui.util; + +import java.awt.event.ActionEvent; +import java.util.List; +import javax.swing.AbstractAction; +import javax.swing.JButton; +import javax.swing.JCheckBoxMenuItem; +import javax.swing.JPopupMenu; +import javax.swing.JScrollPane; +import javax.swing.table.TableColumn; +import pcgen.gui.util.table.DynamicTableColumnModel; + +/** + * + * @author Connor Petty <mis...@gm...> + */ +public class JTableExScrollPane extends JScrollPane +{ + + private JTableEx table; + + public JTableExScrollPane() + { + + } + + public JTableExScrollPane(JTableEx table) + { + setTable(table); + } + + public void setTable(JTableEx table) + { + this.table = table; + DynamicTableColumnModel model = table.getColumnModel(); + List<TableColumn> columns = model.getAvailableColumns(); + if (!columns.isEmpty()) + { + JPopupMenu menu = new JPopupMenu(); + for (TableColumn column : columns) + { + JCheckBoxMenuItem item = new JCheckBoxMenuItem(); + item.setSelected(model.isVisible(column)); + item.setAction(new MenuAction(column)); + menu.add(item); + } + setCorner(JScrollPane.UPPER_RIGHT_CORNER, new JButton(new CornerAction(menu))); + } + else + { + setCorner(JScrollPane.UPPER_RIGHT_CORNER, null); + } + setViewportView(table); + } + + private class CornerAction extends AbstractAction + { + + private JPopupMenu menu; + + public CornerAction(JPopupMenu menu) + { + super("..."); + this.menu = menu; + } + + public void actionPerformed(ActionEvent e) + { + menu.show(table, table.getWidth() - menu.getWidth(), 0); + } + + } + + private class MenuAction extends AbstractAction + { + + private TableColumn column; + + public MenuAction(TableColumn column) + { + super(column.getHeaderValue().toString()); + this.column = column; + } + + public void actionPerformed(ActionEvent e) + { + table.getColumnModel().toggleVisible(column); + } + } +} Modified: branches/cdomui/code/src/java/pcgen/gui/util/JTableSortingHeader.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/JTableSortingHeader.java 2008-02-28 08:59:39 UTC (rev 5372) +++ branches/cdomui/code/src/java/pcgen/gui/util/JTableSortingHeader.java 2008-02-28 08:59:42 UTC (rev 5373) @@ -46,8 +46,8 @@ public class JTableSortingHeader extends JTableHeader implements MouseListener { - private static final Icon ASCENDING_ICON = ResourceManager.getImageIcon(ResourceManager.Icon.Down16); - private static final Icon DESCENDING_ICON = ResourceManager.getImageIcon(ResourceManager.Icon.Up16); + private static final Icon ASCENDING_ICON = ResourceManager.getImageIcon(ResourceManager.Icons.Down16); + private static final Icon DESCENDING_ICON = ResourceManager.getImageIcon(ResourceManager.Icons.Up16); private static final ButtonModel defaultModel = new DefaultButtonModel(); private final ButtonModel usedModel = new DefaultButtonModel(); Modified: branches/cdomui/code/src/java/pcgen/gui/util/ResourceManager.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/ResourceManager.java 2008-02-28 08:59:39 UTC (rev 5372) +++ branches/cdomui/code/src/java/pcgen/gui/util/ResourceManager.java 2008-02-28 08:59:42 UTC (rev 5373) @@ -34,9 +34,9 @@ /** The URL to the resource folder of pcgen */ public static final String RESOURCE_URL = "/pcgen/gui/resource/"; - private static final Map<Icon, ImageIcon> iconMap = new HashMap<Icon, ImageIcon>(); + private static final Map<Icons, ImageIcon> iconMap = new HashMap<Icons, ImageIcon>(); - public static enum Icon + public static enum Icons { About16, @@ -130,7 +130,7 @@ return new ImageIcon(iconURL); } - public static ImageIcon getImageIcon(Icon icon) + public static ImageIcon getImageIcon(Icons icon) { ImageIcon image = iconMap.get(icon); if (image == null) Modified: branches/cdomui/code/src/java/pcgen/gui/util/panes/Utilities.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/panes/Utilities.java 2008-02-28 08:59:39 UTC (rev 5372) +++ branches/cdomui/code/src/java/pcgen/gui/util/panes/Utilities.java 2008-02-28 08:59:42 UTC (rev 5373) @@ -29,6 +29,8 @@ import javax.swing.SwingUtilities; import java.awt.event.InputEvent; import java.awt.event.MouseEvent; +import pcgen.gui.util.ResourceManager; +import pcgen.gui.util.ResourceManager.Icons; /** * <code>Utilities</code>. @@ -52,51 +54,48 @@ /** End (far right) direction. */ public static final int END = 17; - /** Icon for New item. */ - public static final ImageIcon NEW_ICON = getImageIcon("resources/New16.gif"); + /** Icons for New item. */ + public static final ImageIcon NEW_ICON = ResourceManager.getImageIcon(Icons.New16); - /** Icon for Close item. */ - public static final ImageIcon CLOSE_ICON = getImageIcon("resources/Close16.gif"); + /** Icons for Close item. */ + public static final ImageIcon CLOSE_ICON = ResourceManager.getImageIcon(Icons.Close16); - /** Icon for Center item. */ - public static final ImageIcon CENTER_ICON = getImageIcon("resources/Stop16.gif"); + /** Icons for Center item. */ + public static final ImageIcon CENTER_ICON = ResourceManager.getImageIcon(Icons.Stop16); - /** Icon for Flip item. */ - public static final ImageIcon FLIP_ICON = getImageIcon("resources/Refresh16.gif"); + /** Icons for Flip item. */ + public static final ImageIcon FLIP_ICON = ResourceManager.getImageIcon(Icons.Refresh16); - /** Icon for Reset item. */ - public static final ImageIcon RESET_ICON = getImageIcon("resources/Redo16.gif"); + /** Icons for Reset item. */ + public static final ImageIcon RESET_ICON = ResourceManager.getImageIcon(Icons.Redo16); - /** Icon for Locked item. */ - public static final ImageIcon LOCK_ICON = getImageIcon("resources/Bookmarks16.gif"); + /** Icons for Locked item. */ + public static final ImageIcon LOCK_ICON = ResourceManager.getImageIcon(Icons.Bookmarks16); - /** Icon for Join item. */ - public static final ImageIcon JOIN_ICON = getImageIcon("resources/Pause16.gif"); + /** Icons for Up item. */ + public static final ImageIcon UP_ICON = ResourceManager.getImageIcon(Icons.Up16); - /** Icon for Up item. */ - public static final ImageIcon UP_ICON = getImageIcon("resources/Up16.gif"); + /** Icons for Left item. */ + public static final ImageIcon LEFT_ICON = ResourceManager.getImageIcon(Icons.Back16); - /** Icon for Left item. */ - public static final ImageIcon LEFT_ICON = getImageIcon("resources/Back16.gif"); + /** Icons for Down item. */ + public static final ImageIcon DOWN_ICON = ResourceManager.getImageIcon(Icons.Down16); - /** Icon for Down item. */ - public static final ImageIcon DOWN_ICON = getImageIcon("resources/Down16.gif"); + /** Icons for Right item. */ + public static final ImageIcon RIGHT_ICON = ResourceManager.getImageIcon(Icons.Forward16); - /** Icon for Right item. */ - public static final ImageIcon RIGHT_ICON = getImageIcon("resources/Forward16.gif"); + /** Icons for Top item. */ + public static final ImageIcon TOP_ICON = ResourceManager.getImageIcon(Icons.UUp16); - /** Icon for Top item. */ - public static final ImageIcon TOP_ICON = getImageIcon("resources/UUp16.gif"); + /** Icons for Beginning item. */ + public static final ImageIcon BEGINNING_ICON = ResourceManager.getImageIcon(Icons.BBack16); - /** Icon for Beginning item. */ - public static final ImageIcon BEGINNING_ICON = getImageIcon("resources/BBack16.gif"); + /** Icons for Bottom item. */ + public static final ImageIcon BOTTOM_ICON = ResourceManager.getImageIcon(Icons.DDown16); - /** Icon for Bottom item. */ - public static final ImageIcon BOTTOM_ICON = getImageIcon("resources/DDown16.gif"); + /** Icons for End item. */ + public static final ImageIcon END_ICON = ResourceManager.getImageIcon(Icons.FForward16); - /** Icon for End item. */ - public static final ImageIcon END_ICON = getImageIcon("resources/FForward16.gif"); - private Utilities() { super(); 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-28 08:59:39 UTC (rev 5372) +++ branches/cdomui/code/src/java/pcgen/gui/util/treetable/DefaultSortableTreeTableNode.java 2008-02-28 08:59:42 UTC (rev 5373) @@ -38,6 +38,7 @@ { protected Vector<List<Object>> childData = null; + private int index = -1; public DefaultSortableTreeTableNode() { @@ -99,6 +100,16 @@ } @Override + public void insert(MutableTreeNode child, int i) + { + if (child instanceof DefaultSortableTreeTableNode) + { + ((DefaultSortableTreeTableNode) child).setIndex(i); + } + super.insert(child, i); + } + + @Override public void remove(int index) { if (childData != null && index < childData.size()) @@ -117,12 +128,22 @@ return null; } + private int getIndex() + { + return index; + } + + private void setIndex(int index) + { + this.index = index; + } + public List<Object> getValues() { DefaultSortableTreeTableNode parentNode = getSortableParent(); if (parentNode != null) { - return parentNode.getChildData(parentNode.getIndex(this)); + return parentNode.getChildData(getIndex()); } return null; } @@ -169,26 +190,30 @@ @SuppressWarnings("unchecked") public void sortChildren(Comparator<List<?>> comparator) { - int index = 0; + int i = 0; for (int x = 0; x < childData.size(); x++) { DefaultSortableTreeTableNode child = (DefaultSortableTreeTableNode) children.get(x); + // this makes sure that non-leaf nodes are the first nodes in the child array if (!child.isLeaf()) { child.sortChildren(comparator); - if (index != x) + if (i != x) { - Collections.swap(children, index, x); - Collections.swap(childData, index, x); + Collections.swap(children, i, x); + Collections.swap(childData, i, x); + child.setIndex(i); + child = (DefaultSortableTreeTableNode) children.get(x); + child.setIndex(x); } - index++; + i++; } } - List sublist = children.subList(0, index); + List sublist = children.subList(0, i); Collections.sort(sublist, new NodeComparator(comparator)); - sublist = childData.subList(0, index); + sublist = childData.subList(0, i); Collections.sort(sublist, comparator); - sublist = childData.subList(index, childData.size()); + sublist = childData.subList(i, childData.size()); Collections.sort(sublist, comparator); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |