From tchemit@users.nuiton.org Sat Dec 29 14:29:17 2012
From: tchemit@users.nuiton.org
To: jaxx-commits@list.nuiton.org
Subject: [Jaxx-commits] r2541 -
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean
Date: Sat, 29 Dec 2012 14:29:17 +0100
Message-ID: <20121229132917.61F8F15845@nuiton.codelutin.com>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="===============2239798128725465416=="
--===============2239798128725465416==
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
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/BeanComboB=
ox.css
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboB=
ox.jaxx
trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanComboB=
oxHandler.java
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/Bea=
nComboBox.css
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanCombo=
Box.css 2012-12-29 11:28:37 UTC (rev 2540)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanCombo=
Box.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()};
}
=20
=20
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/Bea=
nComboBox.jaxx
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanCombo=
Box.jaxx 2012-12-29 11:28:37 UTC (rev 2540)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanCombo=
Box.jaxx 2012-12-29 13:29:17 UTC (rev 2541)
@@ -96,6 +96,9 @@
=20
Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/Bea=
nComboBoxHandler.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanCombo=
BoxHandler.java 2012-12-29 11:28:37 UTC (rev 2540)
+++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanCombo=
BoxHandler.java 2012-12-29 13:29:17 UTC (rev 2541)
@@ -26,16 +26,17 @@
package jaxx.runtime.swing.editor.bean;
=20
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;
=20
+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;
=20
@@ -53,11 +53,11 @@
*
* Note: ce handler n'est pas stateless et n'est donc pas partageable entre =
plusieurs ui.
*
+ * @param le type des objet contenus dans le mod=C3=A8le du composant.
* @author tchemit
- * @param le type des objet contenus dans le mod=C3=A8le du composant.
* @see BeanComboBox
*/
-public class BeanComboBoxHandler implements PropertyChangeListener {
+public class BeanComboBoxHandler implements PropertyChangeListener {//}, =
ListDataListener {
=20
public static final Log log =3D LogFactory.getLog(BeanComboBoxHandler.cl=
ass);
=20
@@ -127,29 +127,33 @@
=20
this.decorator =3D BeanUIUtil.createDecorator(decorator);
=20
+ JComboBox combobox =3D ui.getCombobox();
+
// init combobox renderer base on given decorator
- ui.getCombobox().setRenderer(new DecoratorListCellRenderer(this.deco=
rator));
+ combobox.setRenderer(new DecoratorListCellRenderer(this.decorator));
=20
convertor =3D BeanUIUtil.newDecoratedObjectToStringConverter(this.de=
corator);
=20
// keep a trace of original document (to make possible reverse autom=
-complete)=20
- JTextComponent editorComponent =3D (JTextComponent) ui.getCombobox()=
.getEditor().getEditorComponent();
+ JTextComponent editorComponent =3D (JTextComponent) combobox.getEdit=
or().getEditorComponent();
originalDocument =3D editorComponent.getDocument();
=20
// 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);
=20
ui.autoComplete =3D true;
=20
+// combobox.getModel().addListDataListener(this);
+
ui.addPropertyChangeListener(this);
=20
// set datas
@@ -164,6 +168,44 @@
popupHandler.togglePopup();
}
=20
+ public boolean isEmpty() {
+ boolean result =3D CollectionUtils.isEmpty(ui.getData());
+ return result;
+ }
+
+ public void addItem(O item) {
+
+ List data =3D ui.getData();
+ boolean wasEmpty =3D CollectionUtils.isEmpty(data);
+ data.add(item);
+
+ updateUI(ui.getIndex(), ui.isReverseSort());
+
+ fireEmpty(wasEmpty);
+ }
+
+ public void removeItem(O item) {
+
+ List data =3D ui.getData();
+
+ boolean remove =3D data.remove(item);
+
+ if (remove) {
+
+ // item was found in data
+
+ Object selectedItem =3D ui.getSelectedItem();
+ if (item =3D=3D selectedItem) {
+
+ // item was selected item, reset selected item then
+ ui.setSelectedItem(null);
+ }
+
+ updateUI(ui.getIndex(), ui.isReverseSort());
+ fireEmpty(false);
+ }
+ }
+
/**
* Modifie l'=C3=A9tat autoComplete de l'ui.
*
@@ -225,7 +267,6 @@
updateUI(ui.getIndex(), newValue);
}
=20
- @SuppressWarnings({"unchecked"})
protected void updateUI(int index, boolean reversesort) {
=20
// change decorator context
@@ -339,7 +380,7 @@
String propertyName =3D evt.getPropertyName();
=20
if (BeanComboBox.PROPERTY_SELECTED_ITEM.equals(propertyName)) {
- setSelectedItem((O)evt.getOldValue(), (O)evt.getNewValue());
+ setSelectedItem((O) evt.getOldValue(), (O) evt.getNewValue());
return;
}
=20
@@ -369,6 +410,15 @@
=20
// list has changed, force reload of index
setIndex(-1, ui.getIndex());
+
+ // list has changed, fire empty property
+ List list =3D (List) evt.getOldValue();
+ fireEmpty(CollectionUtils.isEmpty(list));
}
}
+
+ protected void fireEmpty(boolean wasEmpty) {
+ ui.firePropertyChange(BeanComboBox.PROPERTY_EMPTY, wasEmpty, isEmpty=
());
+ }
+
}
--===============2239798128725465416==--