Jaxx-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- 3898 discussions
r2544 - in trunk/jaxx-demo: . src/main/java/jaxx/demo/component/jaxx/editor src/main/java/jaxx/demo/feature/nav/content src/main/java/jaxx/demo/tree src/main/resources/i18n
by tchemitï¼ users.nuiton.org 30 Dec '12
by tchemitï¼ users.nuiton.org 30 Dec '12
30 Dec '12
Author: tchemit
Date: 2012-12-30 15:33:33 +0100 (Sun, 30 Dec 2012)
New Revision: 2544
Url: http://nuiton.org/projects/jaxx/repository/revisions/2544
Log:
fixes #2495: Add BeanComboBox demo
refs #2494: Use the genericType to fill the beanType property on BeanTypeAware widgets (use it in demo!)
Added:
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemo.css
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemoHandler.java
Modified:
trunk/jaxx-demo/pom.xml
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemoHandler.java
trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/AbstractContentUI.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/ActorContentUI.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/ActorsContentUI.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/MovieContentUI.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/MoviesContentUI.jaxx
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
Modified: trunk/jaxx-demo/pom.xml
===================================================================
--- trunk/jaxx-demo/pom.xml 2012-12-30 14:32:25 UTC (rev 2543)
+++ trunk/jaxx-demo/pom.xml 2012-12-30 14:33:33 UTC (rev 2544)
@@ -132,11 +132,6 @@
<artifactId>rsyntaxtextarea</artifactId>
</dependency>
- <!--dependency>
- <groupId>org.nuiton.thirdparty</groupId>
- <artifactId>rsyntaxtextarea</artifactId>
- </dependency-->
-
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
@@ -165,6 +160,7 @@
<jaxx.addProjectClassPath>true</jaxx.addProjectClassPath>
<jaxx.addSourcesToClassPath>true</jaxx.addSourcesToClassPath>
<jaxx.autoImportCss>true</jaxx.autoImportCss>
+ <jaxx.autoRecurseInCss>false</jaxx.autoRecurseInCss>
<!-- generate license bundled files -->
<license.generateBundle>true</license.generateBundle>
Added: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemo.css
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemo.css (rev 0)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemo.css 2012-12-30 14:33:33 UTC (rev 2544)
@@ -0,0 +1,56 @@
+/*
+ * #%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.beancomboboxdemo.configuration"))};
+}
+
+#autoCompleteButton {
+ text: "jaxxdemo.beancomboboxdemo.autoComplete";
+ selected: true;
+}
+
+#showResetButton {
+ text: "jaxxdemo.beancomboboxdemo.showReset";
+ selected: true;
+}
+
+#showDecoratorButton {
+ text: "jaxxdemo.beancomboboxdemo.showDecorator";
+ selected: true;
+}
+
+#comboBox {
+ i18nPrefix: "jaxxdemo.common.";
+ autoComplete: {autoCompleteButton.isSelected()};
+ showReset: {showResetButton.isSelected()};
+ showDecorator: {showDecoratorButton.isSelected()};
+}
+
+#resultPanel {
+ border: {new TitledBorder(_("jaxxdemo.beancomboboxdemo.result"))};
+}
+
+#selectedResult {
+ text: {handler.getSelectedResult((People) comboBox.getSelectedItem())};
+}
Property changes on: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemo.css
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemo.jaxx (rev 0)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemo.jaxx 2012-12-30 14:33:33 UTC (rev 2544)
@@ -0,0 +1,75 @@
+<!--
+ #%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.BeanComboBox
+ </import>
+
+ <BeanComboBoxDemoHandler 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='autoCompleteButton'/>
+ <JCheckBox id='showResetButton'/>
+ <JCheckBox id='showDecoratorButton'/>
+ </JPanel>
+ </cell>
+ </row>
+ <row>
+ <cell>
+ <BeanComboBox 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(),
+ "BeanComboBoxDemo.css",
+ "BeanComboBoxDemo.java",
+ "BeanComboBoxDemoHandler.java"
+ };
+}
+
+]]></script>
+
+</jaxx.demo.DemoPanel>
\ No newline at end of file
Property changes on: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemo.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemoHandler.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemoHandler.java (rev 0)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemoHandler.java 2012-12-30 14:33:33 UTC (rev 2544)
@@ -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 tchemit <chemit(a)codelutin.com>
+ * @since 2.5.9
+ */
+public class BeanComboBoxDemoHandler {
+
+ private final BeanComboBoxDemo ui;
+
+ private final JXPathDecorator<People> decorator;
+
+ public BeanComboBoxDemoHandler(BeanComboBoxDemo 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(People people) {
+ String result;
+
+ if (people == null) {
+ result = _("jaxxdemo.beancomboboxdemo.no.people.selected");
+ } else {
+ result = _("jaxxdemo.beancomboboxdemo.selected.people", decorator.toString(people));
+ }
+ return result;
+ }
+
+ static {
+ n_("jaxxdemo.common.people");
+ n_("jaxxdemo.common.firstName");
+ n_("jaxxdemo.common.lastName");
+ n_("jaxxdemo.common.age");
+ }
+}
Property changes on: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanComboBoxDemoHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemo.jaxx 2012-12-30 14:32:25 UTC (rev 2543)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemo.jaxx 2012-12-30 14:33:33 UTC (rev 2544)
@@ -1,3 +1,26 @@
+<!--
+ #%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>
@@ -10,7 +33,7 @@
<Table fill='both'>
<row>
<cell weighty='1' weightx='1'>
- <BeanDoubleList id='doubleList' beanType='{People.class}'/>
+ <BeanDoubleList id='doubleList' genericType='People'/>
</cell>
</row>
</Table>
@@ -21,6 +44,14 @@
handler.init();
}
+@Override
+protected String[] getSources() {
+ return new String[]{
+ getDefaultSource(),
+ "BeanDoubleListDemoHandler.java",
+ };
+}
+
]]></script>
</jaxx.demo.DemoPanel>
\ No newline at end of file
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemoHandler.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemoHandler.java 2012-12-30 14:32:25 UTC (rev 2543)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemoHandler.java 2012-12-30 14:33:33 UTC (rev 2544)
@@ -4,30 +4,50 @@
*/
package jaxx.demo.component.jaxx.editor;
-import java.util.ArrayList;
-import java.util.List;
+/*
+ * #%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 jaxx.runtime.SwingUtil;
import org.nuiton.util.decorator.JXPathDecorator;
-/**
- *
- * @author kmorin
- */
+import java.util.List;
+
+/** @author kmorin */
public class BeanDoubleListDemoHandler {
-
+
private BeanDoubleListDemo ui;
public BeanDoubleListDemoHandler(BeanDoubleListDemo ui) {
this.ui = ui;
}
-
+
public void init() {
List<People> data = new DemoDataProvider().getPeoples();
JXPathDecorator<People> decorator = (JXPathDecorator<People>) new DemoDecoratorProvider().getDecoratorByType(People.class);
this.ui.getDoubleList().init(decorator, data, data.subList(0, 1));
}
-
+
}
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/AbstractContentUI.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/AbstractContentUI.jaxx 2012-12-30 14:32:25 UTC (rev 2543)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/AbstractContentUI.jaxx 2012-12-30 14:33:33 UTC (rev 2544)
@@ -22,9 +22,7 @@
#L%
-->
-<JPanel abstract='true'
- layout='{new BorderLayout()}'
- genericType='B'>
+<JPanel abstract='true' layout='{new BorderLayout()}' genericType='B'>
<import>
jaxx.demo.feature.nav.NavDemoHandler
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/ActorContentUI.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/ActorContentUI.jaxx 2012-12-30 14:32:25 UTC (rev 2543)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/ActorContentUI.jaxx 2012-12-30 14:33:33 UTC (rev 2544)
@@ -31,21 +31,17 @@
<People id='data' javaBean='null'/>
- <JSplitPane id='splitPane'
- orientation='{JSplitPane.VERTICAL_SPLIT}'
- resizeWeight='0.5'
- constraints='BorderLayout.CENTER'
+ <JSplitPane id='splitPane' orientation='{JSplitPane.VERTICAL_SPLIT}'
+ resizeWeight='0.5' constraints='BorderLayout.CENTER'
oneTouchExpandable='true'>
<JScrollPane border='{null}'
horizontalScrollBarPolicy='{JScrollPane.HORIZONTAL_SCROLLBAR_NEVER}'
verticalScrollBarPolicy='{JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED}'>
- <JTextPane
- border='{new TitledBorder(_("jaxxdemo.navigation.actor.title"))}'
- editable='false'
- font-size='11'
- text='{getHandler().getContent(getData())}'/>
+ <JTextPane editable='false' font-size='11'
+ border='{new TitledBorder(_("jaxxdemo.navigation.actor.title"))}'
+ text='{getHandler().getContent(getData())}'/>
</JScrollPane>
<JScrollPane border='{new TitledBorder("Picture")}'
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/ActorsContentUI.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/ActorsContentUI.jaxx 2012-12-30 14:32:25 UTC (rev 2543)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/ActorsContentUI.jaxx 2012-12-30 14:33:33 UTC (rev 2544)
@@ -71,10 +71,8 @@
</JPanel>
<BeanListHeader id='listHeader' constraints='BorderLayout.EAST'
- i18nPrefix='jaxxdemo.common.'
- data='{getData()}' genericType='People'
- list='{list}' showReset='true'
- beanType='{People.class}'/>
+ i18nPrefix='jaxxdemo.common.' genericType='People'
+ data='{getData()}' list='{list}' showReset='true'/>
</JToolBar>
</JScrollPane>
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/MovieContentUI.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/MovieContentUI.jaxx 2012-12-30 14:32:25 UTC (rev 2543)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/MovieContentUI.jaxx 2012-12-30 14:33:33 UTC (rev 2544)
@@ -31,10 +31,8 @@
<Movie id='data' javaBean='null'/>
- <JSplitPane id='splitPane'
- orientation='{JSplitPane.VERTICAL_SPLIT}'
- resizeWeight='0.5'
- constraints='BorderLayout.CENTER'
+ <JSplitPane id='splitPane' orientation='{JSplitPane.VERTICAL_SPLIT}'
+ resizeWeight='0.5' constraints='BorderLayout.CENTER'
oneTouchExpandable='true'>
<JScrollPane border='{null}'
@@ -43,8 +41,7 @@
<JTextPane
border='{new TitledBorder(_("jaxxdemo.navigation.movie.title"))}'
- editable='false'
- font-size='11'
+ editable='false' font-size='11'
text='{getHandler().getContent(getData())}'/>
</JScrollPane>
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/MoviesContentUI.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/MoviesContentUI.jaxx 2012-12-30 14:32:25 UTC (rev 2543)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/feature/nav/content/MoviesContentUI.jaxx 2012-12-30 14:33:33 UTC (rev 2544)
@@ -73,8 +73,7 @@
<BeanListHeader id='listHeader' constraints='BorderLayout.EAST'
i18nPrefix='jaxxdemo.common.'
data='{getData()}' genericType='Movie'
- list='{list}' showReset='true'
- beanType='{Movie.class}'/>
+ list='{list}' showReset='true'/>
</JToolBar>
</JScrollPane>
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/tree/DemoDataProvider.java
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/tree/DemoDataProvider.java 2012-12-30 14:32:25 UTC (rev 2543)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/tree/DemoDataProvider.java 2012-12-30 14:33:33 UTC (rev 2544)
@@ -27,6 +27,8 @@
import jaxx.demo.component.jaxx.BoxedDecoratorDemo;
import jaxx.demo.component.jaxx.StatusMessagePanelDemo;
+import jaxx.demo.component.jaxx.editor.BeanComboBoxDemo;
+import jaxx.demo.component.jaxx.editor.BeanComboBoxDemoHandler;
import jaxx.demo.component.jaxx.editor.ComboEditorDemo;
import jaxx.demo.component.jaxx.editor.DatePickerDemo;
import jaxx.demo.component.jaxx.editor.FileEditorDemo;
@@ -161,6 +163,7 @@
DatePickerDemo.class,
FileEditorDemo.class,
ListSelectorDemo.class,
+ BeanComboBoxDemo.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 2012-12-30 14:32:25 UTC (rev 2543)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_en_GB.properties 2012-12-30 14:33:33 UTC (rev 2544)
@@ -135,6 +135,9 @@
isF0()\ &&\ isF1()=
isF0()\ ||\ isF1()=
isF1()=
+jaxx.beancomboboxdemo.firstName=
+jaxx.beancomboboxdemo.lastName=
+jaxx.beancomboboxdemo.people=
jaxx.demo.action.add=Add
jaxx.demo.action.ok=Ok
jaxx.demo.action.remove=Remove
@@ -168,6 +171,14 @@
jaxxdemo.action.show=show
jaxxdemo.action.site=Web site
jaxxdemo.action.site.tip=Go to the web site
+jaxxdemo.beancomboboxdemo.age=
+jaxxdemo.beancomboboxdemo.autoComplete=AutoComplete
+jaxxdemo.beancomboboxdemo.configuration=Configuration
+jaxxdemo.beancomboboxdemo.no.people.selected=No selection
+jaxxdemo.beancomboboxdemo.result=Result
+jaxxdemo.beancomboboxdemo.selected.people=Selection\: %s
+jaxxdemo.beancomboboxdemo.showDecorator=Show decorator button
+jaxxdemo.beancomboboxdemo.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 2012-12-30 14:32:25 UTC (rev 2543)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_es_ES.properties 2012-12-30 14:33:33 UTC (rev 2544)
@@ -135,6 +135,10 @@
isF0()\ &&\ isF1()=
isF0()\ ||\ isF1()=
isF1()=
+jaxx.beancomboboxdemo.age=
+jaxx.beancomboboxdemo.firstName=
+jaxx.beancomboboxdemo.lastName=
+jaxx.beancomboboxdemo.people=
jaxx.demo.action.add=
jaxx.demo.action.ok=
jaxx.demo.action.remove=
@@ -149,6 +153,8 @@
jaxx.demo.label.lasstName.tip=
jaxx.demo.label.lastName=
jaxx.demo.label.lastName.tip=
+jaxx.demo.no.people.selected=
+jaxx.demo.selected.people=
jaxxdemo.about.message=<h3>JAXX Demo</h3><hr/>Pour plus d'informations, vous pouvez visiter le <a href\="http\://maven-site.nuiton.org/jaxx/jaxx-demo">site du projet</a>.
jaxxdemo.action.about=A propos
jaxxdemo.action.about.tip=A propos de JAXX Demo...
@@ -171,6 +177,13 @@
jaxxdemo.action.show=Voir
jaxxdemo.action.site=Site internet
jaxxdemo.action.site.tip=Accéder au site de l'application sur internet
+jaxxdemo.beancomboboxdemo.autoComplete=
+jaxxdemo.beancomboboxdemo.configuration=
+jaxxdemo.beancomboboxdemo.no.people.selected=
+jaxxdemo.beancomboboxdemo.result=
+jaxxdemo.beancomboboxdemo.selected.people=
+jaxxdemo.beancomboboxdemo.showDecorator=
+jaxxdemo.beancomboboxdemo.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 2012-12-30 14:32:25 UTC (rev 2543)
+++ trunk/jaxx-demo/src/main/resources/i18n/jaxx-demo_fr_FR.properties 2012-12-30 14:33:33 UTC (rev 2544)
@@ -146,6 +146,7 @@
jaxx.demo.label.id.tip=Identifiant
jaxx.demo.label.lastName=Nom
jaxx.demo.label.lastName.tip=Nom
+jaxx.demo.label.people=Personne
jaxxdemo.about.message=<h3>JAXX Demo</h3><hr/>Pour plus d'informations, vous pouvez visiter le <a href\="http\://maven-site.nuiton.org/jaxx/jaxx-demo">site du projet</a>.
jaxxdemo.action.about=A propos
jaxxdemo.action.about.tip=A propos de JAXX Demo...
@@ -168,6 +169,17 @@
jaxxdemo.action.show=Voir
jaxxdemo.action.site=Site internet
jaxxdemo.action.site.tip=Accéder au site de l'application sur internet
+jaxxdemo.beancomboboxdemo.age=Age
+jaxxdemo.beancomboboxdemo.autoComplete=Auto complétion
+jaxxdemo.beancomboboxdemo.configuration=Configuration
+jaxxdemo.beancomboboxdemo.firstName=Prénom
+jaxxdemo.beancomboboxdemo.lastName=Nom
+jaxxdemo.beancomboboxdemo.no.people.selected=Pas de sélection
+jaxxdemo.beancomboboxdemo.people=Personne
+jaxxdemo.beancomboboxdemo.result=Résultat
+jaxxdemo.beancomboboxdemo.selected.people=Sélection \: %s
+jaxxdemo.beancomboboxdemo.showDecorator=Changer la décoration
+jaxxdemo.beancomboboxdemo.showReset=Pouvoir réinitialiser
jaxxdemo.common.actors=Acteurs
jaxxdemo.common.age=Age
jaxxdemo.common.firstName=Prénom
1
0
r2543 - trunk/jaxx-maven-plugin/src/test/java/org/nuiton/jaxx/plugin
by tchemitï¼ users.nuiton.org 30 Dec '12
by tchemitï¼ users.nuiton.org 30 Dec '12
30 Dec '12
Author: tchemit
Date: 2012-12-30 15:32:25 +0100 (Sun, 30 Dec 2012)
New Revision: 2543
Url: http://nuiton.org/projects/jaxx/repository/revisions/2543
Log:
fixes #2496: Set encoding to UTF-8 in jaxx-m-p tests
Modified:
trunk/jaxx-maven-plugin/src/test/java/org/nuiton/jaxx/plugin/JaxxBaseTest.java
Modified: trunk/jaxx-maven-plugin/src/test/java/org/nuiton/jaxx/plugin/JaxxBaseTest.java
===================================================================
--- trunk/jaxx-maven-plugin/src/test/java/org/nuiton/jaxx/plugin/JaxxBaseTest.java 2012-12-30 13:24:10 UTC (rev 2542)
+++ trunk/jaxx-maven-plugin/src/test/java/org/nuiton/jaxx/plugin/JaxxBaseTest.java 2012-12-30 14:32:25 UTC (rev 2543)
@@ -71,6 +71,7 @@
log.error(e);
}
}
+ mojo.setEncoding("UTF-8");
mojo.validatorFactoryFQN= SwingValidator.class.getName();
mojo.jaxxContextFQN = DefaultJAXXContext.class.getName();
mojo.compilerFQN = JAXXCompiler.class.getName();
1
0
r2542 - in trunk: jaxx-compiler/src/main/java/jaxx/compiler/tags jaxx-runtime/src/main/java/jaxx/runtime jaxx-runtime/src/main/java/jaxx/runtime/bean jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean
by tchemitï¼ users.nuiton.org 30 Dec '12
by tchemitï¼ users.nuiton.org 30 Dec '12
30 Dec '12
Author: tchemit
Date: 2012-12-30 14:24:10 +0100 (Sun, 30 Dec 2012)
New Revision: 2542
Url: http://nuiton.org/projects/jaxx/repository/revisions/2542
Log:
fixes #2493: [BeanComboBox] Use widget with no model
fixes #2494: Use the genericType to fill the beanType property on BeanTypeAware widgets
Added:
trunk/jaxx-runtime/src/main/java/jaxx/runtime/bean/
trunk/jaxx-runtime/src/main/java/jaxx/runtime/bean/BeanTypeAware.java
Modified:
trunk/jaxx-compiler/src/main/java/jaxx/compiler/tags/DefaultObjectHandler.java
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBox.jaxx
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBoxHandler.java
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanListHeader.jaxx
Modified: trunk/jaxx-compiler/src/main/java/jaxx/compiler/tags/DefaultObjectHandler.java
===================================================================
--- trunk/jaxx-compiler/src/main/java/jaxx/compiler/tags/DefaultObjectHandler.java 2012-12-29 13:29:17 UTC (rev 2541)
+++ trunk/jaxx-compiler/src/main/java/jaxx/compiler/tags/DefaultObjectHandler.java 2012-12-30 13:24:10 UTC (rev 2542)
@@ -45,8 +45,11 @@
import jaxx.runtime.ComponentDescriptor;
import jaxx.runtime.JAXXObject;
import jaxx.runtime.JAXXObjectDescriptor;
+import jaxx.runtime.bean.BeanTypeAware;
import jaxx.runtime.css.Stylesheet;
import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.w3c.dom.Attr;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
@@ -81,6 +84,9 @@
*/
public class DefaultObjectHandler implements TagHandler {
+ /** Logger. */
+ private static final Log log = LogFactory.getLog(DefaultObjectHandler.class);
+
public static final String ABSTRACT_ATTRIBUTE = "abstract";
public static final String CONSTRAINTS_ATTRIBUTE = "constraints";
@@ -93,7 +99,7 @@
public static final String DISPLAYED_MNEMONIC_INDEX_ATTRIBUTE = "displayedMnemonicIndex";
- public static final String GENERICTYPE_ATTRIBUTE = "genericType";
+ public static final String GENERIC_TYPE_ATTRIBUTE = "genericType";
public static final String ID_ATTRIBUTE = "id";
@@ -611,11 +617,15 @@
JAXXCompiler compiler) {
List<Attr> attributes = new ArrayList<Attr>();
NamedNodeMap children = tag.getAttributes();
+
for (int i = 0; i < children.getLength(); i++) {
attributes.add((Attr) children.item(i));
}
Collections.sort(attributes, getAttributeComparator());
+ CompiledObject rootObject = compiler.getRootObject();
+
+ Attr genericTypeAttribute = null;
for (Attr attribute : attributes) {
String name = attribute.getName();
String value = attribute.getValue().trim();
@@ -643,7 +653,7 @@
}
continue;
}
- CompiledObject rootObject = compiler.getRootObject();
+
if (name.equals(IMPLEMENTS_ATTRIBUTE)) {
if (object != rootObject) {
// can ony be apply to root object
@@ -667,18 +677,9 @@
continue;
}
- if (name.equals(GENERICTYPE_ATTRIBUTE)) {
- //TC-20090313 check after all atributes been processed
- if (object == rootObject) {
- compiler.setGenericType(value);
- } else {
- object.setGenericTypes(value.split(","));
- if (object.getSimpleType() != null) {
-
- // reload the simpleType
- object.setSimpleType(object.getSimpleType() + "<" + value + ">");
- }
- }
+ if (name.equals(GENERIC_TYPE_ATTRIBUTE)) {
+ //TC-20090313 check after all attributes been processed
+ genericTypeAttribute = attribute;
continue;
}
@@ -716,6 +717,29 @@
// simple property
setAttribute(object, name, value, true, compiler);
}
+
+ if (genericTypeAttribute != null) {
+ String name = genericTypeAttribute.getName();
+ String value = genericTypeAttribute.getValue().trim();
+ if (object == rootObject) {
+ compiler.setGenericType(value);
+ } else {
+ object.setGenericTypes(value.split(","));
+ if (object.getSimpleType() != null) {
+
+ // reload the simpleType
+ object.setSimpleType(object.getSimpleType() + "<" + value + ">");
+ }
+ }
+ if (ClassDescriptorHelper.getClassDescriptor(BeanTypeAware.class).isAssignableFrom(object.getObjectClass())) {
+ // add beanType from genericType
+ if (log.isDebugEnabled()) {
+ log.debug("Add beanType property: " + value + " to " + object);
+ }
+ setAttribute(object, BeanTypeAware.PROPERTY_BEAN_TYPE, "{" + value + ".class}", true, compiler);
+ }
+ }
+
}
/**
Added: trunk/jaxx-runtime/src/main/java/jaxx/runtime/bean/BeanTypeAware.java
===================================================================
--- trunk/jaxx-runtime/src/main/java/jaxx/runtime/bean/BeanTypeAware.java (rev 0)
+++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/bean/BeanTypeAware.java 2012-12-30 13:24:10 UTC (rev 2542)
@@ -0,0 +1,43 @@
+package jaxx.runtime.bean;
+
+/*
+ * #%L
+ * JAXX :: Runtime
+ * $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%
+ */
+
+/**
+ * Contract for ui which contains a {@code beanType} property.
+ * <p/>
+ * In a jaxx file, if an object has a genericType and implementsthis contract
+ * then the {@code beanType} will be automaticly setted.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.5.9
+ */
+public interface BeanTypeAware<O> {
+
+ String PROPERTY_BEAN_TYPE= "beanType";
+
+ Class<O> getBeanType();
+
+ void setBeanType(Class<O> beanType);
+}
Property changes on: trunk/jaxx-runtime/src/main/java/jaxx/runtime/bean/BeanTypeAware.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBox.jaxx
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBox.jaxx 2012-12-29 13:29:17 UTC (rev 2541)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBox.jaxx 2012-12-30 13:24:10 UTC (rev 2542)
@@ -24,20 +24,23 @@
-->
<Table fill='both' insets='0' genericType='O'
- onFocusGained='combobox.requestFocus()'
- onFocusLost='hidePopup()'>
+ implements='jaxx.runtime.bean.BeanTypeAware<O>'
+ onFocusGained='combobox.requestFocus()' onFocusLost='hidePopup()'>
<import>
org.nuiton.util.decorator.JXPathDecorator
javax.swing.border.TitledBorder
</import>
-
+
+ <!-- bean type -->
+ <Class id='beanType' genericType='O' javaBean='null'/>
+
<!-- auto complete property -->
<Boolean id='autoComplete' javaBean='false'/>
<!-- flag to reverse the sort -->
<Boolean id='reverseSort' javaBean='false'/>
-
+
<!-- show reset property -->
<Boolean id='showReset' javaBean='false'/>
@@ -50,7 +53,7 @@
<!-- bean property linked state -->
<String id='property' javaBean='""'/>
- <!-- bean property -->
+ <!-- model property -->
<Object id='bean' javaBean='null'/>
<!-- selectedItem property -->
@@ -68,7 +71,7 @@
<ButtonGroup id='sortGroup'
onStateChanged='setReverseSort((Boolean)sortGroup.getSelectedValue())'/>
-
+
<!-- ui handler -->
<BeanComboBoxHandler id='handler' genericType='O' constructorParams='this'/>
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBoxHandler.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBoxHandler.java 2012-12-29 13:29:17 UTC (rev 2541)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBoxHandler.java 2012-12-30 13:24:10 UTC (rev 2542)
@@ -57,7 +57,7 @@
* @author tchemit <chemit(a)codelutin.com>
* @see BeanComboBox
*/
-public class BeanComboBoxHandler<O> implements PropertyChangeListener {//}, ListDataListener {
+public class BeanComboBoxHandler<O> implements PropertyChangeListener {
public static final Log log = LogFactory.getLog(BeanComboBoxHandler.class);
@@ -123,6 +123,10 @@
}
init = true;
+ if (decorator == null) {
+ throw new NullPointerException("decorator can not be null");
+ }
+
JAXXButtonGroup indexes = ui.getIndexes();
this.decorator = BeanUIUtil.createDecorator(decorator);
@@ -152,8 +156,6 @@
ui.autoComplete = true;
-// combobox.getModel().addListDataListener(this);
-
ui.addPropertyChangeListener(this);
// set datas
@@ -168,11 +170,25 @@
popupHandler.togglePopup();
}
+ /**
+ * @return {@code true} if there is no data in comboBox,
+ * {@code false} otherwise.
+ * @since 2.5.9
+ */
public boolean isEmpty() {
boolean result = CollectionUtils.isEmpty(ui.getData());
return result;
}
+ /**
+ * Add the given item into the comboBox.
+ * <p/>
+ * <strong>Note:</strong> The item will be inserted at his correct following
+ * the selected ordering.
+ *
+ * @param item item to add in comboBox.
+ * @since 2.5.9
+ */
public void addItem(O item) {
List<O> data = ui.getData();
@@ -184,6 +200,15 @@
fireEmpty(wasEmpty);
}
+ /**
+ * Remove the given item from the comboBox model.
+ * <p/>
+ * <strong>Note:</strong> If this item was selected, then selection will
+ * be cleared.
+ *
+ * @param item the item to remove from the comboBox model
+ * @since 2.5.9
+ */
public void removeItem(O item) {
List<O> data = ui.getData();
@@ -340,7 +365,7 @@
}
}
if (log.isDebugEnabled()) {
- log.debug(ui.getProperty() + " on " + ui.getBean().getClass() + " :: " + oldValue + " to " + newValue);
+ log.debug(ui.getProperty() + " on " + getBeanType() + " :: " + oldValue + " to " + newValue);
}
try {
@@ -362,6 +387,25 @@
return decorator;
}
+ /**
+ * @return get the type of objects contained in the comboBox model.
+ * @since 2.5.9
+ */
+ public Class<O> getBeanType() {
+ Class<O> result = ui.getBeanType();
+ if (result == null) {
+ result = decorator == null ? null : decorator.getType();
+ }
+ return result;
+ }
+
+ /**
+ * Obtain the type of objects contained in the comboBox using the model mutator.
+ *
+ * @return get the type of objects contained in the comboBox model.
+ * @deprecated since 2.5.9 (use now method {@link #getBeanType()})
+ */
+ @Deprecated
public Class<?> getTargetClass() {
Method m = getMutator();
return m == null ? null : m.getParameterTypes()[0];
@@ -369,7 +413,7 @@
/** @return le mutateur a utiliser pour modifier le bean associé. */
protected Method getMutator() {
- if (mutator == null) {
+ if (mutator == null && ui.getBean() != null && ui.getProperty() != null) {
mutator = BeanUIUtil.getMutator(ui.getBean(), ui.getProperty());
}
return mutator;
@@ -386,7 +430,8 @@
if (BeanComboBox.PROPERTY_AUTO_COMPLETE.equals(propertyName)) {
- setAutoComplete((Boolean) evt.getOldValue(), (Boolean) evt.getNewValue());
+ setAutoComplete((Boolean) evt.getOldValue(),
+ (Boolean) evt.getNewValue());
return;
}
@@ -418,7 +463,8 @@
}
protected void fireEmpty(boolean wasEmpty) {
- ui.firePropertyChange(BeanComboBox.PROPERTY_EMPTY, wasEmpty, isEmpty());
+ ui.firePropertyChange(BeanComboBox.PROPERTY_EMPTY, wasEmpty,
+ isEmpty());
}
}
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 2012-12-29 13:29:17 UTC (rev 2541)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx 2012-12-30 13:24:10 UTC (rev 2542)
@@ -21,7 +21,7 @@
<http://www.gnu.org/licenses/lgpl-3.0.html>.
#L%
-->
-<Table genericType='O'>
+<Table genericType='O' implements='jaxx.runtime.bean.BeanTypeAware<O>'>
<import>
org.nuiton.util.decorator.JXPathDecorator
@@ -29,7 +29,7 @@
</import>
<!-- bean type -->
- <Class genericType='O' id='beanType' javaBean='null'/>
+ <Class id='beanType' genericType='O' javaBean='null'/>
<!-- label -->
<String id='labelText' javaBean='null'/>
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanListHeader.jaxx
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanListHeader.jaxx 2012-12-29 13:29:17 UTC (rev 2541)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanListHeader.jaxx 2012-12-30 13:24:10 UTC (rev 2542)
@@ -23,7 +23,8 @@
#L%
-->
-<JPanel id='top' layout='{new BorderLayout()}' genericType='O'>
+<JPanel id='top' layout='{new BorderLayout()}' genericType='O'
+ implements='jaxx.runtime.bean.BeanTypeAware<O>'>
<import>
org.nuiton.util.decorator.JXPathDecorator
@@ -42,8 +43,8 @@
<!-- editable combo property -->
<Boolean id='editable' javaBean='true'/>
- <!-- bean property -->
- <Class genericType='O' id='beanType' javaBean='null'/>
+ <!-- bean type -->
+ <Class id='beanType' genericType='O' javaBean='null'/>
<!-- label -->
<String id='labelText' javaBean='null'/>
1
0
r2541 - trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean
by tchemitï¼ users.nuiton.org 29 Dec '12
by tchemitï¼ users.nuiton.org 29 Dec '12
29 Dec '12
Author: tchemit
Date: 2012-12-29 14:29:17 +0100 (Sat, 29 Dec 2012)
New Revision: 2541
Url: http://nuiton.org/projects/jaxx/repository/revisions/2541
Log:
fixes #2491: [BeanComboBox] add method to add and remove items from comboBox
fixes #2492: [BeanComboBox] add empty property
Modified:
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBox.css
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBox.jaxx
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBoxHandler.java
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBox.css
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBox.css 2012-12-29 11:28:37 UTC (rev 2540)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBox.css 2012-12-29 13:29:17 UTC (rev 2541)
@@ -87,6 +87,7 @@
toolTipText:"beancombobox.action.sort.tip";
focusable:false;
focusPainted:false;
+ enabled:{isShowDecorator() && isEnabled()};
}
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBox.jaxx
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBox.jaxx 2012-12-29 11:28:37 UTC (rev 2540)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBox.jaxx 2012-12-29 13:29:17 UTC (rev 2541)
@@ -96,6 +96,9 @@
</JPopupMenu>
<script><![CDATA[
+
+public static final String PROPERTY_EMPTY = "empty";
+
public void init(JXPathDecorator<O> decorator, List<O> data) {
handler.init(decorator, data);
}
@@ -105,6 +108,13 @@
popup.setVisible(false);
}
}
+
+public boolean isEmpty() { return handler.isEmpty(); }
+
+public void addItem(O item) { handler.addItem(item); }
+
+public void removeItem(O item) { handler.removeItem(item); }
+
]]>
</script>
<row>
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBoxHandler.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBoxHandler.java 2012-12-29 11:28:37 UTC (rev 2540)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboBoxHandler.java 2012-12-29 13:29:17 UTC (rev 2541)
@@ -26,16 +26,17 @@
package jaxx.runtime.swing.editor.bean;
import jaxx.runtime.SwingUtil;
-import org.nuiton.util.decorator.DecoratorUtil;
-import org.nuiton.util.decorator.JXPathDecorator;
-import org.nuiton.util.decorator.MultiJXPathDecorator;
import jaxx.runtime.swing.JAXXButtonGroup;
import jaxx.runtime.swing.renderer.DecoratorListCellRenderer;
-import org.apache.commons.beanutils.PropertyUtils;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.jdesktop.swingx.autocomplete.ObjectToStringConverter;
+import org.nuiton.util.decorator.DecoratorUtil;
+import org.nuiton.util.decorator.JXPathDecorator;
+import org.nuiton.util.decorator.MultiJXPathDecorator;
+import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JPopupMenu;
import javax.swing.text.Document;
@@ -44,7 +45,6 @@
import java.awt.event.FocusListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
-import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.List;
@@ -53,11 +53,11 @@
* <p/>
* Note: ce handler n'est pas stateless et n'est donc pas partageable entre plusieurs ui.
*
+ * @param <O> le type des objet contenus dans le modèle du composant.
* @author tchemit <chemit(a)codelutin.com>
- * @param <O> le type des objet contenus dans le modèle du composant.
* @see BeanComboBox
*/
-public class BeanComboBoxHandler<O> implements PropertyChangeListener {
+public class BeanComboBoxHandler<O> implements PropertyChangeListener {//}, ListDataListener {
public static final Log log = LogFactory.getLog(BeanComboBoxHandler.class);
@@ -127,29 +127,33 @@
this.decorator = BeanUIUtil.createDecorator(decorator);
+ JComboBox combobox = ui.getCombobox();
+
// init combobox renderer base on given decorator
- ui.getCombobox().setRenderer(new DecoratorListCellRenderer(this.decorator));
+ combobox.setRenderer(new DecoratorListCellRenderer(this.decorator));
convertor = BeanUIUtil.newDecoratedObjectToStringConverter(this.decorator);
// keep a trace of original document (to make possible reverse autom-complete)
- JTextComponent editorComponent = (JTextComponent) ui.getCombobox().getEditor().getEditorComponent();
+ JTextComponent editorComponent = (JTextComponent) combobox.getEditor().getEditorComponent();
originalDocument = editorComponent.getDocument();
// build popup
popupHandler.preparePopup(ui.getSelectedToolTipText(),
- ui.getNotSelectedToolTipText(),
- ui.getI18nPrefix(),
- ui.getPopupTitleText(),
- indexes,
- ui.getPopupSeparator(),
- ui.getPopupLabel(),
- ui.getSortUp(),
- ui.getSortDown(),
- this.decorator);
+ ui.getNotSelectedToolTipText(),
+ ui.getI18nPrefix(),
+ ui.getPopupTitleText(),
+ indexes,
+ ui.getPopupSeparator(),
+ ui.getPopupLabel(),
+ ui.getSortUp(),
+ ui.getSortDown(),
+ this.decorator);
ui.autoComplete = true;
+// combobox.getModel().addListDataListener(this);
+
ui.addPropertyChangeListener(this);
// set datas
@@ -164,6 +168,44 @@
popupHandler.togglePopup();
}
+ public boolean isEmpty() {
+ boolean result = CollectionUtils.isEmpty(ui.getData());
+ return result;
+ }
+
+ public void addItem(O item) {
+
+ List<O> data = ui.getData();
+ boolean wasEmpty = CollectionUtils.isEmpty(data);
+ data.add(item);
+
+ updateUI(ui.getIndex(), ui.isReverseSort());
+
+ fireEmpty(wasEmpty);
+ }
+
+ public void removeItem(O item) {
+
+ List<O> data = ui.getData();
+
+ boolean remove = data.remove(item);
+
+ if (remove) {
+
+ // item was found in data
+
+ Object selectedItem = ui.getSelectedItem();
+ if (item == selectedItem) {
+
+ // item was selected item, reset selected item then
+ ui.setSelectedItem(null);
+ }
+
+ updateUI(ui.getIndex(), ui.isReverseSort());
+ fireEmpty(false);
+ }
+ }
+
/**
* Modifie l'état autoComplete de l'ui.
*
@@ -225,7 +267,6 @@
updateUI(ui.getIndex(), newValue);
}
- @SuppressWarnings({"unchecked"})
protected void updateUI(int index, boolean reversesort) {
// change decorator context
@@ -339,7 +380,7 @@
String propertyName = evt.getPropertyName();
if (BeanComboBox.PROPERTY_SELECTED_ITEM.equals(propertyName)) {
- setSelectedItem((O)evt.getOldValue(), (O)evt.getNewValue());
+ setSelectedItem((O) evt.getOldValue(), (O) evt.getNewValue());
return;
}
@@ -369,6 +410,15 @@
// list has changed, force reload of index
setIndex(-1, ui.getIndex());
+
+ // list has changed, fire empty property
+ List list = (List) evt.getOldValue();
+ fireEmpty(CollectionUtils.isEmpty(list));
}
}
+
+ protected void fireEmpty(boolean wasEmpty) {
+ ui.firePropertyChange(BeanComboBox.PROPERTY_EMPTY, wasEmpty, isEmpty());
+ }
+
}
1
0
Author: tchemit
Date: 2012-12-29 12:28:37 +0100 (Sat, 29 Dec 2012)
New Revision: 2540
Url: http://nuiton.org/projects/jaxx/repository/revisions/2540
Log:
Update mavenpom4redmineAndCentral to 3.4.7.
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-12-15 00:13:24 UTC (rev 2539)
+++ trunk/pom.xml 2012-12-29 11:28:37 UTC (rev 2540)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmineAndCentral</artifactId>
- <version>3.4.6</version>
+ <version>3.4.7</version>
</parent>
<artifactId>jaxx</artifactId>
1
0
r2539 - in trunk: . jaxx-compiler jaxx-demo jaxx-maven-plugin jaxx-runtime jaxx-validator jaxx-widgets
by tchemitï¼ users.nuiton.org 15 Dec '12
by tchemitï¼ users.nuiton.org 15 Dec '12
15 Dec '12
Author: tchemit
Date: 2012-12-15 01:13:24 +0100 (Sat, 15 Dec 2012)
New Revision: 2539
Url: http://nuiton.org/projects/jaxx/repository/revisions/2539
Log:
[maven-release-plugin] prepare for next development iteration
Modified:
trunk/jaxx-compiler/pom.xml
trunk/jaxx-demo/pom.xml
trunk/jaxx-maven-plugin/pom.xml
trunk/jaxx-runtime/pom.xml
trunk/jaxx-validator/pom.xml
trunk/jaxx-widgets/pom.xml
trunk/pom.xml
Modified: trunk/jaxx-compiler/pom.xml
===================================================================
--- trunk/jaxx-compiler/pom.xml 2012-12-15 00:13:22 UTC (rev 2538)
+++ trunk/jaxx-compiler/pom.xml 2012-12-15 00:13:24 UTC (rev 2539)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.5.8</version>
+ <version>2.5.9-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-demo/pom.xml
===================================================================
--- trunk/jaxx-demo/pom.xml 2012-12-15 00:13:22 UTC (rev 2538)
+++ trunk/jaxx-demo/pom.xml 2012-12-15 00:13:24 UTC (rev 2539)
@@ -35,7 +35,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.5.8</version>
+ <version>2.5.9-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-maven-plugin/pom.xml
===================================================================
--- trunk/jaxx-maven-plugin/pom.xml 2012-12-15 00:13:22 UTC (rev 2538)
+++ trunk/jaxx-maven-plugin/pom.xml 2012-12-15 00:13:24 UTC (rev 2539)
@@ -31,7 +31,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.5.8</version>
+ <version>2.5.9-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-runtime/pom.xml
===================================================================
--- trunk/jaxx-runtime/pom.xml 2012-12-15 00:13:22 UTC (rev 2538)
+++ trunk/jaxx-runtime/pom.xml 2012-12-15 00:13:24 UTC (rev 2539)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.5.8</version>
+ <version>2.5.9-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-validator/pom.xml
===================================================================
--- trunk/jaxx-validator/pom.xml 2012-12-15 00:13:22 UTC (rev 2538)
+++ trunk/jaxx-validator/pom.xml 2012-12-15 00:13:24 UTC (rev 2539)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.5.8</version>
+ <version>2.5.9-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-widgets/pom.xml
===================================================================
--- trunk/jaxx-widgets/pom.xml 2012-12-15 00:13:22 UTC (rev 2538)
+++ trunk/jaxx-widgets/pom.xml 2012-12-15 00:13:24 UTC (rev 2539)
@@ -31,7 +31,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.5.8</version>
+ <version>2.5.9-SNAPSHOT</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-12-15 00:13:22 UTC (rev 2538)
+++ trunk/pom.xml 2012-12-15 00:13:24 UTC (rev 2539)
@@ -34,7 +34,7 @@
</parent>
<artifactId>jaxx</artifactId>
- <version>2.5.8</version>
+ <version>2.5.9-SNAPSHOT</version>
<modules>
<module>jaxx-runtime</module>
@@ -130,11 +130,11 @@
<!-- Source control management. -->
<scm>
- <connection>scm:svn:http://svn.nuiton.org/svn/jaxx/tags/jaxx-2.5.8</connection>
+ <connection>scm:svn:http://svn.nuiton.org/svn/jaxx/trunk</connection>
<developerConnection>
- scm:svn:http://svn.nuiton.org/svn/jaxx/tags/jaxx-2.5.8
+ scm:svn:http://svn.nuiton.org/svn/jaxx/trunk
</developerConnection>
- <url>http://nuiton.org/projects/jaxx/repository/show/tags/jaxx-2.5.8</url>
+ <url>http://nuiton.org/projects/jaxx/repository/show/trunk</url>
</scm>
<distributionManagement>
1
0
Author: tchemit
Date: 2012-12-15 01:13:22 +0100 (Sat, 15 Dec 2012)
New Revision: 2538
Url: http://nuiton.org/projects/jaxx/repository/revisions/2538
Log:
[maven-release-plugin] copy for tag jaxx-2.5.8
Added:
tags/jaxx-2.5.8/
1
0
r2537 - in trunk: . jaxx-compiler jaxx-demo jaxx-maven-plugin jaxx-runtime jaxx-validator jaxx-widgets
by tchemitï¼ users.nuiton.org 15 Dec '12
by tchemitï¼ users.nuiton.org 15 Dec '12
15 Dec '12
Author: tchemit
Date: 2012-12-15 01:13:19 +0100 (Sat, 15 Dec 2012)
New Revision: 2537
Url: http://nuiton.org/projects/jaxx/repository/revisions/2537
Log:
[maven-release-plugin] prepare release jaxx-2.5.8
Modified:
trunk/jaxx-compiler/pom.xml
trunk/jaxx-demo/pom.xml
trunk/jaxx-maven-plugin/pom.xml
trunk/jaxx-runtime/pom.xml
trunk/jaxx-validator/pom.xml
trunk/jaxx-widgets/pom.xml
trunk/pom.xml
Modified: trunk/jaxx-compiler/pom.xml
===================================================================
--- trunk/jaxx-compiler/pom.xml 2012-12-14 09:22:33 UTC (rev 2536)
+++ trunk/jaxx-compiler/pom.xml 2012-12-15 00:13:19 UTC (rev 2537)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.5.8-SNAPSHOT</version>
+ <version>2.5.8</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-demo/pom.xml
===================================================================
--- trunk/jaxx-demo/pom.xml 2012-12-14 09:22:33 UTC (rev 2536)
+++ trunk/jaxx-demo/pom.xml 2012-12-15 00:13:19 UTC (rev 2537)
@@ -35,7 +35,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.5.8-SNAPSHOT</version>
+ <version>2.5.8</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-maven-plugin/pom.xml
===================================================================
--- trunk/jaxx-maven-plugin/pom.xml 2012-12-14 09:22:33 UTC (rev 2536)
+++ trunk/jaxx-maven-plugin/pom.xml 2012-12-15 00:13:19 UTC (rev 2537)
@@ -31,7 +31,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.5.8-SNAPSHOT</version>
+ <version>2.5.8</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-runtime/pom.xml
===================================================================
--- trunk/jaxx-runtime/pom.xml 2012-12-14 09:22:33 UTC (rev 2536)
+++ trunk/jaxx-runtime/pom.xml 2012-12-15 00:13:19 UTC (rev 2537)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.5.8-SNAPSHOT</version>
+ <version>2.5.8</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-validator/pom.xml
===================================================================
--- trunk/jaxx-validator/pom.xml 2012-12-14 09:22:33 UTC (rev 2536)
+++ trunk/jaxx-validator/pom.xml 2012-12-15 00:13:19 UTC (rev 2537)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.5.8-SNAPSHOT</version>
+ <version>2.5.8</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/jaxx-widgets/pom.xml
===================================================================
--- trunk/jaxx-widgets/pom.xml 2012-12-14 09:22:33 UTC (rev 2536)
+++ trunk/jaxx-widgets/pom.xml 2012-12-15 00:13:19 UTC (rev 2537)
@@ -31,7 +31,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>jaxx</artifactId>
- <version>2.5.8-SNAPSHOT</version>
+ <version>2.5.8</version>
</parent>
<groupId>org.nuiton.jaxx</groupId>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-12-14 09:22:33 UTC (rev 2536)
+++ trunk/pom.xml 2012-12-15 00:13:19 UTC (rev 2537)
@@ -34,7 +34,7 @@
</parent>
<artifactId>jaxx</artifactId>
- <version>2.5.8-SNAPSHOT</version>
+ <version>2.5.8</version>
<modules>
<module>jaxx-runtime</module>
@@ -130,11 +130,11 @@
<!-- Source control management. -->
<scm>
- <connection>scm:svn:http://svn.nuiton.org/svn/jaxx/trunk</connection>
+ <connection>scm:svn:http://svn.nuiton.org/svn/jaxx/tags/jaxx-2.5.8</connection>
<developerConnection>
- scm:svn:http://svn.nuiton.org/svn/jaxx/trunk
+ scm:svn:http://svn.nuiton.org/svn/jaxx/tags/jaxx-2.5.8
</developerConnection>
- <url>http://nuiton.org/projects/jaxx/repository/show/trunk</url>
+ <url>http://nuiton.org/projects/jaxx/repository/show/tags/jaxx-2.5.8</url>
</scm>
<distributionManagement>
1
0
r2536 - trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean
by tchemitï¼ users.nuiton.org 14 Dec '12
by tchemitï¼ users.nuiton.org 14 Dec '12
14 Dec '12
Author: tchemit
Date: 2012-12-14 10:22:33 +0100 (Fri, 14 Dec 2012)
New Revision: 2536
Url: http://nuiton.org/projects/jaxx/repository/revisions/2536
Log:
fixes #2474: Create a double list widget
Modified:
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/BeanDoubleListHandler.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListHandler.java 2012-12-13 15:37:20 UTC (rev 2535)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListHandler.java 2012-12-14 09:22:33 UTC (rev 2536)
@@ -32,6 +32,8 @@
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 java.awt.event.MouseEvent;
@@ -75,6 +77,8 @@
public void init(JXPathDecorator<O> decorator, List<O> universe, List<O> selected) {
this.decorator = BeanUIUtil.createDecorator(decorator);
+ mutator = BeanUIUtil.getMutator(ui.getBean(), ui.getProperty());
+
ui.getModel().setUniverse(universe);
ui.getModel().setSelected(selected);
@@ -84,6 +88,7 @@
universeList.setCellRenderer(new DecoratorListCellRenderer(this.decorator));
selectedList.setCellRenderer(new DecoratorListCellRenderer(this.decorator));
+ // When universe list selection model changed, update the add button enabled property
universeList.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
@@ -92,6 +97,7 @@
}
});
+ // When selected list selection model changed, update the add button enabled property
selectedList.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
@@ -99,8 +105,28 @@
ui.getModel().setRemoveEnabled(!source.isSelectionEmpty());
}
});
+
+ // When selected list model changed, push back selected list to bean
+ selectedList.getModel().addListDataListener(new ListDataListener() {
+ public void intervalAdded(ListDataEvent e) {
+ fireSelectionUpdate();
+ }
+
+ public void intervalRemoved(ListDataEvent e) {
+ fireSelectionUpdate();
+ }
+
+ public void contentsChanged(ListDataEvent e) {
+ fireSelectionUpdate();
+ }
+ });
}
+ /**
+ * When universe list was double clicked, move selected items to selected list.
+ *
+ * @param event mouse event
+ */
public void onUniverseListClicked(MouseEvent event) {
JList universeList = ui.getUniverseList();
if (event.getClickCount() == 2) {
@@ -110,6 +136,12 @@
}
}
+
+ /**
+ * When selected list was double clicked, move selected items to universe list.
+ *
+ * @param event mouse event
+ */
public void onSelectedListClicked(MouseEvent event) {
JList selectedList = ui.getSelectedList();
@@ -121,11 +153,13 @@
}
}
+ /** When add button was hit, move selected items (from universe list) to selected list. */
public void select() {
List<O> selection = (List<O>) Arrays.asList(ui.getUniverseList().getSelectedValues());
ui.getModel().addToSelected(selection);
}
+ /** When remove button was hit, move selected items (from selected list) to universe list. */
public void unselect() {
List<O> selection = (List<O>) Arrays.asList(ui.getSelectedList().getSelectedValues());
ui.getModel().removeFromSelected(selection);
@@ -136,20 +170,10 @@
return;
}
try {
- Method mut = getMutator();
- if (mut != null) {
- mut.invoke(ui.getBean(), ui.getModel().getSelected());
- }
+ mutator.invoke(ui.getBean(), ui.getModel().getSelected());
} catch (Exception e) {
throw new RuntimeException(e);
}
}
- /** @return le mutateur a utiliser pour modifier le bean associé. */
- protected Method getMutator() {
- if (mutator == null) {
- mutator = BeanUIUtil.getMutator(ui.getBean(), ui.getProperty());
- }
- return mutator;
- }
}
1
0
r2535 - in trunk: . jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean jaxx-widgets/src/main/resources/icons
by tchemitï¼ users.nuiton.org 13 Dec '12
by tchemitï¼ users.nuiton.org 13 Dec '12
13 Dec '12
Author: tchemit
Date: 2012-12-13 16:37:20 +0100 (Thu, 13 Dec 2012)
New Revision: 2535
Url: http://nuiton.org/projects/jaxx/repository/revisions/2535
Log:
refs #2474: Create a double list widget (improve it but still not perfect :()
fixes #2479: Updates mavenpom to 3.4.6
fixes #2480: Updates to nuiton-utils 2.6.5
fixes #2481: Updates Eugene to 2.6
fixes #2482: Updates plexus-utils to 3.0.10
Added:
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.css
trunk/jaxx-widgets/src/main/resources/icons/action-bean-doublelist-select.png
trunk/jaxx-widgets/src/main/resources/icons/action-bean-doublelist-unselect.png
Modified:
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemo.jaxx
trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemoHandler.java
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
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListModel.java
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanListHeaderHandler.java
trunk/pom.xml
Modified: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemo.jaxx
===================================================================
--- trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemo.jaxx 2012-12-13 09:20:39 UTC (rev 2534)
+++ trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemo.jaxx 2012-12-13 15:37:20 UTC (rev 2535)
@@ -2,20 +2,20 @@
<import>
jaxx.demo.entities.People
+ jaxx.runtime.swing.editor.bean.BeanDoubleList
</import>
<BeanDoubleListDemoHandler id='handler' constructorParams='this'/>
-
+
<Table fill='both'>
<row>
<cell weighty='1' weightx='1'>
- <jaxx.runtime.swing.editor.bean.BeanDoubleList id='doubleList'
- beanType='{People.class}'/>
+ <BeanDoubleList id='doubleList' beanType='{People.class}'/>
</cell>
</row>
</Table>
-
-<script><![CDATA[
+
+ <script><![CDATA[
protected void $afterCompleteSetup() {
handler.init();
Property changes on: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemo.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Property changes on: trunk/jaxx-demo/src/main/java/jaxx/demo/component/jaxx/editor/BeanDoubleListDemoHandler.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Added: 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 (rev 0)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.css 2012-12-13 15:37:20 UTC (rev 2535)
@@ -0,0 +1,47 @@
+/*
+ * #%L
+ * JAXX :: Widgets
+ * $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%
+ */
+#model {
+ universeModel:{universeList.getModel()};
+ selectedModel:{selectedList.getModel()};
+}
+
+#universeList {
+ model:{new DefaultListModel()};
+}
+
+#addButton {
+ toolTipText:"beandoublelist.button.add";
+ actionIcon:"bean-doublelist-select";
+ enabled:{model.isAddEnabled()};
+}
+
+#selectedList {
+ model:{new DefaultListModel()};
+}
+
+#removeButton {
+ toolTipText:"beandoublelist.button.remove";
+ actionIcon:"bean-doublelist-unselect";
+ enabled:{model.isRemoveEnabled()};
+}
\ No newline at end of file
Property changes on: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.css
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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 2012-12-13 09:20:39 UTC (rev 2534)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx 2012-12-13 15:37:20 UTC (rev 2535)
@@ -1,59 +1,96 @@
+<!--
+ #%L
+ JAXX :: Widgets
+ $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%
+ -->
<Table genericType='O'>
-<import>
+ <import>
org.nuiton.util.decorator.JXPathDecorator
javax.swing.DefaultListModel
-</import>
+ </import>
- <!-- bean property -->
+ <!-- bean type -->
<Class genericType='O' id='beanType' javaBean='null'/>
<!-- label -->
<String id='labelText' javaBean='null'/>
-
+
<!-- bean property linked state -->
<String id='property' javaBean='""'/>
<!-- bean property -->
<Object id='bean' javaBean='null'/>
-
+
+ <!-- show reset property -->
+ <Boolean id='showReset' javaBean='false'/>
+
+ <!-- show decorator property -->
+ <!--Boolean id='showDecorator' javaBean='true'/-->
+
+ <!--String id='i18nPrefix' javaBean='"beanlist.common."'/-->
+
<!-- model -->
- <BeanDoubleListModel id='model' genericType='O'
- universeModel='{universeList.getModel()}'
- selectedModel='{selectedList.getModel()}'/>
-
+ <BeanDoubleListModel id='model' genericType='O'/>
+
<!-- handler -->
<BeanDoubleListHandler id='handler' genericType='O' constructorParams='this'/>
-
+
<row>
- <cell weightx='1' weighty='1' fill='both' rows='2'>
- <JScrollPane>
+ <cell weightx='0.5' weighty='1' fill='both'>
+ <JScrollPane onFocusGained='universeList.requestFocus()'>
+ <!--columnHeaderView='{universeListHeader}'-->
<!-- List of all the remaining available elements -->
- <JList id='universeList' model='{new DefaultListModel()}'/>
-<!-- <BeanListHeader id='universeListHeader' genericType='O' list='{universeList}'/>-->
+ <JList id='universeList'
+ onMouseClicked='handler.onUniverseListClicked(event)'/>
+ <!--BeanListHeader id='universeListHeader' genericType='O'
+ list='{universeList}' i18nPrefix="{getI18nPrefix()}"
+ showReset="{isShowReset()}"
+ showDecorator="{isShowDecorator()}"/-->
</JScrollPane>
</cell>
+
<cell anchor='north'>
- <JButton id='addButton' toolTipText="beandoublelist.button.add"
- actionIcon='select'/>
+ <JPanel layout='{new GridLayout(0,1)}'>
+ <JButton id='addButton' onActionPerformed='handler.select()'/>
+ <JButton id='removeButton' onActionPerformed='handler.unselect()'/>
+ </JPanel>
</cell>
- <cell weightx='1' weighty='1' fill='both' rows='2'>
- <JScrollPane>
+
+ <cell weightx='0.5' weighty='1' fill='both'>
+ <JScrollPane onFocusGained='selectedList.requestFocus()'>
+ <!--columnHeaderView='{selectedListHeader}'-->
<!-- List of the selected elements -->
- <JList id='selectedList' model='{new DefaultListModel()}'/>
-<!-- <BeanListHeader id='selectedListHeader' genericType='O' list='{selectedList}'/>-->
+ <JList id='selectedList'
+ onMouseClicked='handler.onSelectedListClicked(event)'/>
+ <!--BeanListHeader id='selectedListHeader' genericType='O'
+ list='{selectedList}' i18nPrefix="{getI18nPrefix()}"
+ showReset="{isShowReset()}"
+ showDecorator="{isShowDecorator()}"/-->
</JScrollPane>
</cell>
</row>
- <row>
- <cell anchor='north'>
- <JButton id='removeButton' toolTipText="beandoublelist.button.remove"
- actionIcon='unselect'/>
- </cell>
- </row>
+
+ <script><![CDATA[
-<script><![CDATA[
-
public void init(JXPathDecorator<O> decorator, List<O> universe, List<O> selected) {
handler.init(decorator, universe, selected);
}
Property changes on: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
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 2012-12-13 09:20:39 UTC (rev 2534)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListHandler.java 2012-12-13 15:37:20 UTC (rev 2535)
@@ -1,147 +1,136 @@
package jaxx.runtime.swing.editor.bean;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import javax.swing.event.ListDataEvent;
-import org.nuiton.util.decorator.JXPathDecorator;
-import org.nuiton.util.decorator.MultiJXPathDecorator;
+/*
+ * #%L
+ * JAXX :: Widgets
+ * $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.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 java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyDescriptor;
+import javax.swing.ListSelectionModel;
+import javax.swing.event.ListSelectionEvent;
+import javax.swing.event.ListSelectionListener;
+import java.awt.event.MouseEvent;
import java.lang.reflect.Method;
import java.util.Arrays;
import java.util.List;
-import javax.swing.event.ListDataListener;
-import javax.swing.plaf.basic.BasicComboBoxUI.ListDataHandler;
-import org.apache.commons.beanutils.PropertyUtils;
/**
* The handler of a {@link BeanDoubleList}.
* <p/>
*
- * @author kmorin <morin(a)codelutin.com>
* @param <O> the type of the objects contained in the list.
+ * @author kmorin <morin(a)codelutin.com>
* @see BeanDoubleList
* @since 2.5.8
*/
-public class BeanDoubleListHandler<O> implements PropertyChangeListener {
-
+public class BeanDoubleListHandler<O> {
+
private static final Log log = LogFactory.getLog(BeanDoubleListHandler.class);
-
+
/** the mutator method on the property of boxed bean in the ui */
protected Method mutator;
-
+
/** ui of the handler */
protected BeanDoubleList<O> ui;
-
+
/** the decorator of data */
protected MultiJXPathDecorator<O> decorator;
-
+
public BeanDoubleListHandler(BeanDoubleList<O> ui) {
this.ui = ui;
}
/**
* Initializes the handler of the UI
+ *
* @param decorator the decorator to use to display the data nicely
- * @param universe the list of all the available items
- * @param selected the list of selected items
+ * @param universe the list of all the available items
+ * @param selected the list of selected items
*/
public void init(JXPathDecorator<O> decorator, List<O> universe, List<O> selected) {
this.decorator = BeanUIUtil.createDecorator(decorator);
-
- initModel(universe, selected);
-
- final JList universeList = ui.getUniverseList();
- universeList.setCellRenderer(new DecoratorListCellRenderer(this.decorator));
- final JList selectedList = ui.getSelectedList();
- selectedList.setCellRenderer(new DecoratorListCellRenderer(this.decorator));
- initListeners();
-
- ui.addPropertyChangeListener(this);
-
- }
-
- /**
- * Initialize the model of the {@link BeanDoubleList}
- * @param universe the list of all the available items
- * @param selected the selected items
- */
- protected void initModel(List<O> universe, List<O> selected) {
ui.getModel().setUniverse(universe);
ui.getModel().setSelected(selected);
- }
-
- /**
- * Initializes the listeners.
- */
- protected void initListeners() {
- final JList universeList = ui.getUniverseList();
- final JList selectedList = ui.getSelectedList();
-
- universeList.addMouseListener(new MouseAdapter() {
-
- public void mouseClicked(MouseEvent event) {
- if (event.getClickCount() == 2) {
- int index = universeList.locationToIndex(event.getPoint());
- O item = (O) universeList.getModel().getElementAt(index);
- ui.getModel().addToSelected(item);
- }
- }
- });
-
- selectedList.addMouseListener(new MouseAdapter() {
-
- public void mouseClicked(MouseEvent event) {
- if (event.getClickCount() == 2) {
- int index = selectedList.locationToIndex(event.getPoint());
- O item = (O) selectedList.getModel().getElementAt(index);
- ui.getModel().removeFromSelected(item);
- }
- }
- });
-
- selectedList.getModel().addListDataListener(new ListDataListener() {
- public void intervalAdded(ListDataEvent e) {
- fireSelectionUpdate();
- }
+ JList universeList = ui.getUniverseList();
+ JList selectedList = ui.getSelectedList();
- public void intervalRemoved(ListDataEvent e) {
- fireSelectionUpdate();
- }
+ universeList.setCellRenderer(new DecoratorListCellRenderer(this.decorator));
+ selectedList.setCellRenderer(new DecoratorListCellRenderer(this.decorator));
- public void contentsChanged(ListDataEvent e) {
- fireSelectionUpdate();
+ universeList.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
+ @Override
+ public void valueChanged(ListSelectionEvent e) {
+ ListSelectionModel source = (ListSelectionModel) e.getSource();
+ ui.getModel().setAddEnabled(!source.isSelectionEmpty());
}
});
-
- ui.getAddButton().addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- List<O> selection = (List<O>) Arrays.asList(universeList.getSelectedValues());
- ui.getModel().addToSelected(selection);
+ selectedList.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
+ @Override
+ public void valueChanged(ListSelectionEvent e) {
+ ListSelectionModel source = (ListSelectionModel) e.getSource();
+ ui.getModel().setRemoveEnabled(!source.isSelectionEmpty());
}
});
-
- ui.getRemoveButton().addActionListener(new ActionListener() {
+ }
- public void actionPerformed(ActionEvent e) {
- List<O> selection = (List<O>) Arrays.asList(selectedList.getSelectedValues());
- ui.getModel().removeFromSelected(selection);
- }
- });
-
+ public void onUniverseListClicked(MouseEvent event) {
+ JList universeList = ui.getUniverseList();
+ if (event.getClickCount() == 2) {
+ int index = universeList.locationToIndex(event.getPoint());
+ O item = (O) universeList.getModel().getElementAt(index);
+ ui.getModel().addToSelected(item);
+ }
}
-
+
+ public void onSelectedListClicked(MouseEvent event) {
+
+ JList selectedList = ui.getSelectedList();
+
+ if (event.getClickCount() == 2) {
+ int index = selectedList.locationToIndex(event.getPoint());
+ O item = (O) selectedList.getModel().getElementAt(index);
+ ui.getModel().removeFromSelected(item);
+ }
+ }
+
+ public void select() {
+ List<O> selection = (List<O>) Arrays.asList(ui.getUniverseList().getSelectedValues());
+ ui.getModel().addToSelected(selection);
+ }
+
+ public void unselect() {
+ List<O> selection = (List<O>) Arrays.asList(ui.getSelectedList().getSelectedValues());
+ ui.getModel().removeFromSelected(selection);
+ }
+
protected void fireSelectionUpdate() {
if (ui.getBean() == null) {
return;
@@ -155,7 +144,7 @@
throw new RuntimeException(e);
}
}
-
+
/** @return le mutateur a utiliser pour modifier le bean associé. */
protected Method getMutator() {
if (mutator == null) {
@@ -163,9 +152,4 @@
}
return mutator;
}
-
- @Override
- public void propertyChange(PropertyChangeEvent evt) {
- }
-
}
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListModel.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListModel.java 2012-12-13 09:20:39 UTC (rev 2534)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListModel.java 2012-12-13 15:37:20 UTC (rev 2535)
@@ -1,38 +1,78 @@
package jaxx.runtime.swing.editor.bean;
+/*
+ * #%L
+ * JAXX :: Widgets
+ * $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 com.google.common.collect.Lists;
-import java.util.ArrayList;
-import java.util.List;
-import javax.swing.DefaultListModel;
-import javax.swing.ListModel;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.jdesktop.beans.AbstractSerializableBean;
+import javax.swing.DefaultListModel;
+import javax.swing.ListModel;
+import java.util.ArrayList;
+import java.util.List;
+
/**
* The model of the {@link BeanDoubleList} widget
+ *
* @param <O> the type of the object in the list
* @author kmorin <morin(a)codelutin.com>
* @see BeanDoubleList
- * @since 2.5.8
+ * @since 2.5.8
*/
-public class BeanDoubleListModel<O> {
-
+public class BeanDoubleListModel<O> extends AbstractSerializableBean {
+
private static final Log log = LogFactory.getLog(BeanDoubleListModel.class);
-
+
+
+ public static final String PROPERTY_ADD_ENABLED = "addEnabled";
+
+ public static final String PROPERTY_REMOVE_ENABLED = "removeEnabled";
+
+ private static final long serialVersionUID = 1L;
+
/** List of all the available items */
protected List<O> universe = new ArrayList<O>();
-
+
/** Model containing the remaining available items */
protected ListModel universeModel = new DefaultListModel();
-
+
/** List of the selected items */
protected List<O> selected = new ArrayList<O>();
-
+
/** Model containing the selected items */
protected ListModel selectedModel = new DefaultListModel();
-
+
+
+ protected boolean addEnabled;
+
+ protected boolean removeEnabled;
+
/**
* To get the selected items.
+ *
* @return a list of O
*/
public List<O> getSelected() {
@@ -40,25 +80,27 @@
}
/**
- * Sets the list of selected items.
+ * Sets the list of selected items.
* It fills the model of the list of the selected items with these items
* and removes them from the model of list of the universe.
+ *
* @param selected a list of O
*/
public void setSelected(List<O> selected) {
//reset all the universe in the universe list
resetUniverse();
-
+
if (selected == null) {
selected = Lists.newArrayList();
}
this.selected.clear();
- ((DefaultListModel)selectedModel).clear();
+ ((DefaultListModel) selectedModel).clear();
addToSelected(selected);
}
/**
* To get all the available items.
+ *
* @return a list of O
*/
public List<O> getUniverse() {
@@ -66,8 +108,9 @@
}
/**
- * Sets the list of the available items.
+ * Sets the list of the available items.
* It fills the model of the universe list with these items.
+ *
* @param universe a list of O
*/
public void setUniverse(List<O> universe) {
@@ -77,11 +120,11 @@
this.universe = Lists.newArrayList(universe);
resetUniverse();
}
-
+
protected void resetUniverse() {
- ((DefaultListModel)universeModel).clear();
+ ((DefaultListModel) universeModel).clear();
for (O item : universe) {
- ((DefaultListModel)universeModel).addElement(item);
+ ((DefaultListModel) universeModel).addElement(item);
}
}
@@ -100,77 +143,103 @@
public void setUniverseModel(ListModel universeModel) {
this.universeModel = universeModel;
}
-
+
/**
* Adds an item to the selected items.
+ *
* @param item the item to select
*/
public void addToSelected(O item) {
selected.add(item);
- ((DefaultListModel)selectedModel).addElement(item);
- ((DefaultListModel)universeModel).removeElement(item);
+ ((DefaultListModel) selectedModel).addElement(item);
+ ((DefaultListModel) universeModel).removeElement(item);
}
-
+
/**
* Adds a list of items to the selected items.
+ *
* @param items the list of the items to select
*/
public void addToSelected(List<O> items) {
selected.addAll(items);
for (O item : items) {
- ((DefaultListModel)selectedModel).addElement(item);
- ((DefaultListModel)universeModel).removeElement(item);
+ ((DefaultListModel) selectedModel).addElement(item);
+ ((DefaultListModel) universeModel).removeElement(item);
}
}
-
+
/**
* Removes an item from the selected items.
+ *
* @param item the item to unselect
*/
public void removeFromSelected(O item) {
selected.remove(item);
- ((DefaultListModel)selectedModel).removeElement(item);
+ ((DefaultListModel) selectedModel).removeElement(item);
addToUniverseList(item);
}
-
+
/**
* Removes a list of items from the list of selected items.
+ *
* @param items the list of the items to unselect
*/
public void removeFromSelected(List<O> items) {
selected.removeAll(items);
for (O item : items) {
- ((DefaultListModel)selectedModel).removeElement(item);
+ ((DefaultListModel) selectedModel).removeElement(item);
addToUniverseList(item);
}
}
-
+
+ public boolean isAddEnabled() {
+ return addEnabled;
+ }
+
+ public void setAddEnabled(boolean addEnabled) {
+ boolean oldValue = isAddEnabled();
+ this.addEnabled = addEnabled;
+ firePropertyChange(PROPERTY_ADD_ENABLED, oldValue, addEnabled);
+ }
+
+ public boolean isRemoveEnabled() {
+ return removeEnabled;
+ }
+
+ public void setRemoveEnabled(boolean removeEnabled) {
+ boolean oldValue = isRemoveEnabled();
+ this.removeEnabled = removeEnabled;
+ firePropertyChange(PROPERTY_REMOVE_ENABLED, oldValue, removeEnabled);
+ }
+
/**
* Adds an item to the available items list at the right index
* to keep always the same order.
+ *
* @param item the item to add to the universe list
*/
protected void addToUniverseList(O item) {
- DefaultListModel universeDefaultListModel = (DefaultListModel)universeModel;
+ DefaultListModel universeDefaultListModel = (DefaultListModel) universeModel;
// the maximum index where we should insert the item is its index
// in the list of all the available items
int index = universe.indexOf(item);
// if the index is upper than the size of the list of the remaining available items,
// get the size of this list
int insertionIndex = Math.min(index, universeDefaultListModel.getSize());
-
+
// we decrease the index to insert until we meet an item whose index
// in the list of all the available index is lower than the one of the item
// we want to insert
while (insertionIndex > 0) {
- O o = (O)universeDefaultListModel.get(--insertionIndex);
+ O o = (O) universeDefaultListModel.get(--insertionIndex);
int oIndex = universe.indexOf(o);
if (oIndex < index) {
insertionIndex++;
break;
}
- };
-
+ }
+ ;
+
universeDefaultListModel.add(insertionIndex, item);
}
}
Property changes on: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListModel.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:eol-style
+ native
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanListHeaderHandler.java
===================================================================
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanListHeaderHandler.java 2012-12-13 09:20:39 UTC (rev 2534)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanListHeaderHandler.java 2012-12-13 15:37:20 UTC (rev 2535)
@@ -35,9 +35,11 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import javax.swing.DefaultListModel;
import javax.swing.JComponent;
import javax.swing.JList;
import javax.swing.JPopupMenu;
+import javax.swing.ListModel;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.util.List;
@@ -199,8 +201,20 @@
try {
// reload the model
- ui.getList().setListData(datas.toArray(new Object[datas.size()]));
+ ListModel listModel = ui.getList().getModel();
+ if( listModel instanceof DefaultListModel) {
+ DefaultListModel model = (DefaultListModel) listModel;
+ model.removeAllElements();
+ for (O data : datas) {
+ model.addElement(data);
+ }
+
+ } else {
+
+ ui.getList().setListData(datas.toArray(new Object[datas.size()]));
+ }
+
// re-apply selection
if (selection.length > 0) {
Added: trunk/jaxx-widgets/src/main/resources/icons/action-bean-doublelist-select.png
===================================================================
(Binary files differ)
Property changes on: trunk/jaxx-widgets/src/main/resources/icons/action-bean-doublelist-select.png
___________________________________________________________________
Added: svn:mime-type
+ image/png
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: trunk/jaxx-widgets/src/main/resources/icons/action-bean-doublelist-unselect.png
===================================================================
(Binary files differ)
Property changes on: trunk/jaxx-widgets/src/main/resources/icons/action-bean-doublelist-unselect.png
___________________________________________________________________
Added: svn:mime-type
+ image/png
Added: svn:keywords
+ Author Date Id Revision HeadURL
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2012-12-13 09:20:39 UTC (rev 2534)
+++ trunk/pom.xml 2012-12-13 15:37:20 UTC (rev 2535)
@@ -30,7 +30,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmineAndCentral</artifactId>
- <version>3.4.4</version>
+ <version>3.4.6</version>
</parent>
<artifactId>jaxx</artifactId>
@@ -111,13 +111,13 @@
<!-- pour un muli module on doit fixer le projectId -->
<projectId>jaxx</projectId>
- <nuitonUtilsVersion>2.6.4</nuitonUtilsVersion>
+ <nuitonUtilsVersion>2.6.5</nuitonUtilsVersion>
<nuitonI18nVersion>2.5</nuitonI18nVersion>
- <eugeneVersion>2.5.6</eugeneVersion>
+ <eugeneVersion>2.6</eugeneVersion>
<jxLayerVersion>3.0.4</jxLayerVersion>
<javaHelpVersion>2.0.05</javaHelpVersion>
<swingXVersion>1.6.4</swingXVersion>
- <plexusUtilVersion>3.0.9</plexusUtilVersion>
+ <plexusUtilVersion>3.0.10</plexusUtilVersion>
<!-- i18n configuration -->
<i18n.bundles>fr_FR,en_GB,es_ES</i18n.bundles>
1
0