r211 - in trunk/tutti-ui-swing/src/main: java/fr/ifremer/tutti/ui/swing java/fr/ifremer/tutti/ui/swing/content/home java/fr/ifremer/tutti/ui/swing/content/protocol resources/icons
Author: kmorin Date: 2013-01-15 18:31:39 +0100 (Tue, 15 Jan 2013) New Revision: 211 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/211 Log: continue replacing the new protocol button by a combo box Added: trunk/tutti-ui-swing/src/main/resources/icons/action-copy.png trunk/tutti-ui-swing/src/main/resources/icons/action-import.png Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiScreen.java 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/protocol/EditProtocolUIHandler.java Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-01-15 17:05:35 UTC (rev 210) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-01-15 17:31:39 UTC (rev 211) @@ -36,12 +36,22 @@ import fr.ifremer.tutti.ui.swing.content.program.EditProgramUI; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import java.awt.BorderLayout; +import java.awt.Component; import java.awt.Desktop; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.net.URL; import java.util.Calendar; +import javax.swing.JButton; import javax.swing.JComponent; +import javax.swing.JMenuItem; +import javax.swing.JPanel; +import javax.swing.JPopupMenu; import javax.swing.JToolBar; import jaxx.runtime.swing.AboutPanel; import jaxx.runtime.swing.ErrorDialogUI; @@ -61,6 +71,8 @@ /** Logger. */ private static final Log log = LogFactory.getLog(MainUIHandler.class); + public static final String CLONE_PROTOCOL = "cloneProtocol"; + protected MainUI ui; protected JComponent currentBody; @@ -130,6 +142,7 @@ screen = TuttiScreen.SELECT_CRUISE; context.setScreen(screen); + } @Override @@ -355,6 +368,12 @@ screenUI = new EditProtocolUI(ui); break; + + case CLONE_PROTOCOL: + screenTitle = _("tutti.title.create.protocol"); + ui.setContextValue(true, CLONE_PROTOCOL); + screenUI = new EditProtocolUI(ui); + break; case EDIT_FISHING_OPERATION: Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiScreen.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiScreen.java 2013-01-15 17:05:35 UTC (rev 210) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiScreen.java 2013-01-15 17:31:39 UTC (rev 211) @@ -59,6 +59,13 @@ * @since 0.1 */ EDIT_PROTOCOL, + + /** + * To clone a protocol. + * + * @since 0.4 + */ + CLONE_PROTOCOL, /** * To fill catches. 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-15 17:05:35 UTC (rev 210) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-01-15 17:31:39 UTC (rev 211) @@ -33,7 +33,10 @@ import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.TuttiScreen; import fr.ifremer.tutti.ui.swing.TuttiUIContext; +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; @@ -44,9 +47,14 @@ import java.util.List; import javax.swing.ComboBoxModel; import javax.swing.DefaultComboBoxModel; +import javax.swing.DefaultListCellRenderer; +import javax.swing.ImageIcon; import javax.swing.JComboBox; -import javax.swing.event.ListDataEvent; -import javax.swing.event.ListDataListener; +import javax.swing.JList; +import javax.swing.border.EmptyBorder; +import javax.swing.event.PopupMenuEvent; +import javax.swing.event.PopupMenuListener; +import jaxx.runtime.SwingUtil; import static org.nuiton.i18n.I18n._; /** @@ -61,12 +69,6 @@ private static final Log log = LogFactory.getLog(SelectCruiseUIHandler.class); - protected final static String PROTOCOL_ACTION_NEW = "tutti.action.new"; - - protected final static String PROTOCOL_ACTION_CLONE = "tutti.action.clone"; - - protected final static String PROTOCOL_ACTION_IMPORT = "tutti.action.import"; - protected final PersistenceService persistenceService; protected final SelectCruiseUI ui; @@ -187,9 +189,54 @@ model.getProtocols(), model.getProtocol()); - ComboBoxModel<String> protocolActions = new DefaultComboBoxModel<String>( - new String[]{ _(PROTOCOL_ACTION_NEW), _(PROTOCOL_ACTION_CLONE), _(PROTOCOL_ACTION_IMPORT) }); - JComboBox newProtocolCombo = ui.getNewProtocolCombo(); + 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.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) { +// } +// }); newProtocolCombo.setModel(protocolActions); model.addPropertyChangeListener(SelectCruiseUIModel.PROPERTY_PROGRAM, new PropertyChangeListener() { @@ -290,8 +337,55 @@ } public void showNewProtocol(ActionEvent event) { - log.info(event.getSource()); - context.setProtocolId(null); - context.setScreen(TuttiScreen.EDIT_PROTOCOL); + 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 + } } + + 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; + } + + public String getIcon() { + return icon; + } + + @Override + public String toString() { + return _(label); + } + + } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-15 17:05:35 UTC (rev 210) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-15 17:31:39 UTC (rev 211) @@ -37,6 +37,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.ui.swing.MainUI; +import fr.ifremer.tutti.ui.swing.MainUIHandler; import fr.ifremer.tutti.ui.swing.TuttiScreen; import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.util.HydrologicCaracteristicUtil; @@ -216,8 +217,13 @@ // load existing protocol protocol = persistenceService.getProtocol(protocolId); - + Boolean mustClone = ui.getContextValue(Boolean.class, MainUIHandler.CLONE_PROTOCOL); + model.fromBean(protocol); + if (mustClone != null && mustClone) { + ui.setContextValue(false, MainUIHandler.CLONE_PROTOCOL); + model.setId(null); + } } SwingValidator validator = ui.getValidator(); @@ -245,11 +251,14 @@ Map<SampleCategoryEnum, ColumnIdentifier<EditProtocolSpeciesRowModel>> sampleCategoryToColumn = columToSampleCategory.inverse(); - for (SampleCategoryEnum sampleOrder : model.getSampleCategoryOrder()) { + List<SampleCategoryEnum> sampleCategoryOrder = model.getSampleCategoryOrder(); + if (sampleCategoryOrder != null) { + for (SampleCategoryEnum sampleOrder : sampleCategoryOrder) { - ColumnIdentifier<EditProtocolSpeciesRowModel> columnIdentifier = sampleCategoryToColumn.get(sampleOrder); - if (columnIdentifier != null) { - addBooleanColumnToModel(columnModel, columnIdentifier, table); + ColumnIdentifier<EditProtocolSpeciesRowModel> columnIdentifier = sampleCategoryToColumn.get(sampleOrder); + if (columnIdentifier != null) { + addBooleanColumnToModel(columnModel, columnIdentifier, table); + } } } @@ -420,6 +429,7 @@ bean.setSampleCategoryOrder(sampleOrder); TuttiProtocol saved; + log.info("bean id : " + bean.getId()); if (TuttiEntities.isNew(bean)) { saved = persistenceService.createProtocol(bean); Added: trunk/tutti-ui-swing/src/main/resources/icons/action-copy.png =================================================================== (Binary files differ) Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-copy.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: trunk/tutti-ui-swing/src/main/resources/icons/action-import.png =================================================================== (Binary files differ) Property changes on: trunk/tutti-ui-swing/src/main/resources/icons/action-import.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream
participants (1)
-
kmorin@users.forge.codelutin.com