From: <cpm...@us...> - 2011-03-06 23:46:33
|
Revision: 14680 http://pcgen.svn.sourceforge.net/pcgen/?rev=14680&view=rev Author: cpmeister Date: 2011-03-06 23:46:26 +0000 (Sun, 06 Mar 2011) Log Message: ----------- UI update - Advanced Loading Screen redesign. - All TreeTables now show tooltips in the tree columns. - Search filters now show results who contain the search string, not just begin with it. Modified Paths: -------------- sandbox/uisync/code/src/java/pcgen/gui2/filter2/SearchFilterPanel.java sandbox/uisync/code/src/java/pcgen/gui2/sources/AdvancedSourceSelectionPanel.java sandbox/uisync/code/src/java/pcgen/gui2/util/JTreeTable.java sandbox/uisync/code/src/java/pcgen/gui2/util/treeview/TreeViewTableModel.java Modified: sandbox/uisync/code/src/java/pcgen/gui2/filter2/SearchFilterPanel.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/gui2/filter2/SearchFilterPanel.java 2011-03-06 21:02:42 UTC (rev 14679) +++ sandbox/uisync/code/src/java/pcgen/gui2/filter2/SearchFilterPanel.java 2011-03-06 23:46:26 UTC (rev 14680) @@ -72,7 +72,7 @@ public boolean accept(Object context, Object element) { - return StringUtils.startsWithIgnoreCase(element.toString(), searchField.getText()); + return StringUtils.containsIgnoreCase(element.toString(), searchField.getText()); } public Component getFilterComponent() Modified: sandbox/uisync/code/src/java/pcgen/gui2/sources/AdvancedSourceSelectionPanel.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/gui2/sources/AdvancedSourceSelectionPanel.java 2011-03-06 21:02:42 UTC (rev 14679) +++ sandbox/uisync/code/src/java/pcgen/gui2/sources/AdvancedSourceSelectionPanel.java 2011-03-06 23:46:26 UTC (rev 14680) @@ -21,21 +21,26 @@ package pcgen.gui2.sources; import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.Dimension; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import javax.swing.BorderFactory; +import javax.swing.DefaultListCellRenderer; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.ListModel; import javax.swing.ListSelectionModel; -import javax.swing.SwingUtilities; +import javax.swing.border.TitledBorder; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; +import javax.swing.tree.DefaultMutableTreeNode; import pcgen.core.facade.GameModeFacade; import pcgen.core.facade.CampaignFacade; import pcgen.core.facade.util.DefaultListFacade; @@ -44,15 +49,18 @@ import pcgen.core.facade.SourceSelectionFacade; import pcgen.core.facade.event.ListEvent; import pcgen.core.facade.event.ListListener; -import pcgen.gui2.filter.FilterableTreeViewModel; -import pcgen.gui2.tools.ChooserPane; -import pcgen.gui2.tools.FilteredTreeViewSelectionPanel; -import pcgen.gui2.util.JTreeViewSelectionPane.SelectionType; +import pcgen.gui2.filter2.FilterBar; +import pcgen.gui2.filter2.FilterUtilities; +import pcgen.gui2.filter2.FilteredTreeViewTable; +import pcgen.gui2.tools.InfoPane; import pcgen.gui2.util.SortedListModel; +import pcgen.gui2.util.table.TableUtils; import pcgen.gui2.util.treeview.DataView; import pcgen.gui2.util.treeview.DataViewColumn; import pcgen.gui2.util.treeview.TreeView; +import pcgen.gui2.util.treeview.TreeViewModel; import pcgen.gui2.util.treeview.TreeViewPath; +import pcgen.gui2.util.treeview.TreeViewTableModel; import pcgen.system.FacadeFactory; import pcgen.util.Comparators; @@ -60,65 +68,135 @@ * * @author Connor Petty <cpm...@us...> */ -class AdvancedSourceSelectionPanel extends ChooserPane - implements ItemListener, ListSelectionListener +class AdvancedSourceSelectionPanel extends JPanel + implements ListSelectionListener { - private FilteredTreeViewSelectionPanel selectionPanel; + private FilteredTreeViewTable selectionTable; private SourceTreeViewModel treeViewModel; + private InfoPane infoPane; private GameModeFacade gameMode; private JList gameModeList; + private List<CampaignFacade> selectedCampaigns; public AdvancedSourceSelectionPanel() { - this.selectionPanel = new FilteredTreeViewSelectionPanel(); - this.treeViewModel = new SourceTreeViewModel(); - this.gameModeList = new JList(); - initComponents(); - if (!SwingUtilities.isEventDispatchThread()) + this.selectionTable = new FilteredTreeViewTable() { - try + + @Override + protected TreeViewTableModel createDefaultTreeViewTableModel(DataView dataView) { - SwingUtilities.invokeAndWait(new Runnable() + return new TreeViewTableModel(dataView) { - public void run() + @Override + public Class getColumnClass(int column) { - initDefaults(); + if (column == -1) + { + return Boolean.class; + } + return super.getColumnClass(column); } - }); + @Override + public Object getValueAt(Object node, int column) + { + if (column == -1) + { + if (!(((DefaultMutableTreeNode) node).getUserObject() instanceof CampaignFacade)) + { + return null; + } + CampaignFacade camp = (CampaignFacade) ((DefaultMutableTreeNode) node).getUserObject(); + return selectedCampaigns.contains(camp); + } + return super.getValueAt(node, column); + } + + @Override + public boolean isCellEditable(Object node, int column) + { + if (column == -1) + { + return ((DefaultMutableTreeNode) node).getUserObject() instanceof CampaignFacade; + } + return super.isCellEditable(node, column); + } + + @Override + public void setValueAt(Object aValue, Object node, int column) + { + CampaignFacade camp = (CampaignFacade) ((DefaultMutableTreeNode) node).getUserObject(); + Boolean value = (Boolean) aValue; + if (value) + { + selectedCampaigns.add(camp); + } + else + { + selectedCampaigns.remove(camp); + } + } + + }; } - catch (Exception ex) - { - //not much we can do about this - } - } - else - { - initDefaults(); - } + }; + this.treeViewModel = new SourceTreeViewModel(); + this.gameModeList = new JList(); + this.infoPane = new InfoPane(); + this.selectedCampaigns = new ArrayList<CampaignFacade>(); + initComponents(); + initDefaults(); } private void initComponents() { - selectionPanel.restoreState(selectionPanel.createState(null, treeViewModel)); - selectionPanel.setSelectionType(SelectionType.CHECKBOX); - selectionPanel.addItemListener(this); - setPrimaryChooserComponent(selectionPanel); - + setLayout(new BorderLayout()); JPanel panel = new JPanel(); panel.setLayout(new BorderLayout()); - panel.add(new JLabel("GameModes"), BorderLayout.NORTH); + panel.setBorder(BorderFactory.createTitledBorder(null, "GameModes", + TitledBorder.CENTER, + TitledBorder.DEFAULT_POSITION)); + //panel.add(new JLabel("GameModes"), BorderLayout.NORTH); ListModel gameModes = new SortedListModel<GameModeFacade>(FacadeFactory.getGameModes(), - Comparators.toStringIgnoreCaseCollator()); - //final GenericListModel<GameModeFacade> gameModes = FacadeFactory.getGameModes(); + Comparators.toStringIgnoreCaseCollator()); gameModeList.setModel(gameModes); + gameModeList.setCellRenderer(new DefaultListCellRenderer() + { + + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) + { + value = ((GameModeFacade) value).getName(); + return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + } + + }); gameModeList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); gameModeList.addListSelectionListener(this); panel.add(new JScrollPane(gameModeList), BorderLayout.CENTER); - setSecondaryChooserComponent(panel); + + add(panel, BorderLayout.WEST); + + FilterBar bar = FilterUtilities.createDefaultFilterBar(); + panel = new JPanel(new BorderLayout()); + panel.add(bar, BorderLayout.NORTH); + + selectionTable.setDisplayableFilter(bar); + selectionTable.setTreeViewModel(treeViewModel); + selectionTable.toggleSort(0); + JScrollPane pane = TableUtils.createCheckBoxSelectionPane(selectionTable, TableUtils.createDefaultTable()); + pane.setPreferredSize(new Dimension(400, 400)); + panel.add(pane, BorderLayout.CENTER); + + add(panel, BorderLayout.CENTER); + + //infoPane.setMinimumSize(new Dimension(250, 100)); + infoPane.setPreferredSize(new Dimension(250, 200)); + add(infoPane, BorderLayout.EAST); } private void initDefaults() @@ -136,40 +214,29 @@ public List<CampaignFacade> getSelectedCampaigns() { - List<CampaignFacade> sources = new ArrayList<CampaignFacade>(); - Object[] array = selectionPanel.getSelectedObjects(); - for (Object object : array) - { - sources.add((CampaignFacade) object); - } - return sources; + return selectedCampaigns; } public void setSourceSelection(SourceSelectionFacade sources) { gameModeList.setSelectedValue(sources.getGameMode().getReference(), true); - selectionPanel.setSelectedObjects(ListFacades.wrap(sources.getCampaigns())); + selectedCampaigns.clear(); + selectedCampaigns.addAll(ListFacades.wrap(sources.getCampaigns())); + //selectionPanel.setSelectedObjects(ListFacades.wrap(sources.getCampaigns())); } private void setSelectedGameMode(GameModeFacade elementAt) { this.gameMode = elementAt; + selectedCampaigns.clear(); treeViewModel.setGameModel(elementAt); } private void setSelectedCampaign(CampaignFacade source) { - setInfoPaneText(source.getInfo()); + //setInfoPaneText(source.getInfo()); } - public void itemStateChanged(ItemEvent e) - { - if (e.getStateChange() == ItemEvent.SELECTED) - { - setSelectedCampaign((CampaignFacade) e.getItem()); - } - } - public void valueChanged(ListSelectionEvent e) { if (!e.getValueIsAdjusting()) @@ -179,7 +246,7 @@ } private static class SourceTreeViewModel - implements FilterableTreeViewModel<CampaignFacade>, DataView<CampaignFacade>, ListListener<CampaignFacade> + implements TreeViewModel<CampaignFacade>, DataView<CampaignFacade>, ListListener<CampaignFacade> { private static ListFacade<TreeView<CampaignFacade>> views = @@ -192,11 +259,6 @@ this.model = new DefaultListFacade<CampaignFacade>(); } - public Class<CampaignFacade> getFilterClass() - { - return CampaignFacade.class; - } - public ListFacade<? extends TreeView<CampaignFacade>> getTreeViews() { return views; Modified: sandbox/uisync/code/src/java/pcgen/gui2/util/JTreeTable.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/gui2/util/JTreeTable.java 2011-03-06 21:02:42 UTC (rev 14679) +++ sandbox/uisync/code/src/java/pcgen/gui2/util/JTreeTable.java 2011-03-06 23:46:26 UTC (rev 14680) @@ -509,6 +509,13 @@ paintBorder(g); } + @Override + protected void setValue(Object value) + { + super.setValue(value); + setToolTipText(getText()); + } + }; //TODO: this code doesn't belong here DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer(); Modified: sandbox/uisync/code/src/java/pcgen/gui2/util/treeview/TreeViewTableModel.java =================================================================== --- sandbox/uisync/code/src/java/pcgen/gui2/util/treeview/TreeViewTableModel.java 2011-03-06 21:02:42 UTC (rev 14679) +++ sandbox/uisync/code/src/java/pcgen/gui2/util/treeview/TreeViewTableModel.java 2011-03-06 23:46:26 UTC (rev 14680) @@ -180,13 +180,13 @@ } @Override - public final Class<?> getColumnClass(int column) + public Class<?> getColumnClass(int column) { return getDataColumn(column).getDataClass(); } @Override - public final String getColumnName(int column) + public String getColumnName(int column) { return getDataColumn(column).getName(); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |