r512 - in trunk/tutti-ui-swing: . src/main/filtered-resources src/main/java/fr/ifremer/tutti/ui/swing src/main/java/fr/ifremer/tutti/ui/swing/content/cruise src/main/java/fr/ifremer/tutti/ui/swing/content/db src/main/java/fr/ifremer/tutti/ui/swing/content/home src/main/java/fr/ifremer/tutti/ui/swing/content/operation src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental src/main/java/fr/ifremer/tutti/ui/
Author: tchemit Date: 2013-03-01 21:37:07 +0100 (Fri, 01 Mar 2013) New Revision: 512 Url: http://forge.codelutin.com/projects/tutti/repository/revisions/512 Log: improve action api reformat some code Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiDataContext.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiBeanUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiErrorHelper.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiExceptionHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUI.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiUIAction.java Removed: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiErrorHelper.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiExceptionHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java Modified: trunk/tutti-ui-swing/ trunk/tutti-ui-swing/src/main/filtered-resources/log4j.properties trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractChangeScreenAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractMainUITuttiAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ImportTemporaryReferentialAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 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/ManageDbAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateApplicationAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateReferentialAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java 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/cruise/EditCruiseUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/CloseDbAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.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/DeleteProtocolAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.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/NewCruiseAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java 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/SelectCruiseUI.jaxx 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/SelectCruiseUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AttachmentsAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/CancelEditFishingOperationAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/ImportCasinoAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/NewFishingOperationAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/CancelEditCatchBatchAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SaveCatchBatchAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesBatchAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesSubBatchAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RenameSpeciesBatchAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SelectSpeciesUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SelectSpeciesUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SelectSpeciesUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicTabUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicTabUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTableModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.java 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/program/EditProgramUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/AddSpeciesProtocolAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesRowModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java 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/content/protocol/EditProtocolUIModel.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportAllCaracteristicAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolCaracteristicAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/RemoveSpeciesProtocolAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SelectOtherSpeciesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryGearExampleAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryPersonExampleAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporarySpeciesExampleAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryVesselExampleAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryGearAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryPersonAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporarySpeciesAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryVesselAction.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CustomTab.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiCollectionUniqueKeyValidator.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUI.jaxx trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUIModel.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/CaracteristicValueEditor.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueRenderer.java 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/SimpleTimeEditorHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiComputedOrNotDataEditorHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiComputedOrNotDataTableCell.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIModel.java trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties Property changes on: trunk/tutti-ui-swing ___________________________________________________________________ Modified: svn:ignore - target .idea *.ipr *.iws *.iml + target .idea *.ipr *.iws *.iml .project .classpath .settings tutti.config *.log Modified: trunk/tutti-ui-swing/src/main/filtered-resources/log4j.properties =================================================================== --- trunk/tutti-ui-swing/src/main/filtered-resources/log4j.properties 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/filtered-resources/log4j.properties 2013-03-01 20:37:07 UTC (rev 512) @@ -27,19 +27,16 @@ # Console output log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout -log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n +log4j.appender.stdout.layout.ConversionPattern=%d{ISO8601} %5p [%20t] (%c:%L) - %m%n +# tutti levels +log4j.logger.fr.ifremer.tutti=INFO +log4j.logger.fr.ifremer.tutti.ui.swing.util=WARN +log4j.logger.fr.ifremer.tutti.ui.swing.util.action=DEBUG + log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.file=${tutti.log.file} log4j.appender.file.MaxFileSize=10MB log4j.appender.file.MaxBackupIndex=4 log4j.appender.file.layout=org.apache.log4j.PatternLayout -log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %5p [%t] %c - %m%n - -# tutti levels -log4j.logger.fr.ifremer=INFO -log4j.logger.fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler=WARN -log4j.logger.fr.ifremer.tutti.ui.swing.util.table=INFO -log4j.logger.org.nuiton.util=WARN -log4j.logger.org.nuiton.util.ApplicationConfig=INFO -log4j.logger.org.nuiton.util.ApplicationConfigHelper=INFO +log4j.appender.file.layout.ConversionPattern=%d{ISO8601} %5p [%20t] %c - %m%n Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractChangeScreenAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractChangeScreenAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractChangeScreenAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,30 +25,25 @@ * #L% */ -import java.awt.event.ActionEvent; - /** * Abstract action defining actions which sets the screen of the application. * * @author kmorin <kmorin@codelutin.com> * @since 1.0 */ -public abstract class AbstractChangeScreenAction extends AbstractTuttiAction<TuttiUIContext, MainUI, MainUIHandler> { +public abstract class AbstractChangeScreenAction extends AbstractMainUITuttiAction { - private static final long serialVersionUID = 1L; - protected AbstractChangeScreenAction(MainUIHandler handler, - String name, String icon, String text, String tip, boolean hideBody) { - super(handler, name, icon, text, tip, hideBody); + super(handler, icon, text, tip, hideBody); } @Override - protected boolean prepareAction(ActionEvent event) { - boolean result = super.prepareAction(event); + protected boolean prepareAction() { + boolean result = super.prepareAction(); result &= getHandler().getCurrentHandler().canCloseUI(getNextScreen()); return result; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractMainUITuttiAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractMainUITuttiAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractMainUITuttiAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -24,20 +24,19 @@ * #L% */ +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; + /** * @author tchemit <chemit@codelutin.com> * @since 1.0 */ public abstract class AbstractMainUITuttiAction extends AbstractTuttiAction<TuttiUIContext, MainUI, MainUIHandler> { - private static final long serialVersionUID = 1L; - protected AbstractMainUITuttiAction(MainUIHandler handler, - String name, String icon, String text, String tip, boolean hideBody) { - super(handler, name, icon, text, tip, hideBody); + super(handler, icon, text, tip, hideBody); } } Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -1,366 +0,0 @@ -package fr.ifremer.tutti.ui.swing; - -/* - * #%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.google.common.base.Preconditions; -import com.google.common.collect.Sets; -import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.service.TuttiService; -import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig; -import fr.ifremer.tutti.ui.swing.util.action.TuttiActionUI; -import fr.ifremer.tutti.ui.swing.util.action.TuttiActionUIModel; -import jaxx.runtime.SwingUtil; -import org.apache.commons.lang3.ObjectUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.jdesktop.beans.AbstractBean; -import org.nuiton.util.decorator.Decorator; - -import javax.swing.AbstractAction; -import java.awt.event.ActionEvent; -import java.util.Set; -import java.util.Timer; -import java.util.TimerTask; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -/** - * TODO - * - * @author tchemit <chemit@codelutin.com> - * @since 1.0 - */ -public abstract class AbstractTuttiAction<M extends AbstractBean, UI extends TuttiUI<M, ?>, H extends AbstractTuttiUIHandler<M, UI>> extends AbstractAction { - - private static final long serialVersionUID = 1L; - - /** Logger. */ - private static final Log log = LogFactory.getLog(AbstractTuttiAction.class); - - private static final Timer t = new Timer(); - - private static final ExecutorService executorService = - Executors.newSingleThreadExecutor(); - - private static final TuttiExceptionHandler exceptionHandler = new TuttiExceptionHandler(); - - private final H handler; - - private boolean failed; - - private final boolean hideBody; - - private final static Object lock = new Object(); - - protected abstract void doAction(ActionEvent event) throws Exception; - - protected AbstractTuttiAction(H handler, - String name, - String icon, - String text, - String tip, - boolean hideBody) { - - this.handler = handler; - this.hideBody = hideBody; - if (icon != null) { - putValue(SMALL_ICON, SwingUtil.createActionIcon(icon)); - putValue(LARGE_ICON_KEY, SwingUtil.createActionIcon(icon)); - } - putValue(ACTION_COMMAND_KEY, name); - putValue(NAME, text); - putValue(SHORT_DESCRIPTION, tip); - } - - public final UI getUI() { - return handler.getUI(); - } - - protected String getActionName() { - return (String) getValue("actionName"); - } - - public String getActionDescription() { - return (String) getValue("actionDescription"); - } - - protected boolean prepareAction(ActionEvent event) { - putValue("actionName", getValue(NAME)); - putValue("actionDescription", getValue(SHORT_DESCRIPTION)); - return true; - } - - protected void releaseAction(ActionEvent event) { - putValue("actionName", null); - putValue("actionDescription", null); - } - - public boolean isFailed() { - return failed; - } - - public void setFailed(boolean failed) { - this.failed = failed; - } - - @Override - public final void actionPerformed(final ActionEvent event) { - - if (log.isInfoEnabled()) { - log.info("Task [" + this + "] starting"); - } - - setFailed(false); - - boolean doAction = prepareAction(event); - - if (doAction) { - - boolean useTimer; - - synchronized (lock) { - useTimer = actions.isEmpty(); - - mainAction = AbstractTuttiAction.this; - actions.add(AbstractTuttiAction.this); - } - - if (useTimer) { - - // a new thread action - - executorService.submit(new Runnable() { - @Override - public void run() { - - runAction(true, event); - } - }); - - } else { - - runAction(false, event); - } - } else { - releaseAction(event); - } - } - - protected void runAction(boolean useTimer, ActionEvent event) { - - TimerTask timer = null; - if (useTimer) { - - // there is already anohter action in pool, no timer - - timer = new ActionTimerTask(this); - - t.schedule(timer, 1000); - } - - try { - - this.doAction(event); - } catch (Throwable e) { - setFailed(true); - - if (log.isErrorEnabled()) { - log.error("Task [" + this + "] error: " + e.getMessage(), e); - } - exceptionHandler.handle(new TuttiExceptionHandler.TuttiActionException(this, e)); - } finally { - if (log.isInfoEnabled()) { - log.info("Task [" + this + "] done"); - } - if (timer != null) { - - timer.cancel(); - } - - try { - this.releaseAction(event); - } finally { - - synchronized (lock) { - - TuttiActionUI actionUI = AbstractTuttiAction.this.getContext().getActionUI(); - - TuttiActionUIModel actionUIModel = actionUI.getModel(); - - if (ObjectUtils.equals(AbstractTuttiAction.this, actionUIModel.getAction())) { - - // same action, then remove it (will close dialog as a side effect) - actionUIModel.clear(); - } - actions.remove(AbstractTuttiAction.this); - - if (AbstractTuttiAction.this.equals(getMainAction())) { - mainAction = null; - } - } - } - } - } - - public TuttiUIContext getContext() { - return handler.getContext(); - } - - public H getHandler() { - return handler; - } - - public M getModel() { - return handler.getModel(); - } - - protected <S extends TuttiService> S getService(Class<S> serviceType) { - return getContext().getService(serviceType); - } - - protected TuttiApplicationConfig getConfig() { - return getContext().getConfig(); - } - - protected void setMnemonic(int key) { - putValue(MNEMONIC_KEY, key); - } - - public boolean isHideBody() { - return hideBody; - } - - private final static Set<Object> actions = Sets.newHashSet(); - - private static AbstractTuttiAction mainAction; - - public static AbstractTuttiAction getMainAction() { - return mainAction; - } - - protected static class ActionTimerTask<A extends AbstractTuttiAction> extends TimerTask { - - private final Object lock = new Object(); - - protected boolean canceled; - - private final A action; - - protected TuttiActionUI actionUI; - - public ActionTimerTask(A action) { - this.action = action; - this.actionUI = action.getContext().getActionUI(); - } - - @Override - public void run() { - - if (canceled) { - - if (log.isDebugEnabled()) { - log.debug("Task [" + action + "] was already canceled, do nothing"); - } - } else { - - if (log.isDebugEnabled()) { - log.debug("Task [" + action + "] is started, show waiting dialog"); - } - - if (log.isDebugEnabled()) { - log.debug("Try to open dialog (was canceled ? " + canceled + ")"); - } - if (!canceled || !action.isFailed()) { - - updateBusyState(true); - - actionUI.getModel().setAction(action); - } - } - } - - - @Override - public boolean cancel() { - synchronized (lock) { - canceled = true; - if (log.isDebugEnabled()) { - log.debug("Task [" + action + "] canceled."); - } - boolean cancel = super.cancel(); - - updateBusyState(false); - - if (ObjectUtils.equals(action, actionUI.getModel().getAction())) { - - // same action, then remove it (will close dialog as a side effect) - actionUI.getModel().clear(); - } - return cancel; - } - } - - protected void updateBusyState(boolean busy) { - - MainUI ui = action.getContext().getMainUI(); - if (busy) { - // ui bloquee - if (action.isHideBody()) { - ui.getBody().setVisible(false); - } - } else { - // ui debloquee - if (action.isHideBody()) { - ui.getBody().setVisible(true); - } - } - } - } - - protected void sendMessage(String message) { - getContext().showInformationMessage(message); - } - - protected <O> Decorator<O> getDecorator(Class<O> type, String name) { - DecoratorService decoratorService = - getContext().getService(DecoratorService.class); - - Preconditions.checkNotNull(type); - - Decorator decorator = decoratorService.getDecoratorByType(type, name); - if (decorator == null) { - - if (DecoratorService.LabelAware.class.isAssignableFrom(type)) { - decorator = getDecorator(DecoratorService.LabelAware.class, null); - } - } - Preconditions.checkNotNull(decorator); - return decorator; - } - - protected String decorate(Object object) { - return handler.getDecorator(object.getClass(), null).toString(object); - } -} Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -1,130 +0,0 @@ -package fr.ifremer.tutti.ui.swing; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 Ifremer - * %% - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public - * License along with this program. If not, see - * <http://www.gnu.org/licenses/gpl-3.0.html>. - * #L% - */ - -import fr.ifremer.tutti.persistence.entities.IdAware; -import fr.ifremer.tutti.service.TuttiTechnicalException; -import org.jdesktop.beans.AbstractSerializableBean; -import org.nuiton.util.beans.Binder; - -/** - * Abstract UI model to edit a bean. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public abstract class AbstractTuttiBeanUIModel<E, B extends AbstractTuttiBeanUIModel<E, B>> extends AbstractSerializableBean implements IdAware { - - private static final long serialVersionUID = 1L; - - public static final String PROPERTY_ID = "id"; - - public static final String PROPERTY_MODIFY = "modify"; - - public static final String PROPERTY_VALID = "valid"; - - protected String id; - - protected boolean modify; - - protected boolean valid; - - private final Class<E> entityType; - - private final Binder<E, B> fromBeanBinder; - - private final Binder<B, E> toBeanBinder; - - protected AbstractTuttiBeanUIModel(Class<E> entityType, - Binder<E, B> fromBeanBinder, - Binder<B, E> toBeanBinder) { - this.entityType = entityType; - this.fromBeanBinder = fromBeanBinder; - this.toBeanBinder = toBeanBinder; - } - - public final void fromBean(E bean) { - fromBeanBinder.copy(bean, (B) this); - } - - public final E toBean() { - E result = newEntity(); - toBeanBinder.copy((B) this, result); - return result; - } - - protected E newEntity() { - try { - E result = entityType.newInstance(); - return result; - } catch (Exception e) { - throw new TuttiTechnicalException( - "Could not instanciate entity of type " + - entityType.getName(), e); - } - } - - public String getId() { - return id; - } - - public void setId(String id) { - Object oldValue = getId(); - this.id = id; - firePropertyChange(PROPERTY_ID, oldValue, id); - } - - public String getTitle() { - return null; - } - - public String getIcon() { - return null; - } - - public boolean isModify() { - return modify; - } - - public void setModify(boolean modify) { - Object oldValue = isModify(); - this.modify = modify; - firePropertyChange(PROPERTY_MODIFY, oldValue, modify); - } - - public boolean isValid() { - return valid; - } - - public void setValid(boolean valid) { - Object oldValue = isValid(); - this.valid = valid; - firePropertyChange(PROPERTY_VALID, oldValue, valid); - } - - public boolean isCreate() { - return id == null; - } -} Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -1,623 +0,0 @@ -package fr.ifremer.tutti.ui.swing; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 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.google.common.base.Preconditions; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; -import fr.ifremer.tutti.persistence.entities.IdAware; -import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig; -import fr.ifremer.tutti.ui.swing.util.Cancelable; -import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; -import fr.ifremer.tutti.ui.swing.util.UIMessageNotifier; -import fr.ifremer.tutti.ui.swing.util.editor.SimpleTimeEditor; -import jaxx.runtime.JAXXUtil; -import jaxx.runtime.SwingUtil; -import jaxx.runtime.swing.editor.NumberEditor; -import jaxx.runtime.swing.editor.bean.BeanComboBox; -import jaxx.runtime.swing.editor.bean.BeanDoubleList; -import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; -import jaxx.runtime.validator.swing.SwingValidator; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang3.reflect.ConstructorUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.jdesktop.swingx.JXDatePicker; -import org.nuiton.util.decorator.Decorator; -import org.nuiton.util.decorator.JXPathDecorator; -import org.nuiton.validator.bean.simple.SimpleBeanValidator; - -import javax.swing.AbstractAction; -import javax.swing.AbstractButton; -import javax.swing.Action; -import javax.swing.DefaultComboBoxModel; -import javax.swing.JComponent; -import javax.swing.JDialog; -import javax.swing.JLabel; -import javax.swing.JList; -import javax.swing.JOptionPane; -import javax.swing.JRootPane; -import javax.swing.JTextField; -import javax.swing.KeyStroke; -import javax.swing.ListCellRenderer; -import javax.swing.ListSelectionModel; -import javax.swing.event.ListSelectionEvent; -import javax.swing.text.JTextComponent; -import java.awt.Color; -import java.awt.Component; -import java.awt.Dimension; -import java.awt.Font; -import java.awt.Frame; -import java.awt.event.ActionEvent; -import java.awt.event.FocusAdapter; -import java.awt.event.FocusEvent; -import java.awt.event.ItemEvent; -import java.awt.event.KeyEvent; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.io.Serializable; -import java.text.ParseException; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.logging.Level; -import java.util.logging.Logger; - -import static org.nuiton.i18n.I18n._; - -/** - * Contract of any UI handler. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public abstract class AbstractTuttiUIHandler<M, UI extends TuttiUI<M, ?>> implements UIMessageNotifier { - - /** Logger. */ - private static final Log log = - LogFactory.getLog(AbstractTuttiUIHandler.class); - - public abstract void beforeInitUI(); - - public abstract void afterInitUI(); - - public abstract void onCloseUI(); - - public abstract SwingValidator<M> getValidator(); - - /** - * Global application context. - * - * @since 0.1 - */ - protected final TuttiUIContext context; - - /** - * UI handled. - * - * @since 0.1 - */ - protected final UI ui; - - protected AbstractTuttiUIHandler(TuttiUIContext context, UI ui) { - this.context = context; - this.ui = ui; - } - - //------------------------------------------------------------------------// - //-- Public methods --// - //------------------------------------------------------------------------// - - public DefaultComboBoxModel newComboModel(Object... items) { - return new DefaultComboBoxModel(items); - } - - public DefaultComboBoxModel newComboActionModel(Class<? extends AbstractTuttiAction>... actionNames) { - List<Object> items = Lists.newArrayListWithCapacity(actionNames.length); - for (Class<? extends AbstractTuttiAction> actionName : actionNames) { - Action action = createAction(actionName); - items.add(action); - } - return new DefaultComboBoxModel(items.toArray()); - } - - public final M getModel() { - return ui.getModel(); - } - - public final UI getUI() { - return ui; - } - - @Override - public void showInformationMessage(String message) { - context.showInformationMessage(message); - } - - public TuttiUIContext getContext() { - return context; - } - - public TuttiApplicationConfig getConfig() { - return context.getConfig(); - } - - /** - * Can the UI be closed? It is useful whe the user wants to exit the current - * screen but the model is modified: we can then ask the user if he wants to - * save or not. - * - * @param nextScreen the next screen to display - * @return {@code true} if UI can be closed, {@code false} otherwise. - */ - public boolean canCloseUI(TuttiScreen nextScreen) { - return true; - } - - public void setText(KeyEvent event, String property) { - JTextComponent field = (JTextComponent) event.getSource(); - String value = field.getText(); - TuttiUIUtil.setProperty(getModel(), property, value); - } - - public void setBoolean(ItemEvent event, String property) { - boolean value = event.getStateChange() == ItemEvent.SELECTED; - TuttiUIUtil.setProperty(getModel(), property, value); - } - - public void setDate(ActionEvent event, String property) { - JXDatePicker field = (JXDatePicker) event.getSource(); - Date value = field.getDate(); - TuttiUIUtil.setProperty(getModel(), property, value); - } - - public void selectListData(ListSelectionEvent event, String property) { - if (!event.getValueIsAdjusting()) { - JList list = (JList) event.getSource(); - ListSelectionModel selectionModel = list.getSelectionModel(); - - selectionModel.setValueIsAdjusting(true); - try { - List selectedList = Lists.newLinkedList(); - - for (int index : list.getSelectedIndices()) { - Object o = list.getModel().getElementAt(index); - selectedList.add(o); - } - TuttiUIUtil.setProperty(getModel(), property, selectedList); - } finally { - selectionModel.setValueIsAdjusting(false); - } - } - } - - public void openDialog(TuttiUI ui, - TuttiUI dialogContent, - String title, Dimension dim) { - Frame frame = SwingUtil.getParentContainer(ui, Frame.class); - - JDialog result = new JDialog(frame, true); - result.setTitle(title); - result.add((Component) dialogContent); - result.setResizable(true); - - result.setSize(dim); - - final AbstractTuttiUIHandler handler = dialogContent.getHandler(); - - if (handler instanceof Cancelable) { - - // add a auto-close action - JRootPane rootPane = result.getRootPane(); - - KeyStroke shortcutClosePopup = getConfig().getShortcutClosePopup(); - - rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put( - shortcutClosePopup, "close"); - rootPane.getActionMap().put("close", new AbstractAction() { - private static final long serialVersionUID = 1L; - - @Override - public void actionPerformed(ActionEvent e) { - ((Cancelable) handler).cancel(); - } - }); - } - - result.addWindowListener(new WindowAdapter() { - - @Override - public void windowClosed(WindowEvent e) { - Component ui = (Component) e.getSource(); - if (log.isInfoEnabled()) { - log.info("Destroy ui " + ui); - } - JAXXUtil.destroy(ui); - } - }); - SwingUtil.center(frame, result); - result.setVisible(true); - } - - public void closeDialog(TuttiUI ui) { - SwingUtil.getParentContainer(ui, JDialog.class).setVisible(false); - } - - public int askSaveBeforeLeaving(String message) { - int i = JOptionPane.showConfirmDialog( - getContext().getMainUI(), - message, - _("tutti.dialog.askSaveBeforeLeaving.title"), - JOptionPane.YES_NO_CANCEL_OPTION); - return i; - } - - public int askCancelEditBeforeLeaving(String message) { - int i = JOptionPane.showConfirmDialog( - getContext().getMainUI(), - message, - _("tutti.dialog.askCancelEditBeforeLeaving.title"), - JOptionPane.YES_NO_OPTION); - return i; - } - //------------------------------------------------------------------------// - //-- Internal methods --// - //------------------------------------------------------------------------// - - protected void initUI(TuttiUI ui) { - - for (Map.Entry<String, Object> entry : ui.get$objectMap().entrySet()) { - Object component = entry.getValue(); - if (component instanceof NumberEditor) { - initNumberEditor((NumberEditor) component); - - } else if (component instanceof JXDatePicker) { - initDatePicker((JXDatePicker) component); - - } else if (component instanceof SimpleTimeEditor) { - initTimeEditor((SimpleTimeEditor) component); - - } else if (component instanceof JLabel) { - JLabel jLabel = (JLabel) component; - Boolean strongStyle = (Boolean) jLabel.getClientProperty("strongStyle"); - Boolean italicStyle = (Boolean) jLabel.getClientProperty("italicStyle"); - boolean addHtml = strongStyle != null && strongStyle || italicStyle != null && italicStyle; - if (addHtml) { - String text = jLabel.getText(); - if (strongStyle != null && strongStyle) { - text = "<strong>" + text + "</strong>"; - } - if (italicStyle != null && italicStyle) { - text = "<em>" + text + "</em>"; - } - jLabel.setText("<html>" + text + "</html>"); - } - - } else if (component instanceof JTextField) { - JTextField jTextField = (JTextField) component; - Boolean computed = (Boolean) jTextField.getClientProperty("computed"); - if (computed != null && computed) { - Font font = jTextField.getFont().deriveFont(Font.ITALIC); - jTextField.setFont(font); - jTextField.setEditable(!computed); - jTextField.setEnabled(!computed); - jTextField.setDisabledTextColor(Color.BLUE); - } - - } else if (component instanceof AbstractButton) { - AbstractButton abstractButton = (AbstractButton) component; - Class<? extends AbstractTuttiAction> actionName = (Class<? extends AbstractTuttiAction>) abstractButton.getClientProperty("tuttiAction"); - if (actionName != null) { - initAction(abstractButton, actionName); - } - } - } - } - - protected void initAction(AbstractButton abstractButton, - Class<? extends AbstractTuttiAction> actionName) { - Action action = createAction(actionName); - abstractButton.setAction(action); - } - - protected <A extends AbstractTuttiAction> A createAction(Class<A> actionName) { - A action = null; - if (actionName != null) { - try { - - AbstractTuttiUIHandler handler = this; - - if (AbstractMainUITuttiAction.class.isAssignableFrom(actionName) && - getContext().getMainUI() != null) { - handler = getContext().getMainUI().getHandler(); - } - - action = (A) ConstructorUtils.invokeConstructor( - actionName, handler); - } catch (Exception e) { - throw new RuntimeException( - "Could not instanciate action " + actionName, e); - } - } - return action; - } - - protected void doAction(AbstractButton button, ActionEvent event) { - button.getAction().actionPerformed(event); - } - - protected void registerValidators(SwingValidator... validators) { - MainUI main = context.getMainUI(); - Preconditions.checkNotNull( - main, "No mainUI registred in application context"); - MainUIHandler handler = main.getHandler(); - handler.clearValidators(); - for (SwingValidator validator : validators) { - handler.registerValidator(validator); - } - } - - public void clearValidators() { - MainUI main = context.getMainUI(); - Preconditions.checkNotNull( - main, "No mainUI registred in application context"); - MainUIHandler handler = main.getHandler(); - handler.clearValidators(); - } - - - /** - * Prépare un component de choix d'entités pour un type d'entité donné et - * pour un service de persistance donné. - * - * @param comboBox le component graphique à initialiser - */ - protected <E extends Serializable> void initBeanComboBox( - BeanComboBox<E> comboBox, - List<E> data, - E selectedData) { - - initBeanComboBox(comboBox, data, selectedData, null); - } - - protected <E extends Serializable> void initBeanComboBox( - BeanComboBox<E> comboBox, - List<E> data, - E selectedData, - String decoratorContext) { - - Preconditions.checkNotNull(comboBox, "No comboBox!"); - - Class<E> beanType = comboBox.getBeanType(); - - Preconditions.checkNotNull(beanType, "No beanType on the combobox!"); - - Decorator<E> decorator = getDecorator(beanType, decoratorContext); - - if (data == null) { - data = Lists.newArrayList(); - } - - if (log.isInfoEnabled()) { - log.info("entity comboBox list [" + beanType.getName() + "] : " + - (data == null ? 0 : data.size())); - } - - // add data list to combo box - comboBox.init((JXPathDecorator<E>) decorator, data); - - comboBox.setSelectedItem(selectedData); - - if (log.isDebugEnabled()) { - log.debug("combo [" + beanType.getName() + "] : " + - comboBox.getData().size()); - } - } - - /** - * Prépare un component de choix d'entités pour un type d'entité donné et - * pour un service de persistance donné. - * - * @param list le component graphique à initialiser - * @param data la liste des données à mettre dans la liste de gauche - * @param selectedData la liste des données à mettre dans la liste de droite - */ - protected <E extends IdAware> void initBeanList( - BeanDoubleList<E> list, - List<E> data, - List<E> selectedData) { - - Preconditions.checkNotNull(list, "No list!"); - - Class<E> beanType = list.getBeanType(); - Preconditions.checkNotNull(beanType, "No beanType on the double list!"); - - DecoratorService decoratorService = - context.getService(DecoratorService.class); - Decorator<E> decorator = decoratorService.getDecoratorByType(beanType); - - if (log.isInfoEnabled()) { - log.info("entity list [" + beanType.getName() + "] : " + - (data == null ? 0 : data.size())); - } - - // add data list to combo box - list.init((JXPathDecorator<E>) decorator, data, selectedData); - - if (log.isDebugEnabled()) { - log.debug("Jlist [" + beanType.getName() + "] : " + - list.getUniverseList().getModel().getSize()); - } - } - - protected void initNumberEditor(NumberEditor editor) { - if (log.isDebugEnabled()) { - log.debug("init number editor " + editor.getName()); - } - editor.init(); - - // Force binding if value is already in model - Number model = editor.getModel(); - if (model != null) { - editor.setModel(null); - editor.setModel(model); - } - } - - protected void initTimeEditor(SimpleTimeEditor editor) { - if (log.isDebugEnabled()) { - log.debug("init time editor " + editor.getName() + - " for property " + editor.getModel().getProperty()); - } - editor.init(); - } - - protected void initDatePicker(final JXDatePicker picker) { - - if (log.isDebugEnabled()) { - log.debug("disable JXDatePicker editor" + picker.getName()); - } - String dateFormat = getConfig().getDateFormat(); - picker.setFormats(dateFormat); - picker.getEditor().addFocusListener(new FocusAdapter() { - - @Override - public void focusLost(FocusEvent e) { - try { - picker.commitEdit(); - - } catch (ParseException ex) { - if (log.isDebugEnabled()) { - log.debug("format error", ex); - } - } - } - - }); - } - - public <O> Decorator<O> getDecorator(Class<O> type, String name) { - DecoratorService decoratorService = - context.getService(DecoratorService.class); - - Preconditions.checkNotNull(type); - - Decorator decorator = decoratorService.getDecoratorByType(type, name); - if (decorator == null) { - - if (DecoratorService.LabelAware.class.isAssignableFrom(type)) { - decorator = getDecorator(DecoratorService.LabelAware.class, null); - } - } - Preconditions.checkNotNull(decorator); - return decorator; - } - - protected String decorate(Object object) { - String result = ""; - if (object != null) { - getDecorator(object.getClass(), null).toString(object); - } - return result; - } - - protected <O> ListCellRenderer newListCellRender(Class<O> type) { - - return newListCellRender(type, null); - } - - protected <O> ListCellRenderer newListCellRender(Class<O> type, String name) { - - Decorator<O> decorator = getDecorator(type, name); - return newListCellRender(decorator); - } - - protected <O> ListCellRenderer newListCellRender(Decorator<O> decorator) { - - Preconditions.checkNotNull(decorator); - - ListCellRenderer result = new DecoratorListCellRenderer(decorator); - return result; - } - - protected void listenValidatorValid(SimpleBeanValidator validator, - final AbstractTuttiBeanUIModel model) { - validator.addPropertyChangeListener(SimpleBeanValidator.VALID_PROPERTY, new PropertyChangeListener() { - @Override - public void propertyChange(PropertyChangeEvent evt) { - if (log.isDebugEnabled()) { - log.debug("Model [" + model + - "] pass to valid state [" + - evt.getNewValue() + "]"); - } - model.setValid((Boolean) evt.getNewValue()); - } - }); - } - - protected void listModelIsModify(AbstractTuttiBeanUIModel model) { - model.addPropertyChangeListener(new PropertyChangeListener() { - - final Set<String> excludeProperties = getPropertiesToIgnore(); - - @Override - public void propertyChange(PropertyChangeEvent evt) { - if (!excludeProperties.contains(evt.getPropertyName())) { - ((AbstractTuttiBeanUIModel) evt.getSource()).setModify(true); - } - } - }); - } - - protected Set<String> getPropertiesToIgnore() { - return Sets.newHashSet( - AbstractTuttiBeanUIModel.PROPERTY_MODIFY, - AbstractTuttiBeanUIModel.PROPERTY_VALID); - } - - public <B> void selectFirstInCombo(BeanComboBox<B> combo) { - List<B> data = combo.getData(); - B selectedItem = null; - if (CollectionUtils.isNotEmpty(data)) { - selectedItem = data.get(0); - } - combo.setSelectedItem(selectedItem); - } - - protected void closeUI(TuttiUI ui) { - ui.getHandler().onCloseUI(); - } - - protected <B> void changeValidatorContext(String newContext, - SwingValidator<B> validator) { - B bean = validator.getBean(); - validator.setContext(newContext); - validator.setBean(bean); - } -} Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,8 +28,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -40,14 +38,11 @@ */ public class EditSelectedCruiseAction extends AbstractChangeScreenAction { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(EditSelectedCruiseAction.class); public EditSelectedCruiseAction(MainUIHandler handler) { super(handler, - "editCruise", "cruise", _("tutti.action.editSelectedCruise"), _("tutti.action.editSelectedCruise.tip"), @@ -56,7 +51,7 @@ } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { Preconditions.checkState(getContext().isCruiseFilled()); if (log.isInfoEnabled()) { log.info("Edit cruise: " + getContext().getCruiseId()); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedCruiseCatchesAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,8 +26,6 @@ import com.google.common.base.Preconditions; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -38,21 +36,18 @@ */ public class EditSelectedCruiseCatchesAction extends AbstractChangeScreenAction { - private static final long serialVersionUID = 1L; - public EditSelectedCruiseCatchesAction(MainUIHandler handler) { super(handler, - "editCatches", "edit", _("tutti.action.editCatches"), _("tutti.action.editCatches.tip"), true ); - setMnemonic('C'); +// setMnemonic('C'); } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { Preconditions.checkState(getContext().isCruiseFilled()); getContext().setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_EDIT); getContext().setScreen(null); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProgramAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,8 +28,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -40,14 +38,11 @@ */ public class EditSelectedProgramAction extends AbstractChangeScreenAction { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(EditSelectedProgramAction.class); public EditSelectedProgramAction(MainUIHandler handler) { super(handler, - "editProgram", "program", _("tutti.action.editSelectedProgram"), _("tutti.action.editSelectedProgram.tip"), @@ -56,7 +51,7 @@ } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { Preconditions.checkState(getContext().getProgramId() != null); if (log.isInfoEnabled()) { log.info("Edit program: " + getContext().getProgramId()); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/EditSelectedProtocolAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,8 +28,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -40,24 +38,21 @@ */ public class EditSelectedProtocolAction extends AbstractChangeScreenAction { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(EditSelectedProtocolAction.class); public EditSelectedProtocolAction(MainUIHandler handler) { super(handler, - "editProtocol", "protocol", _("tutti.action.editSelectedProtocol"), _("tutti.action.editSelectedProtocol.tip"), true ); - setMnemonic('P'); +// setMnemonic('P'); } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { Preconditions.checkState(getContext().isProtocolFilled()); if (log.isInfoEnabled()) { log.info("Edit protocol: " + getContext().getProtocolId()); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ImportTemporaryReferentialAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ImportTemporaryReferentialAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ImportTemporaryReferentialAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,7 +28,6 @@ import org.apache.commons.logging.LogFactory; import javax.swing.SwingUtilities; -import java.awt.event.ActionEvent; import static org.nuiton.i18n.I18n._; @@ -40,15 +39,12 @@ */ public class ImportTemporaryReferentialAction extends AbstractChangeScreenAction { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ImportTemporaryReferentialAction.class); public ImportTemporaryReferentialAction(MainUIHandler handler) { super(handler, - "importTemporaryReferential", "temporary-referential-import", _("tutti.action.importTemporaryReferential"), _("tutti.action.importTemporaryReferential.tip"), @@ -57,7 +53,7 @@ } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { getContext().setScreen(getNextScreen()); SwingUtilities.invokeLater(new Runnable() { @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,7 +22,7 @@ #L% --> <JFrame id='mainFrame' onWindowClosing='getHandler().closeTutti()' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<TuttiUIContext, MainUIHandler>' + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<TuttiUIContext, MainUIHandler>' width='800' height='600'> <import> 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-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/MainUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -38,7 +38,10 @@ import fr.ifremer.tutti.ui.swing.content.program.EditProgramUI; import fr.ifremer.tutti.ui.swing.content.protocol.EditProtocolUI; import fr.ifremer.tutti.ui.swing.content.referential.ManageTemporaryReferentialUI; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.action.TuttiActionUI; +import fr.ifremer.tutti.ui.swing.util.action.TuttiUIAction; import jaxx.runtime.swing.AboutPanel; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; @@ -75,7 +78,7 @@ protected MainUIHandler(TuttiUIContext context, MainUI ui) { super(context, ui); - this.persistenceService = context.getService(PersistenceService.class); + this.persistenceService = context.getPersistenceService(); context.setMainUI(ui); context.setActionUI(new TuttiActionUI(ui, context)); } @@ -135,7 +138,7 @@ } else { // open tutti db - OpenDbAction openDbAction = createAction(OpenDbAction.class); + TuttiUIAction<OpenDbAction> openDbAction = createAction(OpenDbAction.class); openDbAction.actionPerformed(null); } } @@ -419,10 +422,10 @@ } } catch (Exception e) { - AbstractTuttiAction mainAction = AbstractTuttiAction.getMainAction(); - if (mainAction != null) { - mainAction.setFailed(true); - } +// AbstractTuttiAction mainAction = AbstractTuttiAction.getMainAction(); +// if (mainAction != null) { +// mainAction.setFailed(true); +// } TuttiUIContext.getErrorHelper().showErrorDialog( "Could not change to screen " + screen, e); @@ -446,61 +449,56 @@ if (context.isDbLoaded()) { - String programId = context.getProgramId(); + if (context.isProgramFilled()) { - if (programId == null) { - - // no program selected (so neither cruise) - - title = _("tutti.title.noSelectedProgram"); - - } else { - // selected program - Program program = persistenceService.getProgram(programId); + Program program = getDataContext().getProgram(); title = _("tutti.title.selectedProgram", program.getName()) + " / "; - String cruiseId = context.getCruiseId(); + if (context.isCruiseFilled()) { - if (cruiseId == null) { - - // no selected cruise - - title += _("tutti.title.noSelectedCruise"); - - } else { - // selected cruise Cruise cruise; - cruise = persistenceService.getCruise(cruiseId); + cruise = getDataContext().getCruise(); if (cruise != null) { - title += _("tutti.title.selectedCruise", cruise.getName()); + title += _("tutti.title.selectedCruise", cruise.getName()); } + } else { + + // no selected cruise + + title += _("tutti.title.noSelectedCruise"); } title += " / "; - String protocolId = context.getProtocolId(); + if (context.isProtocolFilled()) { - if (protocolId == null) { + // selected protocol + TuttiProtocol protocol = getDataContext().getProtocol(); + title += _("tutti.title.selectedProtocol", protocol.getName()); + } else { + // no selected protocol title += _("tutti.title.noSelectedProtocol"); + } - } else { + } else { - // selected protocol - TuttiProtocol protocol = persistenceService.getProtocol(protocolId); + // no program selected (so neither cruise) - title += _("tutti.title.selectedProtocol", protocol.getName()); - } + title = _("tutti.title.noSelectedProgram"); } } else { + + // no db loaded + title = _("tutti.title.nodb"); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ManageDbAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ManageDbAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ManageDbAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,8 +27,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -39,24 +37,21 @@ */ public class ManageDbAction extends AbstractChangeScreenAction { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ManageDbAction.class); public ManageDbAction(MainUIHandler handler) { super(handler, - "mnanageDb", "manage-db", _("tutti.action.manageDb"), _("tutti.action.manageDb.tip"), true ); - setMnemonic('P'); +// setMnemonic('P'); } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { if (log.isDebugEnabled()) { log.debug("open manage db screen"); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/RunTutti.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,6 +25,7 @@ */ import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig; +import fr.ifremer.tutti.ui.swing.util.TuttiExceptionHandler; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -77,7 +78,7 @@ MainUIHandler handler = new MainUIHandler(context); // try to update jre - i18n - application and exit if so - new UpdateApplicationAction(handler).doAction(null); + new UpdateApplicationAction(handler).performAndReleaseAction(); // try to update db // new UpdateReferentialAction(handler).doAction(null); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/SelectCruiseAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -24,8 +24,6 @@ * #L% */ -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -36,21 +34,18 @@ */ public class SelectCruiseAction extends AbstractChangeScreenAction { - private static final long serialVersionUID = 1L; - public SelectCruiseAction(MainUIHandler handler) { super(handler, - "selectCruise", "home", _("tutti.action.selectCruise"), _("tutti.action.selectCruise.tip"), true ); - setMnemonic('S'); +// setMnemonic('S'); } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { // Preconditions.checkNotNull(getContext().isCruiseFilled()); getContext().setScreen(getNextScreen()); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiApplicationUpdaterCallBack.java 2013-03-01 20:37:07 UTC (rev 512) @@ -306,7 +306,7 @@ if (log.isInfoEnabled()) { log.info(String.format("A database update was downloaded (oldVersion: %s, newVersion: %s), will launch a referential synchronize operation ", info.oldVersion, info.newVersion)); } - TuttiReferentialSynchronizeService service = context.getService(TuttiReferentialSynchronizeService.class); + TuttiReferentialSynchronizeService service = context.getTuttiReferentialSynchronizeService(); ReferentialSynchronizeResult result = new ReferentialSynchronizeResult(); File dbDirectory = getDbDirectory(info); @@ -328,7 +328,7 @@ if (log.isInfoEnabled()) { log.info("Reset all caches."); } - PersistenceService persistence = context.getService(PersistenceService.class); + PersistenceService persistence = context.getPersistenceService(); persistence.clearAllCaches(); // replace the version.appup file content Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiDataContext.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiDataContext.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiDataContext.java 2013-03-01 20:37:07 UTC (rev 512) @@ -0,0 +1,252 @@ +package fr.ifremer.tutti.ui.swing; + +import com.google.common.base.Preconditions; +import fr.ifremer.tutti.persistence.entities.data.Cruise; +import fr.ifremer.tutti.persistence.entities.data.Program; +import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; +import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; +import fr.ifremer.tutti.persistence.entities.referential.Gear; +import fr.ifremer.tutti.persistence.entities.referential.Person; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import fr.ifremer.tutti.persistence.entities.referential.Vessel; +import fr.ifremer.tutti.service.PersistenceService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.Closeable; +import java.util.List; + +/** + * Data context of ui. + * <p/> + * All shared data must be there to avoid reloading some stuff. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0.2 + */ +public class TuttiDataContext implements Closeable { + + /** Logger. */ + private static final Log log = LogFactory.getLog(TuttiDataContext.class); + + protected Program program; + + protected Cruise cruise; + + protected TuttiProtocol protocol; + + protected List<Caracteristic> caracteristics; + + protected List<Person> persons; + + protected List<Species> species; + + protected List<Species> referentSpecies; + + protected List<Vessel> fishingVessels; + + protected List<Vessel> scientificVessels; + + protected List<Gear> fishingGears; + + protected List<Gear> scientificGears; + + protected PersistenceService service; + + protected final TuttiUIContext uiContext; + + public TuttiDataContext(TuttiUIContext uiContext) { + this.uiContext = uiContext; + this.uiContext.addPropertyChangeListener(TuttiUIContext.PROPERTY_PROGRAM_ID, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + program = null; + } + }); + this.uiContext.addPropertyChangeListener(TuttiUIContext.PROPERTY_CRUISE_ID, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + cruise = null; + } + }); + this.uiContext.addPropertyChangeListener(TuttiUIContext.PROPERTY_PROTOCOL_ID, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + protocol = null; + } + }); + } + + public Program getProgram() { + checkOpened(); + if (program == null) { + if (uiContext.isProgramFilled()) { + String id = uiContext.getProgramId(); + if (log.isInfoEnabled()) { + log.info("Loading program: " + id); + } + program = service.getProgram(id); + } + } + return program; + } + + public Cruise getCruise() { + checkOpened(); + if (cruise == null) { + if (uiContext.isCruiseFilled()) { + String id = uiContext.getCruiseId(); + if (log.isInfoEnabled()) { + log.info("Loading cruise: " + id); + } + cruise = service.getCruise(id); + } + } + return cruise; + } + + public TuttiProtocol getProtocol() { + checkOpened(); + if (protocol == null) { + if (uiContext.isProtocolFilled()) { + String id = uiContext.getProtocolId(); + if (log.isInfoEnabled()) { + log.info("Loading cruise: " + id); + } + protocol = service.getProtocol(id); + } + } + return protocol; + } + + public List<Caracteristic> getCaracteristics() { + if (caracteristics == null) { + if (log.isInfoEnabled()) { + log.info("Loading allCaracteristic"); + } + caracteristics = service.getAllCaracteristic(); + } + return caracteristics; + } + + public List<Species> getSpecies() { + if (species == null) { + if (log.isInfoEnabled()) { + log.info("Loading allSpecies"); + } + species = service.getAllSpecies(); + } + return species; + } + + public List<Species> getReferentSpecies() { + if (referentSpecies == null) { + if (log.isInfoEnabled()) { + log.info("Loading allReferentSpecies"); + } + referentSpecies = service.getAllReferentSpecies(); + } + return referentSpecies; + } + + public List<Person> getPersons() { + checkOpened(); + if (persons == null) { + if (log.isInfoEnabled()) { + log.info("Loading allPerson"); + } + persons = service.getAllPerson(); + } + return persons; + } + + public List<Vessel> getFishingVessels() { + checkOpened(); + if (fishingVessels == null) { + if (log.isInfoEnabled()) { + log.info("Loading allfishingVessel"); + } + fishingVessels = service.getAllFishingVessel(); + } + return fishingVessels; + } + + public List<Vessel> getScientificVessels() { + checkOpened(); + if (scientificVessels == null) { + if (log.isInfoEnabled()) { + log.info("Loading allScientificVessel"); + } + scientificVessels = service.getAllScientificVessel(); + } + return scientificVessels; + } + + public List<Gear> getFishingGears() { + checkOpened(); + if (fishingGears == null) { + if (log.isInfoEnabled()) { + log.info("Loading allFishingGear"); + } + fishingGears = service.getAllFishingGear(); + } + return fishingGears; + } + + public List<Gear> getScientificGears() { + checkOpened(); + if (scientificGears == null) { + if (log.isInfoEnabled()) { + log.info("Loading allScientificGear"); + } + scientificGears = service.getAllScientificGear(); + } + return scientificGears; + } + + public void open(PersistenceService persistenceService) { + close(); + this.service = persistenceService; + } + + @Override + public void close() { + service = null; + program = null; + cruise = null; + program = null; + resetVessels(); + resetGears(); + resetPersons(); + resetSpecies(); + } + + public void resetGears() { + fishingGears = null; + scientificGears = null; + } + + public void resetVessels() { + fishingVessels = null; + scientificVessels = null; + } + + public void resetPersons() { + persons = null; + } + + public void resetSpecies() { + species = null; + referentSpecies = null; + } + + public void resetCaracteristics() { + caracteristics = null; + } + + protected void checkOpened() { + Preconditions.checkState(service != null, "No persistence service assigned!"); + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiDataContext.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiErrorHelper.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiErrorHelper.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiErrorHelper.java 2013-03-01 20:37:07 UTC (rev 512) @@ -1,90 +0,0 @@ -package fr.ifremer.tutti.ui.swing; - -/* - * #%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.service.TuttiBusinessException; -import org.jdesktop.swingx.JXErrorPane; -import org.jdesktop.swingx.error.ErrorInfo; -import org.jdesktop.swingx.error.ErrorReporter; - -import javax.swing.JOptionPane; - -import static org.nuiton.i18n.I18n._; - -/** - * TODO - * - * @author tchemit <chemit@codelutin.com> - * @since 1.0 - */ -public class TuttiErrorHelper implements ErrorReporter { - - protected TuttiUIContext context; - - public TuttiErrorHelper(TuttiUIContext context) { - this.context = context; - } - - /** - * Display a user friendly error frame. - * - * @param message message for user - * @param cause exception cause - */ - public void showErrorDialog(String message, Throwable cause) { - - if (cause instanceof TuttiBusinessException) { - JOptionPane.showMessageDialog(context.getMainUI(), cause.getMessage(), - _("tutti.ui.common.error"), - JOptionPane.ERROR_MESSAGE); - } else { - - JXErrorPane pane = new JXErrorPane(); - ErrorInfo info = new ErrorInfo(_("tutti.common.error"), - _("tutti.error.errorpane.htmlmessage", message), null, null, - cause, null, null); - pane.setErrorInfo(info); - pane.setErrorReporter(this); - JXErrorPane.showDialog(context.getMainUI(), pane); - } - - } - - /** - * Display a user friendly error frame. - * - * @param message message for user - */ - public void showErrorDialog(String message) { - showErrorDialog(message, null); - } - - @Override - public void reportError(ErrorInfo errorInfo) throws NullPointerException { - - showErrorDialog(errorInfo.getBasicErrorMessage(), errorInfo.getErrorException()); - } - -} Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiExceptionHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiExceptionHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiExceptionHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -1,132 +0,0 @@ -package fr.ifremer.tutti.ui.swing; - -/* - * #%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.service.TuttiTechnicalException; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * Tutti global exception handler. - * <p/> - * Catch all application uncaught and display it in a custom JoptionPane - * or JXErrorPane. - * <p/> - * See http://stackoverflow.com/a/4448569/1165234 for details. - * - * @author tchemit <chemit@codelutin.com> - * @since 1.0 - */ -public class TuttiExceptionHandler implements Thread.UncaughtExceptionHandler { - - private static final Log log = - LogFactory.getLog(TuttiExceptionHandler.class); - - public static class TuttiActionException extends RuntimeException { - - private static final long serialVersionUID = 1L; - - private final AbstractTuttiAction action; - - public TuttiActionException(AbstractTuttiAction action, - Throwable cause) { - super(cause); - this.action = action; - } - - public AbstractTuttiAction getAction() { - return action; - } - } - - @Override - public void uncaughtException(Thread t, Throwable ex) { - handleException(t.getName(), ex); - } - - public void handle(Throwable thrown) { - // for EDT exceptions - handleException(Thread.currentThread().getName(), thrown); - } - - protected void handleException(String tname, Throwable ex) { - if (log.isErrorEnabled()) { - log.error("Global application exception [" + tname + "]", ex); - } - - Throwable cause = ex; - - if (cause instanceof NullPointerException) { - - // See http://forge.codelutin.com/issues/2055 - if (ex.getStackTrace().length > 0 && - ex.getStackTrace()[0].getClassName().contains("swing.")) { - if (log.isWarnEnabled()) { - log.warn("AWT bad error (See http://forge.codelutin.com/issues/2055)", ex); - } - return; - } - } - - if (cause instanceof IndexOutOfBoundsException) { - // See http://forge.codelutin.com/issues/2055 - if (ex.getStackTrace().length > 0 && - "convertRowIndexToModel".equals(ex.getStackTrace()[0].getMethodName())) { - if (log.isWarnEnabled()) { - log.warn("AWT bad error (See http://forge.codelutin.com/issues/2055)", ex); - } - return; - } - } - if (cause instanceof TuttiTechnicalException) { - cause = cause.getCause(); - } - - boolean backToScreen = false; - - AbstractTuttiAction action = null; - if (cause instanceof TuttiActionException) { - - TuttiActionException actionException = (TuttiActionException) cause; - cause = cause.getCause(); - - // close action ui - - action = actionException.getAction(); - - if (action instanceof AbstractChangeScreenAction) { - backToScreen = true; - } - action.getContext().getActionUI().getModel().setAction(null); - } - - TuttiUIContext.getErrorHelper().showErrorDialog(cause.getMessage(), ex); - - if (backToScreen) { - action.getContext().setScreen(TuttiScreen.SELECT_CRUISE); - } - } - -} Deleted: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java 2013-03-01 20:37:07 UTC (rev 512) @@ -1,135 +0,0 @@ -package fr.ifremer.tutti.ui.swing; - -/* - * #%L - * Tutti :: UI - * $Id$ - * $HeadURL$ - * %% - * Copyright (C) 2012 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 jaxx.runtime.JAXXObject; - -import javax.swing.UIManager; -import java.awt.Font; - -/** - * Contract to place on each generated jaxx ui. - * - * @author tchemit <chemit@codelutin.com> - * @since 0.1 - */ -public interface TuttiUI<M, H extends AbstractTuttiUIHandler<M, ?>> extends JAXXObject { - - M getModel(); - - H getHandler(); - - /** - * Pattern to use for short numeric values in editors with max 1 digits. - * - * @since 0.2 - */ - public static final String INT_1_DIGITS_PATTERN = "\\d{0,1}"; - - /** - * Pattern to use for short numeric values in editors with max 2 digits. - * - * @since 0.1 - */ - public static final String INT_2_DIGITS_PATTERN = "\\d{0,2}"; - - /** - * Pattern to use for signed numeric values in editors with max 2 digits. - * - * @since 1.0 - */ - public static final String SIGNED_INT_2_DIGITS_PATTERN = "-?\\d{0,2}"; - - /** - * Pattern to use for short numeric values in editors with max 3 digits. - * - * @since 0.1 - */ - public static final String INT_3_DIGITS_PATTERN = "\\d{0,3}"; - - /** - * Pattern to use for singed numeric values in editors with max 3 digits. - * - * @since 1.0 - */ - public static final String SIGNED_INT_3_DIGITS_PATTERN = "-?\\d{0,3}"; - - /** - * Pattern to use for short numeric values in editors with max 4 digits. - * - * @since 0.2 - */ - public static final String INT_4_DIGITS_PATTERN = "\\d{0,4}"; - - /** - * Pattern to use for integer numeric values in editors with max 6 digits. - * - * @since 0.1 - */ - public static final String INT_6_DIGITS_PATTERN = "\\d{0,6}"; - - /** - * Pattern to use for integer numeric values in editors with max 7 digits. - * - * @since 0.1 - */ - public static final String INT_7_DIGITS_PATTERN = "\\d{0,7}"; - - /** - * Pattern to use for decimal numeric values with 1 decimal digits in - * editors. - * - * @since 0.1 - */ - public static final String DECIMAL1_PATTERN = "\\d{0,6}|\\d{1,6}\\.\\d{0,1}"; - - /** - * Pattern to use for decimal numeric values with 2 decimal digits in - * editors. - * - * @since 0.1 - */ - public static final String DECIMAL2_PATTERN = "\\d{0,6}|\\d{1,6}\\.\\d{0,2}"; - - /** - * Pattern to use for decimal numeric values with 3 decimal digits in - * editors. - * - * @since 0.1 - */ - public static final String DECIMAL3_PATTERN = "\\d{0,6}|\\d{1,6}\\.\\d{0,3}"; - - /** - * Pattern to use for decimal numeric values with 2 digits + 3 decimal digits in - * editors. - * - * @since 1.0 - */ - public static final String DECIMAL2_3_PATTERN = "\\d{0,2}|\\d{1,2}\\.\\d{0,3}"; - - public static final Font TEXTFIELD_NORMAL_FONT = UIManager.getDefaults().getFont("TextField.font"); - - public static final Font TEXTFIELD_COMPUTED_FONT = UIManager.getDefaults().getFont("TextField.font").deriveFont(Font.ITALIC); -} Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUIContext.java 2013-03-01 20:37:07 UTC (rev 512) @@ -31,11 +31,15 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.service.ClosedPersistenceService; +import fr.ifremer.tutti.service.DecoratorService; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.service.TuttiService; import fr.ifremer.tutti.service.TuttiServiceContext; import fr.ifremer.tutti.service.TuttiTechnicalException; +import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService; +import fr.ifremer.tutti.service.referential.TuttiReferentialImportExportService; +import fr.ifremer.tutti.service.referential.TuttiReferentialSynchronizeService; import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig; +import fr.ifremer.tutti.ui.swing.util.TuttiErrorHelper; import fr.ifremer.tutti.ui.swing.util.UIMessageNotifier; import fr.ifremer.tutti.ui.swing.util.action.TuttiActionUI; import org.apache.commons.io.FileUtils; @@ -161,6 +165,13 @@ protected String protocolId; /** + * Shared data context. + * + * @since 1.0.2 + */ + protected TuttiDataContext dataContext; + + /** * Current screen displayed in ui. * * @since 0.1 @@ -221,6 +232,7 @@ this.serviceContext = new TuttiServiceContext(resourceLoader, config.getServiceConfig()); this.swingSession = new SwingSession(getConfig().getUIConfigFile(), false); this.errorHelper = new TuttiErrorHelper(this); + this.dataContext = new TuttiDataContext(this); UIMessageNotifier logMessageNotifier = new UIMessageNotifier() { @Override @@ -234,13 +246,41 @@ addMessageNotifier(logMessageNotifier); } - public <S extends TuttiService> S getService(Class<S> serviceType) { - if (PersistenceService.class.equals(serviceType) && !useRealPersistenceService()) { - serviceType = (Class<S>) ClosedPersistenceService.class; + public PersistenceService getPersistenceService() { + + PersistenceService service; + + if (useRealPersistenceService()) { + service = dataContext.service; + if (service == null) { + + // use real service + service = serviceContext.getService(PersistenceService.class); + + dataContext.open(service); + } + } else { + service = serviceContext.getService(ClosedPersistenceService.class); } - return serviceContext.getService(serviceType); + return service; } + public DecoratorService getDecoratorService() { + return serviceContext.getService(DecoratorService.class); + } + + public TuttiReferentialSynchronizeService getTuttiReferentialSynchronizeService() { + return serviceContext.getService(TuttiReferentialSynchronizeService.class); + } + + public TuttiProtocolImportExportService getTuttiProtocolImportExportService() { + return serviceContext.getService(TuttiProtocolImportExportService.class); + } + + public TuttiReferentialImportExportService getTuttiReferentialImportExportService() { + return serviceContext.getService(TuttiReferentialImportExportService.class); + } + public boolean useRealPersistenceService() { return isDbExist() && isDbLoaded(); } @@ -252,8 +292,9 @@ } catch (IOException e) { throw new TuttiTechnicalException("Could not close services", e); } + dataContext.close(); - return getService(PersistenceService.class); + return getPersistenceService(); } public TuttiApplicationConfig getConfig() { @@ -359,6 +400,10 @@ firePropertyChange(PROPERTY_SCREEN, oldValue, screen); } + public TuttiDataContext getDataContext() { + return dataContext; + } + public void init() { try { @@ -500,8 +545,7 @@ if (actionUI != null) { // close action ui - actionUI.getModel().setProgressionModel(null); - actionUI.getModel().setAction(null); + actionUI.getModel().clear(); } setActionUI(null); } @@ -558,7 +602,7 @@ public void checkDbContext() { //check if programId is sane - PersistenceService service = getService(PersistenceService.class); + PersistenceService service = getPersistenceService(); if (isProtocolFilled()) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateApplicationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateApplicationAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateApplicationAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,11 +26,11 @@ import fr.ifremer.tutti.persistence.ProgressionModel; import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.ApplicationUpdater; -import java.awt.event.ActionEvent; import java.io.File; import static org.nuiton.i18n.I18n._; @@ -43,15 +43,12 @@ */ public class UpdateApplicationAction extends AbstractTuttiAction<TuttiUIContext, MainUI, MainUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(UpdateApplicationAction.class); public UpdateApplicationAction(MainUIHandler handler) { super(handler, - "updateApplication", "update-application", _("tutti.action.updateApplication"), _("tutti.action.updateApplication.tip"), @@ -59,7 +56,7 @@ } @Override - protected void doAction(ActionEvent event) { + protected void doAction() { TuttiApplicationConfig config = getContext().getConfig(); @@ -95,7 +92,7 @@ dest, false, callback); - getContext().getActionUI().getModel().setProgressionModel(null); + getContext().getActionUI().getModel().clear(); } } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateReferentialAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateReferentialAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/UpdateReferentialAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -30,7 +30,6 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.util.ApplicationUpdater; -import java.awt.event.ActionEvent; import java.io.File; import static org.nuiton.i18n.I18n._; @@ -43,15 +42,12 @@ */ public class UpdateReferentialAction extends AbstractMainUITuttiAction { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(UpdateReferentialAction.class); public UpdateReferentialAction(MainUIHandler handler) { super(handler, - "updateReferential", "update-referential", _("tutti.action.updateReferential"), _("tutti.action.updateReferential.tip"), @@ -59,7 +55,7 @@ } @Override - protected void doAction(ActionEvent event) { + protected void doAction() { TuttiApplicationConfig config = getContext().getConfig(); File current = config.getDataDirectory(); @@ -94,10 +90,4 @@ sendMessage("Aucune mise à jour de base détectée."); } } - - @Override - protected void releaseAction(ActionEvent event) { - getContext().getActionUI().getModel().setProgressionModel(null); - super.releaseAction(event); - } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/ValidateSelectedCruiseCatchesAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,8 +26,6 @@ import com.google.common.base.Preconditions; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -38,11 +36,8 @@ */ public class ValidateSelectedCruiseCatchesAction extends AbstractChangeScreenAction { - private static final long serialVersionUID = 1L; - public ValidateSelectedCruiseCatchesAction(MainUIHandler handler) { super(handler, - "validateCatches", "validate", _("tutti.action.validateCatches"), _("tutti.action.validateCatches.tip"), @@ -51,7 +46,7 @@ } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { Preconditions.checkState(getContext().isCruiseFilled()); getContext().setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_VALIDATE); getContext().setScreen(null); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/CancelEditCruiseAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -24,11 +24,9 @@ * #L% */ -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -39,11 +37,8 @@ */ public class CancelEditCruiseAction extends AbstractTuttiAction<EditCruiseUIModel, EditCruiseUI, EditCruiseUIHandler> { - private static final long serialVersionUID = 1L; - public CancelEditCruiseAction(EditCruiseUIHandler handler) { super(handler, - "cancelEditCruise", "cancel", _("tutti.action.cancel.editCruise"), _("tutti.action.cancel.editCruise.tip"), @@ -52,7 +47,7 @@ } @Override - protected void doAction(ActionEvent event) { + protected void doAction() { getContext().setScreen(TuttiScreen.SELECT_CRUISE); } 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-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,7 +22,7 @@ #L% --> <JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<EditCruiseUIModel, EditCruiseUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<EditCruiseUIModel, EditCruiseUIHandler>'> <import> fr.ifremer.tutti.persistence.entities.data.Program @@ -30,7 +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.util.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext jaxx.runtime.swing.editor.NumberEditor 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-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -32,11 +32,9 @@ import fr.ifremer.tutti.persistence.entities.referential.Person; 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.TuttiScreen; -import fr.ifremer.tutti.ui.swing.TuttiUI; -import jaxx.runtime.JAXXUtil; -import jaxx.runtime.context.JAXXContextEntryDef; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -69,7 +67,7 @@ public EditCruiseUIHandler(TuttiUI parentUi, EditCruiseUI ui) { super(parentUi.getHandler().getContext(), ui); - persistenceService = context.getService(PersistenceService.class); + persistenceService = context.getPersistenceService(); } @Override @@ -79,26 +77,10 @@ // get vessels - List<Vessel> fishingVessels = persistenceService.getAllFishingVessel(); - FISHING_VESSELS_CONTEXT_ENTRY.setContextValue(ui, fishingVessels); + if (!context.isCruiseFilled()) { - List<Vessel> scientificVessels = persistenceService.getAllScientificVessel(); - SCIENTIFIC_VESSELS_CONTEXT_ENTRY.setContextValue(ui, scientificVessels); - - // get gears - - List<Gear> scientificGears = persistenceService.getAllScientificGear(); - SCIENTIFIC_GEARS_CONTEXT_ENTRY.setContextValue(ui, scientificGears); - - List<Gear> fishingGears = persistenceService.getAllFishingGear(); - FISHING_GEARS_CONTEXT_ENTRY.setContextValue(ui, fishingGears); - - String cruiseId = context.getCruiseId(); - if (cruiseId == null) { - // create new cruise - Program program = - persistenceService.getProgram(context.getProgramId()); + Program program = getDataContext().getProgram(); model.setProgram(program); model.setMultirigNumber(1); @@ -108,26 +90,17 @@ } else { // load existing program - Cruise cruise = - persistenceService.getCruise(cruiseId); + Cruise cruise = getDataContext().getCruise(); model.fromBean(cruise); if (log.isDebugEnabled()) { - log.debug("Will edit cruise: " + cruiseId); + log.debug("Will edit cruise: " + cruise.getId()); } } listModelIsModify(model); ui.setContextValue(model); } - JAXXContextEntryDef<List<Vessel>> SCIENTIFIC_VESSELS_CONTEXT_ENTRY = JAXXUtil.newListContextEntryDef("scientificVessel"); - - JAXXContextEntryDef<List<Vessel>> FISHING_VESSELS_CONTEXT_ENTRY = JAXXUtil.newListContextEntryDef("fishingVessel"); - - JAXXContextEntryDef<List<Gear>> SCIENTIFIC_GEARS_CONTEXT_ENTRY = JAXXUtil.newListContextEntryDef("scientificGear"); - - JAXXContextEntryDef<List<Gear>> FISHING_GEARS_CONTEXT_ENTRY = JAXXUtil.newListContextEntryDef("fishingGear"); - @Override public void afterInitUI() { @@ -136,19 +109,19 @@ List<Person> users = persistenceService.getAllPerson(); EditCruiseUIModel model = getModel(); - - final List<Vessel> scientificVesselList = SCIENTIFIC_VESSELS_CONTEXT_ENTRY.getContextValue(ui); - final List<Vessel> fishingVesselList = FISHING_VESSELS_CONTEXT_ENTRY.getContextValue(ui); + + final List<Vessel> scientificVesselList = getDataContext().getScientificVessels(); + final List<Vessel> fishingVesselList = getDataContext().getFishingVessels(); final List<Vessel> allVesselList = Lists.newArrayList(); allVesselList.addAll(scientificVesselList); allVesselList.addAll(fishingVesselList); - - final List<Gear> scientificGearList = SCIENTIFIC_GEARS_CONTEXT_ENTRY.getContextValue(ui); - final List<Gear> fishingGearList = FISHING_GEARS_CONTEXT_ENTRY.getContextValue(ui); + + final List<Gear> scientificGearList = getDataContext().getScientificGears(); + final List<Gear> fishingGearList = getDataContext().getFishingGears(); final List<Gear> allGearList = Lists.newArrayList(); allGearList.addAll(scientificGearList); allGearList.addAll(fishingGearList); - + // Change vessel list and gear list when vessel type changes model.addPropertyChangeListener(EditCruiseUIModel.PROPERTY_VESSEL_TYPE, new PropertyChangeListener() { @Override @@ -158,7 +131,7 @@ Predicate<Vessel> vesselPredicate = null; Predicate<Gear> gearPredicate = null; - + switch (vesselType) { case FISHING: vesselPredicate = new Predicate<Vessel>() { @@ -174,7 +147,7 @@ } }; break; - + case SCIENTIFIC: vesselPredicate = new Predicate<Vessel>() { @@ -189,11 +162,11 @@ } }; break; - + } ui.getVesselList().getHandler().clearFilters(); ui.getGearList().getHandler().clearFilters(); - + if (vesselPredicate != null) { ui.getVesselList().getHandler().addFilter(vesselPredicate); } @@ -212,7 +185,7 @@ persistenceService.getAllCountry(), model.getCountry()); - + initBeanList(ui.getVesselList(), allVesselList, model.getVessel()); @@ -234,7 +207,7 @@ // if new fishingOperation can already cancel his creation model.setModify(model.isCreate()); - + model.setVesselType(VesselTypeEnum.SCIENTIFIC); registerValidators(validator); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/EditCruiseUIModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -30,7 +30,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import org.apache.commons.lang3.StringUtils; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/cruise/SaveCruiseAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,12 +27,9 @@ import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; -import fr.ifremer.tutti.ui.swing.TuttiScreen; import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -43,11 +40,8 @@ */ public class SaveCruiseAction extends AbstractTuttiAction<EditCruiseUIModel, EditCruiseUI, EditCruiseUIHandler> { - private static final long serialVersionUID = 1L; - public SaveCruiseAction(EditCruiseUIHandler handler) { super(handler, - "saveCruise", "save", _("tutti.action.saveCruise"), _("tutti.action.saveCruise.tip"), @@ -58,15 +52,13 @@ /** * If the event source is a TuttiScreen, then the screen changes to the source. * Otherwise, the screen changes to the home. - * - * @param event */ @Override - protected void doAction(ActionEvent event) { + protected void doAction() { TuttiUIContext context = getContext(); EditCruiseUIModel model = getModel(); PersistenceService persistenceService = - getService(PersistenceService.class); + getContext().getPersistenceService(); Cruise bean = model.toBean(); @@ -81,13 +73,14 @@ context.setProgramId(saved.getProgram().getId()); context.setCruiseId(saved.getId()); - TuttiScreen nextScreen; - if (event.getSource().getClass().isAssignableFrom(TuttiScreen.class)) { - nextScreen = (TuttiScreen) event.getSource(); - } else { - nextScreen = TuttiScreen.SELECT_CRUISE; - } - context.setScreen(nextScreen); + //TODO-TC Make this works again but in another manner +// TuttiScreen nextScreen; +// if (event.getSource().getClass().isAssignableFrom(TuttiScreen.class)) { +// nextScreen = (TuttiScreen) event.getSource(); +// } else { +// nextScreen = TuttiScreen.SELECT_CRUISE; +// } +// context.setScreen(nextScreen); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/CloseDbAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/CloseDbAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/CloseDbAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -31,8 +31,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -43,14 +41,11 @@ */ public class CloseDbAction extends AbstractMainUITuttiAction { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(CloseDbAction.class); public CloseDbAction(MainUIHandler handler) { super(handler, - "closeDb", "close-db", _("tutti.action.closeDb"), _("tutti.action.closeDb.tip"), @@ -58,7 +53,7 @@ } @Override - protected void doAction(ActionEvent event) { + protected void doAction() { if (log.isInfoEnabled()) { log.info("Will close db..."); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,11 +22,11 @@ #L% --> <JPanel id='noDbUITopPanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<TuttiUIContext, DbManagerUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<TuttiUIContext, DbManagerUIHandler>'> <import> - fr.ifremer.tutti.ui.swing.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext fr.ifremer.tutti.ui.swing.UpdateReferentialAction Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/DbManagerUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -24,8 +24,8 @@ * #L% */ -import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/ExportDbAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -29,8 +29,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -41,14 +39,11 @@ */ public class ExportDbAction extends AbstractMainUITuttiAction { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ExportDbAction.class); public ExportDbAction(MainUIHandler handler) { super(handler, - "exportDb", "export-db", _("tutti.action.exportDb"), _("tutti.action.exportDb.tip"), @@ -56,7 +51,7 @@ } @Override - protected void doAction(ActionEvent event) { + protected void doAction() { if (log.isInfoEnabled()) { log.info("Will export db..."); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/InstallDbAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -34,7 +34,6 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.util.ApplicationUpdater; -import java.awt.event.ActionEvent; import java.io.File; import static org.nuiton.i18n.I18n._; @@ -47,15 +46,12 @@ */ public class InstallDbAction extends AbstractMainUITuttiAction { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(InstallDbAction.class); public InstallDbAction(MainUIHandler handler) { super(handler, - "installDb", "install-db", _("tutti.action.installDb"), _("tutti.action.installDb.tip"), @@ -63,7 +59,7 @@ } @Override - protected void doAction(ActionEvent event) { + protected void doAction() { TuttiApplicationConfig config = getContext().getConfig(); File current = config.getDataDirectory(); @@ -93,12 +89,7 @@ getContext().setDbExist(true); // open db - new OpenDbAction(getHandler()).actionPerformed(event); + new OpenDbAction(getHandler()).performAndReleaseAction(); } - @Override - protected void releaseAction(ActionEvent event) { - super.releaseAction(event); - getContext().getActionUI().getModel().setProgressionModel(null); - } } \ No newline at end of file Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/db/OpenDbAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -31,8 +31,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -43,14 +41,11 @@ */ public class OpenDbAction extends AbstractMainUITuttiAction { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(OpenDbAction.class); public OpenDbAction(MainUIHandler handler) { super(handler, - "openDb", "open-db", _("tutti.action.openDb"), _("tutti.action.openDb.tip"), @@ -58,7 +53,7 @@ } @Override - protected void doAction(ActionEvent event) { + public void doAction() { if (log.isDebugEnabled()) { log.debug("Will open db..."); Modified: 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 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/CloneProtocolAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,13 +26,11 @@ import com.ezware.oxbow.swingbits.util.Preconditions; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -43,14 +41,11 @@ */ public class CloneProtocolAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(CloneProtocolAction.class); public CloneProtocolAction(SelectCruiseUIHandler handler) { super(handler, - "cloneProtocol", "copy", _("tutti.action.cloneProtocol"), _("tutti.action.cloneProtocol.tip"), @@ -59,11 +54,11 @@ } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { TuttiProtocol protocol = getModel().getProtocol(); Preconditions.checkNotNull(protocol); - if (log.isInfoEnabled()) { - log.info("Clone protocol: " + protocol.getId()); + if (log.isDebugEnabled()) { + log.debug("Clone protocol: " + protocol.getId()); } getContext().setProtocolId(protocol.getId()); getContext().setScreen(TuttiScreen.CLONE_PROTOCOL); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/DeleteProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/DeleteProtocolAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/DeleteProtocolAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,12 +27,11 @@ import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.JOptionPane; -import java.awt.event.ActionEvent; import java.util.List; import static org.nuiton.i18n.I18n._; @@ -45,14 +44,11 @@ */ public class DeleteProtocolAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(EditProtocolAction.class); public DeleteProtocolAction(SelectCruiseUIHandler handler) { super(handler, - "deleteProtocol", "delete", _("tutti.action.deleteProtocol"), _("tutti.action.deleteProtocol.tip"), @@ -61,8 +57,8 @@ } @Override - protected boolean prepareAction(ActionEvent event) { - boolean result = super.prepareAction(event); + protected boolean prepareAction() { + boolean result = super.prepareAction(); TuttiProtocol protocol = getHandler().getModel().getProtocol(); int answer = JOptionPane.showConfirmDialog( @@ -77,7 +73,7 @@ } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { TuttiProtocol protocol = getModel().getProtocol(); Preconditions.checkNotNull(protocol); String id = protocol.getId(); @@ -86,7 +82,7 @@ log.info("Delete protocol: " + id); } - PersistenceService service = getService(PersistenceService.class); + PersistenceService service = getContext().getPersistenceService(); service.deleteProtocol(id); getModel().setProtocol(null); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCatchesAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,12 +25,10 @@ */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiScreen; import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -41,11 +39,8 @@ */ public class EditCatchesAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { - private static final long serialVersionUID = 1L; - public EditCatchesAction(SelectCruiseUIHandler handler) { super(handler, - "editCatches", "edit", _("tutti.action.editCatches"), _("tutti.action.editCatches.tip"), @@ -54,7 +49,8 @@ } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { + Preconditions.checkState(getContext().isProgramFilled()); Preconditions.checkState(getContext().isCruiseFilled()); getContext().setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_EDIT); getContext().setScreen(TuttiScreen.EDIT_FISHING_OPERATION); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditCruiseAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,11 +26,9 @@ import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -41,11 +39,8 @@ */ public class EditCruiseAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { - private static final long serialVersionUID = 1L; - public EditCruiseAction(SelectCruiseUIHandler handler) { super(handler, - "editCruise", "edit", _("tutti.action.editCruise"), _("tutti.action.editCruise.tip"), @@ -54,7 +49,7 @@ } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { Cruise cruise = getModel().getCruise(); Preconditions.checkNotNull(cruise); getContext().setCruiseId(cruise.getId()); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProgramAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,11 +26,9 @@ import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -41,11 +39,8 @@ */ public class EditProgramAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { - private static final long serialVersionUID = 1L; - public EditProgramAction(SelectCruiseUIHandler handler) { super(handler, - "editProgram", "edit", _("tutti.action.editProgram"), _("tutti.action.editProgram.tip"), @@ -54,7 +49,7 @@ } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { Program program = getModel().getProgram(); Preconditions.checkNotNull(program); getContext().setProgramId(program.getId()); Modified: 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 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/EditProtocolAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,13 +26,11 @@ import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -43,14 +41,11 @@ */ public class EditProtocolAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(EditProtocolAction.class); public EditProtocolAction(SelectCruiseUIHandler handler) { super(handler, - "editProtocol", "edit", _("tutti.action.editProtocol"), _("tutti.action.editProtocol.tip"), @@ -59,7 +54,7 @@ } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { TuttiProtocol protocol = getModel().getProtocol(); Preconditions.checkNotNull(protocol); if (log.isInfoEnabled()) { Modified: 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 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ExportProtocolAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,12 +27,11 @@ import com.ezware.oxbow.swingbits.util.Preconditions; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.io.File; import static org.nuiton.i18n.I18n._; @@ -45,8 +44,6 @@ */ public class ExportProtocolAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ExportProtocolAction.class); @@ -55,7 +52,6 @@ public ExportProtocolAction(SelectCruiseUIHandler handler) { super(handler, - "exportProtocol", "export", _("tutti.action.exportProtocol"), _("tutti.action.exportProtocol.tip"), @@ -64,7 +60,8 @@ } @Override - protected boolean prepareAction(ActionEvent event) { + protected boolean prepareAction() { + // choose file to import file = TuttiUIUtil.chooseFile( @@ -77,19 +74,19 @@ boolean doAction = file != null; if (doAction) { - super.prepareAction(event); + super.prepareAction(); } return doAction; } @Override - protected void releaseAction(ActionEvent event) { - super.releaseAction(event); + protected void releaseAction() { + super.releaseAction(); file = null; } @Override - protected void doAction(ActionEvent e) throws Exception { + protected void doAction() throws Exception { TuttiProtocol protocol = getModel().getProtocol(); Preconditions.checkNotNull(protocol); @@ -107,7 +104,7 @@ } // export protocol TuttiProtocolImportExportService service = - getService(TuttiProtocolImportExportService.class); + getContext().getTuttiProtocolImportExportService(); service.exportProtocol(protocol, file); sendMessage("Protocole [" + protocol.getName() + Modified: 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 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ImportProtocolAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,14 +26,13 @@ import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiScreen; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import jaxx.runtime.context.JAXXContextEntryDef; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.io.File; import static org.nuiton.i18n.I18n._; @@ -46,8 +45,6 @@ */ public class ImportProtocolAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ImportProtocolAction.class); @@ -58,7 +55,6 @@ public ImportProtocolAction(SelectCruiseUIHandler handler) { super(handler, - "importProtocol", "import", _("tutti.action.importProtocol"), _("tutti.action.importProtocol.tip"), @@ -67,7 +63,7 @@ } @Override - protected boolean prepareAction(ActionEvent event) { + protected boolean prepareAction() { // choose file to import file = TuttiUIUtil.chooseFile( @@ -79,19 +75,19 @@ ); boolean doAction = file != null; if (doAction) { - super.prepareAction(event); + super.prepareAction(); } return doAction; } @Override - protected void releaseAction(ActionEvent event) { - super.releaseAction(event); + protected void releaseAction() { + super.releaseAction(); file = null; } @Override - protected void doAction(ActionEvent e) throws Exception { + protected void doAction() throws Exception { if (log.isInfoEnabled()) { log.info("TODO Import protocol!"); } @@ -102,7 +98,7 @@ // import protocol TuttiProtocolImportExportService service = - getService(TuttiProtocolImportExportService.class); + getContext().getTuttiProtocolImportExportService(); TuttiProtocol protocol = service.importProtocol(file); sendMessage("Protocole [" + protocol.getName() + "] lu depuis le fichier."); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewCruiseAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -24,11 +24,9 @@ * #L% */ -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -39,11 +37,8 @@ */ public class NewCruiseAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { - private static final long serialVersionUID = 1L; - public NewCruiseAction(SelectCruiseUIHandler handler) { super(handler, - "newCruise", "add", _("tutti.action.newCruise"), _("tutti.action.newCruise.tip"), @@ -52,7 +47,7 @@ } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { getContext().setCruiseId(null); getContext().setScreen(TuttiScreen.EDIT_CRUISE); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProgramAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -24,11 +24,9 @@ * #L% */ -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -39,11 +37,8 @@ */ public class NewProgramAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { - private static final long serialVersionUID = 1L; - public NewProgramAction(SelectCruiseUIHandler handler) { super(handler, - "newProgram", "add", _("tutti.action.newProgram"), _("tutti.action.newProgram.tip"), @@ -52,7 +47,7 @@ } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { getContext().setProgramId(null); getContext().setCruiseId(null); getContext().setScreen(TuttiScreen.EDIT_PROGRAM); Modified: 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 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/NewProtocolAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -24,13 +24,9 @@ * #L% */ -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiScreen; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -41,14 +37,8 @@ */ public class NewProtocolAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { - private static final long serialVersionUID = 1L; - - /** Logger. */ - private static final Log log = LogFactory.getLog(NewProtocolAction.class); - public NewProtocolAction(SelectCruiseUIHandler handler) { super(handler, - "newProtocol", "add", _("tutti.action.newProtocol"), _("tutti.action.newProtocol.tip"), @@ -57,10 +47,7 @@ } @Override - protected void doAction(ActionEvent e) { - if (log.isInfoEnabled()) { - log.info("New protocol"); - } + protected void doAction() { getContext().setProtocolId(null); getContext().setScreen(TuttiScreen.EDIT_PROTOCOL); } 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-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,14 +22,14 @@ #L% --> <JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<SelectCruiseUIModel, SelectCruiseUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<SelectCruiseUIModel, SelectCruiseUIHandler>'> <import> fr.ifremer.tutti.persistence.entities.data.Program fr.ifremer.tutti.persistence.entities.data.Cruise fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol - fr.ifremer.tutti.ui.swing.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext fr.ifremer.tutti.ui.swing.util.ActionListCellRenderer 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-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,37 +25,26 @@ */ import com.google.common.collect.Lists; -import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; -import fr.ifremer.tutti.ui.swing.TuttiUI; -import java.awt.AWTEvent; -import java.awt.Event; -import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import java.util.List; -import java.util.Timer; -import java.util.TimerTask; -import javax.swing.Action; -import javax.swing.JComboBox; -import javax.swing.SwingUtilities; -import javax.swing.event.ListDataEvent; -import javax.swing.event.ListDataListener; -import javax.swing.event.PopupMenuEvent; -import javax.swing.event.PopupMenuListener; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import jaxx.runtime.swing.editor.bean.BeanComboBox; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import javax.swing.Action; +import javax.swing.JComboBox; +import java.awt.event.ActionEvent; +import java.awt.event.MouseEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.util.List; + /** * Main ui content to select cruise. * @@ -72,7 +61,7 @@ public SelectCruiseUIHandler(TuttiUI<?, ?> parentUI, SelectCruiseUI ui) { super(parentUI.getHandler().getContext(), ui); - persistenceService = context.getService(PersistenceService.class); + persistenceService = context.getPersistenceService(); } @Override @@ -97,12 +86,11 @@ // get selected program (if any) - String programId = context.getProgramId(); Program selectedProgram = null; List<Cruise> cruises = null; - if (programId != null) { - selectedProgram = TuttiEntities.findById(programs, programId); - cruises = persistenceService.getAllCruise(programId); + if (context.isProgramFilled()) { + selectedProgram = getDataContext().getProgram(); + cruises = persistenceService.getAllCruise(selectedProgram.getId()); } model.setProgram(selectedProgram); @@ -112,12 +100,10 @@ // nothing to select } else { - String cruiseId = context.getCruiseId(); Cruise selectedCruise = null; - if (cruiseId != null) { - selectedCruise = - TuttiEntities.findById(cruises, cruiseId); + if (context.isCruiseFilled()) { + selectedCruise = getDataContext().getCruise(); } model.setCruise(selectedCruise); } @@ -134,10 +120,9 @@ } } else { - String protocolId = context.getProtocolId(); TuttiProtocol selectedProtocol = null; - if (protocolId != null) { - selectedProtocol = TuttiEntities.findById(protocols, protocolId); + if (context.isProgramFilled()) { + selectedProtocol = getDataContext().getProtocol(); } model.setProtocol(selectedProtocol); } @@ -162,7 +147,7 @@ initBeanComboBox(ui.getProtocolCombobox(), model.getProtocols(), model.getProtocol()); - + ui.getEditProtocolComboBox().putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); ui.getNewProtocolComboBox().putClientProperty("JComboBox.isTableCellEditor", Boolean.TRUE); @@ -259,13 +244,13 @@ } clearValidators(); } - + public void startExistingProtocolAction(MouseEvent event) { JComboBox existingProtocolCombo = (JComboBox) event.getSource(); Action selectedAction = (Action) existingProtocolCombo.getItemAt(0); selectedAction.actionPerformed(null); } - + public void startExistingProtocolAction(ActionEvent event) { if (!resetEditProtolAction) { JComboBox existingProtocolCombo = (JComboBox) event.getSource(); @@ -285,7 +270,7 @@ Action selectedAction = (Action) newProtocolCombo.getItemAt(0); selectedAction.actionPerformed(null); } - + public void startNewProtocolAction(ActionEvent event) { JComboBox newProtocolCombo = (JComboBox) event.getSource(); Action selectedAction = (Action) newProtocolCombo.getSelectedItem(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/SelectCruiseUIModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,7 +27,7 @@ import fr.ifremer.tutti.persistence.entities.data.Cruise; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import java.util.List; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/home/ValidateCatchesAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,12 +25,10 @@ */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiScreen; import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -41,11 +39,8 @@ */ public class ValidateCatchesAction extends AbstractTuttiAction<SelectCruiseUIModel, SelectCruiseUI, SelectCruiseUIHandler> { - private static final long serialVersionUID = 1L; - public ValidateCatchesAction(SelectCruiseUIHandler handler) { super(handler, - "validateCatches", "validate", _("tutti.action.validateCatches"), _("tutti.action.validateCatches.tip"), @@ -54,7 +49,8 @@ } @Override - protected void doAction(ActionEvent e) { + protected void doAction() { + Preconditions.checkState(getContext().isProgramFilled()); Preconditions.checkState(getContext().isCruiseFilled()); getContext().setValidationContext(TuttiUIContext.VALIDATION_CONTEXT_VALIDATE); getContext().setScreen(TuttiScreen.EDIT_FISHING_OPERATION); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchTableUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -30,8 +30,8 @@ import com.ezware.oxbow.swingbits.table.filter.JTableFilter; import com.ezware.oxbow.swingbits.table.filter.TableRowFilterSupport; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; -import fr.ifremer.tutti.ui.swing.TuttiUI; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; import jaxx.runtime.SwingUtil; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchUIModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AbstractTuttiBatchUIModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,8 +26,8 @@ import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; import java.beans.PropertyChangeEvent; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AttachmentsAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AttachmentsAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/AttachmentsAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -24,10 +24,8 @@ * #L% */ -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -36,11 +34,8 @@ */ public class AttachmentsAction extends AbstractTuttiAction<EditFishingOperationUIModel, EditFishingOperationUI, EditFishingOperationUIHandler> { - private static final long serialVersionUID = 1L; - public AttachmentsAction(EditFishingOperationUIHandler handler) { super(handler, - "attachments", "edit-attachment", _("tutti.action.attachments", 0), _("tutti.action.attachments.tip"), @@ -48,13 +43,8 @@ } @Override - protected void doAction(ActionEvent event) throws Exception { + protected void doAction() throws Exception { //TODO } - @Override - public boolean isEnabled() { - return false; - } - } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/CancelEditFishingOperationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/CancelEditFishingOperationAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/CancelEditFishingOperationAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,14 +25,10 @@ * #L% */ -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - import static org.nuiton.i18n.I18n._; /** @@ -43,8 +39,6 @@ */ public class CancelEditFishingOperationAction extends AbstractTuttiAction<EditFishingOperationUIModel, EditFishingOperationUI, EditFishingOperationUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(SaveFishingOperationAction.class); @@ -57,27 +51,27 @@ public CancelEditFishingOperationAction(EditFishingOperationUIHandler handler) { super(handler, - "cancelFishingOperation", "cancel", _("tutti.action.cancel.editFishingOperation"), _("tutti.action.cancel.editFishingOperation.tip"), true ); - - getModel().addPropertyChangeListener(EditFishingOperationUIModel.PROPERTY_ID, - new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - if (evt.getNewValue() == null) { - putValue(NAME, _("tutti.action.cancel.editFishingOperation")); - putValue(SHORT_DESCRIPTION, _("tutti.action.cancel.editFishingOperation.tip")); - - } else { - putValue(NAME, _("tutti.action.reset.editFishingOperation")); - putValue(SHORT_DESCRIPTION, _("tutti.action.reset.editFishingOperation.tip")); - } - } - }); + //TODO-TC REmake this works +// getModel().addPropertyChangeListener(EditFishingOperationUIModel.PROPERTY_ID, +// new PropertyChangeListener() { +// +// public void propertyChange(PropertyChangeEvent evt) { +// if (evt.getNewValue() == null) { +// putValue(NAME, _("tutti.action.cancel.editFishingOperation")); +// putValue(SHORT_DESCRIPTION, _("tutti.action.cancel.editFishingOperation.tip")); +// +// } else { +// putValue(NAME, _("tutti.action.reset.editFishingOperation")); +// putValue(SHORT_DESCRIPTION, _("tutti.action.reset.editFishingOperation.tip")); +// } +// } +// }); } public EditFishingOperationAction getEditAction() { @@ -92,11 +86,10 @@ * then the tab panel of the parent switch to the index set * in the ID param of the event. * - * @param event * @throws Exception */ @Override - protected void doAction(ActionEvent event) throws Exception { + protected void doAction() throws Exception { EditFishingOperationAction action = getEditAction(); @@ -106,7 +99,7 @@ } // cancel to create a new fishingOperation action.setFishingOperation(null); - action.doAction(event); + action.performAndReleaseAction(); } else { @@ -117,7 +110,7 @@ // re-edit current fishing operation (but do not perform any check) action.setCheckPreviousEdit(false); action.setFishingOperation(getModel().getFishingOperation()); - action.actionPerformed(event); + action.performAndReleaseAction(); } // // if called directly from the EditFishingOperationUIHandler: Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -32,7 +32,6 @@ import fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation; import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.content.operation.catches.ComputeWeightsAction; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; @@ -41,6 +40,7 @@ import fr.ifremer.tutti.ui.swing.content.operation.fishing.gearshooting.GearShootingTabUI; import fr.ifremer.tutti.ui.swing.content.operation.fishing.hydrology.HydrologyTabUI; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.util.decorator.Decorator; @@ -50,7 +50,6 @@ import javax.swing.JTabbedPane; import javax.swing.SwingUtilities; import java.awt.BorderLayout; -import java.awt.event.ActionEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.List; @@ -65,8 +64,6 @@ */ public class EditFishingOperationAction extends AbstractTuttiAction<FishingOperationsUIModel, FishingOperationsUI, FishingOperationsUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(EditFishingOperationAction.class); @@ -97,7 +94,7 @@ * @since 1.0 */ protected SaveFishingOperationAction saveFishingOperationAction; - + /** * Delegate action to compute the weight of the catches. * @@ -151,7 +148,6 @@ public EditFishingOperationAction(FishingOperationsUIHandler handler) { super(handler, - "editFishingOperation", "edit", null, _("tutti.action.editFishingOperation.tip"), @@ -164,7 +160,7 @@ String text, String tip, boolean hideBody) { - super(handler, name, icon, text, tip, hideBody); + super(handler, icon, text, tip, hideBody); } public void setFishingOperation(FishingOperation fishingOperation) { @@ -176,10 +172,10 @@ } @Override - protected void releaseAction(ActionEvent event) { + protected void releaseAction() { fishingOperation = null; checkPreviousEdit = true; - super.releaseAction(event); + super.releaseAction(); // getComputeWeightsAction().actionPerformed(event); } @@ -196,7 +192,7 @@ } return saveCatchBatchAction; } - + protected ComputeWeightsAction getComputeWeightsAction() { if (computeWeightsAction == null) { computeWeightsAction = new ComputeWeightsAction(getUI().getCatchesTabContent().getHandler()); @@ -205,8 +201,8 @@ } @Override - protected boolean prepareAction(ActionEvent event) { - boolean canContinue = super.prepareAction(event); + protected boolean prepareAction() { + boolean canContinue = super.prepareAction(); if (canContinue && checkPreviousEdit) { FishingOperationsUI ui = getUI(); @@ -262,12 +258,12 @@ // persist previous fishing operation if (fishingOperationModified) { getSaveFishingOperationAction().setUpdateUI(false); - getSaveFishingOperationAction().actionPerformed(event); + getSaveFishingOperationAction().performAndReleaseAction(); } if (catchBatchModified) { getSaveCatchBatchAction().setUpdateUI(false); - getSaveCatchBatchAction().actionPerformed(event); + getSaveCatchBatchAction().performAndReleaseAction(); } canContinue = true; @@ -325,7 +321,7 @@ } @Override - protected void doAction(ActionEvent event) throws Exception { + protected void doAction() throws Exception { if (log.isInfoEnabled()) { log.info("Try to edit fishingOperation: " + fishingOperation); @@ -365,9 +361,9 @@ // wait last minute to display (avoid dirty display effects) ui.add(form, BorderLayout.CENTER); - + ui.getFishingOperationTabContent().getFishingOperationTabPane().setSelectedIndex(0); - + if (checkPreviousEdit) { ui.getTabPane().setSelectedIndex(0); } @@ -444,7 +440,7 @@ // update saisissuer selection List<Person> saisisseur = editFishingOperationUIModel.getSaisisseur(); ui.getSaisisseurList().getHandler().setSelected(saisisseur); - + // update model empty property editFishingOperationUIModel.setEmpty(false); @@ -502,7 +498,7 @@ } PersistenceService persistenceService = - getService(PersistenceService.class); + getContext().getPersistenceService(); batch = persistenceService.getCatchBatchFromFishingOperation( operationId, true); @@ -549,7 +545,7 @@ } - + } - + } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,7 +22,7 @@ #L% --> <JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<EditFishingOperationUIModel, EditFishingOperationUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<EditFishingOperationUIModel, EditFishingOperationUIHandler>'> <import> fr.ifremer.tutti.persistence.entities.referential.FishingOperationLocation Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -35,35 +35,33 @@ import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.persistence.entities.referential.Zone; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.operation.fishing.CaracteristicTabUIModel; import fr.ifremer.tutti.ui.swing.content.operation.fishing.environment.EnvironmentTabUIModel; import fr.ifremer.tutti.ui.swing.content.operation.fishing.gearshooting.GearShootingTabUIModel; import fr.ifremer.tutti.ui.swing.content.operation.fishing.hydrology.HydrologyTabUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiTabContainerUIHandler; import fr.ifremer.tutti.ui.swing.util.TabHandler; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; -import java.awt.Color; -import java.awt.Component; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.time.DateUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.jdesktop.swingx.JXDatePicker; import javax.swing.JOptionPane; import javax.swing.JTabbedPane; +import java.awt.Color; +import java.awt.Component; import java.awt.event.ActionEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Calendar; -import java.util.Collections; -import java.util.Comparator; import java.util.Date; import java.util.List; -import org.jdesktop.swingx.JXDatePicker; import static org.nuiton.i18n.I18n._; @@ -95,8 +93,8 @@ //check if the user changed the date and not only the time) Date oldDate = (Date) evt.getOldValue(); Date newDate = (Date) evt.getNewValue(); - if (getModel().getGearShootingEndDate() == null && - (oldDate == null || !DateUtils.isSameDay(oldDate, newDate))) { + if (getModel().getGearShootingEndDate() == null && + (oldDate == null || !DateUtils.isSameDay(oldDate, newDate))) { getModel().setGearShootingEndDate(newDate); } } @@ -151,7 +149,7 @@ EditFishingOperationUI ui) { super(parentUi.getHandler().getContext(), ui); this.parentUi = parentUi; - this.persistenceService = context.getService(PersistenceService.class); + this.persistenceService = context.getPersistenceService(); this.fishingOperationMonitor = new TuttiBeanMonitor<EditFishingOperationUIModel>( EditFishingOperationUIModel.PROPERTY_STATION_NUMBER, EditFishingOperationUIModel.PROPERTY_FISHING_OPERATION_NUMBER, @@ -226,7 +224,7 @@ tab.setBackground(color); } }); - + ui.setContextValue(model); fishingOperationMonitor.setBean(model); @@ -255,12 +253,12 @@ Lists.<Gear>newArrayList(), null); - Cruise cruise = TuttiUIUtil.getCruise(context); + Cruise cruise = getDataContext().getCruise(); Preconditions.checkNotNull(cruise, "Could not find cruise in ui context"); ui.getMultirigAggregationField().setEnabled(cruise.getMultirigNumber() != 1); - Program program = TuttiUIUtil.getProgram(context); + Program program = getDataContext().getProgram(); Preconditions.checkNotNull(program, "Could not find program in ui context"); @@ -342,14 +340,14 @@ } }); } - + // FIXME kmorin 20130222 remove this when we use jaxx 2.5.11 model.addPropertyChangeListener(EditFishingOperationUIModel.PROPERTY_TRAWL_DISTANCE, new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { String tooltip = model.getTrawlDistance() != null ? - _("tutti.tooltip.distanceInMilles", TuttiUIUtil.getDistanceInMilles(model.getTrawlDistance())) : - null; + _("tutti.tooltip.distanceInMilles", TuttiUIUtil.getDistanceInMilles(model.getTrawlDistance())) : + null; ui.getTrawlDistanceField().getTextField().setToolTipText(tooltip); } }); @@ -490,7 +488,7 @@ public TuttiBeanMonitor<EditFishingOperationUIModel> getFishingOperationMonitor() { return fishingOperationMonitor; } - + @Override public void setDate(ActionEvent event, String property) { JXDatePicker field = (JXDatePicker) event.getSource(); @@ -517,7 +515,7 @@ // reset sub strata combo ui.getSubStrataComboBox().setData(null); - Zone zone = TuttiUIUtil.getProgram(context).getZone(); + Zone zone = getDataContext().getProgram().getZone(); String zoneId = zone.getId(); String strataId = newStrata == null ? null : newStrata.getId(); @@ -558,7 +556,7 @@ // reset localite combo ui.getLocationComboBox().setData(null); - Zone zone = TuttiUIUtil.getProgram(context).getZone(); + Zone zone = getDataContext().getProgram().getZone(); String zoneId = zone.getId(); FishingOperationLocation strata = model.getStrata(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/EditFishingOperationUIModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -33,7 +33,7 @@ import fr.ifremer.tutti.persistence.entities.referential.Person; import fr.ifremer.tutti.persistence.entities.referential.Vessel; import fr.ifremer.tutti.persistence.spatial.SexagecimalPosition; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.editor.CoordinateEditorType; import org.nuiton.util.DateUtil; @@ -43,7 +43,6 @@ import java.util.Calendar; import java.util.Date; import java.util.List; -import org.apache.commons.lang3.time.DateUtils; import static org.nuiton.i18n.I18n.n_; @@ -92,7 +91,7 @@ public static final String PROPERTY_GEAR_SHOOTING_START_LONGITUDE_SECOND = "gearShootingStartLongitudeSecond"; public static final String PROPERTY_GEAR_SHOOTING_START_DATE = "gearShootingStartDate"; - + public static final String PROPERTY_GEAR_SHOOTING_END_LATITUDE = "gearShootingEndLatitude"; public static final String PROPERTY_GEAR_SHOOTING_END_LATITUDE_DEGREE = "gearShootingEndLatitudeDegree"; @@ -442,7 +441,7 @@ } firePropertyChange(PROPERTY_GEAR_SHOOTING_START_DATE, oldValue, this.gearShootingStartDate); } - + public void setGearShootingStartTime(Date gearShootingStartDate) { Object oldValue = getGearShootingStartDate(); if (oldValue != null) { @@ -602,7 +601,7 @@ } firePropertyChange(PROPERTY_GEAR_SHOOTING_END_DATE, oldValue, this.gearShootingEndDate); } - + public void setGearShootingEndTime(Date gearShootingEndDate) { Object oldValue = getGearShootingEndDate(); if (oldValue != null) { @@ -729,7 +728,7 @@ public boolean isDateInCruise(Date date) { return DateUtil.between(date, cruise.getBeginDate(), cruise.getEndDate()); } - + public boolean isValidDuration() { int minutes = DateUtil.getDifferenceInMinutes(gearShootingStartDate, gearShootingEndDate); return minutes <= 45 && minutes >= 20; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,12 +22,12 @@ #L% --> <JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<FishingOperationsUIModel, FishingOperationsUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<FishingOperationsUIModel, FishingOperationsUIHandler>'> <import> fr.ifremer.tutti.persistence.entities.data.FishingOperation - fr.ifremer.tutti.ui.swing.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/FishingOperationsUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -29,10 +29,9 @@ import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.PersistenceService; import fr.ifremer.tutti.ui.swing.TuttiScreen; -import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiTabContainerUIHandler; -import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -61,7 +60,7 @@ public FishingOperationsUIHandler(TuttiUI parentUI, FishingOperationsUI ui) { super(parentUI.getHandler().getContext(), ui); - persistenceService = context.getService(PersistenceService.class); + persistenceService = context.getPersistenceService(); } @Override @@ -74,15 +73,9 @@ EditCatchesUIModel catchesUIModel = new EditCatchesUIModel(); - String cruiseId = context.getCruiseId(); - // load existing cruise - Cruise cruise = persistenceService.getCruise(cruiseId); + Cruise cruise = getDataContext().getCruise(); - // store it in context - TuttiUIUtil.setCruise(context, cruise); - TuttiUIUtil.setProgram(context, cruise.getProgram()); - TuttiProtocol protocol; if (getContext().isProtocolFilled()) { @@ -94,16 +87,10 @@ if (log.isInfoEnabled()) { log.info("Loading existing protocol: " + protocol); } - } else { - - // remove any previous existing protocol - protocol = null; } - TuttiUIUtil.setProtocol(context, protocol); - List<FishingOperation> fishingOperations = - persistenceService.getAllFishingOperation(cruiseId); + persistenceService.getAllFishingOperation(cruise.getId()); for (FishingOperation fishingOperation : fishingOperations) { fishingOperation.setCruise(cruise); @@ -124,8 +111,7 @@ initUI(ui); - editFishingOperationAction = - createAction(EditFishingOperationAction.class); + editFishingOperationAction = new EditFishingOperationAction(this); FishingOperationsUIModel model = getModel(); @@ -153,11 +139,11 @@ operation = null; } else { operation = persistenceService.getFishingOperation(newValue.getId()); - Cruise cruise = TuttiUIUtil.getCruise(context); + Cruise cruise = getDataContext().getCruise(); operation.setCruise(cruise); } editFishingOperationAction.setFishingOperation(operation); - editFishingOperationAction.actionPerformed(null); + editFishingOperationAction.performAndReleaseAction(); // getModel().setEditFishingOperation(operation); } } @@ -190,11 +176,11 @@ FishingOperation selectedOperation = null; for (FishingOperation fishingOperation : fishingOperations) { if (selectedOperation == null || - fishingOperation.getGearShootingStartDate() - .after(selectedOperation.getGearShootingStartDate()) - && fishingOperation.getFishingOperationNumber() - > selectedOperation.getFishingOperationNumber() - ) { + fishingOperation.getGearShootingStartDate() + .after(selectedOperation.getGearShootingStartDate()) + && fishingOperation.getFishingOperationNumber() + > selectedOperation.getFishingOperationNumber() + ) { selectedOperation = fishingOperation; } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/ImportCasinoAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/ImportCasinoAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/ImportCasinoAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -24,10 +24,8 @@ * #L% */ -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -38,11 +36,8 @@ */ public class ImportCasinoAction extends AbstractTuttiAction<EditFishingOperationUIModel, EditFishingOperationUI, EditFishingOperationUIHandler> { - private static final long serialVersionUID = 1L; - public ImportCasinoAction(EditFishingOperationUIHandler handler) { super(handler, - "importCasino", "casino-import", _("tutti.action.importCasino"), _("tutti.action.importCasino.tip"), @@ -50,12 +45,8 @@ } @Override - protected void doAction(ActionEvent event) throws Exception { + protected void doAction() throws Exception { //TODO } - @Override - public boolean isEnabled() { - return false; - } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/NewFishingOperationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/NewFishingOperationAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/NewFishingOperationAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,9 +28,7 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.referential.Gear; import fr.ifremer.tutti.persistence.entities.referential.Vessel; -import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; -import java.awt.event.ActionEvent; import java.util.List; import static org.nuiton.i18n.I18n._; @@ -43,8 +41,6 @@ */ public class NewFishingOperationAction extends EditFishingOperationAction { - private static final long serialVersionUID = 1L; - public NewFishingOperationAction(FishingOperationsUIHandler handler) { super(handler, "newFishingOperation", @@ -55,7 +51,7 @@ } @Override - protected void doAction(ActionEvent event) throws Exception { + protected void doAction() throws Exception { FishingOperationsUIModel model = getModel(); @@ -72,7 +68,7 @@ // creates a empty bean FishingOperation newFishingOperation = new FishingOperation(); - Cruise cruise = TuttiUIUtil.getCruise(getContext()); + Cruise cruise = getDataContext().getCruise(); newFishingOperation.setCruise(cruise); //TODO Should select vessel from possible one ? @@ -95,6 +91,6 @@ newFishingOperation.setGearShootingEndDate(null); setFishingOperation(newFishingOperation); - super.doAction(event); + super.doAction(); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/SaveFishingOperationAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -30,18 +30,16 @@ import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.content.operation.fishing.CaracteristicTabUIModel; import fr.ifremer.tutti.ui.swing.content.operation.fishing.environment.EnvironmentTabUIModel; import fr.ifremer.tutti.ui.swing.content.operation.fishing.gearshooting.GearShootingTabUIModel; import fr.ifremer.tutti.ui.swing.content.operation.fishing.hydrology.HydrologyTabUIModel; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.util.editor.CoordinateEditorType; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -52,8 +50,6 @@ */ public class SaveFishingOperationAction extends AbstractTuttiAction<EditFishingOperationUIModel, EditFishingOperationUI, EditFishingOperationUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(SaveFishingOperationAction.class); @@ -68,7 +64,6 @@ public SaveFishingOperationAction(EditFishingOperationUIHandler handler) { super(handler, - "saveFishingOperation", "save", _("tutti.action.saveFishingOperation"), _("tutti.action.saveFishingOperation.tip"), @@ -81,9 +76,9 @@ } @Override - protected void releaseAction(ActionEvent event) { + protected void releaseAction() { updateUI = true; - super.releaseAction(event); + super.releaseAction(); } /** @@ -91,11 +86,9 @@ * then the tab panel of the parent switch to the index set * in the ID param of the event. * If the event source is a TuttiScreen, then the screen changes to the source. - * - * @param event */ @Override - protected void doAction(ActionEvent event) { + protected void doAction() { EditFishingOperationUIHandler handler = getHandler(); @@ -151,7 +144,7 @@ getModel().setModify(false); saveFishingOperation(toSave); - + handler.getParentUi().getTabPane().setSelectedIndex(1); } @@ -159,7 +152,7 @@ protected void saveFishingOperation(FishingOperation toSave) { - PersistenceService service = getService(PersistenceService.class); + PersistenceService service = getContext().getPersistenceService(); boolean create = TuttiEntities.isNew(toSave); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/CancelEditCatchBatchAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/CancelEditCatchBatchAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/CancelEditCatchBatchAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,13 +27,11 @@ import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationAction; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -44,8 +42,6 @@ */ public class CancelEditCatchBatchAction extends AbstractTuttiAction<EditCatchesUIModel, EditCatchesUI, EditCatchesUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(CancelEditCatchBatchAction.class); @@ -61,7 +57,6 @@ public CancelEditCatchBatchAction(EditCatchesUIHandler handler) { super(handler, - "cancelEditCatchBatch", "cancel", _("tutti.action.reset.editCatchBatch"), _("tutti.action.reset.editCatchBatch.tip"), @@ -77,7 +72,7 @@ } @Override - protected void doAction(ActionEvent event) throws Exception { + protected void doAction() throws Exception { if (getModel().isCreate()) { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ComputeWeightsAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,24 +25,19 @@ * #L% */ -import com.google.common.collect.Maps; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SampleCategory; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyRowModel; -import jaxx.runtime.JAXXUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.JOptionPane; -import javax.swing.JTextField; import java.awt.Component; -import java.awt.event.ActionEvent; import java.util.List; -import java.util.Map; import static org.nuiton.i18n.I18n._; @@ -52,8 +47,6 @@ */ public class ComputeWeightsAction extends AbstractTuttiAction<EditCatchesUIModel, EditCatchesUI, EditCatchesUIHandler> { - private static final long serialVersionUID = 1L; - private static final Log log = LogFactory.getLog(ComputeWeightsAction.class); protected String errorMessage; @@ -64,7 +57,6 @@ public ComputeWeightsAction(EditCatchesUIHandler handler) { super(handler, - "computeWeights", "generate", _("tutti.action.computeWeights"), _("tutti.action.computeWeights.tip"), @@ -72,18 +64,18 @@ } @Override - protected void doAction(ActionEvent event) throws Exception { + protected void doAction() throws Exception { EditCatchesUIModel model = getModel(); - + computeSpeciesBatches(); Float speciesTotalSortedWeight = model.getSpeciesTotalSortedComputedWeight(); Float speciesTotalUnsortedWeight = model.getSpeciesTotalUnsortedComputedWeight(); - + EditCatchesUI ui = getUI(); model.setCatchTotalSortedComputedWeight(speciesTotalSortedWeight); model.setCatchTotalUnsortedComputedWeight(speciesTotalUnsortedWeight); - + Float totalWeight = model.getCatchTotalWeight(); Float rejectedWeight = model.getCatchTotalRejectedWeight(); @@ -107,12 +99,12 @@ model.setCatchTotalRejectedComputedWeight(0f); } model.setCatchTotalComputedWeight(speciesTotalUnsortedWeight - + speciesTotalSortedWeight + + speciesTotalSortedWeight + rejectedWeight); } else if (rejectedWeight != null && !totalWeight.equals(speciesTotalUnsortedWeight - + speciesTotalSortedWeight + + speciesTotalSortedWeight + rejectedWeight)) { errorMessage = _("tutti.action.computeWeights.error.incoherentTotal"); errorTitle = _("tutti.action.computeWeights.error.incoherentTotal.title"); @@ -127,7 +119,7 @@ protected void computeSpeciesBatches() { PersistenceService persistenceService = - getService(PersistenceService.class); + getContext().getPersistenceService(); EditCatchesUIModel model = getModel(); Float totalSortedWeight = 0f; @@ -156,14 +148,14 @@ } } } - + Number inertWeight = model.getSpeciesTotalInertWeight(); if (inertWeight != null) { totalSortedWeight += inertWeight.floatValue(); } else { model.setSpeciesTotalInertWeight(0f); } - + Number livingNotItemizedWeight = model.getSpeciesTotalLivingNotItemizedWeight(); if (livingNotItemizedWeight != null) { totalSortedWeight += livingNotItemizedWeight.floatValue(); @@ -308,7 +300,7 @@ } @Override - protected void releaseAction(ActionEvent event) { + protected void releaseAction() { if (errorMessage != null) { JOptionPane.showMessageDialog( getUI(), Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,7 +22,7 @@ #L% --> <JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<EditCatchesUIModel, EditCatchesUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<EditCatchesUIModel, EditCatchesUIHandler>'> <import> fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI @@ -162,11 +162,11 @@ constructorParams='this'/> </cell> </row> -<!-- <row> - <cell columns='4'> - <JLabel id='catchThalassaLabel'/> - </cell> - </row>--> + <!-- <row> + <cell columns='4'> + <JLabel id='catchThalassaLabel'/> + </cell> + </row>--> </Table> </cell> </row> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,12 +25,12 @@ */ import com.google.common.collect.Sets; -import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUI; import fr.ifremer.tutti.ui.swing.content.operation.FishingOperationsUIHandler; import fr.ifremer.tutti.ui.swing.util.AbstractTuttiTabContainerUIHandler; import fr.ifremer.tutti.ui.swing.util.TabHandler; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import jaxx.runtime.swing.CardLayout2Ext; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/EditCatchesUIModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,7 +26,7 @@ import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.TuttiComputedOrNotData; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; @@ -47,9 +47,9 @@ public static final String PROPERTY_CATCH_TOTAL_WEIGHT = "catchTotalWeight"; public static final String PROPERTY_CATCH_TOTAL_COMPUTED_WEIGHT = "catchTotalComputedWeight"; - + public static final String PROPERTY_CATCH_TOTAL_SORTED_COMPUTED_WEIGHT = "catchTotalSortedComputedWeight"; - + public static final String PROPERTY_CATCH_TOTAL_UNSORTED_COMPUTED_WEIGHT = "catchTotalUnsortedComputedWeight"; public static final String PROPERTY_CATCH_TOTAL_SORTED_TREMIS_WEIGHT = "catchTotalSortedTremisWeight"; @@ -61,13 +61,13 @@ public static final String PROPERTY_CATCH_TOTAL_REJECTED_COMPUTED_WEIGHT = "catchTotalRejectedComputedWeight"; public static final String PROPERTY_SPECIES_TOTAL_COMPUTED_WEIGHT = "speciesTotalComputedWeight"; - + public static final String PROPERTY_SPECIES_TOTAL_SORTED_WEIGHT = "speciesTotalSortedWeight"; public static final String PROPERTY_SPECIES_TOTAL_SORTED_COMPUTED_WEIGHT = "speciesTotalSortedComputedWeight"; - + public static final String PROPERTY_SPECIES_TOTAL_UNSORTED_COMPUTED_WEIGHT = "speciesTotalUnsortedComputedWeight"; - + public static final String PROPERTY_SPECIES_TOTAL_SAMPLE_SORTED_COMPUTED_WEIGHT = "speciesTotalSampleSortedComputedWeight"; public static final String PROPERTY_SPECIES_TOTAL_INERT_WEIGHT = "speciesTotalInertWeight"; @@ -132,13 +132,13 @@ protected static final Binder<EditCatchesUIModel, CatchBatch> toBeanBinder = BinderFactory.newBinder(EditCatchesUIModel.class, CatchBatch.class); protected Float speciesTotalComputedWeight; - + protected TuttiComputedOrNotData<Float> speciesTotalSortedComputedOrNotWeight = new TuttiComputedOrNotData<Float>(); protected Float speciesTotalUnsortedComputedWeight; protected Float speciesTotalSampleSortedComputedWeight; - + protected Float speciesTotalInertWeight = 0f; protected Float speciesTotalLivingNotItemizedWeight = 0f; @@ -161,9 +161,9 @@ = new TuttiComputedOrNotData<Float>(); protected Float catchTotalSortedComputedWeight; - + protected Float catchTotalUnsortedComputedWeight; - + protected Float catchTotalSortedTremisWeight; protected Float catchTotalSortedCarousselWeight; @@ -254,7 +254,7 @@ this.catchTotalComputedOrNotWeight.setComputedData(catchTotalComputedWeight); firePropertyChange(PROPERTY_CATCH_TOTAL_COMPUTED_WEIGHT, oldValue, catchTotalComputedWeight); } - + public Float getCatchTotalSortedComputedWeight() { return catchTotalSortedComputedWeight; } @@ -264,7 +264,7 @@ this.catchTotalSortedComputedWeight = catchTotalSortedComputedWeight; firePropertyChange(PROPERTY_CATCH_TOTAL_SORTED_COMPUTED_WEIGHT, oldValue, catchTotalSortedComputedWeight); } - + public Float getCatchTotalUnsortedComputedWeight() { return catchTotalUnsortedComputedWeight; } @@ -328,7 +328,7 @@ this.speciesTotalComputedWeight = speciesTotalComputedWeight; firePropertyChange(PROPERTY_SPECIES_TOTAL_COMPUTED_WEIGHT, oldValue, speciesTotalComputedWeight); } - + public TuttiComputedOrNotData<Float> getSpeciesTotalSortedComputedOrNotWeight() { return speciesTotalSortedComputedOrNotWeight; } @@ -372,7 +372,7 @@ this.speciesTotalUnsortedComputedWeight = speciesTotalUnsortedComputedWeight; firePropertyChange(PROPERTY_SPECIES_TOTAL_UNSORTED_COMPUTED_WEIGHT, oldValue, speciesTotalUnsortedComputedWeight); } - + public Float getSpeciesTotalInertWeight() { return speciesTotalInertWeight; } @@ -473,10 +473,10 @@ setCatchTotalUnsortedComputedWeight(null); setCatchTotalComputedWeight(null); } - + @Override protected CatchBatch newEntity() { return catchBatch; } - + } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/ImportPupitriAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -24,10 +24,8 @@ * #L% */ -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -38,11 +36,8 @@ */ public class ImportPupitriAction extends AbstractTuttiAction<EditCatchesUIModel, EditCatchesUI, EditCatchesUIHandler> { - private static final long serialVersionUID = 1L; - public ImportPupitriAction(EditCatchesUIHandler handler) { super(handler, - "importPupitri", "pupitri-import", _("tutti.action.importPupitri"), _("tutti.action.importPupitri.tip"), @@ -50,7 +45,7 @@ } @Override - protected void doAction(ActionEvent event) throws Exception { + protected void doAction() throws Exception { //TODO } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SaveCatchBatchAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SaveCatchBatchAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/SaveCatchBatchAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,13 +26,11 @@ import fr.ifremer.tutti.persistence.entities.data.CatchBatch; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -43,13 +41,10 @@ */ public class SaveCatchBatchAction extends AbstractTuttiAction<EditCatchesUIModel, EditCatchesUI, EditCatchesUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(SaveCatchBatchAction.class); - /** * A flag to update ui after create or save the edit catch batch. * @@ -59,7 +54,6 @@ public SaveCatchBatchAction(EditCatchesUIHandler handler) { super(handler, - "saveCatchBatch", "save", _("tutti.action.saveCatchBatch"), _("tutti.action.saveCatchBatch.tip"), @@ -72,13 +66,13 @@ } @Override - protected void releaseAction(ActionEvent event) { + protected void releaseAction() { updateUI = true; - super.releaseAction(event); + super.releaseAction(); } @Override - protected void doAction(ActionEvent event) { + public void doAction() { EditCatchesUIHandler handler = getHandler(); @@ -95,7 +89,7 @@ if (mustSave) { PersistenceService persistenceService = - getService(PersistenceService.class); + getContext().getPersistenceService(); CatchBatch catchBatch = beanToSave.toBean(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchRowModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchRowModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,7 +27,7 @@ import fr.ifremer.tutti.persistence.entities.data.AccidentalBatch; import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,10 +22,10 @@ #L% --> <JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<AccidentalBatchUIModel, AccidentalBatchUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<AccidentalBatchUIModel, AccidentalBatchUIHandler>'> <import> - fr.ifremer.tutti.ui.swing.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext fr.ifremer.tutti.ui.swing.util.editor.LongTextEditorUI Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/accidental/AccidentalBatchUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -31,10 +31,10 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.editor.AttachmentCellComponent; import fr.ifremer.tutti.ui.swing.util.editor.LongTextCellComponent; import jaxx.runtime.validator.swing.SwingValidator; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchRowModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,7 +27,7 @@ import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import org.apache.commons.collections.CollectionUtils; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchTableModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -29,8 +29,6 @@ import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import org.jdesktop.swingx.table.TableColumnModelExt; -import javax.swing.table.TableColumnModel; - import static org.nuiton.i18n.I18n.n_; /** Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,10 +22,10 @@ #L% --> <JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<BenthosBatchUIModel, BenthosBatchUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<BenthosBatchUIModel, BenthosBatchUIHandler>'> <import> - fr.ifremer.tutti.ui.swing.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext fr.ifremer.tutti.ui.swing.util.editor.LongTextEditorUI Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/benthos/BenthosBatchUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -31,10 +31,10 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.editor.AttachmentCellComponent; import fr.ifremer.tutti.ui.swing.util.editor.LongTextCellComponent; import jaxx.runtime.validator.swing.SwingValidator; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchRowModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchRowModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,7 +27,7 @@ import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.data.MacroWasteBatch; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchTableModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchTableModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,8 +28,6 @@ import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import org.jdesktop.swingx.table.TableColumnModelExt; -import javax.swing.table.TableColumnModel; - import static org.nuiton.i18n.I18n.n_; /** Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,10 +22,10 @@ #L% --> <JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<MacroWasteBatchUIModel, MacroWasteBatchUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<MacroWasteBatchUIModel, MacroWasteBatchUIHandler>'> <import> - fr.ifremer.tutti.ui.swing.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext fr.ifremer.tutti.ui.swing.util.editor.LongTextEditorUI Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/macrowaste/MacroWasteBatchUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -30,10 +30,10 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.data.MacroWasteBatch; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; -import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.editor.AttachmentCellComponent; import fr.ifremer.tutti.ui.swing.util.editor.LongTextCellComponent; import jaxx.runtime.validator.swing.SwingValidator; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchRowModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchRowModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,7 +27,7 @@ import fr.ifremer.tutti.persistence.entities.data.Attachment; import fr.ifremer.tutti.persistence.entities.data.PlanktonBatch; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchTableModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchTableModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,8 +28,6 @@ import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import org.jdesktop.swingx.table.TableColumnModelExt; -import javax.swing.table.TableColumnModel; - import static org.nuiton.i18n.I18n.n_; /** Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,10 +22,10 @@ #L% --> <JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<PlanktonBatchUIModel, PlanktonBatchUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<PlanktonBatchUIModel, PlanktonBatchUIHandler>'> <import> - fr.ifremer.tutti.ui.swing.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext fr.ifremer.tutti.ui.swing.util.editor.LongTextEditorUI fr.ifremer.tutti.ui.swing.util.editor.AttachmentEditorUI Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/plankton/PlanktonBatchUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -31,10 +31,10 @@ import fr.ifremer.tutti.persistence.entities.data.PlanktonBatch; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIModel; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.editor.AttachmentCellComponent; import fr.ifremer.tutti.ui.swing.util.editor.LongTextCellComponent; import jaxx.runtime.validator.swing.SwingValidator; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesBatchAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesBatchAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesBatchAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,14 +28,12 @@ import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.TuttiPersistence; import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; -import java.awt.event.ActionEvent; import java.util.Set; import static org.nuiton.i18n.I18n._; @@ -48,8 +46,6 @@ */ public class RemoveSpeciesBatchAction extends AbstractTuttiAction<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(RemoveSpeciesBatchAction.class); @@ -58,7 +54,6 @@ public RemoveSpeciesBatchAction(SpeciesBatchUIHandler handler) { super(handler, - "removeSpeciesBatch", "batch-delete", _("tutti.action.removeSpeciesBatch"), _("tutti.action.removeSpeciesBatch.tip"), @@ -69,10 +64,10 @@ } @Override - protected void doAction(ActionEvent event) { + protected void doAction() { TuttiPersistence persistenceService = - getContext().getService(PersistenceService.class); + getContext().getPersistenceService(); SpeciesBatchUIHandler handler = getHandler(); @@ -101,7 +96,7 @@ table.setRowSelectionInterval(parentIndex, parentIndex); // remove all his children - removeSpeciesSubBatchAction.doAction(event); + removeSpeciesSubBatchAction.performAndReleaseAction(); } else { Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesSubBatchAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesSubBatchAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RemoveSpeciesSubBatchAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,14 +28,12 @@ import com.google.common.collect.Sets; import fr.ifremer.tutti.persistence.TuttiPersistence; import fr.ifremer.tutti.persistence.entities.TuttiEntities; -import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; -import java.awt.event.ActionEvent; import java.util.Set; import static org.nuiton.i18n.I18n._; @@ -48,29 +46,24 @@ */ public class RemoveSpeciesSubBatchAction extends AbstractTuttiAction<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(RemoveSpeciesSubBatchAction.class); public RemoveSpeciesSubBatchAction(SpeciesBatchUIHandler handler) { super(handler, - "removeSpeciesSubBatch", "batch-delete", _("tutti.action.removeSpeciesSubBatch"), _("tutti.action.removeSpeciesSubBatch.tip"), false ); - - } @Override - protected void doAction(ActionEvent event) { + protected void doAction() { TuttiPersistence persistenceService = - getContext().getService(PersistenceService.class); + getContext().getPersistenceService(); SpeciesBatchUIHandler handler = getHandler(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RenameSpeciesBatchAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RenameSpeciesBatchAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/RenameSpeciesBatchAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,12 +27,11 @@ import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.JXTable; -import java.awt.event.ActionEvent; import java.util.Collection; import java.util.List; @@ -46,8 +45,6 @@ */ public class RenameSpeciesBatchAction extends AbstractTuttiAction<SpeciesBatchUIModel, SpeciesBatchUI, SpeciesBatchUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(RenameSpeciesBatchAction.class); @@ -55,7 +52,6 @@ public RenameSpeciesBatchAction(SpeciesBatchUIHandler handler) { super(handler, - "renameSpeciesBatch", "batch-rename", _("tutti.action.renameSpeciesBatch"), _("tutti.action.renameSpeciesBatch.tip"), @@ -65,8 +61,8 @@ } @Override - protected boolean prepareAction(ActionEvent event) { - boolean result = super.prepareAction(event); + protected boolean prepareAction() { + boolean result = super.prepareAction(); SpeciesBatchUIHandler handler = getHandler(); @@ -90,20 +86,20 @@ } @Override - protected void releaseAction(ActionEvent event) { + protected void releaseAction() { selectedSpecies = null; - super.releaseAction(event); + super.releaseAction(); } @Override - protected void doAction(ActionEvent event) { + protected void doAction() { SpeciesBatchUIHandler handler = getHandler(); SpeciesBatchTableModel tableModel = handler.getTableModel(); JXTable table = handler.getTable(); SpeciesBatchRowModel row = tableModel.getEntry(table.getSelectedRow()); - PersistenceService persistenceService = getService(PersistenceService.class); + PersistenceService persistenceService = getContext().getPersistenceService(); persistenceService.changeSpeciesBatchSpecies(row.getId(), selectedSpecies); Collection<Species> speciesUsed = getModel().getSpeciesUsed() Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SelectSpeciesUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SelectSpeciesUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SelectSpeciesUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,11 +22,11 @@ #L% --> <JPanel layout='{new BorderLayout()}' id='selectSpeciesPopup' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<SelectSpeciesUIModel, SelectSpeciesUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<SelectSpeciesUIModel, SelectSpeciesUIHandler>'> <import> fr.ifremer.tutti.persistence.entities.referential.Species - fr.ifremer.tutti.ui.swing.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUI jaxx.runtime.swing.editor.bean.BeanComboBox </import> Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SelectSpeciesUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SelectSpeciesUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SelectSpeciesUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,14 +27,15 @@ import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; -import fr.ifremer.tutti.ui.swing.TuttiUI; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; + /** * @author kmorin <kmorin@codelutin.com> * @since 1.0 @@ -60,14 +61,14 @@ initBeanComboBox(ui.getSpeciesCombo(), Lists.<Species>newArrayList(), null); - + getModel().addPropertyChangeListener(SelectSpeciesUIModel.PROPERTY_SPECIES, - new PropertyChangeListener() { + new PropertyChangeListener() { - public void propertyChange(PropertyChangeEvent evt) { - ui.getSpeciesCombo().getHandler().sortData(); - } - }); + public void propertyChange(PropertyChangeEvent evt) { + ui.getSpeciesCombo().getHandler().sortData(); + } + }); } @Override Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SelectSpeciesUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SelectSpeciesUIModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SelectSpeciesUIModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,7 +27,7 @@ import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import java.util.List; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchRowModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -31,8 +31,8 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.SpeciesFrequencyRowModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.TuttiComputedOrNotData; import org.apache.commons.collections.CollectionUtils; import org.nuiton.util.beans.Binder; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,10 +22,10 @@ #L% --> <JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<SpeciesBatchUIModel, SpeciesBatchUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<SpeciesBatchUIModel, SpeciesBatchUIHandler>'> <import> - fr.ifremer.tutti.ui.swing.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.util.editor.LongTextEditorUI fr.ifremer.tutti.ui.swing.util.editor.AttachmentEditorUI Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/SpeciesBatchUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -41,7 +41,6 @@ import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.content.operation.AbstractTuttiBatchTableUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; @@ -54,6 +53,7 @@ import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.SplitSpeciesBatchUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.SplitSpeciesBatchUIModel; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.editor.AttachmentCellComponent; import fr.ifremer.tutti.ui.swing.util.editor.LongTextCellComponent; @@ -399,13 +399,13 @@ // get loaded protocol - protocol = TuttiUIUtil.getProtocol(context); + protocol = getDataContext().getProtocol(); lengthCaracterics = Lists.newArrayListWithCapacity( protocol.sizeLengthClassesPmfmId()); Map<String, Caracteristic> allCaractericsById = - TuttiEntities.splitById(persistenceService.getAllCaracteristic()); + TuttiEntities.splitById(getDataContext().getCaracteristics()); if (!protocol.isLengthClassesPmfmIdEmpty()) { for (String id : protocol.getLengthClassesPmfmId()) { @@ -417,12 +417,12 @@ // use all caracteristics lengthCaracterics = Lists.newArrayList( - persistenceService.getAllCaracteristic()); + getDataContext().getCaracteristics()); } // use only the referent here, if the user needs a synonym, he will // click on the button to select another species - List<Species> speciesList = persistenceService.getAllReferentSpecies(); + List<Species> speciesList = getDataContext().getReferentSpecies(); SPECIES_REFERENT_CONTEXT_ENTRY.setContextValue(ui, speciesList); FREQUENCY_LENGTH_CONTEXT_ENTRY.setContextValue(ui, lengthCaracterics); @@ -452,7 +452,7 @@ // get loaded protocol - TuttiProtocol protocol = TuttiUIUtil.getProtocol(context); + TuttiProtocol protocol = getDataContext().getProtocol(); Preconditions.checkNotNull(protocol, "Could not find protocol in ui context"); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyRowModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -29,7 +29,7 @@ import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; import fr.ifremer.tutti.persistence.entities.data.SpeciesBatchFrequency; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyTableModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -30,7 +30,6 @@ import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import org.jdesktop.swingx.table.TableColumnModelExt; -import javax.swing.table.TableColumnModel; import java.util.List; import java.util.Map; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,12 +22,12 @@ #L% --> <JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<SpeciesFrequencyUIModel, SpeciesFrequencyUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<SpeciesFrequencyUIModel, SpeciesFrequencyUIHandler>'> <import> fr.ifremer.tutti.persistence.entities.referential.Caracteristic - fr.ifremer.tutti.ui.swing.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchRowModel Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/frequency/SpeciesFrequencyUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -33,7 +33,6 @@ 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.TuttiUI; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; @@ -42,7 +41,7 @@ import fr.ifremer.tutti.ui.swing.content.operation.catches.species.frequency.FrequencyCellComponent.FrequencyCellEditor; import fr.ifremer.tutti.ui.swing.util.Cancelable; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; -import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; import jaxx.runtime.SwingUtil; import jaxx.runtime.validator.swing.SwingValidator; @@ -190,7 +189,7 @@ if (context.isProtocolFilled()) { // get loaded protocol - protocol = TuttiUIUtil.getProtocol(context); + protocol = getDataContext().getProtocol(); Preconditions.checkNotNull(protocol, "Could not find protocol in ui context"); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/AddSpeciesAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -29,12 +29,10 @@ import fr.ifremer.tutti.persistence.TuttiPersistence; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.util.List; import java.util.Map; @@ -48,34 +46,32 @@ */ public class AddSpeciesAction extends AbstractTuttiAction<CreateSpeciesBatchUIModel, CreateSpeciesBatchUI, CreateSpeciesBatchUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(AddSpeciesAction.class); protected List<Species> allSpecies; - + protected List<Species> referentSpecies; protected Species selectedSpecies; public AddSpeciesAction(CreateSpeciesBatchUIHandler handler) { super(handler, - "addSpecies", null, _("tutti.action.addSpecies.text"), _("tutti.action.addSpecies.tip"), false ); - TuttiPersistence persistenceService = getContext().getService(PersistenceService.class); + TuttiPersistence persistenceService = + getContext().getPersistenceService(); allSpecies = persistenceService.getAllSpecies(); referentSpecies = persistenceService.getAllReferentSpecies(); } @Override - protected boolean prepareAction(ActionEvent event) { - boolean result = super.prepareAction(event); + protected boolean prepareAction() { + boolean result = super.prepareAction(); List<Species> availableSpecies = getModel().getAvailableSpecies(); List<Species> species = Lists.newArrayList(allSpecies); @@ -88,7 +84,7 @@ } @Override - protected void doAction(ActionEvent event) { + protected void doAction() { CreateSpeciesBatchUIModel model = getModel(); if (!selectedSpecies.isReferenceTaxon()) { @@ -100,7 +96,7 @@ String decoratedReferent = decorate(selectedSpecies); sendMessage(_("tutti.flash.information.species.replaced", decoratedSynonym, decoratedReferent)); } - + List<Species> availableSpecies = Lists.newArrayList(model.getAvailableSpecies()); if (!availableSpecies.contains(selectedSpecies)) { availableSpecies.add(selectedSpecies); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,7 +22,7 @@ #L% --> <JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<CreateSpeciesBatchUIModel, CreateSpeciesBatchUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<CreateSpeciesBatchUIModel, CreateSpeciesBatchUIHandler>'> <import> fr.ifremer.tutti.persistence.entities.referential.Species @@ -31,7 +31,7 @@ fr.ifremer.tutti.ui.swing.content.operation.catches.species.SampleCategoryType fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI - fr.ifremer.tutti.ui.swing.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext org.jdesktop.swingx.JXTable Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,20 +27,18 @@ import com.google.common.collect.Lists; import com.google.common.collect.Multimap; import fr.ifremer.tutti.persistence.TuttiPersistence; -import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; -import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SelectSpeciesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SelectSpeciesUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.util.Cancelable; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import jaxx.runtime.SwingUtil; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; @@ -50,9 +48,6 @@ import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.List; -import java.util.Map; -import jaxx.runtime.JAXXUtil; -import jaxx.runtime.context.JAXXContextEntryDef; /** * Handler of {@link CreateSpeciesBatchUI}. @@ -73,7 +68,7 @@ public CreateSpeciesBatchUIHandler(TuttiUI parentUi, CreateSpeciesBatchUI ui) { super(parentUi.getHandler().getContext(), ui); - persistenceService = context.getService(PersistenceService.class); + this.persistenceService = context.getPersistenceService(); Caracteristic caracteristic = persistenceService.getSortedUnsortedCaracteristic(); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/CreateSpeciesBatchUIModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,7 +28,7 @@ import com.google.common.collect.Multimap; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchRowModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchRowModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,9 +25,9 @@ */ import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SampleCategory; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SampleCategoryType; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchTableModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchTableModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,8 +28,6 @@ import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import org.jdesktop.swingx.table.TableColumnModelExt; -import javax.swing.table.TableColumnModel; - import static org.nuiton.i18n.I18n.n_; /** Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,14 +22,14 @@ #L% --> <JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<SplitSpeciesBatchUIModel, SplitSpeciesBatchUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<SplitSpeciesBatchUIModel, SplitSpeciesBatchUIHandler>'> <import> fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI fr.ifremer.tutti.ui.swing.content.operation.catches.species.SampleCategoryType fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI - fr.ifremer.tutti.ui.swing.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext org.jdesktop.swingx.JXTable Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/catches/species/split/SplitSpeciesBatchUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -29,7 +29,6 @@ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.CaracteristicQualitativeValue; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.EditCatchesUIHandler; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SampleCategory; @@ -38,6 +37,7 @@ import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchUI; import fr.ifremer.tutti.ui.swing.util.Cancelable; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; import jaxx.runtime.SwingUtil; import jaxx.runtime.validator.swing.SwingValidator; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicRowModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicRowModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,7 +26,7 @@ */ import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import java.io.Serializable; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicTabUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicTabUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicTabUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -32,10 +32,9 @@ import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; -import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; import jaxx.runtime.swing.editor.bean.BeanComboBox; @@ -200,7 +199,7 @@ } model.setCaracteristicMap(caracteristicMap); - TuttiProtocol protocol = TuttiUIUtil.getProtocol(context); + TuttiProtocol protocol = getDataContext().getProtocol(); List<String> pmfmIds = Lists.newArrayList(); if (protocol != null) { List<String> protocolPmfmId = getProtocolPmfmIds(protocol); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicTabUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicTabUIModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/CaracteristicTabUIModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,7 +28,7 @@ import fr.ifremer.tutti.persistence.entities.CaracteristicMap; import fr.ifremer.tutti.persistence.entities.data.FishingOperation; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIModel; import java.io.Serializable; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTabUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,7 +22,7 @@ #L% --> <Table - implements='fr.ifremer.tutti.ui.swing.TuttiUI<EnvironmentTabUIModel, EnvironmentTabUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<EnvironmentTabUIModel, EnvironmentTabUIHandler>'> <import> fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTableModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/environment/EnvironmentTableModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,8 +28,6 @@ import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import org.jdesktop.swingx.table.TableColumnModelExt; -import javax.swing.table.TableColumnModel; - import static org.nuiton.i18n.I18n.n_; /** Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTabUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,7 +22,7 @@ #L% --> <Table - implements='fr.ifremer.tutti.ui.swing.TuttiUI<GearShootingTabUIModel, GearShootingTabUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<GearShootingTabUIModel, GearShootingTabUIHandler>'> <import> fr.ifremer.tutti.ui.swing.content.operation.EditFishingOperationUI Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTableModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/gearshooting/GearShootingTableModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,8 +28,6 @@ import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import org.jdesktop.swingx.table.TableColumnModelExt; -import javax.swing.table.TableColumnModel; - import static org.nuiton.i18n.I18n.n_; /** Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTabUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,7 +22,7 @@ #L% --> <Table - implements='fr.ifremer.tutti.ui.swing.TuttiUI<HydrologyTabUIModel, HydrologyTabUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<HydrologyTabUIModel, HydrologyTabUIHandler>'> <import> fr.ifremer.tutti.persistence.entities.referential.Caracteristic Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTableModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/operation/fishing/hydrology/HydrologyTableModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,8 +28,6 @@ import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import org.jdesktop.swingx.table.TableColumnModelExt; -import javax.swing.table.TableColumnModel; - import static org.nuiton.i18n.I18n.n_; /** Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/CancelEditProgramAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -24,11 +24,9 @@ * #L% */ -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -39,11 +37,8 @@ */ public class CancelEditProgramAction extends AbstractTuttiAction<EditProgramUIModel, EditProgramUI, EditProgramUIHandler> { - private static final long serialVersionUID = 1L; - public CancelEditProgramAction(EditProgramUIHandler handler) { super(handler, - "cancelEditProgram", "cancel", _("tutti.action.cancel.editProgram"), _("tutti.action.cancel.editProgram.tip"), @@ -52,7 +47,7 @@ } @Override - protected void doAction(ActionEvent event) { + protected void doAction() { getContext().setScreen(TuttiScreen.SELECT_CRUISE); } 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-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,11 +22,11 @@ #L% --> <JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<EditProgramUIModel, EditProgramUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<EditProgramUIModel, EditProgramUIHandler>'> <import> fr.ifremer.tutti.persistence.entities.referential.Zone - fr.ifremer.tutti.ui.swing.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext jaxx.runtime.swing.editor.bean.BeanComboBox 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-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,9 +26,9 @@ 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.TuttiScreen; -import fr.ifremer.tutti.ui.swing.TuttiUI; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -60,7 +60,7 @@ public EditProgramUIHandler(TuttiUI parentUi, EditProgramUI ui) { super(parentUi.getHandler().getContext(), ui); - persistenceService = context.getService(PersistenceService.class); + this.persistenceService = context.getPersistenceService(); } @Override @@ -74,8 +74,8 @@ model.setExistingPrograms(programs); - String surveyId = context.getProgramId(); - if (surveyId == null) { + String programId = context.getProgramId(); + if (programId == null) { if (log.isInfoEnabled()) { log.info("Edit new program"); @@ -83,10 +83,10 @@ } else { if (log.isInfoEnabled()) { - log.info("Edit existing program " + surveyId); + log.info("Edit existing program " + programId); } // load existing program - Program program = persistenceService.getProgram(surveyId); + Program program = persistenceService.getProgram(programId); model.fromBean(program); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/EditProgramUIModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,7 +26,7 @@ import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.persistence.entities.referential.Zone; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/program/SaveProgramAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,14 +28,11 @@ import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.data.Program; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; -import fr.ifremer.tutti.ui.swing.TuttiScreen; import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -44,14 +41,11 @@ */ public class SaveProgramAction extends AbstractTuttiAction<EditProgramUIModel, EditProgramUI, EditProgramUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(SaveProgramAction.class); public SaveProgramAction(EditProgramUIHandler handler) { super(handler, - "saveProgram", "save", _("tutti.action.saveProgram"), _("tutti.action.saveProgram.tip"), @@ -62,14 +56,12 @@ /** * If the event source is a TuttiScreen, then the screen changes to the source. * Otherwise, the screen changes to the home. - * - * @param event */ @Override - protected void doAction(ActionEvent event) { + protected void doAction() { TuttiUIContext context = getContext(); PersistenceService persistenceService = - getService(PersistenceService.class); + getContext().getPersistenceService(); EditProgramUIModel model = getModel(); @@ -85,13 +77,14 @@ context.setProgramId(saved.getId()); - TuttiScreen nextScreen; - if (event.getSource().getClass().isAssignableFrom(TuttiScreen.class)) { - nextScreen = (TuttiScreen) event.getSource(); - } else { - nextScreen = TuttiScreen.SELECT_CRUISE; - } - context.setScreen(nextScreen); + //TODO-TC Make this work again but in another manner +// TuttiScreen nextScreen; +// if (event.getSource().getClass().isAssignableFrom(TuttiScreen.class)) { +// nextScreen = (TuttiScreen) event.getSource(); +// } else { +// nextScreen = TuttiScreen.SELECT_CRUISE; +// } +// context.setScreen(nextScreen); } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/AddSpeciesProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/AddSpeciesProtocolAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/AddSpeciesProtocolAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,9 +27,8 @@ import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; -import java.awt.event.ActionEvent; import java.util.Collection; import static org.nuiton.i18n.I18n._; @@ -42,11 +41,8 @@ */ public class AddSpeciesProtocolAction extends AbstractTuttiAction<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> { - private static final long serialVersionUID = 1L; - public AddSpeciesProtocolAction(EditProtocolUIHandler handler) { super(handler, - "addSpeciesProtocol", "add", null, _("tutti.action.addSpeciesProtocol.tip"), @@ -55,7 +51,7 @@ } @Override - protected void doAction(ActionEvent event) { + protected void doAction() { EditProtocolUI ui = getUI(); @@ -66,7 +62,7 @@ Preconditions.checkNotNull( species, "Can't add a speciesProtocol with a null species"); Preconditions.checkArgument(species.isReferenceTaxon(), - "Can't add a speciesProtocol with a not referent species"); + "Can't add a speciesProtocol with a not referent species"); Integer taxonId = species.getReferenceTaxonId(); String taxonIdStr = String.valueOf(taxonId); @@ -74,7 +70,7 @@ // remove all synonyms of this taxon Collection<Species> allSynonyms = getModel().getAllSynonyms(taxonIdStr); getModel().getAllSynonyms().removeAll(allSynonyms); - + ui.getSpeciesComboBox().getData().remove(species); ui.getSpeciesComboBox().getHandler().sortData(); handler.selectFirstInCombo(ui.getSpeciesComboBox()); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/CancelEditProtocolAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -24,11 +24,9 @@ * #L% */ -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; -import java.awt.event.ActionEvent; - import static org.nuiton.i18n.I18n._; /** @@ -39,11 +37,8 @@ */ public class CancelEditProtocolAction extends AbstractTuttiAction<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> { - private static final long serialVersionUID = 1L; - public CancelEditProtocolAction(EditProtocolUIHandler handler) { super(handler, - "cancelEditProtocol", "cancel", _("tutti.action.cancel.editProtocol"), _("tutti.action.cancel.editProtocol.tip"), @@ -52,7 +47,7 @@ } @Override - protected void doAction(ActionEvent event) { + protected void doAction() { getContext().setScreen(TuttiScreen.SELECT_CRUISE); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesRowModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesRowModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesRowModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,7 +27,7 @@ import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.referential.Caracteristic; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import org.nuiton.util.beans.Binder; import org.nuiton.util.beans.BinderFactory; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolSpeciesTableModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,8 +28,6 @@ import fr.ifremer.tutti.ui.swing.util.table.ColumnIdentifier; import org.jdesktop.swingx.table.TableColumnModelExt; -import javax.swing.table.TableColumnModel; - import static org.nuiton.i18n.I18n.n_; /** 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-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,12 +22,12 @@ #L% --> <JPanel id='homePanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<EditProtocolUIModel, EditProtocolUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.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.util.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext jaxx.runtime.swing.editor.bean.BeanComboBox 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-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,7 +27,6 @@ import com.ezware.oxbow.swingbits.util.Preconditions; import com.google.common.collect.Lists; import com.google.common.collect.Multimap; -import com.google.common.collect.Multimaps; import fr.ifremer.tutti.persistence.entities.TuttiEntities; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; @@ -35,13 +34,12 @@ import fr.ifremer.tutti.persistence.entities.referential.Species; 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.content.home.ImportProtocolAction; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SelectSpeciesUI; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SelectSpeciesUIModel; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableUIHandler; -import java.awt.Dimension; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.editor.bean.BeanDoubleList; import jaxx.runtime.swing.editor.bean.BeanDoubleListModel; @@ -59,6 +57,7 @@ import javax.swing.JComboBox; import javax.swing.JOptionPane; import javax.swing.table.TableColumnModel; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; @@ -80,7 +79,7 @@ LogFactory.getLog(EditProtocolUIHandler.class); protected SelectSpeciesUI dialog; - + public EditProtocolUIHandler(TuttiUI parentUi, EditProtocolUI ui) { super(parentUi.getHandler().getContext(), ui); } @@ -154,20 +153,20 @@ // load cache data - List<Species> allSpecies = Lists.newArrayList(persistenceService.getAllSpecies()); + List<Species> allSpecies = Lists.newArrayList(getDataContext().getSpecies()); model.setAllSpecies(allSpecies); - Multimap<String, Species> allSpeciesByTaxonId = + Multimap<String, Species> allSpeciesByTaxonId = TuttiEntities.splitByReferenceTaxonId(allSpecies); model.setAllSpeciesByTaxonId(allSpeciesByTaxonId); Map<String, Species> allReferentSpeciesByTaxonId = TuttiEntities.splitByTaxonId( - persistenceService.getAllReferentSpecies()); + getDataContext().getReferentSpecies()); model.setAllReferentSpeciesByTaxonId(allReferentSpeciesByTaxonId); List<TuttiProtocol> protocols = persistenceService.getAllProtocol(); model.setExistingProtocols(protocols); - List<Caracteristic> caracteristics = persistenceService.getAllCaracteristic(); + List<Caracteristic> caracteristics = getDataContext().getCaracteristics(); model.setCaracteristics(caracteristics); Map<String, Caracteristic> allCaracteristic = TuttiEntities.splitById(caracteristics); @@ -274,12 +273,12 @@ initTable(table); - Collection<Species> referents = + Collection<Species> referents = model.getAllReferentSpeciesByTaxonId().values(); List<Species> speciesList = Lists.newArrayList(referents); initBeanComboBox(ui.getSpeciesComboBox(), speciesList, null); - + List<EditProtocolSpeciesRowModel> rows; // build speciesProtocol rows @@ -322,7 +321,7 @@ // if new protocol can already cancel his creation model.setModify(model.isCreate()); - + dialog = new SelectSpeciesUI(ui); } @@ -349,7 +348,7 @@ Species species = allReferentSpeciesByTaxonId.get(taxonIdStr); // remove it from the combo box speciesList.remove(species); - + EditProtocolSpeciesRowModel row = getTableModel().createNewRow(); row.setSpecies(species); row.setLengthStepPmfm(allCaracteristic.get(speciesProtocol.getLengthStepPmfmId())); @@ -451,7 +450,7 @@ return model.getSelectedSpecies(); } - + //------------------------------------------------------------------------// //-- Internal methods --// //------------------------------------------------------------------------// Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/EditProtocolUIModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -98,9 +98,9 @@ protected boolean removeSpeciesEnabled; protected List<Species> allSpecies; - + protected List<Species> allSynonyms; - + protected Multimap<String, Species> allSpeciesByTaxonId; protected Map<String, Species> allReferentSpeciesByTaxonId; @@ -255,7 +255,7 @@ public Multimap<String, Species> getAllSpeciesByTaxonId() { return allSpeciesByTaxonId; } - + public Collection<Species> getAllSynonyms(String taxonId) { return allSpeciesByTaxonId.get(taxonId); } @@ -267,7 +267,7 @@ public List<Species> getAllSynonyms() { return allSynonyms; } - + public Map<String, Species> getAllReferentSpeciesByTaxonId() { return allReferentSpeciesByTaxonId; } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportAllCaracteristicAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportAllCaracteristicAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportAllCaracteristicAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,12 +25,11 @@ */ import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.io.File; import static org.nuiton.i18n.I18n._; @@ -43,8 +42,6 @@ */ public class ExportAllCaracteristicAction extends AbstractTuttiAction<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ExportAllCaracteristicAction.class); @@ -53,7 +50,6 @@ public ExportAllCaracteristicAction(EditProtocolUIHandler handler) { super(handler, - "exportAllCaracteristic", "export", _("tutti.action.exportAllCaracteristic"), _("tutti.action.exportAllCaracteristic.tip"), @@ -62,7 +58,7 @@ } @Override - protected boolean prepareAction(ActionEvent event) { + protected boolean prepareAction() { // choose file to import file = TuttiUIUtil.chooseFile( @@ -74,19 +70,19 @@ ); boolean doAction = file != null; if (doAction) { - super.prepareAction(event); + super.prepareAction(); } return doAction; } @Override - protected void releaseAction(ActionEvent event) { - super.releaseAction(event); + protected void releaseAction() { + super.releaseAction(); file = null; } @Override - protected void doAction(ActionEvent e) throws Exception { + protected void doAction() throws Exception { if (log.isInfoEnabled()) { log.info("Will export all caracteristic to file: " + file); @@ -94,7 +90,7 @@ // export protocol caracteristics TuttiProtocolImportExportService service = - getService(TuttiProtocolImportExportService.class); + getContext().getTuttiProtocolImportExportService(); service.exportAllCaracteristic(file, getModel().getAllCaracteristic()); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolCaracteristicAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolCaracteristicAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolCaracteristicAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,12 +26,11 @@ import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.io.File; import static org.nuiton.i18n.I18n._; @@ -44,8 +43,6 @@ */ public class ExportProtocolCaracteristicAction extends AbstractTuttiAction<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ExportProtocolCaracteristicAction.class); @@ -54,7 +51,6 @@ public ExportProtocolCaracteristicAction(EditProtocolUIHandler handler) { super(handler, - "exportProtocolCaracteristic", "export", _("tutti.action.exportProtocolCaracteristic"), _("tutti.action.exportProtocolCaracteristic.tip"), @@ -63,7 +59,7 @@ } @Override - protected boolean prepareAction(ActionEvent event) { + protected boolean prepareAction() { // choose file to import file = TuttiUIUtil.chooseFile( @@ -75,19 +71,19 @@ ); boolean doAction = file != null; if (doAction) { - super.prepareAction(event); + super.prepareAction(); } return doAction; } @Override - protected void releaseAction(ActionEvent event) { - super.releaseAction(event); + protected void releaseAction() { + super.releaseAction(); file = null; } @Override - protected void doAction(ActionEvent e) throws Exception { + protected void doAction() throws Exception { if (log.isInfoEnabled()) { log.info("Will export protocol caracteristic to file: " + file); @@ -98,7 +94,7 @@ // export protocol caracteristics TuttiProtocolImportExportService service = - getService(TuttiProtocolImportExportService.class); + getContext().getTuttiProtocolImportExportService(); service.exportProtocolCaracteristic(file, protocol, Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ExportProtocolSpeciesAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,12 +27,11 @@ import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.io.File; import java.util.List; @@ -46,8 +45,6 @@ */ public class ExportProtocolSpeciesAction extends AbstractTuttiAction<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ExportProtocolSpeciesAction.class); @@ -56,7 +53,6 @@ public ExportProtocolSpeciesAction(EditProtocolUIHandler handler) { super(handler, - "exportProtocolSpecies", "export", _("tutti.action.exportProtocolSpecies"), _("tutti.action.exportProtocolSpecies.tip"), @@ -65,7 +61,7 @@ } @Override - protected boolean prepareAction(ActionEvent event) { + protected boolean prepareAction() { // choose file to export file = TuttiUIUtil.chooseFile( @@ -77,19 +73,19 @@ ); boolean doAction = file != null; if (doAction) { - super.prepareAction(event); + super.prepareAction(); } return doAction; } @Override - protected void releaseAction(ActionEvent event) { - super.releaseAction(event); + protected void releaseAction() { + super.releaseAction(); file = null; } @Override - protected void doAction(ActionEvent e) throws Exception { + protected void doAction() throws Exception { if (log.isInfoEnabled()) { log.info("Will export protocol species to file: " + file); @@ -108,7 +104,7 @@ // import TuttiProtocolImportExportService service = - getService(TuttiProtocolImportExportService.class); + getContext().getTuttiProtocolImportExportService(); service.exportProtocolSpecies(file, protocols, Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolCaracteristicAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,12 +26,11 @@ import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.io.File; import static org.nuiton.i18n.I18n._; @@ -44,8 +43,6 @@ */ public class ImportProtocolCaracteristicAction extends AbstractTuttiAction<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ImportProtocolCaracteristicAction.class); @@ -54,7 +51,6 @@ public ImportProtocolCaracteristicAction(EditProtocolUIHandler handler) { super(handler, - "importProtocolCaracteristic", "import", _("tutti.action.importProtocolCaracteristic"), _("tutti.action.importProtocolCaracteristic.tip"), @@ -63,7 +59,7 @@ } @Override - protected boolean prepareAction(ActionEvent event) { + protected boolean prepareAction() { // choose file to import file = TuttiUIUtil.chooseFile( @@ -75,19 +71,19 @@ ); boolean doAction = file != null; if (doAction) { - super.prepareAction(event); + super.prepareAction(); } return doAction; } @Override - protected void releaseAction(ActionEvent event) { - super.releaseAction(event); + protected void releaseAction() { + super.releaseAction(); file = null; } @Override - protected void doAction(ActionEvent e) throws Exception { + protected void doAction() throws Exception { if (log.isInfoEnabled()) { log.info("Will import protocol caracteristic file: " + file); @@ -100,7 +96,7 @@ TuttiProtocol protocol = model.toBean(); TuttiProtocolImportExportService service = - getService(TuttiProtocolImportExportService.class); + getContext().getTuttiProtocolImportExportService(); service.importProtocolCaracteristic(file, protocol, Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/ImportProtocolSpeciesAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,13 +27,12 @@ import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.protocol.TuttiProtocolImportExportService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import jaxx.runtime.swing.editor.bean.BeanComboBox; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.io.File; import java.util.List; @@ -47,8 +46,6 @@ */ public class ImportProtocolSpeciesAction extends AbstractTuttiAction<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ImportProtocolSpeciesAction.class); @@ -57,7 +54,6 @@ public ImportProtocolSpeciesAction(EditProtocolUIHandler handler) { super(handler, - "importProtocolSpecies", "import", _("tutti.action.importProtocolSpecies"), _("tutti.action.importProtocolSpecies.tip"), @@ -66,7 +62,7 @@ } @Override - protected boolean prepareAction(ActionEvent event) { + protected boolean prepareAction() { // choose file to import file = TuttiUIUtil.chooseFile( @@ -78,19 +74,19 @@ ); boolean doAction = file != null; if (doAction) { - super.prepareAction(event); + super.prepareAction(); } return doAction; } @Override - protected void releaseAction(ActionEvent event) { - super.releaseAction(event); + protected void releaseAction() { + super.releaseAction(); file = null; } @Override - protected void doAction(ActionEvent e) throws Exception { + protected void doAction() throws Exception { if (log.isInfoEnabled()) { log.info("Will import protocol species file: " + file); @@ -104,7 +100,7 @@ // import TuttiProtocolImportExportService service = - getService(TuttiProtocolImportExportService.class); + getContext().getTuttiProtocolImportExportService(); service.importProtocolSpecies(file, protocol, Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/RemoveSpeciesProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/RemoveSpeciesProtocolAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/RemoveSpeciesProtocolAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,14 +28,12 @@ import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.referential.Species; import fr.ifremer.tutti.service.DecoratorService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; +import jaxx.runtime.swing.editor.bean.BeanComboBox; -import java.awt.event.ActionEvent; -import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.List; -import jaxx.runtime.swing.editor.bean.BeanComboBox; import static org.nuiton.i18n.I18n._; @@ -47,11 +45,8 @@ */ public class RemoveSpeciesProtocolAction extends AbstractTuttiAction<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> { - private static final long serialVersionUID = 1L; - public RemoveSpeciesProtocolAction(EditProtocolUIHandler handler) { super(handler, - "removeSpeciesProtocol", "batch-delete", _("tutti.action.removeSpeciesProtocol"), _("tutti.action.removeSpeciesProtocol.tip"), @@ -60,7 +55,7 @@ } @Override - protected void doAction(ActionEvent event) { + protected void doAction() { EditProtocolUIHandler handler = getHandler(); int rowIndex = handler.getTable().getSelectedRow(); @@ -77,7 +72,7 @@ BeanComboBox<Species> combo = getUI().getSpeciesComboBox(); combo.getData().add(species); combo.getHandler().sortData(); - + EditProtocolUIModel model = getModel(); Integer taxonId = species.getReferenceTaxonId(); List<Species> allSynonyms = Lists.newArrayList( @@ -97,7 +92,7 @@ } return o1.getName().compareTo(o2.getName()); } - + }); // remove the row from the model(do it after treating the comboBox which can be long) Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SaveProtocolAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -30,13 +30,11 @@ import fr.ifremer.tutti.persistence.entities.protocol.SpeciesProtocol; import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; -import fr.ifremer.tutti.ui.swing.TuttiScreen; import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.util.List; import static org.nuiton.i18n.I18n._; @@ -52,11 +50,8 @@ /** Logger. */ private static final Log log = LogFactory.getLog(SaveProtocolAction.class); - private static final long serialVersionUID = 1L; - public SaveProtocolAction(EditProtocolUIHandler handler) { super(handler, - "saveProtocol", "save", _("tutti.action.saveProtocol"), _("tutti.action.saveProtocol.tip"), @@ -67,16 +62,14 @@ /** * If the event source is a TuttiScreen, then the screen changes to the source. * Otherwise, the screen changes to the home. - * - * @param event */ @Override - protected void doAction(ActionEvent event) { + protected void doAction() { EditProtocolUIModel model = getModel(); TuttiUIContext context = getContext(); EditProtocolUIHandler handler = getHandler(); PersistenceService persistenceService = - context.getService(PersistenceService.class); + context.getPersistenceService(); TuttiProtocol bean = model.toBean(); @@ -106,13 +99,14 @@ context.setProtocolId(saved.getId()); - TuttiScreen nextScreen; - if (event.getSource().getClass().isAssignableFrom(TuttiScreen.class)) { - nextScreen = (TuttiScreen) event.getSource(); - } else { - nextScreen = TuttiScreen.SELECT_CRUISE; - } - context.setScreen(nextScreen); + //TODO-TC Make this works again (but in another manner)... +// TuttiScreen nextScreen; +// if (event.getSource().getClass().isAssignableFrom(TuttiScreen.class)) { +// nextScreen = (TuttiScreen) event.getSource(); +// } else { +// nextScreen = TuttiScreen.SELECT_CRUISE; +// } +// context.setScreen(nextScreen); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SelectOtherSpeciesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SelectOtherSpeciesAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/protocol/SelectOtherSpeciesAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -27,25 +27,23 @@ import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.referential.Species; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; -import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.*; -import java.awt.event.ActionEvent; -import java.util.Collection; -import java.util.List; +import fr.ifremer.tutti.ui.swing.content.operation.catches.species.split.AddSpeciesAction; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; + +import java.util.List; + import static org.nuiton.i18n.I18n._; /** * Action to select a species which is not in the referent list. - * + * * @author kmorin <kmorin@codelutin.com> * @since 1.1 */ public class SelectOtherSpeciesAction extends AbstractTuttiAction<EditProtocolUIModel, EditProtocolUI, EditProtocolUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(AddSpeciesAction.class); @@ -53,7 +51,6 @@ public SelectOtherSpeciesAction(EditProtocolUIHandler handler) { super(handler, - "selectOtherSpecies", null, _("tutti.action.selectOtherSpecies.text"), _("tutti.action.selectOtherSpecies.tip"), @@ -62,8 +59,8 @@ } @Override - protected boolean prepareAction(ActionEvent event) { - boolean result = super.prepareAction(event); + protected boolean prepareAction() { + boolean result = super.prepareAction(); EditProtocolUIModel model = getModel(); List<Species> species = Lists.newArrayList(model.getAllSynonyms()); @@ -76,7 +73,7 @@ } @Override - protected void doAction(ActionEvent event) { + protected void doAction() { String decoratedSynonym = decorate(selectedSpecies); String taxonId = String.valueOf(selectedSpecies.getReferenceTaxonId()); selectedSpecies = getModel().getAllReferentSpeciesByTaxonId().get(taxonId); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryGearExampleAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryGearExampleAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryGearExampleAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,13 +25,12 @@ */ import fr.ifremer.tutti.service.referential.TuttiReferentialImportExportService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.io.File; import static org.nuiton.i18n.I18n._; @@ -44,8 +43,6 @@ */ public class ExportTemporaryGearExampleAction extends AbstractTuttiAction<TuttiUIContext, ManageTemporaryReferentialUI, ManageTemporaryReferentialUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ExportTemporaryGearExampleAction.class); @@ -54,7 +51,6 @@ public ExportTemporaryGearExampleAction(ManageTemporaryReferentialUIHandler handler) { super(handler, - "exportTemporaryGearExample", "export", _("tutti.action.exportTemporaryGearExample"), _("tutti.action.exportTemporaryGearExample.tip"), @@ -63,7 +59,7 @@ } @Override - protected boolean prepareAction(ActionEvent event) { + protected boolean prepareAction() { // choose file to export file = TuttiUIUtil.chooseFile( @@ -75,19 +71,19 @@ ); boolean doAction = file != null; if (doAction) { - super.prepareAction(event); + super.prepareAction(); } return doAction; } @Override - protected void releaseAction(ActionEvent event) { - super.releaseAction(event); + protected void releaseAction() { + super.releaseAction(); file = null; } @Override - protected void doAction(ActionEvent e) throws Exception { + protected void doAction() throws Exception { if (log.isInfoEnabled()) { log.info("Will export example gears temporary " + @@ -95,7 +91,7 @@ } TuttiReferentialImportExportService service = - getService(TuttiReferentialImportExportService.class); + getContext().getTuttiReferentialImportExportService(); service.exportTemporaryGearExample(file); sendMessage("Exemple de référentiel temporaire d'engins exporté " + Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryPersonExampleAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryPersonExampleAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryPersonExampleAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,13 +25,12 @@ */ import fr.ifremer.tutti.service.referential.TuttiReferentialImportExportService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.io.File; import static org.nuiton.i18n.I18n._; @@ -43,7 +42,6 @@ * @since 1.0 */ public class ExportTemporaryPersonExampleAction extends AbstractTuttiAction<TuttiUIContext, ManageTemporaryReferentialUI, ManageTemporaryReferentialUIHandler> { - private static final long serialVersionUID = 1L; /** Logger. */ @@ -54,7 +52,6 @@ public ExportTemporaryPersonExampleAction(ManageTemporaryReferentialUIHandler handler) { super(handler, - "exportTemporaryPersonExample", "export", _("tutti.action.exportTemporaryPersonExample"), _("tutti.action.exportTemporaryPersonExample.tip"), @@ -63,7 +60,7 @@ } @Override - protected boolean prepareAction(ActionEvent event) { + protected boolean prepareAction() { // choose file to export file = TuttiUIUtil.chooseFile( @@ -75,19 +72,19 @@ ); boolean doAction = file != null; if (doAction) { - super.prepareAction(event); + super.prepareAction(); } return doAction; } @Override - protected void releaseAction(ActionEvent event) { - super.releaseAction(event); + protected void releaseAction() { + super.releaseAction(); file = null; } @Override - protected void doAction(ActionEvent e) throws Exception { + protected void doAction() throws Exception { if (log.isInfoEnabled()) { log.info("Will export example persons temporary " + @@ -95,7 +92,7 @@ } TuttiReferentialImportExportService service = - getService(TuttiReferentialImportExportService.class); + getContext().getTuttiReferentialImportExportService(); service.exportTemporaryPersonExample(file); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporarySpeciesExampleAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporarySpeciesExampleAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporarySpeciesExampleAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,13 +25,12 @@ */ import fr.ifremer.tutti.service.referential.TuttiReferentialImportExportService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.io.File; import static org.nuiton.i18n.I18n._; @@ -44,8 +43,6 @@ */ public class ExportTemporarySpeciesExampleAction extends AbstractTuttiAction<TuttiUIContext, ManageTemporaryReferentialUI, ManageTemporaryReferentialUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ExportTemporarySpeciesExampleAction.class); @@ -54,7 +51,6 @@ public ExportTemporarySpeciesExampleAction(ManageTemporaryReferentialUIHandler handler) { super(handler, - "exportTemporarySpeciesExample", "export", _("tutti.action.exportTemporarySpeciesExample"), _("tutti.action.exportTemporarySpeciesExample.tip"), @@ -63,7 +59,7 @@ } @Override - protected boolean prepareAction(ActionEvent event) { + protected boolean prepareAction() { // choose file to export file = TuttiUIUtil.chooseFile( @@ -75,19 +71,19 @@ ); boolean doAction = file != null; if (doAction) { - super.prepareAction(event); + super.prepareAction(); } return doAction; } @Override - protected void releaseAction(ActionEvent event) { - super.releaseAction(event); + protected void releaseAction() { + super.releaseAction(); file = null; } @Override - protected void doAction(ActionEvent e) throws Exception { + protected void doAction() throws Exception { if (log.isInfoEnabled()) { log.info("Will export example species temporary " + @@ -95,7 +91,7 @@ } TuttiReferentialImportExportService service = - getService(TuttiReferentialImportExportService.class); + getContext().getTuttiReferentialImportExportService(); service.exportTemporarySpeciesExample(file); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryVesselExampleAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryVesselExampleAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ExportTemporaryVesselExampleAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,13 +25,12 @@ */ import fr.ifremer.tutti.service.referential.TuttiReferentialImportExportService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.io.File; import static org.nuiton.i18n.I18n._; @@ -44,8 +43,6 @@ */ public class ExportTemporaryVesselExampleAction extends AbstractTuttiAction<TuttiUIContext, ManageTemporaryReferentialUI, ManageTemporaryReferentialUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ExportTemporaryVesselExampleAction.class); @@ -54,7 +51,6 @@ public ExportTemporaryVesselExampleAction(ManageTemporaryReferentialUIHandler handler) { super(handler, - "exportTemporaryVesselExample", "export", _("tutti.action.exportTemporaryVesselExample"), _("tutti.action.exportTemporaryVesselExample.tip"), @@ -63,7 +59,7 @@ } @Override - protected boolean prepareAction(ActionEvent event) { + protected boolean prepareAction() { // choose file to export file = TuttiUIUtil.chooseFile( @@ -75,19 +71,19 @@ ); boolean doAction = file != null; if (doAction) { - super.prepareAction(event); + super.prepareAction(); } return doAction; } @Override - protected void releaseAction(ActionEvent event) { - super.releaseAction(event); + protected void releaseAction() { + super.releaseAction(); file = null; } @Override - protected void doAction(ActionEvent e) throws Exception { + protected void doAction() throws Exception { if (log.isInfoEnabled()) { log.info("Will export example vessels temporary " + @@ -95,7 +91,7 @@ } TuttiReferentialImportExportService service = - getService(TuttiReferentialImportExportService.class); + getContext().getTuttiReferentialImportExportService(); service.exportTemporaryVesselExample(file); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryGearAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryGearAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryGearAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,13 +25,12 @@ */ import fr.ifremer.tutti.service.referential.TuttiReferentialImportExportService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.io.File; import static org.nuiton.i18n.I18n._; @@ -44,8 +43,6 @@ */ public class ImportTemporaryGearAction extends AbstractTuttiAction<TuttiUIContext, ManageTemporaryReferentialUI, ManageTemporaryReferentialUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ImportTemporaryGearAction.class); @@ -54,7 +51,6 @@ public ImportTemporaryGearAction(ManageTemporaryReferentialUIHandler handler) { super(handler, - "importTemporaryGear", "import", _("tutti.action.importTemporaryGear"), _("tutti.action.importTemporaryGear.tip"), @@ -63,7 +59,7 @@ } @Override - protected boolean prepareAction(ActionEvent event) { + protected boolean prepareAction() { // choose file to import file = TuttiUIUtil.chooseFile( @@ -75,19 +71,19 @@ boolean doAction = file != null; if (doAction) { - super.prepareAction(event); + super.prepareAction(); } return doAction; } @Override - protected void releaseAction(ActionEvent event) { - super.releaseAction(event); + protected void releaseAction() { + super.releaseAction(); file = null; } @Override - protected void doAction(ActionEvent e) throws Exception { + protected void doAction() throws Exception { if (log.isInfoEnabled()) { log.info("Will import gear temporary " + @@ -95,10 +91,13 @@ } TuttiReferentialImportExportService service = - getService(TuttiReferentialImportExportService.class); + getContext().getTuttiReferentialImportExportService(); service.importTemporaryGear(file); + // reset ui cache + getDataContext().resetGears(); + sendMessage("Référentiel temporaire d'engins importé depuis le " + "fichier " + file + "."); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryPersonAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryPersonAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryPersonAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,13 +25,12 @@ */ import fr.ifremer.tutti.service.referential.TuttiReferentialImportExportService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.io.File; import static org.nuiton.i18n.I18n._; @@ -44,8 +43,6 @@ */ public class ImportTemporaryPersonAction extends AbstractTuttiAction<TuttiUIContext, ManageTemporaryReferentialUI, ManageTemporaryReferentialUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ImportTemporaryPersonAction.class); @@ -54,7 +51,6 @@ public ImportTemporaryPersonAction(ManageTemporaryReferentialUIHandler handler) { super(handler, - "importTemporaryPerson", "import", _("tutti.action.importTemporaryPerson"), _("tutti.action.importTemporaryPerson.tip"), @@ -63,7 +59,7 @@ } @Override - protected boolean prepareAction(ActionEvent event) { + protected boolean prepareAction() { // choose file to import file = TuttiUIUtil.chooseFile( @@ -75,19 +71,19 @@ boolean doAction = file != null; if (doAction) { - super.prepareAction(event); + super.prepareAction(); } return doAction; } @Override - protected void releaseAction(ActionEvent event) { - super.releaseAction(event); + protected void releaseAction() { + super.releaseAction(); file = null; } @Override - protected void doAction(ActionEvent e) throws Exception { + protected void doAction() throws Exception { if (log.isInfoEnabled()) { log.info("Will import person temporary " + @@ -95,10 +91,13 @@ } TuttiReferentialImportExportService service = - getService(TuttiReferentialImportExportService.class); + getContext().getTuttiReferentialImportExportService(); service.importTemporaryPerson(file); + // reset ui cache + getDataContext().resetPersons(); + sendMessage("Référentiel temporaire de personnes importé depuis le " + "fichier " + file + "."); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporarySpeciesAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporarySpeciesAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporarySpeciesAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,13 +25,12 @@ */ import fr.ifremer.tutti.service.referential.TuttiReferentialImportExportService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.io.File; import static org.nuiton.i18n.I18n._; @@ -44,8 +43,6 @@ */ public class ImportTemporarySpeciesAction extends AbstractTuttiAction<TuttiUIContext, ManageTemporaryReferentialUI, ManageTemporaryReferentialUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ImportTemporarySpeciesAction.class); @@ -54,7 +51,6 @@ public ImportTemporarySpeciesAction(ManageTemporaryReferentialUIHandler handler) { super(handler, - "importTemporarySpecies", "import", _("tutti.action.importTemporarySpecies"), _("tutti.action.importTemporarySpecies.tip"), @@ -63,7 +59,7 @@ } @Override - protected boolean prepareAction(ActionEvent event) { + protected boolean prepareAction() { // choose file to import file = TuttiUIUtil.chooseFile( @@ -75,19 +71,19 @@ boolean doAction = file != null; if (doAction) { - super.prepareAction(event); + super.prepareAction(); } return doAction; } @Override - protected void releaseAction(ActionEvent event) { - super.releaseAction(event); + protected void releaseAction() { + super.releaseAction(); file = null; } @Override - protected void doAction(ActionEvent e) throws Exception { + protected void doAction() throws Exception { if (log.isInfoEnabled()) { log.info("Will import species temporary " + @@ -95,10 +91,13 @@ } TuttiReferentialImportExportService service = - getService(TuttiReferentialImportExportService.class); + getContext().getTuttiReferentialImportExportService(); service.importTemporarySpecies(file); + // reset ui cache + getDataContext().resetSpecies(); + sendMessage("Référentiel temporaire d'espèces importé depuis le " + "fichier " + file + "."); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryVesselAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryVesselAction.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ImportTemporaryVesselAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,13 +25,12 @@ */ import fr.ifremer.tutti.service.referential.TuttiReferentialImportExportService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.awt.event.ActionEvent; import java.io.File; import static org.nuiton.i18n.I18n._; @@ -44,8 +43,6 @@ */ public class ImportTemporaryVesselAction extends AbstractTuttiAction<TuttiUIContext, ManageTemporaryReferentialUI, ManageTemporaryReferentialUIHandler> { - private static final long serialVersionUID = 1L; - /** Logger. */ private static final Log log = LogFactory.getLog(ImportTemporaryVesselAction.class); @@ -54,7 +51,6 @@ public ImportTemporaryVesselAction(ManageTemporaryReferentialUIHandler handler) { super(handler, - "importTemporaryVessel", "import", _("tutti.action.importTemporaryVessel"), _("tutti.action.importTemporaryVessel.tip"), @@ -63,7 +59,7 @@ } @Override - protected boolean prepareAction(ActionEvent event) { + protected boolean prepareAction() { // choose file to import file = TuttiUIUtil.chooseFile( @@ -75,19 +71,19 @@ boolean doAction = file != null; if (doAction) { - super.prepareAction(event); + super.prepareAction(); } return doAction; } @Override - protected void releaseAction(ActionEvent event) { - super.releaseAction(event); + protected void releaseAction() { + super.releaseAction(); file = null; } @Override - protected void doAction(ActionEvent e) throws Exception { + protected void doAction() throws Exception { if (log.isInfoEnabled()) { log.info("Will import vessel temporary " + @@ -95,10 +91,13 @@ } TuttiReferentialImportExportService service = - getService(TuttiReferentialImportExportService.class); + getContext().getTuttiReferentialImportExportService(); service.importTemporaryVessel(file); + // reset ui cache + getDataContext().resetVessels(); + sendMessage("Référentiel temporaire de navires importé depuis le " + "fichier " + file + "."); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -22,11 +22,11 @@ #L% --> <JPanel id='manageTemporaryReferentialTopPanel' layout='{new BorderLayout()}' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<TuttiUIContext, ManageTemporaryReferentialUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<TuttiUIContext, ManageTemporaryReferentialUIHandler>'> <import> - fr.ifremer.tutti.ui.swing.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext static org.nuiton.i18n.I18n._ Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/content/referential/ManageTemporaryReferentialUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,8 +25,8 @@ */ import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -50,7 +50,7 @@ protected ManageTemporaryReferentialUIHandler(TuttiUIContext context, ManageTemporaryReferentialUI ui) { super(context, ui); - this.persistenceService = context.getService(PersistenceService.class); + this.persistenceService = context.getPersistenceService(); } //------------------------------------------------------------------------// Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiBeanUIModel.java (from rev 502, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiBeanUIModel.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiBeanUIModel.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiBeanUIModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -0,0 +1,130 @@ +package fr.ifremer.tutti.ui.swing.util; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import fr.ifremer.tutti.persistence.entities.IdAware; +import fr.ifremer.tutti.service.TuttiTechnicalException; +import org.jdesktop.beans.AbstractSerializableBean; +import org.nuiton.util.beans.Binder; + +/** + * Abstract UI model to edit a bean. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public abstract class AbstractTuttiBeanUIModel<E, B extends AbstractTuttiBeanUIModel<E, B>> extends AbstractSerializableBean implements IdAware { + + private static final long serialVersionUID = 1L; + + public static final String PROPERTY_ID = "id"; + + public static final String PROPERTY_MODIFY = "modify"; + + public static final String PROPERTY_VALID = "valid"; + + protected String id; + + protected boolean modify; + + protected boolean valid; + + private final Class<E> entityType; + + private final Binder<E, B> fromBeanBinder; + + private final Binder<B, E> toBeanBinder; + + protected AbstractTuttiBeanUIModel(Class<E> entityType, + Binder<E, B> fromBeanBinder, + Binder<B, E> toBeanBinder) { + this.entityType = entityType; + this.fromBeanBinder = fromBeanBinder; + this.toBeanBinder = toBeanBinder; + } + + public final void fromBean(E bean) { + fromBeanBinder.copy(bean, (B) this); + } + + public final E toBean() { + E result = newEntity(); + toBeanBinder.copy((B) this, result); + return result; + } + + protected E newEntity() { + try { + E result = entityType.newInstance(); + return result; + } catch (Exception e) { + throw new TuttiTechnicalException( + "Could not instanciate entity of type " + + entityType.getName(), e); + } + } + + public String getId() { + return id; + } + + public void setId(String id) { + Object oldValue = getId(); + this.id = id; + firePropertyChange(PROPERTY_ID, oldValue, id); + } + + public String getTitle() { + return null; + } + + public String getIcon() { + return null; + } + + public boolean isModify() { + return modify; + } + + public void setModify(boolean modify) { + Object oldValue = isModify(); + this.modify = modify; + firePropertyChange(PROPERTY_MODIFY, oldValue, modify); + } + + public boolean isValid() { + return valid; + } + + public void setValid(boolean valid) { + Object oldValue = isValid(); + this.valid = valid; + firePropertyChange(PROPERTY_VALID, oldValue, valid); + } + + public boolean isCreate() { + return id == null; + } +} Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiTabContainerUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,9 +25,6 @@ * #L% */ -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; -import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; -import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java (from rev 502, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiUIHandler.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/AbstractTuttiUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -0,0 +1,635 @@ +package fr.ifremer.tutti.ui.swing.util; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 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.google.common.base.Preconditions; +import com.google.common.collect.Lists; +import com.google.common.collect.Sets; +import fr.ifremer.tutti.persistence.entities.IdAware; +import fr.ifremer.tutti.service.DecoratorService; +import fr.ifremer.tutti.ui.swing.AbstractMainUITuttiAction; +import fr.ifremer.tutti.ui.swing.MainUI; +import fr.ifremer.tutti.ui.swing.MainUIHandler; +import fr.ifremer.tutti.ui.swing.TuttiDataContext; +import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; +import fr.ifremer.tutti.ui.swing.util.action.TuttiUIAction; +import fr.ifremer.tutti.ui.swing.util.editor.SimpleTimeEditor; +import jaxx.runtime.JAXXUtil; +import jaxx.runtime.SwingUtil; +import jaxx.runtime.swing.editor.NumberEditor; +import jaxx.runtime.swing.editor.bean.BeanComboBox; +import jaxx.runtime.swing.editor.bean.BeanDoubleList; +import jaxx.runtime.swing.renderer.DecoratorListCellRenderer; +import jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.reflect.ConstructorUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.jdesktop.swingx.JXDatePicker; +import org.nuiton.util.decorator.Decorator; +import org.nuiton.util.decorator.JXPathDecorator; +import org.nuiton.validator.bean.simple.SimpleBeanValidator; + +import javax.swing.AbstractAction; +import javax.swing.AbstractButton; +import javax.swing.Action; +import javax.swing.DefaultComboBoxModel; +import javax.swing.JComponent; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JList; +import javax.swing.JOptionPane; +import javax.swing.JRootPane; +import javax.swing.JTextField; +import javax.swing.KeyStroke; +import javax.swing.ListCellRenderer; +import javax.swing.ListSelectionModel; +import javax.swing.event.ListSelectionEvent; +import javax.swing.text.JTextComponent; +import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; +import java.awt.Font; +import java.awt.Frame; +import java.awt.event.ActionEvent; +import java.awt.event.FocusAdapter; +import java.awt.event.FocusEvent; +import java.awt.event.ItemEvent; +import java.awt.event.KeyEvent; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; +import java.beans.PropertyChangeEvent; +import java.beans.PropertyChangeListener; +import java.io.Serializable; +import java.text.ParseException; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import static org.nuiton.i18n.I18n._; + +/** + * Contract of any UI handler. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public abstract class AbstractTuttiUIHandler<M, UI extends TuttiUI<M, ?>> implements UIMessageNotifier { + + /** Logger. */ + private static final Log log = + LogFactory.getLog(AbstractTuttiUIHandler.class); + + public abstract void beforeInitUI(); + + public abstract void afterInitUI(); + + public abstract void onCloseUI(); + + public abstract SwingValidator<M> getValidator(); + + /** + * Global application context. + * + * @since 0.1 + */ + protected final TuttiUIContext context; + + /** + * UI handled. + * + * @since 0.1 + */ + protected final UI ui; + + protected AbstractTuttiUIHandler(TuttiUIContext context, UI ui) { + this.context = context; + this.ui = ui; + } + + //------------------------------------------------------------------------// + //-- Public methods --// + //------------------------------------------------------------------------// + + public DefaultComboBoxModel newComboModel(Object... items) { + return new DefaultComboBoxModel(items); + } + + public DefaultComboBoxModel newComboActionModel(Class<?>... actionNames) { + List<Object> items = Lists.newArrayListWithCapacity(actionNames.length); + for (Class<?> actionName : actionNames) { + Action action = createAction((Class<AbstractTuttiAction>) actionName); + items.add(action); + } + return newComboModel(items.toArray()); + } + + public final M getModel() { + return ui.getModel(); + } + + public final UI getUI() { + return ui; + } + + @Override + public void showInformationMessage(String message) { + context.showInformationMessage(message); + } + + public TuttiUIContext getContext() { + return context; + } + + public TuttiDataContext getDataContext() { + return getContext().getDataContext(); + } + + public TuttiApplicationConfig getConfig() { + return context.getConfig(); + } + + /** + * Can the UI be closed? It is useful whe the user wants to exit the current + * screen but the model is modified: we can then ask the user if he wants to + * save or not. + * + * @param nextScreen the next screen to display + * @return {@code true} if UI can be closed, {@code false} otherwise. + */ + public boolean canCloseUI(TuttiScreen nextScreen) { + return true; + } + + public void setText(KeyEvent event, String property) { + JTextComponent field = (JTextComponent) event.getSource(); + String value = field.getText(); + TuttiUIUtil.setProperty(getModel(), property, value); + } + + public void setBoolean(ItemEvent event, String property) { + boolean value = event.getStateChange() == ItemEvent.SELECTED; + TuttiUIUtil.setProperty(getModel(), property, value); + } + + public void setDate(ActionEvent event, String property) { + JXDatePicker field = (JXDatePicker) event.getSource(); + Date value = field.getDate(); + TuttiUIUtil.setProperty(getModel(), property, value); + } + + public void selectListData(ListSelectionEvent event, String property) { + if (!event.getValueIsAdjusting()) { + JList list = (JList) event.getSource(); + ListSelectionModel selectionModel = list.getSelectionModel(); + + selectionModel.setValueIsAdjusting(true); + try { + List selectedList = Lists.newLinkedList(); + + for (int index : list.getSelectedIndices()) { + Object o = list.getModel().getElementAt(index); + selectedList.add(o); + } + TuttiUIUtil.setProperty(getModel(), property, selectedList); + } finally { + selectionModel.setValueIsAdjusting(false); + } + } + } + + public void openDialog(TuttiUI ui, + TuttiUI dialogContent, + String title, Dimension dim) { + Frame frame = SwingUtil.getParentContainer(ui, Frame.class); + + JDialog result = new JDialog(frame, true); + result.setTitle(title); + result.add((Component) dialogContent); + result.setResizable(true); + + result.setSize(dim); + + final AbstractTuttiUIHandler handler = dialogContent.getHandler(); + + if (handler instanceof Cancelable) { + + // add a auto-close action + JRootPane rootPane = result.getRootPane(); + + KeyStroke shortcutClosePopup = getConfig().getShortcutClosePopup(); + + rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put( + shortcutClosePopup, "close"); + rootPane.getActionMap().put("close", new AbstractAction() { + private static final long serialVersionUID = 1L; + + @Override + public void actionPerformed(ActionEvent e) { + ((Cancelable) handler).cancel(); + } + }); + } + + result.addWindowListener(new WindowAdapter() { + + @Override + public void windowClosed(WindowEvent e) { + Component ui = (Component) e.getSource(); + if (log.isInfoEnabled()) { + log.info("Destroy ui " + ui); + } + JAXXUtil.destroy(ui); + } + }); + SwingUtil.center(frame, result); + result.setVisible(true); + } + + public void closeDialog(TuttiUI ui) { + SwingUtil.getParentContainer(ui, JDialog.class).setVisible(false); + } + + public int askSaveBeforeLeaving(String message) { + int i = JOptionPane.showConfirmDialog( + getContext().getMainUI(), + message, + _("tutti.dialog.askSaveBeforeLeaving.title"), + JOptionPane.YES_NO_CANCEL_OPTION); + return i; + } + + public int askCancelEditBeforeLeaving(String message) { + int i = JOptionPane.showConfirmDialog( + getContext().getMainUI(), + message, + _("tutti.dialog.askCancelEditBeforeLeaving.title"), + JOptionPane.YES_NO_OPTION); + return i; + } + //------------------------------------------------------------------------// + //-- Internal methods --// + //------------------------------------------------------------------------// + + protected void initUI(TuttiUI ui) { + + for (Map.Entry<String, Object> entry : ui.get$objectMap().entrySet()) { + Object component = entry.getValue(); + if (component instanceof NumberEditor) { + initNumberEditor((NumberEditor) component); + + } else if (component instanceof JXDatePicker) { + initDatePicker((JXDatePicker) component); + + } else if (component instanceof SimpleTimeEditor) { + initTimeEditor((SimpleTimeEditor) component); + + } else if (component instanceof JLabel) { + JLabel jLabel = (JLabel) component; + Boolean strongStyle = (Boolean) jLabel.getClientProperty("strongStyle"); + Boolean italicStyle = (Boolean) jLabel.getClientProperty("italicStyle"); + boolean addHtml = strongStyle != null && strongStyle || italicStyle != null && italicStyle; + if (addHtml) { + String text = jLabel.getText(); + if (strongStyle != null && strongStyle) { + text = "<strong>" + text + "</strong>"; + } + if (italicStyle != null && italicStyle) { + text = "<em>" + text + "</em>"; + } + jLabel.setText("<html>" + text + "</html>"); + } + + } else if (component instanceof JTextField) { + JTextField jTextField = (JTextField) component; + Boolean computed = (Boolean) jTextField.getClientProperty("computed"); + if (computed != null && computed) { + Font font = jTextField.getFont().deriveFont(Font.ITALIC); + jTextField.setFont(font); + jTextField.setEditable(!computed); + jTextField.setEnabled(!computed); + jTextField.setDisabledTextColor(Color.BLUE); + } + + } else if (component instanceof AbstractButton) { + AbstractButton abstractButton = (AbstractButton) component; + Class<AbstractTuttiAction> actionName = (Class<AbstractTuttiAction>) abstractButton.getClientProperty("tuttiAction"); + if (actionName != null) { + initAction(abstractButton, actionName); + } + } + } + } + + protected <A extends AbstractTuttiAction> void initAction(AbstractButton abstractButton, + Class<A> actionName) { + + Action action = createAction(actionName); + abstractButton.setAction(action); + } + + protected <A extends AbstractTuttiAction> TuttiUIAction<A> createAction(Class<A> actionName) { + TuttiUIAction result = null; + if (actionName != null) { + try { + + AbstractTuttiUIHandler handler = this; + + if (AbstractMainUITuttiAction.class.isAssignableFrom(actionName) && + getContext().getMainUI() != null) { + handler = getContext().getMainUI().getHandler(); + } + + // create action + AbstractTuttiAction action = ConstructorUtils.invokeConstructor(actionName, handler); + + // create ui action + result = new TuttiUIAction(action); + + } catch (Exception e) { + throw new RuntimeException( + "Could not instanciate action " + actionName, e); + } + } + return result; + } + + protected void doAction(AbstractButton button, ActionEvent event) { + button.getAction().actionPerformed(event); + } + + protected void registerValidators(SwingValidator... validators) { + MainUI main = context.getMainUI(); + Preconditions.checkNotNull( + main, "No mainUI registred in application context"); + MainUIHandler handler = main.getHandler(); + handler.clearValidators(); + for (SwingValidator validator : validators) { + handler.registerValidator(validator); + } + } + + public void clearValidators() { + MainUI main = context.getMainUI(); + Preconditions.checkNotNull( + main, "No mainUI registred in application context"); + MainUIHandler handler = main.getHandler(); + handler.clearValidators(); + } + + + /** + * Prépare un component de choix d'entités pour un type d'entité donné et + * pour un service de persistance donné. + * + * @param comboBox le component graphique à initialiser + */ + protected <E extends Serializable> void initBeanComboBox( + BeanComboBox<E> comboBox, + List<E> data, + E selectedData) { + + initBeanComboBox(comboBox, data, selectedData, null); + } + + protected <E extends Serializable> void initBeanComboBox( + BeanComboBox<E> comboBox, + List<E> data, + E selectedData, + String decoratorContext) { + + Preconditions.checkNotNull(comboBox, "No comboBox!"); + + Class<E> beanType = comboBox.getBeanType(); + + Preconditions.checkNotNull(beanType, "No beanType on the combobox!"); + + Decorator<E> decorator = getDecorator(beanType, decoratorContext); + + if (data == null) { + data = Lists.newArrayList(); + } + + if (log.isInfoEnabled()) { + log.info("entity comboBox list [" + beanType.getName() + "] : " + + (data == null ? 0 : data.size())); + } + + // add data list to combo box + comboBox.init((JXPathDecorator<E>) decorator, data); + + comboBox.setSelectedItem(selectedData); + + if (log.isDebugEnabled()) { + log.debug("combo [" + beanType.getName() + "] : " + + comboBox.getData().size()); + } + } + + /** + * Prépare un component de choix d'entités pour un type d'entité donné et + * pour un service de persistance donné. + * + * @param list le component graphique à initialiser + * @param data la liste des données à mettre dans la liste de gauche + * @param selectedData la liste des données à mettre dans la liste de droite + */ + protected <E extends IdAware> void initBeanList( + BeanDoubleList<E> list, + List<E> data, + List<E> selectedData) { + + Preconditions.checkNotNull(list, "No list!"); + + Class<E> beanType = list.getBeanType(); + Preconditions.checkNotNull(beanType, "No beanType on the double list!"); + + DecoratorService decoratorService = + context.getDecoratorService(); + Decorator<E> decorator = decoratorService.getDecoratorByType(beanType); + + if (log.isInfoEnabled()) { + log.info("entity list [" + beanType.getName() + "] : " + + (data == null ? 0 : data.size())); + } + + // add data list to combo box + list.init((JXPathDecorator<E>) decorator, data, selectedData); + + if (log.isDebugEnabled()) { + log.debug("Jlist [" + beanType.getName() + "] : " + + list.getUniverseList().getModel().getSize()); + } + } + + protected void initNumberEditor(NumberEditor editor) { + if (log.isDebugEnabled()) { + log.debug("init number editor " + editor.getName()); + } + editor.init(); + + // Force binding if value is already in model + Number model = editor.getModel(); + if (model != null) { + editor.setModel(null); + editor.setModel(model); + } + } + + protected void initTimeEditor(SimpleTimeEditor editor) { + if (log.isDebugEnabled()) { + log.debug("init time editor " + editor.getName() + + " for property " + editor.getModel().getProperty()); + } + editor.init(); + } + + protected void initDatePicker(final JXDatePicker picker) { + + if (log.isDebugEnabled()) { + log.debug("disable JXDatePicker editor" + picker.getName()); + } + String dateFormat = getConfig().getDateFormat(); + picker.setFormats(dateFormat); + picker.getEditor().addFocusListener(new FocusAdapter() { + + @Override + public void focusLost(FocusEvent e) { + try { + picker.commitEdit(); + + } catch (ParseException ex) { + if (log.isDebugEnabled()) { + log.debug("format error", ex); + } + } + } + + }); + } + + public <O> Decorator<O> getDecorator(Class<O> type, String name) { + DecoratorService decoratorService = + context.getDecoratorService(); + + Preconditions.checkNotNull(type); + + Decorator decorator = decoratorService.getDecoratorByType(type, name); + if (decorator == null) { + + if (DecoratorService.LabelAware.class.isAssignableFrom(type)) { + decorator = getDecorator(DecoratorService.LabelAware.class, null); + } + } + Preconditions.checkNotNull(decorator); + return decorator; + } + + protected String decorate(Object object) { + String result = ""; + if (object != null) { + getDecorator(object.getClass(), null).toString(object); + } + return result; + } + + protected <O> ListCellRenderer newListCellRender(Class<O> type) { + + return newListCellRender(type, null); + } + + protected <O> ListCellRenderer newListCellRender(Class<O> type, String name) { + + Decorator<O> decorator = getDecorator(type, name); + return newListCellRender(decorator); + } + + protected <O> ListCellRenderer newListCellRender(Decorator<O> decorator) { + + Preconditions.checkNotNull(decorator); + + ListCellRenderer result = new DecoratorListCellRenderer(decorator); + return result; + } + + protected void listenValidatorValid(SimpleBeanValidator validator, + final AbstractTuttiBeanUIModel model) { + validator.addPropertyChangeListener(SimpleBeanValidator.VALID_PROPERTY, new PropertyChangeListener() { + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (log.isDebugEnabled()) { + log.debug("Model [" + model + + "] pass to valid state [" + + evt.getNewValue() + "]"); + } + model.setValid((Boolean) evt.getNewValue()); + } + }); + } + + protected void listModelIsModify(AbstractTuttiBeanUIModel model) { + model.addPropertyChangeListener(new PropertyChangeListener() { + + final Set<String> excludeProperties = getPropertiesToIgnore(); + + @Override + public void propertyChange(PropertyChangeEvent evt) { + if (!excludeProperties.contains(evt.getPropertyName())) { + ((AbstractTuttiBeanUIModel) evt.getSource()).setModify(true); + } + } + }); + } + + protected Set<String> getPropertiesToIgnore() { + return Sets.newHashSet( + AbstractTuttiBeanUIModel.PROPERTY_MODIFY, + AbstractTuttiBeanUIModel.PROPERTY_VALID); + } + + public <B> void selectFirstInCombo(BeanComboBox<B> combo) { + List<B> data = combo.getData(); + B selectedItem = null; + if (CollectionUtils.isNotEmpty(data)) { + selectedItem = data.get(0); + } + combo.setSelectedItem(selectedItem); + } + + protected void closeUI(TuttiUI ui) { + ui.getHandler().onCloseUI(); + } + + protected <B> void changeValidatorContext(String newContext, + SwingValidator<B> validator) { + B bean = validator.getBean(); + validator.setContext(newContext); + validator.setBean(bean); + } +} Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CustomTab.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CustomTab.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/CustomTab.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,7 +25,6 @@ * #L% */ -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiCollectionUniqueKeyValidator.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiCollectionUniqueKeyValidator.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiCollectionUniqueKeyValidator.java 2013-03-01 20:37:07 UTC (rev 512) @@ -34,7 +34,7 @@ /** * To fix a bug (will be moved back to nuiton-validator) (see * http://nuiton.org/issues/2545). - * + * <p/> * TODO Remove this when using nuiton-validator 2.6.10 and reuse the basic validator. * * @author tchemit <chemit@codelutin.com> Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiErrorHelper.java (from rev 502, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiErrorHelper.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiErrorHelper.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiErrorHelper.java 2013-03-01 20:37:07 UTC (rev 512) @@ -0,0 +1,91 @@ +package fr.ifremer.tutti.ui.swing.util; + +/* + * #%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.service.TuttiBusinessException; +import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import org.jdesktop.swingx.JXErrorPane; +import org.jdesktop.swingx.error.ErrorInfo; +import org.jdesktop.swingx.error.ErrorReporter; + +import javax.swing.JOptionPane; + +import static org.nuiton.i18n.I18n._; + +/** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0 + */ +public class TuttiErrorHelper implements ErrorReporter { + + protected TuttiUIContext context; + + public TuttiErrorHelper(TuttiUIContext context) { + this.context = context; + } + + /** + * Display a user friendly error frame. + * + * @param message message for user + * @param cause exception cause + */ + public void showErrorDialog(String message, Throwable cause) { + + if (cause instanceof TuttiBusinessException) { + JOptionPane.showMessageDialog(context.getMainUI(), cause.getMessage(), + _("tutti.ui.common.error"), + JOptionPane.ERROR_MESSAGE); + } else { + + JXErrorPane pane = new JXErrorPane(); + ErrorInfo info = new ErrorInfo(_("tutti.common.error"), + _("tutti.error.errorpane.htmlmessage", message), null, null, + cause, null, null); + pane.setErrorInfo(info); + pane.setErrorReporter(this); + JXErrorPane.showDialog(context.getMainUI(), pane); + } + + } + + /** + * Display a user friendly error frame. + * + * @param message message for user + */ + public void showErrorDialog(String message) { + showErrorDialog(message, null); + } + + @Override + public void reportError(ErrorInfo errorInfo) throws NullPointerException { + + showErrorDialog(errorInfo.getBasicErrorMessage(), errorInfo.getErrorException()); + } + +} Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiExceptionHandler.java (from rev 502, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiExceptionHandler.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiExceptionHandler.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiExceptionHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -0,0 +1,138 @@ +package fr.ifremer.tutti.ui.swing.util; + +/* + * #%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.service.TuttiTechnicalException; +import fr.ifremer.tutti.ui.swing.AbstractChangeScreenAction; +import fr.ifremer.tutti.ui.swing.TuttiScreen; +import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.util.action.AbstractTuttiAction; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +/** + * Tutti global exception handler. + * <p/> + * Catch all application uncaught and display it in a custom JoptionPane + * or JXErrorPane. + * <p/> + * See http://stackoverflow.com/a/4448569/1165234 for details. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0 + */ +public class TuttiExceptionHandler implements Thread.UncaughtExceptionHandler { + + private static final Log log = + LogFactory.getLog(TuttiExceptionHandler.class); + + public static class TuttiActionException extends RuntimeException { + + private static final long serialVersionUID = 1L; + + private final AbstractTuttiAction action; + + public TuttiActionException(AbstractTuttiAction action, + Throwable cause) { + super(cause); + this.action = action; + } + + public AbstractTuttiAction getAction() { + return action; + } + } + + @Override + public void uncaughtException(Thread t, Throwable ex) { + handleException(t.getName(), ex); + } + + public void handle(Throwable thrown) { + // for EDT exceptions + handleException(Thread.currentThread().getName(), thrown); + } + + protected void handleException(String tname, Throwable ex) { + if (log.isErrorEnabled()) { + log.error("Global application exception [" + tname + "]", ex); + } + + Throwable cause = ex; + + if (cause instanceof NullPointerException) { + + // See http://forge.codelutin.com/issues/2055 + if (ex.getStackTrace().length > 0 && + ex.getStackTrace()[0].getClassName().contains("swing.")) { + if (log.isWarnEnabled()) { + log.warn("AWT bad error (See http://forge.codelutin.com/issues/2055)", ex); + } + return; + } + } + + if (cause instanceof IndexOutOfBoundsException) { + // See http://forge.codelutin.com/issues/2055 + if (ex.getStackTrace().length > 0 && + "convertRowIndexToModel".equals(ex.getStackTrace()[0].getMethodName())) { + if (log.isWarnEnabled()) { + log.warn("AWT bad error (See http://forge.codelutin.com/issues/2055)", ex); + } + return; + } + } + if (cause instanceof TuttiTechnicalException) { + cause = cause.getCause(); + } + + boolean backToScreen = false; + + AbstractTuttiAction action = null; + + if (cause instanceof TuttiActionException) { + + TuttiActionException actionException = (TuttiActionException) cause; + cause = cause.getCause(); + + // close action ui + + + action = actionException.getAction(); + + if (action instanceof AbstractChangeScreenAction) { + backToScreen = true; + } +// TuttiUIContext.getApplicationContext().getActionUI().getModel().clear(); + } + + TuttiUIContext.getErrorHelper().showErrorDialog(cause.getMessage(), ex); + + if (backToScreen) { + action.getContext().setScreen(TuttiScreen.SELECT_CRUISE); + } + } + +} Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUI.java (from rev 502, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/TuttiUI.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUI.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUI.java 2013-03-01 20:37:07 UTC (rev 512) @@ -0,0 +1,135 @@ +package fr.ifremer.tutti.ui.swing.util; + +/* + * #%L + * Tutti :: UI + * $Id$ + * $HeadURL$ + * %% + * Copyright (C) 2012 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 jaxx.runtime.JAXXObject; + +import javax.swing.UIManager; +import java.awt.Font; + +/** + * Contract to place on each generated jaxx ui. + * + * @author tchemit <chemit@codelutin.com> + * @since 0.1 + */ +public interface TuttiUI<M, H extends AbstractTuttiUIHandler<M, ?>> extends JAXXObject { + + M getModel(); + + H getHandler(); + + /** + * Pattern to use for short numeric values in editors with max 1 digits. + * + * @since 0.2 + */ + public static final String INT_1_DIGITS_PATTERN = "\\d{0,1}"; + + /** + * Pattern to use for short numeric values in editors with max 2 digits. + * + * @since 0.1 + */ + public static final String INT_2_DIGITS_PATTERN = "\\d{0,2}"; + + /** + * Pattern to use for signed numeric values in editors with max 2 digits. + * + * @since 1.0 + */ + public static final String SIGNED_INT_2_DIGITS_PATTERN = "-?\\d{0,2}"; + + /** + * Pattern to use for short numeric values in editors with max 3 digits. + * + * @since 0.1 + */ + public static final String INT_3_DIGITS_PATTERN = "\\d{0,3}"; + + /** + * Pattern to use for singed numeric values in editors with max 3 digits. + * + * @since 1.0 + */ + public static final String SIGNED_INT_3_DIGITS_PATTERN = "-?\\d{0,3}"; + + /** + * Pattern to use for short numeric values in editors with max 4 digits. + * + * @since 0.2 + */ + public static final String INT_4_DIGITS_PATTERN = "\\d{0,4}"; + + /** + * Pattern to use for integer numeric values in editors with max 6 digits. + * + * @since 0.1 + */ + public static final String INT_6_DIGITS_PATTERN = "\\d{0,6}"; + + /** + * Pattern to use for integer numeric values in editors with max 7 digits. + * + * @since 0.1 + */ + public static final String INT_7_DIGITS_PATTERN = "\\d{0,7}"; + + /** + * Pattern to use for decimal numeric values with 1 decimal digits in + * editors. + * + * @since 0.1 + */ + public static final String DECIMAL1_PATTERN = "\\d{0,6}|\\d{1,6}\\.\\d{0,1}"; + + /** + * Pattern to use for decimal numeric values with 2 decimal digits in + * editors. + * + * @since 0.1 + */ + public static final String DECIMAL2_PATTERN = "\\d{0,6}|\\d{1,6}\\.\\d{0,2}"; + + /** + * Pattern to use for decimal numeric values with 3 decimal digits in + * editors. + * + * @since 0.1 + */ + public static final String DECIMAL3_PATTERN = "\\d{0,6}|\\d{1,6}\\.\\d{0,3}"; + + /** + * Pattern to use for decimal numeric values with 2 digits + 3 decimal digits in + * editors. + * + * @since 1.0 + */ + public static final String DECIMAL2_3_PATTERN = "\\d{0,2}|\\d{1,2}\\.\\d{0,3}"; + + public static final Font TEXTFIELD_NORMAL_FONT = UIManager.getDefaults().getFont("TextField.font"); + + public static final Font TEXTFIELD_COMPUTED_FONT = UIManager.getDefaults().getFont("TextField.font").deriveFont(Font.ITALIC); +} Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/TuttiUIUtil.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,13 +25,8 @@ */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.persistence.entities.data.Cruise; -import fr.ifremer.tutti.persistence.entities.data.Program; -import fr.ifremer.tutti.persistence.entities.protocol.TuttiProtocol; import fr.ifremer.tutti.service.TuttiTechnicalException; -import fr.ifremer.tutti.ui.swing.TuttiUIContext; import jaxx.runtime.JAXXUtil; -import jaxx.runtime.context.JAXXContextEntryDef; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.lang3.time.DurationFormatUtils; import org.apache.commons.logging.Log; @@ -44,7 +39,6 @@ import javax.swing.UIManager; import java.awt.Color; import java.awt.Component; -import java.awt.Cursor; import java.io.File; import java.util.Date; @@ -65,111 +59,6 @@ // never instanciate util class } - private static final JAXXContextEntryDef<Program> PROGRAM_ENTRY = - JAXXUtil.newContextEntryDef("loadedProgram", Program.class); - - private static final JAXXContextEntryDef<Cruise> CRUISE_ENTRY = - JAXXUtil.newContextEntryDef("loadedCruise", Cruise.class); - - private static final JAXXContextEntryDef<TuttiProtocol> PROTOCOL_ENTRY = - JAXXUtil.newContextEntryDef("loadedProtocol", TuttiProtocol.class); - -// public static Program getProgram(JAXXContext context) { -// return PROGRAM_ENTRY.getContextValue(context); -// } - -// public static Cruise getCruise(JAXXContext context) { -// return CRUISE_ENTRY.getContextValue(context); -// } - -// public static TuttiProtocol getProtocol(JAXXContext context) { -// return PROTOCOL_ENTRY.getContextValue(context); -// } - - public static Program getProgram(TuttiUIContext context) { - return PROGRAM_ENTRY.getContextValue(context.getMainUI()); - } - - public static Cruise getCruise(TuttiUIContext context) { - return CRUISE_ENTRY.getContextValue(context.getMainUI()); - } - - public static TuttiProtocol getProtocol(TuttiUIContext context) { - return PROTOCOL_ENTRY.getContextValue(context.getMainUI()); - } - - public static void setProgram(TuttiUIContext context, Program value) { - if (value == null) { - - PROGRAM_ENTRY.removeContextValue(context.getMainUI()); - } else { - - PROGRAM_ENTRY.setContextValue(context.getMainUI(), value); - } - } - - public static void setCruise(TuttiUIContext context, Cruise value) { - if (value == null) { - CRUISE_ENTRY.removeContextValue(context.getMainUI()); - } else { - CRUISE_ENTRY.setContextValue(context.getMainUI(), value); - } - } - - public static void setProtocol(TuttiUIContext context, TuttiProtocol value) { - if (value == null) { - - PROTOCOL_ENTRY.removeContextValue(context.getMainUI()); - } else { - PROTOCOL_ENTRY.setContextValue(context.getMainUI(), value); - } - } - - // public static JDialog openInDialog(JComponent ui, -// Frame frame, -// String title, -// boolean modal, -// Action closeAction) { -// return openInDialog(ui, frame, title, modal, closeAction, null); -// } -// -// public static JDialog openInDialog(JComponent ui, -// Frame frame, -// String title, -// boolean modal, -// Action closeAction, -// Dimension dim) { -// -// JDialog result = new JDialog(frame, modal); -// result.setTitle(title); -// result.add(ui); -// result.setResizable(true); -// if (dim == null) { -// result.setSize(550, 450); -// } else { -// result.setSize(dim); -// } -// if (closeAction != null) { -// JRootPane rootPane = result.getRootPane(); -// rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke("ESCAPE"), "close"); -// rootPane.getActionMap().put("close", closeAction); -// } -// result.addWindowListener(new WindowAdapter() { -// -// @Override -// public void windowClosed(WindowEvent e) { -// Component ui = (Component) e.getSource(); -// if (log.isInfoEnabled()) { -// log.info("Destroy ui " + ui); -// } -// JAXXUtil.destroy(ui); -// } -// }); -// SwingUtil.center(frame, result); -// result.setVisible(true); -// return result; -// } - /** * Choisir un fichier via un sélecteur graphique de fichiers. * @@ -242,22 +131,6 @@ return file == null ? incoming : new File(file); } - public static void updateBusyState(Component ui, boolean busy) { - if (busy) { - // ui bloquee - if (log.isDebugEnabled()) { - log.debug("block ui in busy mode"); - } - ui.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); - } else { - // ui debloquee - if (log.isDebugEnabled()) { - log.debug("unblock ui in none busy mode"); - } - ui.setCursor(Cursor.getDefaultCursor()); - } - } - public static void showSuccessMessage(Component ui, String message) { JOptionPane.showMessageDialog( ui, @@ -341,24 +214,24 @@ + Math.cos(eLong - sLong) * Math.cos(eLat) * Math.cos(sLat))); return d.intValue(); } - + public static String getDistanceInMilles(Float distance) { String distanceText; if (distance != null) { Float distanceInMilles = distance / 1852; distanceText = String.format("%.3f", distanceInMilles); - + } else { distanceText = ""; } return distanceText; } - + public static String getWeightStringValue(Float weight) { String textValue; if (weight != null) { textValue = String.format("%.3f", weight); - + } else { textValue = JAXXUtil.getStringValue(weight); } Copied: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java (from rev 502, trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/AbstractTuttiAction.java) =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/AbstractTuttiAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -0,0 +1,174 @@ +package fr.ifremer.tutti.ui.swing.util.action; + +/* + * #%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.google.common.base.Preconditions; +import com.google.common.collect.Sets; +import fr.ifremer.tutti.service.DecoratorService; +import fr.ifremer.tutti.ui.swing.MainUI; +import fr.ifremer.tutti.ui.swing.TuttiDataContext; +import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.config.TuttiApplicationConfig; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; +import fr.ifremer.tutti.ui.swing.util.TuttiExceptionHandler; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; +import jaxx.runtime.SwingUtil; +import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.jdesktop.beans.AbstractBean; +import org.nuiton.util.decorator.Decorator; + +import javax.swing.AbstractAction; +import java.awt.event.ActionEvent; +import java.util.Set; +import java.util.Timer; +import java.util.TimerTask; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; + +/** + * TODO + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0 + */ +public abstract class AbstractTuttiAction<M extends AbstractBean, UI extends TuttiUI<M, ?>, H extends AbstractTuttiUIHandler<M, UI>> { + + protected final H handler; + + protected final String actionName; + + protected final String actionDescription; + + protected final String actionIcon; + + protected final boolean hideBody; + + protected Throwable error; + + protected abstract void doAction() throws Exception; + + protected AbstractTuttiAction(H handler, + String actionIcon, + String actionName, + String actionDescription, + boolean hideBody) { + this.handler = handler; + this.actionName = actionName; + this.actionDescription = actionDescription; + this.actionIcon = actionIcon; + this.hideBody = hideBody; + } + + protected boolean prepareAction() { + // by default nothing to prepare + return true; + } + + protected void releaseAction() { + error = null; + } + + public final void performAndReleaseAction() { + + try { + performAction(); + } finally { + releaseAction(); + } + } + + protected void performAction() { + try { + doAction(); + } catch (Throwable e) { + this.error = e; + throw new TuttiExceptionHandler.TuttiActionException(this, e); + } + } + + public H getHandler() { + return handler; + } + + public M getModel() { + return handler.getModel(); + } + + public final UI getUI() { + return handler.getUI(); + } + + public TuttiUIContext getContext() { + return handler.getContext(); + } + + protected String getActionName() { + return actionName; + } + + public String getActionDescription() { + return actionDescription; + } + + public String getActionIcon() { + return actionIcon; + } + + public boolean isHideBody() { + return hideBody; + } + + public TuttiDataContext getDataContext() { + return getContext().getDataContext(); + } + + protected TuttiApplicationConfig getConfig() { + return getContext().getConfig(); + } + + protected void sendMessage(String message) { + getContext().showInformationMessage(message); + } + + protected <O> Decorator<O> getDecorator(Class<O> type, String name) { + Decorator<O> decorator = handler.getDecorator(type, name); + Preconditions.checkNotNull(decorator); + return decorator; + } + + protected String decorate(Object object) { + return getDecorator(object.getClass(), null).toString(object); + } + + public boolean isFailed() { + return error != null; + } + + public Throwable getError() { + return error; + } +} Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUI.jaxx =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUI.jaxx 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -23,10 +23,10 @@ --> <JDialog layout='{new BorderLayout()}' width='300' height='200' modal='true' undecorated='true' - implements='fr.ifremer.tutti.ui.swing.TuttiUI<TuttiActionUIModel, TuttiActionUIHandler>'> + implements='fr.ifremer.tutti.ui.swing.util.TuttiUI<TuttiActionUIModel, TuttiActionUIHandler>'> <import> - fr.ifremer.tutti.ui.swing.TuttiUI + fr.ifremer.tutti.ui.swing.util.TuttiUI fr.ifremer.tutti.ui.swing.TuttiUIContext javax.swing.border.EmptyBorder @@ -43,6 +43,14 @@ handler.beforeInitUI(); } + public void open(AbstractTuttiAction action) { + getModel().setAction(action); + } + + public void close() { + getModel().clear(); + } + protected void $afterCompleteSetup() { handler.afterInitUI(); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,16 +25,15 @@ */ import fr.ifremer.tutti.persistence.ProgressionModel; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; -import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.MainUI; import fr.ifremer.tutti.ui.swing.TuttiUIContext; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import jaxx.runtime.validator.swing.SwingValidator; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import javax.swing.SwingUtilities; import java.awt.Container; +import java.awt.Cursor; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; @@ -50,7 +49,6 @@ private static final Log log = LogFactory.getLog(TuttiActionUIHandler.class); - public TuttiActionUIHandler(TuttiUIContext context, TuttiActionUI ui) { super(context, ui); } @@ -82,10 +80,34 @@ //------------------------------------------------------------------------// protected void hideAction() { - getModel().setProgressionModel(null); ui.setVisible(false); } + protected void showAction(AbstractTuttiAction action) { + ui.getGlobalActionLabel().setText( + _("tutti.message.action.running", + action.getActionDescription())); + ui.pack(); + + MainUI mainUI = getContext().getMainUI(); + if (mainUI != null) { + Container component = mainUI.getBody(); + int width = component.getWidth(); + int height = component.getHeight(); + int x; + int y; + if (height == 0) { + x = mainUI.getX() + 5; + y = mainUI.getY() + 20; + } else { + x = mainUI.getX() + (mainUI.getWidth() - width); + y = mainUI.getY() + (mainUI.getHeight() - height); + } + ui.setLocation(x, y); + } + ui.setVisible(true); + } + @Override public void beforeInitUI() { TuttiActionUIModel model = new TuttiActionUIModel(); @@ -104,35 +126,11 @@ if (action == null || action.isFailed()) { // stoping action - - if (SwingUtilities.isEventDispatchThread()) { - - hideAction(); - } else { - SwingUtilities.invokeLater(new Runnable() { - @Override - public void run() { - hideAction(); - } - }); - } + hideAction(); } else { // starting action - - // new action - ui.getGlobalActionLabel().setText( - _("tutti.message.action.running", action.getActionDescription())); - ui.pack(); - - MainUI mainUI = getContext().getMainUI(); - if (mainUI != null) { - Container component = mainUI.getBody(); - int x = mainUI.getX() + (mainUI.getWidth() - component.getWidth()); - int y = mainUI.getY() + (mainUI.getHeight() - component.getHeight()); - ui.setLocation(x, y); - } - ui.setVisible(true); + showAction(action); } } }); @@ -174,6 +172,8 @@ public void afterInitUI() { initUI(ui); + + ui.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); } @Override @@ -186,7 +186,4 @@ return null; } - public void closeAction() { - getModel().clear(); - } } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUIModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiActionUIModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -24,8 +24,8 @@ * #L% */ +import com.ezware.oxbow.swingbits.util.Preconditions; import fr.ifremer.tutti.persistence.ProgressionModel; -import fr.ifremer.tutti.ui.swing.AbstractTuttiAction; import org.jdesktop.beans.AbstractSerializableBean; /** @@ -59,6 +59,7 @@ } public void setAction(AbstractTuttiAction action) { + Preconditions.checkNotNull(action, "action can not be null"); Object oldValue = getAction(); this.action = action; firePropertyChange(PROPERTY_ACTION, oldValue, action); @@ -66,6 +67,9 @@ public void clear() { setProgressionModel(null); - setAction(null); + + Object oldValue = getAction(); + action = null; + firePropertyChange(PROPERTY_ACTION, oldValue, null); } } Added: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiUIAction.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiUIAction.java (rev 0) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiUIAction.java 2013-03-01 20:37:07 UTC (rev 512) @@ -0,0 +1,228 @@ +package fr.ifremer.tutti.ui.swing.util.action; + +import fr.ifremer.tutti.ui.swing.MainUI; +import fr.ifremer.tutti.ui.swing.util.TuttiExceptionHandler; +import jaxx.runtime.SwingUtil; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.jdesktop.swingx.JXTitledPanel; + +import javax.swing.AbstractAction; +import javax.swing.ImageIcon; +import javax.swing.JRootPane; +import javax.swing.SwingUtilities; +import javax.swing.SwingWorker; +import java.awt.Cursor; +import java.awt.event.ActionEvent; +import java.util.Timer; +import java.util.TimerTask; + +/** + * Abstract tutti ui action which launch a {@link AbstractTuttiAction}. + * + * @author tchemit <chemit@codelutin.com> + * @since 1.0.2 + */ +public class TuttiUIAction<A extends AbstractTuttiAction> extends AbstractAction { + + private static final long serialVersionUID = 1L; + + /** Logger. */ + private static final Log log = LogFactory.getLog(TuttiUIAction.class); + + /** + * Timer used to launch timerTask (to open load dialog). + * + * @since 1.0.2 + */ + private static final Timer t = new Timer(); + + /** + * To deal with errors. + * + * @since 1.0.2 + */ + private static final TuttiExceptionHandler exceptionHandler = new TuttiExceptionHandler(); + + /** + * Logic Action to perform. + * + * @since 1.0.2 + */ + protected final A action; + + public TuttiUIAction(A action) { + + this.action = action; + + String icon = action.getActionIcon(); + if (icon != null) { + ImageIcon actionIcon = SwingUtil.createActionIcon(icon); + putValue(SMALL_ICON, actionIcon); + putValue(LARGE_ICON_KEY, actionIcon); + } + putValue(ACTION_COMMAND_KEY, action.getClass().getName()); + putValue(NAME, action.getActionName()); + putValue(SHORT_DESCRIPTION, action.getActionDescription()); + } + + @Override + public final void actionPerformed(final ActionEvent event) { + + if (log.isInfoEnabled()) { + log.info("Task [" + this + "] starting"); + } + + // prepare action + boolean doAction = action.prepareAction(); + + if (doAction) { + + final TuttiActionSwingWorker<A> worker = + new TuttiActionSwingWorker<A>(action); + + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + + // make ui busy + worker.updateBusyState(true); + + } + }); + + if (log.isInfoEnabled()) { + log.info("Before execute of action " + action); + } + + // perform and release action + worker.execute(); + if (log.isInfoEnabled()) { + log.info("After execute of action " + action); + } + + } else { + + // release action + action.releaseAction(); + } + } + + // protected void setMnemonic(int key) { +// putValue(MNEMONIC_KEY, key); +// } + + protected static class TuttiActionSwingWorker<A extends AbstractTuttiAction> extends SwingWorker<Void, String> { + + protected final TuttiActionUI actionUI; + + protected final A action; + + protected TimerTask timer; + + protected TuttiActionSwingWorker(A action) { + + this.action = action; + this.actionUI = action.getContext().getActionUI(); + } + + @Override + protected Void doInBackground() throws Exception { + + if (!isCancelled()) { + + timer = new TimerTask() { + + @Override + public void run() { + if (isCancelled() || isDone()) { + + if (log.isDebugEnabled()) { + log.debug("Task [" + action + "] was already canceled or done, do nothing"); + } + } else { + + if (log.isDebugEnabled()) { + log.debug("Task [" + action + "] is started, show waiting dialog"); + } + + actionUI.open(action); + + } + } + }; + + t.schedule(timer, 1000); + + try { + + action.performAction(); + + + } finally { + if (log.isInfoEnabled()) { + log.info("Task [" + this + "] done"); + } + + action.releaseAction(); + } + } + return null; + } + + @Override + protected void done() { + super.done(); + + // close timer + + if (timer != null) { + + timer.cancel(); + } + + actionUI.close(); + + updateBusyState(false); + + if (action.isFailed()) { + + exceptionHandler.handle(new TuttiExceptionHandler.TuttiActionException(action, action.getError())); + } + } + + protected void updateBusyState(boolean busy) { + + boolean hideBody = action.isHideBody(); + + final MainUI mainUI = action.getContext().getMainUI(); + JXTitledPanel body = mainUI.getBody(); + if (busy) { + // ui bloquee + if (log.isDebugEnabled()) { + log.debug("block ui in busy mode"); + } + mainUI.setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR)); + } else { + // ui debloquee + if (log.isDebugEnabled()) { + log.debug("unblock ui in none busy mode"); + } + mainUI.setCursor(Cursor.getDefaultCursor()); + } + if (hideBody) { + body.setVisible(!busy); + } + +// SwingUtilities.invokeLater( +// new Runnable() { +// @Override +// public void run() { +// mainUI.repaint(); +// } +// } +// ); + + } + } +} Property changes on: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/action/TuttiUIAction.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision Added: svn:eol-style + native 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 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentCellComponent.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,7 +26,7 @@ import com.google.common.base.Preconditions; import fr.ifremer.tutti.persistence.entities.data.Attachment; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; 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 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentEditorUI.jaxx 2013-03-01 20:37:07 UTC (rev 512) @@ -24,7 +24,7 @@ <Table id='mainPanel'> <import> - fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel + fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel fr.ifremer.tutti.persistence.entities.data.Attachment jaxx.runtime.swing.editor.FileEditor </import> 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 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/AttachmentEditorUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,7 +26,7 @@ import com.google.common.collect.Lists; import fr.ifremer.tutti.persistence.entities.data.Attachment; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.HBox; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueEditor.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueEditor.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueEditor.java 2013-03-01 20:37:07 UTC (rev 512) @@ -71,7 +71,7 @@ public CaracteristicValueEditor(int caracteristicColumn, TuttiUIContext context) { super(); this.caracteristicColumn = caracteristicColumn; - DecoratorService decoratorService = context.getService(DecoratorService.class); + DecoratorService decoratorService = context.getDecoratorService(); decorator = decoratorService.getDecoratorByType(CaracteristicQualitativeValue.class); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueRenderer.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueRenderer.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/CaracteristicValueRenderer.java 2013-03-01 20:37:07 UTC (rev 512) @@ -56,7 +56,7 @@ public CaracteristicValueRenderer(int caracteristicColumn, TuttiUIContext context) { super(); this.caracteristicColumn = caracteristicColumn; - DecoratorService decoratorService = context.getService(DecoratorService.class); + DecoratorService decoratorService = context.getDecoratorService(); decorator = decoratorService.getDecoratorByType(CaracteristicQualitativeValue.class); } 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 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/LongTextCellComponent.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,7 +25,7 @@ */ import com.google.common.base.Preconditions; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import fr.ifremer.tutti.ui.swing.util.table.AbstractSelectTableAction; import fr.ifremer.tutti.ui.swing.util.table.AbstractTuttiTableModel; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/SimpleTimeEditorHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/SimpleTimeEditorHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/SimpleTimeEditorHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -99,7 +99,7 @@ log.debug("date changed : new value " + hours + ":" + minutes); } model.setTimeModel(hours * 60 + minutes); - + } else { model.setTimeModel(null); } Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiComputedOrNotDataEditorHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiComputedOrNotDataEditorHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiComputedOrNotDataEditorHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -25,8 +25,8 @@ * #L% */ -import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiComputedOrNotData; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import jaxx.runtime.JAXXUtil; import jaxx.runtime.swing.editor.NumberEditorHandler; import org.apache.commons.logging.Log; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiComputedOrNotDataTableCell.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiComputedOrNotDataTableCell.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/editor/TuttiComputedOrNotDataTableCell.java 2013-03-01 20:37:07 UTC (rev 512) @@ -24,8 +24,8 @@ * #L% */ -import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiComputedOrNotData; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import jaxx.runtime.JAXXUtil; import javax.swing.AbstractCellEditor; Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIHandler.java 2013-03-01 20:37:07 UTC (rev 512) @@ -28,12 +28,12 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import fr.ifremer.tutti.service.PersistenceService; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; -import fr.ifremer.tutti.ui.swing.AbstractTuttiUIHandler; -import fr.ifremer.tutti.ui.swing.TuttiUI; import fr.ifremer.tutti.ui.swing.TuttiUIContext; import fr.ifremer.tutti.ui.swing.content.operation.catches.species.SpeciesBatchTableModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiUIHandler; import fr.ifremer.tutti.ui.swing.util.TuttiBeanMonitor; +import fr.ifremer.tutti.ui.swing.util.TuttiUI; import fr.ifremer.tutti.ui.swing.util.TuttiUIUtil; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.JAXXWidgetUtil; @@ -162,7 +162,7 @@ String... properties) { super(context, ui); - this.persistenceService = context.getService(PersistenceService.class); + this.persistenceService = context.getPersistenceService(); rowMonitor = new TuttiBeanMonitor<R>(properties); Modified: trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIModel.java =================================================================== --- trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIModel.java 2013-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/java/fr/ifremer/tutti/ui/swing/util/table/AbstractTuttiTableUIModel.java 2013-03-01 20:37:07 UTC (rev 512) @@ -26,8 +26,8 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; -import fr.ifremer.tutti.ui.swing.AbstractTuttiBeanUIModel; import fr.ifremer.tutti.ui.swing.content.operation.fishing.environment.EnvironmentRowModel; +import fr.ifremer.tutti.ui.swing.util.AbstractTuttiBeanUIModel; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; 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-03-01 17:26:39 UTC (rev 511) +++ trunk/tutti-ui-swing/src/main/resources/i18n/tutti-ui-swing_fr_FR.properties 2013-03-01 20:37:07 UTC (rev 512) @@ -16,6 +16,8 @@ tutti.action.cancel.editProgram.tip=Annuler l'édition (ou la création) de la série de campagne tutti.action.cancel.editProtocol=Annuler tutti.action.cancel.editProtocol.tip=Annuler l'édition (ou la création) du protocole +tutti.action.cancelEditCatchBatch= +tutti.action.cancelEditCatchBatch.tip= tutti.action.chooseProtocolCaracteristicFile=Choisir le fichier des caractéristiques tutti.action.chooseProtocolFile=Choisir le fichier de protocole tutti.action.chooseProtocolSpeciesFile=Choisir le fichier des espèces
participants (1)
-
tchemit@users.forge.codelutin.com