r2719 - in trunk/jaxx-widgets/src/main: java/jaxx/runtime/swing/editor/bean resources/i18n resources/icons
Author: tchemit Date: 2013-09-20 14:51:47 +0200 (Fri, 20 Sep 2013) New Revision: 2719 Url: http://nuiton.org/projects/jaxx/repository/revisions/2719 Log: fixes 2852: [BeanDoubleList] Can reorder selected items Added: trunk/jaxx-widgets/src/main/resources/icons/action-bean-doublelist-down.png trunk/jaxx-widgets/src/main/resources/icons/action-bean-doublelist-up.png Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.css trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListHandler.java trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListModel.java trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanFilterableComboBox.jaxx trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanFilterableComboBoxHandler.java trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_en_GB.properties trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_es_ES.properties trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_fr_FR.properties Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.css =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.css 2013-09-19 10:51:19 UTC (rev 2718) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.css 2013-09-20 12:51:47 UTC (rev 2719) @@ -75,6 +75,27 @@ selected:{isReverseSort()}; } +#selectedListMoveUpAction { + actionIcon: "bean-doublelist-up"; + text: "bean.action.selected.move.up"; + toolTipText: "bean.action.selected.move.up.tip"; + enabled:{model.isSelectedUpEnabled()}; +} + +#selectedListMoveDownAction { + actionIcon: "bean-doublelist-down"; + text: "bean.action.selected.move.down"; + toolTipText: "bean.action.selected.move.down.tip"; + enabled:{model.isSelectedDownEnabled()}; +} + +#selectedListRemoveAction { + actionIcon: "bean-doublelist-unselect"; + text: "bean.action.selected.remove"; + toolTipText: "bean.action.selected.remove.tip"; + enabled:{model.isRemoveEnabled()}; +} + #toolbarLeft { floatable:false; borderPainted:false; Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx 2013-09-19 10:51:19 UTC (rev 2718) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx 2013-09-20 12:51:47 UTC (rev 2719) @@ -85,6 +85,16 @@ <JLabel id='popupLabel'/> <JSeparator/> </JPopupMenu> + + <!-- popup on the selected list --> + <JPopupMenu id='selectedListPopup'> + <JMenuItem id='selectedListMoveUpAction' + onActionPerformed='handler.moveUpSelected( (O) selectedList.getSelectedValue())'/> + <JMenuItem id='selectedListMoveDownAction' + onActionPerformed='handler.moveDownSelected( (O) selectedList.getSelectedValue())'/> + <JMenuItem id='selectedListRemoveAction' + onActionPerformed='model.removeFromSelected( (O) selectedList.getSelectedValue())'/> + </JPopupMenu> <row> <cell columns='3' fill='both'> @@ -127,7 +137,8 @@ <JList id='selectedList' onFocusGained='handler.selectFirstRowIfNoSelection(event)' onMouseClicked='handler.onSelectedListClicked(event)' - onKeyPressed='handler.onKeyPressedOnSelectedList(event)'/> + onKeyPressed='handler.onKeyPressedOnSelectedList(event)' + componentPopupMenu='{selectedListPopup}'/> </JScrollPane> </cell> </row> Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListHandler.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListHandler.java 2013-09-19 10:51:19 UTC (rev 2718) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListHandler.java 2013-09-20 12:51:47 UTC (rev 2719) @@ -37,7 +37,11 @@ import org.nuiton.decorator.JXPathDecorator; import org.nuiton.decorator.MultiJXPathDecorator; -import javax.swing.*; +import javax.swing.AbstractButton; +import javax.swing.JComponent; +import javax.swing.JList; +import javax.swing.JPopupMenu; +import javax.swing.ListSelectionModel; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.event.ListDataEvent; @@ -45,7 +49,6 @@ import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import java.awt.event.FocusEvent; -import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; @@ -128,7 +131,26 @@ @Override public void valueChanged(ListSelectionEvent e) { ListSelectionModel source = (ListSelectionModel) e.getSource(); - ui.getModel().setRemoveEnabled(!source.isSelectionEmpty()); + BeanDoubleListModel<O> model = ui.getModel(); + if (!e.getValueIsAdjusting()) { + boolean removeEnabled = !source.isSelectionEmpty(); + model.setRemoveEnabled(removeEnabled); + + int minSelectionIndex = source.getMinSelectionIndex(); + int maxSelectionIndex = source.getMaxSelectionIndex(); + + boolean oneSelection = minSelectionIndex == maxSelectionIndex; + + boolean upEnabled = removeEnabled && + oneSelection && + minSelectionIndex > 0; + model.setSelectedUpEnabled(upEnabled); + + boolean downEnabled = removeEnabled && + oneSelection && + minSelectionIndex + 1 < model.getSelectedListSize(); + model.setSelectedDownEnabled(downEnabled); + } } }); @@ -222,6 +244,28 @@ } /** + * Move up a selected item. + * + * @param item the selected item + * @since 2.5.26 + */ + public void moveUpSelected(O item) { + ui.getModel().moveUpSelected(item); + ui.getSelectedList().setSelectedValue(item, true); + } + + /** + * Move down a selected item. + * + * @param item the selected item + * @since 2.5.26 + */ + public void moveDownSelected(O item) { + ui.getModel().moveDownSelected(item); + ui.getSelectedList().setSelectedValue(item, true); + } + + /** * Modifie l'index du décorateur * * @param oldValue l'ancienne valeur 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 2013-09-19 10:51:19 UTC (rev 2718) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListModel.java 2013-09-20 12:51:47 UTC (rev 2719) @@ -26,6 +26,7 @@ import com.google.common.collect.Lists; import jaxx.runtime.swing.model.JaxxDefaultListModel; +import jaxx.runtime.swing.model.JaxxFilterableListModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.beans.AbstractSerializableBean; @@ -33,7 +34,6 @@ import javax.swing.ListModel; import java.util.ArrayList; import java.util.List; -import jaxx.runtime.swing.model.JaxxFilterableListModel; /** * The model of the {@link BeanDoubleList} widget @@ -47,11 +47,14 @@ 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"; + public static final String PROPERTY_SELECTED_UP_ENABLED = "selectedUpEnabled"; + + public static final String PROPERTY_SELECTED_DOWN_ENABLED = "selectedDownEnabled"; + private static final long serialVersionUID = 1L; /** List of all the available items */ @@ -70,6 +73,10 @@ protected boolean removeEnabled; + protected boolean selectedUpEnabled; + + protected boolean selectedDownEnabled; + /** * To get the selected items. * @@ -130,18 +137,10 @@ return selectedModel; } -// public void setSelectedModel(ListModel selectedModel) { -// this.selectedModel = selectedModel; -// } - public ListModel getUniverseModel() { return universeModel; } -// public void setUniverseModel(ListModel universeModel) { -// this.universeModel = universeModel; -// } - /** * Adds an item to the selected items. * @@ -190,6 +189,34 @@ } } + /** + * Move up a selected item. + * + * @param item the selected item + * @since 2.5.26 + */ + public void moveUpSelected(O item) { + int i = selected.indexOf(item); + selected.remove(item); + selected.add(i - 1, item); + selectedModel.removeElement(item); + selectedModel.insertElementAt(item, i - 1); + } + + /** + * Move down a selected item. + * + * @param item the selected item + * @since 2.5.26 + */ + public void moveDownSelected(O item) { + int i = selected.indexOf(item); + selected.remove(item); + selected.add(i + 1, item); + selectedModel.removeElement(item); + selectedModel.insertElementAt(item, i + 1); + } + public boolean isAddEnabled() { return addEnabled; } @@ -210,6 +237,26 @@ firePropertyChange(PROPERTY_REMOVE_ENABLED, oldValue, removeEnabled); } + public boolean isSelectedUpEnabled() { + return selectedUpEnabled; + } + + public void setSelectedUpEnabled(boolean selectedUpEnabled) { + boolean oldValue = isSelectedUpEnabled(); + this.selectedUpEnabled = selectedUpEnabled; + firePropertyChange(PROPERTY_SELECTED_UP_ENABLED, oldValue, selectedUpEnabled); + } + + public boolean isSelectedDownEnabled() { + return selectedDownEnabled; + } + + public void setSelectedDownEnabled(boolean selectedDownEnabled) { + boolean oldValue = isSelectedDownEnabled(); + this.selectedDownEnabled = selectedDownEnabled; + firePropertyChange(PROPERTY_SELECTED_DOWN_ENABLED, oldValue, selectedDownEnabled); + } + /** * Adds an item to the available items list at the right index * to keep always the same order. @@ -238,4 +285,8 @@ universeModel.add(insertionIndex, item); } + + public int getSelectedListSize() { + return selected.size(); + } } Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanFilterableComboBox.jaxx =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanFilterableComboBox.jaxx 2013-09-19 10:51:19 UTC (rev 2718) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanFilterableComboBox.jaxx 2013-09-20 12:51:47 UTC (rev 2719) @@ -124,6 +124,8 @@ public void removeItem(O item) { handler.removeItem(item); } +public void reset() { handler.reset(); } + ]]> </script> <row> Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanFilterableComboBoxHandler.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanFilterableComboBoxHandler.java 2013-09-19 10:51:19 UTC (rev 2718) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanFilterableComboBoxHandler.java 2013-09-20 12:51:47 UTC (rev 2719) @@ -331,6 +331,9 @@ updateUI(ui.getIndex(), ui.isReverseSort()); } + /** + * Reset the combo-box; says remove any selected item and filter text. + */ public void reset() { if (ui.getSelectedItem() != null) { ui.setSelectedItem(null); Modified: trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_en_GB.properties =================================================================== --- trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_en_GB.properties 2013-09-19 10:51:19 UTC (rev 2718) +++ trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_en_GB.properties 2013-09-20 12:51:47 UTC (rev 2719) @@ -2,6 +2,14 @@ aboutframe.license=License aboutframe.ok=OK aboutframe.thirdparty=Third party +bean.action.selected.move.down=Move down +bean.action.selected.move.down.tip=Move down the selected item +bean.action.selected.move.up=Move up +bean.action.selected.move.up.tip=Move up the selected item +bean.action.selected.remove=Unselect +bean.action.selected.remove.tip=Unselect the selected item +bean.action.selected.removeAll=Unselect all +bean.action.selected.removeAll.tip=Unselecte all items bean.popup.label=Object '%1$s' bean.sort.down=Descending sort bean.sort.down.tip=Actually, sort order is descending Modified: trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_es_ES.properties =================================================================== --- trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_es_ES.properties 2013-09-19 10:51:19 UTC (rev 2718) +++ trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_es_ES.properties 2013-09-20 12:51:47 UTC (rev 2719) @@ -2,6 +2,14 @@ aboutframe.license=Licecia aboutframe.ok=OK aboutframe.thirdparty=Tierce partie +bean.action.selected.move.down=Descendre +bean.action.selected.move.down.tip=Descendre l'élément sélectionné +bean.action.selected.move.up=Monter +bean.action.selected.move.up.tip=Monter l'élément sélectionné +bean.action.selected.remove=Supprimer +bean.action.selected.remove.tip=Supprimer l'élément sélectionné +bean.action.selected.removeAll=Supprimer Tout +bean.action.selected.removeAll.tip=Supprimer tous les éléments bean.popup.label=Objeto '%1$s' bean.sort.down=Calsificación decreciente bean.sort.down.tip=Clasificación decreciente actualmente utilizada Modified: trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_fr_FR.properties =================================================================== --- trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_fr_FR.properties 2013-09-19 10:51:19 UTC (rev 2718) +++ trunk/jaxx-widgets/src/main/resources/i18n/jaxx-widgets_fr_FR.properties 2013-09-20 12:51:47 UTC (rev 2719) @@ -2,6 +2,14 @@ aboutframe.license=Licence aboutframe.ok=OK aboutframe.thirdparty=Tierce partie +bean.action.selected.move.down=Descendre +bean.action.selected.move.down.tip=Descendre l'élément sélectionné +bean.action.selected.move.up=Monter +bean.action.selected.move.up.tip=Monter l'élément sélectionné +bean.action.selected.remove=Supprimer +bean.action.selected.remove.tip=Supprimer l'élément sélectionné +bean.action.selected.removeAll=Supprimer Tout +bean.action.selected.removeAll.tip=Supprimer tous les éléments bean.popup.label=Objet '%1$s' bean.sort.down=Tri décroissant bean.sort.down.tip=Tri décroissant actuellement utilisé Added: trunk/jaxx-widgets/src/main/resources/icons/action-bean-doublelist-down.png =================================================================== (Binary files differ) Property changes on: trunk/jaxx-widgets/src/main/resources/icons/action-bean-doublelist-down.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-up.png =================================================================== (Binary files differ) Property changes on: trunk/jaxx-widgets/src/main/resources/icons/action-bean-doublelist-up.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: svn:keywords + Author Date Id Revision HeadURL
participants (1)
-
tchemit@users.nuiton.org