From: <cpm...@us...> - 2008-06-22 05:07:17
|
Revision: 6817 http://pcgen.svn.sourceforge.net/pcgen/?rev=6817&view=rev Author: cpmeister Date: 2008-06-21 21:51:24 -0700 (Sat, 21 Jun 2008) Log Message: ----------- type safety support Modified Paths: -------------- branches/cdomui/code/src/java/pcgen/gui/core/UIContext.java branches/cdomui/code/src/java/pcgen/gui/filter/FilterList.java branches/cdomui/code/src/java/pcgen/gui/filter/FilterListEvent.java branches/cdomui/code/src/java/pcgen/gui/filter/FilterListListener.java branches/cdomui/code/src/java/pcgen/gui/filter/FilterPanel.java branches/cdomui/code/src/java/pcgen/gui/filter/FilterPanelListener.java Modified: branches/cdomui/code/src/java/pcgen/gui/core/UIContext.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/core/UIContext.java 2008-06-22 04:46:58 UTC (rev 6816) +++ branches/cdomui/code/src/java/pcgen/gui/core/UIContext.java 2008-06-22 04:51:24 UTC (rev 6817) @@ -28,5 +28,5 @@ * @author Connor Petty <cpm...@us...> */ public interface UIContext { - public FilterList getToggleFilters(Class<?> c); + public <T> FilterList<T> getToggleFilters(Class<T> c); } Modified: branches/cdomui/code/src/java/pcgen/gui/filter/FilterList.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/filter/FilterList.java 2008-06-22 04:46:58 UTC (rev 6816) +++ branches/cdomui/code/src/java/pcgen/gui/filter/FilterList.java 2008-06-22 04:51:24 UTC (rev 6817) @@ -28,44 +28,45 @@ * * @author Connor Petty <cpm...@us...> */ -public class FilterList +public class FilterList<E> { - private final List<FilterListListener> listeners; - private List<NamedFilter> filters = null; + private final List<FilterListListener<E>> listeners; + private List<NamedFilter<? super E>> filters = null; public FilterList() { - this.listeners = new LinkedList<FilterListListener>(); + this.listeners = new LinkedList<FilterListListener<E>>(); this.filters = Collections.emptyList(); } - public void setFilters(List<NamedFilter> filters) + public void setFilters(List<NamedFilter<? super E>> filters) { - FilterListEvent event = new FilterListEvent(this, this.filters, filters); + FilterListEvent<E> event = new FilterListEvent<E>(this, this.filters, + filters); this.filters = filters; fireFiltersChanged(event); } - private void fireFiltersChanged(FilterListEvent event) + private void fireFiltersChanged(FilterListEvent<E> event) { - for (FilterListListener listener : listeners) + for (FilterListListener<E> listener : listeners) { listener.filtersChanged(event); } } - public void addFilterListListener(FilterListListener listener) + public void addFilterListListener(FilterListListener<E> listener) { listeners.add(listener); } - public void removeFilterListListener(FilterListListener listener) + public void removeFilterListListener(FilterListListener<E> listener) { listeners.remove(listener); } - public List<NamedFilter> getFilters() + public List<NamedFilter<? super E>> getFilters() { return filters; } Modified: branches/cdomui/code/src/java/pcgen/gui/filter/FilterListEvent.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/filter/FilterListEvent.java 2008-06-22 04:46:58 UTC (rev 6816) +++ branches/cdomui/code/src/java/pcgen/gui/filter/FilterListEvent.java 2008-06-22 04:51:24 UTC (rev 6817) @@ -27,12 +27,15 @@ * * @author Connor Petty <cpm...@us...> */ -public class FilterListEvent extends EventObject +public class FilterListEvent<E> extends EventObject { - private List<NamedFilter> oldFilters; - private List<NamedFilter> newFilters; - public FilterListEvent(FilterList source, List<NamedFilter> oldFilters, List<NamedFilter> newFilters) + private List<NamedFilter<? super E>> oldFilters; + private List<NamedFilter<? super E>> newFilters; + + public FilterListEvent(FilterList source, + List<NamedFilter<? super E>> oldFilters, + List<NamedFilter<? super E>> newFilters) { super(source); this.oldFilters = oldFilters; @@ -45,12 +48,14 @@ return (FilterList) super.getSource(); } - public List<NamedFilter> getOldFilters() + public List<NamedFilter<? super E>> getOldFilters() { return oldFilters; } - public List<NamedFilter> getNewFilters() + + public List<NamedFilter<? super E>> getNewFilters() { return newFilters; } + } Modified: branches/cdomui/code/src/java/pcgen/gui/filter/FilterListListener.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/filter/FilterListListener.java 2008-06-22 04:46:58 UTC (rev 6816) +++ branches/cdomui/code/src/java/pcgen/gui/filter/FilterListListener.java 2008-06-22 04:51:24 UTC (rev 6817) @@ -27,6 +27,6 @@ * * @author Connor Petty <cpm...@us...> */ -public interface FilterListListener extends EventListener{ - public void filtersChanged(FilterListEvent event); +public interface FilterListListener<E> extends EventListener{ + public void filtersChanged(FilterListEvent<E> event); } Modified: branches/cdomui/code/src/java/pcgen/gui/filter/FilterPanel.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/filter/FilterPanel.java 2008-06-22 04:46:58 UTC (rev 6816) +++ branches/cdomui/code/src/java/pcgen/gui/filter/FilterPanel.java 2008-06-22 04:51:24 UTC (rev 6817) @@ -22,6 +22,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import javax.swing.AbstractAction; @@ -41,91 +42,70 @@ * * @author Connor Petty <cpm...@us...> */ -public class FilterPanel extends JPanel +public class FilterPanel<E> extends JPanel { private static final String filterString = PropertyFactory.getString("in_filter") + ":"; private static final String clearString = PropertyFactory.getString("in_clear"); private static final String advancedString = PropertyFactory.getString("in_demAdv"); - private final FilterPanelListener listener; + private final List<Filter<? super E>> selectedFilters; + private final List<JToggleButton> filterbuttons; + private final FilterPanelListener<E> listener; private final JTextField textfield; - private List<JToggleButton> filterbuttons; - private FilterList filters; - public FilterPanel(UIContext context, Class<?> filterclass, - FilterPanelListener listener) + public FilterPanel(UIContext context, Class<E> filterclass, + FilterPanelListener<E> listener) { this.textfield = new JTextField(); this.listener = listener; initComponents(); - - this.filters = context.getToggleFilters(filterclass); + + FilterList<E> filters = context.getToggleFilters(filterclass); filters.addFilterListListener( - new FilterListListener() + new FilterListListener<E>() { - public void filtersChanged(FilterListEvent event) + public void filtersChanged(FilterListEvent<E> event) { setFilterButtons(event.getNewFilters()); } }); + this.selectedFilters = new ArrayList<Filter<? super E>>(); + this.filterbuttons = new LinkedList<JToggleButton>(); setFilterButtons(filters.getFilters()); } - private void setFilterButtons(List<NamedFilter> filters) + private void setFilterButtons(List<NamedFilter<? super E>> filters) { - List<NamedFilter> toggledfilters = new LinkedList<NamedFilter>(); - if (filterbuttons == null) + for (JToggleButton button : filterbuttons) { - filterbuttons = new LinkedList<JToggleButton>(); + remove(button); } - else - { - for (JToggleButton button : filterbuttons) - { - if (button.isSelected()) - { - toggledfilters.add(((FilterAction)button.getAction()).getFilter()); - } - remove(button); - } - filterbuttons.clear(); - } + filterbuttons.clear(); - for (NamedFilter filter : filters) + boolean updateFilters = selectedFilters.retainAll(filters); + + for (NamedFilter<? super E> filter : filters) { JToggleButton button = new JToggleButton(new FilterAction(filter)); - button.setSelected(toggledfilters.contains(filter)); + button.setSelected(selectedFilters.contains(filter)); filterbuttons.add(button); add(button); } - } - private class FilterAction extends AbstractAction - { - - private NamedFilter filter; - - public FilterAction(NamedFilter filter) + if (updateFilters) { - this.filter = filter; - putValue(NAME, filter.getName()); - putValue(SHORT_DESCRIPTION, filter.getShortDescription()); - putValue(LONG_DESCRIPTION, filter.getLongDescription()); + fireApplyFilter(); } + } - public NamedFilter getFilter() - { - return filter; - } - - public void actionPerformed(ActionEvent e) - { - throw new UnsupportedOperationException("Not supported yet."); - } - + private void fireApplyFilter() + { + String text = textfield.getText(); + boolean qFilter = text != null && !text.equals(""); + listener.applyFilter(new ObjectFilter(text, qFilter), qFilter); } private void initComponents() @@ -162,17 +142,17 @@ public void insertUpdate(DocumentEvent e) { - updateFilter(); + fireApplyFilter(); } public void removeUpdate(DocumentEvent e) { - updateFilter(); + fireApplyFilter(); } public void changedUpdate(DocumentEvent e) { - updateFilter(); + fireApplyFilter(); } }); @@ -188,19 +168,63 @@ add(toolbar); } - private void updateFilter() + private class ObjectFilter implements Filter<E> { - String text = textfield.getText(); - if (text.length() == 0) + + private final boolean qFilter; + private final String text; + + public ObjectFilter(String text, boolean qFilter) { - listener.filtersChanged(); + this.qFilter = qFilter; + this.text = text; } - else + + public boolean accept(E object) { - listener.filtersChanged(); + boolean accept = qFilter && text.equals(object.toString()); + if (accept) + { + for (Filter<? super E> filter : selectedFilters) + { + if (!filter.accept(object)) + { + accept = false; + break; + } + } + } + return accept; } + } + private class FilterAction extends AbstractAction + { + + private NamedFilter<? super E> filter; + + public FilterAction(NamedFilter<? super E> filter) + { + this.filter = filter; + putValue(NAME, filter.getName()); + putValue(SHORT_DESCRIPTION, filter.getShortDescription()); + putValue(LONG_DESCRIPTION, filter.getLongDescription()); + } + + public NamedFilter getFilter() + { + return filter; + } + + public void actionPerformed(ActionEvent e) + { + selectedFilters.add(filter); + fireApplyFilter(); + } + + } + private class AdvancedAction extends AbstractAction { Modified: branches/cdomui/code/src/java/pcgen/gui/filter/FilterPanelListener.java =================================================================== --- branches/cdomui/code/src/java/pcgen/gui/filter/FilterPanelListener.java 2008-06-22 04:46:58 UTC (rev 6816) +++ branches/cdomui/code/src/java/pcgen/gui/filter/FilterPanelListener.java 2008-06-22 04:51:24 UTC (rev 6817) @@ -25,6 +25,6 @@ * * @author Connor Petty <cpm...@us...> */ -public interface FilterPanelListener extends FilterListListener{ - public void filtersChanged(); +public interface FilterPanelListener<E>{ + public void applyFilter(Filter<E> filter, boolean quicksearch); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |