r179 - in trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing: . content/cruise content/program content/protocol util
Author: kmorin Date: 2013-01-11 20:00:31 +0100 (Fri, 11 Jan 2013) New Revision: 179 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/179 Log: refs #1908 [CONSOLIDATION] Mise en place des deux contextes de validation (pour les captures) mise en place du widget dans les campagnes, programmes et protocoles 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/content/cruise/EditCruiseUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 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/util/SwingValidatorMessageWidget.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-11 17:47:58 UTC (rev 178) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-01-11 19:00:31 UTC (rev 179) @@ -331,7 +331,7 @@ screenTitle = _("tutti.title.edit.program"); } - screenUI = new EditProgramUI(context); + screenUI = new EditProgramUI(ui); break; case EDIT_CRUISE: @@ -342,7 +342,7 @@ screenTitle = _("tutti.title.edit.cruise"); } - screenUI = new EditCruiseUI(context); + screenUI = new EditCruiseUI(ui); break; case EDIT_PROTOCOL: @@ -353,7 +353,7 @@ screenTitle = _("tutti.title.edit.protocol"); } - screenUI = new EditProtocolUI(context); + screenUI = new EditProtocolUI(ui); break; case EDIT_FISHING_OPERATION: Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-01-11 17:47:58 UTC (rev 178) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.css 2013-01-11 19:00:31 UTC (rev 179) @@ -43,13 +43,6 @@ showReset: true; } -#splitPane { - orientation: {JSplitPane.VERTICAL_SPLIT}; - resizeWeight: 0.3; - oneTouchExpandable: true; - continuousLayout: true; -} - #nameLabel { text: "tutti.label.cruise.name"; labelFor: {nameField}; @@ -208,19 +201,4 @@ actionIcon: generate; text: "tutti.action.generateCampaignName"; enabled: {model.isCanGenerateName()}; -} - -#messagePanel { - border: {BorderFactory.createTitledBorder(_("tutti.title.messages"))}; - /*height: 200; - width: 500;*/ -} - -#errorTable { - rowSelectionAllowed: true; - autoCreateRowSorter: true; - autoResizeMode: {JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS}; - cellSelectionEnabled: false; - selectionMode: {ListSelectionModel.SINGLE_SELECTION}; - model: {errorTableModel}; -} +} \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-01-11 17:47:58 UTC (rev 178) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-01-11 19:00:31 UTC (rev 179) @@ -30,6 +30,7 @@ fr.ifremer.tutti.persistence.entities.referential.Gear fr.ifremer.tutti.persistence.entities.referential.Person fr.ifremer.tutti.persistence.entities.referential.Vessel + fr.ifremer.tutti.ui.swing.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext jaxx.runtime.swing.editor.NumberEditor @@ -53,8 +54,9 @@ <script><![CDATA[ - public EditCruiseUI(TuttiUIContext context) { - EditCruiseUIHandler handler = new EditCruiseUIHandler(context, this); + public EditCruiseUI(TuttiUI parentUI) { + JAXXUtil.initContext(this, parentUI); + EditCruiseUIHandler handler = new EditCruiseUIHandler(parentUI, this); setContextValue(handler); handler.beforeInitUI(); } @@ -90,137 +92,129 @@ </BeanValidator> - <JSplitPane id='splitPane' constraints='BorderLayout.CENTER'> - <Table fill='both'> + <Table fill='both'> - <!-- cruise program / year / program part / name --> - <row> - <cell anchor='west'> - <JLabel id='programLabel'/> - </cell> - <cell weightx='0.3'> - <BeanComboBox id='surveyComboBox' constructorParams='this' - genericType='Program'/> - </cell> - <cell anchor='west'> - <JLabel id='yearLabel'/> - </cell> - <cell weightx='0.3'> - <NumberEditor id='yearField' constructorParams='this'/> - </cell> - <cell> - <JLabel id='surveyPartLabel'/> - </cell> - <cell weightx='0.3'> - <JTextField id='surveyPartField' - onKeyReleased='handler.setText(event, "surveyPart")'/> - </cell> - </row> + <!-- cruise program / year / program part / name --> + <row> + <cell anchor='west'> + <JLabel id='programLabel'/> + </cell> + <cell weightx='0.3'> + <BeanComboBox id='surveyComboBox' constructorParams='this' + genericType='Program'/> + </cell> + <cell anchor='west'> + <JLabel id='yearLabel'/> + </cell> + <cell weightx='0.3'> + <NumberEditor id='yearField' constructorParams='this'/> + </cell> + <cell> + <JLabel id='surveyPartLabel'/> + </cell> + <cell weightx='0.3'> + <JTextField id='surveyPartField' + onKeyReleased='handler.setText(event, "surveyPart")'/> + </cell> + </row> - <!-- cruise name --> - <row> - <cell> - <JLabel id='nameLabel'/> - </cell> - <cell weightx='0.3'> - <JTextField id='nameField' - onKeyReleased='handler.setText(event, "name")'/> - </cell> - <cell columns='2'> - <JButton id='generateNameButton' - onActionPerformed='handler.generateCampaignName()'/> - </cell> - <cell> - <JLabel id='pocheLabel'/> - </cell> - <cell weightx='0.3'> - <NumberEditor id='pocheField' constructorParams='this'/> - </cell> - </row> + <!-- cruise name --> + <row> + <cell> + <JLabel id='nameLabel'/> + </cell> + <cell weightx='0.3'> + <JTextField id='nameField' + onKeyReleased='handler.setText(event, "name")'/> + </cell> + <cell columns='2'> + <JButton id='generateNameButton' + onActionPerformed='handler.generateCampaignName()'/> + </cell> + <cell> + <JLabel id='pocheLabel'/> + </cell> + <cell weightx='0.3'> + <NumberEditor id='pocheField' constructorParams='this'/> + </cell> + </row> - <!-- cruise country / begin date / end date --> - <row> - <cell> - <JLabel id='countryLabel'/> - </cell> - <cell weightx='0.3'> - <BeanComboBox id='countryComboBox' constructorParams='this' - genericType='Country'/> - </cell> - <cell> - <JLabel id='beginDateLabel'/> - </cell> - <cell weightx='0.3'> - <JXDatePicker id='beginDateField' - onActionPerformed='handler.setDate(event, "beginDate")'/> - </cell> - <cell> - <JLabel id='endDateLabel'/> - </cell> - <cell weightx='0.3'> - <JXDatePicker id='endDateField' - onActionPerformed='handler.setDate(event, "endDate")'/> - </cell> - </row> + <!-- cruise country / begin date / end date --> + <row> + <cell> + <JLabel id='countryLabel'/> + </cell> + <cell weightx='0.3'> + <BeanComboBox id='countryComboBox' constructorParams='this' + genericType='Country'/> + </cell> + <cell> + <JLabel id='beginDateLabel'/> + </cell> + <cell weightx='0.3'> + <JXDatePicker id='beginDateField' + onActionPerformed='handler.setDate(event, "beginDate")'/> + </cell> + <cell> + <JLabel id='endDateLabel'/> + </cell> + <cell weightx='0.3'> + <JXDatePicker id='endDateField' + onActionPerformed='handler.setDate(event, "endDate")'/> + </cell> + </row> - <!-- cruise vessel / gear --> - <row weighty='0.3'> - <cell columns='6'> - <JPanel layout='{new GridLayout(1, 0)}'> - <JPanel id='vesselListPane' layout="{new BorderLayout()}"> - <JPanel id='vesselFilterPane' constraints='BorderLayout.NORTH'> - <JLabel id='filterVesselLabel'/> - <JRadioButton id='filterVesselAllButton' - onActionPerformed='model.setVesselType(VesselTypeEnum.ALL)'/> - <JRadioButton id='filterVesselScientificButton' - onActionPerformed='model.setVesselType(VesselTypeEnum.SCIENTIFIC)'/> - <JRadioButton id='filterVesselFishingButton' - onActionPerformed='model.setVesselType(VesselTypeEnum.FISHING)'/> - </JPanel> - <BeanDoubleList id='vesselList' genericType='Vessel' constraints='BorderLayout.CENTER'/> + <!-- cruise vessel / gear --> + <row weighty='0.3'> + <cell columns='6'> + <JPanel layout='{new GridLayout(1, 0)}'> + <JPanel id='vesselListPane' layout="{new BorderLayout()}"> + <JPanel id='vesselFilterPane' constraints='BorderLayout.NORTH'> + <JLabel id='filterVesselLabel'/> + <JRadioButton id='filterVesselAllButton' + onActionPerformed='model.setVesselType(VesselTypeEnum.ALL)'/> + <JRadioButton id='filterVesselScientificButton' + onActionPerformed='model.setVesselType(VesselTypeEnum.SCIENTIFIC)'/> + <JRadioButton id='filterVesselFishingButton' + onActionPerformed='model.setVesselType(VesselTypeEnum.FISHING)'/> </JPanel> - <BeanDoubleList id='gearList' genericType='Gear'/> + <BeanDoubleList id='vesselList' genericType='Vessel' constraints='BorderLayout.CENTER'/> </JPanel> - </cell> - </row> + <BeanDoubleList id='gearList' genericType='Gear'/> + </JPanel> + </cell> + </row> - <!-- cruise headOfMission / headOfSortRoom --> - <row weighty='0.3'> - <cell columns='6'> - <JPanel layout='{new GridLayout(1, 0)}'> - <BeanDoubleList id='headOfMissionList' genericType='Person'/> - <BeanDoubleList id='headOfSortRoomList' genericType='Person'/> - </JPanel> - </cell> - </row> + <!-- cruise headOfMission / headOfSortRoom --> + <row weighty='0.3'> + <cell columns='6'> + <JPanel layout='{new GridLayout(1, 0)}'> + <BeanDoubleList id='headOfMissionList' genericType='Person'/> + <BeanDoubleList id='headOfSortRoomList' genericType='Person'/> + </JPanel> + </cell> + </row> - <!-- cruise comment --> - <row weighty='0.3'> - <cell columns='6'> - <JScrollPane id='commentPane' - onFocusGained='commentField.requestFocus()'> - <JTextArea id='commentField' - onKeyReleased='handler.setText(event, "comment")'/> - </JScrollPane> - </cell> - </row> + <!-- cruise comment --> + <row weighty='0.3'> + <cell columns='6'> + <JScrollPane id='commentPane' + onFocusGained='commentField.requestFocus()'> + <JTextArea id='commentField' + onKeyReleased='handler.setText(event, "comment")'/> + </JScrollPane> + </cell> + </row> - <!-- Form Actions --> - <row> - <cell columns='6'> - <JPanel layout='{new GridLayout(1, 0)}'> - <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> - <JButton id='saveButton' onActionPerformed='handler.save()'/> - </JPanel> - </cell> - </row> - </Table> + <!-- Form Actions --> + <row> + <cell columns='6'> + <JPanel layout='{new GridLayout(1, 0)}'> + <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> + <JButton id='saveButton' onActionPerformed='handler.save()'/> + </JPanel> + </cell> + </row> + </Table> - <JPanel id='messagePanel' layout='{new GridLayout()}'> - <JScrollPane columnHeaderView='{errorTable.getTableHeader()}'> - <JTable id='errorTable'/> - </JScrollPane> - </JPanel> - </JSplitPane> - </JPanel> \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-01-11 17:47:58 UTC (rev 178) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-01-11 19:00:31 UTC (rev 179) @@ -33,20 +33,22 @@ import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; +import fr.ifremer.tutti.ui.swing.MainUI; import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.List; import jaxx.runtime.JAXXUtil; import jaxx.runtime.context.JAXXContextEntryDef; +import jaxx.runtime.validator.swing.SwingValidator; import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer; import jaxx.runtime.validator.swing.SwingValidatorUtil; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.List; - /** * Handler of UI {@link EditCruiseUI}. * @@ -72,8 +74,8 @@ */ private final PersistenceService persistenceService; - public EditCruiseUIHandler(TuttiUIContext context, EditCruiseUI ui) { - super(context); + public EditCruiseUIHandler(TuttiUI parentUi, EditCruiseUI ui) { + super(parentUi.getHandler().getContext()); this.ui = ui; persistenceService = context.getService(PersistenceService.class); } @@ -179,6 +181,8 @@ EditCruiseUIModel model = getModel(); + model.setVesselType(VesselTypeEnum.ALL); + // Change vessel list and gear list when vessel type changes model.addPropertyChangeListener(EditCruiseUIModel.PROPERTY_VESSEL_TYPE, new PropertyChangeListener() { @Override @@ -237,15 +241,16 @@ users, model.getHeadOfSortRoom()); - SwingValidatorUtil.installUI(ui.getErrorTable(), - new SwingValidatorMessageTableRenderer()); + SwingValidator validator = ui.getValidator(); + listenValidatorValid(validator, model); - listenValidatorValid(ui.getValidator(), model); - - model.setVesselType(VesselTypeEnum.ALL); - // if new fishingOperation can already cancel his creation model.setModify(model.isCreate()); + + MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName()); + main.clearValidators(); + main.registerValidator(validator); + } @Override @@ -253,6 +258,8 @@ if (log.isInfoEnabled()) { log.info("closing: " + ui); } + MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName()); + main.clearValidators(); } @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css 2013-01-11 17:47:58 UTC (rev 178) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.css 2013-01-11 19:00:31 UTC (rev 179) @@ -28,13 +28,6 @@ bean: {model}; } -#splitPane { - orientation: {JSplitPane.VERTICAL_SPLIT}; - resizeWeight: 0.3; - oneTouchExpandable: true; - continuousLayout: true; -} - #form { border: {BorderFactory.createTitledBorder((String)null)}; } @@ -77,18 +70,3 @@ text: "tutti.action.cancel"; actionIcon: cancel; } - -#messagePanel { - border: {BorderFactory.createTitledBorder(_("tutti.title.messages"))}; - height: 200; - width: 500; -} - -#errorTable { - rowSelectionAllowed: true; - autoCreateRowSorter: true; - autoResizeMode: {JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS}; - cellSelectionEnabled: false; - selectionMode: {ListSelectionModel.SINGLE_SELECTION}; - model: {errorTableModel}; -} Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx 2013-01-11 17:47:58 UTC (rev 178) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx 2013-01-11 19:00:31 UTC (rev 179) @@ -26,6 +26,7 @@ <import> fr.ifremer.tutti.persistence.entities.referential.Zone + fr.ifremer.tutti.ui.swing.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext jaxx.runtime.swing.editor.bean.BeanComboBox @@ -42,8 +43,9 @@ <script><![CDATA[ - public EditProgramUI(TuttiUIContext context) { - EditProgramUIHandler handler = new EditProgramUIHandler(context, this); + public EditProgramUI(TuttiUI parentUI) { + JAXXUtil.initContext(this, parentUI); + EditProgramUIHandler handler = new EditProgramUIHandler(parentUI, this); setContextValue(handler); handler.beforeInitUI(); } @@ -68,59 +70,50 @@ <field name='comment' component='commentField'/> </BeanValidator> - <JSplitPane id='splitPane' constraints='BorderLayout.CENTER'> + <Table id='form' fill='both'> - <Table id='form' fill='both'> + <!-- program name --> + <row> + <cell anchor='west'> + <JLabel id='nameLabel'/> + </cell> + <cell weightx='1.0'> + <JTextField id='nameField' + onKeyReleased='handler.setText(event, "name")'/> + </cell> + </row> - <!-- program name --> - <row> - <cell anchor='west'> - <JLabel id='nameLabel'/> - </cell> - <cell weightx='1.0'> - <JTextField id='nameField' - onKeyReleased='handler.setText(event, "name")'/> - </cell> - </row> + <!-- program zone --> + <row> + <cell> + <JLabel id='zoneLabel'/> + </cell> + <cell> + <BeanComboBox id='zoneComboBox' constructorParams='this' + genericType='Zone'/> + </cell> + </row> - <!-- program zone --> - <row> - <cell> - <JLabel id='zoneLabel'/> - </cell> - <cell> - <BeanComboBox id='zoneComboBox' constructorParams='this' - genericType='Zone'/> - </cell> - </row> + <!-- program comment --> + <row weighty='0.8'> + <cell columns='2'> + <JScrollPane id='commentPane' + onFocusGained='commentField.requestFocus()'> + <JTextArea id='commentField' + onKeyReleased='handler.setText(event, "comment")'/> + </JScrollPane> + </cell> + </row> - <!-- program comment --> - <row weighty='0.8'> - <cell columns='2'> - <JScrollPane id='commentPane' - onFocusGained='commentField.requestFocus()'> - <JTextArea id='commentField' - onKeyReleased='handler.setText(event, "comment")'/> - </JScrollPane> - </cell> - </row> + <!-- actions --> + <row anchor='south'> + <cell columns='2'> + <JPanel layout='{new GridLayout(1, 0)}'> + <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> + <JButton id='saveButton' onActionPerformed='handler.save()'/> + </JPanel> + </cell> + </row> + </Table> - <!-- actions --> - <row anchor='south'> - <cell columns='2'> - <JPanel layout='{new GridLayout(1, 0)}'> - <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> - <JButton id='saveButton' onActionPerformed='handler.save()'/> - </JPanel> - </cell> - </row> - </Table> - - <!-- validation messages --> - <JPanel id='messagePanel' layout='{new GridLayout()}'> - <JScrollPane columnHeaderView='{errorTable.getTableHeader()}'> - <JTable id='errorTable'/> - </JScrollPane> - </JPanel> - </JSplitPane> </JPanel> \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-01-11 17:47:58 UTC (rev 178) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-01-11 19:00:31 UTC (rev 179) @@ -28,8 +28,11 @@ import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; +import fr.ifremer.tutti.ui.swing.MainUI; import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import jaxx.runtime.validator.swing.SwingValidator; import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer; import jaxx.runtime.validator.swing.SwingValidatorUtil; import org.apache.commons.logging.Log; @@ -61,8 +64,8 @@ */ private final PersistenceService persistenceService; - public EditProgramUIHandler(TuttiUIContext context, EditProgramUI ui) { - super(context); + public EditProgramUIHandler(TuttiUI parentUi, EditProgramUI ui) { + super(parentUi.getHandler().getContext()); this.ui = ui; persistenceService = context.getService(PersistenceService.class); } @@ -102,11 +105,13 @@ persistenceService.getAllProgramZone(), model.getZone()); - SwingValidatorUtil.installUI(ui.getErrorTable(), - new SwingValidatorMessageTableRenderer()); + SwingValidator validator = ui.getValidator(); + listenValidatorValid(validator, model); + + MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName()); + main.clearValidators(); + main.registerValidator(validator); - listenValidatorValid(ui.getValidator(), model); - // if new program can already cancel his creation model.setModify(model.isCreate()); } @@ -116,7 +121,8 @@ if (log.isInfoEnabled()) { log.info("closing: " + ui); } - ui.getValidator().setBean(null); + MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName()); + main.clearValidators(); } @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-01-11 17:47:58 UTC (rev 178) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.css 2013-01-11 19:00:31 UTC (rev 179) @@ -30,13 +30,6 @@ bean: {model}; } -#splitPane { - orientation: {JSplitPane.VERTICAL_SPLIT}; - resizeWeight: 0.3; - oneTouchExpandable: true; - continuousLayout: true; -} - #form { border: {BorderFactory.createTitledBorder((String)null)}; } @@ -70,21 +63,6 @@ actionIcon: cancel; } -#messagePanel { - border: {BorderFactory.createTitledBorder(_("tutti.title.messages"))}; - /*height: 200; - width: 500;*/ -} - -#errorTable { - rowSelectionAllowed: true; - autoCreateRowSorter: true; - autoResizeMode: {JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS}; - cellSelectionEnabled: false; - selectionMode: {ListSelectionModel.SINGLE_SELECTION}; - model: {errorTableModel}; -} - #speciesComboBox { showReset: false; enabled: {!speciesComboBox.isEmpty()}; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-01-11 17:47:58 UTC (rev 178) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-01-11 19:00:31 UTC (rev 179) @@ -16,17 +16,18 @@ 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% - --> +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% +--> <JPanel id='homePanel' layout='{new BorderLayout()}' implements='fr.ifremer.tutti.ui.swing.TuttiUI<EditProtocolUIModel, EditProtocolUIHandler>'> <import> fr.ifremer.tutti.persistence.entities.referential.Caracteristic fr.ifremer.tutti.persistence.entities.referential.Species + fr.ifremer.tutti.ui.swing.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext jaxx.runtime.swing.editor.bean.BeanComboBox @@ -48,8 +49,9 @@ <script><![CDATA[ - public EditProtocolUI(TuttiUIContext context) { - EditProtocolUIHandler handler = new EditProtocolUIHandler(context, this); + public EditProtocolUI(TuttiUI parentUI) { + JAXXUtil.initContext(this, parentUI); + EditProtocolUIHandler handler = new EditProtocolUIHandler(parentUI, this); setContextValue(handler); handler.beforeInitUI(); } @@ -57,7 +59,8 @@ protected void $afterCompleteSetup() { handler.afterInitUI(); } - ]]></script> + ]]> + </script> <EditProtocolUIHandler id='handler' initializer='getContextValue(EditProtocolUIHandler.class)'/> @@ -78,90 +81,80 @@ onActionPerformed='handler.removeSpecies()'/> </JPopupMenu> - <JSplitPane id='splitPane' constraints='BorderLayout.CENTER'> + <JTabbedPane constraints='BorderLayout.CENTER'> + <tab title='tutti.label.tab.protocol.info'> + <Table id='protocolInfoForm' fill='both'> - <JPanel layout='{new BorderLayout()}'> - <JTabbedPane constraints='BorderLayout.CENTER'> - <tab title='tutti.label.tab.protocol.info'> - <Table id='protocolInfoForm' fill='both'> - - <!-- protocol name --> - <row> - <cell anchor='west'> - <JLabel id='nameLabel'/> - </cell> - <cell weightx='1.0'> - <JTextField id='nameField' + <!-- protocol name --> + <row> + <cell anchor='west'> + <JLabel id='nameLabel'/> + </cell> + <cell weightx='1.0'> + <JTextField id='nameField' onKeyReleased='handler.setText(event, "name")'/> - </cell> - </row> + </cell> + </row> - <!-- program comment --> - <row weighty='0.8'> - <cell columns='2'> - <JScrollPane id='commentPane' + <!-- program comment --> + <row weighty='0.8'> + <cell columns='2'> + <JScrollPane id='commentPane' onFocusGained='commentField.requestFocus()'> - <JTextArea id='commentField' + <JTextArea id='commentField' onKeyReleased='handler.setText(event, "comment")'/> - </JScrollPane> - </cell> - </row> - </Table> - </tab> + </JScrollPane> + </cell> + </row> + </Table> + </tab> - <tab title='tutti.label.tab.protocol.species'> - <Table fill='both'> - <row fill='both'> - <cell fill='both' weightx='1'> - <BeanComboBox id='speciesComboBox' constructorParams='this' + <tab title='tutti.label.tab.protocol.species'> + <Table fill='both'> + <row fill='both'> + <cell fill='both' weightx='1'> + <BeanComboBox id='speciesComboBox' constructorParams='this' genericType='Species'/> - </cell> - <cell fill='both'> - <JButton id='addRow' onActionPerformed='handler.addRow()'/> - </cell> - </row> - <row fill='both' weighty='1'> - <cell fill='both' columns='2'> - <JScrollPane> - <JXTable id='speciesTable' onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/> - </JScrollPane> - </cell> - </row> - </Table> - </tab> + </cell> + <cell fill='both'> + <JButton id='addRow' onActionPerformed='handler.addRow()'/> + </cell> + </row> + <row fill='both' weighty='1'> + <cell fill='both' columns='2'> + <JScrollPane> + <JXTable id='speciesTable' onMouseClicked='handler.autoSelectRowInTable(event, tablePopup)'/> + </JScrollPane> + </cell> + </row> + </Table> + </tab> - <tab title='tutti.label.tab.protocol.pmfm'> - <Table fill='both' weightx='1'> - <row fill='both' weighty='1'> - <cell fill='both'> - <BeanDoubleList id='gearList' genericType='Caracteristic'/> - </cell> - </row> - <row fill='both' weighty='1'> - <cell fill='both'> - <BeanDoubleList id='environmentList' + <tab title='tutti.label.tab.protocol.pmfm'> + <Table fill='both' weightx='1'> + <row fill='both' weighty='1'> + <cell fill='both'> + <BeanDoubleList id='gearList' genericType='Caracteristic'/> + </cell> + </row> + <row fill='both' weighty='1'> + <cell fill='both'> + <BeanDoubleList id='environmentList' genericType='Caracteristic'/> - </cell> - </row> - <row fill='both' weighty='1'> - <cell fill='both'> - <BeanDoubleList id='hydrologyList' genericType='Caracteristic'/> - </cell> - </row> - </Table> - </tab> - </JTabbedPane> + </cell> + </row> + <row fill='both' weighty='1'> + <cell fill='both'> + <BeanDoubleList id='hydrologyList' genericType='Caracteristic'/> + </cell> + </row> + </Table> + </tab> + </JTabbedPane> - <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'> - <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> - <JButton id='saveButton' onActionPerformed='handler.save()'/> - </JPanel> + <JPanel layout='{new GridLayout(1, 0)}' constraints='BorderLayout.SOUTH'> + <JButton id='cancelButton' onActionPerformed='handler.cancel()'/> + <JButton id='saveButton' onActionPerformed='handler.save()'/> + </JPanel> - </JPanel> - <JPanel id='messagePanel' layout='{new GridLayout()}'> - <JScrollPane columnHeaderView='{errorTable.getTableHeader()}'> - <JTable id='errorTable'/> - </JScrollPane> - </JPanel> - </JSplitPane> </JPanel> \ No newline at end of file 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-11 17:47:58 UTC (rev 178) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-01-11 19:00:31 UTC (rev 179) @@ -30,15 +30,15 @@ import com.google.common.collect.HashBiMap; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; -import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.SampleCategoryEnum; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; 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.TuttiScreen; -import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.util.HydrologicCaracteristicUtil; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; @@ -46,7 +46,6 @@ import java.util.Collection; import java.util.List; import java.util.Map; -import java.util.Set; import javax.swing.event.ChangeEvent; import javax.swing.event.ListSelectionEvent; import javax.swing.event.TableColumnModelEvent; @@ -54,6 +53,7 @@ import javax.swing.table.TableColumn; import javax.swing.table.TableColumnModel; import jaxx.runtime.swing.editor.bean.BeanDoubleList; +import jaxx.runtime.validator.swing.SwingValidator; import jaxx.runtime.validator.swing.SwingValidatorMessageTableRenderer; import jaxx.runtime.validator.swing.SwingValidatorUtil; import org.apache.commons.collections.CollectionUtils; @@ -96,8 +96,8 @@ */ private final BiMap<ColumnIdentifier<EditProtocolSpeciesRowModel>, SampleCategoryEnum> columToSampleCategory; - public EditProtocolUIHandler(TuttiUIContext context, EditProtocolUI ui) { - super(context); + public EditProtocolUIHandler(TuttiUI parentUi, EditProtocolUI ui) { + super(parentUi.getHandler().getContext()); this.ui = ui; columToSampleCategory = HashBiMap.create(SampleCategoryEnum.values().length-1); columToSampleCategory.put(EditProtocolSpeciesTableModel.SIZE_ENABLED, SampleCategoryEnum.size); @@ -220,11 +220,13 @@ model.fromBean(protocol); } - SwingValidatorUtil.installUI(ui.getErrorTable(), - new SwingValidatorMessageTableRenderer()); + SwingValidator validator = ui.getValidator(); + listenValidatorValid(validator, model); + + MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName()); + main.clearValidators(); + main.registerValidator(validator); - listenValidatorValid(ui.getValidator(), model); - // create table model JXTable table = getTable(); @@ -353,6 +355,8 @@ if (log.isInfoEnabled()) { log.info("closing: " + ui); } + MainUI main = ui.getContextValue(MainUI.class, MainUI.class.getName()); + main.clearValidators(); } @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SwingValidatorMessageWidget.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SwingValidatorMessageWidget.java 2013-01-11 17:47:58 UTC (rev 178) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/SwingValidatorMessageWidget.java 2013-01-11 19:00:31 UTC (rev 179) @@ -123,6 +123,7 @@ public void registerValidator(SwingValidator validator) { errorTableModel.registerValidator(validator); + validator.reloadBean(); } public void clearValidators() {
participants (1)
-
kmorin@users.forge.codelutin.com