Author: kmorin Date: 2013-05-16 19:09:40 +0200 (Thu, 16 May 2013) New Revision: 2671 Url: http://nuiton.org/projects/jaxx/repository/revisions/2671 Log: fixes #2690 [BeanDoubleList] Add a shortcut to add the selected items and to remove them from the selected 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/BeanDoubleListHandler.java 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-05-15 16:48:20 UTC (rev 2670) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleList.jaxx 2013-05-16 17:09:40 UTC (rev 2671) @@ -108,7 +108,9 @@ <JScrollPane onFocusGained='universeList.requestFocus()'> <!-- List of all the remaining available elements --> <JList id='universeList' - onMouseClicked='handler.onUniverseListClicked(event)'/> + onFocusGained='handler.selectFirstRowIfNoSelection(event)' + onMouseClicked='handler.onUniverseListClicked(event)' + onKeyPressed='handler.onKeyPressedOnUniverseList(event)'/> </JScrollPane> </cell> @@ -123,7 +125,9 @@ <JScrollPane onFocusGained='selectedList.requestFocus()'> <!-- List of the selected elements --> <JList id='selectedList' - onMouseClicked='handler.onSelectedListClicked(event)'/> + onFocusGained='handler.selectFirstRowIfNoSelection(event)' + onMouseClicked='handler.onSelectedListClicked(event)' + onKeyPressed='handler.onKeyPressedOnSelectedList(event)'/> </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-05-15 16:48:20 UTC (rev 2670) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanDoubleListHandler.java 2013-05-16 17:09:40 UTC (rev 2671) @@ -47,6 +47,9 @@ import javax.swing.event.ListDataListener; 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; import java.beans.PropertyChangeListener; @@ -404,4 +407,35 @@ ((JaxxFilterableListModel) ui.getModel().getUniverseModel()).refreshFilteredElements(); } + public void onKeyPressedOnUniverseList(KeyEvent e) { + if (e.getKeyCode() == KeyEvent.VK_ENTER) { + int lastIndice = ui.getUniverseList().getSelectionModel().getLeadSelectionIndex(); + select(); + JList source = (JList) e.getSource(); + if (source.getModel().getSize() > 0) { + source.setSelectedIndex(Math.min(lastIndice, source.getModel().getSize() - 1)); + } else { + ui.getSelectedList().requestFocus(); + } + } + } + + public void onKeyPressedOnSelectedList(KeyEvent e) { + if (e.getKeyCode() == KeyEvent.VK_DELETE) { + int lastIndice = ui.getSelectedList().getSelectionModel().getLeadSelectionIndex(); + unselect(); + JList source = (JList) e.getSource(); + if (source.getModel().getSize() > 0) { + source.setSelectedIndex(Math.min(lastIndice, source.getModel().getSize() - 1)); + ui.getSelectedList().requestFocus(); + } + } + } + + public void selectFirstRowIfNoSelection(FocusEvent event) { + JList list = (JList) event.getSource(); + if (list.isSelectionEmpty()) { + list.setSelectedIndex(0); + } + } }