01/01: fixes #3580: Introduce a new FilterableDoubleList widget
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository jaxx. See http://git.nuiton.org/jaxx.git commit 9a8bdfdcee261c2e3ccf340c74fa1b45a6ef7767 Author: Tony CHEMIT <chemit@codelutin.com> Date: Fri Nov 28 13:38:20 2014 +0100 fixes #3580: Introduce a new FilterableDoubleList widget --- .../jaxx/editor/FilterableDoubleListDemo.css | 15 +++-- .../jaxx/editor/FilterableDoubleListDemo.jaxx | 10 +++- .../editor/FilterableDoubleListDemoHandler.java | 65 ++++++++++++++-------- .../jaxx/editor/FilterableDoubleListDemoModel.java | 30 ++++++++++ .../main/resources/i18n/jaxx-demo_en_GB.properties | 2 + .../main/resources/i18n/jaxx-demo_es_ES.properties | 2 + .../main/resources/i18n/jaxx-demo_fr_FR.properties | 2 + .../editor/bean/FilterableDoubleListModel.java | 2 + 8 files changed, 97 insertions(+), 31 deletions(-) diff --git a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FilterableDoubleListDemo.css b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FilterableDoubleListDemo.css index 226397e..558dd9e 100644 --- a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FilterableDoubleListDemo.css +++ b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FilterableDoubleListDemo.css @@ -43,15 +43,20 @@ selected: true; } -#filterOnNachoButton { - text: "jaxxdemo.beandoublelistdemo.filterOnNacho"; - selected: false; -} - #doubleList { + property:"selected"; + bean:{model}; i18nPrefix: "jaxxdemo.common."; filterable: {filterableButton.isSelected()}; showReset: {showResetButton.isSelected()}; showDecorator: {showDecoratorButton.isSelected()}; highlightFilterText: {highlightFilterTextButton.isSelected()}; + selected:{model.getSelected()}; } + +#result { + text: {handler.updateResultText(model.getSelected())}; + contentType: "text/html"; + editable: false; +} + diff --git a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FilterableDoubleListDemo.jaxx b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FilterableDoubleListDemo.jaxx index f0238d2..3fdb6ea 100644 --- a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FilterableDoubleListDemo.jaxx +++ b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FilterableDoubleListDemo.jaxx @@ -26,6 +26,8 @@ org.nuiton.jaxx.widgets.editor.bean.FilterableDoubleList </import> + <FilterableDoubleListDemoModel id="model" initializer='getContextValue(FilterableDoubleListDemoModel.class)'/> + <Table fill='both'> <row> <cell> @@ -34,15 +36,19 @@ <JCheckBox id='highlightFilterTextButton'/> <JCheckBox id='showResetButton'/> <JCheckBox id='showDecoratorButton'/> - <JCheckBox id='filterOnNachoButton'/> </JPanel> </cell> </row> <row> - <cell weighty='1' weightx='1'> + <cell weighty='0.5' weightx='1'> <FilterableDoubleList id='doubleList' genericType='People'/> </cell> </row> + <row> + <cell weighty='0.5' weightx='1'> + <JTextPane id="result"/> + </cell> + </row> </Table> </jaxx.demo.DemoPanel> diff --git a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FilterableDoubleListDemoHandler.java b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FilterableDoubleListDemoHandler.java index 104862f..cbbf467 100644 --- a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FilterableDoubleListDemoHandler.java +++ b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FilterableDoubleListDemoHandler.java @@ -1,18 +1,16 @@ package jaxx.demo.component.jaxx.editor; -import com.google.common.base.Predicate; import jaxx.demo.entities.DemoDataProvider; import jaxx.demo.entities.DemoDecoratorProvider; -import jaxx.demo.entities.Movie; import jaxx.demo.entities.People; import jaxx.runtime.spi.UIHandler; import org.nuiton.decorator.JXPathDecorator; import org.nuiton.jaxx.widgets.editor.bean.FilterableDoubleList; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; import java.util.List; +import static org.nuiton.i18n.I18n.t; + /** * Created on 11/28/14. * @@ -21,40 +19,59 @@ import java.util.List; */ public class FilterableDoubleListDemoHandler implements UIHandler<FilterableDoubleListDemo> { + private JXPathDecorator<People> decorator; + @Override public void beforeInit(FilterableDoubleListDemo ui) { - // nothing to do + + decorator = (JXPathDecorator<People>) new DemoDecoratorProvider().getDecoratorByType(People.class); + + FilterableDoubleListDemoModel model = new FilterableDoubleListDemoModel(); + ui.setContextValue(model); + } @Override public void afterInit(final FilterableDoubleListDemo ui) { + + FilterableDoubleList<People> doubleList = ui.getDoubleList(); + doubleList.setFilterable(true); + DemoDataProvider demoDataProvider = new DemoDataProvider(); List<People> data = demoDataProvider.getPeoples(); - JXPathDecorator<People> decorator = (JXPathDecorator<People>) new DemoDecoratorProvider().getDecoratorByType(People.class); + doubleList.init(decorator, data, null); - FilterableDoubleList<People> doubleList = ui.getDoubleList(); - doubleList.setFilterable(true); - - doubleList.init(decorator, data, data.subList(0, 1)); + ui.getModel().setSelected(data.subList(0, 1)); - final Movie nacho = demoDataProvider.getMovie("0"); - final Predicate<People> filter = new Predicate<People>() { + } - public boolean apply(People input) { - return nacho.getActors().contains(input); - } - }; - ui.getFilterOnNachoButton().addChangeListener(new ChangeListener() { + public String updateResultText(List<People> selected) { + + StringBuilder builder = new StringBuilder(); + if (selected == null || selected.isEmpty()) { + + builder.append(t("jaxxdemo.beandoublelistdemo.noselected")); + + } else { + + builder.append(t("jaxxdemo.beandoublelistdemo.selected")); + builder.append("<ul>"); - public void stateChanged(ChangeEvent e) { - if (ui.getFilterOnNachoButton().isSelected()) { - ui.getDoubleList().getHandler().addFilter(filter); + for (People people : selected) { + + String peopleStr = decorator.toString(people); + builder.append("<li>"); + builder.append(peopleStr); + builder.append("</li>"); - } else { - ui.getDoubleList().getHandler().clearFilters(); - } } - }); + + builder.append("</ul>"); + + } + + return builder.toString(); + } } \ No newline at end of file diff --git a/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FilterableDoubleListDemoModel.java b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FilterableDoubleListDemoModel.java new file mode 100644 index 0000000..83ae669 --- /dev/null +++ b/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/FilterableDoubleListDemoModel.java @@ -0,0 +1,30 @@ +package jaxx.demo.component.jaxx.editor; + +import jaxx.demo.entities.People; +import org.jdesktop.beans.AbstractSerializableBean; + +import java.util.List; + +/** + * Created on 11/28/14. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 2.18 + */ +public class FilterableDoubleListDemoModel extends AbstractSerializableBean { + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_SELECTED = "selected"; + + List<People> selected; + + public List<People> getSelected() { + return selected; + } + + public void setSelected(List<People> selected) { + this.selected = selected; + firePropertyChange(PROPERTY_SELECTED, null, selected); + } +} diff --git a/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties b/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties index 24b70f7..3eed192 100644 --- a/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties +++ b/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties @@ -188,6 +188,8 @@ jaxxdemo.beandoublelistdemo.configuration=Configuration jaxxdemo.beandoublelistdemo.filterOnNacho=Show only the actors playing in Nacho Libre jaxxdemo.beandoublelistdemo.filterable=Filterable jaxxdemo.beandoublelistdemo.highlightFilterText=Highlight the filter text +jaxxdemo.beandoublelistdemo.noselected= +jaxxdemo.beandoublelistdemo.selected= jaxxdemo.beandoublelistdemo.showDecorator=Show decorator button jaxxdemo.beandoublelistdemo.showReset=Show Reset button jaxxdemo.beanfilterablecomboboxdemo.colorizeInvalidComboEditorText=Colorize the text if it not valid diff --git a/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties b/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties index 7d88871..3ff807e 100644 --- a/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties +++ b/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties @@ -188,6 +188,8 @@ jaxxdemo.beandoublelistdemo.configuration= jaxxdemo.beandoublelistdemo.filterOnNacho= jaxxdemo.beandoublelistdemo.filterable= jaxxdemo.beandoublelistdemo.highlightFilterText= +jaxxdemo.beandoublelistdemo.noselected= +jaxxdemo.beandoublelistdemo.selected= jaxxdemo.beandoublelistdemo.showDecorator= jaxxdemo.beandoublelistdemo.showReset= jaxxdemo.beanfilterablecomboboxdemo.colorizeInvalidComboEditorText= diff --git a/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties b/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties index 7911f68..6da2d4f 100644 --- a/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties +++ b/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties @@ -188,6 +188,8 @@ jaxxdemo.beandoublelistdemo.configuration=Configuration jaxxdemo.beandoublelistdemo.filterOnNacho=N'afficher que les acteurs de Nacho Libre jaxxdemo.beandoublelistdemo.filterable=Filtrable jaxxdemo.beandoublelistdemo.highlightFilterText=Surligner le texte de filtre +jaxxdemo.beandoublelistdemo.noselected=< Aucune sélection > +jaxxdemo.beandoublelistdemo.selected=Sélection\: jaxxdemo.beandoublelistdemo.showDecorator=Changer la décoration jaxxdemo.beandoublelistdemo.showReset=Pouvoir réinitialiser le filtre jaxxdemo.beanfilterablecomboboxdemo.colorizeInvalidComboEditorText=Colorer le texte s'il n'est pas valide diff --git a/jaxx-widgets/src/main/java/org/nuiton/jaxx/widgets/editor/bean/FilterableDoubleListModel.java b/jaxx-widgets/src/main/java/org/nuiton/jaxx/widgets/editor/bean/FilterableDoubleListModel.java index 0711b1c..7440ccc 100644 --- a/jaxx-widgets/src/main/java/org/nuiton/jaxx/widgets/editor/bean/FilterableDoubleListModel.java +++ b/jaxx-widgets/src/main/java/org/nuiton/jaxx/widgets/editor/bean/FilterableDoubleListModel.java @@ -235,9 +235,11 @@ public class FilterableDoubleListModel<O extends Serializable> extends AbstractS * @param item the selected item */ public void moveUpSelected(O item) { + int i = selectedModel.indexOf(item); selectedModel.removeElement(item); selectedModel.insertElementAt(item, i - 1); + } /** -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.
participants (1)
-
nuiton.org scm