r220 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing/content/home resources/fr/ifremer/tutti/ui/swing/content/operation resources/i18n resources/icons
Author: tchemit Date: 2013-01-18 09:11:31 +0100 (Fri, 18 Jan 2013) New Revision: 220 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/220 Log: refs #1852: [ERGO] - Barre de progression pour les actions longues (debut d'utilisation des actions) Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java trunk/tutti-ui-swing/src/main/resources/icons/action-export.png Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties trunk/tutti-ui-swing/src/main/resources/icons/action-copy.png trunk/tutti-ui-swing/src/main/resources/icons/action-import.png Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java 2013-01-18 08:11:31 UTC (rev 220) @@ -0,0 +1,62 @@ +package fr.ifremer.tutti.ui.swing.content.home; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 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.ui.swing.TuttiUIContext; +import jaxx.runtime.SwingUtil; + +import javax.swing.AbstractAction; + +/** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0 + */ +public abstract class AbstractHomeAction extends AbstractAction { + + private static final long serialVersionUID = 1L; + + protected final TuttiUIContext context; + + protected final SelectCruiseUIModel model; + + public AbstractHomeAction(TuttiUIContext context, + SelectCruiseUIModel model, + String name, + String icon, + String text, + String tip) { + this.context = context; + this.model = model; + putValue(LARGE_ICON_KEY, SwingUtil.createActionIcon(icon)); + putValue(ACTION_COMMAND_KEY, name); + putValue(NAME, name); + putValue(SHORT_DESCRIPTION, text); + putValue(LONG_DESCRIPTION, tip); + + } + +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/AbstractHomeAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-01-18 08:11:31 UTC (rev 220) @@ -0,0 +1,71 @@ +package fr.ifremer.tutti.ui.swing.content.home; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 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 com.ezware.oxbow.swingbits.util.Preconditions; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.awt.event.ActionEvent; + +import static org.nuiton.i18n.I18n._; + +/** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0 + */ +public class CloneProtocolAction extends AbstractHomeAction { + + private static final long serialVersionUID = 1L; + + /** Logger. */ + private static final Log log = LogFactory.getLog(CloneProtocolAction.class); + + public CloneProtocolAction(TuttiUIContext context, + SelectCruiseUIModel model) { + super(context, + model, + "cloneProtocol", + "copy", + _("tutti.action.clone"), + _("tutti.action.clone.protocol.tip")); + } + + @Override + public void actionPerformed(ActionEvent e) { + TuttiProtocol protocol = model.getProtocol(); + Preconditions.checkNotNull(protocol); + if (log.isInfoEnabled()) { + log.info("Clone protocol: " + protocol.getId()); + } + context.setProtocolId(protocol.getId()); + context.setScreen(TuttiScreen.CLONE_PROTOCOL); + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-01-18 08:11:31 UTC (rev 220) @@ -0,0 +1,70 @@ +package fr.ifremer.tutti.ui.swing.content.home; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 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 com.ezware.oxbow.swingbits.util.Preconditions; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.awt.event.ActionEvent; + +import static org.nuiton.i18n.I18n._; + +/** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0 + */ +public class EditProtocolAction extends AbstractHomeAction { + + private static final long serialVersionUID = 1L; + + /** Logger. */ + private static final Log log = LogFactory.getLog(EditProtocolAction.class); + public EditProtocolAction(TuttiUIContext context, + SelectCruiseUIModel model) { + super(context, + model, + "editProtocol", + "edit", + _("tutti.action.edit"), + _("tutti.action.edit.protocol.tip")); + } + + @Override + public void actionPerformed(ActionEvent e) { + TuttiProtocol protocol = model.getProtocol(); + Preconditions.checkNotNull(protocol); + if (log.isInfoEnabled()) { + log.info("Edit protocol: "+protocol.getId()); + } + context.setProtocolId(protocol.getId()); + context.setScreen(TuttiScreen.EDIT_PROTOCOL); + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-01-18 08:11:31 UTC (rev 220) @@ -0,0 +1,70 @@ +package fr.ifremer.tutti.ui.swing.content.home; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 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 com.ezware.oxbow.swingbits.util.Preconditions; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.awt.event.ActionEvent; + +import static org.nuiton.i18n.I18n._; + +/** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0 + */ +public class ExportProtocolAction extends AbstractHomeAction { + + private static final long serialVersionUID = 1L; + + /** Logger. */ + private static final Log log = + LogFactory.getLog(ExportProtocolAction.class); + + public ExportProtocolAction(TuttiUIContext context, + SelectCruiseUIModel model) { + super(context, + model, + "exportProtocol", + "export", + _("tutti.action.export"), + _("tutti.action.export.protocol.tip")); + } + + @Override + public void actionPerformed(ActionEvent e) { + TuttiProtocol protocol = model.getProtocol(); + Preconditions.checkNotNull(protocol); + + if (log.isInfoEnabled()) { + log.info("Export protocol: " + protocol.getId()); + } + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-01-18 08:11:31 UTC (rev 220) @@ -0,0 +1,65 @@ +package fr.ifremer.tutti.ui.swing.content.home; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 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.ui.swing.TuttiUIContext; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.awt.event.ActionEvent; + +import static org.nuiton.i18n.I18n._; + +/** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0 + */ +public class ImportProtocolAction extends AbstractHomeAction { + + private static final long serialVersionUID = 1L; + + /** Logger. */ + private static final Log log = + LogFactory.getLog(ImportProtocolAction.class); + + public ImportProtocolAction(TuttiUIContext context, + SelectCruiseUIModel model) { + super(context, + model, + "importProtocol", + "import", + _("tutti.action.import"), + _("tutti.action.import.protocol.tip")); + } + + @Override + public void actionPerformed(ActionEvent e) { + if (log.isInfoEnabled()) { + log.info("TODO Import protocol!"); + } + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java 2013-01-18 08:11:31 UTC (rev 220) @@ -0,0 +1,67 @@ +package fr.ifremer.tutti.ui.swing.content.home; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 - 2013 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.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.awt.event.ActionEvent; + +import static org.nuiton.i18n.I18n._; + +/** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0 + */ +public class NewProtocolAction extends AbstractHomeAction { + + private static final long serialVersionUID = 1L; + + /** Logger. */ + private static final Log log = LogFactory.getLog(NewProtocolAction.class); + + public NewProtocolAction(TuttiUIContext context, + SelectCruiseUIModel model) { + super(context, + model, + "newProtocol", + "add", + _("tutti.action.new"), + _("tutti.action.new.protocol.tip")); + } + + @Override + public void actionPerformed(ActionEvent e) { + if (log.isInfoEnabled()) { + log.info("New protocol"); + } + context.setProtocolId(null); + context.setScreen(TuttiScreen.EDIT_PROTOCOL); + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 08:03:47 UTC (rev 219) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.css 2013-01-18 08:11:31 UTC (rev 220) @@ -84,18 +84,10 @@ enabled: {!protocolCombobox.isEmpty()}; } -#editProtocolButton { +#editProtocolComboBox { enabled: {model.isProtocolFound()}; - text: "tutti.action.edit"; - actionIcon: edit; } -#newProtocolButton { - actionIcon: add; - enabled: true; - text: "tutti.action.new"; -} - #fillFishingOperationsButton { text: "tutti.action.fillCatches"; enabled: {uiContext.isCruiseContextFilled()}; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-01-18 08:03:47 UTC (rev 219) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-01-18 08:11:31 UTC (rev 220) @@ -103,20 +103,21 @@ </cell> <cell> <JPanel layout='{new GridLayout(1,0)}'> - <JButton id='editProtocolButton' - onActionPerformed='handler.showSelectedProtocol()'/> -<!-- <JButton id='newProtocolButton' - onActionPerformed='handler.showNewProtocol()'/>--> - <JComboBox id='newProtocolCombo' onActionPerformed='handler.showNewProtocol(event)'/> - + <JComboBox id='editProtocolComboBox' + onMouseEntered='if (editProtocolComboBox.isEnabled()) { editProtocolComboBox.showPopup(); }' + onActionPerformed='handler.showSelectedProtocol(event)'/> + <JComboBox id='newProtocolComboBox' + onMouseEntered='newProtocolComboBox.showPopup()' + onActionPerformed='handler.showNewProtocol(event)'/> + </JPanel> </cell> </row> <row> <cell columns='3'> <JPanel layout='{new GridLayout(1,0)}'> - <JButton id='fillFishingOperationsButton' - onActionPerformed='handler.showFillCatches()'/> + <JButton id='fillFishingOperationsButton' + onActionPerformed='handler.showFillCatches()'/> <JButton id='validateFishingOperationsButton' onActionPerformed='handler.showValidateCatches()'/> </JPanel> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-18 08:03:47 UTC (rev 219) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-18 08:11:31 UTC (rev 220) @@ -33,33 +33,24 @@ import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.TuttiScreen; import fr.ifremer.tutti.ui.swing.TuttiUIContext; -import java.awt.Color; -import java.awt.Component; -import java.awt.event.ActionEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; import jaxx.runtime.swing.editor.bean.BeanComboBox; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.List; -import javax.swing.CellRendererPane; -import javax.swing.ComboBoxModel; +import javax.swing.Action; import javax.swing.DefaultComboBoxModel; import javax.swing.DefaultListCellRenderer; -import javax.swing.ImageIcon; +import javax.swing.Icon; import javax.swing.JComboBox; import javax.swing.JList; -import javax.swing.JScrollPane; -import javax.swing.JViewport; import javax.swing.border.EmptyBorder; -import javax.swing.plaf.basic.BasicComboPopup; -import jaxx.runtime.SwingUtil; +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.List; -import static org.nuiton.i18n.I18n._; /** * Main ui content to select cruise. * @@ -71,7 +62,7 @@ /** Logger. */ private static final Log log = LogFactory.getLog(SelectCruiseUIHandler.class); - + protected final PersistenceService persistenceService; protected final SelectCruiseUI ui; @@ -191,27 +182,54 @@ initBeanComboBox(ui.getProtocolCombobox(), model.getProtocols(), model.getProtocol()); - - ComboBoxModel<NewProtocolAction> protocolActions = new DefaultComboBoxModel<NewProtocolAction>(NewProtocolAction.values()); - final JComboBox newProtocolCombo = ui.getNewProtocolCombo(); - newProtocolCombo.setRenderer(new DefaultListCellRenderer() { - @Override - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { - Component defaultComponent = super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); - DefaultListCellRenderer result = (DefaultListCellRenderer) defaultComponent; - NewProtocolAction action = (NewProtocolAction) value; - ImageIcon icon = SwingUtil.createActionIcon(action.getIcon()); - result.setIcon(icon); - result.setBorder(new EmptyBorder(4, 8, 4, 8)); - - Object selectedItem = SelectCruiseUIHandler.this.ui.getProtocolCombobox().getSelectedItem(); - result.setEnabled(action != NewProtocolAction.CLONE || selectedItem != null); - return result; - } - }); - newProtocolCombo.setModel(protocolActions); + DefaultComboBoxModel newProtocolActions = new DefaultComboBoxModel(); + newProtocolActions.addElement(new NewProtocolAction(context, model)); + newProtocolActions.addElement(new ImportProtocolAction(context, model)); + JComboBox newProtocolComboBox = ui.getNewProtocolComboBox(); + newProtocolComboBox.setModel(newProtocolActions); + newProtocolComboBox.setRenderer(new ActionListCellRenderer()); + DefaultComboBoxModel editProtocolActions = new DefaultComboBoxModel(); + editProtocolActions.addElement(new EditProtocolAction(context, model)); + editProtocolActions.addElement(new CloneProtocolAction(context, model)); + editProtocolActions.addElement(new ExportProtocolAction(context, model)); + JComboBox editProtocolComboBox = ui.getEditProtocolComboBox(); + editProtocolComboBox.setModel(editProtocolActions); + editProtocolComboBox.setRenderer(new ActionListCellRenderer()); + +// newProtocolCombo.addMouseListener(new MouseAdapter() { +// +// @Override +// public void mouseEntered(MouseEvent e) { +// newProtocolCombo.showPopup(); +// } +// +// }); +// newProtocolCombo.addPopupMenuListener(new PopupMenuListener() { +// +// @Override +// public void popupMenuWillBecomeVisible(PopupMenuEvent e) { +// newProtocolCombo.getComponentPopupMenu().addMouseListener(new MouseAdapter() { +// +// @Override +// public void mouseExited(MouseEvent e) { +// newProtocolCombo.hidePopup(); +// } +// +// }); +// } +// +// @Override +// public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { +// } +// +// @Override +// public void popupMenuCanceled(PopupMenuEvent e) { +// } +// }); + + model.addPropertyChangeListener(SelectCruiseUIModel.PROPERTY_PROGRAM, new PropertyChangeListener() { @Override public void propertyChange(PropertyChangeEvent evt) { @@ -224,9 +242,9 @@ } else { campaigns = persistenceService.getAllCruise(newValue.getId()); } - SelectCruiseUIModel model = (SelectCruiseUIModel) evt.getSource(); - model.setCruises(campaigns); - model.setCruise(null); + SelectCruiseUIModel source = (SelectCruiseUIModel) evt.getSource(); + source.setCruises(campaigns); + source.setCruise(null); } }); @@ -303,62 +321,102 @@ context.setScreen(TuttiScreen.EDIT_CRUISE); } - public void showSelectedProtocol() { - TuttiProtocol protocol = getModel().getProtocol(); - context.setProtocolId(protocol.getId()); - context.setScreen(TuttiScreen.EDIT_PROTOCOL); + public void showSelectedProtocol(ActionEvent event) { + JComboBox newProtocolCombo = (JComboBox) event.getSource(); + Action selectedAction = (Action) newProtocolCombo.getSelectedItem(); + + selectedAction.actionPerformed(event); +// TuttiProtocol protocol = getModel().getProtocol(); +// Preconditions.checkNotNull(protocol, +// "Protocol can not be null for a edit action"); +// switch (selectedAction) { +// case EDIT: +// context.setProtocolId(protocol.getId()); +// context.setScreen(TuttiScreen.EDIT_PROTOCOL); +// break; +// +// case CLONE: +// context.setProtocolId(protocol.getId()); +// context.setScreen(TuttiScreen.CLONE_PROTOCOL); +// break; +// +// case EXPORT: +// //TODO kmorin 20130115 import protocol +// } } public void showNewProtocol(ActionEvent event) { JComboBox newProtocolCombo = (JComboBox) event.getSource(); - NewProtocolAction selectedAction = (NewProtocolAction) newProtocolCombo.getSelectedItem(); - - switch (selectedAction) { - case NEW: - context.setProtocolId(null); - context.setScreen(TuttiScreen.EDIT_PROTOCOL); - break; - - case CLONE: - TuttiProtocol protocol = getModel().getProtocol(); - if (protocol != null) { - context.setProtocolId(protocol.getId()); - context.setScreen(TuttiScreen.CLONE_PROTOCOL); - } - break; - - case IMPORT: - //TODO kmorin 20130115 import protocol - } + Action selectedAction = (Action) newProtocolCombo.getSelectedItem(); + + selectedAction.actionPerformed(event); +// switch (selectedAction) { +// case NEW: +// context.setProtocolId(null); +// context.setScreen(TuttiScreen.EDIT_PROTOCOL); +// break; +// case IMPORT: +// //TODO kmorin 20130115 import protocol +// } } - - protected enum NewProtocolAction { - - NEW("tutti.action.new", "add"), - CLONE("tutti.action.clone", "copy"), - IMPORT("tutti.action.import", "import"); - - protected String label; - - protected String icon; - - private NewProtocolAction(String label, String icon) { - this.label = label; - this.icon = icon; - } - public String getLabel() { - return label; - } +// protected enum NewProtocolAction { +// +// NEW(n_("tutti.action.new"), "add"), +// EDIT(n_("tutti.action.edit"), "edit"), +// CLONE(n_("tutti.action.clone"), "copy"), +// IMPORT(n_("tutti.action.import"), "import"), +// EXPORT(n_("tutti.action.export"), "export"); +// +// protected String label; +// +// protected String iconPath; +// +// protected ImageIcon icon; +// +// private NewProtocolAction(String label, String iconPath) { +// this.label = label; +// this.iconPath = iconPath; +// } +// +// public String getLabel() { +// return label; +// } +// +// public ImageIcon getIcon() { +// if (icon == null) { +// icon = SwingUtil.createActionIcon(iconPath); +// } +// return icon; +// } +// +// @Override +// public String toString() { +// return _(label); +// } +// +// } - public String getIcon() { - return icon; - } - + public static class ActionListCellRenderer extends DefaultListCellRenderer { + + private static final long serialVersionUID = 1L; + + protected final EmptyBorder border = new EmptyBorder(4, 8, 4, 8); + @Override - public String toString() { - return _(label); + public Component getListCellRendererComponent(JList list, + Object value, + int index, + boolean isSelected, + boolean cellHasFocus) { + Component result = super.getListCellRendererComponent( + list, value, index, isSelected, cellHasFocus); + Action action = (Action) value; + setIcon((Icon) action.getValue(Action.LARGE_ICON_KEY)); + setText((String) action.getValue(Action.SHORT_DESCRIPTION)); + setToolTipText((String) action.getValue(Action.LONG_DESCRIPTION)); + setBorder(border); + return result; } - } } Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml =================================================================== --- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml 2013-01-18 08:03:47 UTC (rev 219) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-edit-error-validation.xml 2013-01-18 08:11:31 UTC (rev 220) @@ -54,6 +54,16 @@ </field> + <field name="trawlNetNumber"> + + <field-validator type="required" short-circuit="true"> + <message> + tutti.validator.error.fishingOperation.trawlNetNumber.required + </message> + </field-validator> + + </field> + <field name="gearShootingStartDate"> <field-validator type="required" short-circuit="true"> Modified: trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml =================================================================== --- trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml 2013-01-18 08:03:47 UTC (rev 219) +++ trunk/tutti-ui-swing/src/main/resources/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel-validate-error-validation.xml 2013-01-18 08:11:31 UTC (rev 220) @@ -35,13 +35,10 @@ </message> </field-validator> - <field-validator type="fieldexpressionwithparams" short-circuit="true"> - <param name="intParams">size:40</param> - <param name="expression"> - <![CDATA[ stationNumber.length() < ints.size ]]> - </param> + <field-validator type="stringlength" short-circuit="true"> + <param name="maxLength">40</param> <message> - tutti.validator.error.fishingOperation.stationNumber.too.long##${ints.size} + tutti.validator.error.fishingOperation.stationNumber.too.long##${maxLength} </message> </field-validator> @@ -57,6 +54,16 @@ </field> + <field name="trawlNetNumber"> + + <field-validator type="required" short-circuit="true"> + <message> + tutti.validator.error.fishingOperation.trawlNetNumber.required + </message> + </field-validator> + + </field> + <field name="gearShootingStartDate"> <field-validator type="required" short-circuit="true"> Modified: trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties =================================================================== --- trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 08:03:47 UTC (rev 219) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-01-18 08:11:31 UTC (rev 220) @@ -5,21 +5,27 @@ tutti.action.cancel=Annuler tutti.action.casino-import=Import Casino tutti.action.clone=Cloner +tutti.action.clone.protocol.tip= tutti.action.close=Fermer tutti.action.configuration=Configuration tutti.action.configuration.tip=Configurer Tutti tutti.action.createSpeciesBatch=Créer un lot pour une espèce tutti.action.edit=Editer +tutti.action.edit.protocol.tip= tutti.action.exit=Quitter tutti.action.exit.tip=Quitter l'application +tutti.action.export=Exporter +tutti.action.export.protocol.tip= tutti.action.fillCatches=Saisir les captures tutti.action.fillCatches.tip=Saisir des captures tutti.action.generate=Générer tutti.action.generateCampaignName=Générer le nom tutti.action.import=Importer +tutti.action.import.protocol.tip= tutti.action.manageProtocol=Protocole tutti.action.manageProtocol.tip=Gérer les protocoles tutti.action.new=Nouveau +tutti.action.new.protocol.tip= tutti.action.pupitri-import=Import PUPITRI tutti.action.reload.actions=Recharger les actions tutti.action.reload.application=Recharger l'application @@ -291,6 +297,7 @@ tutti.to.be.done=< A FAIRE > tutti.tooltip.attachment.none=Pas de pièce-jointes tutti.tooltip.comment.none=Pas de commentaire +tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères) tutti.validator.error.createSpeciesBatch.batchWeight.invalidValue=Le poids du lot doit être strictement positif tutti.validator.error.createSpeciesBatch.batchWeight.required=Le poids du lot est obligatoire tutti.validator.error.createSpeciesBatch.sortedUnsortedCategory.required=LA catégorie Vrac / Hors Vrac est obligatoire @@ -307,11 +314,11 @@ tutti.validator.error.cruise.trawlNet.required=Le nombre de poche est obligatoire tutti.validator.error.cruise.vessel.required=Au moins un bateau doit être sélectionné tutti.validator.error.cruise.year.required=L'année est obligatoire -tutti.validator.error.comment.too.long=Taille de commentaire trop longue (limitée à %s caractères) tutti.validator.error.fishingOperation.date.required=La date du fishingOperation est obligatoire tutti.validator.error.fishingOperation.fishingOperationNumber.required=Le numéro de trait est obligatoire tutti.validator.error.fishingOperation.stationNumber.required=Le numéro de station est obligatoire tutti.validator.error.fishingOperation.stationNumber.too.long=Valeur trop longue (limitée à %s caractères) +tutti.validator.error.fishingOperation.trawlNetNumber.required=Le numéro de poche est obligatoire tutti.validator.error.program.name.required=Le nom de la série est obligatoire tutti.validator.error.program.zone.required=La zone de la série est obligatoire tutti.validator.error.protocol.name.required=Le nom du protocol est obligatoire Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-copy.png ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: trunk/tutti-ui-swing/src/main/resources/icons/action-export.png =================================================================== (Binary files differ) Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-export.png ___________________________________________________________________ Added: svn:mime-type + image/png Added: svn:keywords + Author Date Id Revision HeadURL Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-import.png ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL
participants (1)
-
tchemit@users.forge.codelutin.com