From: <cpm...@us...> - 2008-03-19 04:41:39
|
Revision: 5631 http://pcgen.svn.sourceforge.net/pcgen/?rev=5631&view=rev Author: cpmeister Date: 2008-03-18 21:41:45 -0700 (Tue, 18 Mar 2008) Log Message: ----------- Improved the TreeTableModel and fixed a UI bug Modified Paths: -------------- branches/cdomui/code/src/java/pcgen/gui/util/treeview/TreeViewPath.java branches/cdomui/code/src/java/pcgen/gui/util/treeview/TreeViewTableModel.java branches/cdomui/code/src/java/pcgen/util/CompactList.java Added Paths: ----------- branches/cdomui/code/src/java/pcgen/gui/editor/ branches/cdomui/code/src/java/pcgen/gui/editor/LstEditor.form branches/cdomui/code/src/java/pcgen/gui/editor/LstEditor.java branches/cdomui/code/src/java/pcgen/gui/proto/editor/UtilitiesTester.form branches/cdomui/code/src/java/pcgen/gui/proto/editor/UtilitiesTester.java branches/cdomui/code/src/java/pcgen/util/CollectionMaps.java Removed Paths: ------------- branches/cdomui/code/src/java/pcgen/gui/proto/editor/PlayerCharacterEditor.form branches/cdomui/code/src/java/pcgen/gui/proto/editor/PlayerCharacterEditor.java Added: branches/cdomui/code/src/java/pcgen/gui/editor/LstEditor.form =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/editor/LstEditor.form (rev 0) +++ branches/cdomui/code/src/java/pcgen/gui/editor/LstEditor.form 2008-03-19 04:41:45 UTC (rev 5631) @@ -0,0 +1,188 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<Form version="1.3" maxVersion="1.5" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> + <NonVisualComponents> + <Menu class="javax.swing.JMenuBar" name="jMenuBar1"> + <SubComponents> + <Menu class="javax.swing.JMenu" name="jMenu1"> + <Properties> + <Property name="text" type="java.lang.String" value="File"/> + </Properties> + </Menu> + <Menu class="javax.swing.JMenu" name="jMenu2"> + <Properties> + <Property name="text" type="java.lang.String" value="Edit"/> + </Properties> + </Menu> + </SubComponents> + </Menu> + </NonVisualComponents> + <Properties> + <Property name="defaultCloseOperation" type="int" value="3"/> + </Properties> + <SyntheticProperties> + <SyntheticProperty name="menuBar" type="java.lang.String" value="jMenuBar1"/> + <SyntheticProperty name="formSizePolicy" type="int" value="1"/> + </SyntheticProperties> + <AuxValues> + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="2"/> + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> + <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,1,108,0,0,1,-66"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Container class="javax.swing.JToolBar" name="jToolBar1"> + <Properties> + <Property name="floatable" type="boolean" value="false"/> + <Property name="rollover" type="boolean" value="true"/> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="First"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBoxLayout"/> + <SubComponents> + <Component class="javax.swing.JButton" name="jButton5"> + <Properties> + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> + <Image iconType="3" name="/pcgen/gui/resource/New16.gif"/> + </Property> + <Property name="focusable" type="boolean" value="false"/> + <Property name="horizontalTextPosition" type="int" value="0"/> + <Property name="verticalTextPosition" type="int" value="3"/> + </Properties> + </Component> + <Component class="javax.swing.JButton" name="jButton6"> + <Properties> + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> + <Image iconType="3" name="/pcgen/gui/resource/Close16.gif"/> + </Property> + <Property name="focusable" type="boolean" value="false"/> + <Property name="horizontalTextPosition" type="int" value="0"/> + <Property name="verticalTextPosition" type="int" value="3"/> + </Properties> + </Component> + <Component class="javax.swing.JToolBar$Separator" name="jSeparator1"> + </Component> + <Component class="javax.swing.JButton" name="jButton1"> + <Properties> + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> + <Image iconType="3" name="/pcgen/gui/resource/Undo16.gif"/> + </Property> + <Property name="focusable" type="boolean" value="false"/> + <Property name="horizontalTextPosition" type="int" value="0"/> + <Property name="verticalTextPosition" type="int" value="3"/> + </Properties> + </Component> + <Component class="javax.swing.JButton" name="jButton2"> + <Properties> + <Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor"> + <Image iconType="3" name="/pcgen/gui/resource/Redo16.gif"/> + </Property> + <Property name="focusable" type="boolean" value="false"/> + <Property name="horizontalTextPosition" type="int" value="0"/> + <Property name="verticalTextPosition" type="int" value="3"/> + </Properties> + </Component> + </SubComponents> + </Container> + <Container class="pcgen.gui.util.panes.FlippingSplitPane" name="flippingSplitPane1"> + <Properties> + <Property name="orientation" type="int" value="0"/> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/> + <SubComponents> + <Container class="pcgen.gui.util.panes.SpinningTabbedPane" name="spinningTabbedPane1"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription"> + <JSplitPaneConstraints position="left"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/> + <SubComponents> + <Container class="javax.swing.JScrollPane" name="jScrollPane1"> + <AuxValues> + <AuxValue name="autoScrollPane" type="java.lang.Boolean" value="true"/> + </AuxValues> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription"> + <JTabbedPaneConstraints tabName="tab1"> + <Property name="tabTitle" type="java.lang.String" value="tab1"/> + </JTabbedPaneConstraints> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.support.JScrollPaneSupportLayout"/> + <SubComponents> + <Component class="javax.swing.JList" name="jList1"> + <Properties> + <Property name="model" type="javax.swing.ListModel" editor="org.netbeans.modules.form.editors2.ListModelEditor"> + <StringArray count="5"> + <StringItem index="0" value="Item 1"/> + <StringItem index="1" value="Item 2"/> + <StringItem index="2" value="Item 3"/> + <StringItem index="3" value="Item 4"/> + <StringItem index="4" value="Item 5"/> + </StringArray> + </Property> + </Properties> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + <Container class="javax.swing.JPanel" name="jPanel1"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription"> + <JSplitPaneConstraints position="right"/> + </Constraint> + </Constraints> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Component class="javax.swing.JComboBox" name="jComboBox1"> + <Properties> + <Property name="model" type="javax.swing.ComboBoxModel" editor="org.netbeans.modules.form.editors2.ComboBoxModelEditor"> + <StringArray count="4"> + <StringItem index="0" value="Item 1"/> + <StringItem index="1" value="Item 2"/> + <StringItem index="2" value="Item 3"/> + <StringItem index="3" value="Item 4"/> + </StringArray> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="First"/> + </Constraint> + </Constraints> + </Component> + <Component class="pcgen.gui.util.JTreeTablePane" name="jTreeTablePane1"> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + </Component> + </SubComponents> + </Container> + </SubComponents> + </Container> + </SubComponents> +</Form> Added: branches/cdomui/code/src/java/pcgen/gui/editor/LstEditor.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/editor/LstEditor.java (rev 0) +++ branches/cdomui/code/src/java/pcgen/gui/editor/LstEditor.java 2008-03-19 04:41:45 UTC (rev 5631) @@ -0,0 +1,141 @@ +/* + * LstEditor.java + * + * Created on March 4, 2008, 2:43 PM + */ + +package pcgen.gui.editor; + +/** + * + * @author Connor Petty <mis...@gm...> + */ +public class LstEditor extends javax.swing.JFrame { + + /** Creates new form LstEditor */ + public LstEditor() { + initComponents(); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents() { + + jToolBar1 = new javax.swing.JToolBar(); + jButton5 = new javax.swing.JButton(); + jButton6 = new javax.swing.JButton(); + jSeparator1 = new javax.swing.JToolBar.Separator(); + jButton1 = new javax.swing.JButton(); + jButton2 = new javax.swing.JButton(); + flippingSplitPane1 = new pcgen.gui.util.panes.FlippingSplitPane(); + spinningTabbedPane1 = new pcgen.gui.util.panes.SpinningTabbedPane(); + jScrollPane1 = new javax.swing.JScrollPane(); + jList1 = new javax.swing.JList(); + jPanel1 = new javax.swing.JPanel(); + jComboBox1 = new javax.swing.JComboBox(); + jTreeTablePane1 = new pcgen.gui.util.JTreeTablePane(); + jMenuBar1 = new javax.swing.JMenuBar(); + jMenu1 = new javax.swing.JMenu(); + jMenu2 = new javax.swing.JMenu(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + + jToolBar1.setFloatable(false); + jToolBar1.setRollover(true); + + jButton5.setIcon(new javax.swing.ImageIcon(getClass().getResource("/pcgen/gui/resource/New16.gif"))); // NOI18N + jButton5.setFocusable(false); + jButton5.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + jButton5.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + jToolBar1.add(jButton5); + + jButton6.setIcon(new javax.swing.ImageIcon(getClass().getResource("/pcgen/gui/resource/Close16.gif"))); // NOI18N + jButton6.setFocusable(false); + jButton6.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + jButton6.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + jToolBar1.add(jButton6); + jToolBar1.add(jSeparator1); + + jButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/pcgen/gui/resource/Undo16.gif"))); // NOI18N + jButton1.setFocusable(false); + jButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + jButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + jToolBar1.add(jButton1); + + jButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/pcgen/gui/resource/Redo16.gif"))); // NOI18N + jButton2.setFocusable(false); + jButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER); + jButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM); + jToolBar1.add(jButton2); + + getContentPane().add(jToolBar1, java.awt.BorderLayout.PAGE_START); + + flippingSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); + + jList1.setModel(new javax.swing.AbstractListModel() { + String[] strings = { "Item 1", "Item 2", "Item 3", "Item 4", "Item 5" }; + public int getSize() { return strings.length; } + public Object getElementAt(int i) { return strings[i]; } + }); + jScrollPane1.setViewportView(jList1); + + spinningTabbedPane1.addTab("tab1", jScrollPane1); + + flippingSplitPane1.setLeftComponent(spinningTabbedPane1); + + jPanel1.setLayout(new java.awt.BorderLayout()); + + jComboBox1.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); + jPanel1.add(jComboBox1, java.awt.BorderLayout.PAGE_START); + jPanel1.add(jTreeTablePane1, java.awt.BorderLayout.CENTER); + + flippingSplitPane1.setRightComponent(jPanel1); + + getContentPane().add(flippingSplitPane1, java.awt.BorderLayout.CENTER); + + jMenu1.setText("File"); + jMenuBar1.add(jMenu1); + + jMenu2.setText("Edit"); + jMenuBar1.add(jMenu2); + + setJMenuBar(jMenuBar1); + + pack(); + }// </editor-fold>//GEN-END:initComponents + + /** + * @param args the command line arguments + */ + public static void main(String args[]) { + java.awt.EventQueue.invokeLater(new Runnable() { + public void run() { + new LstEditor().setVisible(true); + } + }); + } + + // Variables declaration - do not modify//GEN-BEGIN:variables + private pcgen.gui.util.panes.FlippingSplitPane flippingSplitPane1; + private javax.swing.JButton jButton1; + private javax.swing.JButton jButton2; + private javax.swing.JButton jButton5; + private javax.swing.JButton jButton6; + private javax.swing.JComboBox jComboBox1; + private javax.swing.JList jList1; + private javax.swing.JMenu jMenu1; + private javax.swing.JMenu jMenu2; + private javax.swing.JMenuBar jMenuBar1; + private javax.swing.JPanel jPanel1; + private javax.swing.JScrollPane jScrollPane1; + private javax.swing.JToolBar.Separator jSeparator1; + private javax.swing.JToolBar jToolBar1; + private pcgen.gui.util.JTreeTablePane jTreeTablePane1; + private pcgen.gui.util.panes.SpinningTabbedPane spinningTabbedPane1; + // End of variables declaration//GEN-END:variables + +} Deleted: branches/cdomui/code/src/java/pcgen/gui/proto/editor/PlayerCharacterEditor.form =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/proto/editor/PlayerCharacterEditor.form 2008-03-19 04:27:21 UTC (rev 5630) +++ branches/cdomui/code/src/java/pcgen/gui/proto/editor/PlayerCharacterEditor.form 2008-03-19 04:41:45 UTC (rev 5631) @@ -1,37 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" ?> - -<Form version="1.5" maxVersion="1.5" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> - <Properties> - <Property name="defaultCloseOperation" type="int" value="3"/> - </Properties> - <SyntheticProperties> - <SyntheticProperty name="formSizePolicy" type="int" value="1"/> - </SyntheticProperties> - <AuxValues> - <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/> - <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> - <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> - <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> - <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> - <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-44,0,0,1,104"/> - </AuxValues> - - <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> - <SubComponents> - <Component class="pcgen.gui.util.JTreeViewPane" name="jTreeViewPane1"> - <Properties> - <Property name="treeViewModel" type="pcgen.gui.util.treeview.TreeViewModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor"> - <Connection code="new DateModel()" type="code"/> - </Property> - </Properties> - <Constraints> - <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> - <BorderConstraints direction="Center"/> - </Constraint> - </Constraints> - </Component> - </SubComponents> -</Form> Deleted: branches/cdomui/code/src/java/pcgen/gui/proto/editor/PlayerCharacterEditor.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/proto/editor/PlayerCharacterEditor.java 2008-03-19 04:27:21 UTC (rev 5630) +++ branches/cdomui/code/src/java/pcgen/gui/proto/editor/PlayerCharacterEditor.java 2008-03-19 04:41:45 UTC (rev 5631) @@ -1,231 +0,0 @@ -/* - * PlayerCharacterEditor.java - * - * Created on February 14, 2008, 8:31 PM - */ -package pcgen.gui.proto.editor; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Collection; -import java.util.Collections; -import java.util.Date; -import java.util.List; -import pcgen.gui.util.table.DefaultSortableTableModel; -import pcgen.gui.util.table.SortableTableModel; -import pcgen.gui.util.treetable.DefaultSortableTreeTableModel; -import pcgen.gui.util.treeview.AbstractTreeViewModel; -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; - -/** - * - * @author Connor Petty <mis...@gm...> - */ -public class PlayerCharacterEditor extends javax.swing.JFrame -{ - - /** Creates new form PlayerCharacterEditor */ - public PlayerCharacterEditor() - { - initComponents(); - } - - /** This method is called from within the constructor to - * initialize the form. - * WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents - private void initComponents() { - - jTreeViewPane1 = new pcgen.gui.util.JTreeViewPane(); - - setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); - - jTreeViewPane1.setTreeViewModel(new DateModel()); - getContentPane().add(jTreeViewPane1, java.awt.BorderLayout.CENTER); - - pack(); - }// </editor-fold>//GEN-END:initComponents - /** - * @param args the command line arguments - */ - public static void main(String args[]) - { - java.awt.EventQueue.invokeLater(new Runnable() - { - - public void run() - { - new PlayerCharacterEditor().setVisible(true); - } - - }); - } - - public SortableTableModel getTableModel() - { - return new DefaultSortableTableModel( - new Object[][]{ - {"sdfa", - "tegh", - "wvczs", - "yuue" - }, - {"ghjd", - "asdf", - "trtw", - "pin" - }, - {"hty", - "iohf", - "kjffs", - "sfgj" - }, - {"dfg", - "cbnc", - "mnvx", - "xssd" - } - }, - new String[]{ - "Title 1", - "Title 2", - "Title 3", - "Title 4" - }); - } - - public TreeViewModel<Date> getViewModel() - { - return new DateModel(); - } - private static Collection<Date> getData() - { - ArrayList<Date> list = new ArrayList<Date>(); - Calendar cal = Calendar.getInstance(); - cal.set(1543, 12, 9); - list.add(cal.getTime()); - cal.set(1453, 4, 23); - list.add(cal.getTime()); - cal.set(3734, 7, 18); - list.add(cal.getTime()); - cal.set(1682, 10, 2); - list.add(cal.getTime()); - cal.set(6432, 2, 2); - list.add(cal.getTime()); - cal.set(1543, 9, 12); - list.add(cal.getTime()); - cal.set(2345, 4, 12); - list.add(cal.getTime()); - return list; - } - // Variables declaration - do not modify//GEN-BEGIN:variables - private pcgen.gui.util.JTreeViewPane jTreeViewPane1; - // End of variables declaration//GEN-END:variables - private static class DateModel extends AbstractTreeViewModel<Date> - { - - private static List<? extends TreeView<Date>> views = Arrays.asList(DateTree.values()); - private static DataView<Date> data = new DateView(); - - public DateModel() - { - super(PlayerCharacterEditor.getData()); - } - public List<? extends TreeView<Date>> getTreeViews() - { - return views; - } - - public int getStartingIndex() - { - return 0; - } - - public DataView<Date> getDataView() - { - return data; - } - - } - - private static class DateView implements DataView<Date> - { - - public List<?> getData(Date obj) - { - Calendar cal = Calendar.getInstance(); - cal.setTime(obj); - return Arrays.asList(cal.get(Calendar.MONTH), - cal.get(Calendar.WEEK_OF_MONTH), - cal.get(Calendar.DAY_OF_WEEK)); - } - - public List<? extends DataViewColumn> getDataColumns() - { - return Arrays.asList(new DefaultDataViewColumn("Month", - Integer.class), - new DefaultDataViewColumn("Week", Integer.class), - new DefaultDataViewColumn("Day of Week", - Integer.class)); - } - - } - - private static enum DateTree implements TreeView<Date> - { - - TIME("Time"), - DAY_TIME("Day/Time"), - MONTH_TIME("Month/Time"), - MONTH_WEEK_DAY_TIME("Month/Week/Day/Time"); - private String name; - - private DateTree(String name) - { - this.name = name; - } - - public String getViewName() - { - return name; - } - - public List<TreeViewPath<Date>> getPaths(Date pobj) - { - Calendar cal = Calendar.getInstance(); - cal.setTime(pobj); - switch (this) - { - case TIME: - return Collections.singletonList(new TreeViewPath<Date>(pobj)); - case DAY_TIME: - return Collections.singletonList(new TreeViewPath<Date>(pobj, - "" + - cal.get(Calendar.DAY_OF_MONTH))); - case MONTH_TIME: - return Collections.singletonList(new TreeViewPath<Date>(pobj, - "" + - cal.get(Calendar.MONTH))); - case MONTH_WEEK_DAY_TIME: - return Collections.singletonList(new TreeViewPath<Date>(pobj, - "" + - cal.get(Calendar.MONTH), - "" + - cal.get(Calendar.WEEK_OF_MONTH), - "" + - cal.get(Calendar.DAY_OF_MONTH))); - default: - return null; - } - } - - } -} Copied: branches/cdomui/code/src/java/pcgen/gui/proto/editor/UtilitiesTester.form (from rev 5415, branches/cdomui/code/src/java/pcgen/gui/proto/editor/PlayerCharacterEditor.form) =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/proto/editor/UtilitiesTester.form (rev 0) +++ branches/cdomui/code/src/java/pcgen/gui/proto/editor/UtilitiesTester.form 2008-03-19 04:41:45 UTC (rev 5631) @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8" ?> + +<Form version="1.5" maxVersion="1.5" type="org.netbeans.modules.form.forminfo.JFrameFormInfo"> + <Properties> + <Property name="defaultCloseOperation" type="int" value="3"/> + </Properties> + <SyntheticProperties> + <SyntheticProperty name="formSizePolicy" type="int" value="1"/> + </SyntheticProperties> + <AuxValues> + <AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/> + <AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/> + <AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/> + <AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/> + <AuxValue name="designerSize" type="java.awt.Dimension" value="-84,-19,0,5,115,114,0,18,106,97,118,97,46,97,119,116,46,68,105,109,101,110,115,105,111,110,65,-114,-39,-41,-84,95,68,20,2,0,2,73,0,6,104,101,105,103,104,116,73,0,5,119,105,100,116,104,120,112,0,0,0,-44,0,0,1,104"/> + </AuxValues> + + <Layout class="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout"/> + <SubComponents> + <Component class="pcgen.gui.util.JTreeViewPane" name="jTreeViewPane1"> + <Properties> + <Property name="treeViewModel" type="pcgen.gui.util.treeview.TreeViewModel" editor="org.netbeans.modules.form.RADConnectionPropertyEditor"> + <Connection code="new DateModel()" type="code"/> + </Property> + </Properties> + <Constraints> + <Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout" value="org.netbeans.modules.form.compat2.layouts.DesignBorderLayout$BorderConstraintsDescription"> + <BorderConstraints direction="Center"/> + </Constraint> + </Constraints> + </Component> + </SubComponents> +</Form> Copied: branches/cdomui/code/src/java/pcgen/gui/proto/editor/UtilitiesTester.java (from rev 5415, branches/cdomui/code/src/java/pcgen/gui/proto/editor/PlayerCharacterEditor.java) =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/proto/editor/UtilitiesTester.java (rev 0) +++ branches/cdomui/code/src/java/pcgen/gui/proto/editor/UtilitiesTester.java 2008-03-19 04:41:45 UTC (rev 5631) @@ -0,0 +1,231 @@ +/* + * UtilitiesTester.java + * + * Created on February 14, 2008, 8:31 PM + */ +package pcgen.gui.proto.editor; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Calendar; +import java.util.Collection; +import java.util.Collections; +import java.util.Date; +import java.util.List; +import pcgen.gui.util.table.DefaultSortableTableModel; +import pcgen.gui.util.table.SortableTableModel; +import pcgen.gui.util.treetable.DefaultSortableTreeTableModel; +import pcgen.gui.util.treeview.AbstractTreeViewModel; +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; + +/** + * + * @author Connor Petty <mis...@gm...> + */ +public class UtilitiesTester extends javax.swing.JFrame +{ + + /** Creates new form UtilitiesTester */ + public UtilitiesTester() + { + initComponents(); + } + + /** This method is called from within the constructor to + * initialize the form. + * WARNING: Do NOT modify this code. The content of this method is + * always regenerated by the Form Editor. + */ + // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents + private void initComponents() { + + jTreeViewPane1 = new pcgen.gui.util.JTreeViewPane(); + + setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); + + jTreeViewPane1.setTreeViewModel(new DateModel()); + getContentPane().add(jTreeViewPane1, java.awt.BorderLayout.CENTER); + + pack(); + }// </editor-fold>//GEN-END:initComponents + /** + * @param args the command line arguments + */ + public static void main(String args[]) + { + java.awt.EventQueue.invokeLater(new Runnable() + { + + public void run() + { + new UtilitiesTester().setVisible(true); + } + + }); + } + + public SortableTableModel getTableModel() + { + return new DefaultSortableTableModel( + new Object[][]{ + {"sdfa", + "tegh", + "wvczs", + "yuue" + }, + {"ghjd", + "asdf", + "trtw", + "pin" + }, + {"hty", + "iohf", + "kjffs", + "sfgj" + }, + {"dfg", + "cbnc", + "mnvx", + "xssd" + } + }, + new String[]{ + "Title 1", + "Title 2", + "Title 3", + "Title 4" + }); + } + + public TreeViewModel<Date> getViewModel() + { + return new DateModel(); + } + private static Collection<Date> getData() + { + ArrayList<Date> list = new ArrayList<Date>(); + Calendar cal = Calendar.getInstance(); + cal.set(1543, 12, 9); + list.add(cal.getTime()); + cal.set(1453, 4, 23); + list.add(cal.getTime()); + cal.set(3734, 7, 18); + list.add(cal.getTime()); + cal.set(1682, 10, 2); + list.add(cal.getTime()); + cal.set(6432, 2, 2); + list.add(cal.getTime()); + cal.set(1543, 9, 12); + list.add(cal.getTime()); + cal.set(2345, 4, 12); + list.add(cal.getTime()); + return list; + } + // Variables declaration - do not modify//GEN-BEGIN:variables + private pcgen.gui.util.JTreeViewPane jTreeViewPane1; + // End of variables declaration//GEN-END:variables + private static class DateModel extends AbstractTreeViewModel<Date> + { + + private static List<? extends TreeView<Date>> views = Arrays.asList(DateTree.values()); + private static DataView<Date> data = new DateView(); + + public DateModel() + { + super(UtilitiesTester.getData()); + } + public List<? extends TreeView<Date>> getTreeViews() + { + return views; + } + + public int getStartingIndex() + { + return 0; + } + + public DataView<Date> getDataView() + { + return data; + } + + } + + private static class DateView implements DataView<Date> + { + + public List<?> getData(Date obj) + { + Calendar cal = Calendar.getInstance(); + cal.setTime(obj); + return Arrays.asList(cal.get(Calendar.MONTH), + cal.get(Calendar.WEEK_OF_MONTH), + cal.get(Calendar.DAY_OF_WEEK)); + } + + public List<? extends DataViewColumn> getDataColumns() + { + return Arrays.asList(new DefaultDataViewColumn("Month", + Integer.class), + new DefaultDataViewColumn("Week", Integer.class), + new DefaultDataViewColumn("Day of Week", + Integer.class)); + } + + } + + private static enum DateTree implements TreeView<Date> + { + + TIME("Time"), + DAY_TIME("Day/Time"), + MONTH_TIME("Month/Time"), + MONTH_WEEK_DAY_TIME("Month/Week/Day/Time"); + private String name; + + private DateTree(String name) + { + this.name = name; + } + + public String getViewName() + { + return name; + } + + public List<TreeViewPath<Date>> getPaths(Date pobj) + { + Calendar cal = Calendar.getInstance(); + cal.setTime(pobj); + switch (this) + { + case TIME: + return Collections.singletonList(new TreeViewPath<Date>(pobj)); + case DAY_TIME: + return Collections.singletonList(new TreeViewPath<Date>(pobj, + "" + + cal.get(Calendar.DAY_OF_MONTH))); + case MONTH_TIME: + return Collections.singletonList(new TreeViewPath<Date>(pobj, + "" + + cal.get(Calendar.MONTH))); + case MONTH_WEEK_DAY_TIME: + return Collections.singletonList(new TreeViewPath<Date>(pobj, + "" + + cal.get(Calendar.MONTH), + "" + + cal.get(Calendar.WEEK_OF_MONTH), + "" + + cal.get(Calendar.DAY_OF_MONTH))); + default: + return null; + } + } + + } +} Modified: branches/cdomui/code/src/java/pcgen/gui/util/treeview/TreeViewPath.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/treeview/TreeViewPath.java 2008-03-19 04:27:21 UTC (rev 5630) +++ branches/cdomui/code/src/java/pcgen/gui/util/treeview/TreeViewPath.java 2008-03-19 04:41:45 UTC (rev 5631) @@ -21,7 +21,6 @@ package pcgen.gui.util.treeview; import java.util.Arrays; -import java.util.List; /** * @@ -66,9 +65,10 @@ { if(path == null || path.length == 0 || pobjs == null || pobjs.length == 0) throw new IllegalArgumentException("path in TreePath must be non null and not empty."); - List list = Arrays.asList(path, pobjs); - this.path = list.toArray(); - this.length = list.size(); + this.length = path.length+pobjs.length; + this.path = new Object[length]; + System.arraycopy(path, 0, this.path, 0, path.length); + System.arraycopy(pobjs, 0, this.path, path.length, pobjs.length); } private TreeViewPath(Object[] path, int length) Modified: branches/cdomui/code/src/java/pcgen/gui/util/treeview/TreeViewTableModel.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/util/treeview/TreeViewTableModel.java 2008-03-19 04:27:21 UTC (rev 5630) +++ branches/cdomui/code/src/java/pcgen/gui/util/treeview/TreeViewTableModel.java 2008-03-19 04:41:45 UTC (rev 5631) @@ -20,16 +20,20 @@ */ package pcgen.gui.util.treeview; -import java.util.ArrayList; import java.util.Collection; +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.JTree; import pcgen.gui.util.treetable.AbstractTreeTableModel; -import pcgen.gui.util.treetable.DefaultSortableTreeTableNode; import pcgen.gui.util.treetable.SortableTreeTableModel; +import pcgen.gui.util.treetable.SortableTreeTableNode; import pcgen.gui.util.treetable.TreeTableNode; +import pcgen.util.CollectionMaps; +import pcgen.util.ListMap; /** * @@ -84,14 +88,15 @@ TreeViewNode node = viewMap.get(view); if (node == null) { - node = new TreeViewNode(); + Vector<TreeViewPath<E>> paths = new Vector<TreeViewPath<E>>(); for (E element : dataMap.keySet()) { for (TreeViewPath<E> path : view.getPaths(element)) { - node.createPath(path); + paths.add(path); } } + node = new TreeViewNode(paths); viewMap.put(view, node); } setRoot(node); @@ -147,63 +152,120 @@ } - private final class TreeViewNode extends DefaultSortableTreeTableNode + private final class TreeViewNode extends JTree.DynamicUtilTreeNode + implements SortableTreeTableNode { private final int level; - public TreeViewNode() + public TreeViewNode(Vector<TreeViewPath<E>> paths) { - super(); + super(null, paths); this.level = 0; } - private TreeViewNode(int level, List<Object> data) + private TreeViewNode(int level, Object name, + Vector<TreeViewPath<E>> paths) { - super(data); + super(name, paths); this.level = level; } - public void createPath(TreeViewPath<E> path) + @Override + public int getLevel() { - if (path.getPathCount() > level) + return level; + } + + @Override + @SuppressWarnings("unchecked") + protected void loadChildren() + { + loadedChildren = true; + if (childValue != null) { - Object key = path.getPathComponent(level); - TreeViewNode node = null; - if (children != null) + ListMap<Object, TreeViewPath<E>, Vector<TreeViewPath<E>>> vectorMap = CollectionMaps.createListMap(HashMap.class, + Vector.class); + Vector<TreeViewPath<E>> vector = (Vector<TreeViewPath<E>>) childValue; + for (TreeViewPath<E> path : vector) { - for (int i = 0; i < children.size(); i++) + if (path.getPathCount() > level) { - TreeViewNode child = (TreeViewNode) children.get(i); - if (child.getValueAt(0).equals(key)) - { - node = child; - break; - } + Object key = path.getPathComponent(level); + vectorMap.add(key, path); } } - if (node == null) + for (Object key : vectorMap.keySet()) { - ArrayList<Object> datalist = new ArrayList<Object>(1); - datalist.add(key); - List<?> data = dataMap.get(key); - if (data != null) + vector = vectorMap.get(key); + TreeViewNode child; + if (vector.size() == 1 && + vector.firstElement().getPathCount() <= level + 1) { - datalist.addAll(data); + child = new TreeViewNode(level + 1, key, null); } - datalist.trimToSize(); - node = new TreeViewNode(level + 1, datalist); - add(node); + else + { + child = new TreeViewNode(level + 1, key, vector); + } + add(child); } - node.createPath(path); + childValue = null; } } - @Override - public int getLevel() + @SuppressWarnings("unchecked") + public void sortChildren(Comparator<TreeTableNode> comparator) { - return level; + if (!loadedChildren) + { + loadChildren(); + } + if (children != null) + { + Collections.sort(children, comparator); + for (Object obj : children) + { + TreeViewNode child = (TreeViewNode) obj; + if (child.loadedChildren) + { + child.sortChildren(comparator); + } + } + } } + public List<Object> getValues() + { + Vector<Object> list = new Vector<Object>(getColumnCount()); + list.add(userObject); + List<?> data = dataMap.get(userObject); + if (data != null) + { + list.addAll(data); + } + list.setSize(getColumnCount()); + return list; + } + + public Object getValueAt(int column) + { + if (column == 0) + { + return userObject; + } + List<?> data = dataMap.get(userObject); + if (data != null && data.size() >= column) + { + return data.get(column - 1); + } + return null; + } + + public void setValueAt(Object value, int column) + { + throw new UnsupportedOperationException("Not supported yet."); + } + } } Added: branches/cdomui/code/src/java/pcgen/util/CollectionMaps.java =================================================================== --- branches/cdomui/code/src/java/pcgen/util/CollectionMaps.java (rev 0) +++ branches/cdomui/code/src/java/pcgen/util/CollectionMaps.java 2008-03-19 04:41:45 UTC (rev 5631) @@ -0,0 +1,325 @@ +/* + * CollectionMaps.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 Mar 18, 2008, 6:19:13 PM + */ +package pcgen.util; + +import java.util.Collection; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Set; +import java.util.logging.Level; +import java.util.logging.Logger; + +/** + * + * @author Connor Petty <mis...@gm...> + */ +public final class CollectionMaps +{ + + public static <K, V, C extends Collection<V>> CollectionMap<K, V, C> createCollectionMap(Class<? extends Map> mapClass, + Class<C> collectionClass) + { + try + { + return new BasicCollectionMap<K, V, C>(mapClass, collectionClass); + } + catch (InstantiationException ex) + { + Logger.getLogger(CollectionMaps.class.getName()).log(Level.SEVERE, + null, ex); + } + catch (IllegalAccessException ex) + { + Logger.getLogger(CollectionMaps.class.getName()).log(Level.SEVERE, + null, ex); + } + return null; + } + + public static <K, V, C extends List<V>> ListMap<K, V, C> createListMap(Class<? extends Map> mapClass, + Class<C> listClass) + { + try + { + return new BasicListMap<K, V, C>(mapClass, listClass); + } + catch (InstantiationException ex) + { + Logger.getLogger(CollectionMaps.class.getName()).log(Level.SEVERE, + null, ex); + } + catch (IllegalAccessException ex) + { + Logger.getLogger(CollectionMaps.class.getName()).log(Level.SEVERE, + null, ex); + } + return null; + } + + private static final class BasicListMap<K, V, C extends List<V>> + extends AbstractListMap<K, V, C> + { + + private final Map<K, C> map; + private final Class<C> collectionClass; + + @SuppressWarnings("unchecked") + public BasicListMap(Class<? extends Map> mapClass, + Class<C> collectionClass) throws InstantiationException, IllegalAccessException + { + this.map = mapClass.newInstance(); + this.collectionClass = collectionClass; + } + + private C createInstance() + { + try + { + return collectionClass.newInstance(); + } + catch (InstantiationException ex) + { + Logger.getLogger(CollectionMaps.class.getName()).log(Level.SEVERE, + null, + ex); + } + catch (IllegalAccessException ex) + { + Logger.getLogger(CollectionMaps.class.getName()).log(Level.SEVERE, + null, + ex); + } + return null; + } + + @Override + public void add(K key, int index, V value) + { + C list = get(key); + if (list == null) + { + put(key, list = createInstance()); + } + list.add(index, value); + } + + @Override + public boolean addAll(K key, Collection<? extends V> values) + { + C collection = get(key); + if (collection == null) + { + put(key, collection = createInstance()); + } + return collection != null && collection.addAll(values); + } + + @Override + public C get(Object key) + { + return map.get(key); + } + + @Override + public C put(K key, C value) + { + if (value == null) + { + return remove(key); + } + return map.put(key, value); + } + + @Override + public Set<Entry<K, C>> entrySet() + { + return map.entrySet(); + } + + @Override + public Set<K> keySet() + { + return map.keySet(); + } + + @Override + public boolean containsKey(Object key) + { + return map.containsKey(key); + } + + @Override + public void clear() + { + map.clear(); + } + + @Override + public int size() + { + return map.size(); + } + + @Override + public C remove(Object key) + { + return map.remove(key); + } + + @Override + public V remove(Object key, int index) + { + List<V> list = get(key); + if (list != null) + { + V value = list.remove(index); + if (list.isEmpty()) + { + remove(key); + } + return value; + } + + return null; + } + + } + + private static final class BasicCollectionMap<K, V, C extends Collection<V>> + extends AbstractCollectionMap<K, V, C> + { + + private final Map<K, C> map; + private final Class<C> collectionClass; + + @SuppressWarnings("unchecked") + public BasicCollectionMap(Class<? extends Map> mapClass, + Class<C> collectionClass) throws InstantiationException, IllegalAccessException + { + this.map = mapClass.newInstance(); + this.collectionClass = collectionClass; + } + + private C createInstance() + { + try + { + return collectionClass.newInstance(); + } + catch (InstantiationException ex) + { + Logger.getLogger(CollectionMaps.class.getName()).log(Level.SEVERE, + null, + ex); + } + catch (IllegalAccessException ex) + { + Logger.getLogger(CollectionMaps.class.getName()).log(Level.SEVERE, + null, + ex); + } + return null; + } + + @Override + public boolean add(K key, V value) + { + C collection = get(key); + if (collection == null) + { + put(key, collection = createInstance()); + } + return collection != null && collection.add(value); + } + + @Override + public boolean addAll(K key, Collection<? extends V> values) + { + C collection = get(key); + if (collection == null) + { + put(key, collection = createInstance()); + } + return collection != null && collection.addAll(values); + } + + @Override + public C get(Object key) + { + return map.get(key); + } + + @Override + public C put(K key, C value) + { + if (value == null) + { + return remove(key); + } + return map.put(key, value); + } + + @Override + public Set<Entry<K, C>> entrySet() + { + return map.entrySet(); + } + + @Override + public Set<K> keySet() + { + return map.keySet(); + } + + @Override + public boolean containsKey(Object key) + { + return map.containsKey(key); + } + + @Override + public void clear() + { + map.clear(); + } + + @Override + public int size() + { + return map.size(); + } + + @Override + public C remove(Object key) + { + return map.remove(key); + } + + @Override + public boolean remove(Object key, Object value) + { + C collection = get(key); + return collection != null && collection.remove(value); + } + + } +} Modified: branches/cdomui/code/src/java/pcgen/util/CompactList.java =================================================================== --- branches/cdomui/code/src/java/pcgen/util/CompactList.java 2008-03-19 04:27:21 UTC (rev 5630) +++ branches/cdomui/code/src/java/pcgen/util/CompactList.java 2008-03-19 04:41:45 UTC (rev 5631) @@ -53,8 +53,7 @@ public CompactList(E... elements) { list = new ArrayList<E>(elements.length); - for(E element : elements) - list.add(element); + Collections.addAll(list, elements); } public CompactList(Collection<? extends E> c) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |