Tony CHEMIT pushed to branch develop at ultreiaio / ird-observe Commits: 6f074224 by Tony CHEMIT at 2017-08-19T09:04:52+02:00 improve fob reference manager ui - - - - - 3 changed files: - client/src/main/java/fr/ird/observe/client/ui/dcprefs/FloatingObjectReferencesUI.jaxx - client/src/main/java/fr/ird/observe/client/ui/dcprefs/FloatingObjectReferencesUI.jcss - client/src/main/java/fr/ird/observe/client/ui/dcprefs/FloatingObjectReferencesUIHandler.java Changes: ===================================== client/src/main/java/fr/ird/observe/client/ui/dcprefs/FloatingObjectReferencesUI.jaxx ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/dcprefs/FloatingObjectReferencesUI.jaxx +++ b/client/src/main/java/fr/ird/observe/client/ui/dcprefs/FloatingObjectReferencesUI.jaxx @@ -31,32 +31,34 @@ <FloatingObjectReferencesUIModel id="model" initializer="getContextValue(FloatingObjectReferencesUIModel.class)"/> - <JPanel id="referencePanel" layout="{new BorderLayout()}"> - <BeanComboBox id='references' constructorParams='this' genericType='FloatingObjectReference' - constraints='BorderLayout.NORTH'/> - <JLabel id="noReferenceSelected" constraints='BorderLayout.CENTER'/> - <Table id="referenceForm" constraints='BorderLayout.SOUTH' fill="both"> - <row> - <cell anchor='west'> - <JLabel text='observe.common.name'/> - </cell> - <cell weightx='1' fill="both" anchor='east'> - <JTextField id="referenceName" onKeyReleased="model.setModified(true);"/> - </cell> - </row> + <JSplitPane id="referencePanel"> + <JList id='references' genericType="FloatingObjectReference"/> - <row> - <cell columns='2'> - <JPanel layout="{new GridLayout(1, 0)}"> - <JButton id="saveAction"/> - <JButton id="deleteAction"/> - </JPanel> - </cell> - </row> - </Table> - </JPanel> + <JPanel id="referenceContentPanel" layout="{new BorderLayout()}"> + + <JLabel id="noReferenceSelected" constraints='BorderLayout.CENTER'/> + <Table id="referenceForm" constraints='BorderLayout.SOUTH' fill="both"> + <row> + <cell anchor='west'> + <JLabel text='observe.common.name'/> + </cell> + <cell weightx='1' fill="both" anchor='east'> + <JTextField id="referenceName" onKeyReleased="model.setModified(true);"/> + </cell> + </row> + <row> + <cell columns='2'> + <JPanel layout="{new GridLayout(1, 0)}"> + <JButton id="saveAction"/> + <JButton id="deleteAction"/> + </JPanel> + </cell> + </row> + </Table> + </JPanel> + </JSplitPane> <JPanel constraints='BorderLayout.SOUTH' layout="{new GridLayout(1, 0)}"> <JButton id="quitAction"/> </JPanel> ===================================== client/src/main/java/fr/ird/observe/client/ui/dcprefs/FloatingObjectReferencesUI.jcss ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/dcprefs/FloatingObjectReferencesUI.jcss +++ b/client/src/main/java/fr/ird/observe/client/ui/dcprefs/FloatingObjectReferencesUI.jcss @@ -19,9 +19,6 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -#references { - selectedItem: {model.getReference()}; -} #noReferenceSelected { visible: true; ===================================== client/src/main/java/fr/ird/observe/client/ui/dcprefs/FloatingObjectReferencesUIHandler.java ===================================== --- a/client/src/main/java/fr/ird/observe/client/ui/dcprefs/FloatingObjectReferencesUIHandler.java +++ b/client/src/main/java/fr/ird/observe/client/ui/dcprefs/FloatingObjectReferencesUIHandler.java @@ -23,9 +23,9 @@ package fr.ird.observe.client.ui.dcprefs; */ import fr.ird.observe.client.ObserveSwingApplicationContext; -import fr.ird.observe.client.ui.ObserveKeyStrokes; import fr.ird.observe.client.ui.actions.UIActionSupport; import fr.ird.observe.client.ui.content.ObserveActionMap; +import fr.ird.observe.client.ui.util.UIHelper; import fr.ird.observe.services.dto.FloatingObjectReference; import java.awt.BorderLayout; import java.util.LinkedList; @@ -33,12 +33,11 @@ import java.util.List; import java.util.Objects; import java.util.Set; import javax.swing.AbstractButton; -import javax.swing.JComponent; +import javax.swing.DefaultListModel; import javax.swing.SwingUtilities; import org.nuiton.decorator.Decorator; -import org.nuiton.decorator.JXPathDecorator; import org.nuiton.jaxx.runtime.spi.UIHandler; -import org.nuiton.jaxx.widgets.select.BeanComboBox; +import org.nuiton.jaxx.runtime.swing.renderer.DecoratorListCellRenderer; import static fr.ird.observe.client.ui.content.ContentUIInitializer.OBSERVE_ACTION; @@ -74,35 +73,50 @@ public class FloatingObjectReferencesUIHandler implements UIHandler<FloatingObje } - Decorator<FloatingObjectReference> remoteDecorator = ObserveSwingApplicationContext.get().getDecoratorService().getDecoratorByType(FloatingObjectReference.class); - ui.getReferences().init((JXPathDecorator<FloatingObjectReference>) remoteDecorator, ui.getModel().getReferences()); + Decorator<FloatingObjectReference> decorator = ObserveSwingApplicationContext.get().getDecoratorService().getDecoratorByType(FloatingObjectReference.class); + ui.getReferences().setCellRenderer(new DecoratorListCellRenderer<>(decorator)); - ui.getModel().addPropertyChangeListener(FloatingObjectReferencesUIModel.PROPERTY_REFERENCES, evt -> ui.getReferences().setData((List<FloatingObjectReference>) evt.getNewValue())); + DefaultListModel<FloatingObjectReference> listModel = new DefaultListModel<>(); + ui.getModel().getReferences().forEach(listModel::addElement); + ui.getReferences().setModel(listModel); + ui.getReferences().addListSelectionListener(evt -> { + if (ui.getReferences().isSelectionEmpty()) { - ui.getReferences().addPropertyChangeListener(BeanComboBox.PROPERTY_SELECTED_ITEM, evt -> { + ui.getModel().setReference(null); + } else { + ui.getModel().setReference(ui.getReferences().getSelectedValue()); + } + }); + + ui.getModel().addPropertyChangeListener(FloatingObjectReferencesUIModel.PROPERTY_REFERENCES, evt -> { + List newValue = (List) evt.getNewValue(); + + listModel.clear(); + for (Object reference : newValue) { + listModel.addElement((FloatingObjectReference) reference); + } + }); + + ui.getModel().addPropertyChangeListener(FloatingObjectReferencesUIModel.PROPERTY_REFERENCE, evt -> { FloatingObjectReference oldValue = (FloatingObjectReference) evt.getOldValue(); - FloatingObjectReference newValue = (FloatingObjectReference) evt.getNewValue(); - ui.getModel().setReference(newValue); if (ui.getModel().getReference() == null) { - ui.getReferencePanel().remove(ui.getReferenceForm()); - ui.getReferencePanel().add(ui.getNoReferenceSelected(), BorderLayout.CENTER); + ui.getReferenceContentPanel().remove(ui.getReferenceForm()); + ui.getReferenceContentPanel().add(ui.getNoReferenceSelected(), BorderLayout.CENTER); } else { if (oldValue == null) { ui.getReferenceForm().setVisible(true); - ui.getReferencePanel().remove(ui.getNoReferenceSelected()); - ui.getReferencePanel().add(ui.getReferenceForm(), BorderLayout.CENTER); + ui.getReferenceContentPanel().remove(ui.getNoReferenceSelected()); + ui.getReferenceContentPanel().add(ui.getReferenceForm(), BorderLayout.CENTER); + UIHelper.askFocus(ui.getReferenceName()); } ui.getModel().setModified(false); } SwingUtilities.invokeLater(ui::repaint); }); - ui.getReferences().getCombobox().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT) - .put(ObserveKeyStrokes.KEY_STROKE_DELETE, "none"); - - ObserveKeyStrokes.addKeyStrokeFromMnemonic(ui); + UIHelper.askFocus(ui.getQuitAction()); } protected void init(ObserveActionMap actionMap, AbstractButton editor) { @@ -112,7 +126,6 @@ public class FloatingObjectReferencesUIHandler implements UIHandler<FloatingObje return; } - // on a trouve une action commune UIActionSupport action = (UIActionSupport) actionMap.get(actionId); Objects.requireNonNull(action, "action [" + actionId + "] not found for ui " + ui.getClass().getName()); View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/6f0742249c985ce4319a2eaa7662... --- View it on GitLab: https://gitlab.com/ultreiaio/ird-observe/commit/6f0742249c985ce4319a2eaa7662... You're receiving this email because of your account on gitlab.com.
participants (1)
-
Tony CHEMIT