r2573 - trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean
Author: kmorin Date: 2013-02-26 16:04:47 +0100 (Tue, 26 Feb 2013) New Revision: 2573 Url: http://nuiton.org/projects/jaxx/repository/revisions/2573 Log: fixes #2535 Add filter and sorted on the BeanDoubleList widget Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.css trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListHandler.java Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.css =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.css 2013-02-26 15:04:07 UTC (rev 2572) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.css 2013-02-26 15:04:47 UTC (rev 2573) @@ -26,6 +26,10 @@ visible: {isFilterable()}; } +#filterFieldLabel { + actionIcon: "filter"; +} + #universeList { model:{model.getUniverseModel()}; } @@ -82,7 +86,7 @@ toolTipText:"beandoublelist.action.reset.tip"; focusable:false; focusPainted:false; - enabled:{isEnabled()}; + enabled:{isShowReset() && isEnabled()}; } #toolbarRight { Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx 2013-02-26 15:04:07 UTC (rev 2572) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx 2013-02-26 15:04:47 UTC (rev 2573) @@ -86,9 +86,12 @@ <row> <cell columns='3' fill='both'> <JPanel layout='{new BorderLayout()}' id='filterPanel'> - <JToolBar id='toolbarLeft' constraints='BorderLayout.WEST'> - <JButton id='resetButton' onActionPerformed='filterField.setText("")'/> - </JToolBar> + <JPanel layout='{new BorderLayout()}' constraints='BorderLayout.WEST'> + <JLabel id='filterFieldLabel' constraints='BorderLayout.WEST'/> + <JToolBar id='toolbarLeft' constraints='BorderLayout.EAST'> + <JButton id='resetButton' onActionPerformed='filterField.setText("")'/> + </JToolBar> + </JPanel> <JTextField id='filterField' constraints='BorderLayout.CENTER'/> <JToolBar id='toolbarRight' constraints='BorderLayout.EAST'> <JToggleButton id='changeDecorator' Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListHandler.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListHandler.java 2013-02-26 15:04:07 UTC (rev 2572) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListHandler.java 2013-02-26 15:04:47 UTC (rev 2573) @@ -24,21 +24,7 @@ * #L% */ -import com.google.common.collect.Lists; -import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; -import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.util.decorator.JXPathDecorator; -import org.nuiton.util.decorator.MultiJXPathDecorator; - -import javax.swing.JList; -import javax.swing.ListSelectionModel; -import javax.swing.event.ListDataEvent; -import javax.swing.event.ListDataListener; -import javax.swing.event.ListSelectionEvent; -import javax.swing.event.ListSelectionListener; +import com.google.common.base.Predicate; import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; @@ -46,17 +32,26 @@ import java.util.Arrays; import java.util.List; import javax.swing.JComponent; +import javax.swing.JList; import javax.swing.JPopupMenu; +import javax.swing.ListSelectionModel; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; -import javax.swing.text.Document; -import javax.swing.text.JTextComponent; +import javax.swing.event.ListDataEvent; +import javax.swing.event.ListDataListener; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.JAXXButtonGroup; import jaxx.runtime.swing.model.JaxxDefaultListModel; import jaxx.runtime.swing.model.JaxxFilterableListModel; -import org.apache.commons.collections.CollectionUtils; +import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; +import jaxx.runtime.swing.renderer.FilteredDecoratorListCellRenderer; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.util.decorator.DecoratorUtil; +import org.nuiton.util.decorator.JXPathDecorator; +import org.nuiton.util.decorator.MultiJXPathDecorator; /** * The handler of a {@link BeanDoubleList}. @@ -79,7 +74,7 @@ /** the decorator of data */ protected MultiJXPathDecorator<O> decorator; - + public BeanDoubleListHandler(BeanDoubleList<O> ui) { this.ui = ui; } @@ -113,7 +108,9 @@ JList universeList = ui.getUniverseList(); JList selectedList = ui.getSelectedList(); - universeList.setCellRenderer(new DecoratorListCellRenderer(this.decorator)); + final FilteredDecoratorListCellRenderer universeListCellRenderer + = new FilteredDecoratorListCellRenderer(this.decorator); + universeList.setCellRenderer(universeListCellRenderer); selectedList.setCellRenderer(new DecoratorListCellRenderer(this.decorator)); // When universe list selection model changed, update the add button enabled property @@ -173,20 +170,28 @@ ui.getFilterField().getDocument().addDocumentListener(new DocumentListener() { public void insertUpdate(DocumentEvent e) { - filterModel.setFilterText(ui.getFilterField().getText()); + String text = ui.getFilterField().getText(); + universeListCellRenderer.setFilterText(text); + filterModel.setFilterText(text); } public void removeUpdate(DocumentEvent e) { - filterModel.setFilterText(ui.getFilterField().getText()); + String text = ui.getFilterField().getText(); + universeListCellRenderer.setFilterText(text); + filterModel.setFilterText(text); } public void changedUpdate(DocumentEvent e) { - filterModel.setFilterText(ui.getFilterField().getText()); + String text = ui.getFilterField().getText(); + universeListCellRenderer.setFilterText(text); + filterModel.setFilterText(text); } }); // select sort button indexes.setSelectedButton(ui.getIndex()); + + sortData(); } /** Toggle the popup visible state. */ @@ -362,8 +367,19 @@ // sort order has changed, force reload of data in ui setSortOrder((Boolean) evt.getOldValue(), (Boolean) evt.getNewValue()); - return; } } + public void addFilter(Predicate<O> filter) { + ((JaxxFilterableListModel) ui.getModel().getUniverseModel()).addFilter(filter); + } + + public void removeFilter(Predicate<O> filter) { + ((JaxxFilterableListModel) ui.getModel().getUniverseModel()).removeFilter(filter); + } + + public void clearFilters() { + ((JaxxFilterableListModel) ui.getModel().getUniverseModel()).clearFilters(); + } + }
participants (1)
-
kmorin@users.nuiton.org