Author: kmorin Date: 2012-12-18 14:07:34 +0100 (Tue, 18 Dec 2012) New Revision: 87 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/87 Log: - use a table instead of a form in the environment tab - keep the ofcus on the table after exiting an editor Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTabUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTabUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTabUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTableModel.java Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationTabUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/FrequencyCellComponent.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentCellComponent.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentEditorUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentEditorUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextCellComponent.java trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationTabUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationTabUI.jaxx 2012-12-18 10:50:00 UTC (rev 86) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationTabUI.jaxx 2012-12-18 13:07:34 UTC (rev 87) @@ -32,6 +32,7 @@ fr.ifremer.tutti.persistence.entities.referential.Person fr.ifremer.tutti.ui.swing.util.editor.SimpleTimeEditor + fr.ifremer.tutti.ui.swing.content.operation.fishing.EnvironmentTabUI jaxx.runtime.swing.editor.bean.BeanComboBox jaxx.runtime.swing.editor.bean.BeanListHeader @@ -43,6 +44,7 @@ jaxx.runtime.validator.swing.SwingValidatorMessageTableModel org.jdesktop.swingx.JXDatePicker + org.jdesktop.swingx.JXTable java.awt.Dimension @@ -386,9 +388,10 @@ <tab id='environmentTab' title='tutti.label.tab.fishingOperation.environment'> - <Table fill='both' id='environmentForm'> + <EnvironmentTabUI id='environmentTabContent' constructorParams='this'/> +<!-- <Table fill='both' id='environmentForm'> - <!-- Beaufort scale --> + Beaufort scale <row> <cell anchor='west'> <JLabel id='beaufortScaleLabel'/> @@ -399,7 +402,7 @@ </cell> </row> - <!-- Wind direction --> + Wind direction <row> <cell anchor='west'> <JLabel id='windDirectionLabel'/> @@ -409,7 +412,7 @@ </cell> </row> - <!-- Sea state--> + Sea state <row> <cell anchor='west'> <JLabel id='seaStateLabel'/> @@ -419,7 +422,7 @@ genericType='SeaState'/> </cell> </row> - </Table> + </Table>--> </tab> <tab id='traitHydrologyTabContent' Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationTabUIHandler.java 2012-12-18 10:50:00 UTC (rev 86) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationTabUIHandler.java 2012-12-18 13:07:34 UTC (rev 87) @@ -105,18 +105,18 @@ persistenceService.getAllPerson(), model.getSaisisseur()); - initBeanComboBox(ui.getBeaufortScaleComboBox(), - persistenceService.getAllBeaufortScale(), - model.getBeaufortScale()); +// initBeanComboBox(ui.getBeaufortScaleComboBox(), +// persistenceService.getAllBeaufortScale(), +// model.getBeaufortScale()); +// +// initBeanComboBox(ui.getStrataComboBox(), +// persistenceService.getAllStrata(), +// model.getStrata()); +// +// initBeanComboBox(ui.getSeaStateComboBox(), +// persistenceService.getAllSeaState(), +// model.getSeaState()); - initBeanComboBox(ui.getStrataComboBox(), - persistenceService.getAllStrata(), - model.getStrata()); - - initBeanComboBox(ui.getSeaStateComboBox(), - persistenceService.getAllSeaState(), - model.getSeaState()); - model.setEmpty(true); listenValidatorValid(ui.getValidator(), getModel()); @@ -154,6 +154,8 @@ // if new fishingOperation can already cancel his creation model.setModify(!empty && model.isCreate()); + + ui.getEnvironmentTabContent().getHandler().afterInitUI(); } public void cancel() { Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentRowModel.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentRowModel.java 2012-12-18 13:07:34 UTC (rev 87) @@ -0,0 +1,70 @@ +package fr.ifremer.tutti.ui.swing.content.operation.fishing; + +import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import java.io.Serializable; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderFactory; + +/** + * + * @author kmorin + * @since 0.3 + */ +public class EnvironmentRowModel extends AbstractTuttiBeanUIModel<Object, EnvironmentRowModel> { + + public static final String PROPERTY_KEY = "key"; + public static final String PROPERTY_VALUE = "value"; + + protected static final Binder<Object, EnvironmentRowModel> fromBeanBinder = + BinderFactory.newBinder(Object.class, + EnvironmentRowModel.class); + + protected static final Binder<EnvironmentRowModel, Object> toBeanBinder = + BinderFactory.newBinder(EnvironmentRowModel.class, + Object.class); + + protected String key; + + protected String value; + + public EnvironmentRowModel() { + super(Object.class, fromBeanBinder, toBeanBinder); + } + + public EnvironmentRowModel(String key) { + this(); + this.key = key; + } +// +// public FishingOperationEnvironmentRowModel(Object o, +// List<SpeciesBatchFrequency> frequencies) { +// this(); +// fromBean(aBatch); +// List<SpeciesFrequencyRowModel> frequencyRows = +// SpeciesFrequencyRowModel.fromBeans(frequencies); +// frequency.addAll(frequencyRows); +// Collections.sort(frequency); +// updateTotalFromFrequencies(); +// } + + public String getKey() { + return key; + } + + public void setKey(String key) { + Object oldValue = getKey(); + this.key = key; + firePropertyChange(PROPERTY_KEY, oldValue, key); + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + Object oldValue = getValue(); + this.value = value; + firePropertyChange(PROPERTY_VALUE, oldValue, value); + } + +} Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTabUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTabUI.css (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTabUI.css 2012-12-18 13:07:34 UTC (rev 87) @@ -0,0 +1,6 @@ +#environmentTable { + selectionMode: {ListSelectionModel.SINGLE_SELECTION}; + selectionBackground: {null}; + selectionForeground: {Color.BLACK}; + sortable: false; +} \ No newline at end of file Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTabUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTabUI.jaxx (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTabUI.jaxx 2012-12-18 13:07:34 UTC (rev 87) @@ -0,0 +1,46 @@ +<Table implements='fr.ifremer.tutti.ui.swing.TuttiUI<EnvironmentTabUIModel, EnvironmentTabUIHandler>'> + + <import> + org.jdesktop.swingx.JXTable + fr.ifremer.tutti.ui.swing.content.operation.FishingOperationTabUI + javax.swing.ListSelectionModel + java.awt.Color + </import> + + <EnvironmentTabUIHandler id='handler' + initializer='getContextValue(EnvironmentTabUIHandler.class)'/> + + <EnvironmentTabUIModel id='model' + initializer='getContextValue(EnvironmentTabUIModel.class)'/> + + <row fill='both'> + <cell fill='both' weightx='1'> + <JComboBox id='newRowKey'/> + </cell> + <cell fill='both'> + <JButton id='addRow' actionIcon='add' + onActionPerformed='handler.addRow()'/> + </cell> + </row> + <row fill='both' weighty='1'> + <cell fill='both' columns='2'> + <JScrollPane> + <JXTable id='environmentTable'/> + </JScrollPane> + </cell> + </row> + <script><![CDATA[ + +public EnvironmentTabUI(FishingOperationTabUI parentUI) { + EnvironmentTabUIHandler handler = new EnvironmentTabUIHandler(parentUI, this); + setContextValue(handler); + handler.beforeInitUI(); +} + +protected void $afterCompleteSetup() { + handler.afterInitUI(); +} + + ]]></script> + +</Table> \ No newline at end of file Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTabUIHandler.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTabUIHandler.java 2012-12-18 13:07:34 UTC (rev 87) @@ -0,0 +1,170 @@ +package fr.ifremer.tutti.ui.swing.content.operation.fishing; + +import com.google.common.collect.Lists; +import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationTabUI; +import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; +import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.util.List; +import java.util.logging.Logger; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JComboBox; +import javax.swing.event.ListDataEvent; +import javax.swing.event.ListDataListener; +import javax.swing.plaf.basic.BasicComboBoxUI.ListDataHandler; +import javax.swing.table.TableColumnModel; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.jdesktop.swingx.JXTable; +import org.jdesktop.swingx.table.DefaultTableColumnModelExt; + +/** + * + * @author kmorin + * @since 0.3 + */ +public class EnvironmentTabUIHandler extends AbstractTuttiTableUIHandler<EnvironmentRowModel, EnvironmentTabUIModel> { + + private final static Log log = LogFactory.getLog(EnvironmentTabUIHandler.class); + + protected EnvironmentTabUI ui; + + public EnvironmentTabUIHandler(FishingOperationTabUI parentUi, EnvironmentTabUI ui) { + super(parentUi.getHandler().getContext()); + this.ui = ui; + } + + @Override + protected JXTable getTable() { + return ui.getEnvironmentTable(); + } + + @Override + protected AbstractTuttiTableModel<EnvironmentRowModel> getTableModel() { + return (EnvironmentTableModel) getTable().getModel(); + } + + @Override + protected TableColumnModel createTableColumnModel() { + DefaultTableColumnModelExt columnModel = + new DefaultTableColumnModelExt(); + + { + + addColumnToModel(columnModel, EnvironmentTableModel.KEY); + } + + { + + addColumnToModel(columnModel, EnvironmentTableModel.VALUE); + } + + + return columnModel; + } + + @Override + protected void onRowModified(EnvironmentRowModel row, String propertyName, Object oldValue, Object newValue) { + } + + @Override + protected void onRowValidStateChanged(EnvironmentRowModel row, Boolean oldValue, Boolean newValue) { + } + + @Override + protected void onRowModifyStateChanged(EnvironmentRowModel row, Boolean oldValue, Boolean newValue) { + } + + @Override + public void beforeInitUI() { + EnvironmentTabUIModel model = new EnvironmentTabUIModel(); + ui.setContextValue(model); + } + + @Override + public void afterInitUI() { + initUI(ui); + + JXTable table = getTable(); + + // create table column model + TableColumnModel columnModel = createTableColumnModel(); + + // create table model + EnvironmentTableModel tableModel = + new EnvironmentTableModel(columnModel); + + table.setModel(tableModel); + table.setColumnModel(columnModel); + + final JComboBox keyCombo = ui.getNewRowKey(); + keyCombo.setModel(new DefaultComboBoxModel()); + + keyCombo.addItemListener(new ItemListener() { + + public void itemStateChanged(ItemEvent e) { + log.debug("item state changed " + e.paramString()); + } + }); + keyCombo.getModel().addListDataListener(new ListDataListener() { + + public void intervalAdded(ListDataEvent e) { + keyCombo.setEnabled(true); + ui.getAddRow().setEnabled(true); + } + + public void intervalRemoved(ListDataEvent e) { + if (keyCombo.getItemCount() == 0) { + keyCombo.setEnabled(false); + ui.getAddRow().setEnabled(false); + } + } + + public void contentsChanged(ListDataEvent e) { + keyCombo.setEnabled(true); + ui.getAddRow().setEnabled(true); + } + }); + + reset(); + } + + @Override + public void onCloseUI() { + } + + @Override + protected EnvironmentTabUIModel getModel() { + return ui.getModel(); + } + + public void addRow() { + JComboBox keyCombo = ui.getNewRowKey(); + String key = (String) keyCombo.getSelectedItem(); + EnvironmentRowModel row = new EnvironmentRowModel(key); + getTableModel().addNewRow(getTable().getRowCount(), row); + + keyCombo.removeItem(key); + } + + public void reset() { + List<EnvironmentRowModel> rows = Lists.newArrayList(); + List<String> defaultKeys = Lists.newArrayList(ui.getModel().getDefaultKeys()); + for (String key : defaultKeys) { + rows.add(new EnvironmentRowModel(key)); + } + + AbstractTuttiTableModel<EnvironmentRowModel> tableModel = getTableModel(); + tableModel.setRows(rows); + + JComboBox keyCombo = ui.getNewRowKey(); + DefaultComboBoxModel keyComboModel = (DefaultComboBoxModel)keyCombo.getModel(); + for (String key : ui.getModel().getKeys()) { + if (!defaultKeys.contains(key)) { + keyComboModel.addElement(key); + } + } + } + +} Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTabUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTabUIModel.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTabUIModel.java 2012-12-18 13:07:34 UTC (rev 87) @@ -0,0 +1,59 @@ +package fr.ifremer.tutti.ui.swing.content.operation.fishing; + +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; +import org.nuiton.util.beans.Binder; +import org.nuiton.util.beans.BinderModelBuilder; + +import static org.nuiton.i18n.I18n._; + +/** + * + * @author kmorin + */ +public class EnvironmentTabUIModel extends AbstractTuttiTableUIModel<FishingOperation, EnvironmentRowModel, EnvironmentTabUIModel> { + + protected FishingOperation fishingOperation; + + public static final String KEY_BEAUFORT_SCALE = "beaufortScale"; + public static final String KEY_WIND_DIRECTION = "windDirection"; + public static final String KEY_SEA_STATE = "seaState"; + + protected static final Binder<FishingOperation, EnvironmentTabUIModel> fromBeanBinder = BinderModelBuilder.newEmptyBuilder(FishingOperation.class, EnvironmentTabUIModel.class) + .toBinder(); + + protected static final Binder<EnvironmentTabUIModel, FishingOperation> toBeanBinder = BinderModelBuilder.newEmptyBuilder(EnvironmentTabUIModel.class, FishingOperation.class) + .toBinder(); + + public EnvironmentTabUIModel() { + super(FishingOperation.class, fromBeanBinder, toBeanBinder); + } + + public FishingOperation getFishingOperation() { + return fishingOperation; + } + + public void setFishingOperation(FishingOperation fishingOperation) { + this.fishingOperation = fishingOperation; + } + + public String[] getKeys() { + return new String[] { + _("tutti.table.fishing.environment.keys." + KEY_BEAUFORT_SCALE), + _("tutti.table.fishing.environment.keys." + KEY_WIND_DIRECTION), + _("tutti.table.fishing.environment.keys." + KEY_SEA_STATE), + _("tutti.table.fishing.environment.keys." + "key3"), + _("tutti.table.fishing.environment.keys." + "key4"), + _("tutti.table.fishing.environment.keys." + "key5") + }; + } + + public String[] getDefaultKeys() { + return new String[] { + _("tutti.table.fishing.environment.keys." + KEY_BEAUFORT_SCALE), + _("tutti.table.fishing.environment.keys." + KEY_WIND_DIRECTION), + _("tutti.table.fishing.environment.keys." + KEY_SEA_STATE) + }; + } + +} Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTableModel.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/EnvironmentTableModel.java 2012-12-18 13:07:34 UTC (rev 87) @@ -0,0 +1,38 @@ +package fr.ifremer.tutti.ui.swing.content.operation.fishing; + +import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; +import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; +import javax.swing.table.TableColumnModel; + +import static org.nuiton.i18n.I18n.n_; + +/** + * + * @author kmorin + * since 0.3 + */ +public class EnvironmentTableModel extends AbstractTuttiTableModel<EnvironmentRowModel> { + + public static final ColumnIdentifier<EnvironmentRowModel> KEY = ColumnIdentifier.newId( + EnvironmentRowModel.PROPERTY_KEY, + n_("tutti.table.fishing.environment.header.key"), + n_("tutti.table.fishing.environment.header.key")); + + public static final ColumnIdentifier<EnvironmentRowModel> VALUE = ColumnIdentifier.newId( + EnvironmentRowModel.PROPERTY_VALUE, + n_("tutti.table.fishing.environment.header.value"), + n_("tutti.table.fishing.environment.header.value")); + + public EnvironmentTableModel(TableColumnModel columnModel) { + super(columnModel); + + setNoneEditableCols(KEY); + } + + @Override + protected EnvironmentRowModel createNewRow() { + EnvironmentRowModel result = new EnvironmentRowModel(); + return result; + } + +} Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/FrequencyCellComponent.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/FrequencyCellComponent.java 2012-12-18 10:50:00 UTC (rev 86) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/species/FrequencyCellComponent.java 2012-12-18 13:07:34 UTC (rev 87) @@ -158,6 +158,7 @@ // reselect this cell AbstractSelectTableAction.doSelectCell(table, r, c); + table.requestFocus(); } @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentCellComponent.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentCellComponent.java 2012-12-18 10:50:00 UTC (rev 86) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentCellComponent.java 2012-12-18 13:07:34 UTC (rev 87) @@ -193,6 +193,7 @@ // reselect this cell AbstractSelectTableAction.doSelectCell(table, r, c); + table.requestFocus(); } @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentEditorUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentEditorUI.jaxx 2012-12-18 10:50:00 UTC (rev 86) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentEditorUI.jaxx 2012-12-18 13:07:34 UTC (rev 87) @@ -26,6 +26,7 @@ <import> fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel fr.ifremer.tutti.persistence.entities.data.Attachment + jaxx.runtime.swing.editor.FileEditor </import> <!-- bean property linked state --> @@ -40,8 +41,6 @@ <AttachmentEditorUIHandler id='handler' constructorParams='this'/> - <Attachment id='model' javaBean='null'/> - <row fill='both'> <cell fill='both' weightx='1' columns='3'> <VBox id='attachments'></VBox> @@ -52,8 +51,7 @@ <JLabel id='fileLabel'/> </cell> <cell fill='both' weightx='1'> - <JTextField id='file' - onMouseClicked='handler.chooseFile()'/> + <FileEditor id='file'/> </cell> <cell fill='both' rows='3'> <JButton id='addButton' Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentEditorUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentEditorUIHandler.java 2012-12-18 10:50:00 UTC (rev 86) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentEditorUIHandler.java 2012-12-18 13:07:34 UTC (rev 87) @@ -40,6 +40,7 @@ import javax.swing.JLabel; import javax.swing.SwingConstants; import java.awt.Cursor; +import java.awt.Font; import java.awt.Window; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; @@ -62,8 +63,6 @@ private final AttachmentEditorUI ui; - private JFileChooser fileChooser = new JFileChooser(); - public AttachmentEditorUIHandler(AttachmentEditorUI attachmentEditorUI) { ui = attachmentEditorUI; @@ -150,13 +149,13 @@ SwingUtil.getParentContainer(ui, Window.class).dispose(); } - public void chooseFile() { - if (fileChooser.showOpenDialog(ui) == JFileChooser.APPROVE_OPTION) { - File file = fileChooser.getSelectedFile(); - ui.getModel().setFile(file); - ui.getFile().setText(file.getAbsolutePath()); - } - } +// public void chooseFile() { +// if (fileChooser.showOpenDialog(ui) == JFileChooser.APPROVE_OPTION) { +// File file = fileChooser.getSelectedFile(); +// ui.getModel().setFile(file); +// ui.getFile().setText(file.getAbsolutePath()); +// } +// } public void addAttachment() { AbstractTuttiBeanUIModel bean = ui.getBean(); @@ -165,9 +164,10 @@ if (list == null) { list = Lists.newArrayList(); } - Attachment attachment = ui.getModel(); - File file = attachment.getFile(); + Attachment attachment = new Attachment(); + File file = ui.getFile().getSelectedFile(); if (file != null) { + attachment.setFile(file); String name = ui.getFileName().getText(); if (StringUtils.isEmpty(name)) { name = file.getName(); @@ -186,9 +186,7 @@ } protected void resetFields() { - ui.setModel(new Attachment()); - fileChooser.setSelectedFile(null); - ui.getFile().setText(""); + ui.getFile().setSelectedFile((File)null); ui.getFileName().setText(""); ui.getFileComment().setText(""); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextCellComponent.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextCellComponent.java 2012-12-18 10:50:00 UTC (rev 86) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextCellComponent.java 2012-12-18 13:07:34 UTC (rev 87) @@ -32,6 +32,7 @@ import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; +import java.awt.event.FocusEvent; import jaxx.runtime.JAXXUtil; import jaxx.runtime.SwingUtil; import org.apache.commons.lang3.StringUtils; @@ -49,6 +50,7 @@ import java.awt.Color; import java.awt.Component; import java.awt.Frame; +import java.awt.event.FocusListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.awt.event.MouseAdapter; @@ -156,7 +158,7 @@ ComponentMover cm = new ComponentMover(); cm.setDragInsets(cr.getDragInsets()); cm.registerComponent(editor); - + editor.addWindowListener(new WindowAdapter() { @Override @@ -194,6 +196,7 @@ // reselect this cell AbstractSelectTableAction.doSelectCell(table, r, c); + table.requestFocus(); } @Override 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 2012-12-18 10:50:00 UTC (rev 86) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2012-12-18 13:07:34 UTC (rev 87) @@ -161,6 +161,15 @@ tutti.table.benthos.batch.header.speciesByGenusCode=Espèce tutti.table.benthos.batch.header.toConfirm=A Confirmer tutti.table.benthos.batch.header.weight=Poids +tutti.table.fishing.environment.header.key=Clé +tutti.table.fishing.environment.header.value=Valeur +tutti.table.fishing.environment.keys.= +tutti.table.fishing.environment.keys.beaufortScale=Force du vent +tutti.table.fishing.environment.keys.key3=Clé 3 +tutti.table.fishing.environment.keys.key4=Clé 4 +tutti.table.fishing.environment.keys.key5=Clé 5 +tutti.table.fishing.environment.keys.seaState=État de la mer +tutti.table.fishing.environment.keys.windDirection=Direction du vent tutti.table.macrowaste.batch.header.comment=Commentaire tutti.table.macrowaste.batch.header.file=Pièces jointes tutti.table.macrowaste.batch.header.macroWasteCategory=Catégorie