Author: kmorin Date: 2013-05-15 18:48:20 +0200 (Wed, 15 May 2013) New Revision: 2670 Url: http://nuiton.org/projects/jaxx/repository/revisions/2670 Log: fixes #2689 [Swing session] create a state for the BeanFilterableComboBox Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/session/ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/session/BeanFilterableComboBoxState.java Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/session/SwingSession.java trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanFilterableComboBox.css trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanFilterableComboBoxHandler.java Modified: trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/session/SwingSession.java =================================================================== --- trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/session/SwingSession.java 2013-05-13 09:11:13 UTC (rev 2669) +++ trunk/jaxx-runtime/src/main/java/jaxx/runtime/swing/session/SwingSession.java 2013-05-15 16:48:20 UTC (rev 2670) @@ -92,7 +92,12 @@ * key: path of compoenent; value: State */ protected Map<String, State> states; + public SwingSession(File file, boolean autoSave) { + this(file, autoSave, Maps.<Class, State>newHashMap()); + } + + public SwingSession(File file, boolean autoSave, Map<Class, State> additionalStates) { this.file = file; this.autoSave = autoSave; stateManager.put(Window.class, new WindowState()); @@ -100,6 +105,7 @@ stateManager.put(JTabbedPane.class, new JTabbedPaneState()); stateManager.put(JSplitPane.class, new JSplitPaneState()); stateManager.put(JXTable.class, new JXTableSwingSessionState()); + stateManager.putAll(additionalStates); states = loadStates(file); if (states == null) { Modified: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanFilterableComboBox.css =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanFilterableComboBox.css 2013-05-13 09:11:13 UTC (rev 2669) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanFilterableComboBox.css 2013-05-15 16:48:20 UTC (rev 2670) @@ -31,7 +31,7 @@ } #popup { - border:{new TitledBorder(_("beancombobox.popup.title"))}; + border:{ new TitledBorder(_("beancombobox.popup.title")) }; } #popupSortLabel { 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-05-13 09:11:13 UTC (rev 2669) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/editor/bean/BeanFilterableComboBoxHandler.java 2013-05-15 16:48:20 UTC (rev 2670) @@ -37,10 +37,7 @@ import org.nuiton.util.decorator.JXPathDecorator; import org.nuiton.util.decorator.MultiJXPathDecorator; -import javax.swing.ComboBoxEditor; -import javax.swing.JComboBox; -import javax.swing.JComponent; -import javax.swing.JPopupMenu; +import javax.swing.*; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; import javax.swing.text.JTextComponent; @@ -386,6 +383,10 @@ if (log.isDebugEnabled()) { log.debug("check state : <" + oldValue + " to " + newValue + ">"); } + AbstractButton button = ui.getIndexes().getButton(newValue); + if (button != null) { + button.setSelected(true); + } updateUI(newValue, ui.isReverseSort()); } Added: trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/session/BeanFilterableComboBoxState.java =================================================================== --- trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/session/BeanFilterableComboBoxState.java (rev 0) +++ trunk/jaxx-widgets/src/main/java/jaxx/runtime/swing/session/BeanFilterableComboBoxState.java 2013-05-15 16:48:20 UTC (rev 2670) @@ -0,0 +1,67 @@ +package jaxx.runtime.swing.session; + +import jaxx.runtime.swing.editor.bean.BeanFilterableComboBox; + +/** + * @author kmorin <kmorin@codelutin.com> + * @since 2.5.20 + */ +public class BeanFilterableComboBoxState implements State { + + protected int index = 0; + + protected boolean reverseSort = false; + + public BeanFilterableComboBoxState() { + } + + public BeanFilterableComboBoxState(int index, boolean reverseSort) { + this.index = index; + this.reverseSort = reverseSort; + } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + public boolean isReverseSort() { + return reverseSort; + } + + public void setReverseSort(boolean reverseSort) { + this.reverseSort = reverseSort; + } + + protected BeanFilterableComboBox checkComponent(Object o) { + if (o == null) { + throw new IllegalArgumentException("null component"); + } + if (!(o instanceof BeanFilterableComboBox)) { + throw new IllegalArgumentException("invalid component"); + } + return (BeanFilterableComboBox) o; + } + + @Override + public State getState(Object o) { + BeanFilterableComboBox combo = checkComponent(o); + return new BeanFilterableComboBoxState(combo.getIndex(), combo.isReverseSort()); + } + + @Override + public void setState(Object o, State state) { + if (!(state instanceof BeanFilterableComboBoxState)) { + throw new IllegalArgumentException("invalid state"); + } + BeanFilterableComboBox combo = checkComponent(o); + BeanFilterableComboBoxState bfcbState = (BeanFilterableComboBoxState) state; + combo.setIndex(bfcbState.getIndex()); + combo.setReverseSort(bfcbState.isReverseSort()); + } + + +}