Author: kmorin Date: 2013-03-09 19:12:23 +0100 (Sat, 09 Mar 2013) New Revision: 2606 Url: http://nuiton.org/projects/jaxx/repository/revisions/2606 Log: fixes #2580 Make a combobox whose elements can be filtered Added: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemo.css trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemo.jaxx trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemoHandler.java Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/tree/DemoDataProvider.java trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties Copied: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemo.css (from rev 2591, trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemo.css) =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemo.css (rev 0) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemo.css 2013-03-09 18:12:23 UTC (rev 2606) @@ -0,0 +1,62 @@ +/* + * #%L + * JAXX :: Demo + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2008 - 2012 CodeLutin + * %% + * This program 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 3 of the + * License, or (at your option) any later version. + * + * This program 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 General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ +#configurationPanel { + border: {new TitledBorder(_("jaxxdemo.beanfilterablecomboboxdemo.configuration"))}; +} + +#filterableButton { + text: "jaxxdemo.beanfilterablecomboboxdemo.filterable"; + selected: true; +} + +#showResetButton { + text: "jaxxdemo.beanfilterablecomboboxdemo.showReset"; + selected: true; +} + +#showDecoratorButton { + text: "jaxxdemo.beanfilterablecomboboxdemo.showDecorator"; + selected: true; +} + +#colorizeInvalidComboEditorTextButton { + text: "jaxxdemo.beanfilterablecomboboxdemo.colorizeInvalidComboEditorText"; + selected: true; +} + +#comboBox { + i18nPrefix: "jaxxdemo.common."; + filterable: {filterableButton.isSelected()}; + showReset: {showResetButton.isSelected()}; + showDecorator: {showDecoratorButton.isSelected()}; + invalidComboEditorTextColor: {colorizeInvalidComboEditorTextButton.isSelected() ? java.awt.Color.RED : null}; +} + +#resultPanel { + border: {new TitledBorder(_("jaxxdemo.beanfilterablecomboboxdemo.result"))}; +} + +#selectedResult { + text: {handler.getSelectedResult(comboBox.getSelectedItem())}; +} Copied: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemo.jaxx (from rev 2591, trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemo.jaxx) =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemo.jaxx (rev 0) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemo.jaxx 2013-03-09 18:12:23 UTC (rev 2606) @@ -0,0 +1,76 @@ +<!-- + #%L + JAXX :: Demo + $Id$ + $HeadURL$ + %% + Copyright (C) 2008 - 2012 CodeLutin + %% + This program 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 3 of the + License, or (at your option) any later version. + + This program 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 General Lesser Public License for more details. + + You should have received a copy of the GNU General Lesser Public + License along with this program. If not, see + <http://www.gnu.org/licenses/lgpl-3.0.html>. + #L% + --> +<jaxx.demo.DemoPanel layout='{new BorderLayout()}'> + + <import> + jaxx.demo.entities.People + jaxx.runtime.swing.editor.bean.BeanFilterableComboBox + </import> + + <BeanFilterableComboBoxDemoHandler id='handler' constructorParams='this'/> + + <Table insets='0' fill='both' weightx='1' constraints='BorderLayout.NORTH'> + <row> + <cell> + <JPanel id='configurationPanel' layout='{new GridLayout(0,1)}'> + <JCheckBox id='filterableButton'/> + <JCheckBox id='showResetButton'/> + <JCheckBox id='showDecoratorButton'/> + <JCheckBox id='colorizeInvalidComboEditorTextButton'/> + </JPanel> + </cell> + </row> + <row> + <cell> + <BeanFilterableComboBox id='comboBox' genericType='People'/> + </cell> + </row> + <row> + <cell> + <JPanel id='resultPanel' layout='{new BorderLayout()}'> + <JLabel id='selectedResult' constraints='BorderLayout.CENTER'/> + </JPanel> + </cell> + </row> + </Table> + + <script><![CDATA[ + +protected void $afterCompleteSetup() { + handler.init(); +} + +@Override +protected String[] getSources() { + return new String[]{ + getDefaultSource(), + "BeanFilterableComboBoxDemo.css", + "BeanFilterableComboBoxDemo.java", + "BeanFilterableComboBoxDemoHandler.java" + }; +} + +]]></script> + +</jaxx.demo.DemoPanel> \ No newline at end of file Copied: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemoHandler.java (from rev 2591, trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemoHandler.java) =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemoHandler.java (rev 0) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanFilterableComboBoxDemoHandler.java 2013-03-09 18:12:23 UTC (rev 2606) @@ -0,0 +1,78 @@ +package jaxx.demo.component.jaxx.editor; + +/* + * #%L + * JAXX :: Demo + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2008 - 2012 CodeLutin + * %% + * This program 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 3 of the + * License, or (at your option) any later version. + * + * This program 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 General Lesser Public License for more details. + * + * You should have received a copy of the GNU General Lesser Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/lgpl-3.0.html>. + * #L% + */ + +import jaxx.demo.entities.DemoDataProvider; +import jaxx.demo.entities.DemoDecoratorProvider; +import jaxx.demo.entities.People; +import org.nuiton.util.decorator.JXPathDecorator; + +import java.util.List; + +import static org.nuiton.i18n.I18n._; +import static org.nuiton.i18n.I18n.n_; + +/** + * Handlerof {@link BeanComboBoxDemo}. + * + * @author kmorin <kmorin@codelutin.com> + * @since 2.5.12 + */ +public class BeanFilterableComboBoxDemoHandler { + + private final BeanFilterableComboBoxDemo ui; + + private final JXPathDecorator<People> decorator; + + public BeanFilterableComboBoxDemoHandler(BeanFilterableComboBoxDemo ui) { + this.ui = ui; + this.decorator = (JXPathDecorator<People>) + new DemoDecoratorProvider().getDecoratorByType(People.class); + } + + public void init() { + List<People> data = new DemoDataProvider().getPeoples(); + + ui.getComboBox().init(decorator, data); + } + + public String getSelectedResult(Object people) { + String result; + + if (people == null || !People.class.isInstance(people)) { + result = _("jaxxdemo.beanfilterablecomboboxdemo.no.people.selected"); + } else { + result = _("jaxxdemo.beanfilterablecomboboxdemo.selected.people", decorator.toString(people)); + } + return result; + } + + static { + n_("jaxxdemo.common.people"); + n_("jaxxdemo.common.firstName"); + n_("jaxxdemo.common.lastName"); + n_("jaxxdemo.common.age"); + } +} Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/tree/DemoDataProvider.java =================================================================== --- trunk/jaxx-demo/src/main/java/jaxx/demo/tree/DemoDataProvider.java 2013-03-09 18:11:38 UTC (rev 2605) +++ trunk/jaxx-demo/src/main/java/jaxx/demo/tree/DemoDataProvider.java 2013-03-09 18:12:23 UTC (rev 2606) @@ -73,6 +73,7 @@ import java.util.Map; import jaxx.demo.component.jaxx.editor.BeanDoubleListDemo; +import jaxx.demo.component.jaxx.editor.BeanFilterableComboBoxDemo; import static org.nuiton.i18n.I18n.n_; /** @@ -164,6 +165,7 @@ FileEditorDemo.class, ListSelectorDemo.class, BeanComboBoxDemo.class, + BeanFilterableComboBoxDemo.class, BeanDoubleListDemo.class ); Modified: trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties =================================================================== --- trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties 2013-03-09 18:11:38 UTC (rev 2605) +++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties 2013-03-09 18:12:23 UTC (rev 2606) @@ -181,6 +181,14 @@ jaxxdemo.beandoublelistdemo.highlightFilterText=Highlight the filter text jaxxdemo.beandoublelistdemo.showDecorator=Show decorator button jaxxdemo.beandoublelistdemo.showReset=Show Reset button +jaxxdemo.beanfilterablecomboboxdemo.colorizeInvalidComboEditorText=Colorize the text if it not valid +jaxxdemo.beanfilterablecomboboxdemo.configuration=Configuration +jaxxdemo.beanfilterablecomboboxdemo.filterable=Filterable +jaxxdemo.beanfilterablecomboboxdemo.no.people.selected=No selection +jaxxdemo.beanfilterablecomboboxdemo.result=Result +jaxxdemo.beanfilterablecomboboxdemo.selected.people=Selection\: %s +jaxxdemo.beanfilterablecomboboxdemo.showDecorator=Show decorator button +jaxxdemo.beanfilterablecomboboxdemo.showReset=Show Reset button jaxxdemo.common.actors=Actors jaxxdemo.common.age=Age jaxxdemo.common.firstName=First name Modified: trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties =================================================================== --- trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties 2013-03-09 18:11:38 UTC (rev 2605) +++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties 2013-03-09 18:12:23 UTC (rev 2606) @@ -181,6 +181,14 @@ jaxxdemo.beandoublelistdemo.highlightFilterText= jaxxdemo.beandoublelistdemo.showDecorator= jaxxdemo.beandoublelistdemo.showReset= +jaxxdemo.beanfilterablecomboboxdemo.colorizeInvalidComboEditorText= +jaxxdemo.beanfilterablecomboboxdemo.configuration= +jaxxdemo.beanfilterablecomboboxdemo.filterable= +jaxxdemo.beanfilterablecomboboxdemo.no.people.selected= +jaxxdemo.beanfilterablecomboboxdemo.result= +jaxxdemo.beanfilterablecomboboxdemo.selected.people= +jaxxdemo.beanfilterablecomboboxdemo.showDecorator= +jaxxdemo.beanfilterablecomboboxdemo.showReset= jaxxdemo.common.actors=Acteurs jaxxdemo.common.age=Age jaxxdemo.common.firstName=Prénom Modified: trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties =================================================================== --- trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties 2013-03-09 18:11:38 UTC (rev 2605) +++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties 2013-03-09 18:12:23 UTC (rev 2606) @@ -181,6 +181,14 @@ jaxxdemo.beandoublelistdemo.highlightFilterText=Surligner le texte de filtre 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 +jaxxdemo.beanfilterablecomboboxdemo.configuration=Configuration +jaxxdemo.beanfilterablecomboboxdemo.filterable=Filtrable +jaxxdemo.beanfilterablecomboboxdemo.no.people.selected=Pas de sélection +jaxxdemo.beanfilterablecomboboxdemo.result=Résultat +jaxxdemo.beanfilterablecomboboxdemo.selected.people=Sélection \: %s +jaxxdemo.beanfilterablecomboboxdemo.showDecorator=Changer la décoration +jaxxdemo.beanfilterablecomboboxdemo.showReset=Pouvoir réinitialiser jaxxdemo.common.actors=Acteurs jaxxdemo.common.age=Age jaxxdemo.common.firstName=Prénom
participants (1)
-
kmorin@users.nuiton.org