branch feature/8109 created (now c417e39)
This is an automated email from the git hooks/post-receive script. New change to branch feature/8109 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git at c417e39 ajout de la popup d'edition des etats matures d'une caracteristique (refs #8109) This branch includes the following new commits: new 71ce616 filtre des psfm avec valeurs qualitatuves pour la maturité (refs #8019) new c417e39 ajout de la popup d'edition des etats matures d'une caracteristique (refs #8109) The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit c417e3966af810ac8916399f779314ee8f6396bd Author: Kevin Morin <morin@codelutin.com> Date: Wed Mar 23 10:33:50 2016 +0100 ajout de la popup d'edition des etats matures d'une caracteristique (refs #8109) commit 71ce61697cbceaf3fd7dfa3af7e9eb868cf55382 Author: Kevin Morin <morin@codelutin.com> Date: Tue Mar 22 15:34:18 2016 +0100 filtre des psfm avec valeurs qualitatuves pour la maturité (refs #8019) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8109 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 71ce61697cbceaf3fd7dfa3af7e9eb868cf55382 Author: Kevin Morin <morin@codelutin.com> Date: Tue Mar 22 15:34:18 2016 +0100 filtre des psfm avec valeurs qualitatuves pour la maturité (refs #8019) --- .../ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java index aa1e242..f9d1332 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java @@ -505,7 +505,7 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI initDoubleList(EditProtocolUIModel.PROPERTY_MATURITY_PMFM_ID, this.ui.getMaturityList(), - Lists.newArrayList(model.getCaracteristics()), + model.getCaracteristics().stream().filter(caracteristic -> !caracteristic.isQualitativeValueEmpty()).collect(Collectors.toList()), model.getMaturityPmfmId()); // init caracteristics mappingtable -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/8109 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit c417e3966af810ac8916399f779314ee8f6396bd Author: Kevin Morin <morin@codelutin.com> Date: Wed Mar 23 10:33:50 2016 +0100 ajout de la popup d'edition des etats matures d'une caracteristique (refs #8109) --- .../filtered-resources/tutti-help-fr.properties | 26 +--- .../ui/swing/content/protocol/EditProtocolUI.jaxx | 2 + .../ui/swing/content/protocol/EditProtocolUI.jcss | 10 ++ .../content/protocol/EditProtocolUIHandler.java | 16 ++- .../actions/EditMaturityCaracteristicAction.java | 61 ++++++++++ .../maturity/EditMaturityCaracteristicPopupUI.jaxx | 79 ++++++++++++ .../maturity/EditMaturityCaracteristicPopupUI.jcss | 48 ++++++++ .../EditMaturityCaracteristicPopupUIHandler.java | 135 +++++++++++++++++++++ .../EditMaturityCaracteristicPopupUIModel.java | 88 ++++++++++++++ ...yCaracteristicPopupUIModel-error-validation.xml | 41 +++++++ .../resources/i18n/tutti-ui-swing_en_GB.properties | 6 + .../resources/i18n/tutti-ui-swing_fr_FR.properties | 6 + 12 files changed, 492 insertions(+), 26 deletions(-) diff --git a/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties b/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties index 20a5134..be5d232 100644 --- a/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties +++ b/tutti-ui-swing/src/main/filtered-resources/tutti-help-fr.properties @@ -1,28 +1,5 @@ -### -# #%L -# Tutti :: UI -# $Id:$ -# $HeadURL:$ -# %% -# Copyright (C) 2012 - 2016 Ifremer -# %% -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public -# License along with this program. If not, see -# <http://www.gnu.org/licenses/gpl-3.0.html>. -# #L% -### #Generated by org.nuiton.jaxx.plugin.GenerateHelpIdsMojo -#Wed Mar 16 14:34:44 CET 2016 +#Tue Mar 22 16:41:43 CET 2016 tutti.config.help=config.html tutti.createAccidentalBatch.action.cancel.help=editFishingOperation.html\#captureCapturesAccidentellesActions tutti.createAccidentalBatch.action.saveAndClose.help=editFishingOperation.html\#captureCapturesAccidentellesActions @@ -256,6 +233,7 @@ tutti.editProtocol.action.addBenthosProtocol.help=editProtocol.html\#actionsBent tutti.editProtocol.action.addCaracteristicMapping.help=editProtocol.html\#actions tutti.editProtocol.action.addSpeciesProtocol.help=editProtocol.html\#actionsSpecies tutti.editProtocol.action.closeEditProtocol.help=editProtocol.html\#actions +tutti.editProtocol.action.editMaturityCaracteristic.help= tutti.editProtocol.action.exportProtocolAllCaracteristic.help=editProtocol.html\#actionsCaracteristics tutti.editProtocol.action.exportProtocolBenthos.help=editProtocol.html\#actionsBenthos tutti.editProtocol.action.exportProtocolCaracteristic.tip=editProtocol.html\#actionsCaracteristics diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx index aaa9b40..d835235 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx @@ -68,6 +68,8 @@ <field name='comment' component='commentPane'/> </BeanValidator> + <JMenuItem id='editMaturityCaracteristicAction'/> + <JPopupMenu id='speciesTablePopup'> <JMenuItem id='removeSpeciesProtocolButton'/> </JPopupMenu> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jcss b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jcss index fd159ee..f0deebb 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jcss +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jcss @@ -357,4 +357,14 @@ JTextField { enabled: {model.isMoveDownCaracteristicMappingEnabled()}; _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.actions.MoveDownCaracteristicMappingAction.class}; _help: {"tutti.editProtocol.action.moveDownCaracteristicMapping.help"}; +} + +#editMaturityCaracteristicAction { + actionIcon: edit; + text: "tutti.editProtocol.action.editMaturityCaracteristic"; + toolTipText: "tutti.editProtocol.action.editMaturityCaracteristic.tip"; + i18nMnemonic: "tutti.editProtocol.action.editMaturityCaracteristic.mnemonic"; + enabled: false; + _simpleAction: {fr.ifremer.tutti.ui.swing.content.protocol.actions.EditMaturityCaracteristicAction.class}; + _help: {"tutti.editProtocol.action.editMaturityCaracteristic.help"}; } \ No newline at end of file diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java index f9d1332..4deedcd 100644 --- a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java @@ -87,6 +87,8 @@ import org.nuiton.jaxx.application.swing.util.CloseableUI; import javax.swing.JComboBox; import javax.swing.JComponent; +import javax.swing.JList; +import javax.swing.JMenuItem; import javax.swing.JOptionPane; import javax.swing.JTabbedPane; import javax.swing.JTable; @@ -487,10 +489,11 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI }); } + BeanDoubleList<Caracteristic> maturityList = this.ui.getMaturityList(); allDoubleLists = Lists.newArrayList( this.ui.getLengthClassesList(), this.ui.getIndividualObservationList(), - this.ui.getMaturityList() + maturityList ); initDoubleList(EditProtocolUIModel.PROPERTY_LENGTH_CLASSES_PMFM_ID, @@ -504,10 +507,19 @@ public class EditProtocolUIHandler extends AbstractTuttiUIHandler<EditProtocolUI model.getIndividualObservationPmfmId()); initDoubleList(EditProtocolUIModel.PROPERTY_MATURITY_PMFM_ID, - this.ui.getMaturityList(), + maturityList, model.getCaracteristics().stream().filter(caracteristic -> !caracteristic.isQualitativeValueEmpty()).collect(Collectors.toList()), model.getMaturityPmfmId()); + JMenuItem editMaturity = ui.getEditMaturityCaracteristicAction(); + maturityList.getSelectedListPopup().add(editMaturity); + // add listener to enable the maturity edition + maturityList.getSelectedList().addListSelectionListener(e -> { + JList maturitySelectedList = (JList) e.getSource(); + boolean editMaturityEnabled = maturitySelectedList.getSelectedIndices().length == 1; + editMaturity.setEnabled(editMaturityEnabled); + }); + // init caracteristics mappingtable { JXTable caracteristicsMappingTable = getCaracteristicsMappingTable(); diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/EditMaturityCaracteristicAction.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/EditMaturityCaracteristicAction.java new file mode 100644 index 0000000..fabb121 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/actions/EditMaturityCaracteristicAction.java @@ -0,0 +1,61 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.actions; + +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; +import fr.ifremer.tutti.ui.swing.content.protocol.maturity.EditMaturityCaracteristicPopupUI; +import fr.ifremer.tutti.ui.swing.util.actions.SimpleActionSupport; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.5 + */ +public class EditMaturityCaracteristicAction extends SimpleActionSupport<EditProtocolUI> { + + public EditMaturityCaracteristicAction(EditProtocolUI ui) { + super(ui); + } + + @Override + protected void onActionPerformed(EditProtocolUI ui) { + + EditMaturityCaracteristicPopupUI popupUI = new EditMaturityCaracteristicPopupUI(ui); + popupUI.open((Caracteristic) ui.getMaturityList().getSelectedList().getSelectedValue()); + +// JXTable cpsTable = ui.getCpsTable(); +// CalcifiedPiecesSamplingEditorTableModel tableModel = (CalcifiedPiecesSamplingEditorTableModel) cpsTable.getModel(); +// +// int selectedRow = cpsTable.getSelectedRow(); +// +// List<CalcifiedPiecesSamplingEditorRowModel> cpsRows = ui.getModel().getCpsRows(); +// +// CalcifiedPiecesSamplingEditorRowModel row = cpsRows.get(selectedRow); +// +// int minMinSize = row.getMinSize() + 1; +// Integer maxMinSize = row.getMaxSize() != null ? row.getMaxSize() - 1 : null; +// +// MinSizePopupUI minSizePopupUI = new MinSizePopupUI(ui); +// minSizePopupUI.open(minMinSize, maxMinSize); +// +// if (minSizePopupUI.getModel().isValid()) { +// +// Integer minSize = minSizePopupUI.getModel().getMinSize(); +// Integer exMaxSize = row.getMaxSize(); +// row.setMaxSize(minSize - 1); +// +// CalcifiedPiecesSamplingEditorRowModel newRow = ui.getHandler().createNewRow(row.getProtocolSpecies(), +// row.getMaturity(), +// row.isSex(), +// minSize, +// exMaxSize); +// cpsRows.add(selectedRow + 1, newRow); +// +// tableModel.fireTableRowsUpdated(selectedRow, selectedRow); +// tableModel.fireTableRowsInserted(newRow); +// +// // select this new row +// // int rowIndex = tableModel.getRowIndex(newRow); +// // SwingUtil.setSelectionInterval(cpsTable, rowIndex); +// } + } + +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUI.jaxx b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUI.jaxx new file mode 100644 index 0000000..cf11700 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUI.jaxx @@ -0,0 +1,79 @@ +<!-- + #%L + Tutti :: UI + %% + Copyright (C) 2012 - 2014 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> +<JDialog id='editMaturityCaracteristicDialog' layout='{new BorderLayout()}' + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<EditMaturityCaracteristicPopupUIModel, EditMaturityCaracteristicPopupUIHandler>'> + + <import> + fr.ifremer.tutti.persistence.entities.referential.Caracteristic + fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue + + fr.ifremer.tutti.ui.swing.TuttiUIContext + fr.ifremer.tutti.ui.swing.util.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUIUtil + + </import> + + <script><![CDATA[ + +public EditMaturityCaracteristicPopupUI(TuttiUI<?,?> parentUI) { + super(parentUI.getHandler().getContext().getMainUI()); + TuttiUIUtil.setParentUI(this, parentUI); +} + +public void open(Caracteristic maturityCaracteristic) { + handler.open(maturityCaracteristic); +} + ]]></script> + + <EditMaturityCaracteristicPopupUIModel id="model" javaBean="new EditMaturityCaracteristicPopupUIModel()"/> + + <BeanValidator id='validator' bean='model' + uiClass='jaxx.runtime.validator.swing.ui.ImageValidationUI'> + <field name='qualitativeValues' component='maturityValuesEditor'/> + </BeanValidator> + + <Table id='mainPanel' fill='both'> + + <row> + <cell> + <JLabel id='message'/> + </cell> + </row> + + <row weighty="1"> + <cell weightx='1'> + <JList id='maturityValuesEditor' genericType="CaracteristicQualitativeValue"/> + </cell> + </row> + + <row> + <cell> + <JPanel layout='{new GridLayout(1, 0)}'> + <JButton id='cancelButton' onActionPerformed="handler.cancel()"/> + <JButton id='validateButton' onActionPerformed="handler.validate()"/> + </JPanel> + </cell> + </row> + + </Table> + +</JDialog> diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUI.jcss b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUI.jcss new file mode 100644 index 0000000..2f332c6 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUI.jcss @@ -0,0 +1,48 @@ +/* + * #%L + * Tutti :: UI + * %% + * Copyright (C) 2012 - 2014 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% +*/ + +#editMaturityCaracteristicDialog { + modal: true; + title: "tutti.editProtocol.maturityCaracteristic.dialog.title"; +} + +#message { + border: {BorderFactory.createEmptyBorder(5,10,5,10)}; +} + +#cancelButton { + actionIcon: cancel; + text: "tutti.common.cancel"; + toolTipText: "tutti.common.cancel"; + i18nMnemonic: "tutti.common.cancel.mnemonic"; + _skipAction: true; +} + +#validateButton { + actionIcon: validate; + text: "tutti.common.validate"; + toolTipText: "tutti.common.validate"; + i18nMnemonic: "tutti.common.validate.mnemonic"; + enabled: {validator.isValid()}; + _skipAction: true; +} + diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUIHandler.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUIHandler.java new file mode 100644 index 0000000..550baa8 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUIHandler.java @@ -0,0 +1,135 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.maturity; + +/* + * #%L + * Tutti :: UI + * %% + * Copyright (C) 2012 - 2014 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; +import jaxx.runtime.SwingUtil; +import jaxx.runtime.validator.swing.SwingValidator; + +import javax.swing.JCheckBox; +import javax.swing.JComponent; +import javax.swing.JList; +import javax.swing.ListCellRenderer; +import java.awt.Component; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.Map; + +import static org.nuiton.i18n.I18n.t; + +/** + * @author Kevin Morin - kmorin@codelutin.com + * @since 4.5 + */ +public class EditMaturityCaracteristicPopupUIHandler extends AbstractTuttiUIHandler<EditMaturityCaracteristicPopupUIModel, EditMaturityCaracteristicPopupUI> { + + @Override + public void afterInit(EditMaturityCaracteristicPopupUI ui) { + initUI(ui); + + JList<CaracteristicQualitativeValue> maturityValuesEditor = ui.getMaturityValuesEditor(); + maturityValuesEditor.setCellRenderer(new CheckboxListRenderer()); + maturityValuesEditor.addMouseListener(new MouseAdapter() { + public void mouseClicked(MouseEvent event) { + JList<CaracteristicQualitativeValue> list = (JList<CaracteristicQualitativeValue>) event.getSource(); + + // Get index of item clicked + + int index = list.locationToIndex(event.getPoint()); + CaracteristicQualitativeValue item = list.getModel().getElementAt(index); + + // Toggle selected state + + getModel().setValueMature(item, !getModel().isMature(item)); + + // Repaint cell + + list.repaint(list.getCellBounds(index, index)); + } + }); + + getModel().addPropertyChangeListener(EditMaturityCaracteristicPopupUIModel.PROPERTY_QUALITATIVE_VALUES, evt -> { + Map<CaracteristicQualitativeValue, Boolean> newValue = (Map<CaracteristicQualitativeValue, Boolean>) evt.getNewValue(); + if (newValue != null) { + maturityValuesEditor.setListData(newValue.keySet().toArray(new CaracteristicQualitativeValue[newValue.size()])); + } else { + maturityValuesEditor.setListData(new CaracteristicQualitativeValue[0]); + } + }); + } + + @Override + public void onCloseUI() { + getUI().dispose(); + } + + @Override + public SwingValidator<EditMaturityCaracteristicPopupUIModel> getValidator() { + return ui.getValidator(); + } + + @Override + protected JComponent getComponentToFocus() { + return getUI().getMaturityValuesEditor(); + } + + public void open(Caracteristic maturityCaracteristic) { + getModel().setQualitativeValues(maturityCaracteristic.getQualitativeValue()); + getModel().setValid(false); + ui.getMessage().setText(t("tutti.editProtocol.maturityCaracteristic.dialog.message", decorate(maturityCaracteristic))); + getUI().pack(); + SwingUtil.center(getContext().getMainUI(), ui); + getUI().setVisible(true); + } + + public void validate() { + if (getValidator().isValid()) { + getModel().setValid(true); + onCloseUI(); + } + } + + public void cancel() { + getModel().setQualitativeValues(null); + onCloseUI(); + } + + class CheckboxListRenderer extends JCheckBox implements + ListCellRenderer<CaracteristicQualitativeValue> { + + @Override + public Component getListCellRendererComponent( + JList<? extends CaracteristicQualitativeValue> list, CaracteristicQualitativeValue value, + int index, boolean isSelected, boolean cellHasFocus) { + setEnabled(list.isEnabled()); + setSelected(EditMaturityCaracteristicPopupUIHandler.this.getModel().isMature(value)); + setFont(list.getFont()); + setBackground(list.getBackground()); + setForeground(list.getForeground()); + setText(decorate(value)); + return this; + } + } +} diff --git a/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUIModel.java b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUIModel.java new file mode 100644 index 0000000..f9d0322 --- /dev/null +++ b/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUIModel.java @@ -0,0 +1,88 @@ +package fr.ifremer.tutti.ui.swing.content.protocol.maturity; + +import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; +import org.jdesktop.beans.AbstractSerializableBean; + +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** + * @author Kevin Morin (Code Lutin) + * @since 4.5 + */ +public class EditMaturityCaracteristicPopupUIModel extends AbstractSerializableBean { + + public static final String PROPERTY_QUALITATIVE_VALUES = "qualitativeValues"; + public static final String PROPERTY_MATURE_VALUES = "matureValues"; + public static final String PROPERTY_IMMATURE_VALUES = "immatureValues"; + + /** + * Is the model valid? + */ + protected boolean valid; + + protected final Map<CaracteristicQualitativeValue, Boolean> qualitativeValuesStates = new LinkedHashMap<>(); + + public Map<CaracteristicQualitativeValue, Boolean> getQualitativeValuesStates() { + return qualitativeValuesStates; + } + + public List<CaracteristicQualitativeValue> getQualitativeValues() { + return new ArrayList<>(qualitativeValuesStates.keySet()); + } + +// public void setQualitativeValues(TreeMap<Serializable, Boolean> qualitativeValues) { +// Object oldValue = getQualitativeValues(); +// +// this.qualitativeValues.clear(); +// if (qualitativeValues != null) { +// this.qualitativeValues.putAll(qualitativeValues); +// } +// firePropertyChange(PROPERTY_QUALITATIVE_VALUES, oldValue, qualitativeValues); +// } + + public void setQualitativeValues(List<CaracteristicQualitativeValue> qualitativeValues) { + Object oldMatureValues = hasMatureValues(); + Object oldImmatureValues = hasImmatureValues(); + + this.qualitativeValuesStates.clear(); + if (qualitativeValues != null) { + this.qualitativeValuesStates.putAll(qualitativeValues.stream().collect(Collectors.toMap(c -> c, c -> false))); + } + + firePropertyChange(PROPERTY_QUALITATIVE_VALUES, null, this.qualitativeValuesStates); + firePropertyChange(PROPERTY_MATURE_VALUES, oldMatureValues, hasMatureValues()); + firePropertyChange(PROPERTY_IMMATURE_VALUES, oldImmatureValues, hasImmatureValues()); + } + + public void setValueMature(CaracteristicQualitativeValue value, boolean mature) { + Object oldMatureValues = hasMatureValues(); + Object oldImmatureValues = hasImmatureValues(); + qualitativeValuesStates.put(value, mature); + firePropertyChange(PROPERTY_MATURE_VALUES, oldMatureValues, hasMatureValues()); + firePropertyChange(PROPERTY_IMMATURE_VALUES, oldImmatureValues, hasImmatureValues()); + } + + public boolean isMature(CaracteristicQualitativeValue value) { + return qualitativeValuesStates.get(value); + } + + public boolean hasMatureValues() { + return qualitativeValuesStates.containsValue(true); + } + + public boolean hasImmatureValues() { + return qualitativeValuesStates.containsValue(false); + } + + public boolean isValid() { + return valid; + } + + public void setValid(boolean valid) { + this.valid = valid; + } +} \ No newline at end of file diff --git a/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUIModel-error-validation.xml b/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUIModel-error-validation.xml new file mode 100644 index 0000000..0db968d --- /dev/null +++ b/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/protocol/maturity/EditMaturityCaracteristicPopupUIModel-error-validation.xml @@ -0,0 +1,41 @@ +<!-- + #%L + Tutti :: UI + $Id:$ + $HeadURL:$ + %% + Copyright (C) 2012 - 2016 Ifremer + %% + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the + License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public + License along with this program. If not, see + <http://www.gnu.org/licenses/gpl-3.0.html>. + #L% + --> + +<!DOCTYPE validators PUBLIC + "-//Apache Struts//XWork Validator 1.0.3//EN" + "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd"> +<validators> + + <field name="qualitativeValues"> + <field-validator type="fieldexpression" short-circuit="true"> + <param name="expression"> + <![CDATA[ hasMatureValues() && hasImmatureValues() ]]> + </param> + <message> + tutti.validator.error.maturityCaracteristicEditor.dialog.qualitativeValues.bithStates + </message> + </field-validator> + </field> + +</validators> \ No newline at end of file diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties index 8a568db..3e99b08 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_en_GB.properties @@ -1080,6 +1080,9 @@ tutti.editProtocol.action.chooseProtocolSpeciesFile= tutti.editProtocol.action.closeEditProtocol= tutti.editProtocol.action.closeEditProtocol.mnemonic= tutti.editProtocol.action.closeEditProtocol.tip= +tutti.editProtocol.action.editMaturityCaracteristic= +tutti.editProtocol.action.editMaturityCaracteristic.mnemonic= +tutti.editProtocol.action.editMaturityCaracteristic.tip= tutti.editProtocol.action.exportProtocolAllCaracteristic= tutti.editProtocol.action.exportProtocolAllCaracteristic.mnemonic= tutti.editProtocol.action.exportProtocolAllCaracteristic.tip= @@ -1176,6 +1179,8 @@ tutti.editProtocol.field.protocol.name.tip= tutti.editProtocol.field.species.tip= tutti.editProtocol.field.useCalcifiedPieceSampling= tutti.editProtocol.field.useCalcifiedPieceSampling.tip= +tutti.editProtocol.maturityCaracteristic.dialog.message= +tutti.editProtocol.maturityCaracteristic.dialog.title= tutti.editProtocol.tab.algorithm= tutti.editProtocol.tab.benthos= tutti.editProtocol.tab.caracteristic= @@ -2551,6 +2556,7 @@ tutti.validator.error.longitude.end.required= tutti.validator.error.longitude.minute.outOfBounds= tutti.validator.error.longitude.second.outOfBounds= tutti.validator.error.longitude.start.required= +tutti.validator.error.maturityCaracteristicEditor.dialog.qualitativeValues.bithStates= tutti.validator.error.program.zone.required= tutti.validator.error.replaceTemporaryReferential.source.required= tutti.validator.error.replaceTemporaryReferential.target.required= diff --git a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties index 4ab3800..0903c0e 100644 --- a/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties +++ b/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties @@ -1025,6 +1025,9 @@ tutti.editProtocol.action.chooseColumnsFile.import=Importer tutti.editProtocol.action.closeEditProtocol=Fermer tutti.editProtocol.action.closeEditProtocol.mnemonic=F tutti.editProtocol.action.closeEditProtocol.tip=Fermer l'écran d'édition du protocole +tutti.editProtocol.action.editMaturityCaracteristic=Éditer la caractéristique de maturité +tutti.editProtocol.action.editMaturityCaracteristic.mnemonic=E +tutti.editProtocol.action.editMaturityCaracteristic.tip=Définir les états matures et immatures de la caractéristique de maturité tutti.editProtocol.action.exportProtocolAllCaracteristic=Exporter toutes les caractéristiques du référentiel tutti.editProtocol.action.exportProtocolAllCaracteristic.mnemonic=t tutti.editProtocol.action.exportProtocolAllCaracteristic.tip=Exporter toutes les caractéristiques du référentiel (sans les affecter à un écran) @@ -1117,6 +1120,8 @@ tutti.editProtocol.field.protocol.name.tip=Nom du protocole tutti.editProtocol.field.species.tip=Espèces tutti.editProtocol.field.useCalcifiedPieceSampling=Effectuer le prélèvement de pièces calcifiées tutti.editProtocol.field.useCalcifiedPieceSampling.tip=Effectuer le prélèvement de pièces calcifiées +tutti.editProtocol.maturityCaracteristic.dialog.message=<html><body>Veuillez cocher les états matures de la caractéristique<br/><strong>%s</strong><br/><em>(il faut au moins un état mature et un état immature)</em> \:</body></html> +tutti.editProtocol.maturityCaracteristic.dialog.title=États matures et immatures tutti.editProtocol.tab.algorithm=Algorithme tutti.editProtocol.tab.benthos=Benthos tutti.editProtocol.tab.caracteristic=Caractéristiques @@ -2341,6 +2346,7 @@ tutti.validator.error.longitude.end.required=La longitude de fin de traîne est tutti.validator.error.longitude.minute.outOfBounds=La minute de la longitude doit être comprise entre 0 et 59 tutti.validator.error.longitude.second.outOfBounds=La seconde de la longitude doit être comprise entre 0 et 59 tutti.validator.error.longitude.start.required=La longitude de début de traîne est obligatoire +tutti.validator.error.maturityCaracteristicEditor.dialog.qualitativeValues.bithStates= tutti.validator.error.program.zone.required=La zone de la série est obligatoire tutti.validator.error.replaceTemporaryReferential.source.required=Un référentiel temporaire doit être sélectionné tutti.validator.error.replaceTemporaryReferential.target.required=Un référentiel officiel doit être sélectionné -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm