branch develop updated (0ede437 -> 142ade7)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git from 0ede437 refs #8429 Ajout d'un raccourci clavier (escape) pour fermer la boite de dialogue de changement de data source new cafb99a refs #8429 Amélioration du focus sur les dialogues de data sources new 893c1d0 [iso] suppression code mort new e17eac2 [iso] nettoyage de code new a0eecc1 refs #8429 Amélioration des racourcis claviers sur le dialogue des data sources new dc68173 refs #8429 [iso] réusinage du boot des wizard + ajout des mnemonics new 2edb983 refs #8429 [iso] revue des écrans de type List : simplification du code new 5302543 [ui] Revue des actions de sélections de nœuds et autres améliorations new e21525e [ui] Revue de la couleur des nœuds dans l'abre de navigation new cc44bf8 [ui] Gestion de l'état ouvert sur les calée (cela n'a jamais été implanté...) new 1ec820b refs #8429 ajout raccourcis vers actions globales + revue de la partie Floating Object new 0b74ce6 [iso] revue du rechargement des noeuds dans l'arbre de navigation + du nettoyage de code new 26b459a [iso] update since version new aa3a30e [iso] add missing license header new 142ade7 refs #8429 Revue des raccourcis sur les écrans d'édition de référentiel The 14 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 142ade7881a1789c5018224ea7ae18685368e3d2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 4 13:30:00 2016 +0100 refs #8429 Revue des raccourcis sur les écrans d'édition de référentiel commit aa3a30e375249960df50a131fbd21b71e5f9bd12 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 4 12:44:09 2016 +0100 [iso] add missing license header commit 26b459a57e834e4060fcbdb12e575a89bf0b5adf Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 4 12:43:05 2016 +0100 [iso] update since version commit 0b74ce6721d1f1947187e477137a49ad1402c524 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 4 12:42:16 2016 +0100 [iso] revue du rechargement des noeuds dans l'arbre de navigation + du nettoyage de code commit 1ec820b0185e6e9096328c2cc77a3d516bd46706 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 4 11:51:33 2016 +0100 refs #8429 ajout raccourcis vers actions globales + revue de la partie Floating Object commit cc44bf81043fd0b54e9785befebc0ceafabbb937 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 4 08:53:46 2016 +0100 [ui] Gestion de l'état ouvert sur les calée (cela n'a jamais été implanté...) commit e21525e96994f4a38a9847d8f48a06eab1474207 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 4 08:34:11 2016 +0100 [ui] Revue de la couleur des nœuds dans l'abre de navigation commit 5302543dbb9552cd5b0c29d60cbe763a456ac487 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 4 08:18:15 2016 +0100 [ui] Revue des actions de sélections de nœuds et autres améliorations commit 2edb9835cd6924488a01eda1328757be921b4bc9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Nov 28 17:01:01 2016 +0100 refs #8429 [iso] revue des écrans de type List : simplification du code commit dc681734ae429db09202120679cff6629580e684 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Nov 28 13:50:06 2016 +0100 refs #8429 [iso] réusinage du boot des wizard + ajout des mnemonics commit a0eecc1d4284318fabf8d06c034117e24c3ec0c1 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 27 15:44:44 2016 +0100 refs #8429 Amélioration des racourcis claviers sur le dialogue des data sources commit e17eac292e2758564a116ef08969cd8fedb79005 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 27 14:54:55 2016 +0100 [iso] nettoyage de code commit 893c1d09792dc64fa4c00f1de5bb0f242800f560 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 27 14:49:23 2016 +0100 [iso] suppression code mort commit cafb99abecb2e084f53984bbbed0ea0cf327fd86 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 27 14:45:49 2016 +0100 refs #8429 Amélioration du focus sur les dialogues de data sources Summary of changes: .../src/main/config/ObserveSwingApplication.ini | 6 + ...pplication-swing-configuration_en_GB.properties | 1 + ...pplication-swing-configuration_es_ES.properties | 1 + ...pplication-swing-configuration_fr_FR.properties | 1 + .../swing/decoration/DecoratorService.java | 4 +- .../CoordinateLatitudeDtoFieldValidator.java | 2 +- .../CoordinateLongitudeDtoFieldValidator.java | 2 +- .../src/main/filters/observe-ui.properties | 3 + .../application/swing/ObserveOpenDataManager.java | 38 +- .../observe/application/swing/ObserveRunner.java | 9 +- .../swing/ObserveSwingApplicationContext.java | 6 +- .../ObserveSwingApplicationDataSourcesManager.java | 53 +- .../swing/ObserveSwingSessionHelper.java | 2 +- .../application/swing/ObserveTextGenerator.java | 18 +- .../swing/db/ObserveSwingDataSource.java | 2 +- .../application/swing/ui/MnemonicHelper.java | 167 +++ .../application/swing/ui/ObserveMainUI.jaxx | 81 +- .../application/swing/ui/ObserveMainUI.jcss | 107 +- .../application/swing/ui/ObserveMainUIHandler.java | 512 +-------- ...IHandler.java => ObserveMainUIInitializer.java} | 246 ++--- .../application/swing/ui/ObserveUICallback.java | 6 +- .../ird/observe/application/swing/ui/UIHelper.java | 108 +- .../ui/actions/{shared => }/AbstractUIAction.java | 73 +- .../actions/content/AbstractContentUIAction.java | 10 +- ...ion.java => BackToReferentialListUIAction.java} | 21 +- .../ui/actions/content/CloseAndCreateUIAction.java | 12 +- ...tion.java => CreateNewReferentialUIAction.java} | 20 +- .../ui/actions/content/CreateOpenUIAction.java | 2 +- .../actions/content/DeleteTableEntryUIAction.java | 2 +- ...yUIAction.java => EditReferentialUIAction.java} | 20 +- .../{shared => content}/GoDownUIAction.java | 67 +- .../actions/{shared => content}/GoUpUIAction.java | 48 +- .../content/MoveActivityLonglinesUIAction.java | 4 +- .../content/MoveActivitySeinesUIAction.java | 4 +- .../ui/actions/content/MoveRoutesUIAction.java | 4 +- .../ui/actions/content/NewTableEntryUIAction.java | 2 +- .../actions/content/ResetTableEntryUIAction.java | 2 +- .../ui/actions/content/SaveTableEntryUIAction.java | 2 +- .../{shared => content}/SelectNodeUIAction.java | 49 +- .../SelectOpenNodeUIAction.java | 36 +- .../ui/actions/global/AbstractGlobalUIAction.java | 5 +- .../actions/global/ChangeFocusGlobalUIAction.java | 2 +- .../actions/global/DeleteDataGlobalUIAction.java | 18 +- .../actions/global/NewNextDataGlobalUIAction.java | 8 +- .../global/OpenCloseDataGlobalUIAction.java | 6 +- .../ui/actions/global/ResetDataGlobalUIAction.java | 3 +- .../ui/actions/global/SaveDataGlobalUIAction.java | 4 +- .../{ => menu/action}/LaunchAdminAction.java | 2 +- .../config}/ChangeApplicationLanguageAction.java | 2 +- .../{ => menu/config}/ChangeDbLanguageAction.java | 2 +- .../config}/ReloadDefaultConfigurationAction.java | 2 +- .../{ => menu/config}/ReloadResourcesAction.java | 2 +- .../{ => menu/config}/ShowConfigAction.java | 22 +- .../{ => menu/file}/CloseApplicationAction.java | 2 +- .../{ => menu/file}/ReloadApplicationAction.java | 2 +- .../file/ToFullScreenAction.java} | 39 +- .../file/ToWindowScreenAction.java} | 38 +- .../ui/actions/{ => menu/help}/GotoSiteAction.java | 2 +- .../actions/{ => menu/help}/ShowAboutAction.java | 2 +- .../actions/menu/navigation/GotoActionSupport.java | 102 ++ .../menu/navigation/GotoOpenActivityAction.java | 72 ++ .../menu/navigation/GotoOpenProgramAction.java | 64 ++ .../menu/navigation/GotoOpenRouteAction.java | 64 ++ .../actions/menu/navigation/GotoOpenSetAction.java | 81 ++ .../menu/navigation/GotoOpenTripAction.java | 64 ++ .../menu/navigation/GotoReferentialAction.java} | 48 +- .../{ => menu/storage}/ChangeStorageAction.java | 2 +- .../{ => menu/storage}/CloseStorageAction.java | 3 +- .../storage}/ImportStorageFromFileAction.java | 2 +- .../{ => menu/storage}/ReloadStorageAction.java | 5 +- .../storage}/SaveStorageToFileAction.java | 3 +- .../{ => menu/storage}/ShowStorageInfoAction.java | 2 +- .../{ => menu/storage}/StartH2WebServerAction.java | 2 +- .../{ => menu/storage}/StartServerModeAction.java | 2 +- .../{ => menu/storage}/StopH2WebServerAction.java | 9 +- .../{ => menu/storage}/StopServerModeAction.java | 25 +- .../application/swing/ui/admin/AdminTabUI.jaxx | 42 +- .../application/swing/ui/admin/AdminTabUI.jcss | 2 +- .../swing/ui/admin/AdminTabUIHandler.java | 59 +- .../application/swing/ui/admin/AdminUI.jaxx | 57 +- .../application/swing/ui/admin/AdminUIHandler.java | 91 +- .../swing/ui/admin/AdminUILauncher.java | 9 +- .../application/swing/ui/admin/AdminUIModel.java | 1150 ++------------------ .../swing/ui/admin/config/ConfigModel.java | 695 ++++++++++++ .../swing/ui/admin/config/ConfigUI.jaxx | 49 +- .../swing/ui/admin/config/ConfigUI.jcss | 4 +- .../swing/ui/admin/config/ConfigUIHandler.java | 60 +- .../swing/ui/admin/config/SelectDataModel.java | 251 +++++ .../swing/ui/admin/config/SelectDataUI.jaxx | 20 +- .../swing/ui/admin/config/SelectDataUI.jcss | 4 - .../swing/ui/admin/config/SelectDataUIHandler.java | 72 ++ .../ui/admin/consolidate/ConsolidateModel.java | 29 + .../swing/ui/admin/consolidate/ConsolidateUI.jaxx | 27 +- .../ui/admin/consolidate/ConsolidateUIHandler.java | 30 +- .../swing/ui/admin/export/ExportModel.java | 6 + .../swing/ui/admin/export/ExportUI.jaxx | 12 - .../swing/ui/admin/export/ExportUIHandler.java | 44 +- .../swing/ui/admin/report/ReportModel.java | 66 ++ .../swing/ui/admin/report/ReportUI.jaxx | 23 +- .../swing/ui/admin/report/ReportUIHandler.java | 67 +- .../swing/ui/admin/resume/ShowResumeModel.java | 22 +- .../swing/ui/admin/resume/ShowResumeUI.jaxx | 18 +- .../swing/ui/admin/resume/ShowResumeUIHandler.java | 30 +- .../swing/ui/admin/save/SaveLocalModel.java | 51 +- .../swing/ui/admin/save/SaveLocalUI.jaxx | 26 +- .../swing/ui/admin/save/SaveLocalUIHandler.java | 31 +- .../admin/synchronize/data/DataSynchroModel.java | 11 + .../ui/admin/synchronize/data/DataSynchroUI.jaxx | 14 - .../synchronize/data/DataSynchroUIHandler.java | 70 +- .../referential/legacy/SynchronizeModel.java | 6 + .../referential/legacy/SynchronizeUI.jaxx | 13 +- .../referential/legacy/SynchronizeUIHandler.java | 38 +- .../referential/ng/ReferentialSynchroModel.java | 43 + .../referential/ng/ReferentialSynchroUI.jaxx | 13 +- .../ng/ReferentialSynchroUIHandler.java | 42 +- .../swing/ui/admin/validate/ValidateModel.java | 69 +- .../swing/ui/admin/validate/ValidateUI.jaxx | 29 +- .../swing/ui/admin/validate/ValidateUIHandler.java | 59 +- .../application/swing/ui/content/ContentUI.jaxx | 4 +- .../swing/ui/content/ContentUIBlockingLayerUI.java | 4 +- .../swing/ui/content/ContentUIHandler.java | 6 +- .../swing/ui/content/ContentUIInitializer.java | 44 +- .../swing/ui/content/ContentUIManager.java | 31 + .../swing/ui/content/ObserveActionMap.java | 4 +- .../swing/ui/content/ObserveFocusManager.java | 22 +- .../impl/longline/LonglineDetailCompositionUI.jaxx | 2 + .../impl/longline/LonglineDetailCompositionUI.jcss | 9 + .../LonglineDetailCompositionUIInitializer.java | 14 +- .../impl/longline/LonglineGlobalCompositionUI.jaxx | 2 + .../impl/longline/LonglineGlobalCompositionUI.jcss | 7 + .../ui/content/impl/longline/SetLonglineUI.jaxx | 5 + .../ui/content/impl/longline/SetLonglineUI.jcss | 16 + .../impl/longline/SetLonglineUIHandler.java | 6 + .../FloatingObjectTransmittingBuoyOperationUI.jaxx | 3 + .../FloatingObjectTransmittingBuoyOperationUI.jcss | 2 + .../ui/content/impl/seine/FloatingObjectUI.jaxx | 3 + .../ui/content/impl/seine/FloatingObjectUI.jcss | 4 + .../impl/seine/FloatingObjectUIHandler.java | 4 +- .../swing/ui/content/impl/seine/SetSeineUI.jaxx | 12 +- .../swing/ui/content/impl/seine/SetSeineUI.jcss | 14 + .../ui/content/impl/seine/SetSeineUIHandler.java | 5 + .../swing/ui/content/list/ContentListUI.jaxx | 64 +- .../swing/ui/content/list/ContentListUI.jcss | 29 - .../ui/content/list/ContentListUIHandler.java | 73 +- .../swing/ui/content/list/ContentListUIModel.java | 86 +- .../impl/CommonListUI.jcss} | 51 +- .../list/impl/longline/ActivityLonglinesUI.jaxx | 46 +- .../list/impl/longline/ActivityLonglinesUI.jcss | 27 +- .../impl/longline/ActivityLonglinesUIHandler.java | 33 +- .../content/list/impl/longline/CommonListUI.jcss | 64 -- .../list/impl/longline/TripLonglinesUI.jaxx | 42 +- .../list/impl/longline/TripLonglinesUI.jcss | 13 +- .../list/impl/longline/TripLonglinesUIHandler.java | 53 +- .../list/impl/longline/TripLonglinesUIModel.java | 4 +- .../content/list/impl/seine/ActivitySeinesUI.jaxx | 44 +- .../content/list/impl/seine/ActivitySeinesUI.jcss | 26 +- .../list/impl/seine/ActivitySeinesUIHandler.java | 34 +- .../ui/content/list/impl/seine/CommonListUI.jcss | 81 -- .../swing/ui/content/list/impl/seine/RoutesUI.jaxx | 43 +- .../swing/ui/content/list/impl/seine/RoutesUI.jcss | 23 +- .../content/list/impl/seine/RoutesUIHandler.java | 37 +- .../ui/content/list/impl/seine/TripSeinesUI.jaxx | 42 +- .../ui/content/list/impl/seine/TripSeinesUI.jcss | 14 +- .../list/impl/seine/TripSeinesUIHandler.java | 36 +- .../swing/ui/content/open/ContentOpenableUI.jaxx | 6 + .../swing/ui/content/open/ContentOpenableUI.jcss | 7 +- .../open/impl/longline/ActivityLonglineUI.jcss | 4 + .../impl/longline/ActivityLonglineUIHandler.java | 15 +- .../content/open/impl/longline/TripLonglineUI.jcss | 4 + .../open/impl/seine/ActivitySeineUIHandler.java | 12 +- .../swing/ui/content/ref/ContentReferenceUI.jaxx | 14 +- .../swing/ui/content/ref/ContentReferenceUI.jcss | 46 +- .../ui/content/ref/ContentReferenceUIHandler.java | 12 +- .../ref/impl/LengthLengthParameterUIHandler.java | 2 +- .../ref/impl/LengthLengthParameterUIModel.java | 2 +- .../ui/content/ref/impl/ShipOwnerUIModel.java | 2 +- .../content/ref/impl/seine/SpeciesFateUIModel.java | 2 +- .../ref/impl/seine/VesselActivitySeineUIModel.java | 2 +- .../swing/ui/content/table/ContentTableUI.jaxx | 4 + .../swing/ui/content/table/ContentTableUI.jcss | 6 +- .../impl/longline/CatchLonglineUIHandler.java | 4 +- .../table/impl/seine/AbstractSampleUIHandler.java | 2 +- .../application/swing/ui/storage/StorageUI.jaxx | 47 +- .../swing/ui/storage/StorageUIHandler.java | 416 +++---- .../swing/ui/storage/StorageUILauncher.java | 35 +- .../swing/ui/storage/StorageUIModel.java | 92 +- .../swing/ui/storage/tabs/BackupUI.jaxx | 15 +- .../swing/ui/storage/tabs/BackupUIHandler.java | 96 ++ .../swing/ui/storage/tabs/ChooseDbModeUI.jaxx | 8 +- .../swing/ui/storage/tabs/ChooseDbModeUI.jcss | 4 +- .../ui/storage/tabs/ChooseDbModeUIHandler.java | 99 ++ .../swing/ui/storage/tabs/ConfigDataUI.jaxx | 27 +- .../swing/ui/storage/tabs/ConfigDataUIHandler.java | 114 ++ .../swing/ui/storage/tabs/ConfigReferentielUI.jaxx | 45 +- .../storage/tabs/ConfigReferentielUIHandler.java | 139 +++ .../swing/ui/storage/tabs/ConfigUI.jaxx | 10 +- .../swing/ui/storage/tabs/ConfigUI.jcss | 24 +- .../swing/ui/storage/tabs/ConfigUIHandler.java | 171 +++ .../swing/ui/storage/tabs/ConfirmUI.jaxx | 10 - .../swing/ui/storage/tabs/ConfirmUIHandler.java | 22 +- .../swing/ui/storage/tabs/RolesTableModel.java | 2 +- .../application/swing/ui/storage/tabs/RolesUI.jaxx | 8 +- .../swing/ui/storage/tabs/RolesUIHandler.java | 96 ++ .../swing/ui/storage/tabs/SelectDataUI.jaxx | 10 - .../swing/ui/storage/tabs/SelectDataUIHandler.java | 23 +- .../swing/ui/storage/tabs/StorageTabUI.jaxx | 10 +- .../swing/ui/storage/tabs/StorageTabUIHandler.java | 447 +------- .../application/swing/ui/storage/tabs/package.html | 2 +- .../swing/ui/tree/ObserveTreeNodeSupport.java | 2 +- .../swing/ui/tree/navigation/NavigationTree.java | 236 ++-- .../navigation/NavigationTreeCellRenderer.java | 2 +- .../ui/tree/navigation/NavigationTreeModel.java | 26 +- .../navigation/nodes/ClassNavigationTreeNode.java | 15 +- .../nodes/NavigationTreeNodeSupport.java | 101 +- .../nodes/ReferenceNavigationTreeNodeSupport.java | 2 +- .../navigation/nodes/RootNavigationTreeNode.java | 7 +- .../nodes/StringNavigationTreeNodeSupport.java | 8 +- .../tree/navigation/nodes/WithChildsToReload.java | 15 +- .../ActivitiesLonglineNavigationTreeNode.java | 15 +- .../ActivityLonglineNavigationTreeNode.java | 35 +- .../longline/CatchLonglineNavigationTreeNode.java | 2 +- .../EncounterLonglineNavigationTreeNode.java | 2 +- .../GearUseFeaturesLonglineNavigationTreeNode.java | 2 +- .../ProgramLonglineNavigationTreeNode.java | 25 +- .../SensorUsedLonglineNavigationTreeNode.java | 2 +- ...etailCompositionLonglineNavigationTreeNode.java | 2 +- ...lobalCompositionLonglineNavigationTreeNode.java | 2 +- .../longline/SetLonglineNavigationTreeNode.java | 27 +- .../longline/TdrLonglineNavigationTreeNode.java | 2 +- .../longline/TripLonglineNavigationTreeNode.java | 14 +- .../referential/ReferentialNavigationTreeNode.java | 7 +- .../ReferentialsNavigationTreeNode.java | 6 +- .../seine/ActivitiesSeineNavigationTreeNode.java | 20 +- .../seine/ActivitySeineNavigationTreeNode.java | 32 +- ...cardedTargetCatchesSeineNavigationTreeNode.java | 2 +- ...cardedTargetSamplesSeineNavigationTreeNode.java | 2 +- .../FloatingObjectSeineNavigationTreeNode.java | 23 +- ...gObjectTransmittingBuoyNavigationTreeNode.java} | 20 +- .../GearUseFeaturesSeineNavigationTreeNode.java | 2 +- .../KeptTargetCatchesSeineNavigationTreeNode.java | 2 +- .../KeptTargetSamplesSeineNavigationTreeNode.java | 2 +- .../NonTargetCatchesSeineNavigationTreeNode.java | 2 +- .../NoneTargetSamplesSeineNavigationTreeNode.java | 2 +- ...> ObjectObservedSpeciesNavigationTreeNode.java} | 20 +- ...=> ObjectSchoolEstimateNavigationTreeNode.java} | 21 +- .../seine/ProgramSeineNavigationTreeNode.java | 22 +- .../nodes/seine/RouteSeineNavigationTreeNode.java | 13 +- .../nodes/seine/RoutesSeineNavigationTreeNode.java | 13 +- .../SchoolEstimatesSeineNavigationTreeNode.java | 2 +- .../nodes/seine/SetSeineNavigationTreeNode.java | 34 +- .../nodes/seine/TripSeineNavigationTreeNode.java | 7 +- .../swing/ui/tree/selection/SelectionTree.java | 2 +- .../tree/selection/SelectionTreeCellRenderer.java | 2 +- .../tree/selection/SelectionTreeHeaderHandler.java | 2 +- .../ui/tree/selection/SelectionTreeModel.java | 19 +- .../selection/nodes/ProgramSelectionTreeNode.java | 2 +- .../nodes/ReferenceSelectionTreeNodeSupport.java | 2 +- .../nodes/ReferentialSelectionTreeNode.java | 2 +- .../nodes/ReferentialsSelectionTreeNode.java | 2 +- .../selection/nodes/RootSelectionTreeNode.java | 2 +- .../selection/nodes/SelectionTreeNodeSupport.java | 2 +- .../nodes/TripLonglineSelectionTreeNode.java | 2 +- .../nodes/TripSeineSelectionTreeNode.java | 2 +- .../i18n/application-swing_en_GB.properties | 4 + .../i18n/application-swing_es_ES.properties | 4 + .../i18n/application-swing_fr_FR.properties | 4 + .../src/main/resources/icons/action-fullScreen.png | Bin 0 -> 687 bytes .../main/resources/icons/action-windowScreen.png | Bin 0 -> 727 bytes .../v1/data/NavigationServiceController.java | 2 +- .../DataSourceMigrationForVersion_6_0.java | 2 +- ...evol_8391_species_drop_lengthmeasuretype-H2.sql | 21 + ...evol_8391_species_drop_lengthmeasuretype-PG.sql | 21 + .../entities/migration/MigrationVersion.java | 2 +- .../entities/referentiel/FormulaHelper.java | 2 +- .../entities/referentiel/FormulaSupportImpl.java | 2 +- .../referentiel/LengthLengthParameterImpl.java | 2 +- .../referentiel/LengthLengthParameters.java | 2 +- .../entities/referentiel/FormulaHelperTest.java | 2 +- .../ObserveDataSourceInformation.java | 12 +- .../dto/longline/ActivityLonglineHelper.java | 48 + .../services/dto/referential/FormulaHelper.java | 2 +- .../services/dto/seine/ActivitySeineHelper.java | 19 +- .../actions/validate/ValidateServiceRestTest.java | 18 +- .../binder/referential/common/ShipOwnerBinder.java | 2 +- .../actions/validate/ValidateServiceTopia.java | 12 +- .../topia/service/data/NavigationServiceTopia.java | 2 +- .../referential/ReferentialsShellBuilder.java | 2 +- .../actions/validate/ValidateServiceTopiaTest.java | 14 +- .../actions/validate/ValidateDataResult.java | 6 +- .../validate/ValidateReferentialsResult.java | 7 +- .../services/service/data/NavigationRequest.java | 2 +- .../services/service/data/NavigationResult.java | 2 +- .../services/service/data/NavigationService.java | 2 +- .../referential/MissingReferentialResult.java | 2 +- 294 files changed, 5400 insertions(+), 4887 deletions(-) create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/MnemonicHelper.java copy application-swing/src/main/java/fr/ird/observe/application/swing/ui/{ObserveMainUIHandler.java => ObserveMainUIInitializer.java} (72%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{shared => }/AbstractUIAction.java (65%) copy application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/{NewTableEntryUIAction.java => BackToReferentialListUIAction.java} (65%) copy application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/{NewTableEntryUIAction.java => CreateNewReferentialUIAction.java} (67%) copy application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/{NewTableEntryUIAction.java => EditReferentialUIAction.java} (67%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{shared => content}/GoDownUIAction.java (59%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{shared => content}/GoUpUIAction.java (65%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{shared => content}/SelectNodeUIAction.java (50%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{shared => content}/SelectOpenNodeUIAction.java (55%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/action}/LaunchAdminAction.java (97%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/config}/ChangeApplicationLanguageAction.java (97%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/config}/ChangeDbLanguageAction.java (97%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/config}/ReloadDefaultConfigurationAction.java (97%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/config}/ReloadResourcesAction.java (98%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/config}/ShowConfigAction.java (96%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/file}/CloseApplicationAction.java (97%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/file}/ReloadApplicationAction.java (97%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{CloseHelpAction.java => menu/file/ToFullScreenAction.java} (52%) copy application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{global/SaveDataGlobalUIAction.java => menu/file/ToWindowScreenAction.java} (57%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/help}/GotoSiteAction.java (97%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/help}/ShowAboutAction.java (98%) create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoActionSupport.java create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenActivityAction.java create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenProgramAction.java create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenRouteAction.java create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenSetAction.java create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenTripAction.java copy application-swing/src/main/java/fr/ird/observe/application/swing/ui/{tree/navigation/nodes/seine/RouteSeineNavigationTreeNode.java => actions/menu/navigation/GotoReferentialAction.java} (51%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/storage}/ChangeStorageAction.java (97%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/storage}/CloseStorageAction.java (94%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/storage}/ImportStorageFromFileAction.java (98%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/storage}/ReloadStorageAction.java (95%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/storage}/SaveStorageToFileAction.java (95%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/storage}/ShowStorageInfoAction.java (97%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/storage}/StartH2WebServerAction.java (97%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/storage}/StartServerModeAction.java (98%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/storage}/StopH2WebServerAction.java (93%) rename application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/{ => menu/storage}/StopServerModeAction.java (77%) create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigModel.java create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataModel.java create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataUIHandler.java copy services/src/main/java/fr/ird/observe/services/service/data/NavigationService.java => application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/resume/ShowResumeModel.java (60%) copy application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/{open/ContentOpenableUI.jcss => list/impl/CommonListUI.jcss} (55%) delete mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/CommonListUI.jcss delete mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/CommonListUI.jcss create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/BackupUIHandler.java create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ChooseDbModeUIHandler.java create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigDataUIHandler.java create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigReferentielUIHandler.java create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUIHandler.java copy services/src/main/java/fr/ird/observe/services/service/data/NavigationService.java => application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfirmUIHandler.java (63%) create mode 100644 application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/RolesUIHandler.java copy services/src/main/java/fr/ird/observe/services/service/data/NavigationService.java => application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/SelectDataUIHandler.java (60%) copy services/src/main/java/fr/ird/observe/services/service/data/NavigationService.java => application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/WithChildsToReload.java (74%) copy application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/{DiscardedTargetCatchesSeineNavigationTreeNode.java => FloatingObjectTransmittingBuoyNavigationTreeNode.java} (65%) copy application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/{DiscardedTargetSamplesSeineNavigationTreeNode.java => ObjectObservedSpeciesNavigationTreeNode.java} (71%) copy application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/{NoneTargetSamplesSeineNavigationTreeNode.java => ObjectSchoolEstimateNavigationTreeNode.java} (72%) create mode 100644 application-swing/src/main/resources/icons/action-fullScreen.png create mode 100644 application-swing/src/main/resources/icons/action-windowScreen.png create mode 100644 services-dto/src/main/java/fr/ird/observe/services/dto/longline/ActivityLonglineHelper.java copy services/src/main/java/fr/ird/observe/services/service/data/NavigationService.java => services-dto/src/main/java/fr/ird/observe/services/dto/seine/ActivitySeineHelper.java (65%) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit cafb99abecb2e084f53984bbbed0ea0cf327fd86 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 27 14:45:49 2016 +0100 refs #8429 Amélioration du focus sur les dialogues de data sources --- .../swing/ui/storage/StorageUIHandler.java | 130 +++++++++++++++------ .../swing/ui/storage/StorageUIModel.java | 8 +- .../ui/tree/selection/SelectionTreeModel.java | 17 ++- 3 files changed, 103 insertions(+), 52 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIHandler.java index f5ce6de..e69cb74 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIHandler.java @@ -62,6 +62,7 @@ import javax.swing.AbstractAction; import javax.swing.ActionMap; import javax.swing.InputMap; import javax.swing.JComponent; +import javax.swing.JRadioButton; import javax.swing.JTabbedPane; import javax.swing.KeyStroke; import javax.swing.SwingUtilities; @@ -228,24 +229,7 @@ public class StorageUIHandler { UIHelper.center(ui.getContextValue(Window.class, "parent"), ui); SwingUtilities.invokeLater(() -> { - JComponent focusOwner; - switch (ui.getModel().getStep()) { - - case CHOOSE_DB_MODE: - focusOwner = ui.getCHOOSE_DB_MODE().getUseLocalMode(); - if (!focusOwner.isEnabled() || ui.getCHOOSE_DB_MODE().getUseRemoteMode().isSelected()) { - focusOwner = ui.getCHOOSE_DB_MODE().getUseRemoteMode(); - } - break; - case CONFIG: - focusOwner = ui.getCONFIG().getDumpFile(); - break; - case BACKUP: - focusOwner = ui.getBACKUP().getDirectoryText(); - break; - default: - focusOwner = null; - } + JComponent focusOwner = getFocusComponent(ui, ui.getModel().getStep()); if (focusOwner != null) { focusOwner.grabFocus(); } @@ -255,6 +239,81 @@ public class StorageUIHandler { ui.setVisible(true); } + public JComponent getFocusComponent(StorageUI ui, StorageStep newStep) { + + DbMode dbMode = ui.getModel().getDbMode(); + JComponent focusOwner; + switch (newStep) { + + case CHOOSE_DB_MODE: + switch (dbMode) { + + case USE_LOCAL: + focusOwner = ui.getCHOOSE_DB_MODE().getUseLocalMode(); + if (!focusOwner.isEnabled()) { + focusOwner = ui.getCHOOSE_DB_MODE().getUseRemoteMode(); + } + break; + case CREATE_LOCAL: + focusOwner = ui.getCHOOSE_DB_MODE().getCreateLocalMode(); + + break; + case USE_REMOTE: + focusOwner = ui.getCHOOSE_DB_MODE().getUseRemoteMode(); + break; + case USE_SERVER: + focusOwner = ui.getCHOOSE_DB_MODE().getUseServerMode(); + break; + default: + focusOwner = null; // ne peut pas arriver + } + + break; + case CONFIG: + switch (dbMode) { + + case USE_LOCAL: + focusOwner = null; // on ne peut pas arriver sur cet ecran + break; + case CREATE_LOCAL: + focusOwner = ui.getCONFIG().getDumpFile(); + + break; + case USE_REMOTE: + focusOwner = ui.getCONFIG().getRemoteUrl(); + break; + case USE_SERVER: + focusOwner = ui.getCONFIG().getRemoteUrl(); + break; + default: + focusOwner = null; // ne peut pas arriver + } + + break; + case CONFIG_REFERENTIEL: + focusOwner = ui.getCONFIG_REFERENTIEL().getConfigureCentralSource(); + break; + case CONFIG_DATA: + focusOwner = ui.getCONFIG_DATA().getConfigureCentralSource(); + break; + case BACKUP: + focusOwner = ui.getBACKUP().getDirectoryText(); + break; + case SELECT_DATA: + focusOwner = ui.getSELECT_DATA().getSelectTree(); + break; + case ROLES: + focusOwner = ui.getROLES().getRoles(); + break; + case CONFIRM: + focusOwner = ui.getApplyAction(); + break; + default: + focusOwner = null; + } + return focusOwner; + } + public void onStepChanged(StorageUI ui, StorageStep oldStep, StorageStep newStep) { if (newStep == null) { return; @@ -278,6 +337,14 @@ public class StorageUIHandler { } + if (StorageStep.CHOOSE_DB_MODE == newStep) { + JRadioButton focusOwner = ui.getCHOOSE_DB_MODE().getUseLocalMode(); + if (!focusOwner.isEnabled() || ui.getCHOOSE_DB_MODE().getUseRemoteMode().isSelected()) { + focusOwner = ui.getCHOOSE_DB_MODE().getUseRemoteMode(); + } + focusOwner.requestFocusInWindow(); + } + if (StorageStep.CONFIG_REFERENTIEL == newStep && mustRecompute) { // mise à jour de l'univers des étapes (ajout/suppression étape confg_data et select_data possible) @@ -296,7 +363,6 @@ public class StorageUIHandler { // récupération des données possibles à importer initSelectData(ui); - } if (StorageStep.ROLES == newStep && mustRecompute) { @@ -314,6 +380,11 @@ public class StorageUIHandler { } + + JComponent focusComponent = getFocusComponent(ui, newStep); + if (focusComponent != null) { + focusComponent.requestFocusInWindow(); + } } public void launchApply(final StorageUI ui) { @@ -338,7 +409,6 @@ public class StorageUIHandler { if (log.isWarnEnabled()) { log.warn("Launch standalone apply action " + action); } - //FIXME Action executor will not execute task until previous is finished... action.run(); } else { ObserveActionExecutor executor = ObserveRunner.getActionExecutor(); @@ -356,7 +426,6 @@ public class StorageUIHandler { if (log.isWarnEnabled()) { log.warn("Launch standalone cancel action " + action); } - //FIXME Action executor will not execute task until previous is finished... if (action != null) { action.run(); } @@ -627,8 +696,6 @@ public class StorageUIHandler { config.setShowMigrationProgression(configurationTopiaPG.isShowMigrationProgression()); config.setShowMigrationSql(configurationTopiaPG.isShowMigrationSql()); - //TODO-TC20100311 : on devrait pas regarder si l'utilisateur veut sauver - //TODO-TC20100311 : la configuration ? config.saveForUser(); } else if (model.isEditServerConfig()) { @@ -640,23 +707,11 @@ public class StorageUIHandler { config.setServerPassword(new String(configurationRest.getPassword())); config.setServerDatabaseName(configurationRest.getOptionalDatabaseName().orElse("")); - //TODO-TC20100311 : on devrait pas regarder si l'utilisateur veut sauver - //TODO-TC20100311 : la configuration ? - config.saveForUser(); } } -// /** -// * @return le lastName par defaut du fichier de sauvegarde de la base locale -// * (expression calculée à partir de la date courante et du pattern -// * {@link ObserveSwingApplicationConfig#BACKUP_DB_PATTERN}). -// */ -// public String getDefaultBackupFilename() { -// return String.format(ObserveSwingApplicationConfig.BACKUP_DB_PATTERN, new Date()); -// } - /** * Effectue une sauvegarde de la base locale vers le fichier choisi. * @@ -717,7 +772,6 @@ public class StorageUIHandler { StorageUIModel model = ui.getModel(); - boolean closeSource = true; try { @@ -769,6 +823,10 @@ public class StorageUIHandler { SwingUtilities.invokeLater(() -> selectDataUI.getSelectTree().expandAll()); } + if (selectDataUI.getSelectTree().getRowCount() > 0) { + selectDataUI.getSelectTree().setSelectionRow(0); + } + SwingUtilities.invokeLater(selectDataUI.getSelectTree()::grabFocus); } finally { if (closeSource) { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIModel.java index bab7402..391efa4 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIModel.java @@ -1150,6 +1150,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { } // ne pas supprimer utiliser dans les templates + @SuppressWarnings("unused") public File getInitialDbDump() { return ObserveSwingApplicationContext.get().getConfig().getInitialDbDump(); } @@ -1392,10 +1393,6 @@ public class StorageUIModel extends WizardModel<StorageStep> { return serverUrl; } -// protected void setServerUrl(String serverUrl) { -// this.serverUrl = serverUrl; -// } - public boolean isUseSsl() { return pgConfig.isUseSsl(); } @@ -1786,8 +1783,6 @@ public class StorageUIModel extends WizardModel<StorageStep> { if (log.isErrorEnabled()) { log.error("Error in test remote", e); } - - setConnexionStatus(null); setConnexionStatus(ConnexionStatus.FAILED); } finally { @@ -1805,6 +1800,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { } // ne pas supprimer, utilisé dans les templates + @SuppressWarnings("unused") public String getConnexionStatusError() { return connexionStatusError; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java index 274bdde..390cf76 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java @@ -194,8 +194,6 @@ public class SelectionTreeModel extends DefaultTreeModel { programs = ProgramHelper.sort(programs); - boolean showEmptyTrips = isShowEmptyTrips(); - RootSelectionTreeNode root = new RootSelectionTreeNode(); Map<ReferentialReference<ProgramDto>, Collection<DataReference<TripLonglineDto>>> tripsLonglineByProgram = navigationResult.getTripsLonglineByProgram().asMap(); @@ -205,17 +203,15 @@ public class SelectionTreeModel extends DefaultTreeModel { if (ProgramHelper.isProgramLongline(program)) { Collection<DataReference<TripLonglineDto>> references = tripsLonglineByProgram.getOrDefault(program, Collections.emptyList()); - if (showEmptyTrips || !references.isEmpty()) { - ProgramSelectionTreeNode programNode = ProgramSelectionTreeNode.ofLongline(program, references); - root.add(programNode); - } + ProgramSelectionTreeNode programNode = ProgramSelectionTreeNode.ofLongline(program, references); + root.add(programNode); + } else if (ProgramHelper.isProgramSeine(program)) { Collection<DataReference<TripSeineDto>> references = tripsSeineByProgram.getOrDefault(program, Collections.emptyList()); - if (showEmptyTrips || !references.isEmpty()) { - ProgramSelectionTreeNode programNode = ProgramSelectionTreeNode.ofSeine(program, references); - root.add(programNode); - } + ProgramSelectionTreeNode programNode = ProgramSelectionTreeNode.ofSeine(program, references); + root.add(programNode); + } } @@ -380,6 +376,7 @@ public class SelectionTreeModel extends DefaultTreeModel { NavigationRequest navigationRequest = new NavigationRequest(); navigationRequest.setLoadLongline(isLoadLongline()); navigationRequest.setLoadSeine(isLoadSeine()); + navigationRequest.setLoadEmptyProgram(isShowEmptyTrips()); return navigationRequest; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 893c1d09792dc64fa4c00f1de5bb0f242800f560 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 27 14:49:23 2016 +0100 [iso] suppression code mort --- .../application/swing/ObserveTextGenerator.java | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveTextGenerator.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveTextGenerator.java index c839f76..e7dde51 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveTextGenerator.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveTextGenerator.java @@ -24,14 +24,11 @@ package fr.ird.observe.application.swing; import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; -import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; -import fr.ird.observe.services.configuration.ObserveDataSourceInformation; import fr.ird.observe.application.swing.ui.storage.StorageUIModel; +import fr.ird.observe.services.configuration.ObserveDataSourceInformation; import freemarker.cache.ClassTemplateLoader; import freemarker.template.Configuration; import freemarker.template.Template; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.nuiton.jaxx.application.ApplicationTechnicalException; import java.io.StringWriter; @@ -45,10 +42,6 @@ import static org.nuiton.i18n.I18n.t; */ public class ObserveTextGenerator { - private static final Log log = LogFactory.getLog(ObserveTextGenerator.class); - - protected static final String DATA_SOURCE_CONFIGURATION_TEMPLATE = "dataSourceConfiguration.ftl"; - protected static final String CONNEXION_TEST_RESULT_TEMPLATE = "connexionTestResult.ftl"; protected static final String DATA_SOURCE_SELECT_MODE_RESUME_TEMPLATE = "dataSourceSelectModeResume.ftl"; @@ -76,12 +69,6 @@ public class ObserveTextGenerator { // specific template loader to get template from jars (classpath) ClassTemplateLoader templateLoader = new ClassTemplateLoader(ObserveTextGenerator.class, "/ftl"); freemarkerConfiguration.setTemplateLoader(templateLoader); - -// freemarkerConfiguration.setObjectWrapper(new BeansWrapper(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS)); - } - - public String getConfigurationDetail(ObserveDataSourceConfiguration dataSourceConfiguration) { - return generateHtml(DATA_SOURCE_CONFIGURATION_TEMPLATE, dataSourceConfiguration); } public String getConnexionTestResultMessage(StorageUIModel model) { @@ -124,9 +111,6 @@ public class ObserveTextGenerator { } catch (Exception ex) { - if (log.isErrorEnabled()) { - log.error("error while generating html", ex); - } throw new ApplicationTechnicalException(t("observe.generateHtml.error", templateName), ex); } } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit e17eac292e2758564a116ef08969cd8fedb79005 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 27 14:54:55 2016 +0100 [iso] nettoyage de code --- .../swing/ui/storage/StorageUIModel.java | 64 +++++++--------------- 1 file changed, 20 insertions(+), 44 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIModel.java index 391efa4..484c446 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIModel.java @@ -255,24 +255,25 @@ public class StorageUIModel extends WizardModel<StorageStep> { * @since 3.6 */ protected CreationMode dataImportMode; + /** + * Pour sélectionner toutes les marées. + * + * @since 6.0 + */ private boolean selectAll; public StorageUIModel() { - super(StorageStep.class, - StorageStep.CHOOSE_DB_MODE, - StorageStep.BACKUP, - StorageStep.CONFIRM - ); + super(StorageStep.class, StorageStep.CHOOSE_DB_MODE, StorageStep.BACKUP, StorageStep.CONFIRM); securityModel = new SecurityModel(); connexionStatus = ConnexionStatus.UNTESTED; ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - ObserveDataSourceConfigurationMainFactory configurationMainFactory = applicationContext.getObserveDataSourceConfigurationMainFactory(); + ObserveDataSourceConfigurationMainFactory factory = applicationContext.getObserveDataSourceConfigurationMainFactory(); Version modelVersion = applicationContext.getConfig().getModelVersion(); - h2Config = configurationMainFactory.createObserveDataSourceConfigurationTopiaH2( + h2Config = factory.createObserveDataSourceConfigurationTopiaH2( t("observe.storage.label.local"), null, ObserveSwingApplicationConfig.DB_NAME, @@ -283,7 +284,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { modelVersion ); - pgConfig = configurationMainFactory.createObserveDataSourceConfigurationTopiaPG( + pgConfig = factory.createObserveDataSourceConfigurationTopiaPG( t("observe.storage.label.remote"), "", "", @@ -294,7 +295,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { modelVersion ); - restConfig = configurationMainFactory.createObserveDataSourceConfigurationRest( + restConfig = factory.createObserveDataSourceConfigurationRest( t("observe.storage.label.server"), null, "", @@ -443,8 +444,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { * @param previousConfig la configuration de service existant * @since 2.0 */ - public void initFromPreviousConfig(ObserveDataSourceConfiguration previousConfig, - ObserveDataSourceInformation previousInfo) { + public void initFromPreviousConfig(ObserveDataSourceConfiguration previousConfig, ObserveDataSourceInformation previousInfo) { Objects.requireNonNull(previousConfig, "previousConfig parameter can not be null in method initFromPreviousConfig"); @@ -912,25 +912,9 @@ public class StorageUIModel extends WizardModel<StorageStep> { } break; case CONFIG: - if (DbMode.USE_REMOTE.equals(dbMode) - || DbMode.USE_SERVER.equals(dbMode) - || DbMode.CREATE_LOCAL.equals(dbMode) - && (CreationMode.IMPORT_SERVER_STORAGE.equals(creationMode) - || CreationMode.IMPORT_REMOTE_STORAGE.equals(creationMode))) { + if (DbMode.USE_REMOTE.equals(dbMode) || DbMode.USE_SERVER.equals(dbMode) || DbMode.CREATE_LOCAL.equals(dbMode) + && (CreationMode.IMPORT_SERVER_STORAGE.equals(creationMode) || CreationMode.IMPORT_REMOTE_STORAGE.equals(creationMode))) { validate = ConnexionStatus.SUCCESS.equals(getConnexionStatus()); - //FIXME Il faut savoir si l'utilisateur est le - //FIXME propriétaire de la base -// if (validate) { -// if (getAdminAction() != null) { -// -// // il faut des droits rw sur la base distante -// validate = dataSourceInformation != null && -// dataSourceInformation.canReadReferential() && -// dataSourceInformation.canWriteReferential() && -// dataSourceInformation.canWriteData() && -// dataSourceInformation.canReadData(); -// } -// } } else if (DbMode.CREATE_LOCAL.equals(dbMode) && CreationMode.IMPORT_EXTERNAL_DUMP.equals(creationMode)) { validate = isValidDumpFile(dumpFile); } @@ -958,8 +942,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { if (validate) { // check remote db != remote import db - validate = !centralSourceModel.getRemoteUrl().equals( - getRemoteUrl()); + validate = !centralSourceModel.getRemoteUrl().equals(getRemoteUrl()); } if (validate) { @@ -1007,10 +990,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { break; case BACKUP: - validate = !doBackup || - backupFile != null && - !backupFile.exists() && - backupFile.getName().endsWith(".sql.gz"); + validate = !doBackup || backupFile != null && !backupFile.exists() && backupFile.getName().endsWith(".sql.gz"); break; case SELECT_DATA: // chemit 20100525 : aucune contrainte dans ce cas @@ -1045,15 +1025,13 @@ public class StorageUIModel extends WizardModel<StorageStep> { switch (dbMode) { case CREATE_LOCAL: - result = getCreationMode() != null && - validate(StorageStep.CONFIG); + result = getCreationMode() != null && validate(StorageStep.CONFIG); break; case USE_REMOTE: case USE_SERVER: result = validate(StorageStep.CONFIG); break; case USE_LOCAL: - //TODO A tester... result = h2Config.getDatabaseFile().exists(); break; } @@ -1279,10 +1257,12 @@ public class StorageUIModel extends WizardModel<StorageStep> { validate(); } + @Override public void setExcludeSteps(List<StorageStep> excludeSteps) { this.excludeSteps = excludeSteps; } + @Override public void destroy() { super.destroy(); } @@ -1423,8 +1403,6 @@ public class StorageUIModel extends WizardModel<StorageStep> { public void setRemoteLogin(String remoteLogin) { -// String oldValue = getRemoteLogin(); - if (isEditRemoteConfig()) { pgConfig.setUsername(remoteLogin); @@ -1439,7 +1417,6 @@ public class StorageUIModel extends WizardModel<StorageStep> { } public void setRemotePassword(char... remotePassword) { -// char[] oldValue = getRemotePassword(); if (isEditRemoteConfig()) { @@ -1643,6 +1620,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { dst.setSelectDataModel(getSelectDataModel()); dst.setSecurityModel(getSecurityModel()); dst.setAdminAction(getAdminAction()); + dst.setSelectAll(isSelectAll()); dst.updateEditConfig(); @@ -1657,9 +1635,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { } - public void firePgConfigChanged(String propertyName, - Object oldValue, - Object newValue) { + public void firePgConfigChanged(String propertyName, Object oldValue, Object newValue) { firePropertyChange(propertyName, oldValue, newValue); validate(); } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit a0eecc1d4284318fabf8d06c034117e24c3ec0c1 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Nov 27 15:44:44 2016 +0100 refs #8429 Amélioration des racourcis claviers sur le dialogue des data sources --- .../swing/ui/storage/StorageUIHandler.java | 16 +++++- .../swing/ui/storage/StorageUIModel.java | 20 +++---- .../swing/ui/storage/tabs/StorageTabUIHandler.java | 67 ++++++++++++++++------ 3 files changed, 72 insertions(+), 31 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIHandler.java index e69cb74..895cd31 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIHandler.java @@ -256,7 +256,6 @@ public class StorageUIHandler { break; case CREATE_LOCAL: focusOwner = ui.getCHOOSE_DB_MODE().getCreateLocalMode(); - break; case USE_REMOTE: focusOwner = ui.getCHOOSE_DB_MODE().getUseRemoteMode(); @@ -276,8 +275,19 @@ public class StorageUIHandler { focusOwner = null; // on ne peut pas arriver sur cet ecran break; case CREATE_LOCAL: - focusOwner = ui.getCONFIG().getDumpFile(); - + switch (ui.getModel().getCreationMode()) { + case IMPORT_EXTERNAL_DUMP: + focusOwner = ui.getCONFIG().getDumpFile(); + break; + case IMPORT_REMOTE_STORAGE: + focusOwner = ui.getCONFIG().getRemoteUrl(); + break; + case IMPORT_SERVER_STORAGE: + focusOwner = ui.getCONFIG().getRemoteUrl(); + break; + default: + focusOwner = null; + } break; case USE_REMOTE: focusOwner = ui.getCONFIG().getRemoteUrl(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIModel.java index 484c446..4c2a53b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIModel.java @@ -146,7 +146,7 @@ public class StorageUIModel extends WizardModel<StorageStep> { private static final char[] EMPTY_PASSWORD = new char[0]; - private static final String LOGIN_REFERENTIEL = "referentiel"; +// private static final String LOGIN_REFERENTIEL = "referentiel"; /** Le dbMode de connexion requis. */ protected DbMode dbMode; @@ -1301,15 +1301,15 @@ public class StorageUIModel extends WizardModel<StorageStep> { if (oldValue != creationMode) { updateUniverse(); } - if (CreationMode.IMPORT_REMOTE_STORAGE.equals(creationMode) || CreationMode.IMPORT_SERVER_STORAGE.equals(creationMode)) { - //TC-20100308 : dans le cas d'un import du référentiel distant - //TC-20100308 : on utilise toujours l'utilisateur referentiel - String s = getRemoteLogin(); - if (s != null && !LOGIN_REFERENTIEL.equals(s)) { - setRemoteLogin(LOGIN_REFERENTIEL); - setRemotePassword(EMPTY_PASSWORD); - } - } +// if (CreationMode.IMPORT_REMOTE_STORAGE.equals(creationMode) || CreationMode.IMPORT_SERVER_STORAGE.equals(creationMode)) { +// //TC-20100308 : dans le cas d'un import du référentiel distant +// //TC-20100308 : on utilise toujours l'utilisateur referentiel +// String s = getRemoteLogin(); +// if (s != null && !LOGIN_REFERENTIEL.equals(s)) { +// setRemoteLogin(LOGIN_REFERENTIEL); +// setRemotePassword(EMPTY_PASSWORD); +// } +// } validate(); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/StorageTabUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/StorageTabUIHandler.java index 69ba3e8..32dde07 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/StorageTabUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/StorageTabUIHandler.java @@ -37,6 +37,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.AbstractAction; +import javax.swing.AbstractButton; import javax.swing.Icon; import javax.swing.JComponent; import javax.swing.JLabel; @@ -68,6 +69,19 @@ import static org.nuiton.i18n.I18n.t; public class StorageTabUIHandler { private static final Log log = LogFactory.getLog(StorageTabUIHandler.class); + public static final String ACTION_DO_CHOOSE_FILE = "doChooseFile"; + public static final String ACTION_DO_USE_SSL = "doUseSsl"; + public static final String ACTION_DO_KEEP_CONFIGURATION = "doKeepConfiguration"; + public static final String ACTION_DO_CONFIGURE_REMOTE_SOURCE = "doConfigureRemoteSource"; + public static final String ACTION_DO_CONFIGURE_REMOTE_SERVER = "doConfigureRemoteServer"; + public static final String ACTION_DO_BACKUP = "doBackup"; + public static final String ACTION_DO_CHOOSE_DIRECTORY = "doChooseDirectory"; + public static final KeyStroke KEY_STROKE_DO_CONFIGURE_REMOTE_SERVER = KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_MASK); + public static final KeyStroke KEY_STROKE_DO_BACKUP = KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK); + public static final KeyStroke KEY_STROKE_DO_CHOOSE_DIRECTORY = KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK); + public static final KeyStroke KEY_STROKE_KEEP_CONFIGURATION = KeyStroke.getKeyStroke(KeyEvent.VK_K, InputEvent.CTRL_MASK); + public static final KeyStroke KEY_STROKE_DO_USE_SSL = KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_MASK); + public static final KeyStroke KEY_STROKE_DO_CHOOSE_FILE = KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK); public boolean updateCreationModeLayout(ChooseDbModeUI ui, boolean visible, JRadioButton button) { JPanel panel = ui.getUseCreateMode(); @@ -132,7 +146,7 @@ public class StorageTabUIHandler { }; ui.getModel().addPropertyChangeListener(listener); - ui.getActionMap().put("doChooseFile", new AbstractAction() { + ui.getActionMap().put(ACTION_DO_CHOOSE_FILE, new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { if (StorageStep.CONFIG == ui.getModel().getStep()) { @@ -140,10 +154,10 @@ public class StorageTabUIHandler { } } }); - KeyStroke keyStroke = KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK); - ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(keyStroke, "doChooseFile"); + ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KEY_STROKE_DO_CHOOSE_FILE, ACTION_DO_CHOOSE_FILE); + addKeyStroke(ui.getFileChooserAction(), KEY_STROKE_DO_CHOOSE_FILE); - ui.getActionMap().put("doUseSsl", new AbstractAction() { + ui.getActionMap().put(ACTION_DO_USE_SSL, new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { if (StorageStep.CONFIG == ui.getModel().getStep()) { @@ -151,9 +165,10 @@ public class StorageTabUIHandler { } } }); - ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_MASK), "doUseSsl"); + ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KEY_STROKE_DO_USE_SSL, ACTION_DO_USE_SSL); + addKeyStroke(ui.getRemoteUseSsl(), KEY_STROKE_DO_USE_SSL); - ui.getActionMap().put("doKeepConfiguration", new AbstractAction() { + ui.getActionMap().put(ACTION_DO_KEEP_CONFIGURATION, new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { if (StorageStep.CONFIG == ui.getModel().getStep()) { @@ -161,8 +176,8 @@ public class StorageTabUIHandler { } } }); - ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK), "doKeepConfiguration"); - + ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KEY_STROKE_KEEP_CONFIGURATION, ACTION_DO_KEEP_CONFIGURATION); + addKeyStroke(ui.getStoreRemoteConfig(), KEY_STROKE_KEEP_CONFIGURATION); } public void initUI(ConfigReferentielUI ui) { @@ -179,7 +194,7 @@ public class StorageTabUIHandler { ui.getModel().addPropertyChangeListener(listener); ui.getModel().setReferentielImportMode(CreationMode.IMPORT_EXTERNAL_DUMP); - ui.getActionMap().put("doConfigureRemoteSource", new AbstractAction() { + ui.getActionMap().put(ACTION_DO_CONFIGURE_REMOTE_SOURCE, new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { if (StorageStep.CONFIG_REFERENTIEL == ui.getModel().getStep()) { @@ -187,8 +202,10 @@ public class StorageTabUIHandler { } } }); - ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK), "doConfigureRemoteSource"); - ui.getActionMap().put("doConfigureRemoteServer", new AbstractAction() { + ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KEY_STROKE_DO_CHOOSE_DIRECTORY, ACTION_DO_CONFIGURE_REMOTE_SOURCE); + addKeyStroke(ui.getConfigureCentralSource(), KEY_STROKE_DO_CHOOSE_DIRECTORY); + + ui.getActionMap().put(ACTION_DO_CONFIGURE_REMOTE_SERVER, new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { if (StorageStep.CONFIG_REFERENTIEL == ui.getModel().getStep()) { @@ -196,7 +213,8 @@ public class StorageTabUIHandler { } } }); - ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK), "doConfigureRemoteServer"); + ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KEY_STROKE_DO_CONFIGURE_REMOTE_SERVER, ACTION_DO_CONFIGURE_REMOTE_SERVER); + addKeyStroke(ui.getConfigureCentralSourceServer(), KEY_STROKE_DO_CONFIGURE_REMOTE_SERVER); } } @@ -281,7 +299,7 @@ public class StorageTabUIHandler { if (ui.getStep() != null) { ui.setDescriptionText(t(ui.getStep().getDescription())); - ui.getActionMap().put("doBackup", new AbstractAction() { + ui.getActionMap().put(ACTION_DO_BACKUP, new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { if (StorageStep.BACKUP == ui.getModel().getStep()) { @@ -289,8 +307,10 @@ public class StorageTabUIHandler { } } }); - ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK), "doBackup"); - ui.getActionMap().put("doChooseDirectory", new AbstractAction() { + ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KEY_STROKE_DO_BACKUP, ACTION_DO_BACKUP); + addKeyStroke(ui.getDoBackup(), KEY_STROKE_DO_BACKUP); + + ui.getActionMap().put(ACTION_DO_CHOOSE_DIRECTORY, new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { if (StorageStep.BACKUP == ui.getModel().getStep()) { @@ -298,10 +318,21 @@ public class StorageTabUIHandler { } } }); - ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK), "doChooseDirectory"); + ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KEY_STROKE_DO_CHOOSE_DIRECTORY, ACTION_DO_CHOOSE_DIRECTORY); + addKeyStroke(ui.getChooseFileAction(), KEY_STROKE_DO_CHOOSE_DIRECTORY); } } + protected void addKeyStroke(AbstractButton component, KeyStroke actionKey) { + + String actionStr = actionKey.toString().replace("pressed", " + "); + String text = component.getText() + " (" + actionStr + ")"; + component.setText(text); + String tip = component.getToolTipText() + " (" + actionStr + ")"; + component.setToolTipText(tip); + + } + public void initUI(ConfirmUI ui) { if (ui.getStep() != null) { ui.setDescriptionText(t(ui.getStep().getDescription())); @@ -375,7 +406,7 @@ public class StorageTabUIHandler { return (Color) ui.getConnexionStatus().getClientProperty(status.name().toLowerCase() + "Color"); } - public String updateConnexionStatutText(ConfigUI ui, ConnexionStatus status) { + public String updateConnexionStatutText(ConfigUI ui, @SuppressWarnings("unused") ConnexionStatus status) { ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); ObserveTextGenerator textGenerator = applicationContext.getTextGenerator(); return textGenerator.getConnexionTestResultMessage(ui.getModel()); @@ -413,7 +444,7 @@ public class StorageTabUIHandler { ui.getModel().validate(); } - protected String updateInternalDumpModeLabel(boolean dumpExist) { + protected String updateInternalDumpModeLabel(@SuppressWarnings("unused") boolean dumpExist) { File f = ObserveSwingApplicationContext.get().getConfig().getInitialDbDump(); String text; if (f.exists()) { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit dc681734ae429db09202120679cff6629580e684 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Nov 28 13:50:06 2016 +0100 refs #8429 [iso] réusinage du boot des wizard + ajout des mnemonics --- .../src/main/config/ObserveSwingApplication.ini | 6 + ...pplication-swing-configuration_en_GB.properties | 1 + ...pplication-swing-configuration_es_ES.properties | 1 + ...pplication-swing-configuration_fr_FR.properties | 1 + .../src/main/filters/observe-ui.properties | 3 + .../observe/application/swing/ObserveRunner.java | 7 +- .../ObserveSwingApplicationDataSourcesManager.java | 51 +- .../application/swing/ui/MnemonicHelper.java | 130 +++ .../application/swing/ui/ObserveMainUI.jaxx | 43 +- .../application/swing/ui/ObserveMainUI.jcss | 72 +- .../application/swing/ui/ObserveMainUIHandler.java | 512 +-------- ...IHandler.java => ObserveMainUIInitializer.java} | 157 +-- .../application/swing/ui/ObserveUICallback.java | 2 +- .../ird/observe/application/swing/ui/UIHelper.java | 108 +- .../swing/ui/actions/ShowConfigAction.java | 20 +- .../swing/ui/actions/ToFullScreenAction.java | 41 + .../swing/ui/actions/ToWindowScreenAction.java | 40 + .../actions/content/AbstractContentUIAction.java | 2 +- .../ui/actions/global/AbstractGlobalUIAction.java | 1 - .../swing/ui/actions/shared/AbstractUIAction.java | 49 +- .../ui/actions/shared/SelectOpenNodeUIAction.java | 2 +- .../application/swing/ui/admin/AdminTabUI.jaxx | 42 +- .../application/swing/ui/admin/AdminTabUI.jcss | 2 +- .../swing/ui/admin/AdminTabUIHandler.java | 59 +- .../application/swing/ui/admin/AdminUI.jaxx | 57 +- .../application/swing/ui/admin/AdminUIHandler.java | 91 +- .../swing/ui/admin/AdminUILauncher.java | 9 +- .../application/swing/ui/admin/AdminUIModel.java | 1150 ++------------------ .../swing/ui/admin/config/ConfigModel.java | 673 ++++++++++++ .../swing/ui/admin/config/ConfigUI.jaxx | 49 +- .../swing/ui/admin/config/ConfigUI.jcss | 4 +- .../swing/ui/admin/config/ConfigUIHandler.java | 58 +- .../swing/ui/admin/config/SelectDataModel.java | 229 ++++ .../swing/ui/admin/config/SelectDataUI.jaxx | 20 +- .../swing/ui/admin/config/SelectDataUI.jcss | 4 - .../swing/ui/admin/config/SelectDataUIHandler.java | 50 + .../ui/admin/consolidate/ConsolidateModel.java | 29 + .../swing/ui/admin/consolidate/ConsolidateUI.jaxx | 27 +- .../ui/admin/consolidate/ConsolidateUIHandler.java | 30 +- .../swing/ui/admin/export/ExportModel.java | 6 + .../swing/ui/admin/export/ExportUI.jaxx | 12 - .../swing/ui/admin/export/ExportUIHandler.java | 44 +- .../swing/ui/admin/report/ReportModel.java | 66 ++ .../swing/ui/admin/report/ReportUI.jaxx | 23 +- .../swing/ui/admin/report/ReportUIHandler.java | 67 +- .../swing/ui/admin/resume/ShowResumeModel.java | 21 + .../swing/ui/admin/resume/ShowResumeUI.jaxx | 18 +- .../swing/ui/admin/resume/ShowResumeUIHandler.java | 30 +- .../swing/ui/admin/save/SaveLocalModel.java | 51 +- .../swing/ui/admin/save/SaveLocalUI.jaxx | 26 +- .../swing/ui/admin/save/SaveLocalUIHandler.java | 31 +- .../admin/synchronize/data/DataSynchroModel.java | 11 + .../ui/admin/synchronize/data/DataSynchroUI.jaxx | 14 - .../synchronize/data/DataSynchroUIHandler.java | 70 +- .../referential/legacy/SynchronizeModel.java | 6 + .../referential/legacy/SynchronizeUI.jaxx | 13 +- .../referential/legacy/SynchronizeUIHandler.java | 38 +- .../referential/ng/ReferentialSynchroModel.java | 43 + .../referential/ng/ReferentialSynchroUI.jaxx | 13 +- .../ng/ReferentialSynchroUIHandler.java | 42 +- .../swing/ui/admin/validate/ValidateModel.java | 69 +- .../swing/ui/admin/validate/ValidateUI.jaxx | 29 +- .../swing/ui/admin/validate/ValidateUIHandler.java | 59 +- .../swing/ui/content/ContentUIInitializer.java | 42 +- .../swing/ui/content/ContentUIManager.java | 31 + .../swing/ui/content/ObserveFocusManager.java | 2 +- .../LonglineDetailCompositionUIInitializer.java | 14 +- .../open/impl/longline/ActivityLonglineUI.jcss | 4 + .../impl/longline/CatchLonglineUIHandler.java | 4 +- .../application/swing/ui/storage/StorageUI.jaxx | 47 +- .../swing/ui/storage/StorageUIHandler.java | 304 +++--- .../swing/ui/storage/StorageUILauncher.java | 35 +- .../swing/ui/storage/tabs/BackupUI.jaxx | 15 +- .../swing/ui/storage/tabs/BackupUIHandler.java | 74 ++ .../swing/ui/storage/tabs/ChooseDbModeUI.jaxx | 8 +- .../swing/ui/storage/tabs/ChooseDbModeUI.jcss | 4 +- .../ui/storage/tabs/ChooseDbModeUIHandler.java | 77 ++ .../swing/ui/storage/tabs/ConfigDataUI.jaxx | 27 +- .../swing/ui/storage/tabs/ConfigDataUIHandler.java | 92 ++ .../swing/ui/storage/tabs/ConfigReferentielUI.jaxx | 45 +- .../storage/tabs/ConfigReferentielUIHandler.java | 117 ++ .../swing/ui/storage/tabs/ConfigUI.jaxx | 10 +- .../swing/ui/storage/tabs/ConfigUI.jcss | 24 +- .../swing/ui/storage/tabs/ConfigUIHandler.java | 149 +++ .../swing/ui/storage/tabs/ConfirmUI.jaxx | 10 - .../swing/ui/storage/tabs/ConfirmUIHandler.java | 21 + .../swing/ui/storage/tabs/RolesTableModel.java | 2 +- .../application/swing/ui/storage/tabs/RolesUI.jaxx | 8 +- .../swing/ui/storage/tabs/RolesUIHandler.java | 74 ++ .../swing/ui/storage/tabs/SelectDataUI.jaxx | 10 - .../swing/ui/storage/tabs/SelectDataUIHandler.java | 22 + .../swing/ui/storage/tabs/StorageTabUI.jaxx | 10 +- .../swing/ui/storage/tabs/StorageTabUIHandler.java | 478 +------- .../application/swing/ui/storage/tabs/package.html | 2 +- .../i18n/application-swing_en_GB.properties | 4 + .../i18n/application-swing_es_ES.properties | 4 + .../i18n/application-swing_fr_FR.properties | 4 + .../src/main/resources/icons/action-fullScreen.png | Bin 0 -> 687 bytes .../main/resources/icons/action-windowScreen.png | Bin 0 -> 727 bytes .../actions/validate/ValidateServiceRestTest.java | 18 +- .../actions/validate/ValidateServiceTopia.java | 12 +- .../actions/validate/ValidateServiceTopiaTest.java | 14 +- .../actions/validate/ValidateDataResult.java | 6 +- .../validate/ValidateReferentialsResult.java | 7 +- 104 files changed, 2961 insertions(+), 3504 deletions(-) diff --git a/application-swing-configuration/src/main/config/ObserveSwingApplication.ini b/application-swing-configuration/src/main/config/ObserveSwingApplication.ini index 6087171..e6af8a9 100644 --- a/application-swing-configuration/src/main/config/ObserveSwingApplication.ini +++ b/application-swing-configuration/src/main/config/ObserveSwingApplication.ini @@ -503,6 +503,12 @@ key = ui.noFocusBorderColor.color type = java.awt.Color defaultValue = "java.awt.Color[r=192,g=192,b=192]" +[option showMnemonic] +description = observe.config.ui.showMnemonic +key = ui.showMnemonic +type = boolean +defaultValue = true + [action help] description = observe.action.commandline.help action = "fr.ird.observe.application.swing.ObserveCLAction#help" diff --git a/application-swing-configuration/src/main/resources/i18n/application-swing-configuration_en_GB.properties b/application-swing-configuration/src/main/resources/i18n/application-swing-configuration_en_GB.properties index c75c8f5..01a1a88 100644 --- a/application-swing-configuration/src/main/resources/i18n/application-swing-configuration_en_GB.properties +++ b/application-swing-configuration/src/main/resources/i18n/application-swing-configuration_en_GB.properties @@ -79,6 +79,7 @@ observe.config.ui.fullscreen=Flag sets to true to lauch application in full scre observe.config.ui.loadLocalStorage=Flag sets to true to load local data source when application starts observe.config.ui.locale=Application's language observe.config.ui.noFocusBorderColor=Color of the not focus container border +observe.config.ui.showMnemonic=Show mnemonic on actions observe.config.ui.showNumberEditorButton=Flag sets to true to show button to invoke popup on number's editors observe.config.ui.showTimeEditorSlider=Show timer slider observe.config.ui.storeRemoteStorage=Flag sets to true to store in config a remote connexion (except passwords) diff --git a/application-swing-configuration/src/main/resources/i18n/application-swing-configuration_es_ES.properties b/application-swing-configuration/src/main/resources/i18n/application-swing-configuration_es_ES.properties index b3ad83e..283976a 100644 --- a/application-swing-configuration/src/main/resources/i18n/application-swing-configuration_es_ES.properties +++ b/application-swing-configuration/src/main/resources/i18n/application-swing-configuration_es_ES.properties @@ -79,6 +79,7 @@ observe.config.ui.fullscreen=Para mostrar en modo pantalla completa la aplicaci observe.config.ui.loadLocalStorage=Cambiar la base local al iniciar la aplicación observe.config.ui.locale=Idioma de la aplicación (fr_FR, en_GB o es_ES) observe.config.ui.noFocusBorderColor=Couleur de la bordure de la zone qui n'a pas le focus \#TODO +observe.config.ui.showMnemonic=Afficher les racourcis clavier \#TODO observe.config.ui.showNumberEditorButton=Para mostrar el botón que permite usar el editor numérico a la izquierda de cada campo numérico observe.config.ui.showTimeEditorSlider=Para mostrar la regla de edición de las horas observe.config.ui.storeRemoteStorage=Para activar la copia de seguridad de la configuración de la fuente de datos remota diff --git a/application-swing-configuration/src/main/resources/i18n/application-swing-configuration_fr_FR.properties b/application-swing-configuration/src/main/resources/i18n/application-swing-configuration_fr_FR.properties index 5207b9a..0cbe9ca 100644 --- a/application-swing-configuration/src/main/resources/i18n/application-swing-configuration_fr_FR.properties +++ b/application-swing-configuration/src/main/resources/i18n/application-swing-configuration_fr_FR.properties @@ -79,6 +79,7 @@ observe.config.ui.fullscreen=Pour afficher l'application en mode pleine écran observe.config.ui.loadLocalStorage=Charger la base locale au démarrage de l'application observe.config.ui.locale=Langue utilisée par l'application (fr_FR, en_GB ou es_ES) observe.config.ui.noFocusBorderColor=Couleur de la bordure de la zone qui n'a pas le focus +observe.config.ui.showMnemonic=Afficher les racourcis clavier observe.config.ui.showNumberEditorButton=Pour afficher le bouton qui permet d'utiliser l'éditeur numérique à gauche de chaque champs numérique observe.config.ui.showTimeEditorSlider=Pour afficher la réglette d'édition des heures observe.config.ui.storeRemoteStorage=Pour activer la sauvegarde de la configuration de la source distante diff --git a/application-swing/src/main/filters/observe-ui.properties b/application-swing/src/main/filters/observe-ui.properties index 45bbae6..ca42153 100644 --- a/application-swing/src/main/filters/observe-ui.properties +++ b/application-swing/src/main/filters/observe-ui.properties @@ -196,6 +196,9 @@ icon.action.collapse=action-collapse.png icon.action.select=action-select.png icon.action.unselect=action-unselect.png +icon.action.full-screen=action-fullScreen.png +icon.action.window-screen=action-windowScreen.png + icon.action.wizard-state-pending=action-wizard-state-pending-16.png icon.action.wizard-state-running=action-wizard-state-running-16.png icon.action.wizard-state-need_fix=action-wizard-state-need_fix-16.png diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveRunner.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveRunner.java index 4bed2ac..ab27518 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveRunner.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveRunner.java @@ -24,7 +24,7 @@ package fr.ird.observe.application.swing; import com.google.common.base.Preconditions; import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.application.swing.ui.ObserveMainUI; -import fr.ird.observe.application.swing.ui.ObserveMainUIHandler; +import fr.ird.observe.application.swing.ui.ObserveMainUIInitializer; import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.actions.StartServerModeAction; import fr.ird.observe.application.swing.ui.util.FloatConverter; @@ -558,7 +558,6 @@ public abstract class ObserveRunner extends ApplicationRunner { File dir = config.getResourcesDirectory(); File file = ObserveResourceManager.Resource.ui.getFile(dir); - if (!file.exists()) { String message = t("observe.runner.copy.default.ui.file", file); @@ -586,9 +585,7 @@ public abstract class ObserveRunner extends ApplicationRunner { private ObserveMainUI startUI(ObserveSwingApplicationContext context, ObserveSwingApplicationConfig config) { - ObserveMainUIHandler uiHandler = context.getContextValue(ObserveMainUIHandler.class); - - ObserveMainUI ui = uiHandler.initUI(context, config); + ObserveMainUI ui = ObserveMainUIInitializer.initUI(context, config); UIHelper.setMainUIVisible(ui); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationDataSourcesManager.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationDataSourcesManager.java index b11d0fa..920de11 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationDataSourcesManager.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationDataSourcesManager.java @@ -33,6 +33,7 @@ import fr.ird.observe.application.swing.db.event.ObserveSwingDataSourceListenerA import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.ObserveUIMode; import fr.ird.observe.application.swing.ui.actions.ChangeStorageAction; +import fr.ird.observe.application.swing.ui.storage.StorageUIModel; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceInformation; import fr.ird.observe.services.configuration.rest.ObserveDataSourceConfigurationRest; @@ -75,6 +76,50 @@ public class ObserveSwingApplicationDataSourcesManager implements Closeable { private ObserveSwingDataSource dataSource; /** + * Prépare une service de persistance à partir d'un modèle. + * + * Le service ne sera pas ouvert. + * + * @param model le modèle de la source de données + * @return le service de persistance initialisé mais non ouvert. + */ + public ObserveSwingDataSource newDataSourceFromModel(StorageUIModel model) { + + ObserveSwingDataSource dataSource = null; + ObserveDataSourceConfiguration configuration; + switch (model.getDbMode()) { + case CREATE_LOCAL: + case USE_LOCAL: + configuration = model.toH2StorageConfig(t("observe.storage.label.local")); + + dataSource = newDataSource(configuration); + + dataSource.addObserveSwingDataSourceListener( + new ObserveSwingDataSourceListenerAdapter() { + + @Override + public void onOpened(ObserveSwingDataSourceEvent event) { + ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); + // la base locale existe desormais + context.getConfig().setLocalStorageExist(true); + } + }); + + break; + case USE_REMOTE: + configuration = model.toPGStorageConfig(t("observe.storage.label.remote")); + dataSource = newDataSource(configuration); + break; + case USE_SERVER: + configuration = model.toRestStorageConfig(t("observe.storage.label.server")); + dataSource = newDataSource(configuration); + break; + } + + return dataSource; + } + + /** * Construit une source de données sur la base locale de l'application. * * <b>Note:</b> La base locale doit exister, sinon on soulève une @@ -373,7 +418,7 @@ public class ObserveSwingApplicationDataSourcesManager implements Closeable { applicationContext.getConfig().saveTreeOpenNodeIds(dataContext.getOpenIds()); dataContext.populateOpens(); - mainUI.getHandler().cleanNavigationUI(mainUI); + mainUI.getInitializer().cleanNavigationUI(); // mainUI.getTreeHelper().cleanNavigationUI(mainUI); // on met a jour l'état dans la config @@ -435,7 +480,7 @@ public class ObserveSwingApplicationDataSourcesManager implements Closeable { DataContext dataContext = mainUI.getDataContext(); dataContext.setEnabled(true); - mainUI.getHandler().cleanNavigationUI(mainUI); + mainUI.getInitializer().cleanNavigationUI(); String[] openIds = config.getTreeOpenNodeIds(); @@ -444,7 +489,7 @@ public class ObserveSwingApplicationDataSourcesManager implements Closeable { } dataContext.populateOpens(openIds); - mainUI.getHandler().loadNavigationUI(mainUI); + mainUI.getInitializer().loadNavigationUI(); mainUI.setMode(ObserveUIMode.DB); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/MnemonicHelper.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/MnemonicHelper.java new file mode 100644 index 0000000..40e2f16 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/MnemonicHelper.java @@ -0,0 +1,130 @@ +package fr.ird.observe.application.swing.ui; + +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.ui.actions.shared.AbstractUIAction; +import jaxx.runtime.JAXXObject; +import org.apache.commons.lang3.StringUtils; + +import javax.swing.AbstractButton; +import javax.swing.KeyStroke; +import java.awt.event.InputEvent; +import java.awt.event.KeyEvent; +import java.util.LinkedHashSet; +import java.util.Objects; +import java.util.Set; + +import static javax.swing.Action.ACCELERATOR_KEY; +import static javax.swing.Action.NAME; +import static javax.swing.Action.SHORT_DESCRIPTION; +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 27/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class MnemonicHelper { + + public static final KeyStroke KEY_STROKE_STORAGE_DO_CONFIGURE_REMOTE_SERVER = KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_MASK); + public static final KeyStroke KEY_STROKE_STORAGE_DO_BACKUP = KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK); + public static final KeyStroke KEY_STROKE_STORAGE_DO_CHOOSE_DIRECTORY = KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK); + public static final KeyStroke KEY_STROKE_STORAGE_KEEP_CONFIGURATION = KeyStroke.getKeyStroke(KeyEvent.VK_K, InputEvent.CTRL_MASK); + public static final KeyStroke KEY_STROKE_STORAGE_DO_USE_SSL = KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_MASK); + public static final KeyStroke KEY_STROKE_STORAGE_DO_CHOOSE_FILE = KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK); + public static final KeyStroke KEY_STROKE_ESCAPE = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0); + + private static String keyStrokeToStr(KeyStroke actionKey) { + String result = ""; + if (actionKey != null) { + result = " (" + StringUtils.removeStart(actionKey.toString().replace("pressed", "+"), "+ ") + ")"; + } + return result; + } + + public static void addKeyStroke(AbstractButton component, KeyStroke actionKey) { + + boolean showMnemonic = isShowMnemonic(); + if (showMnemonic) { + String actionStr = keyStrokeToStr(actionKey); + String text = component.getText() + actionStr; + component.setText(text); + String tip = component.getToolTipText() + actionStr; + component.setToolTipText(tip); + } + } + + protected static boolean isShowMnemonic() { + return ObserveSwingApplicationContext.get().getConfig().isShowMnemonic(); + } + + public static void addKeyStore(AbstractUIAction action, String acceleratorKey, String label, String shortDescription) { + + String acceleratorStr = ""; + if (acceleratorKey != null) { + KeyStroke keyStroke = KeyStroke.getKeyStroke(acceleratorKey); + Objects.requireNonNull(keyStroke, "KeyStroke invalide: " + acceleratorKey); + action.putValue(ACCELERATOR_KEY, keyStroke); + acceleratorStr = isShowMnemonic() ? keyStrokeToStr(keyStroke) : ""; + } + + action.putValue(NAME, t(label) + acceleratorStr); + action.putValue(SHORT_DESCRIPTION, t(shortDescription) + acceleratorStr); + } + + public static void addKeyStroke2(AbstractButton editor, KeyStroke keyStroke) { + String tip = (String) editor.getClientProperty("toolTipText"); + boolean showMnemonic = isShowMnemonic(); + if (tip != null) { + if (keyStroke != null && showMnemonic) { + tip += keyStrokeToStr(keyStroke); + } + editor.setToolTipText(tip); + } + + String text = (String) editor.getClientProperty("text"); + if (text != null) { + if (keyStroke != null && showMnemonic) { + text += keyStrokeToStr(keyStroke); + } + editor.setText(text); + } + + } + + public static void addKeyStrokeFromMnemonic(AbstractButton editor) { + int mnemonic = editor.getMnemonic(); + if (mnemonic > 0) { + if (isShowMnemonic()) { + String accelerator = " (Alt + " + (char) mnemonic + ")"; + if (editor.getText() != null) { + editor.setText(editor.getText() + accelerator); + } + if (editor.getToolTipText() != null) { + editor.setToolTipText(editor.getToolTipText() + accelerator); + } + } + } + } + + public static void addKeyStrokeFromMnemonic(JAXXObject jaxxObject) { + Set<JAXXObject> done = new LinkedHashSet<>(); + addKeyStrokeFromMnemonic(jaxxObject, done); + } + + protected static void addKeyStrokeFromMnemonic(JAXXObject jaxxObject, Set<JAXXObject> done) { + + if (done.contains(jaxxObject)) { + return; + } + done.add(jaxxObject); + + jaxxObject.get$objectMap().values().stream().filter(o -> o instanceof AbstractButton).forEach( + o -> addKeyStrokeFromMnemonic((AbstractButton) o) + ); + + jaxxObject.get$objectMap().values().stream().filter(o -> o instanceof JAXXObject).forEach( + o -> addKeyStrokeFromMnemonic((JAXXObject) o, done) + ); + } +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jaxx index 5dcc505..28356e0 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jaxx @@ -35,14 +35,34 @@ fr.ird.observe.services.dto.seine.TripSeineDto fr.ird.observe.services.dto.constants.ReferentialLocale - fr.ird.observe.application.swing.ui.actions.content.ReOpenUIAction - fr.ird.observe.application.swing.ui.admin.AdminStep + + fr.ird.observe.application.swing.ui.actions.ChangeApplicationLanguageAction + fr.ird.observe.application.swing.ui.actions.ChangeDbLanguageAction fr.ird.observe.application.swing.ui.actions.ChangeStorageAction + fr.ird.observe.application.swing.ui.actions.CloseApplicationAction + fr.ird.observe.application.swing.ui.actions.CloseHelpAction fr.ird.observe.application.swing.ui.actions.CloseStorageAction + fr.ird.observe.application.swing.ui.actions.GotoSiteAction + fr.ird.observe.application.swing.ui.actions.ImportStorageFromFileAction + fr.ird.observe.application.swing.ui.actions.LaunchAdminAction + fr.ird.observe.application.swing.ui.actions.ReloadResourcesAction + fr.ird.observe.application.swing.ui.actions.ReloadApplicationAction + fr.ird.observe.application.swing.ui.actions.ReloadDefaultConfigurationAction fr.ird.observe.application.swing.ui.actions.ReloadStorageAction fr.ird.observe.application.swing.ui.actions.SaveStorageToFileAction + fr.ird.observe.application.swing.ui.actions.ShowAboutAction fr.ird.observe.application.swing.ui.actions.ShowStorageInfoAction + fr.ird.observe.application.swing.ui.actions.StartH2WebServerAction + fr.ird.observe.application.swing.ui.actions.StartServerModeAction + fr.ird.observe.application.swing.ui.actions.StopH2WebServerAction + fr.ird.observe.application.swing.ui.actions.StopServerModeAction + fr.ird.observe.application.swing.ui.actions.ToFullScreenAction + fr.ird.observe.application.swing.ui.actions.ToWindowScreenAction + fr.ird.observe.application.swing.ui.actions.content.CloseOpenUIAction + fr.ird.observe.application.swing.ui.actions.content.DeleteDataUIAction + fr.ird.observe.application.swing.ui.actions.content.ReOpenUIAction + fr.ird.observe.application.swing.ui.content.ContentUIManager fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeHeader @@ -74,6 +94,7 @@ <SaveStorageToFileAction id="saveStorageToFileAction" constructorParams='this'/> <ShowStorageInfoAction id="showStorageInfoAction" constructorParams='this'/> + <ObserveMainUIInitializer id='initializer' constructorParams='this'/> <ContentUIManager id='contentUIManager' initializer='ObserveSwingApplicationContext.get().getContentUIManager()'/> @@ -89,7 +110,7 @@ <ObserveSwingApplicationConfig id='config' initializer='ObserveSwingApplicationContext.get().getConfig()'/> - <ObserveMainUIHandler id='handler' initializer='getContextValue(ObserveMainUIHandler.class)'/> + <!--<ObserveMainUIHandler id='handler' initializer='getContextValue(ObserveMainUIHandler.class)'/>--> <DataContext id='dataContext' initializer='ObserveSwingApplicationContext.get().getDataContext()'/> @@ -99,6 +120,8 @@ <Boolean id='focusOnNavigation' javaBean='false'/> + <Boolean id='showMnemonic' javaBean='config.isShowMnemonic()'/> + <CardLayout2 id='contentLayout'/> <CardLayout2Ext id='bodyLayout' constructorParams='this, "body"'/> @@ -108,15 +131,15 @@ <script><![CDATA[ protected Icon updateStorageSatutIcon(boolean isOpened) { - return getHandler().updateStorageSatutIcon(this); + return handler.updateStorageSatutIcon(); } protected String updateStorageSatutText(boolean isOpened) { - return getHandler().updateStorageSatutText(this); + return handler.updateStorageSatutText(); } protected String updateStorageStatutToolTipText(boolean isOpened) { - return getHandler().updateStorageStatutToolTipText(this); + return handler.updateStorageStatutToolTipText(); } @Override @@ -137,10 +160,6 @@ protected void finalize() throws Throwable { destroy(); } -void $afterCompleteSetup() { - getHandler().$afterCompleteSetup(this); -} - ]]> </script> @@ -149,6 +168,8 @@ void $afterCompleteSetup() { <JMenu id='menuFile'> <JMenuItem id='menuFileReloadApplication'/> + <JMenuItem id='menuFileToFullScreen'/> + <JMenuItem id='menuFileToWindowScreen'/> <JMenuItem id='menuFileCloseApplication'/> </JMenu> @@ -204,7 +225,7 @@ void $afterCompleteSetup() { </JMenu> </JMenu> <JSeparator/> - <JMenuItem id='menuFileConfiguration'/> + <JMenuItem id='menuConfigurationConfiguration'/> <JMenuItem id='menuConfigurationReloadDefault'/> <JMenuItem id='menuConfigurationReloadResources'/> </JMenu> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jcss index 057f220..dab2a24 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jcss @@ -50,15 +50,15 @@ JSplitPane { // trip menu #navigationOpenAction { - action: {new fr.ird.observe.application.swing.ui.actions.content.ReOpenUIAction(this)}; + action: {new ReOpenUIAction(this)}; } #navigationCloseAction { - action: {new fr.ird.observe.application.swing.ui.actions.content.CloseOpenUIAction(this)}; + action: {new CloseOpenUIAction(this)}; } #navigationDeleteAction { - action: {new fr.ird.observe.application.swing.ui.actions.content.DeleteDataUIAction(this)}; + action: {new DeleteDataUIAction(this)}; } #menuFile { @@ -67,7 +67,17 @@ JSplitPane { enabled: {getHandler().acceptMode(getMode(), !isBusy(), !isMainFromSynchro(), ObserveUIMode.NO_DB, ObserveUIMode.DB)}; } -#menuFileConfiguration { +#menuFileToFullScreen { + action:{new ToFullScreenAction(this)}; + visible:{!config.isFullScreen()} +} + +#menuFileToWindowScreen { + action:{new ToWindowScreenAction(this)}; + visible:{config.isFullScreen()} +} + +#menuConfigurationConfiguration { action: {new fr.ird.observe.application.swing.ui.actions.ShowConfigAction(this)}; } @@ -94,17 +104,17 @@ JSplitPane { } #menuApplicationLanguageFR { - action: {new fr.ird.observe.application.swing.ui.actions.ChangeApplicationLanguageAction(this, Locale.FRANCE, t("observe.action.locale.fr"), t("observe.action.locale.fr.tip"))}; + action: {new ChangeApplicationLanguageAction(this, Locale.FRANCE, t("observe.action.locale.fr"), t("observe.action.locale.fr.tip"))}; enabled: {!getHandler().acceptLocale(getConfig().getLocale(), "fr_FR")}; } #menuApplicationLanguageUK { - action: {new fr.ird.observe.application.swing.ui.actions.ChangeApplicationLanguageAction(this, Locale.UK, t("observe.action.locale.uk"), t("observe.action.locale.uk.tip"))}; + action: {new ChangeApplicationLanguageAction(this, Locale.UK, t("observe.action.locale.uk"), t("observe.action.locale.uk.tip"))}; enabled: {!getHandler().acceptLocale(getConfig().getLocale(), "en_GB")}; } #menuApplicationLanguageES { - action: {new fr.ird.observe.application.swing.ui.actions.ChangeApplicationLanguageAction(this, new Locale("es","ES"), t("observe.action.locale.es"), t("observe.action.locale.es.tip"))}; + action: {new ChangeApplicationLanguageAction(this, new Locale("es","ES"), t("observe.action.locale.es"), t("observe.action.locale.es.tip"))}; enabled: {!getHandler().acceptLocale(getConfig().getLocale(), "es_ES")}; } @@ -116,35 +126,35 @@ JSplitPane { } #menuDbLanguageFR { - action: {new fr.ird.observe.application.swing.ui.actions.ChangeDbLanguageAction(this, ReferentialLocale.FR, t("observe.action.locale.fr"), t("observe.action.db.locale.fr.tip"))}; + action: {new ChangeDbLanguageAction(this, ReferentialLocale.FR, t("observe.action.locale.fr"), t("observe.action.db.locale.fr.tip"))}; enabled: {!getHandler().acceptLocale(getConfig().getDbLocale(), "fr_FR")}; } #menuDbLanguageUK { - action: {new fr.ird.observe.application.swing.ui.actions.ChangeDbLanguageAction(this, ReferentialLocale.UK, t("observe.action.locale.uk"), t("observe.action.db.locale.uk.tip"))}; + action: {new ChangeDbLanguageAction(this, ReferentialLocale.UK, t("observe.action.locale.uk"), t("observe.action.db.locale.uk.tip"))}; enabled: {!getHandler().acceptLocale(getConfig().getDbLocale(), "en_GB")}; } #menuDbLanguageES { - action: {new fr.ird.observe.application.swing.ui.actions.ChangeDbLanguageAction(this, ReferentialLocale.ES, t("observe.action.locale.es"), t("observe.action.db.locale.es.tip"))}; + action: {new ChangeDbLanguageAction(this, ReferentialLocale.ES, t("observe.action.locale.es"), t("observe.action.db.locale.es.tip"))}; enabled: {!getHandler().acceptLocale(getConfig().getDbLocale(), "es_ES")}; } #menuConfigurationReloadDefault { - action: {new fr.ird.observe.application.swing.ui.actions.ReloadDefaultConfigurationAction(this)}; + action: {new ReloadDefaultConfigurationAction(this)}; } #menuConfigurationReloadResources { - action: {new fr.ird.observe.application.swing.ui.actions.ReloadResourcesAction(this)}; + action: {new ReloadResourcesAction(this)}; visible: {getConfig().isDevMode()}; } #menuFileReloadApplication { - action: {new fr.ird.observe.application.swing.ui.actions.ReloadApplicationAction(this)}; + action: {new ReloadApplicationAction(this)}; } #menuFileCloseApplication { - action: {new fr.ird.observe.application.swing.ui.actions.CloseApplicationAction(this)}; + action: {new CloseApplicationAction(this)}; } #menuStorage { @@ -154,7 +164,7 @@ JSplitPane { } #menuStorageInfo { - action: {new fr.ird.observe.application.swing.ui.actions.ShowStorageInfoAction(this)}; + action: {new ShowStorageInfoAction(this)}; } #reloadStorageAction { @@ -180,7 +190,7 @@ JSplitPane { } #menuStorageStartServerMode { - action: {new fr.ird.observe.application.swing.ui.actions.StartServerModeAction(this)}; + action: {new StartServerModeAction(this)}; visible: {getHandler().acceptMode(getMode(), getConfig().isLocalStorageExist() && !isBusy() && !isMainFromSynchro(), ObserveUIMode.NO_DB)}; } @@ -189,7 +199,7 @@ JSplitPane { } #menuStorageLoadFromFile { - action: {new fr.ird.observe.application.swing.ui.actions.ImportStorageFromFileAction(this)}; + action: {new ImportStorageFromFileAction(this)}; enabled: {getHandler().acceptMode(getMode(), ObserveUIMode.DB, ObserveUIMode.NO_DB)}; } @@ -205,36 +215,36 @@ JSplitPane { } #menuActionsDataSynchro { - action: {new fr.ird.observe.application.swing.ui.actions.LaunchAdminAction(this, AdminStep.DATA_SYNCHRONIZE)}; + action: {new LaunchAdminAction(this, AdminStep.DATA_SYNCHRONIZE)}; } #menuActionsReferentialSynchro { - action: {new fr.ird.observe.application.swing.ui.actions.LaunchAdminAction(this, AdminStep.REFERENTIAL_SYNCHRONIZE)}; + action: {new LaunchAdminAction(this, AdminStep.REFERENTIAL_SYNCHRONIZE)}; } #menuActionsSynchronize { - action: {new fr.ird.observe.application.swing.ui.actions.LaunchAdminAction(this, AdminStep.SYNCHRONIZE)}; + action: {new LaunchAdminAction(this, AdminStep.SYNCHRONIZE)}; } #menuActionsValidateData { - action: {new fr.ird.observe.application.swing.ui.actions.LaunchAdminAction(this, AdminStep.VALIDATE)}; + action: {new LaunchAdminAction(this, AdminStep.VALIDATE)}; } #menuActionsExportData { - action: {new fr.ird.observe.application.swing.ui.actions.LaunchAdminAction(this, AdminStep.EXPORT_DATA)}; + action: {new LaunchAdminAction(this, AdminStep.EXPORT_DATA)}; } #menuActionsReport { - action: {new fr.ird.observe.application.swing.ui.actions.LaunchAdminAction(this, AdminStep.REPORT)}; + action: {new LaunchAdminAction(this, AdminStep.REPORT)}; } #menuActionsConsolidate { - action: {new fr.ird.observe.application.swing.ui.actions.LaunchAdminAction(this, AdminStep.CONSOLIDATE)}; + action: {new LaunchAdminAction(this, AdminStep.CONSOLIDATE)}; } #menuNavigation { text: "observe.menu.navigation"; - mnemonic: n; + mnemonic: N; enabled: {getHandler().acceptMode(getMode(), !isBusy(), ObserveUIMode.DB)}; } @@ -299,11 +309,11 @@ JSplitPane { } #menuHelpSite { - action: {new fr.ird.observe.application.swing.ui.actions.GotoSiteAction(this)}; + action: {new GotoSiteAction(this)}; } #menuHelpAbout { - action: {new fr.ird.observe.application.swing.ui.actions.ShowAboutAction(this)}; + action: {new ShowAboutAction(this)}; } #storageStatus { @@ -338,7 +348,7 @@ JSplitPane { } #closeHelp { - action: {new fr.ird.observe.application.swing.ui.actions.CloseHelpAction(this)}; + action: {new CloseHelpAction(this)}; borderPainted: false; rolloverEnabled: false; focusable: false; @@ -429,17 +439,17 @@ JSplitPane { } #startH2WebServer{ - action: {new fr.ird.observe.application.swing.ui.actions.StartH2WebServerAction(this)}; + action: {new StartH2WebServerAction(this)}; enabled: {!isH2WebServer()}; } #stopH2WebServer{ - action: {new fr.ird.observe.application.swing.ui.actions.StopH2WebServerAction(this)}; + action: {new StopH2WebServerAction(this)}; enabled: {isH2WebServer()}; } #stopServerMode { - action: {new fr.ird.observe.application.swing.ui.actions.StopServerModeAction(this)}; + action: {new StopServerModeAction(this)}; } #serverModeParameters { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIHandler.java index 3937401..f9bdaba 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIHandler.java @@ -22,48 +22,10 @@ package fr.ird.observe.application.swing.ui; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; -import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationConfig; -import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; -import fr.ird.observe.application.swing.decoration.DecoratorService; -import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; -import fr.ird.observe.application.swing.ui.content.ContentMode; -import fr.ird.observe.application.swing.ui.content.ContentUI; -import fr.ird.observe.application.swing.ui.content.ContentUIManager; -import fr.ird.observe.application.swing.ui.content.ContentUIModel; -import fr.ird.observe.application.swing.ui.tree.ObserveNavigationTreeShowPopupAction; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; -import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; -import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; -import fr.ird.observe.application.swing.ui.tree.navigation.nodes.StringNavigationTreeNodeSupport; -import fr.ird.observe.application.swing.ui.util.ObserveSwingValidatorMessageTableModel; -import fr.ird.observe.application.swing.ui.util.ObserveValidatorMessageTableRenderer; -import fr.ird.observe.services.dto.AbstractObserveDto; -import fr.ird.observe.services.dto.constants.ReferentialLocale; -import jaxx.runtime.context.DefaultApplicationContext; -import jaxx.runtime.context.JAXXInitialContext; -import jaxx.runtime.swing.ErrorDialogUI; -import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel; -import jaxx.runtime.validator.swing.SwingValidatorUtil; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.i18n.I18n; +import jaxx.runtime.spi.UIHandler; import javax.swing.Icon; -import javax.swing.JComponent; -import javax.swing.SwingUtilities; -import javax.swing.border.Border; -import javax.swing.border.LineBorder; -import javax.swing.event.TreeSelectionEvent; -import javax.swing.tree.TreePath; -import java.awt.Component; -import java.awt.Container; -import java.awt.Cursor; -import java.awt.event.MouseAdapter; -import java.awt.event.MouseEvent; -import java.util.ArrayList; -import java.util.List; import java.util.Locale; import static org.nuiton.i18n.I18n.t; @@ -75,323 +37,13 @@ import static org.nuiton.i18n.I18n.t; * @see ObserveMainUI * @since 1.0 */ -@DefaultApplicationContext.AutoLoad -public class ObserveMainUIHandler { - - /** Logger */ - private static final Log log = LogFactory.getLog(ObserveMainUIHandler.class); - - private static final String EMPTY_SELECTION = "emptySelection"; - - public void changeNavigationNode(ObserveMainUI ui, TreeSelectionEvent event) { - - ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); - if (source == null || !source.isOpen()) { - - // no open data source - if (log.isDebugEnabled()) { - log.debug("No open Data source."); - } - return; - } - if (ui.getNavigation().isSelectionEmpty()) { - if (log.isDebugEnabled()) { - log.debug("No selection, show empty panel..."); - } - - boolean foundEmptySelection = false; - for (Component component : ui.getContent().getComponents()) { - if (component.getName().equals(EMPTY_SELECTION)) { - foundEmptySelection = true; - } - } - if (!foundEmptySelection) { - ui.getContent().add(ui.getEmptySelection(), EMPTY_SELECTION); - } - ui.getContentLayout().show(ui.getContent(), EMPTY_SELECTION); - return; - } - - TreePath path = event.getPath(); - NavigationTreeNodeSupport node = (NavigationTreeNodeSupport) path.getLastPathComponent(); - ContentUIManager manager = ui.getContentUIManager(); - - // obtain the ui type to show - Class<? extends ContentUI<?, ?>> uiClass = manager.convertNodeToContentUI(node); - if (log.isDebugEnabled()) { - log.debug("new selected path = " + node + ", ui = " + uiClass); - } - - if (uiClass == null) { - - // pas d'ui trouvé, on ne fait donc rien - return; - } - - ui.setBusy(true); - - try { - - doOpencontent(ui, path, uiClass); - - } catch (Exception e) { - UIHelper.handlingError(e); - } finally { - ui.setBusy(false); - String params; - if (node instanceof StringNavigationTreeNodeSupport) { - params = t(((StringNavigationTreeNodeSupport) node).getData()); - } else { - params = t(ObserveI18nDecoratorHelper.getTypeI18nKey(node.getDataType())); - } - ui.getStatus().setStatus(t("observe.action.open.screen", params)); - } - } - - public void doOpencontent(ObserveMainUI ui, TreePath path, Class<? extends ContentUI<?, ?>> uiClass) { - - ContentUIManager manager = ui.getContentUIManager(); - - // compute the selected ids to put in data context - Object[] nodes = path.getPath(); - List<String> ids = new ArrayList<>(); - for (Object o : nodes) { - NavigationTreeNodeSupport n = (NavigationTreeNodeSupport) o; - - if (n instanceof ReferenceNavigationTreeNodeSupport) { - ids.add(n.getId()); - } - } - - if (log.isDebugEnabled()) { - log.debug("new selected ids from tree = " + ids); - } - String[] selectedIds = ids.toArray(new String[ids.size()]); - - // update selected ids in data context - DataContext context = ui.getDataContext(); - context.populateSelectedIds(selectedIds); - - JComponent focusOwner = (JComponent) ui.getFocusOwner(); - boolean focusOnNavigation = false; - - if (focusOwner != null) { - if (ui.getNavigation().equals(focusOwner)) { - focusOnNavigation = true; - } - if (ui.getNavigationTreeHeader().equals(focusOwner)) { - focusOnNavigation = true; - } - if (ui.getNavigationView().equals(focusOwner)) { - focusOnNavigation = true; - } - if (!focusOnNavigation) { - Container focusOwnerParent = focusOwner.getParent(); - while (focusOwnerParent != null) { - if (ui.getNavigation().equals(focusOwnerParent)) { - focusOnNavigation = true; - break; - } - if (ui.getNavigationTreeHeader().equals(focusOwnerParent)) { - focusOnNavigation = true; - break; - } - if (ui.getNavigationView().equals(focusOwnerParent)) { - focusOnNavigation = true; - break; - } - focusOwnerParent = focusOwnerParent.getParent(); - } - } - } - - if (focusOnNavigation) { - if (log.isInfoEnabled()) { - log.info("Focus on navigation: " + focusOwner); - } - } - - // on recherche l'ui (voir si elle existe déjà) - ContentUI<?, ?> content = manager.getContent(uiClass); - - if (content == null) { - - content = manager.createContent(uiClass); - } - - // on ouvre l'écran - manager.openContent(content); - - if (focusOnNavigation) SwingUtilities.invokeLater(focusOwner::requestFocusInWindow); - } - - /** - * Methode pour initialiser l'ui principale sans l'afficher. - * - * @param context le context applicatif - * @param config la configuration a utiliser - * @return l'ui instancie et initialisee mais non visible encore - */ - public ObserveMainUI initUI(ObserveSwingApplicationContext context, ObserveSwingApplicationConfig config) { - - SwingValidatorMessageTableModel errorModel = new ObserveSwingValidatorMessageTableModel(); - - DecoratorService decoratorService = context.getDecoratorService(); - - boolean reloadDecorators = false; - Locale currentLocale = I18n.getDefaultLocale(); - Locale configurationLocale = config.getLocale(); - if (!configurationLocale.equals(currentLocale)) { - if (log.isInfoEnabled()) { - log.info("re-init I18n with locale " + configurationLocale); - } - I18n.setDefaultLocale(configurationLocale); - reloadDecorators = true; - } - if (!config.getDbLocale().equals(decoratorService.getReferentialLocale().getLocale())) { - if (log.isInfoEnabled()) { - log.info("re-init db with locale " + config.getDbLocale()); - } - decoratorService.setReferentialLocale(ReferentialLocale.valueOf(config.getDbLocale())); - - reloadDecorators = true; - } - - if (reloadDecorators) { - if (log.isInfoEnabled()) { - log.info("reload decorators"); - } - decoratorService.reload(); - } - - JAXXInitialContext tx = new JAXXInitialContext(); - tx.add(context).add(errorModel); - - // show main ui - ObserveMainUI ui = new ObserveMainUI(tx); - ui.setUndecorated(config.isFullScreen()); - - String title = t("observe.title.welcome.admin") + (" v " + config.getVersion()); - ui.setTitle(title); - - context.setMainUI(ui); - - ErrorDialogUI.init(ui); - - // set fullscreen propery on main ui - ui.getGraphicsConfiguration().getDevice().setFullScreenWindow(config.isFullScreen() ? ui : null); - - new ObserveNavigationTreeShowPopupAction(ui.getNavigation(), ui.getNavigationScrollPane(), ui.getNavigationPopup()); - - return ui; - } +public class ObserveMainUIHandler implements UIHandler<ObserveMainUI> { public static final String H2_SERVER_URL_PATTERN = "jdbc:h2:%s/%s/obstuna"; - public static void restartEdit() { - ContentUI<?, ?> selectedUI = ObserveSwingApplicationContext.get().getContentUIManager().getSelectedContentUI(); - if (selectedUI == null) { - - // pas d'écran selectionne - return; - } - ContentUIModel<? extends AbstractObserveDto> model = selectedUI.getModel(); - if (!model.isEditable()) { - - // modele non editable - return; - } - - ContentMode contentMode = model.getMode(); - if (ContentMode.UPDATE != contentMode) { + private ObserveMainUI ui; - // ecran non en mode mis a jour - return; - } - - if (log.isDebugEnabled()) { - log.debug("Will restart edit for " + selectedUI.getName()); - } - selectedUI.restartEdit(); - - } - - /** - * Permet de recharger l'ui principale et de changer de le mode - * d'affichage. - * - * @param rootContext le contexte applicatif - * @param config la configuration a utiliser - */ - protected void reloadUI(ObserveSwingApplicationContext rootContext, ObserveSwingApplicationConfig config) { - -// // must remove all properties listener on config - config.removeJaxxPropertyChangeListener(); - - // scan main ui - ObserveMainUI ui = rootContext.getMainUI(); - - ObserveSwingDataSource mainStorage = rootContext.getDataSourcesManager().getMainDataSource(); - - ObserveUIMode oldMode = null; - String[] ids = null; - if (ui != null) { - - oldMode = ui.getMode(); - - ids = ui.getNavigation().getSelectedIds(); - - ErrorDialogUI.init(null); - - rootContext.removeMainUI(); - - ui.dispose(); - - ui.setVisible(false); - - System.runFinalization(); - } - - focusBorder = null; - noFocusBorder = null; - ui = initUI(rootContext, config); - - if (oldMode == null) { - if (mainStorage == null) { - oldMode = ObserveUIMode.NO_DB; - - } else { - oldMode = ObserveUIMode.DB; - } - } - - ui.setMode(oldMode); - - if (oldMode == ObserveUIMode.DB) { - - // on met à jour le modèle de navigation - NavigationTreeModel treeModel = ui.getNavigation().getTreeModel(); - treeModel.setLoadSeine(ui.getNavigationTreeHeader().getShowSeine().isSelected()); - treeModel.setLoadLongline(ui.getNavigationTreeHeader().getShowLongline().isSelected()); - treeModel.setLoadReferential(ui.getNavigationTreeHeader().getShowReferential().isSelected()); - treeModel.setLoadEmptyProgram(ui.getNavigationTreeHeader().getShowEmptyProgram().isSelected()); - - treeModel.populate(); - - // on conserve les noeuds a reselectionner - rootContext.setNodesToReselect(ids); - - // selection du noeud d'ouverture (le noeud precedemment selectionne, - // ou le noeud le plus ouvert - // ou le premier program si aucune donnée ouverte) - ui.getNavigation().selectInitialNode(); - } - - // show ui - UIHelper.setMainUIVisible(ui); - } - - protected Icon updateStorageSatutIcon(ObserveMainUI ui) { + protected Icon updateStorageSatutIcon() { Icon icon; if (ui.getConfig().isMainStorageOpened()) { @@ -411,7 +63,7 @@ public class ObserveMainUIHandler { return icon; } - protected String updateStorageSatutText(ObserveMainUI ui) { + protected String updateStorageSatutText() { String text; if (ui.getConfig().isMainStorageOpened()) { ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); @@ -422,7 +74,7 @@ public class ObserveMainUIHandler { return text; } - protected String updateStorageStatutToolTipText(ObserveMainUI ui) { + protected String updateStorageStatutToolTipText() { String text; if (ui.getConfig().isMainStorageOpened()) { ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); @@ -463,153 +115,13 @@ public class ObserveMainUIHandler { return l != null && l.toString().equals(expected); } - protected void $afterCompleteSetup(ObserveMainUI ui) { - - // bad binding, force value - ui.getStopH2WebServer().setEnabled(false); - - ui.getStatus().init(); - - // ajout d'un ecouteur sur la navigation pour toujours mettre la scrollbar - // tout à droite a chaque selection - ui.getNavigation().addTreeSelectionListener(e -> changeNavigationNode(ui, e)); - - SwingValidatorUtil.installUI(ui.getErrorTable(), new ObserveValidatorMessageTableRenderer()); - - // installation layer de blocage en mode busy - UIHelper.setLayerUI(ui.getBody(), ui.getBusyBlockLayerUI()); - - // ecoute des changements de l'état busy - ui.addPropertyChangeListener(ObserveMainUI.PROPERTY_BUSY, evt -> { - boolean newvalue = (boolean) evt.getNewValue(); - updateBusyState(ui, newvalue); - }); - - ui.addPropertyChangeListener(ObserveMainUI.PROPERTY_FOCUS_ON_NAVIGATION, evt -> { - boolean newvalue = (boolean) evt.getNewValue(); - updateFocusOnNavigation(ui, newvalue); - }); - - ui.getNavigationView().addMouseListener(new MouseAdapter() { - @Override - public void mouseEntered(MouseEvent e) { - ui.setFocusOnNavigation(true); - } - }); - ui.getNavigation().addMouseListener(new MouseAdapter() { - @Override - public void mouseEntered(MouseEvent e) { - ui.setFocusOnNavigation(true); - } - }); - ui.getNavigationTreeHeader().addMouseListener(new MouseAdapter() { - @Override - public void mouseEntered(MouseEvent e) { - ui.setFocusOnNavigation(true); - } - }); - ui.getSplitpane2().addMouseListener(new MouseAdapter() { - @Override - public void mouseEntered(MouseEvent e) { - ui.setFocusOnNavigation(false); - } - }); - } - - private Border focusBorder; - private Border noFocusBorder; - - public Border getFocusBorder() { - if (focusBorder == null) { - focusBorder = new LineBorder(ObserveSwingApplicationContext.get().getConfig().getFocusBorderColor(), 3, true); - } - return focusBorder; + @Override + public void beforeInit(ObserveMainUI ui) { + this.ui = ui; } - public Border getNoFocusBorder() { - if (noFocusBorder == null) { - noFocusBorder = new LineBorder(ObserveSwingApplicationContext.get().getConfig().getNoFocusBorderColor(), 3, true); - } - return noFocusBorder; - } - - private void updateFocusOnNavigation(ObserveMainUI ui, boolean newvalue) { - if (newvalue) { - if (log.isDebugEnabled()) { - log.debug("Focus on navigation"); - } - ui.getNavigationView().setBorder(getFocusBorder()); - ui.getSplitpane2().setBorder(getNoFocusBorder()); - } else { - if (log.isDebugEnabled()) { - log.debug("Focus on content"); - } - ui.getNavigationView().setBorder(getNoFocusBorder()); - ui.getSplitpane2().setBorder(getFocusBorder()); - } - } - - protected void updateBusyState(ObserveMainUI 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()); - } - } - - /** - * Nettoye des ui tout ce qui concerne un modèle de navigation. - * - * <b>Note:</b> cette méthode doit être appelée avant tout rechargement de - * modèle de naivgation. - * - * @param mainUI l'ui principale - */ - public void cleanNavigationUI(ObserveMainUI mainUI) { - - // reset content uis - mainUI.getContentLayout().reset(mainUI.getContent()); - - // clean messages - mainUI.getContextValue(SwingValidatorMessageTableModel.class).clear(); - - // clean tree model - NavigationTree tree = mainUI.getNavigation(); - - tree.clearModel(); - - // no tree navigation view - tree.setVisible(false); - - } - - /** - * Charge dans l'ui un nouveau modèle de navigation. - * - * <b>Note:</b> cette méthode doit être appelée après tout rechargement de modèle de naivgation. - **/ - public void loadNavigationUI(ObserveMainUI mainUI) { - - NavigationTree tree = mainUI.getNavigation(); - - NavigationTreeModel treeModel = tree.getTreeModel(); - treeModel.populate(); - - // select initial node - tree.selectInitialNode(); - - tree.setVisible(true); - - mainUI.setFocusOnNavigation(true); - - SwingUtilities.invokeLater(tree::requestFocusInWindow); + @Override + public void afterInit(ObserveMainUI ui) { + ui.getInitializer().initialize(); } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIInitializer.java similarity index 76% copy from application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIHandler.java copy to application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIInitializer.java index 3937401..38a76ff 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIInitializer.java @@ -27,10 +27,8 @@ import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.decoration.DecoratorService; import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; -import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.ContentUI; import fr.ird.observe.application.swing.ui.content.ContentUIManager; -import fr.ird.observe.application.swing.ui.content.ContentUIModel; import fr.ird.observe.application.swing.ui.tree.ObserveNavigationTreeShowPopupAction; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; @@ -39,9 +37,7 @@ import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNaviga import fr.ird.observe.application.swing.ui.tree.navigation.nodes.StringNavigationTreeNodeSupport; import fr.ird.observe.application.swing.ui.util.ObserveSwingValidatorMessageTableModel; import fr.ird.observe.application.swing.ui.util.ObserveValidatorMessageTableRenderer; -import fr.ird.observe.services.dto.AbstractObserveDto; import fr.ird.observe.services.dto.constants.ReferentialLocale; -import jaxx.runtime.context.DefaultApplicationContext; import jaxx.runtime.context.JAXXInitialContext; import jaxx.runtime.swing.ErrorDialogUI; import jaxx.runtime.validator.swing.SwingValidatorMessageTableModel; @@ -50,7 +46,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.i18n.I18n; -import javax.swing.Icon; import javax.swing.JComponent; import javax.swing.SwingUtilities; import javax.swing.border.Border; @@ -75,15 +70,20 @@ import static org.nuiton.i18n.I18n.t; * @see ObserveMainUI * @since 1.0 */ -@DefaultApplicationContext.AutoLoad -public class ObserveMainUIHandler { +public class ObserveMainUIInitializer { /** Logger */ - private static final Log log = LogFactory.getLog(ObserveMainUIHandler.class); + private static final Log log = LogFactory.getLog(ObserveMainUIInitializer.class); private static final String EMPTY_SELECTION = "emptySelection"; - public void changeNavigationNode(ObserveMainUI ui, TreeSelectionEvent event) { + private final ObserveMainUI ui; + + public ObserveMainUIInitializer(ObserveMainUI ui) { + this.ui = ui; + } + + public void changeNavigationNode(TreeSelectionEvent event) { ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); if (source == null || !source.isOpen()) { @@ -232,7 +232,7 @@ public class ObserveMainUIHandler { * @param config la configuration a utiliser * @return l'ui instancie et initialisee mais non visible encore */ - public ObserveMainUI initUI(ObserveSwingApplicationContext context, ObserveSwingApplicationConfig config) { + public static ObserveMainUI initUI(ObserveSwingApplicationContext context, ObserveSwingApplicationConfig config) { SwingValidatorMessageTableModel errorModel = new ObserveSwingValidatorMessageTableModel(); @@ -286,36 +286,6 @@ public class ObserveMainUIHandler { return ui; } - public static final String H2_SERVER_URL_PATTERN = "jdbc:h2:%s/%s/obstuna"; - - public static void restartEdit() { - ContentUI<?, ?> selectedUI = ObserveSwingApplicationContext.get().getContentUIManager().getSelectedContentUI(); - if (selectedUI == null) { - - // pas d'écran selectionne - return; - } - ContentUIModel<? extends AbstractObserveDto> model = selectedUI.getModel(); - if (!model.isEditable()) { - - // modele non editable - return; - } - - ContentMode contentMode = model.getMode(); - if (ContentMode.UPDATE != contentMode) { - - // ecran non en mode mis a jour - return; - } - - if (log.isDebugEnabled()) { - log.debug("Will restart edit for " + selectedUI.getName()); - } - selectedUI.restartEdit(); - - } - /** * Permet de recharger l'ui principale et de changer de le mode * d'affichage. @@ -323,9 +293,9 @@ public class ObserveMainUIHandler { * @param rootContext le contexte applicatif * @param config la configuration a utiliser */ - protected void reloadUI(ObserveSwingApplicationContext rootContext, ObserveSwingApplicationConfig config) { + public void reloadUI(ObserveSwingApplicationContext rootContext, ObserveSwingApplicationConfig config) { -// // must remove all properties listener on config + // must remove all properties listener on config config.removeJaxxPropertyChangeListener(); // scan main ui @@ -391,79 +361,9 @@ public class ObserveMainUIHandler { UIHelper.setMainUIVisible(ui); } - protected Icon updateStorageSatutIcon(ObserveMainUI ui) { - Icon icon; + protected void initialize() { - if (ui.getConfig().isMainStorageOpened()) { - - ObserveSwingDataSource service = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); - - if (service.isLocal()) { - icon = (Icon) ui.storageStatus.getClientProperty("localIcon"); - } else if (service.isRemote()) { - icon = (Icon) ui.storageStatus.getClientProperty("remoteIcon"); - } else { - icon = (Icon) ui.storageStatus.getClientProperty("serverIcon"); - } - } else { - icon = (Icon) ui.storageStatus.getClientProperty("noneIcon"); - } - return icon; - } - - protected String updateStorageSatutText(ObserveMainUI ui) { - String text; - if (ui.getConfig().isMainStorageOpened()) { - ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); - text = source.getLabel(); - } else { - text = t("observe.message.db.none.loaded"); - } - return text; - } - - protected String updateStorageStatutToolTipText(ObserveMainUI ui) { - String text; - if (ui.getConfig().isMainStorageOpened()) { - ObserveSwingDataSource source = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); - text = t("observe.message.loaded.tip", source.getLabel()); - } else { - text = t("observe.message.db.none.loaded.tip"); - } - return text; - } - - public boolean acceptMode(ObserveUIMode mode, ObserveUIMode... modes) { - return acceptMode(mode, true, modes); - } - - public boolean acceptMode(ObserveUIMode mode, boolean condition, ObserveUIMode... modes) { - if (condition) { - for (ObserveUIMode m : modes) { - if (m.equals(mode)) { - return true; - } - } - } - return false; - } - - public boolean acceptMode(ObserveUIMode mode, boolean notBusy, boolean condition, ObserveUIMode... modes) { - if (notBusy && condition) { - for (ObserveUIMode m : modes) { - if (m.equals(mode)) { - return true; - } - } - } - return false; - } - - public boolean acceptLocale(Locale l, String expected) { - return l != null && l.toString().equals(expected); - } - - protected void $afterCompleteSetup(ObserveMainUI ui) { + MnemonicHelper.addKeyStrokeFromMnemonic(ui); // bad binding, force value ui.getStopH2WebServer().setEnabled(false); @@ -472,7 +372,7 @@ public class ObserveMainUIHandler { // ajout d'un ecouteur sur la navigation pour toujours mettre la scrollbar // tout à droite a chaque selection - ui.getNavigation().addTreeSelectionListener(e -> changeNavigationNode(ui, e)); + ui.getNavigation().addTreeSelectionListener(this::changeNavigationNode); SwingValidatorUtil.installUI(ui.getErrorTable(), new ObserveValidatorMessageTableRenderer()); @@ -482,12 +382,12 @@ public class ObserveMainUIHandler { // ecoute des changements de l'état busy ui.addPropertyChangeListener(ObserveMainUI.PROPERTY_BUSY, evt -> { boolean newvalue = (boolean) evt.getNewValue(); - updateBusyState(ui, newvalue); + updateBusyState(newvalue); }); ui.addPropertyChangeListener(ObserveMainUI.PROPERTY_FOCUS_ON_NAVIGATION, evt -> { boolean newvalue = (boolean) evt.getNewValue(); - updateFocusOnNavigation(ui, newvalue); + updateFocusOnNavigation(newvalue); }); ui.getNavigationView().addMouseListener(new MouseAdapter() { @@ -533,7 +433,7 @@ public class ObserveMainUIHandler { return noFocusBorder; } - private void updateFocusOnNavigation(ObserveMainUI ui, boolean newvalue) { + private void updateFocusOnNavigation(boolean newvalue) { if (newvalue) { if (log.isDebugEnabled()) { log.debug("Focus on navigation"); @@ -549,7 +449,7 @@ public class ObserveMainUIHandler { } } - protected void updateBusyState(ObserveMainUI ui, boolean busy) { + protected void updateBusyState(boolean busy) { if (busy) { // ui bloquee if (log.isDebugEnabled()) { @@ -568,21 +468,18 @@ public class ObserveMainUIHandler { /** * Nettoye des ui tout ce qui concerne un modèle de navigation. * - * <b>Note:</b> cette méthode doit être appelée avant tout rechargement de - * modèle de naivgation. - * - * @param mainUI l'ui principale + * <b>Note:</b> cette méthode doit être appelée avant tout rechargement de modèle de naivgation. */ - public void cleanNavigationUI(ObserveMainUI mainUI) { + public void cleanNavigationUI() { // reset content uis - mainUI.getContentLayout().reset(mainUI.getContent()); + ui.getContentLayout().reset(ui.getContent()); // clean messages - mainUI.getContextValue(SwingValidatorMessageTableModel.class).clear(); + ui.getContextValue(SwingValidatorMessageTableModel.class).clear(); // clean tree model - NavigationTree tree = mainUI.getNavigation(); + NavigationTree tree = ui.getNavigation(); tree.clearModel(); @@ -596,9 +493,9 @@ public class ObserveMainUIHandler { * * <b>Note:</b> cette méthode doit être appelée après tout rechargement de modèle de naivgation. **/ - public void loadNavigationUI(ObserveMainUI mainUI) { + public void loadNavigationUI() { - NavigationTree tree = mainUI.getNavigation(); + NavigationTree tree = ui.getNavigation(); NavigationTreeModel treeModel = tree.getTreeModel(); treeModel.populate(); @@ -608,7 +505,7 @@ public class ObserveMainUIHandler { tree.setVisible(true); - mainUI.setFocusOnNavigation(true); + ui.setFocusOnNavigation(true); SwingUtilities.invokeLater(tree::requestFocusInWindow); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveUICallback.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveUICallback.java index 81578ab..4a1bcff 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveUICallback.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveUICallback.java @@ -68,7 +68,7 @@ public enum ObserveUICallback implements Runnable { ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); ObserveMainUI ui = context.getMainUI(); ObserveSwingApplicationConfig config = ui.getConfig(); - ui.getHandler().reloadUI(context, config); + ui.getInitializer().reloadUI(context, config); } }, db(n("observe.action.reload.storage"), diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/UIHelper.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/UIHelper.java index 89b80cc..ac9e3f1 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/UIHelper.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/UIHelper.java @@ -49,21 +49,16 @@ import javax.swing.JTable; import javax.swing.JTree; import javax.swing.SwingUtilities; import javax.swing.UIDefaults; -import javax.swing.event.HyperlinkEvent; import javax.swing.table.TableCellEditor; import javax.swing.table.TableCellRenderer; import java.awt.Color; import java.awt.Component; -import java.awt.Desktop; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.StringSelection; import java.io.File; import java.io.IOException; -import java.net.URISyntaxException; -import java.net.URL; import java.util.Arrays; -import java.util.List; import static org.nuiton.i18n.I18n.t; @@ -168,43 +163,25 @@ public class UIHelper extends SwingUtil { } - public static int askUser(String title, - String message, - int typeMessage, - Object[] options, - int defaultOption) { - return askUser( - null, - title, - message, - typeMessage, - options, - defaultOption - ); + public static int askUser(String title, String message, int typeMessage, Object[] options, int defaultOption) { + return askUser(null, title, message, typeMessage, options, defaultOption); } - public static int askUser(Component parent, - String title, - Object message, - int typeMessage, - Object[] options, - int defaultOption) { + public static int askUser(Component parent, String title, Object message, int typeMessage, Object[] options, int defaultOption) { if (parent == null) { ObserveSwingApplicationContext tx = ObserveSwingApplicationContext.get(); if (tx != null) { parent = ObserveSwingApplicationContext.get().getMainUI(); } } - return JOptionPane.showOptionDialog( - parent, - message, - title, - JOptionPane.DEFAULT_OPTION, - typeMessage, - null, - options, - options[defaultOption] - ); + return JOptionPane.showOptionDialog(parent, + message, + title, + JOptionPane.DEFAULT_OPTION, + typeMessage, + null, + options, + options[defaultOption]); } /** @@ -219,11 +196,7 @@ public class UIHelper extends SwingUtil { * @return le fichier choisi ou le fichier incoming si l'opération a été * annulée */ - public static File chooseFile(Component parent, - String title, - String buttonLabel, - File incoming, - String... filters) { + public static File chooseFile(Component parent, String title, String buttonLabel, File incoming, String... filters) { JaxxFileChooser.ToLoadFile toLoadFile = JaxxFileChooser.forLoadingFile() .setParent(parent) @@ -236,7 +209,7 @@ public class UIHelper extends SwingUtil { toLoadFile.setStartDirectory(parentDirectoryIfExist); } File file = toLoadFile.choose(); - ; + if (log.isDebugEnabled()) { log.debug(title + " : " + file); } @@ -253,10 +226,7 @@ public class UIHelper extends SwingUtil { * @return le répertoire choisi ou le répertoire incoming si l'opération a * été annulée */ - public static File chooseDirectory(Component parent, - String title, - String buttonLabel, - File incoming) { + public static File chooseDirectory(Component parent, String title, String buttonLabel, File incoming) { JaxxFileChooser.ToLoadDirectory toLoadDirectory = JaxxFileChooser.forLoadingDirectory() .setParent(parent) @@ -298,10 +268,7 @@ public class UIHelper extends SwingUtil { * @return {@code true} si l'utilisateur a confitmé la suppression, * {@code false} sinon. */ - public static <E extends IdDto> boolean confirmForEntityDelete( - JAXXObject parent, - Class<E> beanClass, - E bean) { + public static <E extends IdDto> boolean confirmForEntityDelete(JAXXObject parent, Class<E> beanClass, E bean) { return confirmForEntityDelete(parent, beanClass, bean, null); } @@ -317,11 +284,7 @@ public class UIHelper extends SwingUtil { * @return {@code true} si l'utilisateur a confitmé la suppression, * {@code false} sinon. */ - public static <E extends IdDto> boolean confirmForEntityDelete( - JAXXObject parent, - Class<E> beanClass, - E bean, - String extraMessage) { + public static <E extends IdDto> boolean confirmForEntityDelete(JAXXObject parent, Class<E> beanClass, E bean, String extraMessage) { ObserveMainUI mainUI = ObserveSwingApplicationContext.get().getMainUI(); if (parent == null) { @@ -440,44 +403,6 @@ public class UIHelper extends SwingUtil { SwingUtilities.invokeLater(() -> ui.setVisible(true)); } - public static <E extends IdDto> E getEntity(List<E> list, E entity) { - for (E e : list) { - if (e.getId().equals(entity.getId())) { - return e; - } - } - return null; - } - - /** - * Open a link coming from a {@link HyperlinkEvent}. - * - * And try to open the link if an url in a browser. - * - * @param he the event to treate - * @since 1.6.0 - */ - public static void openLink(HyperlinkEvent he) { - if (he.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { - - if (Desktop.isDesktopSupported()) { - try { - URL u = he.getURL(); - if (u.getProtocol().equalsIgnoreCase("mailto") || - u.getProtocol().equalsIgnoreCase("http") || - u.getProtocol().equalsIgnoreCase("ftp") || - u.getProtocol().equalsIgnoreCase("file")) { - Desktop.getDesktop().browse(u.toURI()); - } - } catch (IOException | URISyntaxException e) { - if (log.isErrorEnabled()) { - log.error("Error while opening link", e); - } - } - } - } - } - public static void stopEditing(JTable table) { TableCellEditor cellEditor = table.getCellEditor(); if (cellEditor != null) { @@ -577,7 +502,6 @@ public class UIHelper extends SwingUtil { } - public static void initUI(JScrollPane selectedTreePane, JTree tree) { // customize tree selection colors diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ShowConfigAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ShowConfigAction.java index 1b1a036..1c455f9 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ShowConfigAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ShowConfigAction.java @@ -29,7 +29,6 @@ import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationCon import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferenceDecorator; import fr.ird.observe.application.swing.ui.ObserveMainUI; -import fr.ird.observe.application.swing.ui.ObserveMainUIHandler; import fr.ird.observe.application.swing.ui.ObserveUICallback; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.dto.referential.SpeciesListDto; @@ -43,7 +42,6 @@ import org.apache.commons.logging.LogFactory; import org.jdesktop.swingx.renderer.DefaultTableRenderer; import org.nuiton.config.ConfigOptionDef; import org.nuiton.decorator.Decorator; -import org.nuiton.decorator.MultiJXPathDecorator; import javax.swing.AbstractAction; import javax.swing.DefaultCellEditor; @@ -137,7 +135,7 @@ public class ShowConfigAction extends AbstractAction { helper.setFinalizer(new MainCallBackFinalizer(ObserveUICallback.application.name())); - helper.setCloseAction(ObserveMainUIHandler::restartEdit); + helper.setCloseAction(ObserveSwingApplicationContext.get().getContentUIManager()::restartEdit); addApplicatinOptions(helper); addUiOptions(helper); @@ -178,6 +176,7 @@ public class ShowConfigAction extends AbstractAction { helper.addOption(ObserveSwingApplicationConfigOption.SHOW_NUMBER_EDITOR_BUTTON); helper.addOption(ObserveSwingApplicationConfigOption.AUTO_POPUP_NUMBER_EDITOR); helper.addOption(ObserveSwingApplicationConfigOption.SHOW_DATE_TIME_EDITOR_SLIDER); + helper.addOption(ObserveSwingApplicationConfigOption.SHOW_MNEMONIC); helper.addOption(ObserveSwingApplicationConfigOption.COORDINATE_FORMAT); helper.addOption(ObserveSwingApplicationConfigOption.FOCUS_BORDER_COLOR); @@ -292,15 +291,6 @@ public class ShowConfigAction extends AbstractAction { return super.addOption(def).setOptionShortLabel(def.getDescription()); } - public ConfigUIModelBuilder addOption(ObserveSwingApplicationConfigOption option, ObserveUICallback callBack) { - - addOption(option); - setOptionCallBack(callBack.name()); - - return modelBuilder; - - } - public ConfigUIModelBuilder registerCallBack(ObserveUICallback callback) { String name = callback.name(); @@ -363,7 +353,7 @@ public class ShowConfigAction extends AbstractAction { this.entityMap = entityMap; this.decorator = decorator; - final BeanFilterableComboBox<ReferentialReference<SpeciesListDto>> component = new BeanFilterableComboBox<>(); + BeanFilterableComboBox<ReferentialReference<SpeciesListDto>> component = new BeanFilterableComboBox<>(); component.setI18nPrefix("observe.common."); component.setShowReset(true); component.setBeanType((Class) ReferentialReference.class); @@ -379,7 +369,7 @@ public class ShowConfigAction extends AbstractAction { public void setValue(Object value) { if (value != null && String.class.isInstance(value)) { - value = SpeciesListTableCellEditor.this.entityMap.get(value); + value = SpeciesListTableCellEditor.this.entityMap.get(String.valueOf(value)); } component.setSelectedItem(value); } @@ -415,7 +405,7 @@ public class ShowConfigAction extends AbstractAction { } }; - component.init((MultiJXPathDecorator) this.decorator, Lists.newArrayList(entities)); + component.init(this.decorator, Lists.newArrayList(entities)); } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ToFullScreenAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ToFullScreenAction.java new file mode 100644 index 0000000..5580057 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ToFullScreenAction.java @@ -0,0 +1,41 @@ +package fr.ird.observe.application.swing.ui.actions; + +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import jaxx.runtime.SwingUtil; + +import javax.swing.AbstractAction; +import java.awt.event.ActionEvent; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 27/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class ToFullScreenAction extends AbstractAction { + + private static final long serialVersionUID = 3038774900992805790L; + + private final ObserveMainUI ui; + + public ToFullScreenAction(ObserveMainUI ui) { + + super(t("observe.action.toFullScreen"), SwingUtil.getUIManagerActionIcon("full-screen")); + this.ui = ui; + putValue(SHORT_DESCRIPTION, t("observe.action.toFullScreen.tip")); + putValue(MNEMONIC_KEY, (int) 'S'); + + } + + @Override + public void actionPerformed(ActionEvent e) { + + ui.getConfig().setFullScreen(true); + + ui.getInitializer().reloadUI(ObserveSwingApplicationContext.get(), ui.getConfig()); + + } +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ToWindowScreenAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ToWindowScreenAction.java new file mode 100644 index 0000000..6e75251 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ToWindowScreenAction.java @@ -0,0 +1,40 @@ +package fr.ird.observe.application.swing.ui.actions; + +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import jaxx.runtime.SwingUtil; + +import javax.swing.AbstractAction; +import java.awt.event.ActionEvent; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 27/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class ToWindowScreenAction extends AbstractAction { + + private static final long serialVersionUID = 3038774900992805790L; + + private final ObserveMainUI ui; + + public ToWindowScreenAction(ObserveMainUI ui) { + + super(t("observe.action.toWindowScreen"), SwingUtil.getUIManagerActionIcon("window-screen")); + this.ui = ui; + putValue(SHORT_DESCRIPTION, t("observe.action.toWindowScreen.tip")); + putValue(MNEMONIC_KEY, (int) 'S'); + + } + + @Override + public void actionPerformed(ActionEvent e) { + + ui.getConfig().setFullScreen(false); + ui.getInitializer().reloadUI(ObserveSwingApplicationContext.get(), ui.getConfig()); + + } +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/AbstractContentUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/AbstractContentUIAction.java index 805a94b..6744253 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/AbstractContentUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/AbstractContentUIAction.java @@ -45,7 +45,7 @@ public abstract class AbstractContentUIAction extends AbstractUIAction { @Override public final void actionPerformed(ActionEvent e) { - if (!canExecuteAction(e)) { + if (!canExecuteAction()) { return; } ContentUI<?, ?> contentUI = getContentUI(e); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/AbstractGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/AbstractGlobalUIAction.java index 05c1a5d..b8a3502 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/AbstractGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/AbstractGlobalUIAction.java @@ -49,7 +49,6 @@ public abstract class AbstractGlobalUIAction extends AbstractUIAction { if (focusOnNavigation) { -// SwingUtilities.invokeLater(focusOwner::grabFocus); SwingUtilities.invokeLater(focusOwner::requestFocusInWindow); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/AbstractUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/AbstractUIAction.java index 2f9be25..fcfd9bf 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/AbstractUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/AbstractUIAction.java @@ -22,6 +22,7 @@ package fr.ird.observe.application.swing.ui.actions.shared; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.ui.MnemonicHelper; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.content.ContentUI; import jaxx.runtime.SwingUtil; @@ -56,29 +57,11 @@ public abstract class AbstractUIAction extends AbstractAction { private final ObserveMainUI mainUI; - public AbstractUIAction(ObserveMainUI mainUI, - String actionCommandKey, - String label, - String shortDescription, - String actionIcon, - String acceleratorKey) { + public AbstractUIAction(ObserveMainUI mainUI, String actionCommandKey, String label, String shortDescription, String actionIcon, String acceleratorKey) { super(t(label), SwingUtil.getUIManagerActionIcon(actionIcon)); putValue(ACTION_COMMAND_KEY, actionCommandKey); this.mainUI = mainUI; - if (acceleratorKey != null) { - - KeyStroke keyStroke = KeyStroke.getKeyStroke(acceleratorKey); - Objects.requireNonNull(keyStroke, "KeyStroke invalide: " + acceleratorKey); - putValue(ACCELERATOR_KEY, keyStroke); - - String acceleratorStr = " (" + keyStroke.toString().replace(" pressed ", " + ") + ")"; - - putValue(NAME, t(label) + acceleratorStr); - putValue(SHORT_DESCRIPTION, t(shortDescription) + acceleratorStr); - } else { - - putValue(SHORT_DESCRIPTION, t(shortDescription)); - } + MnemonicHelper.addKeyStore(this, acceleratorKey, label, shortDescription); } public KeyStroke getAcceleratorKey() { @@ -97,34 +80,20 @@ public abstract class AbstractUIAction extends AbstractAction { editor.setAction(this); editor.putClientProperty("ui", ui); putValue(EDITOR, editor); + KeyStroke keyStroke = getAcceleratorKey(); if (keyStroke != null) { + String actionCommandKey = getActionCommandKey(); -// ui.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(keyStroke, actionCommandKey); ui.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(keyStroke, actionCommandKey); ui.getActionMap().put(actionCommandKey, this); } } public void updateAction(ContentUI<?, ?> ui, AbstractButton editor) { - String tip = (String) editor.getClientProperty("toolTipText"); - if (tip != null) { - KeyStroke keyStroke = getAcceleratorKey(); - if (keyStroke != null) { - String acceleratorStr = " (" + keyStroke.toString().replace(" pressed ", " + ") + ")"; - tip += acceleratorStr; - } - editor.setToolTipText(tip); - } - String text = (String) editor.getClientProperty("text"); - if (text != null) { - KeyStroke keyStroke = getAcceleratorKey(); - if (keyStroke != null) { - String acceleratorStr = " (" + keyStroke.toString().replace(" pressed ", " + ") + ")"; - text += acceleratorStr; - } - editor.setText(text); - } + + MnemonicHelper.addKeyStroke2(editor, getAcceleratorKey()); + String actionIcon = (String) editor.getClientProperty("actionIcon"); if (actionIcon != null) { Icon icon = SwingUtil.getUIManagerActionIcon(actionIcon); @@ -133,7 +102,7 @@ public abstract class AbstractUIAction extends AbstractAction { } - protected boolean canExecuteAction(ActionEvent e) { + protected boolean canExecuteAction() { JComponent editor = getEditor(); if ((editor == null || (editor.isVisible() && editor.isEnabled()))) { return true; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/SelectOpenNodeUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/SelectOpenNodeUIAction.java index b7c14f0..6a38c34 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/SelectOpenNodeUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/SelectOpenNodeUIAction.java @@ -51,7 +51,7 @@ public class SelectOpenNodeUIAction extends AbstractUIAction { @Override public void actionPerformed(ActionEvent e) { - if (!canExecuteAction(e)) { + if (!canExecuteAction()) { return; } JComponent c = (JComponent) e.getSource(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUI.jaxx index 76a36e8..f76cb7b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUI.jaxx @@ -44,27 +44,23 @@ <AdminUIModel id='model' initializer='getContextValue(AdminUIModel.class)'/> - <AdminActionModel id='stepModel' initializer='model.getStepModel(getStep())'/> + <StorageUIModel id='localSourceModel' initializer='getModel().getConfigModel().getLocalSourceModel()'/> - <StorageUIModel id='localSourceModel' initializer='getModel().getLocalSourceModel()'/> + <StorageUIModel id='centralSourceModel' initializer='getModel().getConfigModel().getCentralSourceModel()'/> - <StorageUIModel id='centralSourceModel' initializer='getModel().getCentralSourceModel()'/> + <AdminTabUIHandler id='internalHandler'/> - <AdminTabUIHandler id='handler' initializer='null'/> + <script><![CDATA[ - <AdminStep id='step' initializer='null'/> +public abstract AdminTabUIHandler getHandler(); - <script><![CDATA[ +public abstract AdminActionModel getStepModel(); -public abstract void initUI(AdminUI ui); +public AdminStep getStep() { return getStepModel().getStep(); } -protected AdminTabUI(AdminStep step, AdminUI parentContext) { - this.step = step; +protected AdminTabUI(AdminUI parentContext) { UIHelper.checkJAXXContextEntry(parentContext, UIHelper.newContextEntryDef(AdminUIModel.class)); UIHelper.initContext(this, parentContext); - $initialize(); - // pour etre sur que step est positionne (la methode d'init supprime la reference... - this.step = step; } public void destroy() { @@ -106,12 +102,10 @@ public void updateState(WizardState newState) { <!-- content --> <JPanel id='content' decorator='boxed' constraints='BorderLayout.CENTER'> - <JPanel id='PENDING_content' - constraints='WizardState.PENDING.name()'/> + <JPanel id='PENDING_content' constraints='WizardState.PENDING.name()'/> - <Table id="NEED_FIX_panel" fill='both' - constraints='WizardState.NEED_FIX.name()'> + <Table id="NEED_FIX_panel" fill='both' constraints='WizardState.NEED_FIX.name()'> <row> <cell fill='both'> <JPanel id="NEED_FIX_labelPanel"> @@ -128,8 +122,7 @@ public void updateState(WizardState newState) { </Table> - <Table id="FAILED_panel" fill='both' - constraints='WizardState.FAILED.name()'> + <Table id="FAILED_panel" fill='both' constraints='WizardState.FAILED.name()'> <row> <cell fill='both'> <JLabel id='FAILED_label'/> @@ -143,8 +136,7 @@ public void updateState(WizardState newState) { </Table> - <Table id="RUNNING_panel" fill='both' - constraints='WizardState.RUNNING.name()'> + <Table id="RUNNING_panel" fill='both' constraints='WizardState.RUNNING.name()'> <row> <cell fill='both' weighty='0.3'> <JPanel id="RUNNING_top"> @@ -159,8 +151,7 @@ public void updateState(WizardState newState) { </row> </Table> - <Table id="SUCCESSED_panel" fill='both' - constraints='WizardState.SUCCESSED.name()'> + <Table id="SUCCESSED_panel" fill='both' constraints='WizardState.SUCCESSED.name()'> <row> <cell fill='both' weighty='0.3'> <JLabel id='SUCCESSED_label'/> @@ -190,9 +181,8 @@ public void updateState(WizardState newState) { <JToolBar id='progressionTop' constraints='"PROGRESSION_TOP"'> <JLabel id='progressionTopLabel'/> <javax.swing.Box.Filler - constructorParams='UIHelper.newMinDimension(), UIHelper.newMinDimension(), UIHelper.newMaxXDimension()'/> - <JButton id="progressionTopCopyCliptBoard" - onActionPerformed='UIHelper.copyToClipBoard(progression.getText())'/> + constructorParams='UIHelper.newMinDimension(), UIHelper.newMinDimension(), UIHelper.newMaxXDimension()'/> + <JButton id="progressionTopCopyCliptBoard" onActionPerformed='UIHelper.copyToClipBoard(progression.getText())'/> </JToolBar> </JPanel> @@ -203,6 +193,6 @@ public void updateState(WizardState newState) { <JPanel id='invisiblePanel' visible="false" constraints='BorderLayout.EAST'> - </JPanel> + </JPanel> </JPanel> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUI.jcss index 859c38e..f1c3597 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUI.jcss @@ -30,7 +30,7 @@ } #progress { - string:{getHandler().getProgressString(model.getStepIndex(model.getStep()), model.getSteps().size())}; + /*string:{internalHandler.getProgressString(model.getStepIndex(model.getStep()), model.getSteps().size())};*/ value:{1 + model.getStepIndex(model.getStep())}; maximum:{model.getSteps().size()}; indeterminate:{model.getModelState() == WizardState.RUNNING}; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUIHandler.java index 3e8f11f..89857df 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminTabUIHandler.java @@ -56,26 +56,50 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class AdminTabUIHandler { +public class AdminTabUIHandler<U extends AdminTabUI> { /** Logger */ private static final Log log = LogFactory.getLog(AdminTabUIHandler.class); - protected final AdminTabUI ui; + protected U ui; - protected final AdminUIModel model; + protected AdminUIModel model; protected AdminUI parentUI; /** Service de decoration. */ private DecoratorService decoratorService; - public AdminTabUIHandler(AdminTabUI ui) { + public void beforeInit(U ui) { this.ui = ui; - model = ui.getModel(); + this.model = ui.getModel(); + this.parentUI = ui.getContextValue(AdminUI.class, "parent"); } - public AdminTabUI getUi() { + public void afterInit(U ui) { + + model.addPropertyChangeListener(AdminUIModel.STEP_PROPERTY_NAME, e -> ui.getProgress().setString(getProgressString(model.getStepIndex(model.getStep()), model.getSteps().size()))); + model.addPropertyChangeListener(AdminUIModel.STEPS_PROPERTY_NAME, e -> ui.getProgress().setString(getProgressString(model.getStepIndex(model.getStep()), model.getSteps().size()))); + + AdminStep step = ui.getStep(); + + //FIXME ? ui.addPropertyChangeListener(parentUI); + + if (log.isDebugEnabled()) { + log.debug("common for [" + step + "] for main ui " + parentUI.getClass().getName() + "@" + System.identityHashCode(ui)); + } + + String stepLabel = I18nEnumHelper.getLabel(step); + ui.getRUNNING_label().setText(t("observe.actions.operation.message.running", stepLabel)); + ui.SUCCESSED_label.setText(t("observe.actions.operation.message.successed", stepLabel)); + ui.NEED_FIX_label.setText(t("observe.actions.operation.message.needFix", stepLabel)); + ui.CANCELED_label.setText(t("observe.actions.operation.message.canceled", stepLabel)); + ui.FAILED_label.setText(t("observe.actions.operation.message.failed", stepLabel)); + ui.progression.setVisible(true); + ui.progressionTop.setVisible(true); + } + + public U getUi() { return ui; } @@ -90,27 +114,6 @@ public class AdminTabUIHandler { return decoratorService; } - public void initTabUI(AdminUI ui, AdminTabUI tabUI) { - - parentUI = ui; - AdminStep step = tabUI.getStep(); - - tabUI.addPropertyChangeListener(tabUI); - - if (log.isDebugEnabled()) { - log.debug("common for [" + step + "] for main ui " + ui.getClass().getName() + "@" + System.identityHashCode(ui)); - } - - String stepLabel = I18nEnumHelper.getLabel(step); - tabUI.getRUNNING_label().setText(t("observe.actions.operation.message.running", stepLabel)); - tabUI.SUCCESSED_label.setText(t("observe.actions.operation.message.successed", stepLabel)); - tabUI.NEED_FIX_label.setText(t("observe.actions.operation.message.needFix", stepLabel)); - tabUI.CANCELED_label.setText(t("observe.actions.operation.message.canceled", stepLabel)); - tabUI.FAILED_label.setText(t("observe.actions.operation.message.failed", stepLabel)); - tabUI.progression.setVisible(true); - tabUI.progressionTop.setVisible(true); - } - public void updateState(AdminTabUI ui, WizardState newState) { if (newState == null) { newState = WizardState.PENDING; @@ -202,8 +205,6 @@ public class AdminTabUIHandler { ReferentialReference<ProgramDto> program, DataReference trip) { -// DecoratorService decoratorService = getDecoratorService(); - if (tripResult.isDeleted()) { String message = sendLogResultMessage(deleteI18nKey, programDecorator, program, trip, tripResult.getDeleteTime()); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUI.jaxx index fd25de8..fd567b7 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUI.jaxx @@ -23,6 +23,7 @@ <JPanel id='synchroPanel' implements='jaxx.runtime.swing.wizard.ext.WizardExtUI<AdminStep, AdminUIModel>'> <import> + fr.ird.observe.application.swing.ui.MnemonicHelper fr.ird.observe.application.swing.ui.UIHelper jaxx.runtime.JAXXContext @@ -38,10 +39,6 @@ <!-- le modèle du wizard --> <AdminUIModel id='model' initializer='getContextValue(AdminUIModel.class)'/> - <!-- le controleur d'ui --> - <AdminUIHandler id='handler' - initializer='getContextValue(AdminUIHandler.class)'/> - <!-- le bloqueur d'ui utilisé par l'assistant --> <BlockingLayerUI id='tabBusyBlockLayerUI'/> @@ -72,7 +69,7 @@ public AdminUI(JAXXContext parentContext, String title, String tip, ImageIcon ic } public void destroy() { - getHandler().destroy(this); + handler.destroy(); } @Override @@ -83,88 +80,76 @@ protected void finalize() throws Throwable { @Override public void start() { - getHandler().start(this); + handler.start(); } public void cancel() { - getHandler().cancel(this); + handler.cancel(); } public void dispose() { - getHandler().dispose(this); + handler.dispose(); } @Override public AdminStep getSelectedStep() { - return getHandler().getSelectedStep(this); + return handler.getSelectedStep(); } @Override public AdminTabUI getStepUI(AdminStep step) { - return getHandler().getStepUI(this, step); + return handler.getStepUI(step); } @Override public AdminTabUI getStepUI(int stepIndex) { - return getHandler().getStepUI(this, stepIndex); + return handler.getStepUI(stepIndex); } @Override public AdminTabUI getSelectedStepUI() { - return getHandler().getSelectedStepUI(this); + return handler.getSelectedStepUI(); } public void blockOperations() { - getHandler().blockOperations(this); + handler.blockOperations(); } @Override public void onWasInit() { - getHandler().onWasInit(this); + handler.onWasInit(); } @Override public void onWasStarted() { - getHandler().onWasStarted(this); + handler.onWasStarted(); } @Override public void onModelStateChanged(WizardState newState) { - getHandler().onModelStateChanged(this, newState); + handler.onModelStateChanged(newState); } @Override public void onOperationStateChanged(AdminStep step, WizardState newState) { - getHandler().onOperationStateChanged(this, step, newState); + handler.onOperationStateChanged(step, newState); } @Override public void onStepChanged(AdminStep oldStep, AdminStep newStep) { - getHandler().onStepChanged(this, oldStep, newStep); + handler.onStepChanged(oldStep, newStep); } @Override public void onStepsChanged(AdminStep[] steps) { - getHandler().onStepsChanged(this, steps); + handler.onStepsChanged(steps); } -void $afterCompleteSetup() { - if (!allComponentsCreated || !contextInitialized) { - // pour partir quand l'ui n'est pas complementement initialise - // par example dans l'init de la classe parent - return; - } - - // installation du dispatcher de modifications du modele - WizardExtUtil.installWizardUIListeners(this); - WizardExtUtil.addTraceLogListener(log, getModel()); -} ]]> </script> <!-- les onglets --> - <JTabbedPane id='tabs' decorator='boxed' - constraints='BorderLayout.CENTER' + <JTabbedPane id='tabs' decorator='boxed' constraints='BorderLayout.CENTER' onStateChanged='if (!model.isValueAdjusting()) { model.gotoStep(getSelectedStep()); }'/> <!-- les actions --> @@ -178,14 +163,12 @@ void $afterCompleteSetup() { <cell weightx='0.5' fill="both"> <!-- quitter apres une annulation ou une erreur --> - <JButton id='closeOnCanceledOrFailedAction' - onActionPerformed='getHandler().cancel(this)'/> + <JButton id='closeOnCanceledOrFailedAction' onActionPerformed='handler.cancel()'/> </cell> <cell weightx='0.5' fill="both"> <!-- pour aller sur l'onglet précédent --> - <JButton id="previousAction" - onActionPerformed='model.gotoPreviousStep()'/> + <JButton id="previousAction" onActionPerformed='model.gotoPreviousStep()'/> </cell> <cell weightx='0.5' fill="both"> @@ -195,7 +178,7 @@ void $afterCompleteSetup() { <cell weightx='0.5' fill="both"> <!-- quitter quand les opérations sont exécutées correctement --> - <JButton id="closeAction" onActionPerformed='getHandler().close(this)'/> + <JButton id="closeAction" onActionPerformed='handler.close()'/> </cell> </row> </Table> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIHandler.java index 565cc11..98409c8 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIHandler.java @@ -24,12 +24,13 @@ package fr.ird.observe.application.swing.ui.admin; import fr.ird.observe.application.swing.I18nEnumHelper; import fr.ird.observe.application.swing.ObserveActionExecutor; import fr.ird.observe.application.swing.ObserveRunner; +import fr.ird.observe.application.swing.ui.MnemonicHelper; import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.admin.config.ConfigUI; import fr.ird.observe.application.swing.ui.admin.config.SelectDataUI; import fr.ird.observe.application.swing.ui.admin.resume.ShowResumeUI; import fr.ird.observe.application.swing.ui.admin.save.SaveLocalUI; -import fr.ird.observe.application.swing.ui.tree.selection.SelectionTree; +import jaxx.runtime.spi.UIHandler; import jaxx.runtime.swing.wizard.WizardUILancher; import jaxx.runtime.swing.wizard.ext.WizardExtUtil; import jaxx.runtime.swing.wizard.ext.WizardState; @@ -39,7 +40,6 @@ import org.apache.commons.logging.LogFactory; import javax.swing.Icon; import javax.swing.JCheckBox; import javax.swing.JComponent; -import javax.swing.SwingUtilities; import javax.swing.border.TitledBorder; import java.awt.Component; import java.util.Arrays; @@ -53,12 +53,28 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class AdminUIHandler { +public class AdminUIHandler implements UIHandler<AdminUI> { /** Logger */ private static final Log log = LogFactory.getLog(AdminUIHandler.class); - public AdminStep getSelectedStep(AdminUI ui) { + private AdminUI ui; + + @Override + public void beforeInit(AdminUI ui) { + this.ui = ui; + } + + @Override + public void afterInit(AdminUI ui) { + + // installation du dispatcher de modifications du modele + WizardExtUtil.installWizardUIListeners(ui); + WizardExtUtil.addTraceLogListener(log, ui.getModel()); + MnemonicHelper.addKeyStrokeFromMnemonic(ui); + } + + public AdminStep getSelectedStep() { int index = ui.getTabs().getSelectedIndex(); AdminTabUI c = null; if (index > -1) { @@ -67,26 +83,26 @@ public class AdminUIHandler { return c == null ? null : c.getStep(); } - public AdminTabUI getStepUI(AdminUI ui, AdminStep step) { + public AdminTabUI getStepUI(AdminStep step) { if (step != null) { return (AdminTabUI) ui.getObjectById(step.name()); } return null; } - public AdminTabUI getStepUI(AdminUI ui, int stepIndex) { + public AdminTabUI getStepUI(int stepIndex) { if (stepIndex > ui.getTabs().getTabCount()) { return null; } return (AdminTabUI) ui.getTabs().getComponentAt(stepIndex); } - public AdminTabUI getSelectedStepUI(AdminUI ui) { - AdminStep step = getSelectedStep(ui); - return getStepUI(ui, step); + public AdminTabUI getSelectedStepUI() { + AdminStep step = getSelectedStep(); + return getStepUI(step); } - public void blockOperations(AdminUI ui) { + public void blockOperations() { ui.getModel().setValueAdjusting(true); for (AdminStep op : AdminStep.values()) { @@ -104,19 +120,19 @@ public class AdminUIHandler { ui.getModel().setValueAdjusting(false); } - public void onWasInit(AdminUI ui) { + public void onWasInit() { if (log.isDebugEnabled()) { log.debug(ui.getName() + " model was init at " + new Date()); } } - public void onWasStarted(AdminUI ui) { + public void onWasStarted() { if (log.isDebugEnabled()) { log.debug(ui.getName() + " model was started at " + new Date()); } } - public void onStepsChanged(AdminUI ui, AdminStep[] steps) { + public void onStepsChanged(AdminStep[] steps) { if (log.isDebugEnabled()) { log.debug("Will use these steps : " + Arrays.toString(steps)); @@ -160,7 +176,7 @@ public class AdminUIHandler { if (log.isDebugEnabled()) { log.debug("Will init tabUI [" + c.getName() + "]"); } - c.initUI(ui); +// c.initUI(ui); JComponent content = c.getContent(); UIHelper.setLayerUI(content, ui.getBusyBlockLayerUI()); @@ -175,7 +191,7 @@ public class AdminUIHandler { ui.getModel().setValueAdjusting(false); } - public void onStepChanged(AdminUI ui, AdminStep oldStep, AdminStep newStep) { + public void onStepChanged(AdminStep oldStep, AdminStep newStep) { if (log.isTraceEnabled()) { log.trace(newStep); } @@ -189,11 +205,11 @@ public class AdminUIHandler { ConfigUI configUI = (ConfigUI) ui.getStepUI(AdminStep.CONFIG); - model.setLocalSourceLabel(t("observe.storage.config.left.storage")); - model.setCentralSourceLabel(t("observe.storage.config.right.storage")); + model.getConfigModel().setLocalSourceLabel(t("observe.storage.config.left.storage")); + model.getConfigModel().setCentralSourceLabel(t("observe.storage.config.right.storage")); - configUI.getLocalSourceConfig().setBorder(new TitledBorder(model.getLocalSourceLabel())); - configUI.getCentralSourceConfig().setBorder(new TitledBorder(model.getCentralSourceLabel())); + configUI.getLocalSourceConfig().setBorder(new TitledBorder(model.getConfigModel().getLocalSourceLabel())); + configUI.getCentralSourceConfig().setBorder(new TitledBorder(model.getConfigModel().getCentralSourceLabel())); } @@ -221,39 +237,22 @@ public class AdminUIHandler { if (oldStep != null && oldStep.ordinal() < AdminStep.SELECT_DATA.ordinal()) { // préparation de l'arbre de sélection - onSelectDataOpen((SelectDataUI) ui.getStepUI(AdminStep.SELECT_DATA)); + SelectDataUI selectDataUI = (SelectDataUI) ui.getStepUI(AdminStep.SELECT_DATA); + selectDataUI.getHandler().onSelectDataOpen(); } } } - protected void onSelectDataOpen(SelectDataUI stepUI) { - - SelectionTree selectTree = stepUI.getSelectTree(); - selectTree.clearSelection(); - - SwingUtilities.invokeLater(selectTree::grabFocus); - - if (selectTree.getTreeModel().isNotEmpty()) { - - selectTree.setSelectionRow(0); - } - if (stepUI.getModel().getSafeLocalSource(true).isLocal()) { - SwingUtilities.invokeLater(selectTree::expandAll); - } - - } - /** * Call back lorsque l'état du modèle a changé. * * Ici, on va rendre accessible (ou pas) les onglets selon l'état du modèle. * - * @param ui l'ui concernée * @param newState le nouvel état. */ - public void onModelStateChanged(AdminUI ui, WizardState newState) { + public void onModelStateChanged(WizardState newState) { if (log.isDebugEnabled()) { log.debug(newState); } @@ -329,7 +328,7 @@ public class AdminUIHandler { } } - public void onOperationStateChanged(AdminUI ui, AdminStep step, WizardState newState) { + public void onOperationStateChanged(AdminStep step, WizardState newState) { if (log.isDebugEnabled()) { log.debug(step + " - " + newState); } @@ -345,7 +344,7 @@ public class AdminUIHandler { } } - public void start(AdminUI ui) { + public void start() { try { // on demarre le modele @@ -360,7 +359,7 @@ public class AdminUIHandler { } } - public void close(AdminUI ui) { + public void close() { Runnable action = WizardUILancher.APPLY_DEF.getContextValue(ui); @@ -369,7 +368,7 @@ public class AdminUIHandler { executor.addAction(t("observe.action.admin.close"), action); } - public void cancel(AdminUI ui) { + public void cancel() { Runnable action = WizardUILancher.CANCEL_DEF.getContextValue(ui); @@ -378,7 +377,7 @@ public class AdminUIHandler { executor.addAction(t("observe.action.admin.cancel"), action); } - public void destroy(AdminUI ui) { + public void destroy() { ui.getModel().destroy(); if (log.isDebugEnabled()) { log.debug("destroy ui " + ui.getName()); @@ -394,8 +393,8 @@ public class AdminUIHandler { UIHelper.destroy(ui); } - public void dispose(AdminUI ui) { - destroy(ui); + public void dispose() { + destroy(); } public Icon getTabIcon(WizardState state) { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUILauncher.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUILauncher.java index ded8255..43697c7 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUILauncher.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUILauncher.java @@ -26,6 +26,7 @@ import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.ObserveUIMode; import fr.ird.observe.application.swing.ui.UIHelper; +import fr.ird.observe.application.swing.ui.admin.config.ConfigModel; import jaxx.runtime.JAXXContext; import jaxx.runtime.swing.wizard.BusyChangeListener; import jaxx.runtime.swing.wizard.WizardUILancher; @@ -223,8 +224,8 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad try { - model.doCloseSource(model.getCentralSource(), false); - model.doCloseSource(model.getLocalSource(), false); + ConfigModel.doCloseSource(model.getConfigModel().getCentralSource()); + ConfigModel.doCloseSource(model.getConfigModel().getLocalSource()); if (!(parent instanceof ObserveMainUI)) { JDialog dialog = (JDialog) parent; @@ -246,7 +247,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad mainUI.removeContextValue(model.getClass()); - ObserveSwingDataSource source = model.getPreviousSource(); + ObserveSwingDataSource source = model.getConfigModel().getPreviousSource(); if (source == null) { @@ -255,7 +256,7 @@ public class AdminUILauncher extends WizardUILancher<AdminStep, AdminUIModel, Ad return; } - model.doCloseSource(source, false); + ConfigModel.doCloseSource(source); // on attache la source a l'ui ObserveSwingApplicationContext.get().getDataSourcesManager().prepareMainStorage(source, false); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIModel.java index a4c383f..afe74db 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/AdminUIModel.java @@ -21,63 +21,31 @@ */ package fr.ird.observe.application.swing.ui.admin; -import fr.ird.observe.application.swing.I18nEnumHelper; -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; -import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.application.swing.configuration.constants.DbMode; -import fr.ird.observe.application.swing.db.ObserveSwingDataSource; -import fr.ird.observe.application.swing.ui.admin.config.ConfigUI; +import fr.ird.observe.application.swing.ui.admin.config.ConfigModel; +import fr.ird.observe.application.swing.ui.admin.config.SelectDataModel; import fr.ird.observe.application.swing.ui.admin.consolidate.ConsolidateModel; import fr.ird.observe.application.swing.ui.admin.export.ExportModel; import fr.ird.observe.application.swing.ui.admin.report.ReportModel; +import fr.ird.observe.application.swing.ui.admin.resume.ShowResumeModel; import fr.ird.observe.application.swing.ui.admin.save.SaveLocalModel; import fr.ird.observe.application.swing.ui.admin.synchronize.data.DataSynchroModel; -import fr.ird.observe.application.swing.ui.admin.synchronize.referential.ReferentialSynchronizeMode; import fr.ird.observe.application.swing.ui.admin.synchronize.referential.legacy.SynchronizeModel; import fr.ird.observe.application.swing.ui.admin.synchronize.referential.ng.ReferentialSynchroModel; import fr.ird.observe.application.swing.ui.admin.validate.ValidateModel; -import fr.ird.observe.application.swing.ui.storage.StorageUIHandler; -import fr.ird.observe.application.swing.ui.storage.StorageUIModel; -import fr.ird.observe.application.swing.ui.tree.selection.SelectionTreeModel; -import fr.ird.observe.application.swing.validation.ValidationModelMode; -import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; -import fr.ird.observe.services.configuration.ObserveDataSourceInformation; -import fr.ird.observe.services.dto.DataReference; -import fr.ird.observe.services.dto.DataReferenceSet; -import fr.ird.observe.services.dto.IdHelper; -import fr.ird.observe.services.dto.ObserveModelType; -import fr.ird.observe.services.dto.longline.TripLonglineDto; -import fr.ird.observe.services.dto.seine.TripSeineDto; -import fr.ird.observe.services.service.BabModelVersionException; -import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; -import fr.ird.observe.services.service.DatabaseDestroyNotAuthorizedException; -import fr.ird.observe.services.service.DatabaseNotFoundException; -import fr.ird.observe.services.service.actions.validate.ValidateService; -import fr.ird.observe.services.service.data.longline.TripLonglineService; -import fr.ird.observe.services.service.data.seine.TripSeineService; import jaxx.runtime.swing.wizard.ext.WizardExtModel; import jaxx.runtime.swing.wizard.ext.WizardState; -import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.validator.NuitonValidatorScope; -import javax.swing.border.TitledBorder; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; -import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.EnumSet; import java.util.List; -import java.util.Objects; import java.util.Set; -import static fr.ird.observe.application.swing.ObserveResourceManager.Resource; -import static fr.ird.observe.application.swing.configuration.constants.DbMode.USE_LOCAL; -import static fr.ird.observe.application.swing.configuration.constants.DbMode.USE_REMOTE; -import static fr.ird.observe.application.swing.configuration.constants.DbMode.USE_SERVER; -import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; /** @@ -90,176 +58,37 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { // public static final String SELECTION_MODEL_CHANGED_PROPERTY_NAME = "selectionModelChanged"; public static final String SELECTED_TRIP_PROPERTY_NAME = "selectedTrip"; - public static final String PROPERTY_LOCAL_SOURCE_LABEL = "localSourceLabel"; - public static final String PROPERTY_CENTRAL_SOURCE_LABEL = "centralSourceLabel"; /** Logger */ private static final Log log = LogFactory.getLog(AdminUIModel.class); public static final PropertyChangeListener LOG_PROPERTY_CHANGE_LISTENER = new LogPropertyChanged(); - /** la source de données en cours d'utilisation par l'application */ - protected ObserveSwingDataSource previousSource; + protected final ConfigModel configModel = new ConfigModel(); - /** la source de données sur laquel on veut travailler */ - protected ObserveSwingDataSource localSource; + protected final SelectDataModel selectDataModel = new SelectDataModel(); - /** la source de données sur laquel on veut travailler */ - protected ObserveDataSourceInformation localSourceInformation; - - /** la source de données dite central (contenant le référentiel valide) */ - protected ObserveSwingDataSource centralSource; - - /** la configuration de la base source */ - protected final StorageUIModel localSourceModel; - - /** la configuration de la base central */ - protected final StorageUIModel centralSourceModel; - - /** le controleur pour configurer les sources */ - protected StorageUIHandler storageHandler; - - protected SelectionTreeModel selectionDataModel; + protected final ShowResumeModel showResumeModel = new ShowResumeModel(); /** la liste des modes disponibles en entrée */ protected final EnumSet<DbMode> availableIncomingModes; private final PropertyChangeListener listenStepChanged; - private final PropertyChangeListener listenSelectModified; - - private final PropertyChangeListener listenValidationModified; - - private final PropertyChangeListener listenReportModified; - - private final PropertyChangeListener listenerSelectedDataForReport; - - private final PropertyChangeListener listenConsolidateModified; - - private final PropertyChangeListener listenSaveLocalChanged; - private final PropertyChangeListener listenReferentialConfigChanged; - - private String localSourceLabel = t("observe.storage.config.source.storage"); - private String centralSourceLabel = t("observe.storage.config.referentiel.storage"); - - public String getLocalSourceLabel() { - return localSourceLabel; - } - - public void setLocalSourceLabel(String localSourceLabel) { - Object oldValue = getLocalSourceLabel(); - this.localSourceLabel = localSourceLabel; - firePropertyChange(PROPERTY_LOCAL_SOURCE_LABEL, oldValue, localSourceLabel); - } - - public String getCentralSourceLabel() { - return centralSourceLabel; - } - - public void setCentralSourceLabel(String centralSourceLabel) { - Object oldValue = getCentralSourceLabel(); - this.centralSourceLabel = centralSourceLabel; - firePropertyChange(PROPERTY_CENTRAL_SOURCE_LABEL, oldValue, centralSourceLabel); - } - - public void setSelectionDataModel(SelectionTreeModel selectionDataModel) { - this.selectionDataModel = selectionDataModel; + @Override + public void firePropertyChange(String propertyName, Object newValue) { + super.firePropertyChange(propertyName, newValue); } public AdminUIModel() { super(AdminStep.class); - localSourceModel = new StorageUIModel() { - - @Override - public String getLabel() { - String txt; - if (containsOperation(AdminStep.REFERENTIAL_SYNCHRONIZE) || containsOperation(AdminStep.DATA_SYNCHRONIZE)) { - txt = n("observe.storage.label.synchro.leftSource"); - } else { - txt = n("observe.storage.label.synchro.incoming"); - } - String params; - - if (getDbMode() == USE_SERVER) { - params = t("observe.storage.server.db") + " " + getRemoteUrl(); - } else if (getDbMode() == USE_REMOTE) { - params = t("observe.storage.remote.db") + " " + getRemoteUrl(); - } else { - params = t("observe.storage.locale.db") + " " + getH2Config().getDirectory().getAbsolutePath(); - } - txt = t(txt, params); - return txt; - } - - @Override - public void validate() { - super.validate(); - - // on declanche la revalidation du modèle - firePropertyChange(VALID_PROPERTY_NAME, isValid()); - } - - }; - - centralSourceModel = new StorageUIModel() { - - @Override - public String getLabel() { - String txt; - if (containsOperation(AdminStep.REFERENTIAL_SYNCHRONIZE) || containsOperation(AdminStep.DATA_SYNCHRONIZE)) { - txt = n("observe.storage.label.synchro.rightSource"); - } else { - txt = n("observe.storage.label.synchro.referentiel"); - } - String params; - - if (getDbMode() == USE_SERVER) { - params = t("observe.storage.server.db") + " " + getRemoteUrl(); - } else if (getDbMode() == USE_REMOTE) { - params = t("observe.storage.remote.db") + " " + getRemoteUrl(); - } else { - params = t("observe.storage.locale.db") + " " + getH2Config().getDirectory().getAbsolutePath(); - } - txt = t(txt, params); - return txt; - } - - @Override - public void validate() { - super.validate(); - - // on declanche la revalidation du modèle - firePropertyChange(VALID_PROPERTY_NAME, isValid()); - } - }; - availableIncomingModes = EnumSet.noneOf(DbMode.class); if (log.isDebugEnabled()) { log.debug("model [" + this + "] is instanciate."); } - listenReferentialConfigChanged = evt -> { - - - if (isWasStarted()) { - - // on ne propage plus rien (il n'y a plus de configuration possible...) - if (log.isDebugEnabled()) { - log.debug("Stop propagation, was started... " + evt.getPropertyName()); - } - return; - } - - if (ReferentialSynchroModel.SYNCHRONIZE_MODE_PROPERTY_NAME.equals(evt.getPropertyName())) { - - validate(); - - } - - }; - listenStepChanged = evt -> { if (isWasStarted()) { @@ -280,8 +109,8 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { if (containsOperation(AdminStep.REFERENTIAL_SYNCHRONIZE) || containsOperation(AdminStep.DATA_SYNCHRONIZE)) { - setLocalSourceLabel(t("observe.storage.config.left.storage")); - setCentralSourceLabel(t("observe.storage.config.right.storage")); + getConfigModel().setLocalSourceLabel(t("observe.storage.config.left.storage")); + getConfigModel().setCentralSourceLabel(t("observe.storage.config.right.storage")); } @@ -309,154 +138,61 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { if (newStep == AdminStep.SELECT_DATA) { - initSelectionModel(); - - } - - }; - listenSelectModified = evt -> { - SelectionTreeModel source = (SelectionTreeModel) evt.getSource(); - if (log.isDebugEnabled()) { - log.debug(String.format("selection data model [%s] changed on %s, new value = %s", - source, evt.getPropertyName(), evt.getNewValue())); - } - validate(); - if (log.isDebugEnabled()) { - log.debug("nb selected export datas = " + source.getSelectedCount()); - } + getSelectDataModel().initSelectionModel(this); - // on declanche la revalidation du modèle - firePropertyChange(VALID_STEP_PROPERTY_NAME, validStep); - }; - listenValidationModified = evt -> { - ValidateModel source = (ValidateModel) evt.getSource(); - if (log.isDebugEnabled()) { - log.debug("validation model [" + source + "] changed on " + - evt.getPropertyName() + ", new value = " + - evt.getNewValue()); } - validate(); - if (log.isDebugEnabled()) { - log.debug("nb validators = " + - source.getValidators().size() - ); - } - firePropertyChange(VALID_STEP_PROPERTY_NAME, validStep); - }; - listenReportModified = evt -> { - ReportModel source = (ReportModel) evt.getSource(); - if (log.isDebugEnabled()) { - log.debug("report model [" + source + "] changed on " + - evt.getPropertyName() + ", new value = " + - evt.getNewValue()); - } - validate(); - firePropertyChange(VALID_STEP_PROPERTY_NAME, validStep); - }; - listenerSelectedDataForReport = evt -> { - - // la modification de la sélection entraine la suppression d'un report sélectionné - getReportModel().setSelectedReport(null); - // cela entraine aussi la modification de la marée sélectionnée - firePropertyChange(SELECTED_TRIP_PROPERTY_NAME, getSelectedTrip()); - - }; - listenConsolidateModified = evt -> { - ConsolidateModel source = (ConsolidateModel) evt.getSource(); - if (log.isDebugEnabled()) { - log.debug("consolidate model [" + source + "] changed on " + - evt.getPropertyName() + ", new value = " + - evt.getNewValue()); - } - validate(); - firePropertyChange(VALID_STEP_PROPERTY_NAME, validStep); }; - listenSaveLocalChanged = evt -> { - - String propertyName = evt.getPropertyName(); - if (SaveLocalModel.BACKUP_FILE_PROPERTY_NAME.equals(propertyName)) { - - validate(); - return; - } - - if (SaveLocalModel.LOCAL_SOURCE_NEED_SAVE_PROPERTY_NAME.equals(propertyName)) { - boolean localSourceNeedSave = (Boolean) evt.getNewValue(); - if (localSourceNeedSave) { - // l'opération de sauvegarde est obligatoire - setStepState(AdminStep.SAVE_LOCAL, WizardState.PENDING); - } - validate(); - return; - } - - if (log.isDebugEnabled()) { - log.debug("Skip property " + propertyName); - } - }; } - private void initSelectionModel() { - - SelectionTreeModel selectionDataModel = getSelectionDataModel(); - - ObserveSwingDataSource dataSource = getSafeLocalSource(true); - - if (dataSource.isLocal()) { - selectionDataModel.setShowEmptyTrips(false); - } - - boolean selectAllTrips = true; - if (containsOperation(AdminStep.REPORT)) { - - // on remplit le modèle de sélection uniquement avec le bon type de marées - ReportModel reportModel = getReportModel(); - ObserveModelType reportType = reportModel.getModelType(); - boolean loadSeineTrip = ObserveModelType.PS == reportType; - - selectionDataModel.setLoadLongline(!loadSeineTrip); - selectionDataModel.setLoadSeine(loadSeineTrip); - - selectAllTrips = false; - - } - - // on remplit le modèle de sélection - - selectionDataModel.populate(dataSource); - - if (containsOperation(AdminStep.EXPORT_DATA)) { + public ValidateModel getValidateModel() { + return (ValidateModel) getStepModel(AdminStep.VALIDATE); + } - // on doit aussi calculer les ids des marées distantes - ObserveSwingDataSource safeCentralSource = getSafeCentralSource(true); + public SynchronizeModel getSynchronizeReferentielModel() { + return (SynchronizeModel) getStepModel(AdminStep.SYNCHRONIZE); + } - List<DataReference<?>> existingTrip = new ArrayList<>(); + public ConfigModel getConfigModel() { + return configModel; + } - TripSeineService tripSeineService = safeCentralSource.newTripSeineService(); - DataReferenceSet<TripSeineDto> tripSeineSet = tripSeineService.getAllTripSeine(); - existingTrip.addAll(tripSeineSet.getReferences()); + public ShowResumeModel getShowResumeModel() { + return showResumeModel; + } - TripLonglineService tripLonglineService = safeCentralSource.newTripLonglineService(); - DataReferenceSet<TripLonglineDto> tripLonglineSet = tripLonglineService.getAllTripLongline(); - existingTrip.addAll(tripLonglineSet.getReferences()); + public SelectDataModel getSelectDataModel() { + return selectDataModel; + } - selectionDataModel.setExistingTrips(existingTrip); + public ExportModel getExportModel() { + return (ExportModel) getStepModel(AdminStep.EXPORT_DATA); + } + public ReportModel getReportModel() { + return (ReportModel) getStepModel(AdminStep.REPORT); + } - } + public ConsolidateModel getConsolidateModel() { + return (ConsolidateModel) getStepModel(AdminStep.CONSOLIDATE); + } - if (dataSource.isLocal() && selectAllTrips) { + public SaveLocalModel getSaveLocalModel() { + return (SaveLocalModel) getStepModel(AdminStep.SAVE_LOCAL); + } - // on sélectionne toutes les marées - selectionDataModel.selectAllTrips(); - } + public DataSynchroModel getDataSynchroModel() { + return (DataSynchroModel) getStepModel(AdminStep.DATA_SYNCHRONIZE); + } + public ReferentialSynchroModel getReferentialSynchroModel() { + return (ReferentialSynchroModel) getStepModel(AdminStep.REFERENTIAL_SYNCHRONIZE); } - public SelectionTreeModel getSelectionDataModel() { - return selectionDataModel; + @Override + public AdminActionModel getStepModel(AdminStep operation) { + return (AdminActionModel) super.getStepModel(operation); } public boolean needSelect() { @@ -472,25 +208,8 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return false; } - public DataReference getSelectedTrip() { - Set<DataReference<?>> data = getSelectionDataModel().getSelectedData(); - if (data.isEmpty()) { - - // pas de Trip selectionne - return null; - } - DataReference dto = data.iterator().next(); - if (IdHelper.isTrip(dto)) { - return dto; - } - - // la donnée n'est pas une marée - return null; - } - - @Override - public AdminActionModel getStepModel(AdminStep operation) { - return (AdminActionModel) super.getStepModel(operation); + public boolean isValidStep() { + return validStep; } /** @@ -552,10 +271,6 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { availableIncomingModes.clear(); - storageHandler = ui.getContextValue(StorageUIHandler.class); - - ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); - // demarrage du modèle : on fixe ici une fois pour toute les liste // des onglets visibles start(); @@ -568,122 +283,29 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { log.info("enables operations = " + operations); } - // on positionne la source courante de l'application comme service - // entrant (on se sert de la configuration de ce service s'il existe - // pour la source locale). - ObserveSwingDataSource previousSource = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); - setPreviousSource(previousSource); - - startIncomingSourceModel(ui); - - startCentralSourceModel(ui); - - startSelectModel(); + getConfigModel().start(ui); - // avant le demarrage du wizard, on ferme toujours la source - // en cours d'utilisation - - if (previousSource != null && previousSource.isOpen()) { - - if (log.isDebugEnabled()) { - log.debug("Close previous source " + - previousSource.getLabel()); - } - doCloseSource(previousSource, false); - } + getSelectDataModel().start(this); if (containsOperation(AdminStep.SAVE_LOCAL)) { - - File backupfile = config.newBackupDataFile(); - - getSaveLocalModel().setBackupFile(backupfile); - getSaveLocalModel().setDoBackup(true); - getSaveLocalModel().removePropertyChangeListener(listenSaveLocalChanged); - getSaveLocalModel().addPropertyChangeListener(listenSaveLocalChanged); + getSaveLocalModel().start(this); } - if (containsOperation(AdminStep.VALIDATE)) { - - getValidateModel().removePropertyChangeListener(listenValidationModified); - getValidateModel().addPropertyChangeListener(listenValidationModified); - getValidateModel().addScope(NuitonValidatorScope.ERROR); - getValidateModel().setModelMode(ValidationModelMode.DATA); - getValidateModel().setContextName(ValidateService.SERVICE_VALIDATION_CONTEXT); - getValidateModel().setGenerateReport(true); - if (!config.getValidationReportDirectory().exists()) { - boolean b = config.getValidationReportDirectory().mkdirs(); - if (!b) { - throw new RuntimeException("Could not create directory " + config.getValidationReportDirectory()); - } - } - File reportFile = new File(config.getValidationReportDirectory(), - getValidateModel().getDefaultReportFilename()); - getValidateModel().setReportFile(reportFile); + getValidateModel().start(this); } - if (containsOperation(AdminStep.REPORT)) { - - File reportFile = Resource.report.getFile(config.getReportDirectory()); - - if (reportFile.exists()) { - if (log.isInfoEnabled()) { - log.info("Will use report file : " + reportFile); - } - - getReportModel().setReportFile(reportFile); - } else { - if (log.isWarnEnabled()) - log.warn("Default report file " + reportFile + " does not exists."); - } - - // on ecoute la modification du modèle - getReportModel().removePropertyChangeListener(listenReportModified); - getReportModel().addPropertyChangeListener(listenReportModified); - - // on ecoute la modification de la sélection - getSelectionDataModel().removePropertyChangeListener(SelectionTreeModel.SELECTED_COUNT, listenerSelectedDataForReport); - getSelectionDataModel().addPropertyChangeListener(SelectionTreeModel.SELECTED_COUNT, listenerSelectedDataForReport); - - getReportModel().updateReports(); + getReportModel().start(this); } - if (containsOperation(AdminStep.CONSOLIDATE)) { - - // Anything to init ? - getConsolidateModel().removePropertyChangeListener(listenConsolidateModified); - getConsolidateModel().addPropertyChangeListener(listenConsolidateModified); + getConsolidateModel().start(this); } - if (containsOperation(AdminStep.DATA_SYNCHRONIZE)) { - - ConfigUI configUI = (ConfigUI) ui.getStepUI(AdminStep.CONFIG); - - configUI.getLocalSourceConfig().setBorder(new TitledBorder(getLocalSourceLabel())); - configUI.getCentralSourceConfig().setBorder(new TitledBorder(getCentralSourceLabel())); - + getDataSynchroModel().start(ui); } if (containsOperation(AdminStep.REFERENTIAL_SYNCHRONIZE)) { - - getReferentialSynchroModel().removePropertyChangeListener(listenReferentialConfigChanged); - getReferentialSynchroModel().addPropertyChangeListener(listenReferentialConfigChanged); - - getReferentialSynchroModel().addPropertyChangeListener(ReferentialSynchroModel.SYNCHRONIZE_MODE_PROPERTY_NAME, evt -> { - - ReferentialSynchronizeMode newValue = (ReferentialSynchronizeMode) evt.getNewValue(); - - if (ui.getTabs().getComponentCount() > 1 && newValue != null) { - ui.getTabs().setTitleAt(1, t("observe.actions.synchro.referential.withMode", I18nEnumHelper.getLabel(newValue))); - } - - }); - - getReferentialSynchroModel().setSynchronizeMode(ReferentialSynchronizeMode.FROM_LEFT_TO_RIGHT); - + getReferentialSynchroModel().start(ui); } - // on ecoute les modifications d'étapes pour remplir les modèles de sélection - // si nécessaire - removePropertyChangeListener(STEP_PROPERTY_NAME, listenStepChanged); addPropertyChangeListener(STEP_PROPERTY_NAME, listenStepChanged); @@ -695,294 +317,12 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { validate(); } - protected void startCentralSourceModel(AdminUI ui) { - - if (!isNeedReferentielDataSource()) { - - // pas besoin de la base distante - return; - } - - // par default, on tente d'utiliser la base distance - centralSourceModel.init(ui, null); - centralSourceModel.setCanCreateLocalService(false); - boolean canUseLocalSource = getOperations().contains(AdminStep.DATA_SYNCHRONIZE) - || getOperations().contains(AdminStep.SYNCHRONIZE) - || getOperations().contains(AdminStep.REFERENTIAL_SYNCHRONIZE); - centralSourceModel.setCanUseLocalService(canUseLocalSource); - centralSourceModel.setCanUseRemoteService(true); - centralSourceModel.setCanUseServerService(true); - centralSourceModel.start(USE_REMOTE); - - if (log.isDebugEnabled()) { - centralSourceModel.removePropertyChangeListener(LOG_PROPERTY_CHANGE_LISTENER); - centralSourceModel.addPropertyChangeListener(LOG_PROPERTY_CHANGE_LISTENER); - } - - // on teste si la connexion distante existe - if (centralSourceModel.isValid()) { - centralSourceModel.testRemote(); - } - } - - protected void startIncomingSourceModel(AdminUI ui) { - - if (!isNeedIncomingDataSource()) { - - // pas besoin de la base locale - return; - } - - ObserveSwingDataSource previousSource = getPreviousSource(); - - ObserveDataSourceConfiguration previousSourceConfig = null; - ObserveDataSourceInformation previousSourceInfo = null; - - EnumSet<DbMode> authorizedModes = getIncomingDataSourceMode(); - EnumSet<DbMode> modes = EnumSet.noneOf(DbMode.class); - - if (authorizedModes.contains(USE_LOCAL)) { - - // ce mode est disponible uniquement si une base locale existe - if (ObserveSwingApplicationContext.get().getConfig().isLocalStorageExist()) { - modes.add(USE_LOCAL); - } - } - - if (authorizedModes.contains(USE_REMOTE)) { - - modes.add(USE_REMOTE); - } - - if (authorizedModes.contains(USE_SERVER)) { - - modes.add(USE_SERVER); - } - - if (authorizedModes.contains(DbMode.CREATE_LOCAL)) { - - modes.add(DbMode.CREATE_LOCAL); - } - - if (previousSource != null) { - - try { - previousSourceConfig = previousSource.getConfiguration().clone(); - previousSourceInfo = previousSource.getInformation(); - } catch (CloneNotSupportedException e) { - if (log.isErrorEnabled()) { - log.error("con not clone previous data configuration", e); - } - } - - if (previousSource.isRemote()) { - - if (!modes.contains(USE_REMOTE)) { - - // pas autorise a utiliser cette source en entree - previousSource = null; - } - } - - if (previousSource != null && previousSource.isServer()) { - - if (!modes.contains(USE_SERVER)) { - - // pas autorise a utiliser cette source en entree - previousSource = null; - } - } - - if (previousSource != null && previousSource.isLocal()) { - - if (!modes.contains(USE_LOCAL)) { - - // pas autorise a utiliser cette source en entree - previousSource = null; - } - } - } - - availableIncomingModes.addAll(modes); - - localSourceModel.setCanCreateLocalService(modes.contains(DbMode.CREATE_LOCAL)); - localSourceModel.setCanUseLocalService(modes.contains(USE_LOCAL)); - localSourceModel.setCanUseRemoteService(modes.contains(USE_REMOTE)); - localSourceModel.setCanUseServerService(modes.contains(USE_SERVER)); - - if (previousSource == null) { - - // on intialize le modèle de la source locale à partir du service entrant (s'il existe) - localSourceModel.init(ui, null); - - } else { - - // on intialize le modèle de la source locale à partir du service entrant (s'il existe) - localSourceModel.initFromPreviousConfig(previousSourceConfig, previousSourceInfo); - } - - DbMode dbMode = localSourceModel.getDbMode(); - localSourceModel.start(dbMode); - - if (log.isDebugEnabled()) { - localSourceModel.removePropertyChangeListener(LOG_PROPERTY_CHANGE_LISTENER); - localSourceModel.addPropertyChangeListener(LOG_PROPERTY_CHANGE_LISTENER); - } - } - - protected void startSelectModel() { - - if (!needSelect()) { - - // pas d'opération avec une sélection de données, rien a faire ici - return; - } - - SelectionTreeModel selectionModel = getSelectionDataModel(); - - if (containsOperation(AdminStep.EXPORT_DATA)) { - - selectionModel.setLoadLongline(true); - selectionModel.setLoadSeine(true); - selectionModel.setLoadReferential(false); - selectionModel.setUseOpenData(false); - } - - if (containsOperation(AdminStep.REPORT)) { - - selectionModel.setUseOpenData(true); - selectionModel.setLoadLongline(true); - selectionModel.setLoadSeine(true); - selectionModel.setLoadReferential(false); - } - - if (containsOperation(AdminStep.VALIDATE)) { - - selectionModel.setUseOpenData(true); - selectionModel.setLoadLongline(true); - selectionModel.setLoadSeine(true); - selectionModel.setLoadReferential(true); - } - - if (containsOperation(AdminStep.CONSOLIDATE)) { - - selectionModel.setUseOpenData(true); - selectionModel.setLoadLongline(true); - selectionModel.setLoadSeine(true); - selectionModel.setLoadReferential(false); - } - - selectionModel.addPropertyChangeListener(SelectionTreeModel.SELECTED_COUNT, listenSelectModified); - } - @Override public void destroy() { - localSourceModel.destroy(); - centralSourceModel.destroy(); -// selectionDataModel.destroy(); + getConfigModel().destroy(); super.destroy(); } - public ObserveSwingDataSource getPreviousSource() { - return previousSource; - } - - public void setPreviousSource(ObserveSwingDataSource previousSource) { - this.previousSource = previousSource; - } - - public ObserveSwingDataSource getLocalSource() { - return localSource; - } - - public ObserveDataSourceInformation getLocalSourceInformation() { - if (localSourceInformation == null) { - - ObserveSwingDataSource localSource = getSafeLocalSource(false); - - try { - - localSourceInformation = localSource.checkCanConnect(); - - } catch (Exception e) { - //FIXME ! il faut faire quelque chose dans ce cas précis, au moins avertir l'utilisateur - if (log.isErrorEnabled()) { - log.error("unable to find local source information", e); - } - } - - } - - return localSourceInformation; - } - - public ObserveSwingDataSource getCentralSource() { - return centralSource; - } - - public ObserveSwingDataSource getSafeLocalSource(boolean open) { - if (localSource == null || open && !localSource.isOpen()) { - - localSource = createDataSource(getLocalSourceModel()); - } - if (open) { - - doOpenSource(localSource); - } - return localSource; - } - - public ObserveSwingDataSource getSafeCentralSource(boolean open) { - if (centralSource == null || open && !centralSource.isOpen()) { - - centralSource = createDataSource(getCentralSourceModel()); - } - if (open) { - doOpenSource(centralSource); - } - return centralSource; - } - - public StorageUIModel getLocalSourceModel() { - return localSourceModel; - } - - public StorageUIModel getCentralSourceModel() { - return centralSourceModel; - } - - public ValidateModel getValidateModel() { - return (ValidateModel) getStepModel(AdminStep.VALIDATE); - } - - public SynchronizeModel getSynchronizeReferentielModel() { - return (SynchronizeModel) getStepModel(AdminStep.SYNCHRONIZE); - } - - public ExportModel getExportModel() { - return (ExportModel) getStepModel(AdminStep.EXPORT_DATA); - } - - public ReportModel getReportModel() { - return (ReportModel) getStepModel(AdminStep.REPORT); - } - - public ConsolidateModel getConsolidateModel() { - return (ConsolidateModel) getStepModel(AdminStep.CONSOLIDATE); - } - - public SaveLocalModel getSaveLocalModel() { - return (SaveLocalModel) getStepModel(AdminStep.SAVE_LOCAL); - } - - public DataSynchroModel getDataSynchroModel() { - return (DataSynchroModel) getStepModel(AdminStep.DATA_SYNCHRONIZE); - } - - public ReferentialSynchroModel getReferentialSynchroModel() { - return (ReferentialSynchroModel) getStepModel(AdminStep.REFERENTIAL_SYNCHRONIZE); - } - @Override public void cancel() { super.cancel(); @@ -1019,14 +359,14 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { if (AdminStep.SYNCHRONIZE == step) { // pour exporter les données utilisateurs - // l'objectOperation de synchronisation de référentiel est nécessaire + // l'opération de synchronisation de référentiel est nécessaire getOperations().remove(AdminStep.EXPORT_DATA); } if (AdminStep.CONSOLIDATE == step) { // pour exporter les données utilisateurs ou effectuer des reports - // l'objectOperation de calcul des données est nécessaire + // l'opération de calcul des données est nécessaire getOperations().remove(AdminStep.EXPORT_DATA); getOperations().remove(AdminStep.REPORT); } @@ -1045,307 +385,27 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return false; } - SelectionTreeModel selectionModel = getSelectionDataModel(); - switch (step) { case CONFIG: - if (isNeedIncomingDataSource()) { - if (!localSourceModel.isValid()) { - if (log.isDebugEnabled()) { - log.debug("incoming service is not valid"); - } - validate = false; - } - } - if (isNeedReferentielDataSource()) { - if (!centralSourceModel.isValid()) { - if (log.isDebugEnabled()) { - log.debug("referentiel service is not valid"); - } - validate = false; - } - } - - if (containsOperation(AdminStep.VALIDATE)) { - - // il faut avoir selectionner un context - // il faut avoir au moins selectionner un scope - if (StringUtils.isEmpty(getValidateModel().getContextName())) { - if (log.isDebugEnabled()) { - log.debug("no validation context name"); - } - return false; - } - if (getValidateModel().getScopes().isEmpty()) { - if (log.isDebugEnabled()) { - log.debug("no validation scopes"); - } - return false; - } - if (getValidateModel().getModelMode() == null) { - if (log.isDebugEnabled()) { - log.debug("no validation model mode"); - } - return false; - } - if (getValidateModel().isGenerateReport()) { - - // le fichier de rapport ne doit pas exister - File file = getValidateModel().getReportFile(); - - if (file.exists()) { - if (log.isDebugEnabled()) { - log.debug("report file already exists"); - } - return false; - } - - // le repertoire du rapport doit exister - File parentFile = file.getParentFile(); - if (parentFile == null || !parentFile.exists()) { - return false; - } - } - if (getValidateModel().getValidators().isEmpty()) { - if (log.isDebugEnabled()) { - log.debug("no validators detected"); - } - return false; - } - - // la base precedente doit etre ouverte - ObserveDataSourceInformation dataSourceInformation = getLocalSourceInformation(); - - // si le test de connection a echoue - if (dataSourceInformation == null) { - if (log.isDebugEnabled()) { - log.debug("can not connect to data source "); - } - return false; - } - - - // pour valider une base il faut les droits - if (selectionModel.isUseData()) { - - // il faut les droits en Lecture sur les donnes - if (!(dataSourceInformation.canReadData())) { - if (log.isDebugEnabled()) { - log.debug("can not read data"); - } - return false; - } - } - if (selectionModel.isLoadReferential()) { - - // il faut les droits en L sur le referentiel - if (!(dataSourceInformation.canReadReferential())) { - if (log.isDebugEnabled()) { - log.debug("can not read referentiel"); - } - return false; - } - } - } - if (validate && containsOperation(AdminStep.DATA_SYNCHRONIZE)) { - - // les deux bases (source et referentiel) doivent etre different - validate = validateNotSameDataSources(); - - ObserveDataSourceInformation leftDataSourceInformation = getLocalSourceInformation(); - if (!(leftDataSourceInformation.canReadData() && leftDataSourceInformation.canWriteData())) { - if (log.isDebugEnabled()) { - log.debug("can not read and write data on left data source"); - } - return false; - } - - if (centralSourceModel.getDataSourceInformation() != null) { - - ObserveDataSourceInformation rightDataSourceInformation = centralSourceModel.getDataSourceInformation(); - if (!(rightDataSourceInformation.canReadData() && rightDataSourceInformation.canWriteData())) { - if (log.isDebugEnabled()) { - log.debug("can not read and write data on right data source"); - } - return false; - } - - } - - } - - if (validate && containsOperation(AdminStep.REFERENTIAL_SYNCHRONIZE)) { - - // les deux bases (source et referentiel) doivent etre different - validate = validateNotSameDataSources(); - - ObserveDataSourceInformation leftDataSourceInformation = getLocalSourceInformation(); - if (leftDataSourceInformation == null) { - return false; - } - if (!(leftDataSourceInformation.canReadReferential())) { - if (log.isDebugEnabled()) { - log.debug("can not read and write referential on left data source"); - } - return false; - } - - ObserveDataSourceInformation rightDataSourceInformation = centralSourceModel.getDataSourceInformation(); - if (rightDataSourceInformation == null) { - return false; - } - - if (!(rightDataSourceInformation.canReadReferential())) { - if (log.isDebugEnabled()) { - log.debug("can not read and write referential on right data source"); - } - return false; - } - - ReferentialSynchronizeMode synchronizeMode = getReferentialSynchroModel().getSynchronizeMode(); - if (synchronizeMode == null) { - return false; - } - - if (synchronizeMode.isLeftWrite()) { - - validate = localSourceModel.isLocal() || leftDataSourceInformation.canWriteReferential(); - - } - - if (synchronizeMode.isRightWrite()) { - - validate = centralSourceModel.isLocal() || rightDataSourceInformation.canWriteReferential(); - - } - - } - - if (containsOperation(AdminStep.SYNCHRONIZE)) { - - if (!localSourceModel.isValid()) { - return false; - } - - ObserveDataSourceInformation leftDataSourceInformation = getLocalSourceInformation(); - if (leftDataSourceInformation == null) { - return false; - } - - if (!centralSourceModel.isValid()) { - return false; - } - - ObserveDataSourceInformation rightDataSourceInformation = centralSourceModel.getDataSourceInformation(); - if (rightDataSourceInformation == null) { - return false; - } - - if (!(rightDataSourceInformation.canReadReferential())) { - if (log.isDebugEnabled()) { - log.debug("can not read referential on central source"); - } - return false; - } - - // les deux bases (source et referentiel) doivent etre different - validate = validateNotSameDataSources(); - - } - if (containsOperation(AdminStep.EXPORT_DATA)) { - - // il faut une base locale et une connexion distante - // avec des droits d'écriture de données - validate &= centralSourceModel.getDataSourceInformation() != null - && centralSourceModel.getDataSourceInformation().canWriteData(); - - } - - if (containsOperation(AdminStep.REPORT)) { - - // il faut le fichier di'mport existe - File reportFile = getReportModel().getReportFile(); - validate &= reportFile != null && - reportFile.exists(); - } - break; + return getConfigModel().validate(this); case SELECT_DATA: - - if (containsOperation(AdminStep.VALIDATE)) { - - // la config doit etre ok - validate = validate(AdminStep.CONFIG); - if (validate) { - - // il faut au moins une donnee de selectionnee - boolean empty = selectionModel.isSelectionEmpty(); - validate = !empty; - } - } - if (containsOperation(AdminStep.EXPORT_DATA)) { - - // la config doit etre ok - validate &= validate(AdminStep.CONFIG); - if (validate) { - - // il faut au moins une donnee de selectionnee - boolean empty = selectionModel.isSelectionEmpty(); - validate = !empty; - } - } - if (containsOperation(AdminStep.CONSOLIDATE)) { - - // la config doit etre ok - validate &= validate(AdminStep.CONFIG); - if (validate) { - - // il faut au moins une donnee de selectionnee - boolean empty = selectionModel.isSelectionEmpty(); - validate = !empty; - } - } - if (containsOperation(AdminStep.REPORT)) { - - // la config doit etre ok - validate &= validate(AdminStep.CONFIG); - if (validate) { - - // il faut exactement une Trip de selectionnee - int selectedCount = selectionModel.getSelectedCount(); - validate = selectedCount == 1; - } - } - break; + return getSelectDataModel().validate(this); case VALIDATE: - validate = validate(AdminStep.SELECT_DATA) && - getStepState(step) == WizardState.SUCCESSED; - break; + return getValidateModel().validate(this); case EXPORT_DATA: - validate = validate(AdminStep.SELECT_DATA) && - getStepState(step) == WizardState.SUCCESSED; - break; + return getExportModel().validate(this); case CONSOLIDATE: - validate = validate(AdminStep.SELECT_DATA) && - getStepState(step) == WizardState.SUCCESSED; - break; + return getConsolidateModel().validate(this); case REPORT: - - // pour acceder a l'onglet des report, il faut que - // l'onglet de sélection des données soit ok - validate = validate(AdminStep.SELECT_DATA); - break; + return getReportModel().validate(this); case SYNCHRONIZE: - validate = getStepState(step) == WizardState.SUCCESSED; - break; + return getSynchronizeReferentielModel().validate(this, step); case SAVE_LOCAL: - // valide si l'action a ete executee avec success - validate = !getSaveLocalModel().isDoBackup() || - getStepState(step) == WizardState.SUCCESSED; - break; + return getSaveLocalModel().validate(this, step); case SHOW_RESUME: - validate = true; + return getShowResumeModel().validate(this); } - return validate; + return true; } @Override @@ -1425,21 +485,6 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { return universe.toArray(new AdminStep[universe.size()]); } - public void removeLocalSource() { - if (localSource != null) { - doCloseSource(localSource, false); - localSource = null; - localSourceInformation = null; - } - } - - public void removeCentralSource() { - if (centralSource != null) { - doCloseSource(centralSource, false); - centralSource = null; - } - } - protected void updateSaveLocalOperation() { boolean shouldAdd = false; for (AdminStep s : operations) { @@ -1458,40 +503,11 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } } - protected ObserveSwingDataSource createDataSource(StorageUIModel model) { - - return storageHandler.newDataSourceFromModel(model); - } - - protected void doOpenSource(ObserveSwingDataSource source) { - - if (source != null && !source.isOpen()) { - try { - source.open(); - } catch (DatabaseConnexionNotAuthorizedException | DatabaseNotFoundException | BabModelVersionException e) { - throw new IllegalStateException("Could not open " + source, e); - } - } - - } - - protected void doCloseSource(ObserveSwingDataSource source, boolean destroy) { - - if (source != null && source.isOpen()) { - if (destroy) { - try { - source.destroy(); - } catch (DatabaseDestroyNotAuthorizedException e) { - throw new IllegalStateException("Could not destroy " + source, e); - } - } else { - source.close(); - } - } - + public <E> EnumSet<DbMode> getAvailableIncomingModes() { + return availableIncomingModes; } - private static class LogPropertyChanged implements PropertyChangeListener { + public static class LogPropertyChanged implements PropertyChangeListener { @Override public void propertyChange(PropertyChangeEvent evt) { String name = evt.getPropertyName(); @@ -1504,24 +520,4 @@ public class AdminUIModel extends WizardExtModel<AdminStep> { } } - private boolean validateNotSameDataSources() { - boolean validate = true; - DbMode dbMode = localSourceModel.getDbMode(); - if (dbMode != null && dbMode == centralSourceModel.getDbMode()) { - switch (dbMode) { - case USE_REMOTE: - validate = !Objects.equals(localSourceModel.getPgConfig().getJdbcUrl(), centralSourceModel.getPgConfig().getJdbcUrl()); - break; - case USE_SERVER: - validate = !Objects.equals(localSourceModel.getRestConfig().getServerUrl(), centralSourceModel.getRestConfig().getServerUrl()) - || !Objects.equals(localSourceModel.getRestConfig().getOptionalDatabaseName(), centralSourceModel.getRestConfig().getOptionalDatabaseName()); - - break; - default: - validate = false; - } - } - return validate; - } - } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigModel.java new file mode 100644 index 0000000..e4644c0 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigModel.java @@ -0,0 +1,673 @@ +package fr.ird.observe.application.swing.ui.admin.config; + +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.configuration.constants.DbMode; +import fr.ird.observe.application.swing.db.ObserveSwingDataSource; +import fr.ird.observe.application.swing.ui.admin.AdminActionModel; +import fr.ird.observe.application.swing.ui.admin.AdminStep; +import fr.ird.observe.application.swing.ui.admin.AdminUI; +import fr.ird.observe.application.swing.ui.admin.AdminUIModel; +import fr.ird.observe.application.swing.ui.admin.synchronize.referential.ReferentialSynchronizeMode; +import fr.ird.observe.application.swing.ui.storage.StorageUIModel; +import fr.ird.observe.application.swing.ui.tree.selection.SelectionTreeModel; +import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; +import fr.ird.observe.services.configuration.ObserveDataSourceInformation; +import fr.ird.observe.services.service.BabModelVersionException; +import fr.ird.observe.services.service.DatabaseConnexionNotAuthorizedException; +import fr.ird.observe.services.service.DatabaseNotFoundException; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.beans.PropertyChangeListener; +import java.io.File; +import java.util.EnumSet; +import java.util.Objects; + +import static fr.ird.observe.application.swing.configuration.constants.DbMode.USE_LOCAL; +import static fr.ird.observe.application.swing.configuration.constants.DbMode.USE_REMOTE; +import static fr.ird.observe.application.swing.configuration.constants.DbMode.USE_SERVER; +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 28/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class ConfigModel extends AdminActionModel { + + /** Logger */ + private static final Log log = LogFactory.getLog(ConfigModel.class); + public static final String PROPERTY_LOCAL_SOURCE_LABEL = "localSourceLabel"; + public static final String PROPERTY_CENTRAL_SOURCE_LABEL = "centralSourceLabel"; + + /** la source de données en cours d'utilisation par l'application */ + protected ObserveSwingDataSource previousSource; + /** la source de données sur laquel on veut travailler */ + protected ObserveSwingDataSource localSource; + /** la source de données sur laquel on veut travailler */ + protected ObserveDataSourceInformation localSourceInformation; + /** la source de données dite central (contenant le référentiel valide) */ + protected ObserveSwingDataSource centralSource; + /** la configuration de la base source */ + protected final StorageUIModel localSourceModel; + /** la configuration de la base central */ + protected final StorageUIModel centralSourceModel; + private String localSourceLabel = t("observe.storage.config.source.storage"); + private String centralSourceLabel = t("observe.storage.config.referentiel.storage"); + + public ConfigModel() { + super(AdminStep.CONFIG); + localSourceModel = new StorageUIModel() { + + @Override + public String getLabel() { + String txt = getLocalSourceLabel(); + String params; + + if (getDbMode() == USE_SERVER) { + params = t("observe.storage.server.db") + " " + getRemoteUrl(); + } else if (getDbMode() == USE_REMOTE) { + params = t("observe.storage.remote.db") + " " + getRemoteUrl(); + } else { + params = t("observe.storage.locale.db") + " " + getH2Config().getDirectory().getAbsolutePath(); + } + txt = t(txt, params); + return txt; + } + + @Override + public void validate() { + super.validate(); + + // on declanche la revalidation du modèle + firePropertyChange(VALID_PROPERTY_NAME, isValid()); + } + + }; + + centralSourceModel = new StorageUIModel() { + + @Override + public String getLabel() { + String txt = getCentralSourceLabel(); + String params; + + if (getDbMode() == USE_SERVER) { + params = t("observe.storage.server.db") + " " + getRemoteUrl(); + } else if (getDbMode() == USE_REMOTE) { + params = t("observe.storage.remote.db") + " " + getRemoteUrl(); + } else { + params = t("observe.storage.locale.db") + " " + getH2Config().getDirectory().getAbsolutePath(); + } + txt = t(txt, params); + return txt; + } + + @Override + public void validate() { + super.validate(); + + // on declanche la revalidation du modèle + firePropertyChange(VALID_PROPERTY_NAME, isValid()); + } + }; + + } + + public static void doOpenSource(ObserveSwingDataSource source) { + + if (source != null && !source.isOpen()) { + try { + source.open(); + } catch (DatabaseConnexionNotAuthorizedException | DatabaseNotFoundException | BabModelVersionException e) { + throw new IllegalStateException("Could not open " + source, e); + } + } + + } + + public static void doCloseSource(ObserveSwingDataSource source) { + + if (source != null && source.isOpen()) { + source.close(); + } + + } + + + public String getLocalSourceLabel() { + return localSourceLabel; + } + + public void setLocalSourceLabel(String localSourceLabel) { + Object oldValue = getLocalSourceLabel(); + this.localSourceLabel = localSourceLabel; + firePropertyChange(PROPERTY_LOCAL_SOURCE_LABEL, oldValue, localSourceLabel); + } + + public String getCentralSourceLabel() { + return centralSourceLabel; + } + + public void setCentralSourceLabel(String centralSourceLabel) { + Object oldValue = getCentralSourceLabel(); + this.centralSourceLabel = centralSourceLabel; + firePropertyChange(PROPERTY_CENTRAL_SOURCE_LABEL, oldValue, centralSourceLabel); + } + + + public boolean validate(AdminUIModel uiModel) { + + boolean validate = true; + + StorageUIModel centralSourceModel = getCentralSourceModel(); + StorageUIModel localSourceModel = getLocalSourceModel(); + + if (uiModel.isNeedIncomingDataSource()) { + if (!localSourceModel.isValid()) { + if (log.isDebugEnabled()) { + log.debug("incoming service is not valid"); + } + validate = false; + } + } + if (uiModel.isNeedReferentielDataSource()) { + if (!centralSourceModel.isValid()) { + if (log.isDebugEnabled()) { + log.debug("referentiel service is not valid"); + } + validate = false; + } + } + + if (!validate) { + return false; + } + + if (uiModel.containsOperation(AdminStep.VALIDATE)) { + + // il faut avoir selectionner un context + // il faut avoir au moins selectionner un scope + if (StringUtils.isEmpty(uiModel.getValidateModel().getContextName())) { + if (log.isDebugEnabled()) { + log.debug("no validation context name"); + } + return false; + } + if (uiModel.getValidateModel().getScopes().isEmpty()) { + if (log.isDebugEnabled()) { + log.debug("no validation scopes"); + } + return false; + } + if (uiModel.getValidateModel().getModelMode() == null) { + if (log.isDebugEnabled()) { + log.debug("no validation model mode"); + } + return false; + } + if (uiModel.getValidateModel().isGenerateReport()) { + + // le fichier de rapport ne doit pas exister + File file = uiModel.getValidateModel().getReportFile(); + + if (file.exists()) { + if (log.isDebugEnabled()) { + log.debug("report file already exists"); + } + return false; + } + + // le repertoire du rapport doit exister + File parentFile = file.getParentFile(); + if (parentFile == null || !parentFile.exists()) { + return false; + } + } + if (uiModel.getValidateModel().getValidators().isEmpty()) { + if (log.isDebugEnabled()) { + log.debug("no validators detected"); + } + return false; + } + + // la base precedente doit etre ouverte + ObserveDataSourceInformation dataSourceInformation = getLocalSourceInformation(); + + // si le test de connection a echoue + if (dataSourceInformation == null) { + if (log.isDebugEnabled()) { + log.debug("can not connect to data source "); + } + return false; + } + + + // pour valider une base il faut les droits + SelectionTreeModel selectionModel = uiModel.getSelectDataModel().getSelectionDataModel(); + if (selectionModel.isUseData()) { + + // il faut les droits en Lecture sur les donnes + if (!(dataSourceInformation.canReadData())) { + if (log.isDebugEnabled()) { + log.debug("can not read data"); + } + return false; + } + } + if (selectionModel.isLoadReferential()) { + + // il faut les droits en L sur le referentiel + if (!(dataSourceInformation.canReadReferential())) { + if (log.isDebugEnabled()) { + log.debug("can not read referentiel"); + } + return false; + } + } + } + + if (uiModel.containsOperation(AdminStep.DATA_SYNCHRONIZE)) { + + // les deux bases (source et referentiel) doivent etre different + validate = validateNotSameDataSources(); + + ObserveDataSourceInformation leftDataSourceInformation = getLocalSourceInformation(); + if (!(leftDataSourceInformation.canReadData() && leftDataSourceInformation.canWriteData())) { + if (log.isDebugEnabled()) { + log.debug("can not read and write data on left data source"); + } + return false; + } + + if (centralSourceModel.getDataSourceInformation() != null) { + + ObserveDataSourceInformation rightDataSourceInformation = centralSourceModel.getDataSourceInformation(); + if (!(rightDataSourceInformation.canReadData() && rightDataSourceInformation.canWriteData())) { + if (log.isDebugEnabled()) { + log.debug("can not read and write data on right data source"); + } + return false; + } + + } + + } + + if (validate && uiModel.containsOperation(AdminStep.REFERENTIAL_SYNCHRONIZE)) { + + // les deux bases (source et referentiel) doivent etre different + validate = validateNotSameDataSources(); + + ObserveDataSourceInformation leftDataSourceInformation = getLocalSourceInformation(); + if (leftDataSourceInformation == null) { + return false; + } + if (!(leftDataSourceInformation.canReadReferential())) { + if (log.isDebugEnabled()) { + log.debug("can not read and write referential on left data source"); + } + return false; + } + + ObserveDataSourceInformation rightDataSourceInformation = centralSourceModel.getDataSourceInformation(); + if (rightDataSourceInformation == null) { + return false; + } + + if (!(rightDataSourceInformation.canReadReferential())) { + if (log.isDebugEnabled()) { + log.debug("can not read and write referential on right data source"); + } + return false; + } + + ReferentialSynchronizeMode synchronizeMode = uiModel.getReferentialSynchroModel().getSynchronizeMode(); + if (synchronizeMode == null) { + return false; + } + + if (synchronizeMode.isLeftWrite()) { + + validate = localSourceModel.isLocal() || leftDataSourceInformation.canWriteReferential(); + + } + + if (synchronizeMode.isRightWrite()) { + + validate = centralSourceModel.isLocal() || rightDataSourceInformation.canWriteReferential(); + + } + + } + + if (uiModel.containsOperation(AdminStep.SYNCHRONIZE)) { + + if (!localSourceModel.isValid()) { + return false; + } + + ObserveDataSourceInformation leftDataSourceInformation = getLocalSourceInformation(); + if (leftDataSourceInformation == null) { + return false; + } + + if (!centralSourceModel.isValid()) { + return false; + } + + ObserveDataSourceInformation rightDataSourceInformation = centralSourceModel.getDataSourceInformation(); + if (rightDataSourceInformation == null) { + return false; + } + + if (!(rightDataSourceInformation.canReadReferential())) { + if (log.isDebugEnabled()) { + log.debug("can not read referential on central source"); + } + return false; + } + + // les deux bases (source et referentiel) doivent etre different + validate = validateNotSameDataSources(); + + } + if (uiModel.containsOperation(AdminStep.EXPORT_DATA)) { + + // il faut une base locale et une connexion distante + // avec des droits d'écriture de données + validate &= centralSourceModel.getDataSourceInformation() != null + && centralSourceModel.getDataSourceInformation().canWriteData(); + + } + + if (uiModel.containsOperation(AdminStep.REPORT)) { + + // il faut le fichier di'mport existe + File reportFile = uiModel.getReportModel().getReportFile(); + validate &= reportFile != null && reportFile.exists(); + } + + return validate; + } + + public static final PropertyChangeListener LOG_PROPERTY_CHANGE_LISTENER = new AdminUIModel.LogPropertyChanged(); + + protected void startCentralSourceModel(AdminUI ui) { + + AdminUIModel uiModel = ui.getModel(); + if (!uiModel.isNeedReferentielDataSource()) { + + // pas besoin de la base distante + return; + } + + // par default, on tente d'utiliser la base distance + centralSourceModel.init(ui, null); + centralSourceModel.setCanCreateLocalService(false); + boolean canUseLocalSource = uiModel.getOperations().contains(AdminStep.DATA_SYNCHRONIZE) + || uiModel.getOperations().contains(AdminStep.SYNCHRONIZE) + || uiModel.getOperations().contains(AdminStep.REFERENTIAL_SYNCHRONIZE); + centralSourceModel.setCanUseLocalService(canUseLocalSource); + centralSourceModel.setCanUseRemoteService(true); + centralSourceModel.setCanUseServerService(true); + centralSourceModel.start(USE_REMOTE); + + if (log.isDebugEnabled()) { + centralSourceModel.removePropertyChangeListener(LOG_PROPERTY_CHANGE_LISTENER); + centralSourceModel.addPropertyChangeListener(LOG_PROPERTY_CHANGE_LISTENER); + } + + // on teste si la connexion distante existe + if (centralSourceModel.isValid()) { + centralSourceModel.testRemote(); + } + } + + protected void startIncomingSourceModel(AdminUI ui) { + + AdminUIModel uiModel = ui.getModel(); + + if (!uiModel.isNeedIncomingDataSource()) { + + // pas besoin de la base locale + return; + } + + ObserveSwingDataSource previousSource = getPreviousSource(); + + ObserveDataSourceConfiguration previousSourceConfig = null; + ObserveDataSourceInformation previousSourceInfo = null; + + EnumSet<DbMode> authorizedModes = uiModel.getIncomingDataSourceMode(); + EnumSet<DbMode> modes = EnumSet.noneOf(DbMode.class); + + if (authorizedModes.contains(USE_LOCAL)) { + + // ce mode est disponible uniquement si une base locale existe + if (ObserveSwingApplicationContext.get().getConfig().isLocalStorageExist()) { + modes.add(USE_LOCAL); + } + } + + if (authorizedModes.contains(USE_REMOTE)) { + + modes.add(USE_REMOTE); + } + + if (authorizedModes.contains(USE_SERVER)) { + + modes.add(USE_SERVER); + } + + if (authorizedModes.contains(DbMode.CREATE_LOCAL)) { + + modes.add(DbMode.CREATE_LOCAL); + } + + if (previousSource != null) { + + try { + previousSourceConfig = previousSource.getConfiguration().clone(); + previousSourceInfo = previousSource.getInformation(); + } catch (CloneNotSupportedException e) { + if (log.isErrorEnabled()) { + log.error("con not clone previous data configuration", e); + } + } + + if (previousSource.isRemote()) { + + if (!modes.contains(USE_REMOTE)) { + + // pas autorise a utiliser cette source en entree + previousSource = null; + } + } + + if (previousSource != null && previousSource.isServer()) { + + if (!modes.contains(USE_SERVER)) { + + // pas autorise a utiliser cette source en entree + previousSource = null; + } + } + + if (previousSource != null && previousSource.isLocal()) { + + if (!modes.contains(USE_LOCAL)) { + + // pas autorise a utiliser cette source en entree + previousSource = null; + } + } + } + + uiModel.getAvailableIncomingModes().addAll(modes); + + localSourceModel.setCanCreateLocalService(modes.contains(DbMode.CREATE_LOCAL)); + localSourceModel.setCanUseLocalService(modes.contains(USE_LOCAL)); + localSourceModel.setCanUseRemoteService(modes.contains(USE_REMOTE)); + localSourceModel.setCanUseServerService(modes.contains(USE_SERVER)); + + if (previousSource == null) { + + // on intialize le modèle de la source locale à partir du service entrant (s'il existe) + localSourceModel.init(ui, null); + + } else { + + // on intialize le modèle de la source locale à partir du service entrant (s'il existe) + localSourceModel.initFromPreviousConfig(previousSourceConfig, previousSourceInfo); + } + + DbMode dbMode = localSourceModel.getDbMode(); + localSourceModel.start(dbMode); + + if (log.isDebugEnabled()) { + localSourceModel.removePropertyChangeListener(LOG_PROPERTY_CHANGE_LISTENER); + localSourceModel.addPropertyChangeListener(LOG_PROPERTY_CHANGE_LISTENER); + } + } + + public boolean validateNotSameDataSources() { + boolean validate = true; + DbMode dbMode = localSourceModel.getDbMode(); + if (dbMode != null && dbMode == centralSourceModel.getDbMode()) { + switch (dbMode) { + case USE_REMOTE: + validate = !Objects.equals(localSourceModel.getPgConfig().getJdbcUrl(), centralSourceModel.getPgConfig().getJdbcUrl()); + break; + case USE_SERVER: + validate = !Objects.equals(localSourceModel.getRestConfig().getServerUrl(), centralSourceModel.getRestConfig().getServerUrl()) + || !Objects.equals(localSourceModel.getRestConfig().getOptionalDatabaseName(), centralSourceModel.getRestConfig().getOptionalDatabaseName()); + + break; + default: + validate = false; + } + } + return validate; + } + + + public void start(AdminUI ui) { + + // on positionne la source courante de l'application comme service + // entrant (on se sert de la configuration de ce service s'il existe + // pour la source locale). + ObserveSwingDataSource previousSource = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); + setPreviousSource(previousSource); + + // avant le demarrage du wizard, on ferme toujours la source + // en cours d'utilisation + + if (previousSource != null && previousSource.isOpen()) { + + if (log.isDebugEnabled()) { + log.debug("Close previous source " + previousSource.getLabel()); + } + doCloseSource(previousSource); + } + + startIncomingSourceModel(ui); + + startCentralSourceModel(ui); + + } + + @Override + public void destroy() { + super.destroy(); + localSourceModel.destroy(); + centralSourceModel.destroy(); + } + + public ObserveSwingDataSource getPreviousSource() { + return previousSource; + } + + public void setPreviousSource(ObserveSwingDataSource previousSource) { + this.previousSource = previousSource; + } + + public ObserveSwingDataSource getLocalSource() { + return localSource; + } + + public ObserveDataSourceInformation getLocalSourceInformation() { + if (localSourceInformation == null) { + + ObserveSwingDataSource localSource = getSafeLocalSource(false); + + try { + + localSourceInformation = localSource.checkCanConnect(); + + } catch (Exception e) { + //FIXME ! il faut faire quelque chose dans ce cas précis, au moins avertir l'utilisateur + if (log.isErrorEnabled()) { + log.error("unable to find local source information", e); + } + } + + } + + return localSourceInformation; + } + + public ObserveSwingDataSource getCentralSource() { + return centralSource; + } + + public ObserveSwingDataSource getSafeLocalSource(boolean open) { + if (localSource == null || open && !localSource.isOpen()) { + + localSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSourceFromModel(getLocalSourceModel()); + } + if (open) { + + doOpenSource(localSource); + } + return localSource; + } + + public ObserveSwingDataSource getSafeCentralSource(boolean open) { + if (centralSource == null || open && !centralSource.isOpen()) { + + centralSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSourceFromModel(getCentralSourceModel()); + } + if (open) { + doOpenSource(centralSource); + } + return centralSource; + } + + public StorageUIModel getLocalSourceModel() { + return localSourceModel; + } + + public StorageUIModel getCentralSourceModel() { + return centralSourceModel; + } + + + public void removeLocalSource() { + if (localSource != null) { + doCloseSource(localSource); + localSource = null; + localSourceInformation = null; + } + } + + public void removeCentralSource() { + if (centralSource != null) { + doCloseSource(centralSource); + centralSource = null; + } + } + +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigUI.jaxx index 8aad3ca..15efd26 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigUI.jaxx @@ -28,9 +28,11 @@ _failedIcon='SwingUtil.getUIManagerActionIcon("connect_no")'> <import> + fr.ird.observe.application.swing.ui.admin.AdminActionModel fr.ird.observe.application.swing.ui.admin.AdminUI fr.ird.observe.application.swing.ui.admin.AdminStep fr.ird.observe.application.swing.ui.admin.AdminTabUI + fr.ird.observe.application.swing.ui.storage.StorageUIModel jaxx.runtime.SwingUtil java.awt.Color @@ -40,25 +42,14 @@ </import> - <fr.ird.observe.application.swing.ui.admin.AdminActionModel id='stepModel' initializer='null'/> + <ConfigModel id='stepModel' initializer='getModel().getConfigModel()'/> - <fr.ird.observe.application.swing.ui.storage.StorageUIModel id='localSourceModel'/> + <StorageUIModel id='localSourceModel'/> - <fr.ird.observe.application.swing.ui.storage.StorageUIModel id='centralSourceModel'/> - - <ConfigUIHandler id='handler' constructorParams='this'/> + <StorageUIModel id='centralSourceModel'/> <script><![CDATA[ -public ConfigUI(AdminUI parentContext) { - super(AdminStep.CONFIG, parentContext); -} - -@Override -public void initUI(AdminUI ui) { - getHandler().initTabUI(ui, this); -} - @Override public void addMessage(AdminStep step, String text) { // on enregistre pas les messages pour cette étape @@ -71,53 +62,50 @@ public void addMessage(AdminStep step, String text) { <JPanel id="configLabelPanel" constraints='BorderLayout.NORTH'> <JLabel id="configLabel"/> </JPanel> - <Table fill='both' - weightx='1' - insets='0' - constraints='BorderLayout.CENTER'> + <Table fill='both' weightx='1' insets='0' constraints='BorderLayout.CENTER'> <row> <cell> <Table id='operations' decorator='boxed' fill='both' weightx='1'> <row> <cell> <JCheckBox id='SYNCHRONIZE' - onItemStateChanged='getHandler().updateOperationState((JCheckBox)event.getSource())'/> + onItemStateChanged='handler.updateOperationState((JCheckBox)event.getSource())'/> </cell> </row> <row> <cell> <JCheckBox id='DATA_SYNCHRONIZE' - onItemStateChanged='getHandler().updateOperationState((JCheckBox)event.getSource())'/> + onItemStateChanged='handler.updateOperationState((JCheckBox)event.getSource())'/> </cell> </row> <row> <cell> <JCheckBox id='REFERENTIAL_SYNCHRONIZE' - onItemStateChanged='getHandler().updateOperationState((JCheckBox)event.getSource())'/> + onItemStateChanged='handler.updateOperationState((JCheckBox)event.getSource())'/> </cell> </row> <row> <cell> <JCheckBox id='CONSOLIDATE' - onItemStateChanged='getHandler().updateOperationState((JCheckBox)event.getSource())'/> + onItemStateChanged='handler.updateOperationState((JCheckBox)event.getSource())'/> </cell> </row> <row> <cell> <JCheckBox id='VALIDATE' - onItemStateChanged='getHandler().updateOperationState((JCheckBox)event.getSource())'/> + onItemStateChanged='handler.updateOperationState((JCheckBox)event.getSource())'/> </cell> </row> <row> <cell> <JCheckBox id='EXPORT_DATA' - onItemStateChanged='getHandler().updateOperationState((JCheckBox)event.getSource())'/> + onItemStateChanged='handler.updateOperationState((JCheckBox)event.getSource())'/> </cell> </row> <row> <cell> <JCheckBox id='REPORT' - onItemStateChanged='getHandler().updateOperationState((JCheckBox)event.getSource())'/> + onItemStateChanged='handler.updateOperationState((JCheckBox)event.getSource())'/> </cell> </row> </Table> @@ -133,8 +121,7 @@ public void addMessage(AdminStep step, String text) { <JLabel id='localSourceLabel'/> </cell> <cell> - <JButton id='configureLocalSource' - onActionPerformed='getHandler().obtainIncomingConnexion()'/> + <JButton id='configureLocalSource' onActionPerformed='handler.obtainIncomingConnexion()'/> </cell> <cell anchor='east'> <JLabel id='localSourceStatus'/> @@ -145,11 +132,6 @@ public void addMessage(AdminStep step, String text) { <JLabel id='localSourcePolicy'/> </cell> </row> - <!--row> - <cell fill='both' columns="2"> - <JLabel id='localSourceInfoLabel'/> - </cell> - </row--> </Table> </cell> </row> @@ -163,8 +145,7 @@ public void addMessage(AdminStep step, String text) { <JLabel id='centralSourceLabel'/> </cell> <cell> - <JButton id='configureCentralSource' - onActionPerformed='getHandler().obtainRemoteConnexion()'/> + <JButton id='configureCentralSource' onActionPerformed='handler.obtainRemoteConnexion()'/> </cell> <cell anchor='east'> <JLabel id='centralSourceStatus'/> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigUI.jcss index eb46511..0cf0629 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigUI.jcss @@ -85,7 +85,7 @@ } #localSourceConfig { - border:{new TitledBorder(model.getLocalSourceLabel())}; + border:{new TitledBorder(getStepModel().getLocalSourceLabel())}; visible:{model.isNeedIncomingDataSource()}; } @@ -110,7 +110,7 @@ #centralSourceConfig { visible:{model.isNeedReferentielDataSource()}; - border:{new TitledBorder(model.getCentralSourceLabel())}; + border:{new TitledBorder(stepModel.getCentralSourceLabel())}; } #centralSourceLabel { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigUIHandler.java index b8cee91..287c22f 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigUIHandler.java @@ -25,14 +25,12 @@ import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ObserveTextGenerator; import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.admin.AdminStep; -import fr.ird.observe.application.swing.ui.admin.AdminTabUI; import fr.ird.observe.application.swing.ui.admin.AdminTabUIHandler; -import fr.ird.observe.application.swing.ui.admin.AdminUI; import fr.ird.observe.application.swing.ui.storage.StorageStep; import fr.ird.observe.application.swing.ui.storage.StorageUILauncher; import fr.ird.observe.application.swing.ui.storage.StorageUIModel; -import fr.ird.observe.application.swing.ui.tree.selection.SelectionTree; import fr.ird.observe.services.configuration.ObserveDataSourceInformation; +import jaxx.runtime.spi.UIHandler; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -49,45 +47,17 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class ConfigUIHandler extends AdminTabUIHandler { +public class ConfigUIHandler extends AdminTabUIHandler<ConfigUI> implements UIHandler<ConfigUI> { /** Logger */ private static final Log log = LogFactory.getLog(ConfigUIHandler.class); - public ConfigUIHandler(AdminTabUI ui) { - super(ui); - } - - public void initTabUI(AdminUI ui, ConfigUI tabUI) { - - super.initTabUI(ui, tabUI); - - if (log.isDebugEnabled()) { - log.debug("specialized for [" + tabUI.getStep() + "] for main ui " + ui.getClass().getName() + "@" + System.identityHashCode(ui)); - } - - UIHelper.setLayerUI(tabUI.getOperations(), ui.getOperationBlockLayerUI()); - UIHelper.setLayerUI(tabUI.getConfig(), ui.getConfigBlockLayerUI()); - UIHelper.setLayerUI(tabUI.getContent(), null); - } - - public void initTabUI(AdminUI ui, SelectDataUI tabUI) { - - super.initTabUI(ui, tabUI); - - if (log.isDebugEnabled()) { - log.debug(" specialized for [" + tabUI.getStep() + "] for main ui " + ui.getClass().getName() + "@" + System.identityHashCode(ui)); - } - - UIHelper.setLayerUI(tabUI.getContent(), null); - UIHelper.setLayerUI(tabUI.getSelectTreePane(), ui.getConfigBlockLayerUI()); - - SelectionTree tree = tabUI.getSelectTree(); - ui.getModel().setSelectionDataModel(tree.getTreeModel()); - - tree.installUI(); - //FIXME Init tree ? -// UIHelper.initUI(tabUI.getSelectTreePane(), tree); + @Override + public void afterInit(ConfigUI ui) { + super.afterInit(ui); + UIHelper.setLayerUI(ui.getOperations(), parentUI.getOperationBlockLayerUI()); + UIHelper.setLayerUI(ui.getConfig(), parentUI.getConfigBlockLayerUI()); + UIHelper.setLayerUI(ui.getContent(), null); } public void updateOperationState(JCheckBox checkBox) { @@ -122,8 +92,7 @@ public class ConfigUIHandler extends AdminTabUIHandler { return AdminStep.valueOf(checkBox.getName()); } - public boolean isOperationSelected(Set<AdminStep> operations, - JCheckBox checkBox) { + public boolean isOperationSelected(Set<AdminStep> operations, JCheckBox checkBox) { AdminStep scope = getOperation(checkBox); return operations.contains(scope); } @@ -134,8 +103,8 @@ public class ConfigUIHandler extends AdminTabUIHandler { if (log.isDebugEnabled()) { log.debug("After modifiy source model isValid : " + sourceModel.isValid() + " / " + sourceModel.isValidStep()); } - model.removeLocalSource(); - model.getLocalSourceModel().validate(); + model.getConfigModel().removeLocalSource(); + model.getConfigModel().getLocalSourceModel().validate(); model.validate(); } @@ -145,8 +114,8 @@ public class ConfigUIHandler extends AdminTabUIHandler { } StorageUIModel sourceModel = ui.getCentralSourceModel(); StorageUILauncher.obtainConnexion(ui, ui.getParentContainer(Window.class), sourceModel); - model.removeCentralSource(); - model.getCentralSourceModel().validate(StorageStep.CONFIG); + model.getConfigModel().removeCentralSource(); + model.getConfigModel().getCentralSourceModel().validate(StorageStep.CONFIG); model.validate(); } @@ -170,5 +139,4 @@ public class ConfigUIHandler extends AdminTabUIHandler { return text; } - } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataModel.java new file mode 100644 index 0000000..58160ba --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataModel.java @@ -0,0 +1,229 @@ +package fr.ird.observe.application.swing.ui.admin.config; + +import fr.ird.observe.application.swing.db.ObserveSwingDataSource; +import fr.ird.observe.application.swing.ui.admin.AdminActionModel; +import fr.ird.observe.application.swing.ui.admin.AdminStep; +import fr.ird.observe.application.swing.ui.admin.AdminUIModel; +import fr.ird.observe.application.swing.ui.admin.report.ReportModel; +import fr.ird.observe.application.swing.ui.tree.selection.SelectionTreeModel; +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.DataReferenceSet; +import fr.ird.observe.services.dto.IdHelper; +import fr.ird.observe.services.dto.ObserveModelType; +import fr.ird.observe.services.dto.longline.TripLonglineDto; +import fr.ird.observe.services.dto.seine.TripSeineDto; +import fr.ird.observe.services.service.data.longline.TripLonglineService; +import fr.ird.observe.services.service.data.seine.TripSeineService; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +/** + * Created on 28/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class SelectDataModel extends AdminActionModel { + + /** Logger */ + private static final Log log = LogFactory.getLog(SelectDataModel.class); + + protected SelectionTreeModel selectionDataModel; + + public SelectDataModel() { + super(AdminStep.SELECT_DATA); + } + + public SelectionTreeModel getSelectionDataModel() { + return selectionDataModel; + } + + public void setSelectionDataModel(SelectionTreeModel selectionDataModel) { + this.selectionDataModel = selectionDataModel; + } + + + public void initSelectionModel(AdminUIModel uiModel) { + + SelectionTreeModel selectionDataModel = getSelectionDataModel(); + + ObserveSwingDataSource dataSource = uiModel.getConfigModel().getSafeLocalSource(true); + + if (dataSource.isLocal()) { + selectionDataModel.setShowEmptyTrips(false); + } + + boolean selectAllTrips = true; + if (uiModel.containsOperation(AdminStep.REPORT)) { + + // on remplit le modèle de sélection uniquement avec le bon type de marées + ReportModel reportModel = uiModel.getReportModel(); + ObserveModelType reportType = reportModel.getModelType(); + boolean loadSeineTrip = ObserveModelType.PS == reportType; + + selectionDataModel.setLoadLongline(!loadSeineTrip); + selectionDataModel.setLoadSeine(loadSeineTrip); + + selectAllTrips = false; + + } + + // on remplit le modèle de sélection + + selectionDataModel.populate(dataSource); + + if (uiModel.containsOperation(AdminStep.EXPORT_DATA)) { + + // on doit aussi calculer les ids des marées distantes + ObserveSwingDataSource safeCentralSource = uiModel.getConfigModel().getSafeCentralSource(true); + + List<DataReference<?>> existingTrip = new ArrayList<>(); + + TripSeineService tripSeineService = safeCentralSource.newTripSeineService(); + DataReferenceSet<TripSeineDto> tripSeineSet = tripSeineService.getAllTripSeine(); + existingTrip.addAll(tripSeineSet.getReferences()); + + TripLonglineService tripLonglineService = safeCentralSource.newTripLonglineService(); + DataReferenceSet<TripLonglineDto> tripLonglineSet = tripLonglineService.getAllTripLongline(); + existingTrip.addAll(tripLonglineSet.getReferences()); + + selectionDataModel.setExistingTrips(existingTrip); + + + } + + if (dataSource.isLocal() && selectAllTrips) { + + // on sélectionne toutes les marées + selectionDataModel.selectAllTrips(); + } + + } + + public DataReference getSelectedTrip() { + Set<DataReference<?>> data = getSelectionDataModel().getSelectedData(); + if (data.isEmpty()) { + + // pas de Trip selectionne + return null; + } + DataReference dto = data.iterator().next(); + if (IdHelper.isTrip(dto)) { + return dto; + } + + // la donnée n'est pas une marée + return null; + } + + public void start(AdminUIModel uiModel) { + + if (!uiModel.needSelect()) { + + // pas d'opération avec une sélection de données, rien a faire ici + return; + } + + SelectionTreeModel selectionModel = getSelectionDataModel(); + + if (uiModel.containsOperation(AdminStep.EXPORT_DATA)) { + + selectionModel.setLoadLongline(true); + selectionModel.setLoadSeine(true); + selectionModel.setLoadReferential(false); + selectionModel.setUseOpenData(false); + } + + if (uiModel.containsOperation(AdminStep.REPORT)) { + + selectionModel.setUseOpenData(true); + selectionModel.setLoadLongline(true); + selectionModel.setLoadSeine(true); + selectionModel.setLoadReferential(false); + } + + if (uiModel.containsOperation(AdminStep.VALIDATE)) { + + selectionModel.setUseOpenData(true); + selectionModel.setLoadLongline(true); + selectionModel.setLoadSeine(true); + selectionModel.setLoadReferential(true); + } + + if (uiModel.containsOperation(AdminStep.CONSOLIDATE)) { + + selectionModel.setUseOpenData(true); + selectionModel.setLoadLongline(true); + selectionModel.setLoadSeine(true); + selectionModel.setLoadReferential(false); + } + + selectionModel.addPropertyChangeListener(SelectionTreeModel.SELECTED_COUNT, evt -> { + SelectionTreeModel source = (SelectionTreeModel) evt.getSource(); + if (log.isDebugEnabled()) { + log.debug(String.format("selection data model [%s] changed on %s, new value = %s", + source, evt.getPropertyName(), evt.getNewValue())); + } + uiModel.validate(); + if (log.isDebugEnabled()) { + log.debug("nb selected export datas = " + source.getSelectedCount()); + } + }); + } + + public boolean validate(AdminUIModel uiModel) { + + boolean validate = true; + + if (uiModel.containsOperation(AdminStep.VALIDATE)) { + + // la config doit etre ok + validate = uiModel.validate(AdminStep.CONFIG); + if (validate) { + + // il faut au moins une donnee de selectionnee + boolean empty = selectionDataModel.isSelectionEmpty(); + validate = !empty; + } + } + if (uiModel.containsOperation(AdminStep.EXPORT_DATA)) { + + // la config doit etre ok + validate &= uiModel.validate(AdminStep.CONFIG); + if (validate) { + + // il faut au moins une donnee de selectionnee + boolean empty = selectionDataModel.isSelectionEmpty(); + validate = !empty; + } + } + if (uiModel.containsOperation(AdminStep.CONSOLIDATE)) { + + // la config doit etre ok + validate &= uiModel.validate(AdminStep.CONFIG); + if (validate) { + + // il faut au moins une donnee de selectionnee + boolean empty = selectionDataModel.isSelectionEmpty(); + validate = !empty; + } + } + if (uiModel.containsOperation(AdminStep.REPORT)) { + + // la config doit etre ok + validate &= uiModel.validate(AdminStep.CONFIG); + if (validate) { + + // il faut exactement une Trip de selectionnee + int selectedCount = selectionDataModel.getSelectedCount(); + validate = selectedCount == 1; + } + } + + return validate; + } +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataUI.jaxx index 296703b..b7a720e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataUI.jaxx @@ -28,32 +28,14 @@ <import> fr.ird.observe.application.swing.ui.UIHelper - fr.ird.observe.application.swing.ui.admin.AdminActionModel - fr.ird.observe.application.swing.ui.admin.AdminUI - fr.ird.observe.application.swing.ui.admin.AdminStep fr.ird.observe.application.swing.ui.tree.selection.SelectionTree - fr.ird.observe.application.swing.ui.tree.selection.SelectionTreeHeader jaxx.runtime.SwingUtil </import> - <ConfigUIHandler id='handler' constructorParams='this'/> - - <AdminActionModel id='stepModel' initializer='null'/> - - <script><![CDATA[ -public SelectDataUI(AdminUI parentContext) { - super(AdminStep.SELECT_DATA, parentContext); -} - -public void initUI(AdminUI ui) { - getHandler().initTabUI(ui, this); -} - -]]> - </script> + <SelectDataModel id='stepModel' initializer='getModel().getSelectDataModel()'/> <JPanel id='PENDING_content'> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataUI.jcss index 4e863e0..0aaaacd 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataUI.jcss @@ -25,12 +25,8 @@ } #selectTree { - /*rootVisible:false; - largeModel:true;*/ minimumSize:{UIHelper.newMinDimension()}; font-size:11; - /*showsRootHandles:false; - toggleClickCount:100;*/ } #selectTreePane { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataUIHandler.java new file mode 100644 index 0000000..5b5aa2f --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataUIHandler.java @@ -0,0 +1,50 @@ +package fr.ird.observe.application.swing.ui.admin.config; + +import fr.ird.observe.application.swing.ui.UIHelper; +import fr.ird.observe.application.swing.ui.admin.AdminTabUIHandler; +import fr.ird.observe.application.swing.ui.tree.selection.SelectionTree; +import jaxx.runtime.spi.UIHandler; + +import javax.swing.SwingUtilities; + +/** + * Created on 28/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class SelectDataUIHandler extends AdminTabUIHandler<SelectDataUI> implements UIHandler<SelectDataUI> { + + @Override + public void afterInit(SelectDataUI ui) { + super.afterInit(this.ui); + + UIHelper.setLayerUI(ui.getContent(), null); + UIHelper.setLayerUI(ui.getSelectTreePane(), parentUI.getConfigBlockLayerUI()); + + SelectionTree tree = ui.getSelectTree(); + model.getSelectDataModel().setSelectionDataModel(tree.getTreeModel()); + + tree.installUI(); + //FIXME Init tree ? +// UIHelper.initUI(tabUI.getSelectTreePane(), tree); + } + + + public void onSelectDataOpen() { + + SelectionTree selectTree = ui.getSelectTree(); + selectTree.clearSelection(); + + SwingUtilities.invokeLater(selectTree::grabFocus); + + if (selectTree.getTreeModel().isNotEmpty()) { + + selectTree.setSelectionRow(0); + } + if (ui.getModel().getConfigModel().getSafeLocalSource(true).isLocal()) { + SwingUtilities.invokeLater(selectTree::expandAll); + } + + } +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/consolidate/ConsolidateModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/consolidate/ConsolidateModel.java index e85495e..7a121cd 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/consolidate/ConsolidateModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/consolidate/ConsolidateModel.java @@ -24,6 +24,12 @@ package fr.ird.observe.application.swing.ui.admin.consolidate; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.admin.AdminActionModel; import fr.ird.observe.application.swing.ui.admin.AdminStep; +import fr.ird.observe.application.swing.ui.admin.AdminUIModel; +import jaxx.runtime.swing.wizard.ext.WizardState; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.beans.PropertyChangeListener; /** * Modele pour preparer une validation de donnees d'une base. @@ -33,6 +39,9 @@ import fr.ird.observe.application.swing.ui.admin.AdminStep; */ public class ConsolidateModel extends AdminActionModel { + /** Logger */ + private static final Log log = LogFactory.getLog(ConsolidateModel.class); + /** la source de données où effectuer la consolidation des données */ private ObserveSwingDataSource source; @@ -53,4 +62,24 @@ public class ConsolidateModel extends AdminActionModel { super.destroy(); source = null; } + + public void start(AdminUIModel uiModel) { + + // Anything to init ? + + PropertyChangeListener listenConsolidateModified = evt -> { + ConsolidateModel source = (ConsolidateModel) evt.getSource(); + if (log.isDebugEnabled()) { + log.debug("consolidate model [" + source + "] changed on " + evt.getPropertyName() + ", new value = " + evt.getNewValue()); + } + uiModel.validate(); + }; + + removePropertyChangeListener(listenConsolidateModified); + addPropertyChangeListener(listenConsolidateModified); + } + + public boolean validate(AdminUIModel uiModel) { + return uiModel.validate(AdminStep.SELECT_DATA) && uiModel.getStepState(step) == WizardState.SUCCESSED; + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/consolidate/ConsolidateUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/consolidate/ConsolidateUI.jaxx index f62ea91..5b7e4ce 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/consolidate/ConsolidateUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/consolidate/ConsolidateUI.jaxx @@ -21,7 +21,7 @@ --> <!-- ********************************************** --> -<!-- L'écran de validation des données observers --> +<!-- L'écran de validation des données observées --> <!-- ********************************************** --> <fr.ird.observe.application.swing.ui.admin.AdminTabUI> @@ -32,32 +32,13 @@ fr.ird.observe.application.swing.ui.admin.AdminUI </import> - <ConsolidateUIHandler id='handler' constructorParams='this'/> - - <ConsolidateModel id='stepModel' - initializer='getModel().getConsolidateModel()'/> - - <script><![CDATA[ -public ConsolidateUI(AdminUI parentContext) { - super(AdminStep.CONSOLIDATE, parentContext); -} - -@Override -public void initUI(AdminUI ui) { - log.info("for [" + getStep() + "]"); - getHandler().initTabUI(ui, this); -} - -]]> - </script> + <ConsolidateModel id='stepModel' initializer='getModel().getConsolidateModel()'/> <JPanel id='PENDING_content'> - <Table constraints='BorderLayout.CENTER' fill='both' weightx='1' - weighty='1'> + <Table constraints='BorderLayout.CENTER' fill='both' weightx='1' weighty='1'> <row> <cell> - <JButton id='startButton' - onActionPerformed="getHandler().startAction()"/> + <JButton id='startButton' onActionPerformed="getHandler().startAction()"/> </cell> </row> </Table> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/consolidate/ConsolidateUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/consolidate/ConsolidateUIHandler.java index 3661e00..f3f958b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/consolidate/ConsolidateUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/consolidate/ConsolidateUIHandler.java @@ -23,14 +23,13 @@ package fr.ird.observe.application.swing.ui.admin.consolidate; import com.google.common.collect.ImmutableSet; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; -import fr.ird.observe.application.swing.ui.admin.AdminTabUI; import fr.ird.observe.application.swing.ui.admin.AdminTabUIHandler; -import fr.ird.observe.application.swing.ui.admin.AdminUI; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.service.actions.consolidate.ConsolidateActivitySeineDataResult; import fr.ird.observe.services.service.actions.consolidate.ConsolidateDataService; import fr.ird.observe.services.service.actions.consolidate.ConsolidateTripSeineDataRequest; import fr.ird.observe.services.service.actions.consolidate.ConsolidateTripSeineDataResult; +import jaxx.runtime.spi.UIHandler; import jaxx.runtime.swing.wizard.ext.WizardState; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -47,33 +46,23 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.5 */ -public class ConsolidateUIHandler extends AdminTabUIHandler { +public class ConsolidateUIHandler extends AdminTabUIHandler<ConsolidateUI> implements UIHandler<ConsolidateUI> { /** Logger */ private static final Log log = LogFactory.getLog(ConsolidateUIHandler.class); - public ConsolidateUIHandler(AdminTabUI ui) { - super(ui); + @Override + public void afterInit(ConsolidateUI ui) { + super.afterInit(ui); + ui.getStartButton().setText(t("observe.actions.synchro.launch.operation", t(ui.getStep().getOperationLabel()))); } public ConsolidateModel getStepModel() { return model.getConsolidateModel(); } - public void initTabUI(AdminUI ui, ConsolidateUI tabUI) { - - super.initTabUI(ui, tabUI); - - if (log.isDebugEnabled()) { - log.debug(" specialized for [" + tabUI.getStep() + "] for main ui " + ui.getClass().getName() + "@" + System.identityHashCode(ui)); - } - - tabUI.getStartButton().setText(t("observe.actions.synchro.launch.operation", t(tabUI.getStep().getOperationLabel()))); - - } - public void startAction() { - addAdminWorker(((ConsolidateUI) ui).getStartButton().getToolTipText(), this::doAction); + addAdminWorker(ui.getStartButton().getToolTipText(), this::doAction); } public WizardState doAction() throws Exception { @@ -81,9 +70,9 @@ public class ConsolidateUIHandler extends AdminTabUIHandler { log.debug(this); } - getStepModel().setSource(model.getSafeLocalSource(false)); + getStepModel().setSource(model.getConfigModel().getSafeLocalSource(false)); - Set<DataReference<?>> trips = model.getSelectionDataModel().getSelectedData(); + Set<DataReference<?>> trips = model.getSelectDataModel().getSelectionDataModel().getSelectedData(); ImmutableSet<String> tripIds = ImmutableSet.copyOf(trips.stream() .filter(DataReference.newTripSeinePredicate()) .map(DataReference.ID_FUNCTION) @@ -129,5 +118,4 @@ public class ConsolidateUIHandler extends AdminTabUIHandler { return WizardState.SUCCESSED; } - } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportModel.java index bb72f62..044a196 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportModel.java @@ -27,9 +27,11 @@ import fr.ird.observe.application.swing.decoration.decorators.DataReferenceDecor import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferenceDecorator; import fr.ird.observe.application.swing.ui.admin.AdminActionModel; import fr.ird.observe.application.swing.ui.admin.AdminStep; +import fr.ird.observe.application.swing.ui.admin.AdminUIModel; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.seine.TripSeineDto; +import jaxx.runtime.swing.wizard.ext.WizardState; import java.util.ArrayList; import java.util.List; @@ -133,4 +135,8 @@ public class ExportModel extends AdminActionModel { this.insertMissingReferentials = insertMissingReferentials; firePropertyChange("insertMissingReferentials", null, insertMissingReferentials); } + + public boolean validate(AdminUIModel uiModel) { + return uiModel.validate(AdminStep.SELECT_DATA) && uiModel.getStepState(step) == WizardState.SUCCESSED; + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUI.jaxx index f55dea5..97dd25a 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUI.jaxx @@ -32,24 +32,12 @@ jaxx.runtime.swing.wizard.ext.WizardState </import> - <ExportModel id='stepModel' initializer='getModel().getExportModel()'/> - <ExportUIHandler id='handler' constructorParams='this'/> - <!-- le modèles des activités dont on a pu calculé un point gps --> <TripToExportTableModel id='tripsModel' onTableChanged='startAction.setEnabled(tripsModel.hasSelection())'/> <script><![CDATA[ -public ExportUI(AdminUI parentContext) { - super(AdminStep.EXPORT_DATA, parentContext); -} - -@Override -public void initUI(AdminUI ui) { - log.info("for [" + getStep() + "]"); - getHandler().initTabUI(ui, this); -} @Override public void destroy() { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUIHandler.java index 2ac9563..6529e9d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/export/ExportUIHandler.java @@ -30,9 +30,7 @@ import fr.ird.observe.application.swing.decoration.decorators.DataReferenceDecor import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferenceDecorator; import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.admin.AdminStep; -import fr.ird.observe.application.swing.ui.admin.AdminTabUI; import fr.ird.observe.application.swing.ui.admin.AdminTabUIHandler; -import fr.ird.observe.application.swing.ui.admin.AdminUI; import fr.ird.observe.application.swing.ui.admin.config.ConfigUI; import fr.ird.observe.application.swing.ui.tree.selection.SelectionTreeModel; import fr.ird.observe.application.swing.ui.usage.UsagesUI; @@ -51,6 +49,7 @@ import fr.ird.observe.services.service.data.ImportTripResult; import fr.ird.observe.services.service.data.TripManagementService; import fr.ird.observe.services.service.referential.MissingReferentialResult; import fr.ird.observe.services.service.referential.ReferentialService; +import jaxx.runtime.spi.UIHandler; import jaxx.runtime.swing.editor.MyDefaultCellEditor; import jaxx.runtime.swing.wizard.ext.WizardState; import org.apache.commons.collections4.CollectionUtils; @@ -78,34 +77,30 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class ExportUIHandler extends AdminTabUIHandler { +public class ExportUIHandler extends AdminTabUIHandler<ExportUI> implements UIHandler<ExportUI> { /** Logger */ private static final Log log = LogFactory.getLog(ExportUIHandler.class); - public ExportUIHandler(AdminTabUI ui) { - super(ui); - } - - public void initTabUI(AdminUI ui, ExportUI tabUI) { - - super.initTabUI(ui, tabUI); + @Override + public void afterInit(ExportUI ui) { + super.afterInit(ui); if (log.isDebugEnabled()) { - log.debug(" specialized for [" + tabUI.getStep() + "] for main ui " + ui.getClass().getName() + "@" + System.identityHashCode(ui)); + log.debug(" specialized for [" + ui.getStep() + "] for main ui " + parentUI.getClass().getName() + "@" + System.identityHashCode(this.ui)); } - tabUI.getPrepareAction().setText(t("observe.actions.synchro.prepare.operation", t(tabUI.getStep().getOperationLabel()))); - tabUI.getStartAction().setText(t("observe.actions.synchro.launch.operation", t(tabUI.getStep().getOperationLabel()))); + ui.getPrepareAction().setText(t("observe.actions.synchro.prepare.operation", t(ui.getStep().getOperationLabel()))); + ui.getStartAction().setText(t("observe.actions.synchro.launch.operation", t(ui.getStep().getOperationLabel()))); - ConfigUI configabUI = (ConfigUI) ui.getStepUI(AdminStep.CONFIG); + ConfigUI configabUI = (ConfigUI) parentUI.getStepUI(AdminStep.CONFIG); configabUI.getCentralSourceInfoLabel().setText(t("observe.action.config.export.required.write.data")); configabUI.getCentralSourceLabel().setText(t("observe.action.config.export.required.write.data")); // tableau de l'export de données - final JTable table4 = tabUI.getTrips(); + final JTable table4 = ui.getTrips(); table4.setRowHeight(24); UIHelper.fixTableColumnWidth(table4, 0, 20); @@ -158,17 +153,15 @@ public class ExportUIHandler extends AdminTabUIHandler { public void doPrepareAction() { - addAdminWorker(((ExportUI) ui).getPrepareAction().getToolTipText(), this::doPrepareAction0); + addAdminWorker(ui.getPrepareAction().getToolTipText(), this::doPrepareAction0); } public void doStartAction() { - ExportUI tabUI = (ExportUI) ui; - - int[] rows = tabUI.getTripsModel().getSelected(); - tabUI.getModel().getExportModel().setExportDataSelectedIndex(rows); + int[] rows = ui.getTripsModel().getSelected(); + ui.getModel().getExportModel().setExportDataSelectedIndex(rows); - addAdminWorker(tabUI.getStartAction().getToolTipText(), this::doStartAction0); + addAdminWorker(ui.getStartAction().getToolTipText(), this::doStartAction0); } @@ -184,7 +177,7 @@ public class ExportUIHandler extends AdminTabUIHandler { stepModel.setTripSeineDecorator(tripSeineDecorator); stepModel.setTripLonglineDecorator(tripLonglineDecorator); - ObserveSwingDataSource centralSource = model.getSafeCentralSource(false); + ObserveSwingDataSource centralSource = model.getConfigModel().getSafeCentralSource(false); stepModel.setCentralSource(centralSource); @@ -194,7 +187,7 @@ public class ExportUIHandler extends AdminTabUIHandler { return WizardState.FAILED; } - ObserveSwingDataSource source = model.getSafeLocalSource(false); + ObserveSwingDataSource source = model.getConfigModel().getSafeLocalSource(false); stepModel.setSource(source); @@ -209,7 +202,7 @@ public class ExportUIHandler extends AdminTabUIHandler { sendMessage(t("observe.actions.exportData.message.prepare.data")); // récupération des couples (program, marees) sur la base temporaire - SelectionTreeModel selectionModel = model.getSelectionDataModel(); + SelectionTreeModel selectionModel = model.getSelectDataModel().getSelectionDataModel(); stepModel.setData(selectionModel.getSelectedTripEntries()); List<TripEntry> entries = stepModel.getData(); @@ -227,6 +220,7 @@ public class ExportUIHandler extends AdminTabUIHandler { return WizardState.NEED_FIX; } + private WizardState doStartAction0() throws Exception { ExportModel stepModel = model.getExportModel(); @@ -346,6 +340,4 @@ public class ExportUIHandler extends AdminTabUIHandler { return WizardState.SUCCESSED; } - - } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/report/ReportModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/report/ReportModel.java index aa9ba74..3ce26e8 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/report/ReportModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/report/ReportModel.java @@ -21,14 +21,21 @@ */ package fr.ird.observe.application.swing.ui.admin.report; +import fr.ird.observe.application.swing.ObserveResourceManager; +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.application.swing.ui.admin.AdminActionModel; import fr.ird.observe.application.swing.ui.admin.AdminStep; +import fr.ird.observe.application.swing.ui.admin.AdminUIModel; +import fr.ird.observe.application.swing.ui.admin.config.SelectDataModel; +import fr.ird.observe.application.swing.ui.tree.selection.SelectionTreeModel; import fr.ird.observe.services.dto.ObserveModelType; import fr.ird.observe.services.dto.actions.report.Report; import fr.ird.observe.services.service.actions.report.ReportBuilder; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.beans.PropertyChangeListener; import java.io.File; import java.io.IOException; import java.net.URL; @@ -38,6 +45,9 @@ import java.util.TreeMap; import java.util.regex.Pattern; import java.util.stream.Collectors; +import static fr.ird.observe.application.swing.ui.admin.AdminUIModel.SELECTED_TRIP_PROPERTY_NAME; +import static jaxx.runtime.swing.wizard.WizardModel.VALID_STEP_PROPERTY_NAME; + /** * Le modèle utilisé pour la fonctionnalité de génération de rapport. * @@ -270,4 +280,60 @@ public class ReportModel extends AdminActionModel { log.info("Detects " + (reports.size() - 1) + " report(s)."); } } + + public void start(AdminUIModel uiModel) { + + ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); + + File reportFile = ObserveResourceManager.Resource.report.getFile(config.getReportDirectory()); + + if (reportFile.exists()) { + if (log.isInfoEnabled()) { + log.info("Will use report file : " + reportFile); + } + + setReportFile(reportFile); + } else { + if (log.isWarnEnabled()) + log.warn("Default report file " + reportFile + " does not exists."); + } + + // on ecoute la modification du modèle + PropertyChangeListener listenReportModified = evt -> { + ReportModel source = (ReportModel) evt.getSource(); + if (log.isDebugEnabled()) { + log.debug("report model [" + source + "] changed on " + evt.getPropertyName() + ", new value = " + evt.getNewValue()); + } + uiModel.validate(); + }; + + SelectDataModel selectDataModel = uiModel.getSelectDataModel(); + + removePropertyChangeListener(listenReportModified); + addPropertyChangeListener(listenReportModified); + + // on ecoute la modification de la sélection + PropertyChangeListener listenerSelectedDataForReport = evt -> { + + // la modification de la sélection entraine la suppression d'un report sélectionné + setSelectedReport(null); + + // cela entraine aussi la modification de la marée sélectionnée + uiModel.firePropertyChange(SELECTED_TRIP_PROPERTY_NAME, selectDataModel.getSelectedTrip()); + + }; + + SelectionTreeModel selectionDataModel = selectDataModel.getSelectionDataModel(); + selectionDataModel.removePropertyChangeListener(SelectionTreeModel.SELECTED_COUNT, listenerSelectedDataForReport); + selectionDataModel.addPropertyChangeListener(SelectionTreeModel.SELECTED_COUNT, listenerSelectedDataForReport); + + updateReports(); + + } + + public boolean validate(AdminUIModel uiModel) { + // pour acceder a l'onglet des report, il faut que + // l'onglet de sélection des données soit ok + return uiModel.validate(AdminStep.SELECT_DATA); + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/report/ReportUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/report/ReportUI.jaxx index 508b09b..0c359fe 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/report/ReportUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/report/ReportUI.jaxx @@ -38,22 +38,11 @@ javax.swing.JComboBox </import> - <ReportUIHandler id='handler' constructorParams='this'/> - <ReportModel id='stepModel' javaBean='getModel().getReportModel()'/> - <ResultTableModel id='resultModel' - javaBean='getStepModel().getResultModel()'/> + <ResultTableModel id='resultModel' javaBean='getStepModel().getResultModel()'/> <script><![CDATA[ -public ReportUI(AdminUI parentContext) { - super(AdminStep.REPORT, parentContext); -} - -@Override -public void initUI(AdminUI ui) { - getHandler().initTabUI(ui, this); -} public void destroy() { getHandler().destroy(); @@ -71,26 +60,22 @@ public void destroy() { <JToolBar id='toolbar' constraints='BorderLayout.WEST'> <!-- suppression de la sélection du report --> - <JButton id="resetSelectedReport" - onActionPerformed="getHandler().updateSelectedReport(null)"/> + <JButton id="resetSelectedReport" onActionPerformed="getHandler().updateSelectedReport(null)"/> </JToolBar> <!-- selecteur de report --> <JComboBox id='reportSelector' constraints='BorderLayout.CENTER' onItemStateChanged='getHandler().updateSelectedReportFromEvent(event)'/> - <!--onItemStateChanged='if (event.getStateChange() == ItemEvent.SELECTED) getHandler().updateSelectedReport((Report) ((JComboBox)event.getSource()).getSelectedItem());'/>--> - <JScrollPane id='reportDescriptionPane' - constraints='BorderLayout.SOUTH'> + <JScrollPane id='reportDescriptionPane' constraints='BorderLayout.SOUTH'> <JTextArea id='reportDescription'/> </JScrollPane> </JPanel> <!-- selecteur de variables --> - <JScrollPane id='reportVariableSelectorPane' - constraints='BorderLayout.CENTER'> + <JScrollPane id='reportVariableSelectorPane' constraints='BorderLayout.CENTER'> <JPanel id='reportVariableSelectorPanel'> </JPanel> </JScrollPane> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/report/ReportUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/report/ReportUIHandler.java index abfe150..e84bed0 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/report/ReportUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/report/ReportUIHandler.java @@ -26,9 +26,7 @@ import fr.ird.observe.application.swing.ObserveSwingTechnicalException; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.admin.AdminStep; -import fr.ird.observe.application.swing.ui.admin.AdminTabUI; import fr.ird.observe.application.swing.ui.admin.AdminTabUIHandler; -import fr.ird.observe.application.swing.ui.admin.AdminUI; import fr.ird.observe.application.swing.ui.admin.config.ConfigUI; import fr.ird.observe.services.dto.DataDto; import fr.ird.observe.services.dto.DataReference; @@ -39,6 +37,7 @@ import fr.ird.observe.services.dto.actions.report.ReportVariable; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.service.actions.report.ReportService; import jaxx.runtime.context.JAXXInitialContext; +import jaxx.runtime.spi.UIHandler; import jaxx.runtime.swing.editor.bean.BeanComboBox; import jaxx.runtime.swing.wizard.ext.WizardState; import org.apache.commons.logging.Log; @@ -70,7 +69,7 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class ReportUIHandler extends AdminTabUIHandler { +public class ReportUIHandler extends AdminTabUIHandler<ReportUI> implements UIHandler<ReportUI> { public static final String VARIABLE_NAME = "variableName"; @@ -81,22 +80,18 @@ public class ReportUIHandler extends AdminTabUIHandler { private final Runnable revalidateTabUI; - public ReportUIHandler(AdminTabUI ui) { - super(ui); - revalidateTabUI = () -> getUi().revalidate(); + public ReportUIHandler() { + revalidateTabUI = getUi()::revalidate; } - public void initTabUI(AdminUI ui, final ReportUI tabUI) { - - super.initTabUI(ui, tabUI); - + @Override + public void afterInit(ReportUI ui) { + super.afterInit(ui); if (log.isDebugEnabled()) { - log.debug(" specialized for [" + tabUI.getStep() + - "] for main ui " + ui.getClass().getName() + - "@" + System.identityHashCode(ui)); + log.debug(" specialized for [" + ui.getStep() + "] for main ui " + parentUI.getClass().getName() + "@" + System.identityHashCode(this.ui)); } - UIHelper.setLayerUI(tabUI.getContent(), ui.getConfigBlockLayerUI()); + UIHelper.setLayerUI(ui.getContent(), parentUI.getConfigBlockLayerUI()); ReportModel stepModel = getStepModel(); stepModel.addPropertyChangeListener(evt -> { @@ -113,10 +108,10 @@ public class ReportUIHandler extends AdminTabUIHandler { if (ReportModel.REPORTS_PROPERTY_NAME.equals(propertyName)) { List<?> reports = (List<?>) newValue; - onReportsChanged(tabUI, reports); + onReportsChanged(ui, reports); } else if (ReportModel.SELECTED_REPORT_PROPERTY_NAME.equals(propertyName)) { Report report = (Report) newValue; - onSelectedReportChanged(tabUI, source, report); + onSelectedReportChanged(ui, source, report); } else if (ReportModel.VARIABLES_PROPERTY_NAME.equals(propertyName)) { Map<String, Object> variables = (Map<String, Object>) newValue; onVariablesChanges(source, variables); @@ -128,19 +123,19 @@ public class ReportUIHandler extends AdminTabUIHandler { } }); - tabUI.getReportSelector().setRenderer(new DefaultListCellRenderer() { - private static final long serialVersionUID = 1L; + ui.getReportSelector().setRenderer(new DefaultListCellRenderer() { + private static final long serialVersionUID = 1L; - @Override - public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { - if (value == null) { + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + if (value == null) { - // on affiche une message de sélection de report - value = t("observe.message.select.report"); - } - return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); - } - } + // on affiche une message de sélection de report + value = t("observe.message.select.report"); + } + return super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); + } + } ); // ajout du renderer sur le tableau @@ -180,15 +175,15 @@ public class ReportUIHandler extends AdminTabUIHandler { return comp; } }; - tabUI.getResultTable().setDefaultRenderer(Object.class, renderer); - tabUI.getResultTable().setDefaultRenderer(String.class, renderer); + ui.getResultTable().setDefaultRenderer(Object.class, renderer); + ui.getResultTable().setDefaultRenderer(String.class, renderer); // initialisation de l'ui de configuration if (log.isInfoEnabled()) { - log.info("Init extra configuration for " + tabUI.getName()); + log.info("Init extra configuration for " + ui.getName()); } - ConfigUI configUI = (ConfigUI) ui.getStepUI(AdminStep.CONFIG); + ConfigUI configUI = (ConfigUI) parentUI.getStepUI(AdminStep.CONFIG); JAXXInitialContext tx = new JAXXInitialContext().add(configUI).add(this); ReportConfigUI extraConfig = new ReportConfigUI(tx); @@ -314,11 +309,11 @@ public class ReportUIHandler extends AdminTabUIHandler { try { - ObserveSwingDataSource dataSource = getModel().getSafeLocalSource(true); + ObserveSwingDataSource dataSource = getModel().getConfigModel().getSafeLocalSource(true); ReportService reportService = dataSource.newReportService(); - report = reportService.populateVariables(report, getModel().getSelectedTrip().getId()); + report = reportService.populateVariables(report, getModel().getSelectDataModel().getSelectedTrip().getId()); } catch (Exception e) { throw new ObserveSwingTechnicalException("unable to populate report : " + report.getName(), e); @@ -408,7 +403,7 @@ public class ReportUIHandler extends AdminTabUIHandler { Report report = model.getSelectedReport(); - DataReference trip = getModel().getSelectedTrip(); + DataReference trip = getModel().getSelectDataModel().getSelectedTrip(); if (log.isDebugEnabled()) { log.debug("Build result for report [" + report.getName() + "] on " + trip); @@ -423,7 +418,7 @@ public class ReportUIHandler extends AdminTabUIHandler { long startTime = TimeLog.getTime(); - ObserveSwingDataSource dataSource = getModel().getSafeLocalSource(true); + ObserveSwingDataSource dataSource = getModel().getConfigModel().getSafeLocalSource(true); if (!dataSource.isOpen()) { dataSource.open(); } @@ -473,7 +468,7 @@ public class ReportUIHandler extends AdminTabUIHandler { } public void destroy() { - ObserveSwingDataSource dataSource = model.getSafeLocalSource(false); + ObserveSwingDataSource dataSource = model.getConfigModel().getSafeLocalSource(false); if (dataSource.isOpen()) { dataSource.close(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/resume/ShowResumeModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/resume/ShowResumeModel.java new file mode 100644 index 0000000..65a0218 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/resume/ShowResumeModel.java @@ -0,0 +1,21 @@ +package fr.ird.observe.application.swing.ui.admin.resume; + +import fr.ird.observe.application.swing.ui.admin.AdminActionModel; +import fr.ird.observe.application.swing.ui.admin.AdminStep; +import fr.ird.observe.application.swing.ui.admin.AdminUIModel; + +/** + * Created on 28/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class ShowResumeModel extends AdminActionModel { + public ShowResumeModel() { + super(AdminStep.SHOW_RESUME); + } + + public boolean validate(AdminUIModel uiModel) { + return true; + } +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/resume/ShowResumeUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/resume/ShowResumeUI.jaxx index d6d38a6..08610d2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/resume/ShowResumeUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/resume/ShowResumeUI.jaxx @@ -28,6 +28,7 @@ <import> fr.ird.observe.application.swing.ui.UIHelper + fr.ird.observe.application.swing.ui.admin.AdminActionModel fr.ird.observe.application.swing.ui.admin.AdminUI fr.ird.observe.application.swing.ui.admin.AdminStep fr.ird.observe.application.swing.ui.admin.AdminTabUI @@ -35,19 +36,9 @@ java.awt.Dimension </import> - <ShowResumeUIHandler id='handler' constructorParams='this'/> - - <fr.ird.observe.application.swing.ui.admin.AdminActionModel id='stepModel' initializer='null'/> + <ShowResumeModel id='stepModel' initializer='getModel().getShowResumeModel()'/> <script><![CDATA[ -public ShowResumeUI(AdminUI parentContext) { - super(AdminStep.SHOW_RESUME, parentContext); -} - -@Override -public void initUI(AdminUI ui) { - getHandler().initTabUI(ui, this); -} @Override public void destroy() { @@ -75,13 +66,12 @@ public void addMessage(AdminStep step, String text) { </row> <row> <cell> - <JScrollPane id='globalProgressionPane' - columnHeaderView='{globalProgressionTop}'> + <JScrollPane id='globalProgressionPane' columnHeaderView='{globalProgressionTop}'> <JTextArea id='globalProgression'/> <JToolBar id='globalProgressionTop'> <JLabel id='globalProgressionTopLabel'/> <javax.swing.Box.Filler - constructorParams='UIHelper.newMinDimension(), UIHelper.newMinDimension(), UIHelper.newMaxXDimension()'/> + constructorParams='UIHelper.newMinDimension(), UIHelper.newMinDimension(), UIHelper.newMaxXDimension()'/> <JButton id="globalProgressionCopyToClipBoard" onActionPerformed='UIHelper.copyToClipBoard(globalProgression.getText())'/> </JToolBar> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/resume/ShowResumeUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/resume/ShowResumeUIHandler.java index 6244531..66f7d57 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/resume/ShowResumeUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/resume/ShowResumeUIHandler.java @@ -25,10 +25,8 @@ import fr.ird.observe.application.swing.I18nEnumHelper; import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.admin.AdminStep; import fr.ird.observe.application.swing.ui.admin.AdminTabUIHandler; -import fr.ird.observe.application.swing.ui.admin.AdminUI; +import jaxx.runtime.spi.UIHandler; import jaxx.runtime.swing.wizard.ext.WizardState; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import static org.nuiton.i18n.I18n.t; @@ -38,32 +36,14 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class ShowResumeUIHandler extends AdminTabUIHandler { - - /** Logger */ - private static final Log log = LogFactory.getLog(ShowResumeUIHandler.class); - - public ShowResumeUIHandler(ShowResumeUI ui) { - super(ui); - } +public class ShowResumeUIHandler extends AdminTabUIHandler<ShowResumeUI> implements UIHandler<ShowResumeUI> { @Override - public ShowResumeUI getUi() { - return (ShowResumeUI) super.getUi(); - } - - public void initTabUI(AdminUI ui, ShowResumeUI tabUI) { - - super.initTabUI(ui, tabUI); - - if (log.isDebugEnabled()) { - log.debug(" specialized for [" + tabUI.getStep() + "] for main ui " + ui.getClass().getName() + "@" + System.identityHashCode(ui)); - } - - UIHelper.setLayerUI(tabUI.getContent(), null); + public void afterInit(ShowResumeUI ui) { + super.afterInit(ui); + UIHelper.setLayerUI(ui.getContent(), null); } - public void updateText() { StringBuilder buffer = new StringBuilder(); if (!model.isWasStarted()) { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/save/SaveLocalModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/save/SaveLocalModel.java index b7f7eb9..a40d528 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/save/SaveLocalModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/save/SaveLocalModel.java @@ -21,11 +21,16 @@ */ package fr.ird.observe.application.swing.ui.admin.save; +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.application.swing.ui.admin.AdminActionModel; import fr.ird.observe.application.swing.ui.admin.AdminStep; +import fr.ird.observe.application.swing.ui.admin.AdminUIModel; +import jaxx.runtime.swing.wizard.ext.WizardState; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.beans.PropertyChangeListener; import java.io.File; import java.util.HashSet; import java.util.Set; @@ -119,10 +124,10 @@ public class SaveLocalModel extends AdminActionModel { */ public boolean isCanSaveLocal() { boolean validate = !doBackup || - backupFile != null && - !backupFile.exists() && - backupFile.getName().endsWith(".sql.gz") && - backupFile.getParentFile().exists(); + backupFile != null && + !backupFile.exists() && + backupFile.getName().endsWith(".sql.gz") && + backupFile.getParentFile().exists(); if (log.isDebugEnabled()) { log.debug("can save ? " + validate); @@ -137,4 +142,42 @@ public class SaveLocalModel extends AdminActionModel { setLocalSourceNeedSave(true); } + public void start(AdminUIModel uiModel) { + ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); + + File backupfile = config.newBackupDataFile(); + setBackupFile(backupfile); + setDoBackup(true); + + PropertyChangeListener listenSaveLocalChanged = evt -> { + + String propertyName = evt.getPropertyName(); + + if (SaveLocalModel.BACKUP_FILE_PROPERTY_NAME.equals(propertyName)) { + + uiModel.validate(); + return; + } + + if (SaveLocalModel.LOCAL_SOURCE_NEED_SAVE_PROPERTY_NAME.equals(propertyName)) { + boolean localSourceNeedSave = (Boolean) evt.getNewValue(); + if (localSourceNeedSave) { + // l'opération de sauvegarde est obligatoire + uiModel.setStepState(AdminStep.SAVE_LOCAL, WizardState.PENDING); + } + uiModel.validate(); + return; + } + + if (log.isDebugEnabled()) { + log.debug("Skip property " + propertyName); + } + }; + addPropertyChangeListener(listenSaveLocalChanged); + } + + public boolean validate(AdminUIModel uiModel, AdminStep step) { + // valide si l'action a ete executee avec success + return !isDoBackup() || uiModel.getStepState(step) == WizardState.SUCCESSED; + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/save/SaveLocalUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/save/SaveLocalUI.jaxx index 2786e15..1c59b97 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/save/SaveLocalUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/save/SaveLocalUI.jaxx @@ -36,24 +36,9 @@ java.io.File </import> - <SaveLocalUIHandler id='handler' constructorParams='this'/> - <SaveLocalModel id='stepModel' initializer='getModel().getSaveLocalModel()'/> - <CardLayout2Ext id='pendingLayout' - constructorParams='this, "PENDING_content_panel"'/> - - <script><![CDATA[ -public SaveLocalUI(AdminUI parentContext) { - super(AdminStep.SAVE_LOCAL, parentContext); -} - -@Override -public void initUI(AdminUI ui) { - getHandler().initTabUI(ui, this); -} -]]> - </script> + <CardLayout2Ext id='pendingLayout' constructorParams='this, "PENDING_content_panel"'/> <JPanel id='PENDING_content'> <Table constraints='BorderLayout.CENTER' fill='both'> @@ -68,8 +53,7 @@ public void initUI(AdminUI ui) { <cell fill='both' weighty='1' weightx='1'> <JPanel id='PENDING_content_panel'> - <JButton id="continueAction" constraints='"no"' - onActionPerformed='getHandler().skipOperation()'/> + <JButton id="continueAction" constraints='"no"' onActionPerformed='getHandler().skipOperation()'/> <JPanel layout='{new BorderLayout()}' constraints='"do"'> @@ -91,8 +75,7 @@ public void initUI(AdminUI ui) { onKeyReleased='getHandler().changeDirectory(new File(((JTextField)event.getSource()).getText()))'/> </cell> <cell anchor="east"> - <JButton id="backupFileChooseAction" - onActionPerformed="getHandler().chooseBackupFile()"/> + <JButton id="backupFileChooseAction" onActionPerformed="getHandler().chooseBackupFile()"/> </cell> </row> <row> @@ -106,8 +89,7 @@ public void initUI(AdminUI ui) { </row> <row> <cell fill='both' columns="3"> - <JButton id="startAction" - onActionPerformed="getHandler().doStartAction()"/> + <JButton id="startAction" onActionPerformed="getHandler().doStartAction()"/> </cell> </row> </Table> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/save/SaveLocalUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/save/SaveLocalUIHandler.java index f4484d0..88da083 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/save/SaveLocalUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/save/SaveLocalUIHandler.java @@ -25,11 +25,11 @@ import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.admin.AdminStep; import fr.ird.observe.application.swing.ui.admin.AdminTabUIHandler; -import fr.ird.observe.application.swing.ui.admin.AdminUI; import fr.ird.observe.application.swing.ui.admin.synchronize.referential.legacy.SynchronizeModel; +import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeContext; import fr.ird.observe.services.service.sql.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.sql.SqlScriptProducerService; -import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeContext; +import jaxx.runtime.spi.UIHandler; import jaxx.runtime.swing.wizard.ext.WizardState; import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; @@ -47,32 +47,18 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class SaveLocalUIHandler extends AdminTabUIHandler { +public class SaveLocalUIHandler extends AdminTabUIHandler<SaveLocalUI> implements UIHandler<SaveLocalUI> { /** Logger */ private static final Log log = LogFactory.getLog(SaveLocalUIHandler.class); protected ObserveSwingDataSource source; - public SaveLocalUIHandler(SaveLocalUI ui) { - super(ui); - } - @Override - public SaveLocalUI getUi() { - return (SaveLocalUI) super.getUi(); - } - - public void initTabUI(AdminUI ui, SaveLocalUI tabUI) { - - super.initTabUI(ui, tabUI); - - if (log.isDebugEnabled()) { - log.debug(" specialized for [" + tabUI.getStep() + "] for main ui " + ui.getClass().getName() + "@" + System.identityHashCode(ui)); - } - - String message = t("observe.actions.synchro.launch.operation", t(tabUI.getStep().getOperationLabel())); - tabUI.getStartAction().setText(message); + public void afterInit(SaveLocalUI ui) { + super.afterInit(ui); + String message = t("observe.actions.synchro.launch.operation", t(ui.getStep().getOperationLabel())); + ui.getStartAction().setText(message); } @@ -132,7 +118,7 @@ public class SaveLocalUIHandler extends AdminTabUIHandler { log.debug(this); } - source = model.getSafeLocalSource(false); + source = model.getConfigModel().getSafeLocalSource(false); SaveLocalModel stepModel = model.getSaveLocalModel(); if (!stepModel.isLocalSourceNeedSave()) { @@ -182,5 +168,4 @@ public class SaveLocalUIHandler extends AdminTabUIHandler { sendMessage(t("observe.actions.synchro.referential.message.apply.done", new Date())); } - } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroModel.java index 19abcde..b5f5342 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroModel.java @@ -25,12 +25,15 @@ package fr.ird.observe.application.swing.ui.admin.synchronize.data; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.admin.AdminActionModel; import fr.ird.observe.application.swing.ui.admin.AdminStep; +import fr.ird.observe.application.swing.ui.admin.AdminUI; +import fr.ird.observe.application.swing.ui.admin.config.ConfigUI; import fr.ird.observe.application.swing.ui.admin.synchronize.data.task.DataSynchronizeTaskSupport; import fr.ird.observe.application.swing.ui.tree.selection.SelectionTreeModel; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.swing.DefaultListModel; +import javax.swing.border.TitledBorder; /** * Created on 02/08/16. @@ -152,4 +155,12 @@ public class DataSynchroModel extends AdminActionModel { } } + + public void start(AdminUI ui) { + + ConfigUI configUI = (ConfigUI) ui.getStepUI(AdminStep.CONFIG); + configUI.getLocalSourceConfig().setBorder(new TitledBorder(ui.getModel().getConfigModel().getLocalSourceLabel())); + configUI.getCentralSourceConfig().setBorder(new TitledBorder(ui.getModel().getConfigModel().getCentralSourceLabel())); + + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroUI.jaxx index 203d32e..2c01b63 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroUI.jaxx @@ -36,22 +36,8 @@ </import> - <DataSynchroUIHandler id='handler' constructorParams='this'/> - <DataSynchroModel id='stepModel' initializer='getModel().getDataSynchroModel()'/> - <script><![CDATA[ -public DataSynchroUI(AdminUI parentContext) { - super(AdminStep.DATA_SYNCHRONIZE, parentContext); -} - -public void initUI(AdminUI ui) { - getHandler().initTabUI(ui, this); -} - -]]> - </script> - <JPanel id='PENDING_content'> <Table constraints='BorderLayout.CENTER' fill='both' weightx='1' weighty='1'> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroUIHandler.java index 5ac903a..28a7937 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/data/DataSynchroUIHandler.java @@ -28,7 +28,6 @@ import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferen import fr.ird.observe.application.swing.ui.admin.AdminStep; import fr.ird.observe.application.swing.ui.admin.AdminTabUI; import fr.ird.observe.application.swing.ui.admin.AdminTabUIHandler; -import fr.ird.observe.application.swing.ui.admin.AdminUI; import fr.ird.observe.application.swing.ui.admin.config.ConfigUI; import fr.ird.observe.application.swing.ui.admin.synchronize.data.task.CopyToLeftDataSynchronizeTask; import fr.ird.observe.application.swing.ui.admin.synchronize.data.task.CopyToRightDataSynchronizeTask; @@ -48,9 +47,8 @@ import fr.ird.observe.services.service.data.ExportTripResult; import fr.ird.observe.services.service.data.ImportTripRequest; import fr.ird.observe.services.service.data.ImportTripResult; import fr.ird.observe.services.service.data.TripManagementService; +import jaxx.runtime.spi.UIHandler; import jaxx.runtime.swing.wizard.ext.WizardState; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import javax.swing.DefaultListModel; import javax.swing.border.TitledBorder; @@ -66,40 +64,14 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 5.0 */ -public class DataSynchroUIHandler extends AdminTabUIHandler { - - /** Logger */ - private static final Log log = LogFactory.getLog(DataSynchroUIHandler.class); - - public DataSynchroUIHandler(DataSynchroUI ui) { - super(ui); - } - - public DataSynchroModel getStepModel() { - return model.getDataSynchroModel(); - } +public class DataSynchroUIHandler extends AdminTabUIHandler<DataSynchroUI> implements UIHandler<DataSynchroUI> { @Override - public DataSynchroUI getUi() { - return (DataSynchroUI) super.getUi(); - } - - @Override - public void updateState(AdminTabUI ui, WizardState newState) { - super.updateState(ui, newState); - } - - public void initTabUI(AdminUI ui, DataSynchroUI tabUI) { - - super.initTabUI(ui, tabUI); - - if (log.isDebugEnabled()) { - log.debug(" specialized for [" + tabUI.getStep() + "] for main ui " + ui.getClass().getName() + "@" + System.identityHashCode(ui)); - } - + public void afterInit(DataSynchroUI ui) { + super.afterInit(this.ui); DataSynchroModel stepModel = getStepModel(); - SelectionTree leftTree = tabUI.getLeftTree(); + SelectionTree leftTree = ui.getLeftTree(); SelectionTreeModel leftSelectionDataModel = leftTree.getTreeModel(); stepModel.setLeftSelectionDataModel(leftSelectionDataModel); leftSelectionDataModel.setLoadLongline(true); @@ -108,7 +80,7 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { leftSelectionDataModel.setShowEmptyTrips(false); - SelectionTree rightTree = tabUI.getRightTree(); + SelectionTree rightTree = ui.getRightTree(); SelectionTreeModel rightSelectionDataModel = rightTree.getTreeModel(); stepModel.setRightSelectionDataModel(rightSelectionDataModel); rightSelectionDataModel.setLoadLongline(true); @@ -124,8 +96,8 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { SelectionTreeModel model = (SelectionTreeModel) evt.getSource(); boolean withDataSelected = !model.isSelectionEmpty(); - tabUI.getCopyToRight().setEnabled(withDataSelected); - tabUI.getDeleteFromLeft().setEnabled(withDataSelected); + ui.getCopyToRight().setEnabled(withDataSelected); + ui.getDeleteFromLeft().setEnabled(withDataSelected); }); stepModel.getRightSelectionDataModel().addPropertyChangeListener(evt -> { @@ -133,13 +105,22 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { SelectionTreeModel model = (SelectionTreeModel) evt.getSource(); boolean withDataSelected = !model.isSelectionEmpty(); - tabUI.getCopyToLeft().setEnabled(withDataSelected); - tabUI.getDeleteFromRight().setEnabled(withDataSelected); + ui.getCopyToLeft().setEnabled(withDataSelected); + ui.getDeleteFromRight().setEnabled(withDataSelected); }); } + public DataSynchroModel getStepModel() { + return model.getDataSynchroModel(); + } + + @Override + public void updateState(AdminTabUI ui, WizardState newState) { + super.updateState(ui, newState); + } + public void doStartAction() { addAdminWorker(getUi().getStartAction().getToolTipText(), this::doStartAction0); @@ -225,25 +206,25 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { DataSynchroModel stepModel = getStepModel(); ConfigUI configUI = (ConfigUI) parentUI.getStepUI(AdminStep.CONFIG); - ObserveSwingDataSource leftSource = getModel().getSafeLocalSource(true); + ObserveSwingDataSource leftSource = getModel().getConfigModel().getSafeLocalSource(true); stepModel.setLeftSource(leftSource); - ObserveSwingDataSource rightSource = getModel().getSafeCentralSource(true); + ObserveSwingDataSource rightSource = getModel().getConfigModel().getSafeCentralSource(true); stepModel.setRightSource(rightSource); - tabUI.getLeftTreePane().setBorder(new TitledBorder(getModel().getLocalSourceModel().getLabel())); + tabUI.getLeftTreePane().setBorder(new TitledBorder(getModel().getConfigModel().getLocalSourceModel().getLabel())); stepModel.populateLeftSelectionModel(); // updateSelectionModel(tabUI.getLeftTree(), leftSource); sendMessage(t("observe.actions.synchro.referential.message.data.leftData.loaded")); - configUI.getLocalSourceConfig().setBorder(new TitledBorder(getModel().getLocalSourceLabel())); + configUI.getLocalSourceConfig().setBorder(new TitledBorder(getModel().getConfigModel().getLocalSourceLabel())); - tabUI.getRightTreePane().setBorder(new TitledBorder(getModel().getCentralSourceModel().getLabel())); + tabUI.getRightTreePane().setBorder(new TitledBorder(getModel().getConfigModel().getCentralSourceModel().getLabel())); stepModel.populateRightSelectionModel(); // updateSelectionModel(tabUI.getRightTree(), rightSource); sendMessage(t("observe.actions.synchro.referential.message.data.rightData.loaded")); - configUI.getCentralSourceConfig().setBorder(new TitledBorder(getModel().getCentralSourceLabel())); + configUI.getCentralSourceConfig().setBorder(new TitledBorder(getModel().getConfigModel().getCentralSourceLabel())); return WizardState.NEED_FIX; @@ -360,5 +341,4 @@ public class DataSynchroUIHandler extends AdminTabUIHandler { return WizardState.SUCCESSED; } - } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/legacy/SynchronizeModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/legacy/SynchronizeModel.java index 36d0359..5410c75 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/legacy/SynchronizeModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/legacy/SynchronizeModel.java @@ -22,6 +22,7 @@ package fr.ird.observe.application.swing.ui.admin.synchronize.referential.legacy; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; +import fr.ird.observe.application.swing.ui.admin.AdminUIModel; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeCallbackResults; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeContext; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeEngine; @@ -29,6 +30,7 @@ import fr.ird.observe.services.service.actions.synchro.referential.legacy.Unidir import fr.ird.observe.application.swing.ui.admin.AdminActionModel; import fr.ird.observe.application.swing.ui.admin.AdminStep; import jaxx.runtime.swing.model.JaxxDefaultListModel; +import jaxx.runtime.swing.wizard.ext.WizardState; import javax.swing.DefaultListSelectionModel; import java.util.List; @@ -121,4 +123,8 @@ public class SynchronizeModel extends AdminActionModel { obsoleteReferencesSelectionModel.clearSelection(); obsoleteReferences.clear(); } + + public boolean validate(AdminUIModel uiModel, AdminStep step) { + return uiModel.getStepState(step) == WizardState.SUCCESSED; + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/legacy/SynchronizeUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/legacy/SynchronizeUI.jaxx index d522583..2bd538e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/legacy/SynchronizeUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/legacy/SynchronizeUI.jaxx @@ -38,21 +38,11 @@ <!-- un etat pour savoir quand on peut activer l'action apply --> <Boolean id='canApply' javaBean='false'/> - <SynchronizeUIHandler id='handler' constructorParams='this'/> - <SynchronizeModel id='stepModel' initializer='getModel().getSynchronizeReferentielModel()'/> <CardLayout2 id='safeRefsPanelLayout'/> <script><![CDATA[ -public SynchronizeUI(AdminUI parentContext) { - super(AdminStep.SYNCHRONIZE, parentContext); -} - -@Override -public void initUI(AdminUI ui) { - getHandler().initTabUI(ui, this); -} @Override public void destroy() { @@ -74,8 +64,7 @@ protected void apply() { </script> <JPanel id='PENDING_content'> - <Table constraints='BorderLayout.CENTER' fill='both' weightx='1' - weighty='1'> + <Table constraints='BorderLayout.CENTER' fill='both' weightx='1' weighty='1'> <row> <cell> <JButton id='startAction' onActionPerformed="getHandler().doStartAction()"/> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/legacy/SynchronizeUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/legacy/SynchronizeUIHandler.java index fe17c3d..698327a 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/legacy/SynchronizeUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/legacy/SynchronizeUIHandler.java @@ -22,9 +22,11 @@ package fr.ird.observe.application.swing.ui.admin.synchronize.referential.legacy; import com.google.common.collect.ImmutableSet; +import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferenceDecorator; -import fr.ird.observe.application.swing.db.ObserveSwingDataSource; +import fr.ird.observe.application.swing.ui.admin.AdminStep; +import fr.ird.observe.application.swing.ui.admin.AdminTabUIHandler; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiffsEngine; @@ -35,9 +37,7 @@ import fr.ird.observe.services.service.actions.synchro.referential.legacy.Unidir import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeEngine; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeLocalService; import fr.ird.observe.services.service.actions.synchro.referential.legacy.UnidirectionalReferentialSynchronizeResult; -import fr.ird.observe.application.swing.ui.admin.AdminStep; -import fr.ird.observe.application.swing.ui.admin.AdminTabUIHandler; -import fr.ird.observe.application.swing.ui.admin.AdminUI; +import jaxx.runtime.spi.UIHandler; import jaxx.runtime.swing.CardLayout2; import jaxx.runtime.swing.editor.bean.BeanComboBox; import jaxx.runtime.swing.model.JaxxDefaultListModel; @@ -66,35 +66,21 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class SynchronizeUIHandler extends AdminTabUIHandler { +public class SynchronizeUIHandler extends AdminTabUIHandler<SynchronizeUI> implements UIHandler<SynchronizeUI> { /** Logger */ private static final Log log = LogFactory.getLog(SynchronizeUIHandler.class); - public SynchronizeUIHandler(SynchronizeUI ui) { - super(ui); - } - public SynchronizeModel getStepModel() { return model.getSynchronizeReferentielModel(); } @Override - public SynchronizeUI getUi() { - return (SynchronizeUI) super.getUi(); - } + public void afterInit(SynchronizeUI ui) { + super.afterInit(ui); + ui.getStartAction().setText(t("observe.actions.synchro.referential.legacy.launch.operation", t(ui.getStep().getOperationLabel()))); - public void initTabUI(AdminUI ui, SynchronizeUI tabUI) { - - super.initTabUI(ui, tabUI); - - if (log.isDebugEnabled()) { - log.debug(" specialized for [" + tabUI.getStep() + "] for main ui " + ui.getClass().getName() + "@" + System.identityHashCode(ui)); - } - - tabUI.getStartAction().setText(t("observe.actions.synchro.referential.legacy.launch.operation", t(tabUI.getStep().getOperationLabel()))); - - DefaultListSelectionModel obsoleteReferenceSelectionModel = tabUI.getModel().getSynchronizeReferentielModel().getObsoleteReferencesSelectionModel(); + DefaultListSelectionModel obsoleteReferenceSelectionModel = ui.getModel().getSynchronizeReferentielModel().getObsoleteReferencesSelectionModel(); obsoleteReferenceSelectionModel.addListSelectionListener(this::updateSelectedObsoleteEntity); obsoleteReferenceSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); @@ -116,10 +102,10 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { // on cree les sources de données - ObserveSwingDataSource source = model.getSafeLocalSource(false); + ObserveSwingDataSource source = model.getConfigModel().getSafeLocalSource(false); stepModel.setSource(source); - ObserveSwingDataSource centralSource = model.getSafeCentralSource(false); + ObserveSwingDataSource centralSource = model.getConfigModel().getSafeCentralSource(false); stepModel.setCentralSource(centralSource); openSource(source); @@ -223,8 +209,6 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { return; } - SynchronizeUI ui = getUi(); - int row = getStepModel().getObsoleteReferencesSelectionModel().getMinSelectionIndex(); JaxxDefaultListModel<ObsoleteReferentialReference> obsoleteReferences = getStepModel().getObsoleteReferences(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/ReferentialSynchroModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/ReferentialSynchroModel.java index 7b3d242..4606e91 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/ReferentialSynchroModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/ReferentialSynchroModel.java @@ -22,9 +22,11 @@ package fr.ird.observe.application.swing.ui.admin.synchronize.referential.ng; * #L% */ +import fr.ird.observe.application.swing.I18nEnumHelper; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.admin.AdminActionModel; import fr.ird.observe.application.swing.ui.admin.AdminStep; +import fr.ird.observe.application.swing.ui.admin.AdminUI; import fr.ird.observe.application.swing.ui.admin.synchronize.referential.ReferentialSynchronizeMode; import fr.ird.observe.application.swing.ui.admin.synchronize.referential.ng.task.AddReferentialSynchronizeTask; import fr.ird.observe.application.swing.ui.admin.synchronize.referential.ng.task.DeleteReferentialSynchronizeTask; @@ -40,9 +42,12 @@ import fr.ird.observe.services.service.actions.synchro.referential.ng.Referentia import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import java.beans.PropertyChangeListener; import java.util.ArrayList; import java.util.List; +import static org.nuiton.i18n.I18n.t; + /** * Created on 02/08/16. * @@ -318,4 +323,42 @@ public class ReferentialSynchroModel extends AdminActionModel { ReferentialSynchronizeService rightService = rightSource.newReferentialSynchronizeService(); return new ReferentialSynchronizeServiceEngine(leftService, rightService); } + + public void start(AdminUI ui) { + + PropertyChangeListener listenReferentialConfigChanged = evt -> { + + + if (ui.getModel().isWasStarted()) { + + // on ne propage plus rien (il n'y a plus de configuration possible...) + if (log.isDebugEnabled()) { + log.debug("Stop propagation, was started... " + evt.getPropertyName()); + } + return; + } + + if (ReferentialSynchroModel.SYNCHRONIZE_MODE_PROPERTY_NAME.equals(evt.getPropertyName())) { + + ui.getModel().validate(); + + } + + }; + + removePropertyChangeListener(listenReferentialConfigChanged); + addPropertyChangeListener(listenReferentialConfigChanged); + + addPropertyChangeListener(ReferentialSynchroModel.SYNCHRONIZE_MODE_PROPERTY_NAME, evt -> { + + ReferentialSynchronizeMode newValue = (ReferentialSynchronizeMode) evt.getNewValue(); + + if (ui.getTabs().getComponentCount() > 1 && newValue != null) { + ui.getTabs().setTitleAt(1, t("observe.actions.synchro.referential.withMode", I18nEnumHelper.getLabel(newValue))); + } + + }); + + setSynchronizeMode(ReferentialSynchronizeMode.FROM_LEFT_TO_RIGHT); + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/ReferentialSynchroUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/ReferentialSynchroUI.jaxx index 1ec9b95..586a5db 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/ReferentialSynchroUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/ReferentialSynchroUI.jaxx @@ -43,8 +43,6 @@ </import> - <ReferentialSynchroUIHandler id='handler' constructorParams='this'/> - <ReferentialSynchroModel id='stepModel' javaBean='getModel().getReferentialSynchroModel()'/> <ReferentialSynchronizeTreeModel id="leftTreeModel" javaBean="getStepModel().getLeftTreeModel()"/> @@ -54,13 +52,6 @@ </JPanel> <script><![CDATA[ -public ReferentialSynchroUI(AdminUI parentContext) { - super(AdminStep.REFERENTIAL_SYNCHRONIZE, parentContext); -} - -public void initUI(AdminUI ui) { - getHandler().initTabUI(ui, this); -} @Override public void destroy() { @@ -76,7 +67,7 @@ public void destroy() { weighty='1'> <row> <cell> - <JButton id='startAction' onActionPerformed="getHandler().doStartAction()"/> + <JButton id='startAction' onActionPerformed="handler.doStartAction()"/> </cell> </row> </Table> @@ -86,7 +77,7 @@ public void destroy() { <Table id='contentNorth' fill="both" weighty="1"> <row> <cell weightx="0.5"> - <JScrollPane id='leftTreePane' columnHeaderView='{leftTreeHeader}'> + <JScrollPane id='leftTreePane' columnHeaderView='{leftTreeHeader}'> <JTree id='leftTree'/> <BeanTreeHeader id='leftTreeHeader' tree='{leftTree}'/> </JScrollPane> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/ReferentialSynchroUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/ReferentialSynchroUIHandler.java index 3e1f712..9917a8b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/ReferentialSynchroUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/synchronize/referential/ng/ReferentialSynchroUIHandler.java @@ -26,7 +26,6 @@ import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.admin.AdminStep; import fr.ird.observe.application.swing.ui.admin.AdminTabUIHandler; -import fr.ird.observe.application.swing.ui.admin.AdminUI; import fr.ird.observe.application.swing.ui.admin.config.ConfigUI; import fr.ird.observe.application.swing.ui.admin.synchronize.referential.ReferentialSynchronizeMode; import fr.ird.observe.application.swing.ui.admin.synchronize.referential.ng.tree.ReferentialSynchronizeTreeModel; @@ -34,10 +33,9 @@ import fr.ird.observe.application.swing.ui.admin.synchronize.referential.ng.tree import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiffService; import fr.ird.observe.services.service.actions.synchro.referential.diff.ReferentialSynchronizeDiffsEngine; import jaxx.runtime.context.JAXXInitialContext; +import jaxx.runtime.spi.UIHandler; import jaxx.runtime.swing.wizard.ext.WizardState; import org.apache.commons.lang3.tuple.Pair; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import javax.swing.JScrollPane; import javax.swing.JTree; @@ -53,15 +51,11 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 5.0 */ -public class ReferentialSynchroUIHandler extends AdminTabUIHandler { - - /** Logger */ - private static final Log log = LogFactory.getLog(ReferentialSynchroUIHandler.class); +public class ReferentialSynchroUIHandler extends AdminTabUIHandler<ReferentialSynchroUI> implements UIHandler<ReferentialSynchroUI> { private final TreeSelectionListener treeSelectionListener; - public ReferentialSynchroUIHandler(ReferentialSynchroUI ui) { - super(ui); + public ReferentialSynchroUIHandler() { this.treeSelectionListener = evt -> updateEnabledActions(); } @@ -70,19 +64,10 @@ public class ReferentialSynchroUIHandler extends AdminTabUIHandler { } @Override - public ReferentialSynchroUI getUi() { - return (ReferentialSynchroUI) super.getUi(); - } - - public void initTabUI(AdminUI ui, ReferentialSynchroUI tabUI) { + public void afterInit(ReferentialSynchroUI ui) { + super.afterInit(this.ui); - super.initTabUI(ui, tabUI); - - if (log.isDebugEnabled()) { - log.debug(" specialized for [" + tabUI.getStep() + "] for main ui " + ui.getClass().getName() + "@" + System.identityHashCode(ui)); - } - - ConfigUI configUI = (ConfigUI) ui.getStepUI(AdminStep.CONFIG); + ConfigUI configUI = (ConfigUI) parentUI.getStepUI(AdminStep.CONFIG); JAXXInitialContext tx = new JAXXInitialContext().add(configUI).add(this); ReferentialSynchroConfigUI extraConfig = new ReferentialSynchroConfigUI(tx); configUI.getExtraConfig().add(extraConfig); @@ -99,10 +84,10 @@ public class ReferentialSynchroUIHandler extends AdminTabUIHandler { ReferentialSynchroModel stepModel = getStepModel(); - ObserveSwingDataSource leftSource = getModel().getSafeLocalSource(true); + ObserveSwingDataSource leftSource = getModel().getConfigModel().getSafeLocalSource(true); stepModel.setLeftSource(leftSource); - ObserveSwingDataSource rightSource = getModel().getSafeCentralSource(true); + ObserveSwingDataSource rightSource = getModel().getConfigModel().getSafeCentralSource(true); stepModel.setRightSource(rightSource); ReferentialSynchronizeDiffService leftDiffSynchronizeService = leftSource.newReferentialSynchronizeDiffService(); @@ -123,17 +108,17 @@ public class ReferentialSynchroUIHandler extends AdminTabUIHandler { initTree(ui.getLeftTree(), ui.getLeftTreePane(), stepModel.getLeftTreeModel(), - getModel().getLocalSourceModel().getLabel(), + getModel().getConfigModel().getLocalSourceModel().getLabel(), t("observe.actions.synchro.referential.message.referential.leftData.loaded")); initTree(ui.getRightTree(), ui.getRightTreePane(), stepModel.getRightTreeModel(), - getModel().getCentralSourceModel().getLabel(), + getModel().getConfigModel().getCentralSourceModel().getLabel(), t("observe.actions.synchro.referential.message.referential.rightData.loaded")); return WizardState.NEED_FIX; - + } private void updateEnabledActions() { @@ -204,10 +189,9 @@ public class ReferentialSynchroUIHandler extends AdminTabUIHandler { } ConfigUI configUI = (ConfigUI) parentUI.getStepUI(AdminStep.CONFIG); - configUI.getLocalSourceConfig().setBorder(new TitledBorder(getModel().getLocalSourceLabel())); - configUI.getCentralSourceConfig().setBorder(new TitledBorder(getModel().getCentralSourceLabel())); + configUI.getLocalSourceConfig().setBorder(new TitledBorder(getModel().getConfigModel().getLocalSourceLabel())); + configUI.getCentralSourceConfig().setBorder(new TitledBorder(getModel().getConfigModel().getCentralSourceLabel())); } - } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateModel.java index a5a8292..d25676f 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateModel.java @@ -22,22 +22,28 @@ package fr.ird.observe.application.swing.ui.admin.validate; import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Lists; import com.google.common.collect.Sets; +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.application.swing.ui.admin.AdminActionModel; import fr.ird.observe.application.swing.ui.admin.AdminStep; +import fr.ird.observe.application.swing.ui.admin.AdminUIModel; import fr.ird.observe.application.swing.validation.ValidationModelMode; import fr.ird.observe.services.dto.AbstractReference; import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.service.actions.validate.ValidateResultForDto; import fr.ird.observe.services.service.actions.validate.ValidateResultForDtoType; +import fr.ird.observe.services.service.actions.validate.ValidateService; import fr.ird.observe.services.service.actions.validate.ValidatorDto; import fr.ird.observe.services.service.actions.validate.ValidatorHelper; +import jaxx.runtime.swing.wizard.ext.WizardState; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.validator.NuitonValidatorScope; +import java.beans.PropertyChangeListener; import java.io.File; +import java.util.ArrayList; import java.util.Date; import java.util.EnumSet; import java.util.List; @@ -53,18 +59,11 @@ import java.util.TreeMap; */ public class ValidateModel extends AdminActionModel { - public static final String PROPERTY_ALL_CONTEXT_NAMES = "allContextNames"; - public static final String PROPERTY_CONTEXT_NAME = "contextName"; - public static final String PROPERTY_SCOPES = "scopes"; - public static final String PROPERTY_MODEL_MODE = "modelMode"; - public static final String PROPERTY_GENERATE_REPORT = "generateReport"; - public static final String PROPERTY_REPORT_FILE = "reportFile"; - public static final String PROPERTY_MESSAGES = "messages"; /** le pattern du fichier de rapport après validation */ @@ -95,7 +94,7 @@ public class ValidateModel extends AdminActionModel { protected Set<ValidatorDto> validators; /** le dictionnaire des paths d'entites detectees */ - protected Map<Class<? extends IdDto>, ValidateResultForDtoType> messages; + protected Map<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> messages; public ValidateModel() { super(AdminStep.VALIDATE); @@ -177,11 +176,11 @@ public class ValidateModel extends AdminActionModel { return validators; } - public Map<Class<? extends IdDto>, ValidateResultForDtoType> getMessages() { + public Map<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> getMessages() { return messages; } - public void setMessages(Map<Class<? extends IdDto>, ValidateResultForDtoType> messages) { + public void setMessages(Map<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> messages) { Object oldValue = this.messages; this.messages = messages; firePropertyChange(PROPERTY_MESSAGES, oldValue, messages); @@ -201,13 +200,13 @@ public class ValidateModel extends AdminActionModel { public List<AbstractReference> getMessagesDto(Class dtoType) { - List<AbstractReference> result = Lists.newArrayList(); + List<AbstractReference> result = new ArrayList<>(); if (messages != null) { - ValidateResultForDtoType resultForDtoType = messages.get(dtoType); + ValidateResultForDtoType<?> resultForDtoType = messages.get(dtoType); - ImmutableSet<ValidateResultForDto> validateResultForDto = resultForDtoType.getValidateResultForDto(); + ImmutableSet<? extends ValidateResultForDto<?>> validateResultForDto = resultForDtoType.getValidateResultForDto(); for (ValidateResultForDto resultForDto : validateResultForDto) { @@ -217,13 +216,14 @@ public class ValidateModel extends AdminActionModel { return result; } - public ValidateResultForDto getMessages(AbstractReference referenceDto) { + public <D extends IdDto> ValidateResultForDto<D> getMessages(AbstractReference<D> referenceDto) { - ValidateResultForDto result = null; + ValidateResultForDto<D> result = null; if (messages != null) { - ValidateResultForDtoType resultForDtoType = messages.get(referenceDto.getType()); + Class<D> type = referenceDto.getType(); + ValidateResultForDtoType<D> resultForDtoType = (ValidateResultForDtoType) messages.get(type); result = resultForDtoType.getValidateResult(referenceDto); @@ -255,7 +255,38 @@ public class ValidateModel extends AdminActionModel { } } - public ImmutableSet<ValidatorDto> getAllValidators() { - return allValidators; + public void start(AdminUIModel uiModel) { + + ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); + + PropertyChangeListener listenValidationModified = evt -> { + ValidateModel source = (ValidateModel) evt.getSource(); + if (log.isDebugEnabled()) { + log.debug("validation model [" + source + "] changed on " + evt.getPropertyName() + ", new value = " + evt.getNewValue()); + } + uiModel.validate(); + if (log.isDebugEnabled()) { + log.debug("nb validators = " + source.getValidators().size() + ); + } + }; + + addPropertyChangeListener(listenValidationModified); + addScope(NuitonValidatorScope.ERROR); + setModelMode(ValidationModelMode.DATA); + setContextName(ValidateService.SERVICE_VALIDATION_CONTEXT); + setGenerateReport(true); + if (!config.getValidationReportDirectory().exists()) { + boolean b = config.getValidationReportDirectory().mkdirs(); + if (!b) { + throw new RuntimeException("Could not create directory " + config.getValidationReportDirectory()); + } + } + File reportFile = new File(config.getValidationReportDirectory(), getDefaultReportFilename()); + setReportFile(reportFile); + } + + public boolean validate(AdminUIModel uiModel) { + return uiModel.validate(AdminStep.SELECT_DATA) && uiModel.getStepState(step) == WizardState.SUCCESSED; } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateUI.jaxx index c40b605..9b44fab 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateUI.jaxx @@ -45,8 +45,6 @@ </import> - <ValidateUIHandler id='handler' constructorParams='this'/> - <ValidateModel id='stepModel' initializer='getModel().getValidateModel()'/> <DefaultListModel id='typeModel' genericType='Class<?>'/> @@ -56,35 +54,25 @@ <ValidationMessageTableModel id='messagesModel'/> <DefaultListSelectionModel id='typeSelectionModel' - onValueChanged='if (!event.getValueIsAdjusting() && !typeSelectionModel.isSelectionEmpty()) { getHandler().updateSelectedType(); }'/> + onValueChanged='if (!event.getValueIsAdjusting() && !typeSelectionModel.isSelectionEmpty()) { handler.updateSelectedType(); }'/> <DefaultListSelectionModel id='refSelectionModel' - onValueChanged='if (!event.getValueIsAdjusting() && !refSelectionModel.isSelectionEmpty()) { getHandler().updateSelectedRef(); }'/> + onValueChanged='if (!event.getValueIsAdjusting() && !refSelectionModel.isSelectionEmpty()) { handler.updateSelectedRef(); }'/> <script><![CDATA[ -public ValidateUI(AdminUI parentContext) { - super(AdminStep.VALIDATE, parentContext); -} - -@Override -public void initUI(AdminUI ui) { - getHandler().initTabUI(ui, this); -} @Override public void updateState(WizardState newState) { - getHandler().updateState(this, newState); + handler.updateState(this, newState); } ]]> </script> <JPanel id='PENDING_content'> - <Table constraints='BorderLayout.CENTER' fill='both' weightx='1' - weighty='1'> + <Table constraints='BorderLayout.CENTER' fill='both' weightx='1' weighty='1'> <row> <cell> - <JButton id='startButton' - onActionPerformed="getHandler().startAction()"/> + <JButton id='startButton' onActionPerformed="handler.startAction()"/> </cell> </row> </Table> @@ -98,10 +86,10 @@ public void updateState(WizardState newState) { <JXTitledPanel id='navigationView'> <JSplitPane id='splitpane2'> <JScrollPane> - <JList id='typeList'/> + <JList id='typeList' genericType="Class<?>"/> </JScrollPane> <JScrollPane> - <JList id='refList'/> + <JList id='refList' genericType='AbstractReference<?>'/> </JScrollPane> </JSplitPane> </JXTitledPanel> @@ -120,8 +108,7 @@ public void updateState(WizardState newState) { <JLabel id='resumeLabel' constraints='BorderLayout.CENTER'/> <JPanel constraints='BorderLayout.SOUTH' layout='{new BorderLayout()}'> - <JButton id='saveReport' constraints='BorderLayout.CENTER' - onActionPerformed='getHandler().saveReport()'/> + <JButton id='saveReport' constraints='BorderLayout.CENTER' onActionPerformed='handler.saveReport()'/> </JPanel> </JPanel> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateUIHandler.java index 91857ce..1188435 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/validate/ValidateUIHandler.java @@ -24,16 +24,13 @@ package fr.ird.observe.application.swing.ui.admin.validate; import com.google.common.base.Charsets; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; -import com.google.common.collect.Maps; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.decoration.DecoratorService; import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.admin.AdminStep; -import fr.ird.observe.application.swing.ui.admin.AdminTabUI; import fr.ird.observe.application.swing.ui.admin.AdminTabUIHandler; -import fr.ird.observe.application.swing.ui.admin.AdminUI; import fr.ird.observe.application.swing.ui.admin.config.ConfigUI; import fr.ird.observe.application.swing.ui.admin.config.SelectDataUI; import fr.ird.observe.application.swing.ui.tree.selection.SelectionTreeModel; @@ -56,6 +53,7 @@ import fr.ird.observe.services.service.actions.validate.ValidationMessage; import fr.ird.observe.services.service.actions.validate.ValidatorDto; import jaxx.runtime.SwingUtil; import jaxx.runtime.context.JAXXInitialContext; +import jaxx.runtime.spi.UIHandler; import jaxx.runtime.swing.wizard.ext.WizardState; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; @@ -73,6 +71,7 @@ import java.io.IOException; import java.util.Collections; import java.util.Date; import java.util.EnumSet; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -81,20 +80,15 @@ import java.util.stream.Collectors; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; -//import jaxx.runtime.validator.swing.SwingValidator; - /** * Le controleur des onglets. * * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class ValidateUIHandler extends AdminTabUIHandler { - -// public static final String[] EMPTY_STRING_ARRAY = new String[]{}; +public class ValidateUIHandler extends AdminTabUIHandler<ValidateUI> implements UIHandler<ValidateUI> { - public static final String LINE = - "--------------------------------------------------------------------------------"; + public static final String LINE = "--------------------------------------------------------------------------------"; /** Logger */ private static final Log log = LogFactory.getLog(ValidateUIHandler.class); @@ -105,19 +99,11 @@ public class ValidateUIHandler extends AdminTabUIHandler { protected Decorator<ProgramDto> dProgram; - public ValidateUIHandler(AdminTabUI ui) { - super(ui); - } - - public void initTabUI(AdminUI ui, ValidateUI tabUI) { - - super.initTabUI(ui, tabUI); - - if (log.isDebugEnabled()) { - log.debug(" specialized for [" + tabUI.getStep() + "] for main ui " + ui.getClass().getName() + "@" + System.identityHashCode(ui)); - } + @Override + public void afterInit(ValidateUI ui) { + super.afterInit(ui); - JTable messageTable = tabUI.getMessageTable(); + JTable messageTable = ui.getMessageTable(); messageTable.setDefaultRenderer(Object.class, new ObserveValidationMessageTableRenderer()); messageTable.getRowSorter().setSortKeys( @@ -132,24 +118,23 @@ public class ValidateUIHandler extends AdminTabUIHandler { n("observe.actions.validate.validator.message.header.tip")); SwingUtil.fixTableColumnWidth(messageTable, 0, 25); - ValidateEntityListCellRenderer listRenderer = - new ValidateEntityListCellRenderer(tabUI.getStepModel()); - tabUI.getTypeList().setCellRenderer(listRenderer); - tabUI.getRefList().setCellRenderer(listRenderer); + ValidateEntityListCellRenderer listRenderer = new ValidateEntityListCellRenderer(ui.getStepModel()); + ui.getTypeList().setCellRenderer(listRenderer); + ui.getRefList().setCellRenderer(listRenderer); - tabUI.getStartButton().setText(t("observe.actions.synchro.launch.operation", t(tabUI.getStep().getOperationLabel()))); + ui.getStartButton().setText(t("observe.actions.synchro.launch.operation", t(ui.getStep().getOperationLabel()))); // initialisation de l'ui de configuration if (log.isInfoEnabled()) { - log.info("Init extra configuration for " + tabUI.getName()); + log.info("Init extra configuration for " + ui.getName()); } - ConfigUI configUI = (ConfigUI) ui.getStepUI(AdminStep.CONFIG); + ConfigUI configUI = (ConfigUI) parentUI.getStepUI(AdminStep.CONFIG); JAXXInitialContext tx = new JAXXInitialContext().add(configUI).add(this); ValidateConfigUI extraConfig = new ValidateConfigUI(tx); configUI.getExtraConfig().add(extraConfig); - final SelectDataUI selectTabUI = (SelectDataUI) ui.getStepUI(AdminStep.SELECT_DATA); + final SelectDataUI selectTabUI = (SelectDataUI) parentUI.getStepUI(AdminStep.SELECT_DATA); getModel().getValidateModel().addPropertyChangeListener(ValidateModel.PROPERTY_MODEL_MODE, evt -> { ValidationModelMode value = (ValidationModelMode) evt.getNewValue(); @@ -324,7 +309,7 @@ public class ValidateUIHandler extends AdminTabUIHandler { launchValidation(); - Map<Class<? extends IdDto>, ValidateResultForDtoType> messages = model.getValidateModel().getMessages(); + Map<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> messages = model.getValidateModel().getMessages(); if (messages == null || messages.isEmpty()) { // pas de validation ou bien pas d'erreurs rencontrées @@ -345,7 +330,7 @@ public class ValidateUIHandler extends AdminTabUIHandler { // on recupere la source de données - source = model.getSafeLocalSource(false); + source = model.getConfigModel().getSafeLocalSource(false); DecoratorService decoratorService = getDecoratorService(); @@ -386,9 +371,9 @@ public class ValidateUIHandler extends AdminTabUIHandler { ValidateModel stepModel = model.getValidateModel(); stepModel.setMessages(null); - SelectionTreeModel dataModel = model.getSelectionDataModel(); + SelectionTreeModel dataModel = model.getSelectDataModel().getSelectionDataModel(); - ObserveSwingDataSource dataSourceToValidate = model.getLocalSource(); + ObserveSwingDataSource dataSourceToValidate = model.getConfigModel().getLocalSource(); if (!dataSourceToValidate.isOpen()) { dataSourceToValidate.open(); @@ -396,7 +381,7 @@ public class ValidateUIHandler extends AdminTabUIHandler { ValidateService validateService = dataSourceToValidate.newValidateService(); - Map<Class<? extends IdDto>, ValidateResultForDtoType> messages = Maps.newHashMap(); + Map<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> messages = new HashMap<>(); if (dataModel.isLoadReferential()) { @@ -472,7 +457,7 @@ public class ValidateUIHandler extends AdminTabUIHandler { builder.append(t("observe.actions.validate.report.scopes", validationModel.getScopes())).append('\n'); builder.append(t("observe.actions.validate.report.contextName", validationModel.getContextName())).append('\n'); - Map<Class<? extends IdDto>, ValidateResultForDtoType> messages = validationModel.getMessages(); + Map<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> messages = validationModel.getMessages(); builder.append(t("observe.actions.validate.report.entities.with.messages", messages.size())).append('\n'); builder.append(LINE).append('\n').append('\n'); @@ -531,7 +516,7 @@ public class ValidateUIHandler extends AdminTabUIHandler { } } - public String updateValidatorResumeLabel(boolean valid) { + public String updateValidatorResumeLabel(@SuppressWarnings("unused") boolean valid) { ValidateModel validateModel = getModel().getValidateModel(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIInitializer.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIInitializer.java index 6d15481..4a3360d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIInitializer.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIInitializer.java @@ -30,6 +30,7 @@ import fr.ird.observe.application.swing.decoration.DecoratorService; import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.application.swing.decoration.decorators.DataReferenceDecorator; import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferenceDecorator; +import fr.ird.observe.application.swing.ui.MnemonicHelper; import fr.ird.observe.application.swing.ui.actions.shared.AbstractUIAction; import fr.ird.observe.application.swing.ui.util.BooleanEditor; import fr.ird.observe.application.swing.ui.util.tripMap.ObserveMapPane; @@ -43,7 +44,6 @@ import fr.ird.observe.services.dto.referential.ReferentialReference; import jaxx.runtime.JAXXValidator; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.JAXXWidgetUtil; -import jaxx.runtime.swing.OneClicListSelectionModel; import jaxx.runtime.swing.editor.EnumEditor; import jaxx.runtime.swing.editor.NumberEditor; import jaxx.runtime.swing.editor.bean.BeanComboBox; @@ -71,6 +71,7 @@ import org.nuiton.util.DateUtil; import javax.swing.AbstractAction; import javax.swing.AbstractButton; import javax.swing.Action; +import javax.swing.InputMap; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JComponent; @@ -79,7 +80,6 @@ import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JScrollBar; import javax.swing.JSpinner; -import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.KeyStroke; @@ -120,6 +120,8 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>> public static final String OBSERVE_ACTION = "observeAction"; + public static final String GLOBAL_ACTION = "globalAction"; + public static final String CLIENT_PROPERTY_PROPERTY_NAME = "propertyName"; public static final String CLIENT_PROPERTY_RESET_PROPERTY_NAME = "resetPropertyName"; @@ -138,7 +140,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>> this.decoratorService = ObserveSwingApplicationContext.get().getDecoratorService(); } - public static TableCellEditor newFloatColumnEditor(JTable table) { + public static TableCellEditor newFloatColumnEditor() { NumberCellEditor<Float> editor = JAXXWidgetUtil.newNumberTableCellEditor(Float.class, false); editor.getNumberEditor().setSelectAllTextOnError(true); @@ -148,7 +150,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>> } - public static TableCellEditor newIntegerColumnEditor(JTable table) { + public static TableCellEditor newIntegerColumnEditor() { NumberCellEditor<Integer> editor = JAXXWidgetUtil.newNumberTableCellEditor(Integer.class, false); editor.getNumberEditor().setSelectAllTextOnError(true); @@ -168,8 +170,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>> public static <B> ComboBoxCellEditor newDataColumnEditor(JComboBox<B> comboBox, List<B> data, Decorator<B> decorator) { - ListCellRenderer<B> renderer = new DecoratorListCellRenderer(decorator); - comboBox.setRenderer(renderer); + comboBox.setRenderer(new DecoratorListCellRenderer(decorator)); prepareComboBoxData(comboBox, data); @@ -202,13 +203,13 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>> } ObserveActionMap actionMap = ObserveSwingApplicationContext.get().getActionMap(); - + InputMap inputMap = ObserveSwingApplicationContext.get().getMainUI().getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); // initialisation des éditeurs Set<String> doNotBlockComponentIds = new HashSet<>(); ui.getActionMap().setParent(actionMap); - ui.setInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW ,ObserveSwingApplicationContext.get().getMainUI().getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)); + ui.setInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW, inputMap); for (String name : ui.get$objectMap().keySet()) { Object o = ui.getObjectById(name); @@ -277,7 +278,7 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>> } if (o instanceof EnumEditor) { - init((EnumEditor) o); + init((EnumEditor<?>) o); continue; } @@ -339,6 +340,14 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>> action.initAction(ui, editor); + actionId = (String) editor.getClientProperty(GLOBAL_ACTION); + if (actionId != null) { + action = (AbstractUIAction) actionMap.get(actionId); + Objects.requireNonNull(action, "action [" + actionId + "] not found for ui " + ui.getClass().getName()); + KeyStroke acceleratorKey = action.getAcceleratorKey(); + MnemonicHelper.addKeyStroke(editor, acceleratorKey); + } + } protected void init(NumberEditor editor) { @@ -655,21 +664,6 @@ public class ContentUIInitializer<E extends IdDto, UI extends ContentUI<E, UI>> } /** - * Ajoute à une liste graphique donnée le comportement de - * sélection-déselection en un seul click. - * - * TODO: il faudrait que cela ne perturbe pas le comportement des raccourcis clavier. - * - * @param list la liste graphique à traiter - */ - protected void prepareToogleListSelectionModel(JList list) { - - OneClicListSelectionModel model = new OneClicListSelectionModel(list.getSelectionModel(), list.getModel()); - list.setSelectionModel(model); - - } - - /** * Remplit le modèle d'une liste graphique avec la liste des entités d'un * type donné sur un service de persistance donné. * diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIManager.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIManager.java index 4aab8bf..14cb25d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIManager.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIManager.java @@ -26,6 +26,7 @@ import fr.ird.observe.application.swing.ObserveSwingSessionHelper; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; +import fr.ird.observe.services.dto.AbstractObserveDto; import jaxx.runtime.JAXXContext; import jaxx.runtime.context.JAXXInitialContext; import jaxx.runtime.swing.CardLayout2; @@ -190,6 +191,36 @@ public class ContentUIManager { return closed; } + public void restartEdit() { + + ContentUI<?, ?> selectedUI = getSelectedContentUI(); + if (selectedUI == null) { + + // pas d'écran selectionne + return; + } + ContentUIModel<? extends AbstractObserveDto> model = selectedUI.getModel(); + if (!model.isEditable()) { + + // modele non editable + return; + } + + ContentMode contentMode = model.getMode(); + if (ContentMode.UPDATE != contentMode) { + + // ecran non en mode mis a jour + return; + } + + if (log.isDebugEnabled()) { + log.debug("Will restart edit for " + selectedUI.getName()); + } + selectedUI.restartEdit(); + + } + + @Override protected void finalize() throws Throwable { super.finalize(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveFocusManager.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveFocusManager.java index a0c6f4d..1f2a3b2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveFocusManager.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveFocusManager.java @@ -447,7 +447,7 @@ public class ObserveFocusManager { case 0: return ui.getGear(); } - return super.getFirstComponent(aContainer); + return null; } @Override diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineDetailCompositionUIInitializer.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineDetailCompositionUIInitializer.java index 39b1b29..cb795ab 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineDetailCompositionUIInitializer.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineDetailCompositionUIInitializer.java @@ -101,7 +101,7 @@ public class LonglineDetailCompositionUIInitializer extends ContentUIInitializer UIHelper.setTableColumnRenderer(table, 1, UIHelper.newEmptyNumberTableCellRenderer(renderer)); UIHelper.setTableColumnRenderer(table, 2, UIHelper.newDecorateTableCellRenderer(renderer, SectionTemplate.class)); - UIHelper.setTableColumnEditor(table, 1, newIntegerColumnEditor(table)); + UIHelper.setTableColumnEditor(table, 1, newIntegerColumnEditor()); DecoratorService decoratorService = ui.getHandler().getDecoratorService(); Decorator<SectionTemplate> sectionTemplateDecorator = decoratorService.getDecoratorByType(SectionTemplate.class); @@ -141,9 +141,9 @@ public class LonglineDetailCompositionUIInitializer extends ContentUIInitializer UIHelper.setTableColumnRenderer(table, 2, UIHelper.newEmptyNumberTableCellRenderer(renderer)); UIHelper.setTableColumnRenderer(table, 3, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - UIHelper.setTableColumnEditor(table, 1, newIntegerColumnEditor(table)); - UIHelper.setTableColumnEditor(table, 2, newFloatColumnEditor(table)); - UIHelper.setTableColumnEditor(table, 3, newFloatColumnEditor(table)); + UIHelper.setTableColumnEditor(table, 1, newIntegerColumnEditor()); + UIHelper.setTableColumnEditor(table, 2, newFloatColumnEditor()); + UIHelper.setTableColumnEditor(table, 3, newFloatColumnEditor()); BasketsTableModel tableModel = model.getBasketsTableModel(); tableModel.installTableKeyListener(table); @@ -177,9 +177,9 @@ public class LonglineDetailCompositionUIInitializer extends ContentUIInitializer UIHelper.setTableColumnRenderer(table, 2, UIHelper.newEmptyNumberTableCellRenderer(renderer)); UIHelper.setTableColumnRenderer(table, 3, UIHelper.newEmptyNumberTableCellRenderer(renderer)); - UIHelper.setTableColumnEditor(table, 1, newIntegerColumnEditor(table)); - UIHelper.setTableColumnEditor(table, 2, newFloatColumnEditor(table)); - UIHelper.setTableColumnEditor(table, 3, newFloatColumnEditor(table)); + UIHelper.setTableColumnEditor(table, 1, newIntegerColumnEditor()); + UIHelper.setTableColumnEditor(table, 2, newFloatColumnEditor()); + UIHelper.setTableColumnEditor(table, 3, newFloatColumnEditor()); BranchlinesTableModel tableModel = model.getBranchlinesTableModel(); tableModel.installTableKeyListener(table); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/longline/ActivityLonglineUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/longline/ActivityLonglineUI.jcss index 78d3299..4797dac 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/longline/ActivityLonglineUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/longline/ActivityLonglineUI.jcss @@ -74,21 +74,25 @@ } #reopen { + _globalAction:{"openCloseDataGlobal"}; _toolTipText:{t("observe.content.action.reopen.activity.tip")}; } #close { + _globalAction:{"openCloseDataGlobal"}; enabled:{!model.isModified() && (model.isHistoricalData() || model.isValid())}; _toolTipText:{t("observe.action.close.activity.tip")}; } #closeAndCreate { + _globalAction:{"newNextGlobal"}; enabled:{!model.isModified() && (model.isHistoricalData() || model.isValid())}; _text:{t("observe.content.action.closeAndCreate.activity")}; _toolTipText:{t("observe.content.action.closeAndCreate.activity.tip")}; } #delete { + _globalAction:{"deleteDataGlobal"}; _toolTipText:{t("observe.action.delete.activity.tip")}; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/longline/CatchLonglineUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/longline/CatchLonglineUIHandler.java index 58ddda8..39ed50f 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/longline/CatchLonglineUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/longline/CatchLonglineUIHandler.java @@ -551,7 +551,7 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineCat Lists.newArrayList(getDataSource().getReferentialReferences(SizeMeasureTypeDto.class)); UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(sizeMeasureTypes, decorator)); - UIHelper.setTableColumnEditor(table, 1, ContentUIInitializer.newFloatColumnEditor(table)); + UIHelper.setTableColumnEditor(table, 1, ContentUIInitializer.newFloatColumnEditor()); initInlineTable(ui.getSizeMeasuresScrollPane(), table, @@ -582,7 +582,7 @@ public class CatchLonglineUIHandler extends ContentTableUIHandler<SetLonglineCat Lists.newArrayList(getDataSource().getReferentialReferences(WeightMeasureTypeDto.class)); UIHelper.setTableColumnEditor(table, 0, ContentUIInitializer.newDataColumnEditor(weightMeasureTypes, decorator)); - UIHelper.setTableColumnEditor(table, 1, ContentUIInitializer.newFloatColumnEditor(table)); + UIHelper.setTableColumnEditor(table, 1, ContentUIInitializer.newFloatColumnEditor()); initInlineTable(ui.getWeightMeasuresScrollPane(), table, diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUI.jaxx index c97d7f0..dd1d78d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUI.jaxx @@ -20,10 +20,8 @@ #L% --> -<JDialog id="storageMain" - implements='jaxx.runtime.swing.wizard.WizardUI<StorageStep, StorageUIModel>' - width='550' height='600' defaultCloseOperation='dispose_on_close' - > +<JDialog id="storageMain" implements='jaxx.runtime.swing.wizard.WizardUI<StorageStep, StorageUIModel>' + width='550' height='600' defaultCloseOperation='dispose_on_close'> <import> fr.ird.observe.application.swing.ui.UIHelper @@ -43,8 +41,6 @@ javax.swing.UIManager </import> - <StorageUIHandler id='handler' initializer='getContextValue(StorageUIHandler.class)'/> - <StorageUIModel id='model' javaBean='getContextValue(StorageUIModel.class)'/> <!-- le bloqueur d'ui lorsqu'une action est en cours ou annulée --> @@ -68,12 +64,6 @@ private boolean contextInitialized; public StorageUI(Window owner, JAXXContext parentContext) { super(owner); - // verification du context parent - UIHelper.checkJAXXContextEntry(parentContext, UIHelper.newContextEntryDef(StorageUIHandler.class)); - UIHelper.checkJAXXContextEntry(parentContext, UIHelper.newContextEntryDef(StorageUIModel.class)); - UIHelper.checkJAXXContextEntry(parentContext, UIHelper.newContextEntryDef("apply", Runnable.class)); - UIHelper.checkJAXXContextEntry(parentContext, UIHelper.newContextEntryDef("cancel", Runnable.class)); - if (owner != null) { setContextValue(owner, "parent"); } @@ -82,7 +72,7 @@ public StorageUI(Window owner, JAXXContext parentContext) { } public void destroy() { - getHandler().destroy(this); + handler.destroy(); } @Override @@ -102,7 +92,7 @@ protected void finalize() throws Throwable { @Override public void start() { - getHandler().start(this); + handler.start(); } @Override @@ -129,35 +119,28 @@ public StorageTabUI getStepUI(int stepIndex) { if (stepIndex > tabs.getTabCount()) { return null; } - return (StorageTabUI) tabs.getComponentAt(stepIndex); + return (StorageTabUI) tabs.getComponentAt(stepIndex); } @Override public StorageTabUI getSelectedStepUI() { StorageStep step = getSelectedStep(); - StorageTabUI ui = getStepUI(step); - return ui; + return getStepUI(step); } @Override public void onStepChanged(StorageStep oldStep, StorageStep newStep) { - getHandler().onStepChanged(this, oldStep, newStep); + handler.onStepChanged(oldStep, newStep); } @Override -public void onStepsChanged(StorageStep[] steps) { - -} +public void onStepsChanged(StorageStep[] steps) { } -void $afterCompleteSetup() { - getHandler().initUI(this); -} ]]> </script> <!-- les onglets --> - <JTabbedPane id='tabs' decorator='boxed' - constraints='BorderLayout.CENTER' + <JTabbedPane id='tabs' decorator='boxed' constraints='BorderLayout.CENTER' onStateChanged='if (getSelectedStep() != null) { getModel().gotoStep(getSelectedStep()); }'/> <!-- les actions --> @@ -165,23 +148,19 @@ void $afterCompleteSetup() { <row> <cell weightx='0.5' fill="both"> <!-- pour annuler --> - <JButton id="cancelAction" - onActionPerformed='getHandler().launchCancel(this)'/> + <JButton id="cancelAction" onActionPerformed='getHandler().launchCancel()'/> </cell> <cell weightx='0.5' fill="both"> <!-- pour aller sur l'onglet précédent --> - <JButton id="previousAction" - onActionPerformed='getModel().gotoPreviousStep()'/> + <JButton id="previousAction" onActionPerformed='getModel().gotoPreviousStep()'/> </cell> <cell weightx='0.5' fill="both"> <!-- pour aller sur l'onglet suivant --> - <JButton id="nextAction" - onActionPerformed='getModel().gotoNextStep()'/> + <JButton id="nextAction" onActionPerformed='getModel().gotoNextStep()'/> </cell> <cell weightx='0.5' fill="both"> <!-- pour apliquer la configuration --> - <JButton id="applyAction" - onActionPerformed='getHandler().launchApply(this)'/> + <JButton id="applyAction" onActionPerformed='getHandler().launchApply()'/> </cell> </row> </Table> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIHandler.java index 895cd31..daf3777 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUIHandler.java @@ -33,9 +33,8 @@ import fr.ird.observe.application.swing.configuration.constants.CreationMode; import fr.ird.observe.application.swing.configuration.constants.DbMode; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.db.constants.ConnexionStatus; -import fr.ird.observe.application.swing.db.event.ObserveSwingDataSourceEvent; -import fr.ird.observe.application.swing.db.event.ObserveSwingDataSourceListenerAdapter; import fr.ird.observe.application.swing.decoration.DecoratorService; +import fr.ird.observe.application.swing.ui.MnemonicHelper; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.storage.tabs.RolesTableModel; @@ -52,7 +51,7 @@ import fr.ird.observe.services.dto.DataSourceCreateConfigurationDto; import fr.ird.observe.services.dto.ObserveDbUserDto; import fr.ird.observe.services.service.sql.AddSqlScriptProducerRequest; import fr.ird.observe.services.service.sql.SqlScriptProducerService; -import jaxx.runtime.context.DefaultApplicationContext.AutoLoad; +import jaxx.runtime.spi.UIHandler; import jaxx.runtime.swing.wizard.WizardUILancher; import org.apache.commons.io.FileUtils; import org.apache.commons.logging.Log; @@ -62,14 +61,11 @@ import javax.swing.AbstractAction; import javax.swing.ActionMap; import javax.swing.InputMap; import javax.swing.JComponent; -import javax.swing.JRadioButton; import javax.swing.JTabbedPane; -import javax.swing.KeyStroke; import javax.swing.SwingUtilities; import java.awt.Component; import java.awt.Window; import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -87,138 +83,14 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.0 */ -@AutoLoad -public class StorageUIHandler { +public class StorageUIHandler implements UIHandler<StorageUI> { /** Logger */ private static final Log log = LogFactory.getLog(StorageUIHandler.class); - /** - * Prépare une service de persistance à partir d'un modèle. - * - * Le service ne sera pas ouvert. - * - * @param model le modèle de la source de données - * @return le service de persistance initialisé mais non ouvert. - */ - public ObserveSwingDataSource newDataSourceFromModel( - StorageUIModel model) { - - ObserveSwingDataSource dataSource = null; - ObserveDataSourceConfiguration configuration; - switch (model.getDbMode()) { - case CREATE_LOCAL: - case USE_LOCAL: - configuration = model.toH2StorageConfig(t("observe.storage.label.local")); - - dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(configuration); - - dataSource.addObserveSwingDataSourceListener( - new ObserveSwingDataSourceListenerAdapter() { - - @Override - public void onOpened(ObserveSwingDataSourceEvent event) { - ObserveSwingApplicationContext context = ObserveSwingApplicationContext.get(); - // la base locale existe desormais - context.getConfig().setLocalStorageExist(true); - } - }); - - break; - case USE_REMOTE: - configuration = model.toPGStorageConfig(t("observe.storage.label.remote")); - dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(configuration); - break; - case USE_SERVER: - configuration = model.toRestStorageConfig(t("observe.storage.label.server")); - dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(configuration); - break; - } - - return dataSource; - } - - public void initUI(StorageUI ui) { - - InputMap inputMap = ui.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); - ActionMap actionMap = ui.getRootPane().getActionMap(); - - inputMap.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "cancel"); - actionMap.put("cancel", new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - ui.doActionPerformed__on__cancelAction(e); - } - }); - StorageUIModel model = ui.getModel(); + private StorageUI ui; - // on écoute les changements d'étapes - model.addPropertyChangeListener(StorageUIModel.STEP_PROPERTY_NAME, evt -> { - StorageUIModel model1 = (StorageUIModel) evt.getSource(); - StorageStep oldStep = (StorageStep) evt.getOldValue(); - StorageStep newStep = (StorageStep) evt.getNewValue(); - if (log.isDebugEnabled()) { - log.debug("step has changed <old:" + oldStep + ", new:" + newStep + ">"); - } - int oldStepIndex = oldStep == null ? -1 : model1.getStepIndex(oldStep); - int newStepIndex = model1.getStepIndex(newStep); - JTabbedPane tabs = ui.getTabs(); - if (oldStepIndex + 1 == newStepIndex) { - - // creation d'un nouvel onglet - StorageTabUI c = (StorageTabUI) ui.getObjectById(newStep.name()); - String title = I18nEnumHelper.getLabel(newStep); - String tip = I18nEnumHelper.getDescription(newStep); - - if (log.isDebugEnabled()) { - log.debug("Create tab " + title + " ui = " + c); - } - tabs.addTab(title, null, c, tip); - tabs.setMnemonicAt(newStepIndex, title.charAt(0)); - - // selection du nouvel onglet - int index = tabs.indexOfComponent(c); - if (index > -1) { - tabs.setSelectedIndex(index); - } - ui.onStepChanged(oldStep, newStep); - - } else if (oldStepIndex > newStepIndex) { - - // il s'agit d'un retour en arrière - // on supprime tous les onglets obsoletes - int index = newStepIndex + 1; - while (tabs.getTabCount() > index) { - if (log.isDebugEnabled()) { - log.debug("remove tab : " + index); - } - tabs.remove(index); - } - - ui.onStepChanged(oldStep, newStep); - } else { - throw new IllegalStateException("can not go from " + oldStep + " to " + newStep); - } - }); - - // initialisation des onglets - ui.CHOOSE_DB_MODE.init(); - ui.CONFIG.init(); - ui.CONFIG_REFERENTIEL.init(); - ui.CONFIG_DATA.init(); - ui.BACKUP.init(); - ui.SELECT_DATA.init(); - ui.ROLES.init(); - ui.CONFIRM.init(); - - // recuperation de la source de données en cours d'utilisation - ObserveDataSourceConfiguration dataSourceConfiguration = ui.getContextValue(ObserveDataSourceConfiguration.class); - - // chargement du modèle - model.init(ui, dataSourceConfiguration); - } - - public void start(StorageUI ui) { + public void start() { // on demarre le modele pour le type de base connu ui.getModel().start(ui.getModel().getDbMode()); @@ -229,7 +101,7 @@ public class StorageUIHandler { UIHelper.center(ui.getContextValue(Window.class, "parent"), ui); SwingUtilities.invokeLater(() -> { - JComponent focusOwner = getFocusComponent(ui, ui.getModel().getStep()); + JComponent focusOwner = getFocusComponent(ui.getModel().getStep()); if (focusOwner != null) { focusOwner.grabFocus(); } @@ -239,7 +111,7 @@ public class StorageUIHandler { ui.setVisible(true); } - public JComponent getFocusComponent(StorageUI ui, StorageStep newStep) { + public JComponent getFocusComponent(StorageStep newStep) { DbMode dbMode = ui.getModel().getDbMode(); JComponent focusOwner; @@ -324,7 +196,7 @@ public class StorageUIHandler { return focusOwner; } - public void onStepChanged(StorageUI ui, StorageStep oldStep, StorageStep newStep) { + public void onStepChanged(StorageStep oldStep, StorageStep newStep) { if (newStep == null) { return; } @@ -347,14 +219,6 @@ public class StorageUIHandler { } - if (StorageStep.CHOOSE_DB_MODE == newStep) { - JRadioButton focusOwner = ui.getCHOOSE_DB_MODE().getUseLocalMode(); - if (!focusOwner.isEnabled() || ui.getCHOOSE_DB_MODE().getUseRemoteMode().isSelected()) { - focusOwner = ui.getCHOOSE_DB_MODE().getUseRemoteMode(); - } - focusOwner.requestFocusInWindow(); - } - if (StorageStep.CONFIG_REFERENTIEL == newStep && mustRecompute) { // mise à jour de l'univers des étapes (ajout/suppression étape confg_data et select_data possible) @@ -385,19 +249,19 @@ public class StorageUIHandler { if (StorageStep.CONFIRM == newStep) { // generation du rapport - String text = computeReport(ui, oldStep); + String text = computeReport(oldStep); ui.CONFIRM.getResume().setText(text); } - JComponent focusComponent = getFocusComponent(ui, newStep); + JComponent focusComponent = getFocusComponent(newStep); if (focusComponent != null) { focusComponent.requestFocusInWindow(); } } - public void launchApply(final StorageUI ui) { + public void launchApply() { ui.getModel().setAlreadyApplied(true); @@ -427,7 +291,7 @@ public class StorageUIHandler { } } - public void launchCancel(StorageUI ui) { + public void launchCancel() { Runnable action = WizardUILancher.CANCEL_DEF.getContextValue(ui); @@ -504,7 +368,6 @@ public class StorageUIHandler { if (log.isErrorEnabled()) { log.error(t("observe.error.storage.could.not.load.local.db", e.getMessage()), e); } -// UIHelper.handlingError(t("observe.error.storage.could.not.load.local.db", e.getMessage()), e); // on conserve l'état localDbIsSane = false; @@ -589,8 +452,6 @@ public class StorageUIHandler { localDataSource.close(); } -// localDataSource = null; - if (log.isDebugEnabled()) { log.debug("Will create new storage..."); } @@ -599,7 +460,7 @@ public class StorageUIHandler { try { - currentDataSource = newDataSourceFromModel(model); + currentDataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSourceFromModel(model); // si on utilise la base local on lance une migration de la base si necessaire if (DbMode.USE_LOCAL.equals((model.getDbMode()))) { @@ -691,9 +552,10 @@ public class StorageUIHandler { * @param model le model de la source de données */ public void storeRemoteConfig(StorageUIModel model) { + ObserveSwingApplicationConfig config = ObserveSwingApplicationContext.get().getConfig(); - // on sauvegarde dans le parametrage dans la configuration de - // l'application + + // on sauvegarde dans le parametrage dans la configuration de l'application if (model.isEditRemoteConfig()) { @@ -748,17 +610,7 @@ public class StorageUIHandler { } } - public String computeReport(StorageUI ui, StorageStep step) { - if (log.isDebugEnabled()) { - log.debug("Build report from step " + step); - } - StorageUIModel model = ui.getModel(); - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - ObserveTextGenerator textGenerator = applicationContext.getTextGenerator(); - return textGenerator.getDataSourceConnectionReport(model); - } - - public void destroy(StorageUI ui) { + public void destroy() { ui.getModel().destroy(); if (log.isDebugEnabled()) { log.debug("destroy ui " + ui.getName()); @@ -774,8 +626,100 @@ public class StorageUIHandler { UIHelper.destroy(ui); } - protected DecoratorService getDecoratorService() { - return ObserveSwingApplicationContext.get().getDecoratorService(); + @Override + public void beforeInit(StorageUI ui) { + this.ui = ui; + + // verification du context parent + UIHelper.checkJAXXContextEntry(ui, UIHelper.newContextEntryDef(StorageUIModel.class)); + UIHelper.checkJAXXContextEntry(ui, UIHelper.newContextEntryDef("apply", Runnable.class)); + UIHelper.checkJAXXContextEntry(ui, UIHelper.newContextEntryDef("cancel", Runnable.class)); + + } + + @Override + public void afterInit(StorageUI storageUI) { + + InputMap inputMap = ui.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); + ActionMap actionMap = ui.getRootPane().getActionMap(); + + inputMap.put(MnemonicHelper.KEY_STROKE_ESCAPE, "cancel"); + actionMap.put("cancel", new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + ui.doActionPerformed__on__cancelAction(e); + } + }); + MnemonicHelper.addKeyStroke(ui.getCancelAction(), MnemonicHelper.KEY_STROKE_ESCAPE); + + MnemonicHelper.addKeyStrokeFromMnemonic(ui); + + StorageUIModel model = ui.getModel(); + + // on écoute les changements d'étapes + model.addPropertyChangeListener(StorageUIModel.STEP_PROPERTY_NAME, evt -> { + StorageUIModel model1 = (StorageUIModel) evt.getSource(); + StorageStep oldStep = (StorageStep) evt.getOldValue(); + StorageStep newStep = (StorageStep) evt.getNewValue(); + if (log.isDebugEnabled()) { + log.debug("step has changed <old:" + oldStep + ", new:" + newStep + ">"); + } + int oldStepIndex = oldStep == null ? -1 : model1.getStepIndex(oldStep); + int newStepIndex = model1.getStepIndex(newStep); + JTabbedPane tabs = ui.getTabs(); + if (oldStepIndex + 1 == newStepIndex) { + + // creation d'un nouvel onglet + StorageTabUI c = (StorageTabUI) ui.getObjectById(newStep.name()); + String title = I18nEnumHelper.getLabel(newStep); + String tip = I18nEnumHelper.getDescription(newStep); + + if (log.isDebugEnabled()) { + log.debug("Create tab " + title + " ui = " + c); + } + tabs.addTab(title, null, c, tip); + tabs.setMnemonicAt(newStepIndex, title.charAt(0)); + + // selection du nouvel onglet + int index = tabs.indexOfComponent(c); + if (index > -1) { + tabs.setSelectedIndex(index); + } + ui.onStepChanged(oldStep, newStep); + + } else if (oldStepIndex > newStepIndex) { + + // il s'agit d'un retour en arrière + // on supprime tous les onglets obsoletes + int index = newStepIndex + 1; + while (tabs.getTabCount() > index) { + if (log.isDebugEnabled()) { + log.debug("remove tab : " + index); + } + tabs.remove(index); + } + + ui.onStepChanged(oldStep, newStep); + } else { + throw new IllegalStateException("can not go from " + oldStep + " to " + newStep); + } + }); + +// // initialisation des onglets +// ui.CHOOSE_DB_MODE.init(); +// ui.CONFIG.init(); +// ui.CONFIG_REFERENTIEL.init(); +// ui.CONFIG_DATA.init(); +// ui.BACKUP.init(); +// ui.SELECT_DATA.init(); +// ui.ROLES.init(); +// ui.CONFIRM.init(); + + // recuperation de la source de données en cours d'utilisation + ObserveDataSourceConfiguration dataSourceConfiguration = ui.getContextValue(ObserveDataSourceConfiguration.class); + + // chargement du modèle + model.init(ui, dataSourceConfiguration); } protected void initSelectData(StorageUI ui) { @@ -822,21 +766,16 @@ public class StorageUIHandler { if (selectAll) { treeModel.selectAllTrips(); - SwingUtilities.invokeLater(() -> selectDataUI.getSelectTree().expandAll()); + SwingUtilities.invokeLater(selectDataUI.getSelectTree()::expandAll); } // positionnement du model de selection de données dans le model du wizard model.setSelectDataModel(treeModel); - if (selectAll) { - treeModel.selectAllTrips(); - SwingUtilities.invokeLater(() -> selectDataUI.getSelectTree().expandAll()); - } - if (selectDataUI.getSelectTree().getRowCount() > 0) { selectDataUI.getSelectTree().setSelectionRow(0); } - SwingUtilities.invokeLater(selectDataUI.getSelectTree()::grabFocus); + SwingUtilities.invokeLater(selectDataUI.getSelectTree()::requestFocusInWindow); } finally { if (closeSource) { @@ -860,13 +799,12 @@ public class StorageUIHandler { switch (model.getDbMode()) { case USE_REMOTE: ObserveDataSourceConfigurationTopiaPG pgConfig = model.getPgConfig(); - dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(pgConfig); break; case USE_SERVER: ObserveDataSourceConfigurationRest restConfig = model.getRestConfig(); dataSource = ObserveSwingApplicationContext.get().getDataSourcesManager().newDataSource(restConfig); - + break; } if (dataSource != null) { @@ -892,4 +830,18 @@ public class StorageUIHandler { } + protected String computeReport(StorageStep step) { + if (log.isDebugEnabled()) { + log.debug("Build report from step " + step); + } + StorageUIModel model = ui.getModel(); + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveTextGenerator textGenerator = applicationContext.getTextGenerator(); + return textGenerator.getDataSourceConnectionReport(model); + } + + protected DecoratorService getDecoratorService() { + return ObserveSwingApplicationContext.get().getDecoratorService(); + } + } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUILauncher.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUILauncher.java index 948ceb0..bb3f4e0 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUILauncher.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/StorageUILauncher.java @@ -24,7 +24,6 @@ package fr.ird.observe.application.swing.ui.storage; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationConfig; import fr.ird.observe.application.swing.configuration.constants.DbMode; -import fr.ird.observe.application.swing.ui.ObserveMainUIHandler; import fr.ird.observe.application.swing.ui.UIHelper; import jaxx.runtime.JAXXContext; import jaxx.runtime.JAXXObject; @@ -55,17 +54,12 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod protected final String title; - public StorageUILauncher(JAXXContext context, - Window frame, - StorageUIModel model, - String title) { + public StorageUILauncher(JAXXContext context, Window frame, StorageUIModel model, String title) { super(context, frame, StorageUI.class, StorageUIModel.class, model); this.title = title; } - public StorageUILauncher(JAXXContext context, - Window frame, - String title) { + public StorageUILauncher(JAXXContext context, Window frame, String title) { super(context, frame, StorageUI.class, StorageUIModel.class); this.title = title; } @@ -99,7 +93,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod } ui.getModel().setBusy(true); super.doCancel(ui); - ObserveMainUIHandler.restartEdit(); + ObserveSwingApplicationContext.get().getContentUIManager().restartEdit(); } @Override @@ -180,7 +174,7 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod @Override protected void doAction(StorageUI ui) { super.doAction(ui); - getStorageUIHandler().doChangeStorage(ui.getModel()); + ui.getHandler().doChangeStorage(ui.getModel()); } }.start(); @@ -237,11 +231,10 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod */ public static void obtainConnexion(JAXXContext context, Window mainUI, StorageUIModel model, String title, DbMode dbMode) { - if (mainUI == null) { mainUI = ObserveSwingApplicationContext.get().getMainUI(); } - addStorageUIHandler(context); +// addStorageUIHandler(context); StorageUILauncher launcher = new StorageUILauncher(context, mainUI, model, title) { @Override @@ -307,7 +300,6 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod if (mainUI == null) { mainUI = ObserveSwingApplicationContext.get().getMainUI(); } - addStorageUIHandler(context); StorageUILauncher launcher = new StorageUILauncher(context, mainUI, model, t("observe.title.connect.existingDB")) { @Override @@ -362,23 +354,6 @@ public class StorageUILauncher extends WizardUILancher<StorageStep, StorageUIMod launcher.start(); } - protected static void addStorageUIHandler(JAXXContext context) { - StorageUIHandler handler = context.getContextValue(StorageUIHandler.class); - if (handler == null) { - - handler = new StorageUIHandler(); - context.setContextValue(handler); - - if (log.isWarnEnabled()) { - log.warn("Register in context an storage handler : " + handler); - } - } else { - if (log.isWarnEnabled()) { - log.warn("Use existing handler " + handler); - } - } - } - public String getTitle() { return title; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/BackupUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/BackupUI.jaxx index 909cf37..70909b3 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/BackupUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/BackupUI.jaxx @@ -35,15 +35,6 @@ <fr.ird.observe.application.swing.ui.storage.StorageUIModel id='model'/> - <script><![CDATA[ - -@Override -public void init() { - getHandler().initUI(this); -} -]]> - </script> - <JPanel id='content'> <Table fill='both' constraints='BorderLayout.CENTER'> <row> @@ -61,11 +52,11 @@ public void init() { </cell> <cell weightx='1' fill="horizontal"> <JTextField id='directoryText' - onKeyReleased='getHandler().changeDirectory(this, new File(((JTextField)event.getSource()).getText()))'/> + onKeyReleased='getHandler().changeDirectory(new File(((JTextField)event.getSource()).getText()))'/> </cell> <cell anchor="east"> <JButton id="chooseFileAction" - onActionPerformed="getHandler().chooseBackupFile(this)"/> + onActionPerformed="getHandler().chooseBackupFile()"/> </cell> </row> <row> @@ -74,7 +65,7 @@ public void init() { </cell> <cell weightx='1' fill="horizontal" columns="2"> <JTextField id='filenameText' - onKeyReleased='getHandler().changeFilename(this, ((JTextField) event.getSource()).getText())'/> + onKeyReleased='getHandler().changeFilename(((JTextField) event.getSource()).getText())'/> </cell> </row> </Table> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/BackupUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/BackupUIHandler.java new file mode 100644 index 0000000..016bfc1 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/BackupUIHandler.java @@ -0,0 +1,74 @@ +package fr.ird.observe.application.swing.ui.storage.tabs; + +import fr.ird.observe.application.swing.ui.MnemonicHelper; +import fr.ird.observe.application.swing.ui.UIHelper; +import fr.ird.observe.application.swing.ui.storage.StorageStep; +import jaxx.runtime.spi.UIHandler; + +import javax.swing.AbstractAction; +import java.awt.event.ActionEvent; +import java.io.File; + +import static javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW; +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 27/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since X + */ +public class BackupUIHandler extends StorageTabUIHandler<BackupUI> implements UIHandler<BackupUI> { + + public static final String ACTION_DO_BACKUP = "doBackup"; + public static final String ACTION_DO_CHOOSE_DIRECTORY = "doChooseDirectory"; + + @Override + public void afterInit(BackupUI ui) { + if (ui.getStep() != null) { + ui.setDescriptionText(t(ui.getStep().getDescription())); + + ui.getActionMap().put(ACTION_DO_BACKUP, new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + if (StorageStep.BACKUP == ui.getModel().getStep()) { + ui.getDoBackup().doClick(); + } + } + }); + ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(MnemonicHelper.KEY_STROKE_STORAGE_DO_BACKUP, ACTION_DO_BACKUP); + MnemonicHelper.addKeyStroke(ui.getDoBackup(), MnemonicHelper.KEY_STROKE_STORAGE_DO_BACKUP); + + ui.getActionMap().put(ACTION_DO_CHOOSE_DIRECTORY, new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + if (StorageStep.BACKUP == ui.getModel().getStep()) { + ui.getChooseFileAction().doClick(); + } + } + }); + ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(MnemonicHelper.KEY_STROKE_STORAGE_DO_CHOOSE_DIRECTORY, ACTION_DO_CHOOSE_DIRECTORY); + MnemonicHelper.addKeyStroke(ui.getChooseFileAction(), MnemonicHelper.KEY_STROKE_STORAGE_DO_CHOOSE_DIRECTORY); + } + } + + + public void chooseBackupFile() { + File f = UIHelper.chooseDirectory(ui, + t("observe.title.choose.db.dump.directory"), + t("observe.action.choose.db.dump.directory"), + new File(ui.getDirectoryText().getText())); + if (f != null) { + changeDirectory(f); + } + } + + public void changeDirectory(File f) { + ui.getModel().setBackupFile(new File(f, ui.getFilenameText().getText())); + } + + public void changeFilename(String filename) { + ui.getModel().setBackupFile(new File(ui.getDirectoryText().getText(), filename)); + } + +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ChooseDbModeUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ChooseDbModeUI.jaxx index 180bf8c..96d8a69 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ChooseDbModeUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ChooseDbModeUI.jaxx @@ -43,16 +43,12 @@ <ButtonGroup id='dbMode' onStateChanged='getModel().setDbMode((DbMode) dbMode.getSelectedValue())'/> - <ButtonGroup id='creationMode' onStateChanged='getModel().setCreationMode((CreationMode) creationMode.getSelectedValue())'/> + <ButtonGroup id='creationMode' + onStateChanged='getModel().setCreationMode((CreationMode) creationMode.getSelectedValue())'/> <CardLayout2Ext id='creationModeLayout' constructorParams='this, "creationModeContent"'/> <script><![CDATA[ -@Override -public void init() { - getHandler().initUI(this); -} - protected String updateMigrationPolicy(boolean canMigrate) { if (canMigrate) { return t("observe.storage.report.can.migrate", config.getModelVersion()); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ChooseDbModeUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ChooseDbModeUI.jcss index 6909e3c..de5aeca 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ChooseDbModeUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ChooseDbModeUI.jcss @@ -85,7 +85,7 @@ #importInternalDumpMode { value:{CreationMode.IMPORT_INTERNAL_DUMP}; text:{getHandler().updateInternalDumpModeLabel(config.isInitialDumpExist())}; - visible:{getHandler().updateCreationModeLayout(ChooseDbModeUI.this, config.isInitialDumpExist(), importInternalDumpMode)}; + visible:{getHandler().updateCreationModeLayout(config.isInitialDumpExist(), importInternalDumpMode)}; selected:{model.getCreationMode() == CreationMode.IMPORT_INTERNAL_DUMP}; } @@ -98,7 +98,7 @@ /** non utilisé dans cette version d'ObServe */ #importLocalStorageMode { - visible:{getHandler().updateCreationModeLayout(ChooseDbModeUI.this, false, importLocalStorageMode)}; + visible:{getHandler().updateCreationModeLayout(false, importLocalStorageMode)}; value:{CreationMode.IMPORT_LOCAL_STORAGE}; text:{I18nEnumHelper.getLabel(CreationMode.IMPORT_LOCAL_STORAGE)}; selected:{model.getCreationMode() == CreationMode.IMPORT_LOCAL_STORAGE}; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ChooseDbModeUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ChooseDbModeUIHandler.java new file mode 100644 index 0000000..9fbfeeb --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ChooseDbModeUIHandler.java @@ -0,0 +1,77 @@ +package fr.ird.observe.application.swing.ui.storage.tabs; + +import fr.ird.observe.application.swing.I18nEnumHelper; +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.ObserveTextGenerator; +import fr.ird.observe.application.swing.configuration.constants.CreationMode; +import fr.ird.observe.application.swing.ui.storage.StorageStep; +import fr.ird.observe.application.swing.ui.storage.StorageUIModel; +import jaxx.runtime.spi.UIHandler; + +import javax.swing.JPanel; +import javax.swing.JRadioButton; +import java.awt.Component; +import java.beans.PropertyChangeListener; +import java.io.File; +import java.util.Date; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 27/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since X + */ +public class ChooseDbModeUIHandler extends StorageTabUIHandler<ChooseDbModeUI> implements UIHandler<ChooseDbModeUI> { + + @Override + public void afterInit(ChooseDbModeUI ui) { + PropertyChangeListener listener = evt -> { + StorageUIModel model = (StorageUIModel) evt.getSource(); + + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveTextGenerator textGenerator = applicationContext.getTextGenerator(); + String txt = textGenerator.getLoadDataSourceResume(model); + ui.getResume().setText(txt); + }; + StorageUIModel model = ui.getModel(); + model.addPropertyChangeListener(StorageUIModel.DB_MODE_PROPERTY_NAME, listener); + model.addPropertyChangeListener(StorageUIModel.CREATION_MODE_PROPERTY_NAME, listener); + ui.setDescriptionText(t(StorageStep.CHOOSE_DB_MODE.getDescription())); + } + + protected String updateInternalDumpModeLabel(@SuppressWarnings("unused") boolean dumpExist) { + File f = ObserveSwingApplicationContext.get().getConfig().getInitialDbDump(); + String text; + if (f.exists()) { + text = t("observe.storage.internalDump.last.modified", new Date(f.lastModified())); + } else { + text = t("observe.storage.internalDump.not.exist"); + } + return I18nEnumHelper.getLabel(CreationMode.IMPORT_INTERNAL_DUMP) + text; + } + + public boolean updateCreationModeLayout(boolean visible, JRadioButton button) { + JPanel panel = ui.getUseCreateMode(); + if (visible) { + for (Component c : panel.getComponents()) { + if (button.equals(c)) { + // button already in + return true; + } + } + + panel.add(button); + } else { + for (Component c : panel.getComponents()) { + if (button.equals(c)) { + // button still in + panel.remove(c); + return false; + } + } + } + return visible; + } +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigDataUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigDataUI.jaxx index b593340..c3b50ce 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigDataUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigDataUI.jaxx @@ -37,21 +37,14 @@ <StorageStep id='step' initializer='StorageStep.CONFIG_DATA'/> <fr.ird.observe.application.swing.ui.storage.StorageUIModel id='model'/> - <fr.ird.observe.application.swing.ui.storage.StorageUIModel id='centralSourceModel' initializer='model.getDataSourceModel()'/> + <fr.ird.observe.application.swing.ui.storage.StorageUIModel id='centralSourceModel' + initializer='model.getDataSourceModel()'/> <ButtonGroup id='creationMode' onStateChanged='model.setDataImportMode((CreationMode) creationMode.getSelectedValue())'/> <CardLayout id='configLayout'/> - <script><![CDATA[ -@Override -public void init() { - getHandler().initUI(this); -} -]]> - </script> - <JPanel id='content' layout='{new BorderLayout()}'> <Table id="dataSourceConfig" insets="1" weightx='1' fill='both' @@ -92,19 +85,17 @@ public void init() { onKeyReleased='centralSourceModel.setDumpFile(new File(((JTextField)event.getSource()).getText())); model.validate();'/> </cell> <cell anchor="east"> - <JButton id="fileChooserAction" - onActionPerformed="getHandler().chooseDumpFile(this)"/> + <JButton id="fileChooserAction" onActionPerformed="handler.chooseDumpFile()"/> </cell> </row> </Table> <!-- importer les données a partir d'une base distante --> - <Table id='IMPORT_REMOTE_STORAGE' fill="both" - constraints='"IMPORT_REMOTE_STORAGE"'> + <Table id='IMPORT_REMOTE_STORAGE' fill="both" constraints='"IMPORT_REMOTE_STORAGE"'> <row> <cell> <JLabel - text='observe.storage.importRemoteStorageData.config'/> + text='observe.storage.importRemoteStorageData.config'/> </cell> </row> <row> @@ -112,8 +103,7 @@ public void init() { <JLabel id='centralSourceLabel'/> </cell> <cell> - <JButton id='configureCentralSource' - onActionPerformed='getHandler().obtainRemoteConnexion(this)'/> + <JButton id='configureCentralSource' onActionPerformed='handler.obtainRemoteConnexion()'/> </cell> <cell anchor='east'> <JLabel id='centralSourceStatus'/> @@ -132,8 +122,7 @@ public void init() { </Table> <!-- importer les données a partir d'une base distante --> - <Table id='IMPORT_SERVER_STORAGE' fill="both" - constraints='"IMPORT_SERVER_STORAGE"'> + <Table id='IMPORT_SERVER_STORAGE' fill="both" constraints='"IMPORT_SERVER_STORAGE"'> <row> <cell> <JLabel @@ -146,7 +135,7 @@ public void init() { </cell> <cell> <JButton id='configureCentralSourceServer' - onActionPerformed='getHandler().obtainServerConnexion(this)'/> + onActionPerformed='handler.obtainServerConnexion()'/> </cell> <cell anchor='east'> <JLabel id='centralSourceServerStatus'/> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigDataUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigDataUIHandler.java new file mode 100644 index 0000000..290c43b --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigDataUIHandler.java @@ -0,0 +1,92 @@ +package fr.ird.observe.application.swing.ui.storage.tabs; + +import fr.ird.observe.application.swing.configuration.constants.CreationMode; +import fr.ird.observe.application.swing.ui.UIHelper; +import fr.ird.observe.application.swing.ui.storage.StorageStep; +import fr.ird.observe.application.swing.ui.storage.StorageUILauncher; +import fr.ird.observe.application.swing.ui.storage.StorageUIModel; +import jaxx.runtime.spi.UIHandler; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.JComponent; +import java.awt.Window; +import java.beans.PropertyChangeListener; +import java.io.File; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 27/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since X + */ +public class ConfigDataUIHandler extends StorageTabUIHandler<ConfigDataUI> implements UIHandler<ConfigDataUI> { + + /** Logger */ + private static final Log log = LogFactory.getLog(ConfigDataUIHandler.class); + + @Override + public void afterInit(ConfigDataUI ui) { + if (ui.getStep() != null) { + ui.setDescriptionText(t(ui.getStep().getDescription())); + + PropertyChangeListener listener = evt -> { + String propertyName = evt.getPropertyName(); + if (StorageUIModel.DATA_IMPORT_MODE_PROPERTY_NAME.equals(propertyName)) { + CreationMode id = (CreationMode) evt.getNewValue(); + + if (id != null) { + refreshConfig(id.name()); + + } + + } + }; + ui.getModel().addPropertyChangeListener(listener); + ui.getModel().setDataImportMode(CreationMode.EMPTY); + } + } + + public void refreshConfig(String configId) { + JComponent c = (JComponent) ui.getObjectById(configId); + if (c != null) { + if (log.isDebugEnabled()) { + log.debug(configId); + } + ui.configLayout.show(ui.configContent, configId); + } + } + + public void chooseDumpFile() { + File f = UIHelper.chooseFile(ui, + t("observe.title.choose.db.dump"), + t("observe.action.choose.db.dump"), + ui.getModel().getDumpFile(), + "^.+\\.sql\\.gz$", + t("observe.action.choose.db.dump.description")); + ui.getCentralSourceModel().setDumpFile(f); + ui.getModel().validate(); + } + + public void obtainRemoteConnexion() { + StorageUIModel sourceModel = ui.getCentralSourceModel(); + StorageUILauncher.obtainRemoteConnexion(ui.getDelegateContext(), ui.getParentContainer(Window.class), sourceModel); + + sourceModel.validate(StorageStep.CONFIG); + + ui.getModel().validate(); + } + + + public void obtainServerConnexion() { + StorageUIModel sourceModel = ui.getCentralSourceModel(); + StorageUILauncher.obtainServerConnexion(ui.getDelegateContext(), ui.getParentContainer(Window.class), sourceModel); + + sourceModel.validate(StorageStep.CONFIG); + + ui.getModel().validate(); + } + +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigReferentielUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigReferentielUI.jaxx index 7a63d6e..4360e0e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigReferentielUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigReferentielUI.jaxx @@ -41,21 +41,13 @@ <fr.ird.observe.application.swing.ui.storage.StorageUIModel id='model'/> <fr.ird.observe.application.swing.ui.storage.StorageUIModel id='centralSourceModel' - initializer='model.getCentralSourceModel()'/> + initializer='model.getCentralSourceModel()'/> <ButtonGroup id='creationMode' onStateChanged='model.setReferentielImportMode((CreationMode) creationMode.getSelectedValue())'/> <CardLayout id='configLayout'/> - <script><![CDATA[ -@Override -public void init() { - getHandler().initUI(this); -} -]]> - </script> - <JPanel id='content' layout='{new BorderLayout()}'> <Table id="referentielSourceConfig" insets="1" weightx='1' fill='both' @@ -64,12 +56,9 @@ public void init() { <cell anchor='north'> <JPanel id='referentielModeConfig'> <JRadioButton id="noImportReferentiel" styleClass='creationMode'/> - <JRadioButton id="importReferentielFromBackup" - styleClass='creationMode'/> - <JRadioButton id="importReferentielFromRemote" - styleClass='creationMode'/> - <JRadioButton id="importReferentielFromServer" - styleClass='creationMode'/> + <JRadioButton id="importReferentielFromBackup" styleClass='creationMode'/> + <JRadioButton id="importReferentielFromRemote" styleClass='creationMode'/> + <JRadioButton id="importReferentielFromServer" styleClass='creationMode'/> </JPanel> </cell> </row> @@ -87,12 +76,10 @@ public void init() { </Table> <!-- importer le référentiel a partir d'une sauvegarde --> - <Table id='IMPORT_EXTERNAL_DUMP' - constraints='"IMPORT_EXTERNAL_DUMP"'> + <Table id='IMPORT_EXTERNAL_DUMP' constraints='"IMPORT_EXTERNAL_DUMP"'> <row> <cell> - <JLabel - text='observe.storage.importExternalDumpReferentiel.config'/> + <JLabel text='observe.storage.importExternalDumpReferentiel.config'/> </cell> </row> <row weighty='1'> @@ -101,19 +88,17 @@ public void init() { onKeyReleased='centralSourceModel.setDumpFile(new File(((JTextField)event.getSource()).getText())); model.validate();'/> </cell> <cell anchor="east"> - <JButton id="fileChooserAction" - onActionPerformed="getHandler().chooseDumpFile(this)"/> + <JButton id="fileChooserAction" onActionPerformed="handler.chooseDumpFile()"/> </cell> </row> </Table> <!-- importer le référentiel a partir d'une base distante --> - <Table id='IMPORT_REMOTE_STORAGE' fill="both" - constraints='"IMPORT_REMOTE_STORAGE"'> + <Table id='IMPORT_REMOTE_STORAGE' fill="both" constraints='"IMPORT_REMOTE_STORAGE"'> <row> <cell> <JLabel - text='observe.storage.importRemoteStorageReferentiel.config'/> + text='observe.storage.importRemoteStorageReferentiel.config'/> </cell> </row> <row> @@ -121,8 +106,7 @@ public void init() { <JLabel id='centralSourceLabel'/> </cell> <cell> - <JButton id='configureCentralSource' - onActionPerformed='getHandler().obtainRemoteConnexion(this)'/> + <JButton id='configureCentralSource' onActionPerformed='handler.obtainRemoteConnexion()'/> </cell> <cell anchor='east'> <JLabel id='centralSourceStatus'/> @@ -141,12 +125,10 @@ public void init() { </Table> <!-- importer le référentiel a partir d'un serveur distant --> - <Table id='IMPORT_SERVER_STORAGE' fill="both" - constraints='"IMPORT_SERVER_STORAGE"'> + <Table id='IMPORT_SERVER_STORAGE' fill="both" constraints='"IMPORT_SERVER_STORAGE"'> <row> <cell> - <JLabel - text='observe.storage.importServerStorageReferentiel.config'/> + <JLabel text='observe.storage.importServerStorageReferentiel.config'/> </cell> </row> <row> @@ -154,8 +136,7 @@ public void init() { <JLabel id='centralSourceServerLabel'/> </cell> <cell> - <JButton id='configureCentralSourceServer' - onActionPerformed='getHandler().obtainServerConnexion(this)'/> + <JButton id='configureCentralSourceServer' onActionPerformed='handler.obtainServerConnexion()'/> </cell> <cell anchor='east'> <JLabel id='centralSourceServerStatus'/> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigReferentielUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigReferentielUIHandler.java new file mode 100644 index 0000000..11b3ebb --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigReferentielUIHandler.java @@ -0,0 +1,117 @@ +package fr.ird.observe.application.swing.ui.storage.tabs; + +import fr.ird.observe.application.swing.configuration.constants.CreationMode; +import fr.ird.observe.application.swing.ui.MnemonicHelper; +import fr.ird.observe.application.swing.ui.UIHelper; +import fr.ird.observe.application.swing.ui.storage.StorageStep; +import fr.ird.observe.application.swing.ui.storage.StorageUILauncher; +import fr.ird.observe.application.swing.ui.storage.StorageUIModel; +import jaxx.runtime.spi.UIHandler; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.AbstractAction; +import javax.swing.JComponent; +import java.awt.Window; +import java.awt.event.ActionEvent; +import java.beans.PropertyChangeListener; +import java.io.File; + +import static javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW; +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 27/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since X + */ +public class ConfigReferentielUIHandler extends StorageTabUIHandler<ConfigReferentielUI> implements UIHandler<ConfigReferentielUI> { + + /** Logger */ + private static final Log log = LogFactory.getLog(ConfigReferentielUIHandler.class); + + public static final String ACTION_DO_CONFIGURE_REMOTE_SOURCE = "doConfigureRemoteSource"; + public static final String ACTION_DO_CONFIGURE_REMOTE_SERVER = "doConfigureRemoteServer"; + + @Override + public void afterInit(ConfigReferentielUI ui) { + + if (ui.getStep() != null) { + ui.setDescriptionText(t(ui.getStep().getDescription())); + + PropertyChangeListener listener = evt -> { + String propertyName = evt.getPropertyName(); + if (StorageUIModel.REFERENTIEL_IMPORT_MODE_PROPERTY_NAME.equals(propertyName)) { + CreationMode id = (CreationMode) evt.getNewValue(); + refreshConfig(id.name()); + } + }; + ui.getModel().addPropertyChangeListener(listener); + ui.getModel().setReferentielImportMode(CreationMode.IMPORT_EXTERNAL_DUMP); + + ui.getActionMap().put(ACTION_DO_CONFIGURE_REMOTE_SOURCE, new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + if (StorageStep.CONFIG_REFERENTIEL == ui.getModel().getStep()) { + ui.getConfigureCentralSource().doClick(); + } + } + }); + ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(MnemonicHelper.KEY_STROKE_STORAGE_DO_CHOOSE_DIRECTORY, ACTION_DO_CONFIGURE_REMOTE_SOURCE); + MnemonicHelper.addKeyStroke(ui.getConfigureCentralSource(), MnemonicHelper.KEY_STROKE_STORAGE_DO_CHOOSE_DIRECTORY); + + ui.getActionMap().put(ACTION_DO_CONFIGURE_REMOTE_SERVER, new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + if (StorageStep.CONFIG_REFERENTIEL == ui.getModel().getStep()) { + ui.getConfigureCentralSourceServer().doClick(); + } + } + }); + ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(MnemonicHelper.KEY_STROKE_STORAGE_DO_CONFIGURE_REMOTE_SERVER, ACTION_DO_CONFIGURE_REMOTE_SERVER); + MnemonicHelper.addKeyStroke(ui.getConfigureCentralSourceServer(), MnemonicHelper.KEY_STROKE_STORAGE_DO_CONFIGURE_REMOTE_SERVER); + } + } + + public void refreshConfig(String configId) { + JComponent c = (JComponent) ui.getObjectById(configId); + if (c != null) { + if (log.isDebugEnabled()) { + log.debug(configId); + } + ui.configLayout.show(ui.configContent, configId); + } + } + + public void chooseDumpFile() { + File f = UIHelper.chooseFile(ui, + t("observe.title.choose.db.dump"), + t("observe.action.choose.db.dump"), + ui.getModel().getDumpFile(), + "^.+\\.sql\\.gz$", + t("observe.action.choose.db.dump.description")); + ui.getCentralSourceModel().setDumpFile(f); + ui.getModel().validate(); + } + + public void obtainRemoteConnexion() { + StorageUIModel sourceModel = ui.getCentralSourceModel(); + StorageUILauncher.obtainRemoteConnexion(ui.getDelegateContext(), ui.getParentContainer(Window.class), sourceModel); + + sourceModel.validate(StorageStep.CONFIG); + + ui.getModel().validate(); + } + + public void obtainServerConnexion() { + StorageUIModel sourceModel = ui.getCentralSourceModel(); + StorageUILauncher.obtainServerConnexion(ui.getDelegateContext(), ui.getParentContainer(Window.class), sourceModel); + + sourceModel.validate(StorageStep.CONFIG); + + ui.getModel().validate(); + } + + +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUI.jaxx index 39f9735..e66ce8d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUI.jaxx @@ -48,14 +48,6 @@ <CardLayout id='configLayout'/> - <script><![CDATA[ -@Override -public void init() { - getHandler().initUI(this); -} -]]> - </script> - <JPanel id='content' layout='{new BorderLayout()}'> <Table fill='both' weightx='1' constraints='BorderLayout.CENTER'> <row> @@ -75,7 +67,7 @@ public void init() { onKeyReleased='getModel().setDumpFile(new File(((JTextField)event.getSource()).getText()))'/> </cell> <cell anchor="east"> - <JButton id="fileChooserAction" onActionPerformed="getHandler().chooseDumpFile(this)"/> + <JButton id="fileChooserAction" onActionPerformed="handler.chooseDumpFile()"/> </cell> </row> </Table> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUI.jcss index d08fa62..f69a574 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUI.jcss @@ -29,7 +29,7 @@ } #dumpFile { - text:{model.getDumpFile()+""}; + text:{model.getDumpFile() + ""}; } #fileChooserAction { @@ -99,21 +99,6 @@ selected:{model.isUseSsl()}; } -/*#remoteSslCertificatFile { - text:{model.getSslCertificatFile()+""}; - enabled:{model.isUseSsl()}; -} - -#remoteSslCertificatFileChooseaction { - actionIcon:"fileChooser"; - enabled:{model.isUseSsl()}; -} - -#remoteSslCertificatPassword { - enabled:{model.isUseSsl()}; - text:{model.getSslCertificatPassword()==null ? "" : new String(model.getSslCertificatPassword())}; -}*/ - #testRemoteAction { text:"observe.action.test.remote"; toolTipText:"observe.action.test.remote.tip"; @@ -123,14 +108,13 @@ } #connexionStatusPanel { - /*minimumSize:{new Dimension(10,80)};*/ columnHeaderView:{connexionStatusLabel}; - border:{new LineBorder(getHandler().updateConnexionStatutColor(ConfigUI.this, model.getConnexionStatus()),2)}; + border:{new LineBorder(handler.updateConnexionStatutColor(model.getConnexionStatus()),2)}; } #connexionStatusLabel { text:{I18nEnumHelper.getLabel(model.getConnexionStatus())}; - icon:{getHandler().updateConnexionStatutIcon(ConfigUI.this, model.getConnexionStatus())}; + icon:{handler.updateConnexionStatutIcon(model.getConnexionStatus())}; } #connexionStatus { @@ -139,7 +123,7 @@ font-size:11; contentType : "text/html"; editorKit : {new HTMLEditorKit()}; - text:{getHandler().updateConnexionStatutText(ConfigUI.this, model.getConnexionStatus())}; + text:{handler.updateConnexionStatutText(model.getConnexionStatus())}; _untestedColor:{Color.GRAY}; _successColor:{Color.GREEN}; _failedColor:{Color.RED}; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUIHandler.java new file mode 100644 index 0000000..9205202 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUIHandler.java @@ -0,0 +1,149 @@ +package fr.ird.observe.application.swing.ui.storage.tabs; + +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.ObserveTextGenerator; +import fr.ird.observe.application.swing.configuration.constants.DbMode; +import fr.ird.observe.application.swing.db.constants.ConnexionStatus; +import fr.ird.observe.application.swing.ui.MnemonicHelper; +import fr.ird.observe.application.swing.ui.UIHelper; +import fr.ird.observe.application.swing.ui.storage.StorageStep; +import fr.ird.observe.application.swing.ui.storage.StorageUIModel; +import jaxx.runtime.spi.UIHandler; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.AbstractAction; +import javax.swing.Icon; +import javax.swing.JComponent; +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.event.ActionEvent; +import java.beans.PropertyChangeListener; +import java.io.File; + +import static javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW; +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 27/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since X + */ +public class ConfigUIHandler extends StorageTabUIHandler<ConfigUI> implements UIHandler<ConfigUI> { + + /** Logger */ + private static final Log log = LogFactory.getLog(ConfigUIHandler.class); + + public static final String ACTION_DO_CHOOSE_FILE = "doChooseFile"; + public static final String ACTION_DO_USE_SSL = "doUseSsl"; + public static final String ACTION_DO_KEEP_CONFIGURATION = "doKeepConfiguration"; + + @Override + public void afterInit(ConfigUI ui) { + +// MnemonicHelper.addKeyStrokeFromMnemonic(ui); + PropertyChangeListener listener = evt -> { + StorageUIModel model = (StorageUIModel) evt.getSource(); + String propertyName = evt.getPropertyName(); + if (StorageUIModel.CREATION_MODE_PROPERTY_NAME.equals(propertyName) || + StorageUIModel.DB_MODE_PROPERTY_NAME.equals(propertyName)) { + String id = null; + if (model.getDbMode() == DbMode.USE_REMOTE) { + id = DbMode.USE_REMOTE.name(); + } else if (model.getDbMode() == DbMode.USE_SERVER) { + id = DbMode.USE_SERVER.name(); + } else { + if (model.getCreationMode() != null) { + id = model.getCreationMode().name(); + } + } + if (id != null) { + refreshConfig(ui, id); + } + } + }; + ui.getModel().addPropertyChangeListener(listener); + + ui.getActionMap().put(ACTION_DO_CHOOSE_FILE, new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + if (StorageStep.CONFIG == ui.getModel().getStep()) { + ui.getFileChooserAction().doClick(); + } + } + }); + ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(MnemonicHelper.KEY_STROKE_STORAGE_DO_CHOOSE_FILE, ACTION_DO_CHOOSE_FILE); + MnemonicHelper.addKeyStroke(ui.getFileChooserAction(), MnemonicHelper.KEY_STROKE_STORAGE_DO_CHOOSE_FILE); + + ui.getActionMap().put(ACTION_DO_USE_SSL, new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + if (StorageStep.CONFIG == ui.getModel().getStep()) { + ui.getRemoteUseSsl().doClick(); + } + } + }); + ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(MnemonicHelper.KEY_STROKE_STORAGE_DO_USE_SSL, ACTION_DO_USE_SSL); + MnemonicHelper.addKeyStroke(ui.getRemoteUseSsl(), MnemonicHelper.KEY_STROKE_STORAGE_DO_USE_SSL); + + ui.getActionMap().put(ACTION_DO_KEEP_CONFIGURATION, new AbstractAction() { + @Override + public void actionPerformed(ActionEvent e) { + if (StorageStep.CONFIG == ui.getModel().getStep()) { + ui.getStoreRemoteConfig().doClick(); + } + } + }); + ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(MnemonicHelper.KEY_STROKE_STORAGE_KEEP_CONFIGURATION, ACTION_DO_KEEP_CONFIGURATION); + MnemonicHelper.addKeyStroke(ui.getStoreRemoteConfig(), MnemonicHelper.KEY_STROKE_STORAGE_KEEP_CONFIGURATION); + } + + public void refreshConfig(ConfigUI ui, String configId) { + JComponent c = (JComponent) ui.getObjectById(configId); + if (c != null) { + if (log.isDebugEnabled()) { + log.debug(configId); + } + ui.configLayout.show(ui.configContent, configId); + String text = (String) c.getClientProperty("description"); + ui.setDescriptionText(t(text)); + if (c.equals(ui.IMPORT_REMOTE_STORAGE)) { + ui.IMPORT_REMOTE_STORAGE_content.add(ui.remoteConfig, BorderLayout.CENTER); + } else if (c.equals(ui.IMPORT_SERVER_STORAGE)) { + ui.IMPORT_SERVER_STORAGE_content.add(ui.remoteConfig, BorderLayout.CENTER); + } else if (c.equals(ui.USE_REMOTE)) { + ui.USE_REMOTE_content.add(ui.remoteConfig, BorderLayout.CENTER); + } else if (c.equals(ui.USE_SERVER)) { + ui.USE_SERVER_content.add(ui.remoteConfig, BorderLayout.CENTER); + } + } + } + + + public Icon updateConnexionStatutIcon(ConnexionStatus status) { + return (Icon) ui.getConnexionStatus().getClientProperty(status.name().toLowerCase() + "Icon"); + } + + public Color updateConnexionStatutColor(ConnexionStatus status) { + return (Color) ui.getConnexionStatus().getClientProperty(status.name().toLowerCase() + "Color"); + } + + public String updateConnexionStatutText(@SuppressWarnings("unused") ConnexionStatus status) { + ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); + ObserveTextGenerator textGenerator = applicationContext.getTextGenerator(); + return textGenerator.getConnexionTestResultMessage(ui.getModel()); + } + + public void chooseDumpFile() { + File f = UIHelper.chooseFile(ui, + t("observe.title.choose.db.dump"), + t("observe.action.choose.db.dump"), + ui.getModel().getDumpFile(), + "^.+\\.sql\\.gz$", + t("observe.action.choose.db.dump.description")); + ui.getModel().setDumpFile(f); + } + + +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfirmUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfirmUI.jaxx index 5a849af..eef41bf 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfirmUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfirmUI.jaxx @@ -32,16 +32,6 @@ <StorageStep id='step' initializer='StorageStep.CONFIRM'/> - <fr.ird.observe.application.swing.ui.storage.StorageUIModel id='model'/> - - <script><![CDATA[ -@Override -public void init() { - getHandler().initUI(this); -} -]]> - </script> - <JPanel id='content'> <JScrollPane id="resumePane" constraints='BorderLayout.CENTER'> <JTextPane id='resume'/> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfirmUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfirmUIHandler.java new file mode 100644 index 0000000..867e4c6 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfirmUIHandler.java @@ -0,0 +1,21 @@ +package fr.ird.observe.application.swing.ui.storage.tabs; + +import jaxx.runtime.spi.UIHandler; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 27/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since X + */ +public class ConfirmUIHandler extends StorageTabUIHandler<ConfirmUI> implements UIHandler<ConfirmUI> { + + @Override + public void afterInit(ConfirmUI ui) { + if (ui.getStep() != null) { + ui.setDescriptionText(t(ui.getStep().getDescription())); + } + } +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/RolesTableModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/RolesTableModel.java index 8aeb544..1f2d56a 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/RolesTableModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/RolesTableModel.java @@ -138,7 +138,7 @@ public class RolesTableModel extends AbstractTableModel { default: throw new IllegalStateException( "can not get value for row " + rowIndex + - ", col " + columnIndex); + ", col " + columnIndex); } } return value; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/RolesUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/RolesUI.jaxx index 199223d..c45a678 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/RolesUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/RolesUI.jaxx @@ -36,19 +36,13 @@ <StorageUIModel id='model'/> - <SecurityModel id='securityModel' - initializer='model.getSecurityModel()'/> + <SecurityModel id='securityModel' initializer='model.getSecurityModel()'/> <!-- les roles récupérés depuis la base distante --> <RolesTableModel id='rolesModel'/> <script><![CDATA[ -@Override -public void init() { - getHandler().initUI(this); -} - public String updateAdministrateur(String role) { return t("observe.storage.security.administrateur", role); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/RolesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/RolesUIHandler.java new file mode 100644 index 0000000..7123fc4 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/RolesUIHandler.java @@ -0,0 +1,74 @@ +package fr.ird.observe.application.swing.ui.storage.tabs; + +import fr.ird.observe.application.swing.ui.UIHelper; +import jaxx.runtime.spi.UIHandler; +import jaxx.runtime.swing.editor.MyDefaultCellEditor; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.JTable; +import javax.swing.table.DefaultTableCellRenderer; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 27/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since X + */ +public class RolesUIHandler extends StorageTabUIHandler<RolesUI> implements UIHandler<RolesUI> { + + /** Logger */ + private static final Log log = LogFactory.getLog(RolesUIHandler.class); + + @Override + public void afterInit(RolesUI ui) { + if (ui.getStep() != null) { + ui.setDescriptionText(t(ui.getStep().getDescription())); + } + ui.getSecurityModel().addPropertyChangeListener(evt -> { + if (log.isDebugEnabled()) { + log.debug("Security model changed [" + evt.getPropertyName() + "] <" + evt.getOldValue() + " : " + evt.getNewValue() + ">"); + } + ui.getModel().validate(); + }); + + JTable table = ui.getRoles(); + table.setRowHeight(24); + + UIHelper.fixTableColumnWidth(table, 1, 100); + UIHelper.fixTableColumnWidth(table, 2, 100); + UIHelper.fixTableColumnWidth(table, 3, 100); + UIHelper.fixTableColumnWidth(table, 4, 100); + + DefaultTableCellRenderer renderer = new DefaultTableCellRenderer(); + + UIHelper.setI18nTableHeaderRenderer( + table, + RolesTableModel.COLUMN_NAMES[0], + RolesTableModel.COLUMN_NAME_TIPS[0], + RolesTableModel.COLUMN_NAMES[1], + RolesTableModel.COLUMN_NAME_TIPS[1], + RolesTableModel.COLUMN_NAMES[2], + RolesTableModel.COLUMN_NAME_TIPS[2], + RolesTableModel.COLUMN_NAMES[3], + RolesTableModel.COLUMN_NAME_TIPS[3], + RolesTableModel.COLUMN_NAMES[4], + RolesTableModel.COLUMN_NAME_TIPS[4] + ); + + UIHelper.setTableColumnRenderer(table, 0, UIHelper.newStringTableCellRenderer(renderer, 50, true)); + UIHelper.setTableColumnRenderer(table, 1, UIHelper.newBooleanTableCellRenderer(renderer)); + UIHelper.setTableColumnRenderer(table, 2, UIHelper.newBooleanTableCellRenderer(renderer)); + UIHelper.setTableColumnRenderer(table, 3, UIHelper.newBooleanTableCellRenderer(renderer)); + UIHelper.setTableColumnRenderer(table, 4, UIHelper.newBooleanTableCellRenderer(renderer)); + + UIHelper.setTableColumnEditor(table, 1, MyDefaultCellEditor.newBooleanEditor()); + UIHelper.setTableColumnEditor(table, 2, MyDefaultCellEditor.newBooleanEditor()); + UIHelper.setTableColumnEditor(table, 3, MyDefaultCellEditor.newBooleanEditor()); + UIHelper.setTableColumnEditor(table, 4, MyDefaultCellEditor.newBooleanEditor()); + + } + +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/SelectDataUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/SelectDataUI.jaxx index d1b9882..44d97c6 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/SelectDataUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/SelectDataUI.jaxx @@ -35,16 +35,6 @@ <StorageStep id='step' initializer='StorageStep.SELECT_DATA'/> - <StorageUIModel id='model'/> - - <script><![CDATA[ -@Override -public void init() { - getHandler().initUI(this); -} -]]> - </script> - <JPanel id='content'> <JScrollPane id='selectedTreePane' constraints='BorderLayout.CENTER' columnHeaderView='{selectTreeHeader}'> <SelectionTree id='selectTree'/> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/SelectDataUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/SelectDataUIHandler.java new file mode 100644 index 0000000..55972ab --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/SelectDataUIHandler.java @@ -0,0 +1,22 @@ +package fr.ird.observe.application.swing.ui.storage.tabs; + +import jaxx.runtime.spi.UIHandler; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 27/11/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since X + */ +public class SelectDataUIHandler extends StorageTabUIHandler<SelectDataUI> implements UIHandler<SelectDataUI> { + + @Override + public void afterInit(SelectDataUI ui) { + if (ui.getStep() != null) { + ui.setDescriptionText(t(ui.getStep().getDescription())); + } + ui.getSelectTree().installUI(); + } +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/StorageTabUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/StorageTabUI.jaxx index fd9af88..2762099 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/StorageTabUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/StorageTabUI.jaxx @@ -24,8 +24,7 @@ <!-- La base des contenu d'onglet --> <!-- **************************** --> -<JPanel id="tabPanel" - abstract='true' +<JPanel id="tabPanel" abstract='true' implements='jaxx.runtime.swing.wizard.WizardStepUI<StorageStep, StorageUIModel>'> <import> @@ -43,17 +42,12 @@ static org.nuiton.i18n.I18n.n </import> - <StorageTabUIHandler id='handler'/> - - <StorageUIModel id='model' - initializer='getContextValue(StorageUIModel.class)'/> + <StorageUIModel id='model' initializer='getContextValue(StorageUIModel.class)'/> <script><![CDATA[ public abstract StorageStep getStep(); -public abstract void init(); - public void destroy() { description.setText(""); UIHelper.destroy(this); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/StorageTabUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/StorageTabUIHandler.java index 32dde07..477bcdd 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/StorageTabUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/StorageTabUIHandler.java @@ -21,43 +21,14 @@ */ package fr.ird.observe.application.swing.ui.storage.tabs; -import fr.ird.observe.application.swing.I18nEnumHelper; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ObserveTextGenerator; -import fr.ird.observe.application.swing.configuration.constants.CreationMode; -import fr.ird.observe.application.swing.configuration.constants.DbMode; -import fr.ird.observe.application.swing.db.constants.ConnexionStatus; -import fr.ird.observe.application.swing.ui.UIHelper; -import fr.ird.observe.application.swing.ui.storage.StorageStep; -import fr.ird.observe.application.swing.ui.storage.StorageUILauncher; import fr.ird.observe.application.swing.ui.storage.StorageUIModel; import fr.ird.observe.services.configuration.ObserveDataSourceInformation; -import jaxx.runtime.swing.editor.MyDefaultCellEditor; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; +import jaxx.runtime.JAXXObject; -import javax.swing.AbstractAction; -import javax.swing.AbstractButton; -import javax.swing.Icon; -import javax.swing.JComponent; import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JRadioButton; -import javax.swing.JTable; -import javax.swing.KeyStroke; -import javax.swing.table.DefaultTableCellRenderer; -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Window; -import java.awt.event.ActionEvent; -import java.awt.event.InputEvent; -import java.awt.event.KeyEvent; -import java.beans.PropertyChangeListener; -import java.io.File; -import java.util.Date; -import static javax.swing.JComponent.WHEN_IN_FOCUSED_WINDOW; import static org.nuiton.i18n.I18n.t; /** @@ -66,447 +37,9 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class StorageTabUIHandler { +public class StorageTabUIHandler<U extends JAXXObject> { - private static final Log log = LogFactory.getLog(StorageTabUIHandler.class); - public static final String ACTION_DO_CHOOSE_FILE = "doChooseFile"; - public static final String ACTION_DO_USE_SSL = "doUseSsl"; - public static final String ACTION_DO_KEEP_CONFIGURATION = "doKeepConfiguration"; - public static final String ACTION_DO_CONFIGURE_REMOTE_SOURCE = "doConfigureRemoteSource"; - public static final String ACTION_DO_CONFIGURE_REMOTE_SERVER = "doConfigureRemoteServer"; - public static final String ACTION_DO_BACKUP = "doBackup"; - public static final String ACTION_DO_CHOOSE_DIRECTORY = "doChooseDirectory"; - public static final KeyStroke KEY_STROKE_DO_CONFIGURE_REMOTE_SERVER = KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_MASK); - public static final KeyStroke KEY_STROKE_DO_BACKUP = KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK); - public static final KeyStroke KEY_STROKE_DO_CHOOSE_DIRECTORY = KeyStroke.getKeyStroke(KeyEvent.VK_D, InputEvent.CTRL_MASK); - public static final KeyStroke KEY_STROKE_KEEP_CONFIGURATION = KeyStroke.getKeyStroke(KeyEvent.VK_K, InputEvent.CTRL_MASK); - public static final KeyStroke KEY_STROKE_DO_USE_SSL = KeyStroke.getKeyStroke(KeyEvent.VK_U, InputEvent.CTRL_MASK); - public static final KeyStroke KEY_STROKE_DO_CHOOSE_FILE = KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK); - - public boolean updateCreationModeLayout(ChooseDbModeUI ui, boolean visible, JRadioButton button) { - JPanel panel = ui.getUseCreateMode(); - if (visible) { - for (Component c : panel.getComponents()) { - if (button.equals(c)) { - // button already in - return true; - } - } - - panel.add(button); - } else { - for (Component c : panel.getComponents()) { - if (button.equals(c)) { - // button still in - panel.remove(c); - return false; - } - } - } - return visible; - } - - public void initUI(final ChooseDbModeUI ui) { - - PropertyChangeListener listener = evt -> { - StorageUIModel model = (StorageUIModel) evt.getSource(); - - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - ObserveTextGenerator textGenerator = applicationContext.getTextGenerator(); - String txt = textGenerator.getLoadDataSourceResume(model); - ui.getResume().setText(txt); - }; - StorageUIModel model = ui.getModel(); - model.addPropertyChangeListener(StorageUIModel.DB_MODE_PROPERTY_NAME, listener); - model.addPropertyChangeListener(StorageUIModel.CREATION_MODE_PROPERTY_NAME, listener); - ui.setDescriptionText(t(ui.getStep().getDescription())); - } - - public void initUI(ConfigUI ui) { - - PropertyChangeListener listener = evt -> { - StorageUIModel model = (StorageUIModel) evt.getSource(); - String propertyName = evt.getPropertyName(); - if (StorageUIModel.CREATION_MODE_PROPERTY_NAME.equals(propertyName) || - StorageUIModel.DB_MODE_PROPERTY_NAME.equals(propertyName)) { - String id = null; - if (model.getDbMode() == DbMode.USE_REMOTE) { - id = DbMode.USE_REMOTE.name(); - } else if (model.getDbMode() == DbMode.USE_SERVER) { - id = DbMode.USE_SERVER.name(); - } else { - if (model.getCreationMode() != null) { - id = model.getCreationMode().name(); - } - } - if (id != null) { - refreshConfig(ui, id); - } - } - }; - ui.getModel().addPropertyChangeListener(listener); - - ui.getActionMap().put(ACTION_DO_CHOOSE_FILE, new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - if (StorageStep.CONFIG == ui.getModel().getStep()) { - ui.getFileChooserAction().doClick(); - } - } - }); - ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KEY_STROKE_DO_CHOOSE_FILE, ACTION_DO_CHOOSE_FILE); - addKeyStroke(ui.getFileChooserAction(), KEY_STROKE_DO_CHOOSE_FILE); - - ui.getActionMap().put(ACTION_DO_USE_SSL, new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - if (StorageStep.CONFIG == ui.getModel().getStep()) { - ui.getRemoteUseSsl().doClick(); - } - } - }); - ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KEY_STROKE_DO_USE_SSL, ACTION_DO_USE_SSL); - addKeyStroke(ui.getRemoteUseSsl(), KEY_STROKE_DO_USE_SSL); - - ui.getActionMap().put(ACTION_DO_KEEP_CONFIGURATION, new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - if (StorageStep.CONFIG == ui.getModel().getStep()) { - ui.getStoreRemoteConfig().doClick(); - } - } - }); - ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KEY_STROKE_KEEP_CONFIGURATION, ACTION_DO_KEEP_CONFIGURATION); - addKeyStroke(ui.getStoreRemoteConfig(), KEY_STROKE_KEEP_CONFIGURATION); - } - - public void initUI(ConfigReferentielUI ui) { - if (ui.getStep() != null) { - ui.setDescriptionText(t(ui.getStep().getDescription())); - - PropertyChangeListener listener = evt -> { - String propertyName = evt.getPropertyName(); - if (StorageUIModel.REFERENTIEL_IMPORT_MODE_PROPERTY_NAME.equals(propertyName)) { - CreationMode id = (CreationMode) evt.getNewValue(); - refreshConfig(ui, id.name()); - } - }; - ui.getModel().addPropertyChangeListener(listener); - ui.getModel().setReferentielImportMode(CreationMode.IMPORT_EXTERNAL_DUMP); - - ui.getActionMap().put(ACTION_DO_CONFIGURE_REMOTE_SOURCE, new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - if (StorageStep.CONFIG_REFERENTIEL == ui.getModel().getStep()) { - ui.getConfigureCentralSource().doClick(); - } - } - }); - ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KEY_STROKE_DO_CHOOSE_DIRECTORY, ACTION_DO_CONFIGURE_REMOTE_SOURCE); - addKeyStroke(ui.getConfigureCentralSource(), KEY_STROKE_DO_CHOOSE_DIRECTORY); - - ui.getActionMap().put(ACTION_DO_CONFIGURE_REMOTE_SERVER, new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - if (StorageStep.CONFIG_REFERENTIEL == ui.getModel().getStep()) { - ui.getConfigureCentralSourceServer().doClick(); - } - } - }); - ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KEY_STROKE_DO_CONFIGURE_REMOTE_SERVER, ACTION_DO_CONFIGURE_REMOTE_SERVER); - addKeyStroke(ui.getConfigureCentralSourceServer(), KEY_STROKE_DO_CONFIGURE_REMOTE_SERVER); - } - } - - public void initUI(ConfigDataUI ui) { - if (ui.getStep() != null) { - ui.setDescriptionText(t(ui.getStep().getDescription())); - - PropertyChangeListener listener = evt -> { - String propertyName = evt.getPropertyName(); - if (StorageUIModel.DATA_IMPORT_MODE_PROPERTY_NAME.equals(propertyName)) { - CreationMode id = (CreationMode) evt.getNewValue(); - - if (id != null) { - refreshConfig(ui, id.name()); - - } - - } - }; - ui.getModel().addPropertyChangeListener(listener); - ui.getModel().setDataImportMode(CreationMode.EMPTY); - } - } - - public void initUI(RolesUI ui) { - if (ui.getStep() != null) { - ui.setDescriptionText(t(ui.getStep().getDescription())); - } - - ui.getSecurityModel().addPropertyChangeListener(evt -> { - if (log.isDebugEnabled()) { - log.debug("Security model changed [" + evt.getPropertyName() + "] <" + evt.getOldValue() + " : " + evt.getNewValue() + ">"); - } - ui.getModel().validate(); - }); - - JTable table = ui.getRoles(); - table.setRowHeight(24); - - UIHelper.fixTableColumnWidth(table, 1, 100); - UIHelper.fixTableColumnWidth(table, 2, 100); - UIHelper.fixTableColumnWidth(table, 3, 100); - UIHelper.fixTableColumnWidth(table, 4, 100); - - DefaultTableCellRenderer renderer = new DefaultTableCellRenderer(); - - UIHelper.setI18nTableHeaderRenderer( - table, - RolesTableModel.COLUMN_NAMES[0], - RolesTableModel.COLUMN_NAME_TIPS[0], - RolesTableModel.COLUMN_NAMES[1], - RolesTableModel.COLUMN_NAME_TIPS[1], - RolesTableModel.COLUMN_NAMES[2], - RolesTableModel.COLUMN_NAME_TIPS[2], - RolesTableModel.COLUMN_NAMES[3], - RolesTableModel.COLUMN_NAME_TIPS[3], - RolesTableModel.COLUMN_NAMES[4], - RolesTableModel.COLUMN_NAME_TIPS[4] - ); - - UIHelper.setTableColumnRenderer(table, 0, UIHelper.newStringTableCellRenderer(renderer, 50, true)); - UIHelper.setTableColumnRenderer(table, 1, UIHelper.newBooleanTableCellRenderer(renderer)); - UIHelper.setTableColumnRenderer(table, 2, UIHelper.newBooleanTableCellRenderer(renderer)); - UIHelper.setTableColumnRenderer(table, 3, UIHelper.newBooleanTableCellRenderer(renderer)); - UIHelper.setTableColumnRenderer(table, 4, UIHelper.newBooleanTableCellRenderer(renderer)); - - UIHelper.setTableColumnEditor(table, 1, MyDefaultCellEditor.newBooleanEditor()); - UIHelper.setTableColumnEditor(table, 2, MyDefaultCellEditor.newBooleanEditor()); - UIHelper.setTableColumnEditor(table, 3, MyDefaultCellEditor.newBooleanEditor()); - UIHelper.setTableColumnEditor(table, 4, MyDefaultCellEditor.newBooleanEditor()); - - } - - public void initUI(SelectDataUI ui) { - if (ui.getStep() != null) { - ui.setDescriptionText(t(ui.getStep().getDescription())); - } - ui.getSelectTree().installUI(); - } - - public void initUI(BackupUI ui) { - if (ui.getStep() != null) { - ui.setDescriptionText(t(ui.getStep().getDescription())); - - ui.getActionMap().put(ACTION_DO_BACKUP, new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - if (StorageStep.BACKUP == ui.getModel().getStep()) { - ui.getDoBackup().doClick(); - } - } - }); - ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KEY_STROKE_DO_BACKUP, ACTION_DO_BACKUP); - addKeyStroke(ui.getDoBackup(), KEY_STROKE_DO_BACKUP); - - ui.getActionMap().put(ACTION_DO_CHOOSE_DIRECTORY, new AbstractAction() { - @Override - public void actionPerformed(ActionEvent e) { - if (StorageStep.BACKUP == ui.getModel().getStep()) { - ui.getChooseFileAction().doClick(); - } - } - }); - ui.getInputMap(WHEN_IN_FOCUSED_WINDOW).put(KEY_STROKE_DO_CHOOSE_DIRECTORY, ACTION_DO_CHOOSE_DIRECTORY); - addKeyStroke(ui.getChooseFileAction(), KEY_STROKE_DO_CHOOSE_DIRECTORY); - } - } - - protected void addKeyStroke(AbstractButton component, KeyStroke actionKey) { - - String actionStr = actionKey.toString().replace("pressed", " + "); - String text = component.getText() + " (" + actionStr + ")"; - component.setText(text); - String tip = component.getToolTipText() + " (" + actionStr + ")"; - component.setToolTipText(tip); - - } - - public void initUI(ConfirmUI ui) { - if (ui.getStep() != null) { - ui.setDescriptionText(t(ui.getStep().getDescription())); - } - } - - public void chooseBackupFile(BackupUI ui) { - File f = UIHelper.chooseDirectory(ui, - t("observe.title.choose.db.dump.directory"), - t("observe.action.choose.db.dump.directory"), - new File(ui.getDirectoryText().getText())); - if (f != null) { - changeDirectory(ui, f); - } - } - - public void changeDirectory(BackupUI ui, File f) { - ui.getModel().setBackupFile(new File(f, ui.getFilenameText().getText())); - } - - public void changeFilename(BackupUI ui, String filename) { - ui.getModel().setBackupFile(new File(ui.getDirectoryText().getText(), filename)); - } - - public void refreshConfig(ConfigUI ui, String configId) { - JComponent c = (JComponent) ui.getObjectById(configId); - if (c != null) { - if (log.isDebugEnabled()) { - log.debug(configId); - } - ui.configLayout.show(ui.configContent, configId); - String text = (String) c.getClientProperty("description"); - ui.setDescriptionText(t(text)); - if (c.equals(ui.IMPORT_REMOTE_STORAGE)) { - ui.IMPORT_REMOTE_STORAGE_content.add(ui.remoteConfig, BorderLayout.CENTER); - } else if (c.equals(ui.IMPORT_SERVER_STORAGE)) { - ui.IMPORT_SERVER_STORAGE_content.add(ui.remoteConfig, BorderLayout.CENTER); - } else if (c.equals(ui.USE_REMOTE)) { - ui.USE_REMOTE_content.add(ui.remoteConfig, BorderLayout.CENTER); - } else if (c.equals(ui.USE_SERVER)) { - ui.USE_SERVER_content.add(ui.remoteConfig, BorderLayout.CENTER); - } - } - } - - public void refreshConfig(ConfigReferentielUI ui, String configId) { - JComponent c = (JComponent) ui.getObjectById(configId); - if (c != null) { - if (log.isDebugEnabled()) { - log.debug(configId); - } - ui.configLayout.show(ui.configContent, configId); - } - } - - public void refreshConfig(ConfigDataUI ui, String configId) { - JComponent c = (JComponent) ui.getObjectById(configId); - if (c != null) { - if (log.isDebugEnabled()) { - log.debug(configId); - } - ui.configLayout.show(ui.configContent, configId); - } - } - - public Icon updateConnexionStatutIcon(ConfigUI ui, ConnexionStatus status) { - return (Icon) ui.getConnexionStatus().getClientProperty(status.name().toLowerCase() + "Icon"); - } - - public Color updateConnexionStatutColor(ConfigUI ui, ConnexionStatus status) { - return (Color) ui.getConnexionStatus().getClientProperty(status.name().toLowerCase() + "Color"); - } - - public String updateConnexionStatutText(ConfigUI ui, @SuppressWarnings("unused") ConnexionStatus status) { - ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); - ObserveTextGenerator textGenerator = applicationContext.getTextGenerator(); - return textGenerator.getConnexionTestResultMessage(ui.getModel()); - } - - public void chooseDumpFile(ConfigUI ui) { - File f = UIHelper.chooseFile(ui, - t("observe.title.choose.db.dump"), - t("observe.action.choose.db.dump"), - ui.getModel().getDumpFile(), - "^.+\\.sql\\.gz$", - t("observe.action.choose.db.dump.description")); - ui.getModel().setDumpFile(f); - } - - public void chooseDumpFile(ConfigReferentielUI ui) { - File f = UIHelper.chooseFile(ui, - t("observe.title.choose.db.dump"), - t("observe.action.choose.db.dump"), - ui.getModel().getDumpFile(), - "^.+\\.sql\\.gz$", - t("observe.action.choose.db.dump.description")); - ui.getCentralSourceModel().setDumpFile(f); - ui.getModel().validate(); - } - - public void chooseDumpFile(ConfigDataUI ui) { - File f = UIHelper.chooseFile(ui, - t("observe.title.choose.db.dump"), - t("observe.action.choose.db.dump"), - ui.getModel().getDumpFile(), - "^.+\\.sql\\.gz$", - t("observe.action.choose.db.dump.description")); - ui.getCentralSourceModel().setDumpFile(f); - ui.getModel().validate(); - } - - protected String updateInternalDumpModeLabel(@SuppressWarnings("unused") boolean dumpExist) { - File f = ObserveSwingApplicationContext.get().getConfig().getInitialDbDump(); - String text; - if (f.exists()) { - text = t("observe.storage.internalDump.last.modified", new Date(f.lastModified())); - } else { - text = t("observe.storage.internalDump.not.exist"); - } - return I18nEnumHelper.getLabel(CreationMode.IMPORT_INTERNAL_DUMP) + text; - } - - public void obtainRemoteConnexion(ConfigReferentielUI ui) { - StorageUIModel sourceModel = ui.getCentralSourceModel(); - StorageUILauncher.obtainRemoteConnexion( - ui.getDelegateContext(), - ui.getParentContainer(Window.class), - sourceModel - ); - - sourceModel.validate(StorageStep.CONFIG); - - ui.getModel().validate(); - } - - public void obtainServerConnexion(ConfigReferentielUI ui) { - StorageUIModel sourceModel = ui.getCentralSourceModel(); - StorageUILauncher.obtainServerConnexion( - ui.getDelegateContext(), - ui.getParentContainer(Window.class), - sourceModel - ); - - sourceModel.validate(StorageStep.CONFIG); - - ui.getModel().validate(); - } - - public void obtainRemoteConnexion(ConfigDataUI ui) { - StorageUIModel sourceModel = ui.getCentralSourceModel(); - StorageUILauncher.obtainRemoteConnexion( - ui.getDelegateContext(), - ui.getParentContainer(Window.class), - sourceModel - ); - - sourceModel.validate(StorageStep.CONFIG); - - ui.getModel().validate(); - } - - - public void obtainServerConnexion(ConfigDataUI ui) { - StorageUIModel sourceModel = ui.getCentralSourceModel(); - StorageUILauncher.obtainServerConnexion( - ui.getDelegateContext(), - ui.getParentContainer(Window.class), - sourceModel - ); - - sourceModel.validate(StorageStep.CONFIG); - - ui.getModel().validate(); - } + protected U ui; public String updateStorageLabel(StorageUIModel service, boolean serviceValid, JLabel label, boolean remote) { String text; @@ -542,4 +75,9 @@ public class StorageTabUIHandler { return text; } + + public final void beforeInit(U ui) { + this.ui = ui; + } + } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/package.html b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/package.html index c45a704..1f2ab2b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/package.html +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/package.html @@ -22,7 +22,7 @@ <html> <body> <h1>Le paquetage des implantations de contenu d'onglet pour l'ui des - storages</h1> + storages</h1> TODO </body> </html> diff --git a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties index e7cf855..fb784e1 100644 --- a/application-swing/src/main/resources/i18n/application-swing_en_GB.properties +++ b/application-swing/src/main/resources/i18n/application-swing_en_GB.properties @@ -135,6 +135,10 @@ observe.action.stop.server.mode.tip=Stop server mode on local database observe.action.storage.applyAction=Apply observe.action.test.remote=Test connexion observe.action.test.remote.tip=Click here to validate remote connexion +observe.action.toFullScreen=Full screen mode +observe.action.toFullScreen.tip=Reload application in full screen mode +observe.action.toWindowScreen=Window screen mode +observe.action.toWindowScreen.tip=Reload application in wondow screen mode observe.actions.consolidate=Consolidate data observe.actions.consolidate.description=Consolidate observed data observe.actions.consolidate.message.activity=Computed data for activity %1$s diff --git a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties index 9ab8c56..1a7dde7 100644 --- a/application-swing/src/main/resources/i18n/application-swing_es_ES.properties +++ b/application-swing/src/main/resources/i18n/application-swing_es_ES.properties @@ -135,6 +135,10 @@ observe.action.stop.server.mode.tip=Parar el modo servidor de la base local observe.action.storage.applyAction=Aplicar observe.action.test.remote=Comprobar la conexión observe.action.test.remote.tip=Pulsar para comprobar la conexión con el servidor remoto +observe.action.toFullScreen=Mode plein écran \#TODO +observe.action.toFullScreen.tip=Recharcher l'application en mode plein écran \#TODO +observe.action.toWindowScreen=Mode fenêtre \#TODO +observe.action.toWindowScreen.tip=Recharger l'application en mode fenêtre \#TODO observe.actions.consolidate=Calcular los datos observe.actions.consolidate.description=Calcular los datos que no fueron observados observe.actions.consolidate.message.activity=Datos calculados para la actividad %1$s diff --git a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties index 517ecb4..842fc0c 100644 --- a/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties +++ b/application-swing/src/main/resources/i18n/application-swing_fr_FR.properties @@ -135,6 +135,10 @@ observe.action.stop.server.mode.tip=Arrêter le mode serveur de la base locale observe.action.storage.applyAction=Appliquer observe.action.test.remote=Valider la connexion observe.action.test.remote.tip=Cliquer pour valider la connexion au serveur distant +observe.action.toFullScreen=Mode plein écran +observe.action.toFullScreen.tip=Recharcher l'application en mode plein écran +observe.action.toWindowScreen=Mode fenêtre +observe.action.toWindowScreen.tip=Recharger l'application en mode fenêtre observe.actions.consolidate=Calculer les données observe.actions.consolidate.description=Calculer les données non observées observe.actions.consolidate.message.activity=Données calculées pour l'activité %1$s diff --git a/application-swing/src/main/resources/icons/action-fullScreen.png b/application-swing/src/main/resources/icons/action-fullScreen.png new file mode 100644 index 0000000..6845e04 Binary files /dev/null and b/application-swing/src/main/resources/icons/action-fullScreen.png differ diff --git a/application-swing/src/main/resources/icons/action-windowScreen.png b/application-swing/src/main/resources/icons/action-windowScreen.png new file mode 100644 index 0000000..fc6638e Binary files /dev/null and b/application-swing/src/main/resources/icons/action-windowScreen.png differ diff --git a/services-rest/src/test/java/fr/ird/observe/services/rest/service/actions/validate/ValidateServiceRestTest.java b/services-rest/src/test/java/fr/ird/observe/services/rest/service/actions/validate/ValidateServiceRestTest.java index 48ddb22..32f5085 100644 --- a/services-rest/src/test/java/fr/ird/observe/services/rest/service/actions/validate/ValidateServiceRestTest.java +++ b/services-rest/src/test/java/fr/ird/observe/services/rest/service/actions/validate/ValidateServiceRestTest.java @@ -38,12 +38,14 @@ import fr.ird.observe.services.dto.referential.PersonDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialDto; import fr.ird.observe.services.dto.referential.SexDto; +import fr.ird.observe.services.dto.referential.SizeMeasureTypeDto; import fr.ird.observe.services.dto.referential.SpeciesDto; import fr.ird.observe.services.dto.referential.SpeciesGroupDto; import fr.ird.observe.services.dto.referential.SpeciesListDto; import fr.ird.observe.services.dto.referential.VesselDto; import fr.ird.observe.services.dto.referential.VesselSizeCategoryDto; import fr.ird.observe.services.dto.referential.VesselTypeDto; +import fr.ird.observe.services.dto.referential.WeightMeasureTypeDto; import fr.ird.observe.services.dto.referential.longline.BaitHaulingStatusDto; import fr.ird.observe.services.dto.referential.longline.BaitSettingStatusDto; import fr.ird.observe.services.dto.referential.longline.BaitTypeDto; @@ -64,11 +66,9 @@ import fr.ird.observe.services.dto.referential.longline.SensorBrandDto; import fr.ird.observe.services.dto.referential.longline.SensorDataFormatDto; import fr.ird.observe.services.dto.referential.longline.SensorTypeDto; import fr.ird.observe.services.dto.referential.longline.SettingShapeDto; -import fr.ird.observe.services.dto.referential.SizeMeasureTypeDto; import fr.ird.observe.services.dto.referential.longline.StomacFullnessDto; import fr.ird.observe.services.dto.referential.longline.TripTypeDto; import fr.ird.observe.services.dto.referential.longline.VesselActivityLonglineDto; -import fr.ird.observe.services.dto.referential.WeightMeasureTypeDto; import fr.ird.observe.services.dto.referential.seine.DetectionModeDto; import fr.ird.observe.services.dto.referential.seine.ObjectFateDto; import fr.ird.observe.services.dto.referential.seine.ObjectOperationDto; @@ -153,7 +153,7 @@ public class ValidateServiceRestTest extends AbstractServiceRestTest { ValidateReferentialsResult result = service.validateReferentials(request); Assert.assertNotNull(result); - ImmutableMap<Class<? extends ReferentialDto>, ValidateResultForDtoType> resultByType = result.getResultByType(); + ImmutableMap<Class<? extends ReferentialDto>, ValidateResultForDtoType<? extends IdDto>> resultByType = result.getResultByType(); Assert.assertNotNull(resultByType); Assert.assertEquals(59, resultByType.size()); @@ -232,7 +232,7 @@ public class ValidateServiceRestTest extends AbstractServiceRestTest { ValidateDataResult result = service.validateData(request); Assert.assertNotNull(result); - ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> resultByType = result.getResultByType(); + ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> resultByType = result.getResultByType(); Assert.assertNotNull(resultByType); Assert.assertEquals(5, resultByType.size()); @@ -256,7 +256,7 @@ public class ValidateServiceRestTest extends AbstractServiceRestTest { ValidateDataResult result = service.validateData(request); Assert.assertNotNull(result); - ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> resultByType = result.getResultByType(); + ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> resultByType = result.getResultByType(); Assert.assertNotNull(resultByType); Assert.assertEquals(8, resultByType.size()); @@ -271,9 +271,9 @@ public class ValidateServiceRestTest extends AbstractServiceRestTest { } - protected <D extends ReferentialDto> void assertValidateResultForReferentialDtoType(ImmutableMap<Class<? extends ReferentialDto>, ValidateResultForDtoType> resultByType, Class<D> dtoType, int expectedCount) { + protected <D extends ReferentialDto> void assertValidateResultForReferentialDtoType(ImmutableMap<Class<? extends ReferentialDto>, ValidateResultForDtoType<? extends IdDto>> resultByType, Class<D> dtoType, int expectedCount) { - ValidateResultForDtoType<D> validateResultForDtoType = resultByType.get(dtoType); + ValidateResultForDtoType<D> validateResultForDtoType = (ValidateResultForDtoType) resultByType.get(dtoType); Assert.assertNotNull(validateResultForDtoType); ImmutableSet<ValidateResultForDto<D>> validateResultForDtos = validateResultForDtoType.getValidateResultForDto(); Assert.assertNotNull(validateResultForDtos); @@ -285,9 +285,9 @@ public class ValidateServiceRestTest extends AbstractServiceRestTest { } - protected <D extends IdDto> void assertValidateResultForDtoType(ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> resultByType, Class<D> dtoType, int expectedCount) { + protected <D extends IdDto> void assertValidateResultForDtoType(ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> resultByType, Class<D> dtoType, int expectedCount) { - ValidateResultForDtoType<D> validateResultForDtoType = resultByType.get(dtoType); + ValidateResultForDtoType<D> validateResultForDtoType = (ValidateResultForDtoType) resultByType.get(dtoType); Assert.assertNotNull(validateResultForDtoType); ImmutableSet<ValidateResultForDto<D>> validateResultForDtos = validateResultForDtoType.getValidateResultForDto(); Assert.assertNotNull(validateResultForDtos); diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidateServiceTopia.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidateServiceTopia.java index bc7323c..261f3ee 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidateServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/actions/validate/ValidateServiceTopia.java @@ -119,7 +119,7 @@ public class ValidateServiceTopia extends ObserveServiceTopia implements Validat request.getValidationContext(), request.getScopes(), Entities.DATA_ENTITIES); - + ReferentialLocale referenceLocale = getReferentialLocale(); initValidationEngine(validationDataContext); @@ -132,7 +132,7 @@ public class ValidateServiceTopia extends ObserveServiceTopia implements Validat } - ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> validateResultForDtoTypeMap = buildResultForDtoTypes(detector); + ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> validateResultForDtoTypeMap = buildResultForDtoTypes(detector); return new ValidateDataResult(request, validateResultForDtoTypeMap); }); @@ -144,9 +144,9 @@ public class ValidateServiceTopia extends ObserveServiceTopia implements Validat } - private ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> buildResultForDtoTypes(ValidationMessageDetector detector) { + private ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> buildResultForDtoTypes(ValidationMessageDetector detector) { - ImmutableMap.Builder<Class<? extends IdDto>, ValidateResultForDtoType> forDtoTypeBuilder = new ImmutableMap.Builder<>(); + ImmutableMap.Builder<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> forDtoTypeBuilder = new ImmutableMap.Builder<>(); for (Class<? extends TopiaEntity> entityType : detector.getDetectedEntityTypes()) { @@ -164,7 +164,7 @@ public class ValidateServiceTopia extends ObserveServiceTopia implements Validat private <E extends ObserveReferentialEntity, D extends ReferentialDto> void buildResultForReferentialDtoType(Class<E> entityType, ValidationMessageDetector detector, - ImmutableMap.Builder<Class<? extends IdDto>, ValidateResultForDtoType> forDtoTypeBuilder) { + ImmutableMap.Builder<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> forDtoTypeBuilder) { ImmutableSet.Builder<ValidateResultForDto<D>> validateResultForDtoMapBuilder = new ImmutableSet.Builder<>(); @@ -188,7 +188,7 @@ public class ValidateServiceTopia extends ObserveServiceTopia implements Validat private <E extends ObserveDataEntity, D extends DataDto> void buildResultForDataDtoType(Class<E> entityType, ValidationMessageDetector detector, - ImmutableMap.Builder<Class<? extends IdDto>, ValidateResultForDtoType> forDtoTypeBuilder) { + ImmutableMap.Builder<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> forDtoTypeBuilder) { ImmutableSet.Builder<ValidateResultForDto<D>> validateResultForDtoMapBuilder = new ImmutableSet.Builder<>(); diff --git a/services-topia/src/test/java/fr/ird/observe/services/topia/service/actions/validate/ValidateServiceTopiaTest.java b/services-topia/src/test/java/fr/ird/observe/services/topia/service/actions/validate/ValidateServiceTopiaTest.java index 0de7b9b..3b7707b 100644 --- a/services-topia/src/test/java/fr/ird/observe/services/topia/service/actions/validate/ValidateServiceTopiaTest.java +++ b/services-topia/src/test/java/fr/ird/observe/services/topia/service/actions/validate/ValidateServiceTopiaTest.java @@ -138,7 +138,7 @@ public class ValidateServiceTopiaTest extends AbstractServiceTopiaTest { ValidateReferentialsResult result = service.validateReferentials(request); Assert.assertNotNull(result); - ImmutableMap<Class<? extends ReferentialDto>, ValidateResultForDtoType> resultByType = result.getResultByType(); + ImmutableMap<Class<? extends ReferentialDto>, ValidateResultForDtoType<? extends IdDto>> resultByType = result.getResultByType(); Assert.assertNotNull(resultByType); Assert.assertEquals(60, resultByType.size()); @@ -223,11 +223,11 @@ public class ValidateServiceTopiaTest extends AbstractServiceTopiaTest { ValidateDataResult result = service.validateData(request); Assert.assertNotNull(result); - ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> resultByType = result.getResultByType(); + ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> resultByType = result.getResultByType(); Assert.assertNotNull(resultByType); Assert.assertEquals(9, resultByType.size()); - for (Map.Entry<Class<? extends IdDto>, ValidateResultForDtoType> entry : resultByType.entrySet()) { + for (Map.Entry<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> entry : resultByType.entrySet()) { System.out.println("assertValidateResultForDtoType(resultByType, " + entry.getKey().getName() + ".class, " + entry.getValue().getValidateResultForDto().size() + ");"); } @@ -243,9 +243,9 @@ public class ValidateServiceTopiaTest extends AbstractServiceTopiaTest { } - protected <D extends ReferentialDto> void assertValidateResultForReferentialDtoType(ImmutableMap<Class<? extends ReferentialDto>, ValidateResultForDtoType> resultByType, Class<D> dtoType, int expectedCount) { + protected <D extends ReferentialDto> void assertValidateResultForReferentialDtoType(ImmutableMap<Class<? extends ReferentialDto>, ValidateResultForDtoType<? extends IdDto>> resultByType, Class<D> dtoType, int expectedCount) { - ValidateResultForDtoType<D> validateResultForDtoType = resultByType.get(dtoType); + ValidateResultForDtoType<D> validateResultForDtoType = (ValidateResultForDtoType) resultByType.get(dtoType); Assert.assertNotNull(validateResultForDtoType); ImmutableSet<ValidateResultForDto<D>> validateResultForDtos = validateResultForDtoType.getValidateResultForDto(); Assert.assertNotNull(validateResultForDtos); @@ -257,9 +257,9 @@ public class ValidateServiceTopiaTest extends AbstractServiceTopiaTest { } - protected <D extends IdDto> void assertValidateResultForDtoType(ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> resultByType, Class<D> dtoType, int expectedCount) { + protected <D extends IdDto> void assertValidateResultForDtoType(ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> resultByType, Class<D> dtoType, int expectedCount) { - ValidateResultForDtoType<D> validateResultForDtoType = resultByType.get(dtoType); + ValidateResultForDtoType<D> validateResultForDtoType = (ValidateResultForDtoType) resultByType.get(dtoType); Assert.assertNotNull(validateResultForDtoType); ImmutableSet<ValidateResultForDto<D>> validateResultForDtos = validateResultForDtoType.getValidateResultForDto(); Assert.assertNotNull(validateResultForDtos); diff --git a/services/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateDataResult.java b/services/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateDataResult.java index 3a1ba8c..a29a9b7 100644 --- a/services/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateDataResult.java +++ b/services/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateDataResult.java @@ -37,9 +37,9 @@ public class ValidateDataResult implements ObserveDto { protected final ValidateDataRequest validateDataRequest; - protected final ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> resultByType; + protected final ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> resultByType; - public ValidateDataResult(ValidateDataRequest validateDataRequest, ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> resultByType) { + public ValidateDataResult(ValidateDataRequest validateDataRequest, ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> resultByType) { this.validateDataRequest = validateDataRequest; this.resultByType = resultByType; } @@ -48,7 +48,7 @@ public class ValidateDataResult implements ObserveDto { return validateDataRequest; } - public ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType> getResultByType() { + public ImmutableMap<Class<? extends IdDto>, ValidateResultForDtoType<? extends IdDto>> getResultByType() { return resultByType; } diff --git a/services/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateReferentialsResult.java b/services/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateReferentialsResult.java index 912a63c..ddad793 100644 --- a/services/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateReferentialsResult.java +++ b/services/src/main/java/fr/ird/observe/services/service/actions/validate/ValidateReferentialsResult.java @@ -23,6 +23,7 @@ package fr.ird.observe.services.service.actions.validate; */ import com.google.common.collect.ImmutableMap; +import fr.ird.observe.services.dto.IdDto; import fr.ird.observe.services.dto.ObserveDto; import fr.ird.observe.services.dto.referential.ReferentialDto; @@ -37,9 +38,9 @@ public class ValidateReferentialsResult implements ObserveDto { protected final ValidateReferentialsRequest validateReferentialsRequest; - protected final ImmutableMap<Class<? extends ReferentialDto>, ValidateResultForDtoType> resultByType; + protected final ImmutableMap<Class<? extends ReferentialDto>, ValidateResultForDtoType<? extends IdDto>> resultByType; - public ValidateReferentialsResult(ValidateReferentialsRequest validateReferentialsRequest, ImmutableMap<Class<? extends ReferentialDto>, ValidateResultForDtoType> resultByType) { + public ValidateReferentialsResult(ValidateReferentialsRequest validateReferentialsRequest, ImmutableMap<Class<? extends ReferentialDto>, ValidateResultForDtoType<? extends IdDto>> resultByType) { this.validateReferentialsRequest = validateReferentialsRequest; this.resultByType = resultByType; } @@ -48,7 +49,7 @@ public class ValidateReferentialsResult implements ObserveDto { return validateReferentialsRequest; } - public ImmutableMap<Class<? extends ReferentialDto>, ValidateResultForDtoType> getResultByType() { + public ImmutableMap<Class<? extends ReferentialDto>, ValidateResultForDtoType<? extends IdDto>> getResultByType() { return resultByType; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 2edb9835cd6924488a01eda1328757be921b4bc9 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Nov 28 17:01:01 2016 +0100 refs #8429 [iso] revue des écrans de type List : simplification du code --- .../actions/global/NewNextDataGlobalUIAction.java | 2 +- .../global/OpenCloseDataGlobalUIAction.java | 4 +- .../ui/actions/global/ResetDataGlobalUIAction.java | 1 - .../swing/ui/content/ContentUIHandler.java | 4 +- .../swing/ui/content/ObserveFocusManager.java | 18 ++--- .../swing/ui/content/list/ContentListUI.jaxx | 53 +++---------- .../swing/ui/content/list/ContentListUI.jcss | 29 -------- .../ui/content/list/ContentListUIHandler.java | 47 +++++++++--- .../swing/ui/content/list/ContentListUIModel.java | 86 +++++++++++++++++++--- .../ActivitySeinesUI.jcss => CommonListUI.jcss} | 45 ++++++----- .../list/impl/longline/ActivityLonglinesUI.jaxx | 46 ++++++++---- .../list/impl/longline/ActivityLonglinesUI.jcss | 28 +++---- .../impl/longline/ActivityLonglinesUIHandler.java | 24 +++++- .../content/list/impl/longline/CommonListUI.jcss | 64 ---------------- .../list/impl/longline/TripLonglinesUI.jaxx | 40 ++++++---- .../list/impl/longline/TripLonglinesUI.jcss | 14 +++- .../list/impl/longline/TripLonglinesUIHandler.java | 45 +++++++++-- .../list/impl/longline/TripLonglinesUIModel.java | 4 +- .../content/list/impl/seine/ActivitySeinesUI.jaxx | 44 +++++++---- .../content/list/impl/seine/ActivitySeinesUI.jcss | 27 +++---- .../list/impl/seine/ActivitySeinesUIHandler.java | 25 ++++++- .../ui/content/list/impl/seine/CommonListUI.jcss | 81 -------------------- .../swing/ui/content/list/impl/seine/RoutesUI.jaxx | 43 +++++++---- .../swing/ui/content/list/impl/seine/RoutesUI.jcss | 24 +++--- .../content/list/impl/seine/RoutesUIHandler.java | 28 ++++++- .../ui/content/list/impl/seine/TripSeinesUI.jaxx | 42 ++++++----- .../ui/content/list/impl/seine/TripSeinesUI.jcss | 15 ++-- .../list/impl/seine/TripSeinesUIHandler.java | 28 ++++++- .../content/open/impl/longline/TripLonglineUI.jcss | 4 + 29 files changed, 497 insertions(+), 418 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/NewNextDataGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/NewNextDataGlobalUIAction.java index 5572231..3314a47 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/NewNextDataGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/NewNextDataGlobalUIAction.java @@ -53,7 +53,7 @@ public class NewNextDataGlobalUIAction extends AbstractGlobalUIAction { if (contentUI instanceof ContentListUI) { ContentListUI ui = (ContentListUI) contentUI; - ui.getCreateChild().getAction().actionPerformed(e); + ui.getCreate().getAction().actionPerformed(e); } else if (contentUI instanceof ContentOpenableUI) { ContentOpenableUI ui = (ContentOpenableUI) contentUI; ui.getCloseAndCreate().getAction().actionPerformed(e); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/OpenCloseDataGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/OpenCloseDataGlobalUIAction.java index cb9e795..0ba2d1a 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/OpenCloseDataGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/OpenCloseDataGlobalUIAction.java @@ -66,11 +66,11 @@ public class OpenCloseDataGlobalUIAction extends AbstractGlobalUIAction implemen if (contentUI instanceof ContentListUI) { ContentListUI ui = (ContentListUI) contentUI; - if (ui.getReopenChild().isEnabled()) { + if (ui.getReopen().isEnabled()) { // on réouvre openAction.actionPerformed(ui); - } else if (ui.getCloseChild().isEnabled()) { + } else if (ui.getClose().isEnabled()) { // on ferme closeAction.actionPerformed(ui); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/ResetDataGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/ResetDataGlobalUIAction.java index e0b140f..0dfa178 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/ResetDataGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/ResetDataGlobalUIAction.java @@ -44,7 +44,6 @@ public class ResetDataGlobalUIAction extends AbstractGlobalUIAction { super(mainUI, ACTION_NAME, "pressed F7"); } - @Override public void actionPerformed(ActionEvent e) { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIHandler.java index 256bcf2..ba66cbf 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIHandler.java @@ -395,7 +395,9 @@ public abstract class ContentUIHandler<E extends IdDto, U extends ContentUI<E, U if (log.isInfoEnabled()) { log.info("Grab focus on first component: " + firstComponent); } - firstComponent.grabFocus(); + if (firstComponent != null) { + firstComponent.grabFocus(); + } } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveFocusManager.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveFocusManager.java index 1f2a3b2..5f1096e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveFocusManager.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveFocusManager.java @@ -1053,18 +1053,12 @@ public class ObserveFocusManager { if (actions == null) { actions = new ArrayList<>(); - actions.add(getUi().getGotoSelectedChild()); - actions.add(getUi().getReopenChild()); - actions.add(getUi().getCloseChild()); - actions.add(getUi().getGotoOpenChild()); - actions.add(getUi().getGotoOpenChild2()); - actions.add(getUi().getCreateChild()); - for (Component component : getUi().getExtraActions().getComponents()) { - if (component instanceof JButton) { - actions.add((JComponent) component); - } - } - actions.add(getUi().getMoveSelectedChildren()); + actions.add(getUi().getGotoSelected()); + actions.add(getUi().getReopen()); + actions.add(getUi().getClose()); + actions.add(getUi().getGotoOpen()); + actions.add(getUi().getCreate()); + actions.add(getUi().getMove()); } List<JComponent> result = new ArrayList<>(actions); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jaxx index d44ab79..9b1c48a 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jaxx @@ -20,9 +20,8 @@ #L% --> -<fr.ird.observe.application.swing.ui.content.ContentUI - abstract='true' superGenericType='E, U' - genericType='E extends IdDto, C extends DataDto, U extends ContentListUI<E,C, U>'> +<fr.ird.observe.application.swing.ui.content.ContentUI abstract='true' superGenericType='E, U' + genericType='E extends IdDto, C extends DataDto, U extends ContentListUI<E,C, U>'> <import> fr.ird.observe.application.swing.ui.actions.content.CloseOpenUIAction @@ -40,11 +39,13 @@ javax.swing.DefaultListSelectionModel javax.swing.ListSelectionModel + javax.swing.JButton java.util.List static org.nuiton.i18n.I18n.t </import> + <java.lang.String id='listText' javaBean='""'/> <java.lang.String id='emptyListMessage' javaBean='""'/> @@ -58,6 +59,13 @@ <script><![CDATA[ +public abstract JButton getGotoSelected(); +public abstract JButton getGotoOpen(); +public abstract JButton getReopen(); +public abstract JButton getClose(); +public abstract JButton getCreate(); +public abstract JButton getMove(); + public final DataReference<C> getSelectedData() { return (DataReference<C>) getSelectedBean(list); } @@ -81,43 +89,6 @@ public final List<DataReference<C>> getSelectedDatas() { </JPanel> - <Table id="actions" fill='both' weightx='1' insets='0'> - <row> - <cell fill='both' columns="3"> - <JButton id='gotoSelectedChild'/> - </cell> - </row> - <row> - <cell fill='both' columns="3"> - <JButton id='reopenChild'/> - </cell> - </row> - <row> - <cell fill='both' columns="3"> - <JButton id='closeChild'/> - </cell> - </row> - <row weighty="1" weightx="1" fill="both"> - <cell> - <JButton id='gotoOpenChild'/> - </cell> - <cell> - <JButton id='gotoOpenChild2'/> - </cell> - <cell> - <JButton id='createChild'/> - </cell> - </row> - <row> - <cell fill="both" columns="3"> - <Table id='extraActions' fill="both" weightx="1" insets='2'/> - </cell> - </row> - <row> - <cell fill='both' columns="3"> - <JButton id='moveSelectedChildren'/> - </cell> - </row> - </Table> + <Table id="actions" fill='both' weightx='1' insets='0'/> </fr.ird.observe.application.swing.ui.content.ContentUI> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jcss index 03a4753..a2fbddf 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jcss @@ -48,32 +48,3 @@ selectionModel:{listSelectionModel} } -#gotoSelectedChild { - visible:{!model.isEmpty()}; - enabled:{model.isOneSelectedData()}; - _observeAction:{SelectNodeUIAction.ACTION_NAME}; - _actionIcon:{"go-down"}; -} - -#reopenChild { - visible:{!model.isEmpty() && model.isCanReopen()}; - enabled:{model.isOneSelectedData()}; - _observeAction:{ReOpenUIAction.ACTION_NAME}; -} - -#closeChild { - visible:{!model.isEmpty() && !model.isCanReopen()}; - enabled:{getHandler().isCanCloseChild()}; - _observeAction:{CloseOpenUIAction.ACTION_NAME}; -} - -#createChild { - visible:{model.isCreatingMode()}; - _observeAction:{CreateOpenUIAction.ACTION_NAME}; -} - -#moveSelectedChildren { - visible:{!model.isEmpty()}; - enabled:{model.isOneOrMoreSelectedData()}; -} - diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java index 8f182fc..94c17d6 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java @@ -65,8 +65,6 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends DataDto, U super(ui, parentType, type); } - public abstract boolean isCanCloseChild(); - @Override protected boolean computeCanWrite(ObserveSwingDataSource source) { return source.canWriteData(); @@ -87,6 +85,15 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends DataDto, U NavigationTree treeHelper = getTreeHelper(getUi()); getUi().getList().setCellRenderer(new EntityListCellRenderer(renderer, treeHelper)); + + getModel().addPropertyChangeListener(ContentListUIModel.PROPERTY_SELECTED_DATAS, e -> { + ContentListUIModel model = (ContentListUIModel) e.getSource(); + model.setCanClose(computeCanClose()); + model.setCanReopen(computeCanReopen()); + model.setCanCreate(computeCanCreate()); + model.setCanMove(computeCanMove()); + model.setCanGotoSelected(computeCanGotoSelected()); + }); } @Override @@ -128,12 +135,6 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends DataDto, U model.setMode(null); model.setMode(mode); - boolean canReopen = mode == ContentMode.CREATE; - if (log.isInfoEnabled()) { - log.info(prefix + "canReopen = " + canReopen); - } - model.setCanReopen(canReopen); - // il n'est pas nécessaire de charger le bean car seuls ses enfants nous sont utile dans cette ecran List<DataReference<C>> data = new ArrayList<>(); @@ -151,15 +152,41 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends DataDto, U model.setData(data); + model.setCanClose(computeCanClose()); + model.setCanReopen(computeCanReopen()); + model.setCanCreate(computeCanCreate()); + model.setCanMove(computeCanMove()); + model.setCanGotoOpen(computeCanGotoOpen()); + model.setCanGotoSelected(computeCanGotoSelected()); + SwingUtilities.invokeLater(() -> { getUi().getListSelectionModel().clearSelection(); }); - getUi().getCloseChild().setEnabled(isCanCloseChild()); // finalize openUI with specified code finalizeOpenUI(); } + protected boolean computeCanGotoSelected() { + return ui.getModel().isOneSelectedData(); + } + + protected abstract boolean computeCanGotoOpen(); + + protected boolean computeCanMove() { + return ui.getModel().isOneOrMoreSelectedData(); + } + + protected boolean computeCanCreate() { + return ui.getModel().isCreatingMode(); + } + + protected boolean computeCanReopen() { + return ui.getModel().isOneSelectedData() && getModel().getMode() == ContentMode.CREATE; + } + + protected abstract boolean computeCanClose(); + @Override protected void updateToolbarActions() { super.updateToolbarActions(); @@ -193,7 +220,7 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends DataDto, U } // attach the node to action - JButton button = getUi().getGotoSelectedChild(); + JButton button = getUi().getGotoSelected(); button.putClientProperty(SelectNodeUIAction.NODE, node); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIModel.java index e6bcbe9..622abab 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIModel.java @@ -21,10 +21,10 @@ */ package fr.ird.observe.application.swing.ui.content.list; +import fr.ird.observe.application.swing.ui.content.ContentUIModel; import fr.ird.observe.services.dto.DataDto; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.IdDto; -import fr.ird.observe.application.swing.ui.content.ContentUIModel; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -39,20 +39,25 @@ import java.util.List; */ public abstract class ContentListUIModel<E extends IdDto, C extends DataDto> extends ContentUIModel<E> { - public static final String PROPERTY_DATA = "data"; + private static final long serialVersionUID = 1L; + /** Logger */ + private static final Log log = LogFactory.getLog(ContentListUIModel.class); + + public static final String PROPERTY_DATA = "data"; public static final String PROPERTY_SELECTED_DATAS = "selectedDatas"; public static final String PROPERTY_ONE_SELECTED_DATA = "oneSelectedData"; public static final String PROPERTY_ONE_OR_MORE_SELECTED_DATA = "oneOrMoreSelectedData"; public static final String PROPERTY_EMPTY = "empty"; - public static final String PROPERTY_CAN_REOPEN = "canReopen"; + public static final String PROPERTY_CAN_GOTO_SELECTED = "canGotoSelected"; + public static final String PROPERTYCAN_GOTO_OPEN = "canGotoOpen"; + public static final String PROPERTY_CAN_CLOSE = "canClose"; + public static final String PROPERTY_CAN_CREATE = "canCreate"; + public static final String PROPERTY_CAN_DELETE = "canDelete"; - private static final long serialVersionUID = 1L; - - /** Logger */ - static private final Log log = LogFactory.getLog(ContentListUIModel.class); + public static final String PROPERTY_CAN_MOVE = "canMove"; /** type des entites */ protected final Class<C> childType; @@ -63,8 +68,13 @@ public abstract class ContentListUIModel<E extends IdDto, C extends DataDto> ext /** entités sélectionnées dans la liste */ protected List<DataReference<C>> selectedDatas; - /** un drapeau pour savoir si on peut reouvrir l'un des données de la liste. */ - protected boolean canReopen; + private boolean canReopen; + private boolean canGotoSelected; + private boolean canGotoOpen; + private boolean canClose; + private boolean canCreate; + private boolean canDelete; + private boolean canMove; public ContentListUIModel(Class<E> beanType, Class<C> childType) { super(beanType); @@ -114,7 +124,7 @@ public abstract class ContentListUIModel<E extends IdDto, C extends DataDto> ext } public boolean isOneOrMoreSelectedData() { - return CollectionUtils.isNotEmpty(selectedDatas ); + return CollectionUtils.isNotEmpty(selectedDatas); } public boolean isCanReopen() { @@ -124,11 +134,65 @@ public abstract class ContentListUIModel<E extends IdDto, C extends DataDto> ext public void setCanReopen(boolean canReopen) { boolean old = isCanReopen(); this.canReopen = canReopen; - firePropertyChange(PROPERTY_CAN_REOPEN, old, canReopen); + firePropertyChange(PROPERTY_CAN_REOPEN, canReopen); } public boolean isEmpty() { return data == null || data.isEmpty(); } + + public boolean isCanGotoSelected() { + return canGotoSelected; + } + + public void setCanGotoSelected(boolean canGotoSelected) { + this.canGotoSelected = canGotoSelected; + firePropertyChange(PROPERTY_CAN_GOTO_SELECTED, canGotoSelected); + } + + public boolean isCanGotoOpen() { + return canGotoOpen; + } + + public void setCanGotoOpen(boolean canGotoOpen) { + this.canGotoOpen = canGotoOpen; + firePropertyChange(PROPERTYCAN_GOTO_OPEN, canGotoOpen); + } + + public boolean isCanClose() { + return canClose; + } + + public void setCanClose(boolean canClose) { + this.canClose = canClose; + firePropertyChange(PROPERTY_CAN_CLOSE, canClose); + } + + public boolean isCanCreate() { + return canCreate; + } + + public void setCanCreate(boolean canCreate) { + this.canCreate = canCreate; + firePropertyChange(PROPERTY_CAN_CREATE, canCreate); + } + + public boolean isCanDelete() { + return canDelete; + } + + public void setCanDelete(boolean canDelete) { + this.canDelete = canDelete; + firePropertyChange(PROPERTY_CAN_DELETE, canDelete); + } + + public boolean isCanMove() { + return canMove; + } + + public void setCanMove(boolean canMove) { + this.canMove = canMove; + firePropertyChange(PROPERTY_CAN_MOVE, canMove); + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/CommonListUI.jcss similarity index 50% copy from application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jcss copy to application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/CommonListUI.jcss index 2fede4f..24e9286 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/CommonListUI.jcss @@ -20,38 +20,45 @@ * #L% */ -#gotoSelectedChild { - _text:{t("observe.content.action.goto.selected.activity")}; - _toolTipText:{t("observe.content.action.goto.selected.activity.tip")}; +#model { + enabled: true; } -#reopenChild { - _text:{t("observe.content.action.reopen.selected.activity")}; - _toolTipText:{t("observe.content.action.reopen.selected.activity.tip")}; +#gotoSelected { + enabled:{model.isCanGotoSelected()}; + _observeAction:{SelectNodeUIAction.ACTION_NAME}; + _actionIcon:{"go-down"}; } -#createChild { - text:"observe.content.action.activity"; - toolTipText:"observe.content.action.activity.tip"; +#gotoOpen { + enabled:{model.isCanGotoOpen()}; + _observeAction:{SelectOpenNodeUIAction.ACTION_NAME}; } -#extraActions { - visible:{model.isUpdatingMode() && getDataContext().isOpenActivity()}; +#reopen { + enabled:{model.isCanReopen()}; + _observeAction:{ReOpenUIAction.ACTION_NAME}; + _globalAction:{"openCloseDataGlobal"}; } #close { + enabled:{model.isCanClose()}; _observeAction:{CloseOpenUIAction.ACTION_NAME}; - _toolTipText:{t("observe.action.close.activity.tip")}; + _globalAction:{"openCloseDataGlobal"}; +} + +#create { + enabled:{model.isCanCreate()}; + _observeAction:{CreateOpenUIAction.ACTION_NAME}; + _globalAction:{"newNextGlobal"}; } #closeAndCreate { + enabled:{model.isCanCreate()}; _observeAction:{CloseAndCreateUIAction.ACTION_NAME}; - _text:{t("observe.content.action.closeAndCreate.activity")}; - _toolTipText:{t("observe.content.action.closeAndCreate.activity.tip")}; + _globalAction:{"newNextGlobal"}; } -#moveSelectedChildren { - text:"observe.content.action.move.activities.seine"; - toolTipText:"observe.content.action.move.activities.seine.tip"; - _observeAction:{MoveActivitySeinesUIAction.ACTION_NAME}; -} \ No newline at end of file +#move { + enabled:{model.isCanMove()}; +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUI.jaxx index b2e3ddb..382c8c4 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUI.jaxx @@ -28,15 +28,24 @@ <import> fr.ird.observe.services.dto.longline.ActivityLonglineDto fr.ird.observe.services.dto.longline.TripLonglineDto + fr.ird.observe.application.swing.ui.actions.content.CloseAndCreateUIAction fr.ird.observe.application.swing.ui.actions.content.CloseOpenUIAction - fr.ird.observe.application.swing.ui.actions.shared.SelectOpenNodeUIAction + fr.ird.observe.application.swing.ui.actions.content.CreateOpenUIAction fr.ird.observe.application.swing.ui.actions.content.MoveActivityLonglinesUIAction + fr.ird.observe.application.swing.ui.actions.content.ReOpenUIAction + fr.ird.observe.application.swing.ui.actions.shared.SelectNodeUIAction + fr.ird.observe.application.swing.ui.actions.shared.SelectOpenNodeUIAction static org.nuiton.i18n.I18n.n + static org.nuiton.i18n.I18n.t </import> - <style source="CommonListUI.jcss"/> + <style source="../CommonListUI.jcss"/> + + <script> + public JButton getCreate() { return closeAndCreate; } + </script> <!-- handler --> <ActivityLonglinesUIHandler id='handler' constructorParams='this'/> @@ -47,19 +56,28 @@ <!-- edit bean --> <TripLonglineDto id='bean'/> - <!-- override generic actions --> - <JButton id='gotoSelectedChild'/> - <JButton id='reopenChild'/> - <JButton id='closeChild'/> - <JButton id='gotoOpenChild' styleClass='gotoOpenActivity'/> - <JButton id='gotoOpenChild2' styleClass='gotoOpenActivity2'/> - <JButton id='createChild'/> - <JButton id='moveSelectedChildren'/> - - <!-- extra actions --> - <Table id='extraActions' fill="both" weightx="1" insets='2'> + <Table id="actions" fill='both' weightx='1' insets='0'> + <row> + <cell fill='both'> + <JButton id='gotoSelected'/> + </cell> + <cell> + <JButton id='gotoOpen'/> + </cell> + </row> <row> - <cell weightx="0.5"> + <cell fill='both'> + <JButton id='reopen'/> + </cell> + <cell fill='both'> + <JButton id='close'/> + </cell> + </row> + <row> + <cell fill='both'> + <JButton id='move'/> + </cell> + <cell> <JButton id='closeAndCreate'/> </cell> </row> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUI.jcss index ed15846..7e61ef6 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUI.jcss @@ -20,37 +20,33 @@ * #L% */ -#gotoSelectedChild { +#gotoSelected { _text:{t("observe.content.action.goto.selected.activity")}; _toolTipText:{t("observe.content.action.goto.selected.activity.tip")}; } -#reopenChild { - _text:{t("observe.content.action.reopen.selected.activity")}; - _toolTipText:{t("observe.content.action.reopen.selected.activity.tip")}; -} - -#createChild { - _text:{t("observe.content.action.activity")}; - _toolTipText:{t("observe.content.action.activity.tip")}; +#gotoOpen { + _type:{ActivityLonglineDto.class}; + _text:{t("observe.content.action.goto.open.activity")}; + _toolTipText:{t("observe.content.action.goto.open.activity.tip")}; } -#extraActions { - visible:{model.isUpdatingMode() && getDataContext().isOpenActivity()}; +#reopen { + _text:{t("observe.content.action.reopen.selected.activity")}; + _toolTipText:{t("observe.content.action.reopen.selected.activity.tip")}; } -#closeChild { +#close { _toolTipText:{t("observe.action.close.activity.tip")}; } #closeAndCreate { - _observeAction:{CloseAndCreateUIAction.ACTION_NAME}; _text:{t("observe.content.action.closeAndCreate.activity")}; _toolTipText:{t("observe.content.action.closeAndCreate.activity.tip")}; } -#moveSelectedChildren { - text:"observe.content.action.move.activities.longline"; - toolTipText:"observe.content.action.move.activities.longline.tip"; +#move { + _text:{t("observe.content.action.move.activities.longline")}; + _toolTipText:{t("observe.content.action.move.activities.longline.tip")}; _observeAction:{MoveActivityLonglinesUIAction.ACTION_NAME}; } \ No newline at end of file diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java index 726e92b..773f5f1 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java @@ -22,10 +22,12 @@ package fr.ird.observe.application.swing.ui.content.list.impl.longline; * #L% */ +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.constants.DataContextType; import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.list.ContentListUIHandler; +import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.TripLonglineDto; @@ -44,8 +46,26 @@ public class ActivityLonglinesUIHandler extends ContentListUIHandler<TripLonglin } @Override - public boolean isCanCloseChild() { - return true; + protected boolean computeCanGotoOpen() { + // il faut que l'activité ouverte soit dans cette marée + boolean result = ObserveSwingApplicationContext.get().getDataContext().isOpenActivityLongline(); + if (result) { + + String id = ObserveSwingApplicationContext.get().getDataContext().getOpenActivityLonglineId(); + result = false; + for (DataReference<ActivityLonglineDto> reference : ui.getModel().getData()) { + if (id.equals(reference.getId())) { + result = true; + break; + } + } + } + return result; + } + + @Override + protected boolean computeCanClose() { + return computeCanGotoOpen(); } @Override diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/CommonListUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/CommonListUI.jcss deleted file mode 100644 index bfd407c..0000000 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/CommonListUI.jcss +++ /dev/null @@ -1,64 +0,0 @@ -/* - * #%L - * ObServe :: Swing - * %% - * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit - * %% - * 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% - */ - -JButton { - _protectFocus:true; -} - -#model { - enabled: true; -} - -.gotoOpenTrip { - visible:{model.isUpdatingMode() && dataContext.isOpenTrip()}; - _observeAction:{SelectOpenNodeUIAction.ACTION_NAME}; - _type:{TripLonglineDto.class}; - _text:{t("observe.content.action.goto.open.maree")}; - _toolTipText:{t("observe.content.action.goto.open.trip.tip")}; -} - -.gotoOpenTrip2 { - visible:{model.isReadingMode() && dataContext.isOpenTrip()}; - _observeAction:{SelectOpenNodeUIAction.ACTION_NAME}; - _type:{TripLonglineDto.class}; - _actionIcon:{"go-jump"}; - _text:{t("observe.content.action.goto.open.other.maree")}; - _toolTipText:{t("observe.content.action.goto.open.other.maree.tip")}; -} - -.gotoOpenActivity { - visible:{model.isUpdatingMode() && dataContext.isOpenActivity()}; - _observeAction:{SelectOpenNodeUIAction.ACTION_NAME}; - _type:{ActivityLonglineDto.class}; - _text:{t("observe.content.action.goto.open.activity")}; - _toolTipText:{t("observe.content.action.goto.open.activity.tip")}; -} - -.gotoOpenActivity2 { - visible:{model.isReadingMode() && dataContext.isOpenActivityLongline()}; - _observeAction:{SelectOpenNodeUIAction.ACTION_NAME}; - _type:{ActivityLonglineDto.class}; - _actionIcon:{"go-jump"}; - _text:{t("observe.content.action.goto.open.other.activityLongline")}; - _toolTipText:{t("observe.content.action.goto.open.other.activityLongline.tip")}; -} - diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUI.jaxx index 0fbb378..2528813 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUI.jaxx @@ -27,6 +27,10 @@ fr.ird.observe.services.dto.longline.ActivityLonglineDto fr.ird.observe.services.dto.longline.TripLonglineDto fr.ird.observe.services.dto.referential.ProgramDto + fr.ird.observe.application.swing.ui.actions.content.CloseOpenUIAction + fr.ird.observe.application.swing.ui.actions.content.CreateOpenUIAction + fr.ird.observe.application.swing.ui.actions.content.ReOpenUIAction + fr.ird.observe.application.swing.ui.actions.shared.SelectNodeUIAction fr.ird.observe.application.swing.ui.actions.shared.SelectOpenNodeUIAction fr.ird.observe.application.swing.ui.actions.content.MoveTripLonglinesUIAction @@ -34,7 +38,7 @@ static org.nuiton.i18n.I18n.t </import> - <style source="CommonListUI.jcss"/> + <style source="../CommonListUI.jcss"/> <!-- handler --> <TripLonglinesUIHandler id='handler' constructorParams='this'/> @@ -45,23 +49,29 @@ <!-- edit bean --> <ProgramDto id='bean'/> - <!-- override generic actions --> - <JButton id='gotoSelectedChild'/> - <JButton id='reopenChild'/> - <JButton id='closeChild'/> - <JButton id='gotoOpenChild' styleClass='gotoOpenTrip'/> - <JButton id='gotoOpenChild2' styleClass='gotoOpenTrip2'/> - <JButton id='createChild'/> - <JButton id='moveSelectedChildren'/> - - <!-- extra actions --> - <Table id="extraActions" fill='both' weightx='1' weighty='1' insets='2'> - <row weighty="1" weightx="1"> + <Table id="actions" fill='both' weightx='1' insets='0'> + <row> + <cell> + <JButton id='gotoSelected'/> + </cell> <cell> - <JButton id='gotoOpenActivity' styleClass='gotoOpenActivity'/> + <JButton id='gotoOpen'/> + </cell> + </row> + <row> + <cell fill='both'> + <JButton id='reopen'/> + </cell> + <cell fill='both'> + <JButton id='close'/> + </cell> + </row> + <row> + <cell fill='both'> + <JButton id='move'/> </cell> <cell> - <JButton id='gotoOpenActivity2' styleClass='gotoOpenActivity2'/> + <JButton id='create'/> </cell> </row> </Table> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUI.jcss index eb85cca..573c2db 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUI.jcss @@ -20,22 +20,28 @@ * #L% */ -#gotoSelectedChild { +#gotoSelected { _text:{t("observe.content.action.goto.selected.maree")}; _toolTipText:{t("observe.content.action.goto.selected.maree.tip")}; } -#reopenChild { +#gotoOpen { + _type:{TripLonglineDto.class}; + _text:{t("observe.content.action.goto.open.maree")}; + _toolTipText:{t("observe.content.action.goto.open.trip.tip")}; +} + +#reopen { _text:{t("observe.content.action.reopen.selected.maree")}; _toolTipText:{t("observe.content.action.reopen.selected.maree.tip")}; } -#createChild { +#create { _text:{t("observe.content.action.trip")}; _toolTipText:{t("observe.content.action.trip.tip")}; } -#moveSelectedChildren { +#move { _text:{t("observe.content.action.move.trips")}; _toolTipText:{t("observe.content.action.move.trips.tip")}; _observeAction:{MoveTripLonglinesUIAction.ACTION_NAME}; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUIHandler.java index c4a8f92..437a7fe 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUIHandler.java @@ -29,6 +29,7 @@ import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.list.ContentListUIHandler; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline.ProgramLonglineNavigationTreeNode; +import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialReference; @@ -80,17 +81,49 @@ public class TripLonglinesUIHandler extends ContentListUIHandler<ProgramDto, Tri } @Override - public boolean isCanCloseChild() { - return !getModel().isCanReopen() && !ObserveSwingApplicationContext.get().getDataContext().isOpenActivityLongline(); - } - - @Override protected void finalizeOpenUI() { NavigationTree treeHelper = getTreeHelper(ui); ProgramLonglineNavigationTreeNode selectedNode = (ProgramLonglineNavigationTreeNode) treeHelper.getSelectedNode(); ReferentialReference<ProgramDto> data = selectedNode.getData(); String title = getDecoratorService().getReferentialReferenceDecorator(ProgramDto.class).toString(data); - getUi().setContentTitle(title); + TripLonglinesUI ui = getUi(); + ui.setContentTitle(title); + + TripLonglinesUIModel model = ui.getModel(); + + model.addPropertyChangeListener(e -> { + + }); + + } + + protected boolean computeCanReopen() { + return ui.getModel().isOneSelectedData() && !ObserveSwingApplicationContext.get().getDataContext().isOpenTrip(); + } + + @Override + protected boolean computeCanGotoOpen() { + + // il faut que la marée ouverte soit dans ce programme + boolean result = ObserveSwingApplicationContext.get().getDataContext().isOpenTripLongline(); + if (result) { + + String id = ObserveSwingApplicationContext.get().getDataContext().getOpenTripLonglineId(); + result = false; + for (DataReference<TripLonglineDto> reference : ui.getModel().getData()) { + if (id.equals(reference.getId())) { + result = true; + break; + } + } + } + return result; + } + + @Override + protected boolean computeCanClose() { + // il faut que la marée ouverte soit dans ce programme et qu'il n'y a pas d'activité ouverte + return computeCanGotoOpen() && !ObserveSwingApplicationContext.get().getDataContext().isOpenActivityLongline(); } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUIModel.java index 7681459..f8e5e57 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUIModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUIModel.java @@ -22,10 +22,10 @@ package fr.ird.observe.application.swing.ui.content.list.impl.longline; * #L% */ +import fr.ird.observe.application.swing.ui.content.list.ContentListUIModel; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; -import fr.ird.observe.application.swing.ui.content.list.ContentListUIModel; import java.util.List; @@ -39,6 +39,7 @@ public class TripLonglinesUIModel extends ContentListUIModel<ProgramDto, TripLon private static final long serialVersionUID = 1L; + public TripLonglinesUIModel() { super(ProgramDto.class, TripLonglineDto.class); } @@ -48,4 +49,5 @@ public class TripLonglinesUIModel extends ContentListUIModel<ProgramDto, TripLon super.setData(data); setSelectedDatas(null); } + } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jaxx index e81401b..435d66d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jaxx @@ -30,13 +30,20 @@ fr.ird.observe.services.dto.seine.RouteDto fr.ird.observe.application.swing.ui.actions.content.CloseAndCreateUIAction fr.ird.observe.application.swing.ui.actions.content.CloseOpenUIAction - fr.ird.observe.application.swing.ui.actions.shared.SelectOpenNodeUIAction fr.ird.observe.application.swing.ui.actions.content.MoveActivitySeinesUIAction + fr.ird.observe.application.swing.ui.actions.content.ReOpenUIAction + fr.ird.observe.application.swing.ui.actions.shared.SelectNodeUIAction + fr.ird.observe.application.swing.ui.actions.shared.SelectOpenNodeUIAction static org.nuiton.i18n.I18n.n + static org.nuiton.i18n.I18n.t </import> - <style source="CommonListUI.jcss"/> + <style source="../CommonListUI.jcss"/> + + <script> + public JButton getCreate() { return closeAndCreate; } + </script> <!-- handler --> <ActivitySeinesUIHandler id='handler' constructorParams='this'/> @@ -47,25 +54,30 @@ <!-- edit bean --> <RouteDto id='bean'/> - <!-- override generic actions --> - <JButton id='gotoSelectedChild'/> - <JButton id='reopenChild'/> - <JButton id='closeChild'/> - <JButton id='gotoOpenChild' styleClass='gotoOpenActivity'/> - <JButton id='gotoOpenChild2' styleClass='gotoOpenActivity2'/> - <JButton id='createChild'/> - <JButton id='moveSelectedChildren'/> - - <!-- extra actions --> - <Table id='extraActions' fill="both" weightx="1" insets='2'> + <Table id="actions" fill='both' weightx='1' insets='0'> <row> - <cell weightx="0.5" fill="both"> + <cell> + <JButton id='gotoSelected'/> + </cell> + <cell> + <JButton id='gotoOpen'/> + </cell> + </row> + <row> + <cell fill='both'> + <JButton id='reopen'/> + </cell> + <cell fill='both'> <JButton id='close'/> </cell> - <cell weightx="0.5"> + </row> + <row> + <cell fill='both'> + <JButton id='move'/> + </cell> + <cell> <JButton id='closeAndCreate'/> </cell> </row> </Table> - </fr.ird.observe.application.swing.ui.content.list.ContentListUI> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jcss index 2fede4f..d700602 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jcss @@ -20,38 +20,33 @@ * #L% */ -#gotoSelectedChild { +#gotoSelected { _text:{t("observe.content.action.goto.selected.activity")}; _toolTipText:{t("observe.content.action.goto.selected.activity.tip")}; } -#reopenChild { - _text:{t("observe.content.action.reopen.selected.activity")}; - _toolTipText:{t("observe.content.action.reopen.selected.activity.tip")}; -} - -#createChild { - text:"observe.content.action.activity"; - toolTipText:"observe.content.action.activity.tip"; +#gotoOpen { + _type:{ActivitySeineDto.class}; + _text:{t("observe.content.action.goto.open.activity")}; + _toolTipText:{t("observe.content.action.goto.open.activity.tip")}; } -#extraActions { - visible:{model.isUpdatingMode() && getDataContext().isOpenActivity()}; +#reopen { + _text:{t("observe.content.action.reopen.selected.activity")}; + _toolTipText:{t("observe.content.action.reopen.selected.activity.tip")}; } #close { - _observeAction:{CloseOpenUIAction.ACTION_NAME}; _toolTipText:{t("observe.action.close.activity.tip")}; } #closeAndCreate { - _observeAction:{CloseAndCreateUIAction.ACTION_NAME}; _text:{t("observe.content.action.closeAndCreate.activity")}; _toolTipText:{t("observe.content.action.closeAndCreate.activity.tip")}; } -#moveSelectedChildren { - text:"observe.content.action.move.activities.seine"; - toolTipText:"observe.content.action.move.activities.seine.tip"; +#move { + _text:{t("observe.content.action.move.activities.seine")}; + _toolTipText:{t("observe.content.action.move.activities.seine.tip")}; _observeAction:{MoveActivitySeinesUIAction.ACTION_NAME}; } \ No newline at end of file diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUIHandler.java index e796f5b..ca536e9 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUIHandler.java @@ -21,10 +21,13 @@ */ package fr.ird.observe.application.swing.ui.content.list.impl.seine; +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.constants.DataContextType; import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.list.ContentListUIHandler; +import fr.ird.observe.services.dto.DataReference; +import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; import fr.ird.observe.services.dto.seine.RouteDto; @@ -41,8 +44,26 @@ public class ActivitySeinesUIHandler extends ContentListUIHandler<RouteDto, Acti } @Override - public boolean isCanCloseChild() { - return true; + protected boolean computeCanGotoOpen() { + // il faut que l'activité ouverte soit dans cette route + boolean result = ObserveSwingApplicationContext.get().getDataContext().isOpenActivitySeine(); + if (result) { + + String id = ObserveSwingApplicationContext.get().getDataContext().getOpenActivitySeineId(); + result = false; + for (DataReference<ActivitySeineDto> reference : ui.getModel().getData()) { + if (id.equals(reference.getId())) { + result = true; + break; + } + } + } + return result; + } + + @Override + protected boolean computeCanClose() { + return computeCanGotoOpen(); } @Override diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/CommonListUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/CommonListUI.jcss deleted file mode 100644 index fe34dfb..0000000 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/CommonListUI.jcss +++ /dev/null @@ -1,81 +0,0 @@ -/* - * #%L - * ObServe :: Swing - * %% - * Copyright (C) 2008 - 2010 IRD, Codelutin, Tony Chemit - * %% - * 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% - */ - -#model { - enabled: true; -} - -JButton { - _protectFocus:true; -} - -.gotoOpenTrip { - visible:{model.isUpdatingMode() && dataContext.isOpenTrip()}; - _observeAction:{SelectOpenNodeUIAction.ACTION_NAME}; - _type:{TripSeineDto.class}; - _text:{t("observe.content.action.goto.open.maree")}; - _toolTipText:{t("observe.content.action.goto.open.trip.tip")}; -} - -.gotoOpenTrip2 { - visible:{model.isReadingMode() && dataContext.isOpenTrip()}; - _observeAction:{SelectOpenNodeUIAction.ACTION_NAME}; - _type:{TripSeineDto.class}; - _actionIcon:{"go-jump"}; - _text:{t("observe.content.action.goto.open.other.maree")}; - _toolTipText:{t("observe.content.action.goto.open.other.maree.tip")}; -} - -.gotoOpenRoute { - visible:{model.isUpdatingMode() && dataContext.isOpenRoute()}; - _observeAction:{SelectOpenNodeUIAction.ACTION_NAME}; - _type:{RouteDto.class}; - _text:{t("observe.content.action.goto.open.route")}; - _toolTipText:{t("observe.content.action.goto.open.route.tip")}; -} - -.gotoOpenRoute2 { - visible:{model.isReadingMode() && dataContext.isOpenRoute()}; - _observeAction:{SelectOpenNodeUIAction.ACTION_NAME}; - _type:{RouteDto.class}; - _actionIcon:{"go-jump"}; - _text:{t("observe.content.action.goto.open.other.route")}; - _toolTipText:{t("observe.content.action.goto.open.other.route.tip")}; -} - -.gotoOpenActivity { - visible:{model.isUpdatingMode() && dataContext.isOpenActivity()}; - _observeAction:{SelectOpenNodeUIAction.ACTION_NAME}; - _type:{ActivitySeineDto.class}; - _text:{t("observe.content.action.goto.open.activity")}; - _toolTipText:{t("observe.content.action.goto.open.activity.tip")}; -} - -.gotoOpenActivity2 { - visible:{model.isReadingMode() && dataContext.isOpenActivitySeine()}; - _observeAction:{SelectOpenNodeUIAction.ACTION_NAME}; - _type:{ActivitySeineDto.class}; - _actionIcon:{"go-jump"}; - _text:{t("observe.content.action.goto.open.other.activitySeine")}; - _toolTipText:{t("observe.content.action.goto.open.other.activitySeine.tip")}; -} - diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUI.jaxx index 4a44aa8..34a76e6 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUI.jaxx @@ -29,13 +29,18 @@ fr.ird.observe.services.dto.seine.ActivitySeineDto fr.ird.observe.services.dto.seine.TripSeineDto fr.ird.observe.services.dto.seine.RouteDto - fr.ird.observe.application.swing.ui.actions.shared.SelectOpenNodeUIAction + fr.ird.observe.application.swing.ui.actions.content.CloseOpenUIAction + fr.ird.observe.application.swing.ui.actions.content.CreateOpenUIAction fr.ird.observe.application.swing.ui.actions.content.MoveRoutesUIAction + fr.ird.observe.application.swing.ui.actions.content.ReOpenUIAction + fr.ird.observe.application.swing.ui.actions.shared.SelectNodeUIAction + fr.ird.observe.application.swing.ui.actions.shared.SelectOpenNodeUIAction static org.nuiton.i18n.I18n.n + static org.nuiton.i18n.I18n.t </import> - <style source="CommonListUI.jcss"/> + <style source="../CommonListUI.jcss"/> <!-- handler --> <RoutesUIHandler id='handler' constructorParams='this'/> @@ -46,23 +51,29 @@ <!-- edit bean --> <TripSeineDto id='bean'/> - <!-- override generic actions --> - <JButton id='gotoSelectedChild'/> - <JButton id='reopenChild'/> - <JButton id='closeChild'/> - <JButton id='gotoOpenChild' styleClass='gotoOpenRoute'/> - <JButton id='gotoOpenChild2' styleClass='gotoOpenRoute2'/> - <JButton id='createChild'/> - <JButton id='moveSelectedChildren'/> - - <!-- extra actions --> - <Table id='extraActions' fill="both" weightx="1" insets='2'> - <row weighty="1" weightx="1"> + <Table id="actions" fill='both' weightx='1' insets='0'> + <row> + <cell> + <JButton id='gotoSelected'/> + </cell> <cell> - <JButton id='gotoOpenActivity' styleClass='gotoOpenActivity'/> + <JButton id='gotoOpen'/> + </cell> + </row> + <row> + <cell fill='both'> + <JButton id='reopen'/> + </cell> + <cell fill='both'> + <JButton id='close'/> + </cell> + </row> + <row> + <cell fill='both'> + <JButton id='move'/> </cell> <cell> - <JButton id='gotoOpenActivity2' styleClass='gotoOpenActivity2'/> + <JButton id='create'/> </cell> </row> </Table> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUI.jcss index 32e16fc..636e69c 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUI.jcss @@ -19,24 +19,30 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -#gotoSelectedChild { + +#gotoSelected { _text:{t("observe.content.action.goto.selected.route")}; _toolTipText:{t("observe.content.action.goto.selected.route.tip")}; } -#reopenChild { +#gotoOpen { + _type:{RouteDto.class}; + _text:{t("observe.content.action.goto.open.route")}; + _toolTipText:{t("observe.content.action.goto.open.route.tip")}; +} + +#reopen { _text:{t("observe.content.action.reopen.selected.route")}; _toolTipText:{t("observe.content.action.reopen.selected.route.tip")}; } -#createChild { - text:"observe.content.action.create.route"; - toolTipText:"observe.content.action.create.route.tip"; +#create { + _text:{t("observe.content.action.create.route")}; + _toolTipText:{t("observe.content.action.create.route.tip")}; } -#moveSelectedChildren { - text:"observe.content.action.move.routes"; - toolTipText:"observe.content.action.move.routes.tip"; +#move { + _text:{t("observe.content.action.move.routes")}; + _toolTipText:{t("observe.content.action.move.routes.tip")}; _observeAction:{MoveRoutesUIAction.ACTION_NAME}; } - diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUIHandler.java index d2f3d5b..baeaf6e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUIHandler.java @@ -26,6 +26,7 @@ import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.constants.DataContextType; import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.list.ContentListUIHandler; +import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.seine.RouteDto; import fr.ird.observe.services.dto.seine.TripSeineDto; @@ -42,8 +43,31 @@ public class RoutesUIHandler extends ContentListUIHandler<TripSeineDto, RouteDto } @Override - public boolean isCanCloseChild() { - return !getModel().isCanReopen() && !ObserveSwingApplicationContext.get().getDataContext().isOpenActivitySeine(); + protected boolean computeCanGotoOpen() { + // il faut que la route ouverte soit dans cette marée + boolean result = ObserveSwingApplicationContext.get().getDataContext().isOpenRoute(); + if (result) { + + String id = ObserveSwingApplicationContext.get().getDataContext().getOpenRouteId(); + result = false; + for (DataReference<RouteDto> reference : ui.getModel().getData()) { + if (id.equals(reference.getId())) { + result = true; + break; + } + } + } + return result; + } + + protected boolean computeCanReopen() { + return ui.getModel().isOneSelectedData() && !ObserveSwingApplicationContext.get().getDataContext().isOpenRoute(); + } + + @Override + protected boolean computeCanClose() { + // il faut que la route ouverte soit dans cette marée et qu'il n'y a pas d'activité ouverte + return computeCanGotoOpen() && !ObserveSwingApplicationContext.get().getDataContext().isOpenActivitySeine(); } @Override diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUI.jaxx index f7e9a4f..5f2cdee 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUI.jaxx @@ -28,14 +28,18 @@ fr.ird.observe.services.dto.seine.TripSeineDto fr.ird.observe.services.dto.seine.RouteDto fr.ird.observe.services.dto.referential.ProgramDto - fr.ird.observe.application.swing.ui.actions.shared.SelectOpenNodeUIAction + fr.ird.observe.application.swing.ui.actions.content.CloseOpenUIAction + fr.ird.observe.application.swing.ui.actions.content.CreateOpenUIAction fr.ird.observe.application.swing.ui.actions.content.MoveTripSeinesUIAction + fr.ird.observe.application.swing.ui.actions.content.ReOpenUIAction + fr.ird.observe.application.swing.ui.actions.shared.SelectNodeUIAction + fr.ird.observe.application.swing.ui.actions.shared.SelectOpenNodeUIAction static org.nuiton.i18n.I18n.n static org.nuiton.i18n.I18n.t </import> - <style source="CommonListUI.jcss"/> + <style source="../CommonListUI.jcss"/> <!-- handler --> <TripSeinesUIHandler id='handler' constructorParams='this'/> @@ -46,31 +50,29 @@ <!-- edit bean --> <ProgramDto id='bean'/> - <!-- override generic actions --> - <JButton id='gotoSelectedChild'/> - <JButton id='reopenChild'/> - <JButton id='closeChild'/> - <JButton id='gotoOpenChild' styleClass='gotoOpenTrip'/> - <JButton id='gotoOpenChild2' styleClass='gotoOpenTrip2'/> - <JButton id='createChild'/> - <JButton id='moveSelectedChildren'/> - - <!-- extra actions --> - <Table id="extraActions" fill='both' weightx='1' weighty='1' insets='2'> - <row weighty="1" weightx="1"> + <Table id="actions" fill='both' weightx='1' insets='0'> + <row> <cell> - <JButton id='gotoOpenRoute' styleClass='gotoOpenRoute'/> + <JButton id='gotoSelected'/> </cell> <cell> - <JButton id='gotoOpenRoute2' styleClass='gotoOpenRoute2'/> + <JButton id='gotoOpen'/> </cell> </row> - <row weighty="1" weightx="1"> - <cell> - <JButton id='gotoOpenActivity' styleClass='gotoOpenActivity'/> + <row> + <cell fill='both'> + <JButton id='reopen'/> + </cell> + <cell fill='both'> + <JButton id='close'/> + </cell> + </row> + <row> + <cell fill='both'> + <JButton id='move'/> </cell> <cell> - <JButton id='gotoOpenActivity2' styleClass='gotoOpenActivity2'/> + <JButton id='create'/> </cell> </row> </Table> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUI.jcss index 8083de7..286faa4 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUI.jcss @@ -20,24 +20,29 @@ * #L% */ -#gotoSelectedChild { +#gotoSelected { _text:{t("observe.content.action.goto.selected.maree")}; _toolTipText:{t("observe.content.action.goto.selected.maree.tip")}; } -#reopenChild { +#gotoOpen { + _type:{TripSeineDto.class}; + _text:{t("observe.content.action.goto.open.maree")}; + _toolTipText:{t("observe.content.action.goto.open.trip.tip")}; +} + +#reopen { _text:{t("observe.content.action.reopen.selected.maree")}; _toolTipText:{t("observe.content.action.reopen.selected.maree.tip")}; } -#createChild { +#create { _text:{t("observe.content.action.trip")}; _toolTipText:{t("observe.content.action.trip.tip")}; } -#moveSelectedChildren { +#move { _text:{t("observe.content.action.move.trips")}; _toolTipText:{t("observe.content.action.move.trips.tip")}; _observeAction:{MoveTripSeinesUIAction.ACTION_NAME}; } - diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUIHandler.java index b6ac39c..743a93b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUIHandler.java @@ -28,6 +28,7 @@ import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.list.ContentListUIHandler; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine.ProgramSeineNavigationTreeNode; +import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.dto.seine.TripSeineDto; @@ -85,9 +86,32 @@ public class TripSeinesUIHandler extends ContentListUIHandler<ProgramDto, TripSe getUi().setContentTitle(title); } + protected boolean computeCanReopen() { + return ui.getModel().isOneSelectedData() && !ObserveSwingApplicationContext.get().getDataContext().isOpenTrip(); + } + + @Override + protected boolean computeCanGotoOpen() { + // il faut que la marée ouverte soit dans ce programme + boolean result = ObserveSwingApplicationContext.get().getDataContext().isOpenTripSeine(); + if (result) { + + String id = ObserveSwingApplicationContext.get().getDataContext().getOpenTripSeineId(); + result = false; + for (DataReference<TripSeineDto> reference : ui.getModel().getData()) { + if (id.equals(reference.getId())) { + result = true; + break; + } + } + } + return result; + } + @Override - public boolean isCanCloseChild() { - return !getModel().isCanReopen() && !ObserveSwingApplicationContext.get().getDataContext().isOpenRoute(); + protected boolean computeCanClose() { + // il faut que la marée ouverte soit dans ce programme et qu'il n'y a pas de route ouverte + return computeCanGotoOpen() && !ObserveSwingApplicationContext.get().getDataContext().isOpenRoute(); } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/longline/TripLonglineUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/longline/TripLonglineUI.jcss index 3ba29c5..6159bf7 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/longline/TripLonglineUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/longline/TripLonglineUI.jcss @@ -178,19 +178,23 @@ NumberEditor { #reopen { _toolTipText:{t("observe.content.action.reopen.maree.tip")}; + _globalAction:{"openCloseDataGlobal"}; } #close { enabled:{!model.isModified() && (model.isHistoricalData() || model.isValid()) && !dataContext.isOpenActivity()}; _toolTipText:{t("observe.action.close.maree.tip")}; + _globalAction:{"openCloseDataGlobal"}; } #closeAndCreate { enabled:{!model.isModified() && (model.isHistoricalData() || model.isValid()) && !dataContext.isOpenActivity()}; _text:{t("observe.content.action.closeAndCreate.maree")}; _toolTipText:{t("observe.content.action.closeAndCreate.maree.tip")}; + _globalAction:{"newNextGlobal"}; } #delete { _toolTipText:{t("observe.action.delete.maree.tip")}; + _globalAction:{"deleteDataGlobal"}; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 5302543dbb9552cd5b0c29d60cbe763a456ac487 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 4 08:18:15 2016 +0100 [ui] Revue des actions de sélections de nœuds et autres améliorations --- .../observe/application/swing/ObserveRunner.java | 2 +- .../swing/ObserveSwingApplicationContext.java | 6 +- .../ObserveSwingApplicationDataSourcesManager.java | 2 +- .../swing/db/ObserveSwingDataSource.java | 2 +- .../application/swing/ui/MnemonicHelper.java | 14 +- .../application/swing/ui/ObserveMainUI.jaxx | 74 +++---- .../application/swing/ui/ObserveMainUI.jcss | 35 +--- .../swing/ui/ObserveMainUIInitializer.java | 103 +++++++--- .../application/swing/ui/ObserveUICallback.java | 4 +- .../ui/actions/{shared => }/AbstractUIAction.java | 24 ++- .../swing/ui/actions/CloseHelpAction.java | 76 ------- .../actions/content/AbstractContentUIAction.java | 6 +- .../ui/actions/content/CloseAndCreateUIAction.java | 12 +- .../{shared => content}/GoDownUIAction.java | 67 ++----- .../actions/{shared => content}/GoUpUIAction.java | 48 ++--- .../content/MoveActivityLonglinesUIAction.java | 4 +- .../content/MoveActivitySeinesUIAction.java | 4 +- .../ui/actions/content/MoveRoutesUIAction.java | 4 +- .../{shared => content}/SelectNodeUIAction.java | 49 ++++- .../SelectOpenNodeUIAction.java | 36 ++-- .../ui/actions/global/AbstractGlobalUIAction.java | 2 +- .../{ => menu/action}/LaunchAdminAction.java | 2 +- .../config}/ChangeApplicationLanguageAction.java | 2 +- .../{ => menu/config}/ChangeDbLanguageAction.java | 2 +- .../config}/ReloadDefaultConfigurationAction.java | 2 +- .../{ => menu/config}/ReloadResourcesAction.java | 2 +- .../{ => menu/config}/ShowConfigAction.java | 2 +- .../{ => menu/file}/CloseApplicationAction.java | 2 +- .../{ => menu/file}/ReloadApplicationAction.java | 2 +- .../{ => menu/file}/ToFullScreenAction.java | 2 +- .../{ => menu/file}/ToWindowScreenAction.java | 2 +- .../ui/actions/{ => menu/help}/GotoSiteAction.java | 2 +- .../actions/{ => menu/help}/ShowAboutAction.java | 2 +- .../actions/menu/navigation/GotoActionSupport.java | 80 ++++++++ .../menu/navigation/GotoOpenActivityAction.java | 50 +++++ .../menu/navigation/GotoOpenProgramAction.java | 42 ++++ .../menu/navigation/GotoOpenRouteAction.java | 42 ++++ .../actions/menu/navigation/GotoOpenSetAction.java | 59 ++++++ .../menu/navigation/GotoOpenTripAction.java | 42 ++++ .../menu/navigation/GotoReferentialAction.java | 42 ++++ .../{ => menu/storage}/ChangeStorageAction.java | 2 +- .../{ => menu/storage}/CloseStorageAction.java | 3 +- .../storage}/ImportStorageFromFileAction.java | 2 +- .../{ => menu/storage}/ReloadStorageAction.java | 5 +- .../storage}/SaveStorageToFileAction.java | 3 +- .../{ => menu/storage}/ShowStorageInfoAction.java | 2 +- .../{ => menu/storage}/StartH2WebServerAction.java | 2 +- .../{ => menu/storage}/StartServerModeAction.java | 2 +- .../{ => menu/storage}/StopH2WebServerAction.java | 9 +- .../{ => menu/storage}/StopServerModeAction.java | 25 +-- .../swing/ui/admin/config/ConfigUIHandler.java | 2 +- .../application/swing/ui/content/ContentUI.jaxx | 4 +- .../swing/ui/content/ContentUIBlockingLayerUI.java | 2 +- .../swing/ui/content/ContentUIHandler.java | 2 +- .../swing/ui/content/ContentUIInitializer.java | 2 +- .../swing/ui/content/ObserveActionMap.java | 2 +- .../swing/ui/content/list/ContentListUI.jaxx | 7 +- .../ui/content/list/ContentListUIHandler.java | 26 +-- .../swing/ui/content/list/ContentListUIModel.java | 22 +- .../list/impl/longline/ActivityLonglinesUI.jaxx | 4 +- .../list/impl/longline/ActivityLonglinesUI.jcss | 1 - .../impl/longline/ActivityLonglinesUIHandler.java | 9 + .../list/impl/longline/TripLonglinesUI.jaxx | 4 +- .../list/impl/longline/TripLonglinesUI.jcss | 1 - .../list/impl/longline/TripLonglinesUIHandler.java | 8 + .../content/list/impl/seine/ActivitySeinesUI.jaxx | 4 +- .../content/list/impl/seine/ActivitySeinesUI.jcss | 1 - .../list/impl/seine/ActivitySeinesUIHandler.java | 9 + .../swing/ui/content/list/impl/seine/RoutesUI.jaxx | 4 +- .../swing/ui/content/list/impl/seine/RoutesUI.jcss | 1 - .../content/list/impl/seine/RoutesUIHandler.java | 9 + .../ui/content/list/impl/seine/TripSeinesUI.jaxx | 4 +- .../ui/content/list/impl/seine/TripSeinesUI.jcss | 1 - .../list/impl/seine/TripSeinesUIHandler.java | 8 + .../swing/ui/content/table/ContentTableUI.jcss | 2 +- .../swing/ui/tree/navigation/NavigationTree.java | 223 +++++++++++++-------- .../ui/tree/navigation/NavigationTreeModel.java | 16 +- .../nodes/NavigationTreeNodeSupport.java | 68 ++++++- .../ObserveDataSourceInformation.java | 12 +- 79 files changed, 951 insertions(+), 517 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveRunner.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveRunner.java index ab27518..3579795 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveRunner.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveRunner.java @@ -26,7 +26,7 @@ import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationCon import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.ObserveMainUIInitializer; import fr.ird.observe.application.swing.ui.UIHelper; -import fr.ird.observe.application.swing.ui.actions.StartServerModeAction; +import fr.ird.observe.application.swing.ui.actions.menu.storage.StartServerModeAction; import fr.ird.observe.application.swing.ui.util.FloatConverter; import fr.ird.observe.application.swing.validation.ObserveSwingValidator; import fr.ird.observe.util.ObserveUtil; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationContext.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationContext.java index 9162cbc..51d5ac8 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationContext.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationContext.java @@ -273,7 +273,7 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im return MAIN_UI.get(); } - public List<String> getNodesToReselect() { + public List<Object> getNodesToReselect() { return NODE_TO_RESELECT.get(); } @@ -309,7 +309,7 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im // - Write //------------------------------------------- - public void setNodesToReselect(String[] paths) { + public void setNodesToReselect(Object[] paths) { if (paths == null) { NODE_TO_RESELECT.remove(); @@ -329,7 +329,7 @@ public class ObserveSwingApplicationContext extends DefaultApplicationContext im public void setMainUI(ObserveMainUI ui) { MAIN_UI.set(ui); - ObserveActionMap actionMap = new ObserveActionMap(ui); + ObserveActionMap actionMap = ui.getObserveActionMap(); ui.getRootPane().setActionMap(actionMap); ACTION_MAP.set(actionMap); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationDataSourcesManager.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationDataSourcesManager.java index 920de11..5e58b62 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationDataSourcesManager.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingApplicationDataSourcesManager.java @@ -32,7 +32,7 @@ import fr.ird.observe.application.swing.db.event.ObserveSwingDataSourceEvent; import fr.ird.observe.application.swing.db.event.ObserveSwingDataSourceListenerAdapter; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.ObserveUIMode; -import fr.ird.observe.application.swing.ui.actions.ChangeStorageAction; +import fr.ird.observe.application.swing.ui.actions.menu.storage.ChangeStorageAction; import fr.ird.observe.application.swing.ui.storage.StorageUIModel; import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration; import fr.ird.observe.services.configuration.ObserveDataSourceInformation; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/db/ObserveSwingDataSource.java b/application-swing/src/main/java/fr/ird/observe/application/swing/db/ObserveSwingDataSource.java index 82182db..21e2326 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/db/ObserveSwingDataSource.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/db/ObserveSwingDataSource.java @@ -296,7 +296,7 @@ public class ObserveSwingDataSource extends AbstractSerializableBean implements Version dbVersion = dataSourceInformation.getVersion(); if (!dataSourceInformation.getMigrations().isEmpty()) { - if (dbVersion.before(dataSourceInformation.getMinnimumVersion())) { + if (dbVersion.before(dataSourceInformation.getMinimumVersion())) { JOptionPane.showMessageDialog( null, diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/MnemonicHelper.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/MnemonicHelper.java index 40e2f16..631af79 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/MnemonicHelper.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/MnemonicHelper.java @@ -1,7 +1,7 @@ package fr.ird.observe.application.swing.ui; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; -import fr.ird.observe.application.swing.ui.actions.shared.AbstractUIAction; +import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; import jaxx.runtime.JAXXObject; import org.apache.commons.lang3.StringUtils; @@ -47,10 +47,14 @@ public class MnemonicHelper { boolean showMnemonic = isShowMnemonic(); if (showMnemonic) { String actionStr = keyStrokeToStr(actionKey); - String text = component.getText() + actionStr; - component.setText(text); - String tip = component.getToolTipText() + actionStr; - component.setToolTipText(tip); + if (component.getText() != null) { + String text = component.getText() + actionStr; + component.setText(text); + } + if (component.getToolTipText() != null) { + String tip = component.getToolTipText() + actionStr; + component.setToolTipText(tip); + } } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jaxx index 28356e0..67ad4bd 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jaxx @@ -20,8 +20,7 @@ #L% --> -<JFrame id='mainFrame' width='800' height='800' - onWindowClosing='new fr.ird.observe.application.swing.ui.actions.CloseApplicationAction(this).run()'> +<JFrame id='mainFrame' width='800' height='800' onWindowClosing='new CloseApplicationAction(this).run()'> <import> fr.ird.observe.application.swing.ObserveSwingApplicationContext @@ -37,33 +36,39 @@ fr.ird.observe.application.swing.ui.admin.AdminStep - fr.ird.observe.application.swing.ui.actions.ChangeApplicationLanguageAction - fr.ird.observe.application.swing.ui.actions.ChangeDbLanguageAction - fr.ird.observe.application.swing.ui.actions.ChangeStorageAction - fr.ird.observe.application.swing.ui.actions.CloseApplicationAction - fr.ird.observe.application.swing.ui.actions.CloseHelpAction - fr.ird.observe.application.swing.ui.actions.CloseStorageAction - fr.ird.observe.application.swing.ui.actions.GotoSiteAction - fr.ird.observe.application.swing.ui.actions.ImportStorageFromFileAction - fr.ird.observe.application.swing.ui.actions.LaunchAdminAction - fr.ird.observe.application.swing.ui.actions.ReloadResourcesAction - fr.ird.observe.application.swing.ui.actions.ReloadApplicationAction - fr.ird.observe.application.swing.ui.actions.ReloadDefaultConfigurationAction - fr.ird.observe.application.swing.ui.actions.ReloadStorageAction - fr.ird.observe.application.swing.ui.actions.SaveStorageToFileAction - fr.ird.observe.application.swing.ui.actions.ShowAboutAction - fr.ird.observe.application.swing.ui.actions.ShowStorageInfoAction - fr.ird.observe.application.swing.ui.actions.StartH2WebServerAction - fr.ird.observe.application.swing.ui.actions.StartServerModeAction - fr.ird.observe.application.swing.ui.actions.StopH2WebServerAction - fr.ird.observe.application.swing.ui.actions.StopServerModeAction - fr.ird.observe.application.swing.ui.actions.ToFullScreenAction - fr.ird.observe.application.swing.ui.actions.ToWindowScreenAction + fr.ird.observe.application.swing.ui.actions.menu.config.ChangeApplicationLanguageAction + fr.ird.observe.application.swing.ui.actions.menu.config.ChangeDbLanguageAction + fr.ird.observe.application.swing.ui.actions.menu.action.LaunchAdminAction + fr.ird.observe.application.swing.ui.actions.menu.config.ReloadDefaultConfigurationAction + fr.ird.observe.application.swing.ui.actions.menu.config.ReloadResourcesAction + fr.ird.observe.application.swing.ui.actions.menu.file.CloseApplicationAction + fr.ird.observe.application.swing.ui.actions.menu.file.ReloadApplicationAction + fr.ird.observe.application.swing.ui.actions.menu.file.ToFullScreenAction + fr.ird.observe.application.swing.ui.actions.menu.file.ToWindowScreenAction + fr.ird.observe.application.swing.ui.actions.menu.help.GotoSiteAction + fr.ird.observe.application.swing.ui.actions.menu.help.ShowAboutAction + fr.ird.observe.application.swing.ui.actions.menu.navigation.GotoOpenProgramAction + fr.ird.observe.application.swing.ui.actions.menu.navigation.GotoOpenTripAction + fr.ird.observe.application.swing.ui.actions.menu.navigation.GotoOpenRouteAction + fr.ird.observe.application.swing.ui.actions.menu.navigation.GotoOpenActivityAction + fr.ird.observe.application.swing.ui.actions.menu.navigation.GotoOpenSetAction + fr.ird.observe.application.swing.ui.actions.menu.navigation.GotoReferentialAction + fr.ird.observe.application.swing.ui.actions.menu.storage.ChangeStorageAction + fr.ird.observe.application.swing.ui.actions.menu.storage.CloseStorageAction + fr.ird.observe.application.swing.ui.actions.menu.storage.ImportStorageFromFileAction + fr.ird.observe.application.swing.ui.actions.menu.storage.ReloadStorageAction + fr.ird.observe.application.swing.ui.actions.menu.storage.SaveStorageToFileAction + fr.ird.observe.application.swing.ui.actions.menu.storage.ShowStorageInfoAction + fr.ird.observe.application.swing.ui.actions.menu.storage.StartH2WebServerAction + fr.ird.observe.application.swing.ui.actions.menu.storage.StartServerModeAction + fr.ird.observe.application.swing.ui.actions.menu.storage.StopH2WebServerAction + fr.ird.observe.application.swing.ui.actions.menu.storage.StopServerModeAction fr.ird.observe.application.swing.ui.actions.content.CloseOpenUIAction fr.ird.observe.application.swing.ui.actions.content.DeleteDataUIAction fr.ird.observe.application.swing.ui.actions.content.ReOpenUIAction fr.ird.observe.application.swing.ui.content.ContentUIManager + fr.ird.observe.application.swing.ui.content.ObserveActionMap fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeHeader @@ -88,6 +93,7 @@ <Boolean id='h2WebServer' javaBean='Boolean.FALSE'/> + <ObserveActionMap id="observeActionMap" constructorParams='this'/> <ChangeStorageAction id="changeStorageAction" constructorParams='this'/> <CloseStorageAction id="closeStorageAction" constructorParams='this'/> <ReloadStorageAction id="reloadStorageAction" constructorParams='this'/> @@ -197,19 +203,13 @@ protected void finalize() throws Throwable { </JMenu> <JMenu id='menuNavigation'> - <JMenuItem id='menuNavigationProgram' - onActionPerformed="navigation.selectOpenNode(ProgramDto.class)"/> - <JMenuItem id='menuNavigationTrip' - onActionPerformed="navigation.selectOpenNode(TripSeineDto.class)"/> - <JMenuItem id='menuNavigationRoute' - onActionPerformed="navigation.selectOpenNode(RouteDto.class)"/> - <JMenuItem id='menuNavigationActivity' - onActionPerformed="navigation.selectOpenNode(ActivitySeineDto.class)"/> - <JMenuItem id='menuNavigationSet' - onActionPerformed="navigation.selectOpenNode(SetSeineDto.class)"/> + <JMenuItem id='menuNavigationProgram'/> + <JMenuItem id='menuNavigationTrip'/> + <JMenuItem id='menuNavigationRoute'/> + <JMenuItem id='menuNavigationActivity'/> + <JMenuItem id='menuNavigationSet'/> <JSeparator/> - <JMenuItem id='menuNavigationReferentiel' - onActionPerformed='navigation.selectNode("observe.common.referentiel")'/> + <JMenuItem id='menuNavigationReferentiel'/> </JMenu> <JMenu id='menuConfiguration'> <JMenu id='menuLanguage'> @@ -287,7 +287,7 @@ protected void finalize() throws Throwable { <JPanel id="content"> <JPanel id="emptySelection" constraints='"emptySelection"' layout="{new BorderLayout()}"> - <JLabel id="emptySelectionLabel" constraints="BorderLayout.CENTER"/> + <JLabel id="emptySelectionLabel" constraints="BorderLayout.CENTER"/> </JPanel> </JPanel> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jcss index dab2a24..844e19c 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUI.jcss @@ -78,7 +78,7 @@ JSplitPane { } #menuConfigurationConfiguration { - action: {new fr.ird.observe.application.swing.ui.actions.ShowConfigAction(this)}; + action: {new fr.ird.observe.application.swing.ui.actions.menu.config.ShowConfigAction(this)}; } #menuConfiguration { @@ -245,50 +245,31 @@ JSplitPane { #menuNavigation { text: "observe.menu.navigation"; mnemonic: N; - enabled: {getHandler().acceptMode(getMode(), !isBusy(), ObserveUIMode.DB)}; + enabled:{getHandler().acceptMode(getMode(), !isBusy(), ObserveUIMode.DB)}; } #menuNavigationProgram { - text: "observe.content.action.goto.open.program.short"; - toolTipText: "observe.content.action.goto.open.program.tip"; - icon: "navigation.fr.ird.observe.services.dto.referential.ProgramDto"; - mnemonic: P; - enabled: {getDataContext().isOpenProgram()}; + _observeAction:{GotoOpenProgramAction.ACTION_NAME}; } #menuNavigationTrip { - text: "observe.content.action.goto.open.trip.short"; - toolTipText: "observe.content.action.goto.open.trip.tip"; - icon: "navigation.fr.ird.observe.services.dto.TripDto"; - mnemonic: M; - enabled: {getDataContext().isOpenTrip()}; + _observeAction:{GotoOpenTripAction.ACTION_NAME}; } #menuNavigationRoute { - text: "observe.content.action.goto.open.route.short"; - toolTipText: "observe.content.action.goto.open.route.tip"; - icon: "navigation.fr.ird.observe.services.dto.seine.RouteDto"; - mnemonic: R; - enabled: {getDataContext().isOpenRoute()}; + _observeAction:{GotoOpenRouteAction.ACTION_NAME}; } #menuNavigationActivity { - text: "observe.content.action.goto.open.activity.short"; - toolTipText: "observe.content.action.goto.open.activity.tip"; - icon: "navigation.fr.ird.observe.services.dto.ActivityDto"; - mnemonic: A; - enabled: {getDataContext().isOpenActivity()}; + _observeAction:{GotoOpenActivityAction.ACTION_NAME}; } #menuNavigationSet { - text: "observe.content.action.goto.open.set.short"; - toolTipText: "observe.content.action.goto.open.set.tip"; - icon: "navigation.fr.ird.observe.services.dto.SetDto"; - mnemonic: C; - enabled: {getDataContext().isOpenSet()}; + _observeAction:{GotoOpenSetAction.ACTION_NAME}; } #menuNavigationReferentiel { + _observeAction:{GotoReferentialAction.ACTION_NAME}; text: "observe.action.goto.referentiel.short"; toolTipText: "observe.action.goto.referentiel.tip"; icon: "navigation.referentiel"; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIInitializer.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIInitializer.java index 38a76ff..c3eb9b6 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIInitializer.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveMainUIInitializer.java @@ -27,8 +27,10 @@ import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.decoration.DecoratorService; import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; +import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; import fr.ird.observe.application.swing.ui.content.ContentUI; import fr.ird.observe.application.swing.ui.content.ContentUIManager; +import fr.ird.observe.application.swing.ui.content.ObserveActionMap; import fr.ird.observe.application.swing.ui.tree.ObserveNavigationTreeShowPopupAction; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; @@ -46,6 +48,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.i18n.I18n; +import javax.swing.AbstractButton; import javax.swing.JComponent; import javax.swing.SwingUtilities; import javax.swing.border.Border; @@ -60,7 +63,9 @@ import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.List; import java.util.Locale; +import java.util.Objects; +import static fr.ird.observe.application.swing.ui.content.ContentUIInitializer.OBSERVE_ACTION; import static org.nuiton.i18n.I18n.t; /** @@ -172,39 +177,44 @@ public class ObserveMainUIInitializer { DataContext context = ui.getDataContext(); context.populateSelectedIds(selectedIds); - JComponent focusOwner = (JComponent) ui.getFocusOwner(); boolean focusOnNavigation = false; + JComponent focusOwner; + if (ui.getFocusOwner() == ui) { + focusOnNavigation = true; + focusOwner = ui.getNavigation(); + } else { + focusOwner = (JComponent) ui.getFocusOwner(); - if (focusOwner != null) { - if (ui.getNavigation().equals(focusOwner)) { - focusOnNavigation = true; - } - if (ui.getNavigationTreeHeader().equals(focusOwner)) { - focusOnNavigation = true; - } - if (ui.getNavigationView().equals(focusOwner)) { - focusOnNavigation = true; - } - if (!focusOnNavigation) { - Container focusOwnerParent = focusOwner.getParent(); - while (focusOwnerParent != null) { - if (ui.getNavigation().equals(focusOwnerParent)) { - focusOnNavigation = true; - break; - } - if (ui.getNavigationTreeHeader().equals(focusOwnerParent)) { - focusOnNavigation = true; - break; - } - if (ui.getNavigationView().equals(focusOwnerParent)) { - focusOnNavigation = true; - break; + if (focusOwner != null) { + if (ui.getNavigation().equals(focusOwner)) { + focusOnNavigation = true; + } + if (ui.getNavigationTreeHeader().equals(focusOwner)) { + focusOnNavigation = true; + } + if (ui.getNavigationView().equals(focusOwner)) { + focusOnNavigation = true; + } + if (!focusOnNavigation) { + Container focusOwnerParent = focusOwner.getParent(); + while (focusOwnerParent != null) { + if (ui.getNavigation().equals(focusOwnerParent)) { + focusOnNavigation = true; + break; + } + if (ui.getNavigationTreeHeader().equals(focusOwnerParent)) { + focusOnNavigation = true; + break; + } + if (ui.getNavigationView().equals(focusOwnerParent)) { + focusOnNavigation = true; + break; + } + focusOwnerParent = focusOwnerParent.getParent(); } - focusOwnerParent = focusOwnerParent.getParent(); } } } - if (focusOnNavigation) { if (log.isInfoEnabled()) { log.info("Focus on navigation: " + focusOwner); @@ -304,7 +314,7 @@ public class ObserveMainUIInitializer { ObserveSwingDataSource mainStorage = rootContext.getDataSourcesManager().getMainDataSource(); ObserveUIMode oldMode = null; - String[] ids = null; + Object[] ids = null; if (ui != null) { oldMode = ui.getMode(); @@ -363,6 +373,24 @@ public class ObserveMainUIInitializer { protected void initialize() { + //FIXME Je ne sais pas comment ces bindings sont générés et on n'en veut pas!!! + ui.removeDataBinding(ObserveMainUI.BINDING_MENU_NAVIGATION_PROGRAM_ENABLED); + ui.removeDataBinding(ObserveMainUI.BINDING_MENU_NAVIGATION_TRIP_ENABLED); + ui.removeDataBinding(ObserveMainUI.BINDING_MENU_NAVIGATION_ROUTE_ENABLED); + ui.removeDataBinding(ObserveMainUI.BINDING_MENU_NAVIGATION_ACTIVITY_ENABLED); + ui.removeDataBinding(ObserveMainUI.BINDING_MENU_NAVIGATION_SET_ENABLED); + + ObserveActionMap actionMap = ui.getObserveActionMap(); + + for (Object o : ui.get$objectMap().values()) { + + if (o instanceof AbstractButton) { + init(actionMap, (AbstractButton) o); + continue; + } + + } + MnemonicHelper.addKeyStrokeFromMnemonic(ui); // bad binding, force value @@ -416,6 +444,25 @@ public class ObserveMainUIInitializer { }); } + protected void init(ObserveActionMap actionMap, AbstractButton editor) { + String actionId = (String) editor.getClientProperty(OBSERVE_ACTION); + if (actionId == null) { + + return; + } + + // on a trouve une action commune + AbstractUIAction action = (AbstractUIAction) actionMap.get(actionId); + Objects.requireNonNull(action, "action [" + actionId + "] not found for ui " + ui.getClass().getName()); + + if (log.isDebugEnabled()) { + log.debug("init common action " + actionId); + } + + action.initForMainUi(editor); + + } + private Border focusBorder; private Border noFocusBorder; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveUICallback.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveUICallback.java index 4a1bcff..ba328a0 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveUICallback.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/ObserveUICallback.java @@ -25,8 +25,8 @@ package fr.ird.observe.application.swing.ui; import fr.ird.observe.application.swing.ObserveRunner; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationConfig; -import fr.ird.observe.application.swing.ui.actions.CloseApplicationAction; -import fr.ird.observe.application.swing.ui.actions.ReloadStorageAction; +import fr.ird.observe.application.swing.ui.actions.menu.file.CloseApplicationAction; +import fr.ird.observe.application.swing.ui.actions.menu.storage.ReloadStorageAction; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/AbstractUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/AbstractUIAction.java similarity index 88% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/AbstractUIAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/AbstractUIAction.java index fcfd9bf..781852d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/AbstractUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/AbstractUIAction.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.application.swing.ui.actions.shared; +package fr.ird.observe.application.swing.ui.actions; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.MnemonicHelper; @@ -33,10 +33,8 @@ import javax.swing.AbstractAction; import javax.swing.AbstractButton; import javax.swing.Icon; import javax.swing.JComponent; -import javax.swing.JPopupMenu; import javax.swing.KeyStroke; import java.awt.event.ActionEvent; -import java.util.Objects; import static org.nuiton.i18n.I18n.t; @@ -90,6 +88,20 @@ public abstract class AbstractUIAction extends AbstractAction { } } + public void initForMainUi(AbstractButton editor) { + editor.setAction(this); + editor.putClientProperty("ui", mainUI); + putValue(EDITOR, editor); + + KeyStroke keyStroke = getAcceleratorKey(); + if (keyStroke != null) { + + String actionCommandKey = getActionCommandKey(); + mainUI.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(keyStroke, actionCommandKey); + mainUI.getRootPane().getActionMap().put(actionCommandKey, this); + } + } + public void updateAction(ContentUI<?, ?> ui, AbstractButton editor) { MnemonicHelper.addKeyStroke2(editor, getAcceleratorKey()); @@ -136,10 +148,4 @@ public abstract class AbstractUIAction extends AbstractAction { return ui; } - protected JPopupMenu getPopup(ActionEvent e) { - JComponent c = (JComponent) e.getSource(); - JPopupMenu ui = (JPopupMenu) c.getClientProperty("popup"); - Objects.requireNonNull(ui, "could not find client property popup on component" + c); - return ui; - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/CloseHelpAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/CloseHelpAction.java deleted file mode 100644 index 2d26402..0000000 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/CloseHelpAction.java +++ /dev/null @@ -1,76 +0,0 @@ -package fr.ird.observe.application.swing.ui.actions; - -/* - * #%L - * ObServe :: Application Swing - * %% - * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit - * %% - * 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.ird.observe.application.swing.ObserveSwingApplicationContext; -import fr.ird.observe.application.swing.db.ObserveSwingDataSource; -import fr.ird.observe.application.swing.ui.ObserveMainUI; -import fr.ird.observe.application.swing.ui.ObserveUIMode; -import jaxx.runtime.SwingUtil; - -import javax.swing.AbstractAction; -import java.awt.event.ActionEvent; - -import static org.nuiton.i18n.I18n.t; - -/** - * Created on 1/17/15. - * - * @author Tony Chemit - chemit@codelutin.com - * @since 3.13 - */ -public class CloseHelpAction extends AbstractAction { - - private static final long serialVersionUID = 1L; - - private final ObserveMainUI ui; - - public CloseHelpAction(ObserveMainUI ui) { - - super(null, SwingUtil.getUIManagerActionIcon("closeTab")); - this.ui = ui; - putValue(SHORT_DESCRIPTION, t("observe.action.quitHelp.tip")); - putValue(MNEMONIC_KEY, (int) 'F'); - - } - - @Override - public void actionPerformed(ActionEvent event) { - - ObserveUIMode oldMode = ui.getContextValue(ObserveUIMode.class, "oldMode"); - if (oldMode == null) { - - // on regarde si une base est chargee - ObserveSwingDataSource mainStorage = ObserveSwingApplicationContext.get().getDataSourcesManager().getMainDataSource(); - - if (mainStorage == null) { - oldMode = ObserveUIMode.NO_DB; - } else { - oldMode = ObserveUIMode.DB; - } - } - ui.setMode(oldMode); - - } - -} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/AbstractContentUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/AbstractContentUIAction.java index 6744253..45ff43e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/AbstractContentUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/AbstractContentUIAction.java @@ -23,7 +23,7 @@ package fr.ird.observe.application.swing.ui.actions.content; */ import fr.ird.observe.application.swing.ui.ObserveMainUI; -import fr.ird.observe.application.swing.ui.actions.shared.AbstractUIAction; +import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; import fr.ird.observe.application.swing.ui.content.ContentUI; import java.awt.event.ActionEvent; @@ -37,6 +37,8 @@ import java.awt.event.ActionEvent; public abstract class AbstractContentUIAction extends AbstractUIAction { + protected ActionEvent e; + public AbstractContentUIAction(ObserveMainUI mainUI, String actionCommandKey, String label, String shortDescription, String actionIcon, String acceleratorKey) { super(mainUI, actionCommandKey, label, shortDescription, actionIcon, acceleratorKey); } @@ -48,6 +50,8 @@ public abstract class AbstractContentUIAction extends AbstractUIAction { if (!canExecuteAction()) { return; } + this.e=e; + ContentUI<?, ?> contentUI = getContentUI(e); actionPerformed(contentUI); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/CloseAndCreateUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/CloseAndCreateUIAction.java index 70b0e52..eaaa9fe 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/CloseAndCreateUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/CloseAndCreateUIAction.java @@ -78,7 +78,12 @@ public class CloseAndCreateUIAction extends AbstractContentUIAction { boolean wasCollapsed = isOpenActivityNodeCollapsed(tree, getMainUI().getDataContext()); // selection du noeud de l'activity ouverte - tree.selectOpenNode(ActivitySeineDto.class); + getMainUI().getMenuNavigationActivity().doClick(); + + NavigationTreeNodeSupport selectedNode = tree.getSelectedNode(); + selectedNode = tree.getActivitySeineNode(selectedNode, getMainUI().getDataContext().getOpenActivitySeineId()); + + tree.selectNode(selectedNode); // on conserve le path de l'activity TreePath path = tree.getSelectionPath(); @@ -109,7 +114,10 @@ public class CloseAndCreateUIAction extends AbstractContentUIAction { boolean wasCollapsed = isOpenActivityNodeCollapsed(tree, getMainUI().getDataContext()); // selection du noeud de l'activity ouverte - tree.selectOpenNode(ActivityLonglineDto.class); + NavigationTreeNodeSupport selectedNode = tree.getSelectedNode(); + selectedNode = tree.getActivityLonglineNode(selectedNode, getMainUI().getDataContext().getOpenActivitySeineId()); + tree.selectNode(selectedNode); +// tree.selectOpenNode(ActivityLonglineDto.class); // on conserve le path de l'activity TreePath path = tree.getSelectionPath(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/GoDownUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/GoDownUIAction.java similarity index 59% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/GoDownUIAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/GoDownUIAction.java index a17ce17..f29d495 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/GoDownUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/GoDownUIAction.java @@ -19,7 +19,7 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.application.swing.ui.actions.shared; +package fr.ird.observe.application.swing.ui.actions.content; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.content.ContentUI; @@ -27,14 +27,9 @@ import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import javax.swing.AbstractButton; -import javax.swing.Action; -import javax.swing.Icon; import javax.swing.JComponent; -import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.SwingUtilities; -import java.awt.Color; -import java.awt.event.ActionEvent; import java.util.Enumeration; import static org.nuiton.i18n.I18n.n; @@ -46,7 +41,7 @@ import static org.nuiton.i18n.I18n.n; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class GoDownUIAction extends AbstractUIAction { +public class GoDownUIAction extends AbstractContentUIAction { private static final long serialVersionUID = 1L; @@ -58,40 +53,27 @@ public class GoDownUIAction extends AbstractUIAction { n("observe.action.goDown"), n("observe.action.goDown.tip"), "go-down", - null - ); + "alt pressed D"); } @Override - public void actionPerformed(ActionEvent e) { - + protected void actionPerformed(ContentUI<?, ?> contentUI) { SwingUtilities.invokeLater(() -> { - JComponent c = (JComponent) e.getSource(); - JPopupMenu p = getPopup(e); + JComponent c = contentUI.getActionDown(); + JPopupMenu p = getMainUI().getScopeDownPopup(); p.show(c, 2, c.getHeight()); }); } @Override - public void initAction(ContentUI<?, ?> ui, AbstractButton editor) { - super.initAction(ui, editor); - editor.putClientProperty("popup", getMainUI().getScopeDownPopup()); - } - - @Override public void updateAction(ContentUI<?, ?> ui, AbstractButton editor) { - ObserveMainUI mainUI = getMainUI(); + ObserveMainUI mainUI = getMainUI(); NavigationTree tree = getMainUI().getNavigation(); - - NavigationTreeNodeSupport node; - - super.updateAction(ui, editor); - JPopupMenu scopePopup = mainUI.getScopeDownPopup(); - Action action = - mainUI.getRootPane().getActionMap().get(SelectNodeUIAction.ACTION_NAME); - node = tree.getSelectedNode(); + SelectNodeUIAction action = (SelectNodeUIAction) mainUI.getObserveActionMap().get(SelectNodeUIAction.ACTION_NAME); + + NavigationTreeNodeSupport<?> node = tree.getSelectedNode(); NavigationTreeNodeSupport nodeOriginal = node; scopePopup.removeAll(); Enumeration<?> e = node.children(); @@ -101,36 +83,14 @@ public class GoDownUIAction extends AbstractUIAction { if (text == null) { continue; } - Color color = node.getColor(); - Icon icon = node.getIcon("-16"); - JMenuItem mi = new JMenuItem(); - mi.setAction(action); - mi.setText(text.trim()); - mi.setIcon(icon); - mi.setForeground(color); - mi.putClientProperty("node", node); - mi.putClientProperty("ui", ui); - mi.setAction(action); - scopePopup.add(mi); + scopePopup.add(node.toMenuItem(action, ui)); } - if (nodeOriginal.getChildCount() == 1 && - !nodeOriginal.getChildAt(0).isLeaf()) { + if (nodeOriginal.getChildCount() == 1 && !nodeOriginal.getChildAt(0).isLeaf()) { e = nodeOriginal.getChildAt(0).children(); while (e.hasMoreElements()) { node = (NavigationTreeNodeSupport) e.nextElement(); - Color color = node.getColor(); - Icon icon = node.getIcon("-16"); - String text = node.getText(); - JMenuItem mi = new JMenuItem(); - mi.setAction(action); - mi.setText(text.trim()); - mi.setIcon(icon); - mi.setForeground(color); - mi.putClientProperty("node", node); - mi.putClientProperty("ui", ui); - mi.setAction(action); - scopePopup.add(mi); + scopePopup.add(node.toMenuItem(action, ui)); } } @@ -138,4 +98,5 @@ public class GoDownUIAction extends AbstractUIAction { editor.setEnabled(nbNodes > 0); } + } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/GoUpUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/GoUpUIAction.java similarity index 65% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/GoUpUIAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/GoUpUIAction.java index d4b414a..2c80fcc 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/GoUpUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/GoUpUIAction.java @@ -19,24 +19,21 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.application.swing.ui.actions.shared; +package fr.ird.observe.application.swing.ui.actions.content; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.content.ContentUI; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import javax.swing.AbstractButton; -import javax.swing.Action; -import javax.swing.Icon; import javax.swing.JComponent; -import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.SwingUtilities; import javax.swing.tree.TreeNode; -import java.awt.Color; import java.awt.GridLayout; -import java.awt.event.ActionEvent; import static org.nuiton.i18n.I18n.n; @@ -47,10 +44,13 @@ import static org.nuiton.i18n.I18n.n; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class GoUpUIAction extends AbstractUIAction { +public class GoUpUIAction extends AbstractContentUIAction { private static final long serialVersionUID = 1L; + /** Logger */ + private static final Log log = LogFactory.getLog(GoUpUIAction.class); + public static final String ACTION_NAME = "goUp"; public GoUpUIAction(ObserveMainUI mainUI) { @@ -59,38 +59,30 @@ public class GoUpUIAction extends AbstractUIAction { n("observe.action.goUp"), n("observe.action.goUp.tip"), "go-up", - null + "alt pressed U" ); } @Override - public void actionPerformed(ActionEvent e) { + protected void actionPerformed(ContentUI<?, ?> contentUI) { SwingUtilities.invokeLater(() -> { - JComponent c = (JComponent) e.getSource(); - JPopupMenu p = getPopup(e); + JComponent c = contentUI.getActionUp(); + JPopupMenu p = getMainUI().getScopeUpPopup(); p.show(c, 2, c.getHeight()); }); } @Override - public void initAction(ContentUI<?, ?> ui, AbstractButton editor) { - super.initAction(ui, editor); - editor.putClientProperty("popup", getMainUI().getScopeUpPopup()); - } - - @Override public void updateAction(ContentUI<?, ?> ui, AbstractButton editor) { - super.updateAction(ui, editor); NavigationTree treeHelper = getMainUI().getNavigation(); - NavigationTreeNodeSupport node; + NavigationTreeNodeSupport<?> node; JPopupMenu scopePopup = getMainUI().getScopeUpPopup(); - Action action = - getMainUI().getRootPane().getActionMap().get(SelectNodeUIAction.ACTION_NAME); + SelectNodeUIAction action = (SelectNodeUIAction) getMainUI().getObserveActionMap().get(SelectNodeUIAction.ACTION_NAME); node = treeHelper.getSelectedNode(); TreeNode root = node.getRoot(); @@ -98,19 +90,7 @@ public class GoUpUIAction extends AbstractUIAction { scopePopup.setLayout(new GridLayout(0, 1)); while (!root.equals(node.getParent())) { node = node.getParent(); - Color color = node.getColor(); - Icon icon = node.getIcon("-16"); - String text = node.getText(); - JMenuItem mi = new JMenuItem(); - mi.setAction(action); - mi.setText(text.trim()); - mi.setIcon(icon); - mi.setForeground(color); - mi.setBackground(Color.WHITE); - mi.putClientProperty("node", node); - mi.putClientProperty("ui", ui); - mi.setAction(action); - scopePopup.add(mi); + scopePopup.add(node.toMenuItem(action, ui)); } scopePopup.revalidate(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/MoveActivityLonglinesUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/MoveActivityLonglinesUIAction.java index e986b23..0799399 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/MoveActivityLonglinesUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/MoveActivityLonglinesUIAction.java @@ -170,8 +170,8 @@ public class MoveActivityLonglinesUIAction extends AbstractContentUIAction { // Let's reload the sub tree of each activities node. // As the change have already be done in database, we just call the child loaders to regenerate the activities nodes sub trees - tree.reloadNodeSubTree(oldActivitiesNode, true); - tree.reloadNodeSubTree(newActivitiesNode, true); + tree.reloadNodeSubTree(oldActivitiesNode); + tree.reloadNodeSubTree(newActivitiesNode); // Let's put the focus on the activities node which received the activities tree.selectNode(newActivitiesNode); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/MoveActivitySeinesUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/MoveActivitySeinesUIAction.java index a3adf22..c7e6639 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/MoveActivitySeinesUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/MoveActivitySeinesUIAction.java @@ -161,8 +161,8 @@ public class MoveActivitySeinesUIAction extends AbstractContentUIAction { // Let's reload the sub tree of each activities node. // As the change have already be done in database, we just call the child loaders to regenerate the activities nodes sub trees - tree.reloadNodeSubTree(oldActivitiesNode, true); - tree.reloadNodeSubTree(newActivitiesNode, true); + tree.reloadNodeSubTree(oldActivitiesNode); + tree.reloadNodeSubTree(newActivitiesNode); // Let's put the focus on the activities node which received the activities tree.selectNode(newActivitiesNode); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/MoveRoutesUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/MoveRoutesUIAction.java index e510eb5..767d352 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/MoveRoutesUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/MoveRoutesUIAction.java @@ -157,8 +157,8 @@ public class MoveRoutesUIAction extends AbstractContentUIAction { // Let's reload the sub tree of each routes node. // As the change have already be done in database, we just call the child loaders to regenerate the routes nodes sub trees - tree.reloadNodeSubTree(oldRoutesNode, true); - tree.reloadNodeSubTree(newRoutesNode, true); + tree.reloadNodeSubTree(oldRoutesNode); + tree.reloadNodeSubTree(newRoutesNode); // 1. Select the newRoutesNode : // only a selected node can be reloaded (@see fr.ird.observe.application.swing.ui.tree.ObserveTreeBridge.canLoadChild). diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/SelectNodeUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/SelectNodeUIAction.java similarity index 50% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/SelectNodeUIAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/SelectNodeUIAction.java index 14a0b4a..cd13a56 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/SelectNodeUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/SelectNodeUIAction.java @@ -19,14 +19,20 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.application.swing.ui.actions.shared; +package fr.ird.observe.application.swing.ui.actions.content; import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.content.ContentUI; +import fr.ird.observe.application.swing.ui.content.list.ContentListUI; +import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; +import fr.ird.observe.services.dto.DataReference; import javax.swing.JComponent; -import java.awt.event.ActionEvent; +import javax.swing.SwingUtilities; +import java.util.Objects; +import static fr.ird.observe.application.swing.ui.content.ContentUIHandler.getTreeHelper; import static org.nuiton.i18n.I18n.n; /** @@ -36,7 +42,7 @@ import static org.nuiton.i18n.I18n.n; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class SelectNodeUIAction extends AbstractUIAction { +public class SelectNodeUIAction extends AbstractContentUIAction { private static final long serialVersionUID = 1L; @@ -50,14 +56,41 @@ public class SelectNodeUIAction extends AbstractUIAction { n("observe.action.selectNode"), n("observe.action.selectNode.tip"), "go-jump", - null - ); + "alt pressed ENTER"); } @Override - public void actionPerformed(ActionEvent e) { - JComponent source = (JComponent) e.getSource(); + public void actionPerformed(ContentUI<?, ?> contentUI) { + + if (contentUI instanceof ContentListUI<?, ?, ?>) { + ContentListUI<?, ?, ?> contentListUI = (ContentListUI<?, ?, ?>) contentUI; + + boolean oneSelectedData = contentListUI.getModel().isOneSelectedData(); + if (!oneSelectedData) { + return; + } + + DataReference<?> dataReference = contentListUI.getModel().getSelectedDatas().get(0); + Objects.requireNonNull(dataReference); + + NavigationTree tree = getTreeHelper(contentListUI); + + NavigationTreeNodeSupport selectedNode = tree.getSelectedNode(); + NavigationTreeNodeSupport nodeToSelect = tree.getChild(selectedNode, dataReference.getId()); + + SwingUtilities.invokeLater(() -> tree.selectNode(nodeToSelect)); + return; + } + + actionPerformed((JComponent) e.getSource()); + + } + + public void actionPerformed(JComponent source) { + NavigationTreeNodeSupport node = (NavigationTreeNodeSupport) source.getClientProperty(NODE); - getMainUI().getNavigation().selectNode(node); + Objects.requireNonNull(node); + + SwingUtilities.invokeLater(() -> getMainUI().getNavigation().selectNode(node)); } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/SelectOpenNodeUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/SelectOpenNodeUIAction.java similarity index 55% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/SelectOpenNodeUIAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/SelectOpenNodeUIAction.java index 6a38c34..cf9c536 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/shared/SelectOpenNodeUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/SelectOpenNodeUIAction.java @@ -19,13 +19,15 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -package fr.ird.observe.application.swing.ui.actions.shared; +package fr.ird.observe.application.swing.ui.actions.content; import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.content.ContentUI; +import fr.ird.observe.application.swing.ui.content.list.ContentListUI; +import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; -import javax.swing.JComponent; -import java.awt.event.ActionEvent; -import java.util.Objects; +import static fr.ird.observe.application.swing.ui.content.ContentUIHandler.getTreeHelper; /** * Action pour sélectionner un noeud (attaché à l'éditeur) dans l'arbre de @@ -34,29 +36,29 @@ import java.util.Objects; * @author Tony Chemit - chemit@codelutin.com * @since 1.4 */ -public class SelectOpenNodeUIAction extends AbstractUIAction { +public class SelectOpenNodeUIAction extends AbstractContentUIAction { public static final String ACTION_NAME = "selectOpen"; private static final long serialVersionUID = 1L; public SelectOpenNodeUIAction(ObserveMainUI mainUI) { - super(mainUI, - ACTION_NAME, - "<NONE>", - "<NONE>", - "go-down", - null); + super(mainUI, ACTION_NAME, "<NONE>", "<NONE>", "go-down", "alt shift pressed ENTER"); } @Override - public void actionPerformed(ActionEvent e) { - if (!canExecuteAction()) { + protected void actionPerformed(ContentUI<?, ?> contentUI) { + + if (!(contentUI instanceof ContentListUI)) { return; } - JComponent c = (JComponent) e.getSource(); - Class<?> type = (Class<?>) c.getClientProperty("type"); - Objects.requireNonNull(type, "could not find client property type on component" + c); - getMainUI().getNavigation().selectOpenNode(type); + + ContentListUI<?, ?, ?> contentListUI = (ContentListUI<?, ?, ?>) contentUI; + + NavigationTreeNodeSupport<?> node = contentListUI.getOpenNode(); + NavigationTree tree = getTreeHelper(contentListUI); + tree.selectNode(node); + } + } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/AbstractGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/AbstractGlobalUIAction.java index b8a3502..85bdf9e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/AbstractGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/AbstractGlobalUIAction.java @@ -23,7 +23,7 @@ package fr.ird.observe.application.swing.ui.actions.global; */ import fr.ird.observe.application.swing.ui.ObserveMainUI; -import fr.ird.observe.application.swing.ui.actions.shared.AbstractUIAction; +import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; import javax.swing.JComponent; import javax.swing.SwingUtilities; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/LaunchAdminAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/action/LaunchAdminAction.java similarity index 97% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/LaunchAdminAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/action/LaunchAdminAction.java index cc58de5..2292df0 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/LaunchAdminAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/action/LaunchAdminAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.action; /* * #%L diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ChangeApplicationLanguageAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ChangeApplicationLanguageAction.java similarity index 97% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ChangeApplicationLanguageAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ChangeApplicationLanguageAction.java index 7cd449d..f1ae4d7 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ChangeApplicationLanguageAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ChangeApplicationLanguageAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.config; /* * #%L diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ChangeDbLanguageAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ChangeDbLanguageAction.java similarity index 97% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ChangeDbLanguageAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ChangeDbLanguageAction.java index 016497d..3eaa181 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ChangeDbLanguageAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ChangeDbLanguageAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.config; /* * #%L diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ReloadDefaultConfigurationAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ReloadDefaultConfigurationAction.java similarity index 97% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ReloadDefaultConfigurationAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ReloadDefaultConfigurationAction.java index 0d540bc..b8cce05 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ReloadDefaultConfigurationAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ReloadDefaultConfigurationAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.config; /* * #%L diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ReloadResourcesAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ReloadResourcesAction.java similarity index 98% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ReloadResourcesAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ReloadResourcesAction.java index 9c29d6d..6bf1579 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ReloadResourcesAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ReloadResourcesAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.config; /* * #%L diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ShowConfigAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ShowConfigAction.java similarity index 99% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ShowConfigAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ShowConfigAction.java index 1c455f9..008d038 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ShowConfigAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/config/ShowConfigAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.config; /* * #%L diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/CloseApplicationAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/CloseApplicationAction.java similarity index 97% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/CloseApplicationAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/CloseApplicationAction.java index 06ab0e6..e89f387 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/CloseApplicationAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/CloseApplicationAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.file; /* * #%L diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ReloadApplicationAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ReloadApplicationAction.java similarity index 97% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ReloadApplicationAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ReloadApplicationAction.java index f9ebfdb..20aba71 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ReloadApplicationAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ReloadApplicationAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.file; /* * #%L diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ToFullScreenAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ToFullScreenAction.java similarity index 94% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ToFullScreenAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ToFullScreenAction.java index 5580057..3aa62e0 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ToFullScreenAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ToFullScreenAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.file; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.ObserveMainUI; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ToWindowScreenAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ToWindowScreenAction.java similarity index 94% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ToWindowScreenAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ToWindowScreenAction.java index 6e75251..4cb3d0d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ToWindowScreenAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ToWindowScreenAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.file; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.ObserveMainUI; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/GotoSiteAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/help/GotoSiteAction.java similarity index 97% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/GotoSiteAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/help/GotoSiteAction.java index 14f3d86..7922ec8 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/GotoSiteAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/help/GotoSiteAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.help; /* * #%L diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ShowAboutAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/help/ShowAboutAction.java similarity index 98% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ShowAboutAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/help/ShowAboutAction.java index bb5558e..978e247 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ShowAboutAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/help/ShowAboutAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.help; /* * #%L diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoActionSupport.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoActionSupport.java new file mode 100644 index 0000000..64eb5a9 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoActionSupport.java @@ -0,0 +1,80 @@ +package fr.ird.observe.application.swing.ui.actions.menu.navigation; + +import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.db.DataContext; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.UIHelper; +import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; +import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import javax.swing.AbstractButton; +import java.awt.event.ActionEvent; +import java.util.Optional; + +/** + * Created on 02/12/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public abstract class GotoActionSupport extends AbstractUIAction { + + /** Logger */ + private static final Log log = LogFactory.getLog(GotoActionSupport.class); + + protected abstract boolean computeIsOpen(DataContext dataContext); + + protected abstract Optional<NavigationTreeNodeSupport> getNodeToSelect(NavigationTree navigation, DataContext dataContext); + + public GotoActionSupport(ObserveMainUI mainUI, + String actionName, + String openPropertyName, + int mnemonic, + String label, + String tip, + String icon) { + + super(mainUI, actionName, label, tip, null, null); + + putValue(SMALL_ICON, UIHelper.getUIManagerIcon(icon)); + putValue(MNEMONIC_KEY, mnemonic); + + if (openPropertyName != null) { + DataContext dataContext = ObserveSwingApplicationContext.get().getDataContext(); + dataContext.addPropertyChangeListener(openPropertyName, e -> setEnabled(BooleanUtils.isTrue((Boolean) e.getNewValue()))); + } + } + + @Override + public void initForMainUi(AbstractButton editor) { + super.initForMainUi(editor); + + DataContext dataContext = ObserveSwingApplicationContext.get().getDataContext(); + boolean open = computeIsOpen(dataContext); + if (log.isInfoEnabled()) { + log.info("Action [" + getValue(ACTION_COMMAND_KEY) + "] - open? " + open); + } + setEnabled(open); + + } + + @Override + public final void actionPerformed(ActionEvent e) { + + DataContext dataContext = ObserveSwingApplicationContext.get().getDataContext(); + boolean open = computeIsOpen(dataContext); + if (!open) { + return; + } + + NavigationTree navigation = getMainUI().getNavigation(); + + getNodeToSelect(navigation, dataContext).ifPresent(navigation::selectNode); + + } + +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenActivityAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenActivityAction.java new file mode 100644 index 0000000..a031622 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenActivityAction.java @@ -0,0 +1,50 @@ +package fr.ird.observe.application.swing.ui.actions.menu.navigation; + +import fr.ird.observe.application.swing.db.DataContext; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; + +import java.util.Optional; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 02/12/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class GotoOpenActivityAction extends GotoActionSupport { + + public static final String ACTION_NAME = "GotoOpenActivityAction"; + + public GotoOpenActivityAction(ObserveMainUI mainUI) { + super(mainUI, + ACTION_NAME, + DataContext.PROPERTY_OPEN_ACTIVITY, + (int) 'A', + t("observe.content.action.goto.open.activity.short"), + t("observe.content.action.goto.open.activity.tip"), + "navigation.fr.ird.observe.services.dto.ActivityDto"); + } + + @Override + protected boolean computeIsOpen(DataContext dataContext) { + return dataContext.isOpenActivity(); + } + + @Override + protected Optional<NavigationTreeNodeSupport> getNodeToSelect(NavigationTree navigation, DataContext dataContext) { + + NavigationTreeNodeSupport result = null; + if (dataContext.isOpenActivitySeine()) { + result = navigation.getActivitySeineNode(dataContext.getOpenProgramId(), dataContext.getOpenTripId(), dataContext.getOpenRouteId(), dataContext.getOpenActivityId()); + } else if (dataContext.isOpenActivityLongline()) { + result = navigation.getActivityLonglineNode(dataContext.getOpenProgramId(), dataContext.getOpenTripId(), dataContext.getOpenActivityId()); + + } + return Optional.ofNullable(result); + } + +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenProgramAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenProgramAction.java new file mode 100644 index 0000000..6b31227 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenProgramAction.java @@ -0,0 +1,42 @@ +package fr.ird.observe.application.swing.ui.actions.menu.navigation; + +import fr.ird.observe.application.swing.db.DataContext; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; + +import java.util.Optional; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 02/12/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class GotoOpenProgramAction extends GotoActionSupport { + + public static final String ACTION_NAME = "GotoOpenProgram"; + + public GotoOpenProgramAction(ObserveMainUI mainUI) { + super(mainUI, + ACTION_NAME, + DataContext.PROPERTY_OPEN_PROGRAM, + (int) 'P', + t("observe.content.action.goto.open.program.short"), + t("observe.content.action.goto.open.program.tip"), + "navigation.fr.ird.observe.services.dto.referential.ProgramDto"); + } + + @Override + protected boolean computeIsOpen(DataContext dataContext) { + return dataContext.isOpenProgram(); + } + + @Override + protected Optional<NavigationTreeNodeSupport> getNodeToSelect(NavigationTree navigation, DataContext dataContext) { + return Optional.of(navigation.getProgramNode(dataContext.getOpenProgramId())); + } + +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenRouteAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenRouteAction.java new file mode 100644 index 0000000..cc4a452 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenRouteAction.java @@ -0,0 +1,42 @@ +package fr.ird.observe.application.swing.ui.actions.menu.navigation; + +import fr.ird.observe.application.swing.db.DataContext; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; + +import java.util.Optional; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 02/12/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class GotoOpenRouteAction extends GotoActionSupport { + + public static final String ACTION_NAME = "GotoOpenRouteAction"; + + public GotoOpenRouteAction(ObserveMainUI mainUI) { + super(mainUI, + ACTION_NAME, + DataContext.PROPERTY_OPEN_ROUTE, + (int) 'R', + t("observe.content.action.goto.open.route.short"), + t("observe.content.action.goto.open.route.tip"), + "navigation.fr.ird.observe.services.dto.seine.RouteDto"); + } + + @Override + protected boolean computeIsOpen(DataContext dataContext) { + return dataContext.isOpenRoute(); + } + + @Override + protected Optional<NavigationTreeNodeSupport> getNodeToSelect(NavigationTree navigation, DataContext dataContext) { + return Optional.of(navigation.getRouteNode(dataContext.getOpenProgramId(), dataContext.getOpenTripId(), dataContext.getOpenRouteId())); + } + +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenSetAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenSetAction.java new file mode 100644 index 0000000..9c4ae23 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenSetAction.java @@ -0,0 +1,59 @@ +package fr.ird.observe.application.swing.ui.actions.menu.navigation; + +import fr.ird.observe.application.swing.db.DataContext; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; + +import java.util.Optional; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 02/12/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class GotoOpenSetAction extends GotoActionSupport { + + public static final String ACTION_NAME = "GotoOpenSetAction"; + + public GotoOpenSetAction(ObserveMainUI mainUI) { + super(mainUI, + ACTION_NAME, + DataContext.PROPERTY_OPEN_SET, + (int) 'C', + t("observe.content.action.goto.open.set.short"), + t("observe.content.action.goto.open.set.tip"), + "navigation.fr.ird.observe.services.dto.SetDto"); + } + + @Override + protected boolean computeIsOpen(DataContext dataContext) { + return dataContext.isOpenSet(); + } + + @Override + protected Optional<NavigationTreeNodeSupport> getNodeToSelect(NavigationTree navigation, DataContext dataContext) { + + NavigationTreeNodeSupport programNode = navigation.getProgramNode(dataContext.getOpenProgramId()); + NavigationTreeNodeSupport tripNode = navigation.getTripNode(programNode, dataContext.getOpenTripId()); + + if (dataContext.isOpenActivitySeine()) { + + NavigationTreeNodeSupport routeNode = navigation.getRouteNode(tripNode, dataContext.getOpenRouteId()); + NavigationTreeNodeSupport activitySeineNode = navigation.getActivitySeineNode(routeNode, dataContext.getOpenActivityId()); + return Optional.of(navigation.getSetSeineNode(activitySeineNode)); + + } else if (dataContext.isOpenActivityLongline()) { + + NavigationTreeNodeSupport activityLonglineNode = navigation.getActivityLonglineNode(tripNode, dataContext.getOpenActivityId()); + return Optional.of(navigation.getSetLonglineNode(activityLonglineNode)); + + } + + return Optional.empty(); + } + +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenTripAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenTripAction.java new file mode 100644 index 0000000..499c7b3 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenTripAction.java @@ -0,0 +1,42 @@ +package fr.ird.observe.application.swing.ui.actions.menu.navigation; + +import fr.ird.observe.application.swing.db.DataContext; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; + +import java.util.Optional; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 02/12/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class GotoOpenTripAction extends GotoActionSupport { + + public static final String ACTION_NAME = "GotoOpenTripAction"; + + public GotoOpenTripAction(ObserveMainUI mainUI) { + super(mainUI, + ACTION_NAME, + DataContext.PROPERTY_OPEN_TRIP, + (int) 'M', + t("observe.content.action.goto.open.trip.short"), + t("observe.content.action.goto.open.trip.tip"), + "navigation.fr.ird.observe.services.dto.TripDto"); + } + + @Override + protected boolean computeIsOpen(DataContext dataContext) { + return dataContext.isOpenTrip(); + } + + @Override + protected Optional<NavigationTreeNodeSupport> getNodeToSelect(NavigationTree navigation, DataContext dataContext) { + return Optional.of(navigation.getTripNode(dataContext.getOpenProgramId(), dataContext.getOpenTripId())); + } + +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoReferentialAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoReferentialAction.java new file mode 100644 index 0000000..f13b198 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoReferentialAction.java @@ -0,0 +1,42 @@ +package fr.ird.observe.application.swing.ui.actions.menu.navigation; + +import fr.ird.observe.application.swing.db.DataContext; +import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; + +import java.util.Optional; + +import static org.nuiton.i18n.I18n.t; + +/** + * Created on 02/12/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class GotoReferentialAction extends GotoActionSupport { + + public static final String ACTION_NAME = "GotoReferential"; + + public GotoReferentialAction(ObserveMainUI mainUI) { + super(mainUI, + ACTION_NAME, + null, + (int) 'e', + t("observe.action.goto.referentiel.short"), + t("observe.action.goto.referentiel.tip"), + "navigation.referentiel"); + } + + @Override + protected boolean computeIsOpen(DataContext dataContext) { + return true; + } + + @Override + protected Optional<NavigationTreeNodeSupport> getNodeToSelect(NavigationTree navigation, DataContext dataContext) { + return Optional.of(navigation.getReferentialNode()); + } + +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ChangeStorageAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/ChangeStorageAction.java similarity index 97% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ChangeStorageAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/ChangeStorageAction.java index 4e9e16b..e727c9e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ChangeStorageAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/ChangeStorageAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.storage; /* * #%L diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/CloseStorageAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/CloseStorageAction.java similarity index 94% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/CloseStorageAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/CloseStorageAction.java index 87f26fa..90ab336 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/CloseStorageAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/CloseStorageAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.storage; /* * #%L @@ -25,6 +25,7 @@ package fr.ird.observe.application.swing.ui.actions; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.ObserveMainUI; +import fr.ird.observe.application.swing.ui.actions.AbstractObserveAction; import jaxx.runtime.SwingUtil; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ImportStorageFromFileAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/ImportStorageFromFileAction.java similarity index 98% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ImportStorageFromFileAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/ImportStorageFromFileAction.java index d4d9c08..e27081a 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ImportStorageFromFileAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/ImportStorageFromFileAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.storage; /* * #%L diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ReloadStorageAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/ReloadStorageAction.java similarity index 95% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ReloadStorageAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/ReloadStorageAction.java index 5a88364..8284ce7 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ReloadStorageAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/ReloadStorageAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.storage; /* * #%L @@ -27,6 +27,7 @@ import fr.ird.observe.application.swing.configuration.ObserveSwingApplicationCon import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.UIHelper; +import fr.ird.observe.application.swing.ui.actions.AbstractObserveAction; import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaH2; import fr.ird.observe.services.configuration.topia.ObserveDataSourceConfigurationTopiaPG; import jaxx.runtime.SwingUtil; @@ -80,7 +81,7 @@ public class ReloadStorageAction extends AbstractObserveAction { ui.setBusy(false); - String[] ids = ui.getNavigation().getSelectedIds(); + Object[] ids = ui.getNavigation().getSelectedIds(); try { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/SaveStorageToFileAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/SaveStorageToFileAction.java similarity index 95% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/SaveStorageToFileAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/SaveStorageToFileAction.java index b1f86b0..ecaafef 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/SaveStorageToFileAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/SaveStorageToFileAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.storage; /* * #%L @@ -26,6 +26,7 @@ import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.UIHelper; +import fr.ird.observe.application.swing.ui.actions.AbstractObserveAction; import fr.ird.observe.application.swing.ui.storage.StorageBackupUILauncher; import jaxx.runtime.SwingUtil; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ShowStorageInfoAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/ShowStorageInfoAction.java similarity index 97% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ShowStorageInfoAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/ShowStorageInfoAction.java index 91666e7..7155469 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/ShowStorageInfoAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/ShowStorageInfoAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.storage; /* * #%L diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/StartH2WebServerAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/StartH2WebServerAction.java similarity index 97% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/StartH2WebServerAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/StartH2WebServerAction.java index c31bee8..882c966 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/StartH2WebServerAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/StartH2WebServerAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.storage; /* * #%L diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/StartServerModeAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/StartServerModeAction.java similarity index 98% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/StartServerModeAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/StartServerModeAction.java index fdde95e..e8cfbd1 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/StartServerModeAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/StartServerModeAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.storage; /* * #%L diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/StopH2WebServerAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/StopH2WebServerAction.java similarity index 93% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/StopH2WebServerAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/StopH2WebServerAction.java index 22e83fc..e726743 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/StopH2WebServerAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/StopH2WebServerAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.storage; /* * #%L @@ -61,6 +61,12 @@ public class StopH2WebServerAction extends AbstractAction { @Override public void actionPerformed(ActionEvent e) { + launchStopH2WebServer(ui); + + } + + public static void launchStopH2WebServer(ObserveMainUI ui) { + if (ui.isH2WebServer()) { if (log.isInfoEnabled()) { log.info("Will stop web server mode..."); @@ -78,5 +84,4 @@ public class StopH2WebServerAction extends AbstractAction { } } - } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/StopServerModeAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/StopServerModeAction.java similarity index 77% rename from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/StopServerModeAction.java rename to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/StopServerModeAction.java index 15eda1c..d657858 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/StopServerModeAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/storage/StopServerModeAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions; +package fr.ird.observe.application.swing.ui.actions.menu.storage; /* * #%L @@ -76,30 +76,9 @@ public class StopServerModeAction extends AbstractAction { if (ui.isH2WebServer()) { // stop also the h2 web server - launchStopH2WebServer(ui); + StopH2WebServerAction.launchStopH2WebServer(ui); } } - public void launchStopH2WebServer(ObserveMainUI ui) { - - if (ui.isH2WebServer()) { - if (log.isInfoEnabled()) { - log.info("Will stop web server mode..."); - } - - Server server = ObserveSwingApplicationContext.get().getH2WebServer(); - if (server != null) { - server.stop(); - } - ui.setH2WebServer(false); - } else { - if (log.isWarnEnabled()) { - log.warn("Can not stop h2 web server... (no web server found)"); - } - } - - } - - } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigUIHandler.java index 287c22f..4089507 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigUIHandler.java @@ -124,7 +124,7 @@ public class ConfigUIHandler extends AdminTabUIHandler<ConfigUI> implements UIHa if (valid) { ObserveDataSourceInformation dataSourceInformation = sourceModel.getDataSourceInformation(); - if (dataSourceInformation != null) { + if (dataSourceInformation != null && dataSourceInformation.getVersion() != null) { ObserveSwingApplicationContext applicationContext = ObserveSwingApplicationContext.get(); ObserveTextGenerator textGenerator = applicationContext.getTextGenerator(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUI.jaxx index e2b53e0..2f819ae 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUI.jaxx @@ -38,8 +38,8 @@ fr.ird.observe.application.swing.db.DataContext fr.ird.observe.application.swing.db.ObserveSwingDataSource fr.ird.observe.application.swing.configuration.ObserveSwingApplicationConfig - fr.ird.observe.application.swing.ui.actions.shared.GoUpUIAction - fr.ird.observe.application.swing.ui.actions.shared.GoDownUIAction + fr.ird.observe.application.swing.ui.actions.content.GoUpUIAction + fr.ird.observe.application.swing.ui.actions.content.GoDownUIAction fr.ird.observe.services.dto.IdDto diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIBlockingLayerUI.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIBlockingLayerUI.java index 5ad8b04..18614d1 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIBlockingLayerUI.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIBlockingLayerUI.java @@ -23,7 +23,7 @@ package fr.ird.observe.application.swing.ui.content; */ import com.google.common.collect.ImmutableSet; -import fr.ird.observe.application.swing.ui.actions.shared.AbstractUIAction; +import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; import jaxx.runtime.swing.BlockingLayerUI; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIHandler.java index ba66cbf..5bbf1b9 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIHandler.java @@ -35,7 +35,7 @@ import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.application.swing.decoration.decorators.DataReferenceDecorator; import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferenceDecorator; import fr.ird.observe.application.swing.ui.UIHelper; -import fr.ird.observe.application.swing.ui.actions.shared.AbstractUIAction; +import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; import fr.ird.observe.application.swing.ui.content.ref.ContentReferenceUIHandler; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIInitializer.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIInitializer.java index 4a3360d..b135e5e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIInitializer.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIInitializer.java @@ -31,7 +31,7 @@ import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.application.swing.decoration.decorators.DataReferenceDecorator; import fr.ird.observe.application.swing.decoration.decorators.ReferentialReferenceDecorator; import fr.ird.observe.application.swing.ui.MnemonicHelper; -import fr.ird.observe.application.swing.ui.actions.shared.AbstractUIAction; +import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; import fr.ird.observe.application.swing.ui.util.BooleanEditor; import fr.ird.observe.application.swing.ui.util.tripMap.ObserveMapPane; import fr.ird.observe.application.swing.validation.ObserveSwingValidator; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveActionMap.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveActionMap.java index baa3a2b..5737957 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveActionMap.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveActionMap.java @@ -26,7 +26,7 @@ import com.google.common.collect.ImmutableMap; import fr.ird.observe.application.swing.ObserveSwingTechnicalException; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.actions.global.AbstractGlobalUIAction; -import fr.ird.observe.application.swing.ui.actions.shared.AbstractUIAction; +import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; import org.apache.commons.beanutils.ConstructorUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jaxx index 9b1c48a..0f51db3 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jaxx @@ -27,7 +27,8 @@ fr.ird.observe.application.swing.ui.actions.content.CloseOpenUIAction fr.ird.observe.application.swing.ui.actions.content.CreateOpenUIAction fr.ird.observe.application.swing.ui.actions.content.ReOpenUIAction - fr.ird.observe.application.swing.ui.actions.shared.SelectNodeUIAction + fr.ird.observe.application.swing.ui.actions.content.SelectNodeUIAction + fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport fr.ird.observe.services.dto.IdDto fr.ird.observe.services.dto.DataDto @@ -74,6 +75,10 @@ public final List<DataReference<C>> getSelectedDatas() { return (List<DataReference<C>>) list.getSelectedValuesList(); } +public NavigationTreeNodeSupport<?> getOpenNode() { + return getHandler().getOpenNode(); +} + ]]></script> <JPanel id='body'> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java index 94c17d6..c2b79f2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java @@ -23,7 +23,6 @@ package fr.ird.observe.application.swing.ui.content.list; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.db.constants.DataContextType; -import fr.ird.observe.application.swing.ui.actions.shared.SelectNodeUIAction; import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.ContentUIHandler; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; @@ -38,7 +37,6 @@ import org.apache.commons.logging.LogFactory; import javax.swing.DefaultListCellRenderer; import javax.swing.Icon; -import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.ListCellRenderer; @@ -161,6 +159,9 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends DataDto, U SwingUtilities.invokeLater(() -> { getUi().getListSelectionModel().clearSelection(); + if (!getModel().isEmpty()) { + getUi().getListSelectionModel().setSelectionInterval(0, 0); + } }); // finalize openUI with specified code @@ -187,6 +188,8 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends DataDto, U protected abstract boolean computeCanClose(); + public abstract NavigationTreeNodeSupport<?> getOpenNode(); + @Override protected void updateToolbarActions() { super.updateToolbarActions(); @@ -204,24 +207,11 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends DataDto, U * @param event the mouse event fired */ void onDataSelected(MouseEvent event) { - DataReference<C> selectedData = getUi().getSelectedData(); if (event.getClickCount() > 1) { - gotoChild(selectedData); - return; - } - NavigationTreeNodeSupport node = null; - if (selectedData != null) { - - // obtain the node corresponding to the selected data - String id = selectedData.getId(); - NavigationTree helper = getTreeHelper(getUi()); - NavigationTreeNodeSupport selectedNode = helper.getSelectedNode(); - node = helper.getChild(selectedNode, id); + if (getModel().isOneSelectedData()) { + gotoChild(getUi().getSelectedData()); + } } - - // attach the node to action - JButton button = getUi().getGotoSelected(); - button.putClientProperty(SelectNodeUIAction.NODE, node); } <EE> List<EE> updateList(BeanListHeader<EE> list, List<EE> data) { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIModel.java index 622abab..822f9d5 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIModel.java @@ -55,7 +55,6 @@ public abstract class ContentListUIModel<E extends IdDto, C extends DataDto> ext public static final String PROPERTYCAN_GOTO_OPEN = "canGotoOpen"; public static final String PROPERTY_CAN_CLOSE = "canClose"; public static final String PROPERTY_CAN_CREATE = "canCreate"; - public static final String PROPERTY_CAN_DELETE = "canDelete"; public static final String PROPERTY_CAN_MOVE = "canMove"; @@ -73,7 +72,6 @@ public abstract class ContentListUIModel<E extends IdDto, C extends DataDto> ext private boolean canGotoOpen; private boolean canClose; private boolean canCreate; - private boolean canDelete; private boolean canMove; public ContentListUIModel(Class<E> beanType, Class<C> childType) { @@ -98,25 +96,19 @@ public abstract class ContentListUIModel<E extends IdDto, C extends DataDto> ext setSelectedDatas(null); } - public DataReference<C> getSelectedData() { - return CollectionUtils.isNotEmpty(selectedDatas) ? selectedDatas.get(0) : null; - } - public List<DataReference<C>> getSelectedDatas() { return selectedDatas; } public void setSelectedDatas(List<DataReference<C>> selectedDatas) { - boolean oldOneSelectedData = isOneSelectedData(); - boolean oldOneOrMoreSelectedData = isOneOrMoreSelectedData(); List<DataReference<C>> old = getSelectedDatas(); this.selectedDatas = selectedDatas; if (log.isDebugEnabled()) { log.debug("New selected datas : " + selectedDatas); } firePropertyChange(PROPERTY_SELECTED_DATAS, old, selectedDatas); - firePropertyChange(PROPERTY_ONE_SELECTED_DATA, null, isOneSelectedData()); - firePropertyChange(PROPERTY_ONE_OR_MORE_SELECTED_DATA, null, isOneOrMoreSelectedData()); + firePropertyChange(PROPERTY_ONE_SELECTED_DATA, isOneSelectedData()); + firePropertyChange(PROPERTY_ONE_OR_MORE_SELECTED_DATA, isOneOrMoreSelectedData()); } public boolean isOneSelectedData() { @@ -132,7 +124,6 @@ public abstract class ContentListUIModel<E extends IdDto, C extends DataDto> ext } public void setCanReopen(boolean canReopen) { - boolean old = isCanReopen(); this.canReopen = canReopen; firePropertyChange(PROPERTY_CAN_REOPEN, canReopen); } @@ -178,15 +169,6 @@ public abstract class ContentListUIModel<E extends IdDto, C extends DataDto> ext firePropertyChange(PROPERTY_CAN_CREATE, canCreate); } - public boolean isCanDelete() { - return canDelete; - } - - public void setCanDelete(boolean canDelete) { - this.canDelete = canDelete; - firePropertyChange(PROPERTY_CAN_DELETE, canDelete); - } - public boolean isCanMove() { return canMove; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUI.jaxx index 382c8c4..38aa3ee 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUI.jaxx @@ -34,8 +34,8 @@ fr.ird.observe.application.swing.ui.actions.content.CreateOpenUIAction fr.ird.observe.application.swing.ui.actions.content.MoveActivityLonglinesUIAction fr.ird.observe.application.swing.ui.actions.content.ReOpenUIAction - fr.ird.observe.application.swing.ui.actions.shared.SelectNodeUIAction - fr.ird.observe.application.swing.ui.actions.shared.SelectOpenNodeUIAction + fr.ird.observe.application.swing.ui.actions.content.SelectNodeUIAction + fr.ird.observe.application.swing.ui.actions.content.SelectOpenNodeUIAction static org.nuiton.i18n.I18n.n static org.nuiton.i18n.I18n.t diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUI.jcss index 7e61ef6..8c834db 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUI.jcss @@ -26,7 +26,6 @@ } #gotoOpen { - _type:{ActivityLonglineDto.class}; _text:{t("observe.content.action.goto.open.activity")}; _toolTipText:{t("observe.content.action.goto.open.activity.tip")}; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java index 773f5f1..a5e513b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/ActivityLonglinesUIHandler.java @@ -27,6 +27,8 @@ import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.constants.DataContextType; import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.list.ContentListUIHandler; +import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.TripLonglineDto; @@ -69,6 +71,13 @@ public class ActivityLonglinesUIHandler extends ContentListUIHandler<TripLonglin } @Override + public NavigationTreeNodeSupport<?> getOpenNode() { + DataContext dataContext = ObserveSwingApplicationContext.get().getDataContext(); + NavigationTree treeHelper = getTreeHelper(ui); + return treeHelper.getActivityLonglineNode(dataContext.getOpenProgramId(), dataContext.getOpenTripLonglineId(), dataContext.getOpenActivityLonglineId()); + } + + @Override protected ContentMode getContentMode(DataContext dataContext) { String openTripLonglineId = dataContext.getOpenTripId(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUI.jaxx index 2528813..1a32450 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUI.jaxx @@ -30,8 +30,8 @@ fr.ird.observe.application.swing.ui.actions.content.CloseOpenUIAction fr.ird.observe.application.swing.ui.actions.content.CreateOpenUIAction fr.ird.observe.application.swing.ui.actions.content.ReOpenUIAction - fr.ird.observe.application.swing.ui.actions.shared.SelectNodeUIAction - fr.ird.observe.application.swing.ui.actions.shared.SelectOpenNodeUIAction + fr.ird.observe.application.swing.ui.actions.content.SelectNodeUIAction + fr.ird.observe.application.swing.ui.actions.content.SelectOpenNodeUIAction fr.ird.observe.application.swing.ui.actions.content.MoveTripLonglinesUIAction static org.nuiton.i18n.I18n.n diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUI.jcss index 573c2db..cea6053 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUI.jcss @@ -26,7 +26,6 @@ } #gotoOpen { - _type:{TripLonglineDto.class}; _text:{t("observe.content.action.goto.open.maree")}; _toolTipText:{t("observe.content.action.goto.open.trip.tip")}; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUIHandler.java index 437a7fe..a559283 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/longline/TripLonglinesUIHandler.java @@ -28,6 +28,7 @@ import fr.ird.observe.application.swing.db.constants.DataContextType; import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.list.ContentListUIHandler; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline.ProgramLonglineNavigationTreeNode; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.TripLonglineDto; @@ -126,5 +127,12 @@ public class TripLonglinesUIHandler extends ContentListUIHandler<ProgramDto, Tri return computeCanGotoOpen() && !ObserveSwingApplicationContext.get().getDataContext().isOpenActivityLongline(); } + @Override + public NavigationTreeNodeSupport<?> getOpenNode() { + DataContext dataContext = ObserveSwingApplicationContext.get().getDataContext(); + NavigationTree treeHelper = getTreeHelper(ui); + return treeHelper.getTripNode(dataContext.getOpenProgramId(), dataContext.getOpenTripLonglineId()); + } + } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jaxx index 435d66d..0d6175b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jaxx @@ -32,8 +32,8 @@ fr.ird.observe.application.swing.ui.actions.content.CloseOpenUIAction fr.ird.observe.application.swing.ui.actions.content.MoveActivitySeinesUIAction fr.ird.observe.application.swing.ui.actions.content.ReOpenUIAction - fr.ird.observe.application.swing.ui.actions.shared.SelectNodeUIAction - fr.ird.observe.application.swing.ui.actions.shared.SelectOpenNodeUIAction + fr.ird.observe.application.swing.ui.actions.content.SelectNodeUIAction + fr.ird.observe.application.swing.ui.actions.content.SelectOpenNodeUIAction static org.nuiton.i18n.I18n.n static org.nuiton.i18n.I18n.t diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jcss index d700602..e617a30 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUI.jcss @@ -26,7 +26,6 @@ } #gotoOpen { - _type:{ActivitySeineDto.class}; _text:{t("observe.content.action.goto.open.activity")}; _toolTipText:{t("observe.content.action.goto.open.activity.tip")}; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUIHandler.java index ca536e9..376613a 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/ActivitySeinesUIHandler.java @@ -26,6 +26,8 @@ import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.constants.DataContextType; import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.list.ContentListUIHandler; +import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.seine.ActivitySeineDto; @@ -67,6 +69,13 @@ public class ActivitySeinesUIHandler extends ContentListUIHandler<RouteDto, Acti } @Override + public NavigationTreeNodeSupport<?> getOpenNode() { + DataContext dataContext = ObserveSwingApplicationContext.get().getDataContext(); + NavigationTree treeHelper = getTreeHelper(ui); + return treeHelper.getActivitySeineNode(dataContext.getOpenProgramId(), dataContext.getOpenTripSeineId(), dataContext.getOpenRouteId(), dataContext.getOpenActivitySeineId()); + } + + @Override protected ContentMode getContentMode(DataContext dataContext) { String openRouteId = dataContext.getOpenRouteId(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUI.jaxx index 34a76e6..ea484c9 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUI.jaxx @@ -33,8 +33,8 @@ fr.ird.observe.application.swing.ui.actions.content.CreateOpenUIAction fr.ird.observe.application.swing.ui.actions.content.MoveRoutesUIAction fr.ird.observe.application.swing.ui.actions.content.ReOpenUIAction - fr.ird.observe.application.swing.ui.actions.shared.SelectNodeUIAction - fr.ird.observe.application.swing.ui.actions.shared.SelectOpenNodeUIAction + fr.ird.observe.application.swing.ui.actions.content.SelectNodeUIAction + fr.ird.observe.application.swing.ui.actions.content.SelectOpenNodeUIAction static org.nuiton.i18n.I18n.n static org.nuiton.i18n.I18n.t diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUI.jcss index 636e69c..3de5790 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUI.jcss @@ -26,7 +26,6 @@ } #gotoOpen { - _type:{RouteDto.class}; _text:{t("observe.content.action.goto.open.route")}; _toolTipText:{t("observe.content.action.goto.open.route.tip")}; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUIHandler.java index baeaf6e..42284ec 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/RoutesUIHandler.java @@ -26,6 +26,8 @@ import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.constants.DataContextType; import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.list.ContentListUIHandler; +import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.seine.RouteDto; import fr.ird.observe.services.dto.seine.TripSeineDto; @@ -71,6 +73,13 @@ public class RoutesUIHandler extends ContentListUIHandler<TripSeineDto, RouteDto } @Override + public NavigationTreeNodeSupport<?> getOpenNode() { + DataContext dataContext = ObserveSwingApplicationContext.get().getDataContext(); + NavigationTree treeHelper = getTreeHelper(ui); + return treeHelper.getRouteNode(dataContext.getOpenProgramId(), dataContext.getOpenTripSeineId(), dataContext.getOpenRouteId()); + } + + @Override protected ContentMode getContentMode(DataContext dataContext) { // autorisé à écrire diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUI.jaxx index 5f2cdee..4764967 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUI.jaxx @@ -32,8 +32,8 @@ fr.ird.observe.application.swing.ui.actions.content.CreateOpenUIAction fr.ird.observe.application.swing.ui.actions.content.MoveTripSeinesUIAction fr.ird.observe.application.swing.ui.actions.content.ReOpenUIAction - fr.ird.observe.application.swing.ui.actions.shared.SelectNodeUIAction - fr.ird.observe.application.swing.ui.actions.shared.SelectOpenNodeUIAction + fr.ird.observe.application.swing.ui.actions.content.SelectNodeUIAction + fr.ird.observe.application.swing.ui.actions.content.SelectOpenNodeUIAction static org.nuiton.i18n.I18n.n static org.nuiton.i18n.I18n.t diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUI.jcss index 286faa4..a986912 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUI.jcss @@ -26,7 +26,6 @@ } #gotoOpen { - _type:{TripSeineDto.class}; _text:{t("observe.content.action.goto.open.maree")}; _toolTipText:{t("observe.content.action.goto.open.trip.tip")}; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUIHandler.java index 743a93b..5440750 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/impl/seine/TripSeinesUIHandler.java @@ -27,6 +27,7 @@ import fr.ird.observe.application.swing.db.constants.DataContextType; import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.list.ContentListUIHandler; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine.ProgramSeineNavigationTreeNode; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.referential.ProgramDto; @@ -114,4 +115,11 @@ public class TripSeinesUIHandler extends ContentListUIHandler<ProgramDto, TripSe return computeCanGotoOpen() && !ObserveSwingApplicationContext.get().getDataContext().isOpenRoute(); } + @Override + public NavigationTreeNodeSupport<?> getOpenNode() { + DataContext dataContext = ObserveSwingApplicationContext.get().getDataContext(); + NavigationTree treeHelper = getTreeHelper(ui); + return treeHelper.getTripNode(dataContext.getOpenProgramId(), dataContext.getOpenTripSeineId()); + } + } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/ContentTableUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/ContentTableUI.jcss index 05ca7ee..c4e9296 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/ContentTableUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/ContentTableUI.jcss @@ -124,7 +124,7 @@ } #up { - _observeAction:{fr.ird.observe.application.swing.ui.actions.shared.GoUpUIAction.ACTION_NAME}; + _observeAction:{fr.ird.observe.application.swing.ui.actions.content.GoUpUIAction.ACTION_NAME}; visible:{!model.isCreatingMode()}; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java index e1642d1..51c59e8 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java @@ -27,14 +27,18 @@ import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.RootNavigationTreeNode; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline.ActivitiesLonglineNavigationTreeNode; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline.ActivityLonglineNavigationTreeNode; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline.ProgramLonglineNavigationTreeNode; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline.SetLonglineNavigationTreeNode; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline.TripLonglineNavigationTreeNode; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.referential.ReferentialsNavigationTreeNode; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine.ActivitiesSeineNavigationTreeNode; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine.ActivitySeineNavigationTreeNode; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine.FloatingObjectSeineNavigationTreeNode; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine.ProgramSeineNavigationTreeNode; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine.RouteSeineNavigationTreeNode; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine.RoutesSeineNavigationTreeNode; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine.SetSeineNavigationTreeNode; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine.TripSeineNavigationTreeNode; import fr.ird.observe.services.dto.DataReference; @@ -64,7 +68,6 @@ import javax.swing.tree.ExpandVetoException; import javax.swing.tree.TreePath; import javax.swing.tree.TreeSelectionModel; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collections; import java.util.Enumeration; import java.util.List; @@ -152,53 +155,14 @@ public class NavigationTree extends JXTree { return isSelectionEmpty() ? null : (NavigationTreeNodeSupport) getSelectionPath().getLastPathComponent(); } - public void selectOpenNode(Class<?> type) { - - DataContext context = ObserveSwingApplicationContext.get().getDataContext(); - - String[] ids = context.getOpenIds(type); - - if (log.isDebugEnabled()) { - log.debug("using open ids = " + Arrays.toString(ids)); - } - if (ids == null) { - - // rien n'est ouvert, rien à selectionner - return; - } - - selectNode(ids); - } - - /** - * Selects the node described by his given {@code path} of ids. - * - * @param path the absolute path of ids from root node to node to select. - */ - public void selectNode(String... path) { - - if (log.isDebugEnabled()) { - log.debug("try to select node from ids " + Arrays.toString(path)); - } - RootNavigationTreeNode root = this.getTreeModel().getRoot(); - NavigationTreeNodeSupport node = getTreeModel().findNode(root, path); - if (log.isDebugEnabled()) { - log.debug("selected node [" + node + "]"); - } - if (node != null) { - selectNode(node); - } - } - - /** * Selects the given {@code node} in the registred tree. * * @param node the node to select */ public void selectNode(NavigationTreeNodeSupport node) { - if (log.isDebugEnabled()) { - log.debug("try to select node [" + node + "]"); + if (log.isInfoEnabled()) { + log.info("try to select node [" + node + "]"); } TreePath path = new TreePath(getTreeModel().getPathToRoot(node)); @@ -207,7 +171,7 @@ public class NavigationTree extends JXTree { } public NavigationTreeNodeSupport getChild(NavigationTreeNodeSupport node, String id) { - return node.getChild(getTreeModel(), id); + return node.findChildById(getTreeModel(), id); } public void removeNode(NavigationTreeNodeSupport node) { @@ -235,60 +199,97 @@ public class NavigationTree extends JXTree { } DataContext context = ObserveSwingApplicationContext.get().getDataContext(); - String[] path; - - List<String> selectedIds = ObserveSwingApplicationContext.get().getNodesToReselect(); + List<Object> selectedIds = ObserveSwingApplicationContext.get().getNodesToReselect(); if (CollectionUtils.isNotEmpty(selectedIds)) { if (log.isDebugEnabled()) { log.debug("will select previous ids " + selectedIds); } - path = selectedIds.toArray(new String[selectedIds.size()]); + + NavigationTreeNodeSupport selectedNode = getTreeModel().findNode(getRootNode(), selectedIds); + + if (selectedNode != null) { + + + if (log.isInfoEnabled()) { + log.info("Selected node: " + selectedNode); + } + + try { + + selectNode(selectedNode); + } finally { + + // nettoyage du context + ObserveSwingApplicationContext.get().setNodesToReselect(null); + } + } + } else { // on trouve le meilleur noeud a selectionner. String id = context.getHigherOpenId(); + NavigationTreeNodeSupport selectedNode = null; if (id != null) { // on se positionne sur la donnée la plus haute ouverte - path = context.getOpenIds(); - if (log.isDebugEnabled()) { - log.debug("will select open ids " + Arrays.toString(path)); - } - } else { + if (context.isOpenTrip()) { + + NavigationTreeNodeSupport tripNode = getTripNode(context.getOpenProgramId(), context.getOpenTripId()); + selectedNode = tripNode; + + if (context.isOpenRoute()) { + + NavigationTreeNodeSupport routeNode = getRouteNode(tripNode, context.getOpenRouteId()); + selectedNode = routeNode; + if (context.isOpenActivity()) { + + NavigationTreeNodeSupport activitySeineNode = getActivitySeineNode(routeNode, context.getOpenActivityId()); + selectedNode = activitySeineNode; + if (context.isOpenSet()) { + selectedNode = getSetSeineNode(activitySeineNode); + + } + } + } + + if (context.isOpenActivityLongline()) { - // on selectionne le premier noeud de $root + NavigationTreeNodeSupport activityLonglineNode = getActivityLonglineNode(tripNode, context.getOpenActivityId()); + selectedNode = activityLonglineNode; + if (context.isOpenSet()) { + selectedNode = getSetLonglineNode(activityLonglineNode); - NavigationTreeNodeSupport node = getTreeModel().getRoot(); - if (!node.isLeaf()) { - node = (NavigationTreeNodeSupport) node.getFirstChild(); + } + } } - path = new String[]{node.getId()}; - if (log.isDebugEnabled()) { - log.debug("will select first program " + Arrays.toString(path)); + + } else { + selectedNode = getTreeModel().getRoot(); + if (!selectedNode.isLeaf()) { + selectedNode = (NavigationTreeNodeSupport) selectedNode.getFirstChild(); } + } - } - if (log.isDebugEnabled()) { - log.debug("Selected path : " + Arrays.toString(path)); - } - try { + if (selectedNode != null) { - selectNode(path); - } finally { + if (log.isInfoEnabled()) { + log.info("will selected open node: " + selectedNode); + } + + selectNode(selectedNode); + } - // nettoyage du context - ObserveSwingApplicationContext.get().setNodesToReselect(null); } // navigation tree should acquire focus SwingUtilities.invokeLater(this::grabFocus); } - public void reloadNodeSubTree(NavigationTreeNodeSupport node, boolean expandNode) { + public void reloadNodeSubTree(NavigationTreeNodeSupport node) { Objects.requireNonNull(node, "node is null, we can not reload its structure"); // 1. Let's clear node structure @@ -300,13 +301,9 @@ public class NavigationTree extends JXTree { node.reload(); node.populateChilds(getTreeModel()); + // Fix bug (if no child in parent node, it will not expand...) + fireTreeExpanded(new TreePath(node.getPath())); - if (expandNode) { - - // Fix bug (if no child in parent node, it will not expand...) - fireTreeExpanded(new TreePath(node.getPath())); - - } } public void reloadNode(NavigationTreeNodeSupport<?> node, boolean deep) { @@ -326,25 +323,23 @@ public class NavigationTree extends JXTree { } - /** - * Obtains the path of ids fro the root node to the selected node on the - * registred tree. - * - * @return the array of ids from root node to selected node. - */ - public String[] getSelectedIds() { - List<String> result = new ArrayList<>(); + public Object[] getSelectedIds() { + List<Object> result = new ArrayList<>(); NavigationTreeNodeSupport selectedNode = getSelectedNode(); while (selectedNode != null && !selectedNode.isRoot()) { - result.add(selectedNode.getId()); + String id = selectedNode.getId(); + if (id == null) { + result.add(selectedNode.getClass()); + } else { + result.add(id); + } selectedNode = selectedNode.getParent(); } Collections.reverse(result); - return result.toArray(new String[result.size()]); + return result.toArray(); } - public void reloadSelectedNode(boolean refreshFromParent, boolean refreshChilds) { NavigationTreeNodeSupport node = getSelectedNode(); node.setLoaded(false); @@ -544,4 +539,60 @@ public class NavigationTree extends JXTree { getTreeModel().nodeStructureChanged(parentNode); } + + public NavigationTreeNodeSupport getReferentialNode() { + RootNavigationTreeNode root = getTreeModel().getRoot(); + return getTreeModel().findNodeByType(root, ReferentialsNavigationTreeNode.class); + } + + public NavigationTreeNodeSupport getProgramNode(String programId) { + RootNavigationTreeNode root = getTreeModel().getRoot(); + return getTreeModel().findNode(root, programId); + } + + public NavigationTreeNodeSupport getTripNode(String programId, String tripId) { + return getTreeModel().findNode(getProgramNode(programId), tripId); + } + + public NavigationTreeNodeSupport getTripNode(NavigationTreeNodeSupport programNode, String tripId) { + return getTreeModel().findNode(programNode, tripId); + } + + public NavigationTreeNodeSupport getRouteNode(NavigationTreeNodeSupport tripNode, String routeId) { + NavigationTreeNodeSupport routesNode = getTreeModel().findNodeByType(tripNode, RoutesSeineNavigationTreeNode.class); + return getTreeModel().findNode(routesNode, routeId); + } + + public NavigationTreeNodeSupport getActivityLonglineNode(NavigationTreeNodeSupport tripNode, String activityId) { + NavigationTreeNodeSupport activitiesNode = getTreeModel().findNodeByType(tripNode, ActivitiesLonglineNavigationTreeNode.class); + return getTreeModel().findNode(activitiesNode, activityId); + } + + public NavigationTreeNodeSupport getActivitySeineNode(NavigationTreeNodeSupport routeNode, String activityId) { + NavigationTreeNodeSupport activitiesNode = getTreeModel().findNodeByType(routeNode, ActivitiesSeineNavigationTreeNode.class); + return getTreeModel().findNode(activitiesNode, activityId); + } + + public NavigationTreeNodeSupport getSetSeineNode(NavigationTreeNodeSupport activitySeineNode) { + return getTreeModel().findNodeByType(activitySeineNode, SetSeineNavigationTreeNode.class); + } + + public NavigationTreeNodeSupport getSetLonglineNode(NavigationTreeNodeSupport activityLonglineNode) { + return getTreeModel().findNodeByType(activityLonglineNode, SetLonglineNavigationTreeNode.class); + } + + public NavigationTreeNodeSupport<?> getRouteNode(String programId, String tripSeineId, String routeId) { + NavigationTreeNodeSupport tripNode = getTripNode(programId, tripSeineId); + return getRouteNode(tripNode, routeId); + } + + public NavigationTreeNodeSupport<?> getActivityLonglineNode(String programId, String tripLonglineId, String activityLonglineId) { + NavigationTreeNodeSupport tripNode = getTripNode(programId, tripLonglineId); + return getActivityLonglineNode(tripNode, activityLonglineId); + } + + public NavigationTreeNodeSupport<?> getActivitySeineNode(String programId, String tripSeineId, String routeId, String activitySeineId) { + NavigationTreeNodeSupport routeNode = getRouteNode(programId, tripSeineId, routeId); + return getActivitySeineNode(routeNode, activitySeineId); + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java index a0b510d..c0feaba 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java @@ -67,12 +67,16 @@ public class NavigationTreeModel extends DefaultTreeModel { super(new RootNavigationTreeNode()); } - public NavigationTreeNodeSupport findNode(NavigationTreeNodeSupport node, String... ids) { - NavigationTreeNodeSupport result = null; - for (String id : ids) { + public NavigationTreeNodeSupport<?> findNode(NavigationTreeNodeSupport<?> node, Object... ids) { + NavigationTreeNodeSupport<?> result = null; + for (Object id : ids) { - result = node.getChild(this, id); + if (id instanceof String) { + result = node.findChildById(this, (String) id); + } else if (id instanceof Class) { + result = node.findChildByType(this, (Class) id); + } if (result == null) { // un des noeud n'a pas ete trouve, on sortReferential @@ -83,6 +87,10 @@ public class NavigationTreeModel extends DefaultTreeModel { return result; } + public NavigationTreeNodeSupport<?> findNodeByType(NavigationTreeNodeSupport<?> node, Class<?> nodeType) { + return node.findChildByType(this, nodeType); + } + public void populate() { NavigationService navigationService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newNavigationService(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java index cd8d6de..c72a72e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java @@ -23,12 +23,20 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes; */ import fr.ird.observe.application.swing.ObserveSwingApplicationContext; +import fr.ird.observe.application.swing.ui.MnemonicHelper; +import fr.ird.observe.application.swing.ui.actions.content.SelectNodeUIAction; import fr.ird.observe.application.swing.ui.content.ContentUI; import fr.ird.observe.application.swing.ui.tree.ObserveTreeNodeSupport; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.services.ObserveServicesProvider; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import javax.swing.AbstractAction; +import javax.swing.JMenuItem; +import javax.swing.KeyStroke; import java.awt.Color; +import java.awt.event.ActionEvent; import java.util.Enumeration; /** @@ -89,7 +97,7 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider(); } - public NavigationTreeNodeSupport getChild(NavigationTreeModel treeModel, String id) { + public NavigationTreeNodeSupport findChildById(NavigationTreeModel treeModel, String id) { if (id == null) { // id null ? donc rien a faire @@ -123,6 +131,36 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor return null; } + public NavigationTreeNodeSupport findChildByType(NavigationTreeModel treeModel, Class<?> childType) { + + if (childType.isAssignableFrom(getClass())) { + + // on a trouve le bon noeud + return this; + } + + if (!isLoaded()) { + + // il faut charger les fils du noeud pour effectuer la recherche + populateChilds(treeModel); + } + + if (isLeaf()) { + + // au final le noeud est une feuille, donc ne convient pas + return null; + } + Enumeration<NavigationTreeNodeSupport> children = children(); + while (children.hasMoreElements()) { + NavigationTreeNodeSupport node = children.nextElement(); + if (childType.isAssignableFrom(node.getClass())) { + return node; + } + } + + return null; + } + @Override public boolean isLeaf() { return isLoaded() && super.isLeaf(); @@ -136,4 +174,32 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor public Color getColor() { return isOpen() ? Color.BLACK : Color.GRAY; } + + /** Logger */ + private static final Log log = LogFactory.getLog(NavigationTreeNodeSupport.class); + + public JMenuItem toMenuItem(SelectNodeUIAction action, ContentUI<?, ?> ui) { + + JMenuItem mi = new JMenuItem(); + AbstractAction a = new AbstractAction() { + + @Override + public void actionPerformed(ActionEvent e) { + if (log.isInfoEnabled()) { + log.info("Select action from menuItem: " + e.getSource()); + } + action.actionPerformed(mi); + } + }; + mi.setAction(a); + mi.setText(getText().trim()); + MnemonicHelper.addKeyStroke(mi, KeyStroke.getKeyStroke("pressed ENTER")); + mi.setIcon(getIcon("-16")); + mi.setForeground(getColor()); + mi.setBackground(Color.WHITE); + mi.putClientProperty("node", this); + mi.putClientProperty("ui", ui); + return mi; + } + } diff --git a/services-configuration/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceInformation.java b/services-configuration/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceInformation.java index 03316c2..4eea1e5 100644 --- a/services-configuration/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceInformation.java +++ b/services-configuration/src/main/java/fr/ird/observe/services/configuration/ObserveDataSourceInformation.java @@ -38,18 +38,18 @@ public class ObserveDataSourceInformation { protected final boolean writeData; - protected final Version minnimumVersion; + protected final Version minimumVersion; protected final Version version; protected final ImmutableList<Version> migrations; - public ObserveDataSourceInformation(boolean readReferential, boolean writeReferential, boolean readData, boolean writeData, Version minnimumVersion, Version version, ImmutableList<Version> migrations) { + public ObserveDataSourceInformation(boolean readReferential, boolean writeReferential, boolean readData, boolean writeData, Version minimumVersion, Version version, ImmutableList<Version> migrations) { this.readReferential = readReferential; this.writeReferential = writeReferential; this.readData = readData; this.writeData = writeData; - this.minnimumVersion = minnimumVersion; + this.minimumVersion = minimumVersion; this.version = version; this.migrations = migrations; } @@ -70,12 +70,12 @@ public class ObserveDataSourceInformation { return writeData; } - public Version getMinnimumVersion() { - return minnimumVersion; + public Version getMinimumVersion() { + return minimumVersion; } public Version getVersion() { - return version; + return version == null ? Version.VZERO : version; } public ImmutableList<Version> getMigrations() { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit e21525e96994f4a38a9847d8f48a06eab1474207 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 4 08:34:11 2016 +0100 [ui] Revue de la couleur des nœuds dans l'abre de navigation --- .../navigation/nodes/ClassNavigationTreeNode.java | 8 +++++--- .../longline/ProgramLonglineNavigationTreeNode.java | 19 ++++++++++++++++++- .../longline/SetLonglineNavigationTreeNode.java | 5 +++++ .../referential/ReferentialNavigationTreeNode.java | 5 +++++ .../referential/ReferentialsNavigationTreeNode.java | 4 ++++ .../nodes/seine/ProgramSeineNavigationTreeNode.java | 21 ++++++++++++++++++++- .../nodes/seine/SetSeineNavigationTreeNode.java | 5 +++++ 7 files changed, 62 insertions(+), 5 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ClassNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ClassNavigationTreeNode.java index 9262b82..0c8c2d3 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ClassNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ClassNavigationTreeNode.java @@ -26,9 +26,6 @@ import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.services.dto.IdDto; -import javax.swing.Icon; -import javax.swing.UIManager; - import static org.nuiton.i18n.I18n.t; /** @@ -76,4 +73,9 @@ public abstract class ClassNavigationTreeNode<D extends IdDto> extends Navigatio return "navigation." + getParent().getDataType().getName() + ".sub"; } + @Override + public boolean isOpen() { + // ouvert si le parent est ouvert + return getParent().isOpen(); + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java index a1e83da..7fa467b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java @@ -29,8 +29,10 @@ import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.TripLonglineDto; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialReference; +import org.apache.commons.collections4.EnumerationUtils; import java.util.Collection; +import java.util.Iterator; /** * Created on 14/11/16. @@ -38,7 +40,7 @@ import java.util.Collection; * @author Tony Chemit - chemit@codelutin.com * @since 5.1 */ -public class ProgramLonglineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<ProgramDto, ReferentialReference<ProgramDto>> { +public class ProgramLonglineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<ProgramDto, ReferentialReference<ProgramDto>> implements Iterable<TripLonglineNavigationTreeNode> { public ProgramLonglineNavigationTreeNode(ReferentialReference<ProgramDto> data, Collection<DataReference<TripLonglineDto>> trips) { super(data, true); @@ -49,6 +51,17 @@ public class ProgramLonglineNavigationTreeNode extends ReferenceNavigationTreeNo } @Override + public boolean isOpen() { + // le programme est ouvert si l'une de ses marées est ouverte + for (TripLonglineNavigationTreeNode node : this) { + if (node.isOpen()) { + return true; + } + } + return false; + } + + @Override public void reload() { } @@ -67,4 +80,8 @@ public class ProgramLonglineNavigationTreeNode extends ReferenceNavigationTreeNo protected void populateChilds0(NavigationTreeModel treeModel) { } + @Override + public Iterator<TripLonglineNavigationTreeNode> iterator() { + return EnumerationUtils.toList(children()).iterator(); + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetLonglineNavigationTreeNode.java index ec5c033..7ce594c 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetLonglineNavigationTreeNode.java @@ -46,6 +46,11 @@ public class SetLonglineNavigationTreeNode extends ReferenceNavigationTreeNodeSu } @Override + public boolean isOpen() { + return getParent().isOpen(); + } + + @Override public Class<SetLonglineUI> getContentClass() { return SetLonglineUI.class; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/referential/ReferentialNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/referential/ReferentialNavigationTreeNode.java index c248053..bc8e6f6 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/referential/ReferentialNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/referential/ReferentialNavigationTreeNode.java @@ -78,4 +78,9 @@ public class ReferentialNavigationTreeNode<D extends ReferentialDto> extends Cla public boolean isLeaf() { return true; } + + @Override + public boolean isOpen() { + return true; + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/referential/ReferentialsNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/referential/ReferentialsNavigationTreeNode.java index 99ae9a1..2aaa25a 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/referential/ReferentialsNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/referential/ReferentialsNavigationTreeNode.java @@ -70,4 +70,8 @@ public class ReferentialsNavigationTreeNode extends StringNavigationTreeNodeSupp return "navigation.referentiel"; } + @Override + public boolean isOpen() { + return true; + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java index a4c7208..e30fdb7 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java @@ -29,8 +29,10 @@ import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.dto.seine.TripSeineDto; +import org.apache.commons.collections4.EnumerationUtils; import java.util.Collection; +import java.util.Iterator; /** * Created on 14/11/16. @@ -38,7 +40,7 @@ import java.util.Collection; * @author Tony Chemit - chemit@codelutin.com * @since 5.1 */ -public class ProgramSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<ProgramDto, ReferentialReference<ProgramDto>> { +public class ProgramSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<ProgramDto, ReferentialReference<ProgramDto>> implements Iterable<TripSeineNavigationTreeNode> { public ProgramSeineNavigationTreeNode(ReferentialReference<ProgramDto> data, Collection<DataReference<TripSeineDto>> trips) { super(data, true); @@ -63,8 +65,25 @@ public class ProgramSeineNavigationTreeNode extends ReferenceNavigationTreeNodeS return TripSeinesUI.class; } + + @Override + public boolean isOpen() { + // le programme est ouvert si l'une de ses marées est ouverte + for (TripSeineNavigationTreeNode node : this) { + if (node.isOpen()) { + return true; + } + } + return false; + } + @Override protected void populateChilds0(NavigationTreeModel treeModel) { } + + @Override + public Iterator<TripSeineNavigationTreeNode> iterator() { + return EnumerationUtils.toList(children()).iterator(); + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/SetSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/SetSeineNavigationTreeNode.java index ba8c280..3894ce2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/SetSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/SetSeineNavigationTreeNode.java @@ -45,6 +45,11 @@ public class SetSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSuppo } @Override + public boolean isOpen() { + return getParent().isOpen(); + } + + @Override public Class<SetSeineUI> getContentClass() { return SetSeineUI.class; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit cc44bf81043fd0b54e9785befebc0ceafabbb937 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 4 08:53:46 2016 +0100 [ui] Gestion de l'état ouvert sur les calée (cela n'a jamais été implanté...) --- .../application/swing/ObserveOpenDataManager.java | 38 +++++++++++++++++----- .../impl/longline/SetLonglineUIHandler.java | 6 ++++ .../ui/content/impl/seine/SetSeineUIHandler.java | 5 +++ .../impl/longline/ActivityLonglineUIHandler.java | 12 +++---- .../open/impl/seine/ActivitySeineUIHandler.java | 12 +++---- 5 files changed, 53 insertions(+), 20 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveOpenDataManager.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveOpenDataManager.java index 60ffa58..1b30892 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveOpenDataManager.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveOpenDataManager.java @@ -135,11 +135,21 @@ public class ObserveOpenDataManager implements Closeable { return isOpenRoute(parentRouteId) && !dataContext.isOpenActivitySeine(); } - public void openActivitySeine(String parentRouteId, String activitySeineId) { + public void openActivitySeine(String parentRouteId, String activitySeineId, String setSeineId) { Objects.requireNonNull(parentRouteId, "id cant be null"); Objects.requireNonNull(activitySeineId, "id cant be null"); Preconditions.checkState(canOpenActivitySeine(parentRouteId), "the route is not opened or another activity is already opened"); dataContext.setOpenActivitySeineId(activitySeineId); + if (setSeineId != null) { + openSetSeine(activitySeineId, setSeineId); + } + } + + public void openSetSeine(String activitySeineId, String setSeineId) { + Objects.requireNonNull(activitySeineId, "id cant be null"); + Objects.requireNonNull(setSeineId, "id cant be null"); + Preconditions.checkState(isOpenActivitySeine(activitySeineId), "the route is not opened or another activity is already opened"); + dataContext.setOpenSetSeineId(setSeineId); } public boolean isOpenActivitySeine(String activitySeineId) { @@ -150,6 +160,10 @@ public class ObserveOpenDataManager implements Closeable { public void closeActivitySeine(String activitySeineId) { Objects.requireNonNull(activitySeineId, "id cant be null"); Preconditions.checkState(isOpenActivitySeine(activitySeineId), "this activity is not opened"); + if (dataContext.isOpenSet()) { + // on ferme aussi la calée associée + dataContext.setOpenSetSeineId(null); + } dataContext.setOpenActivitySeineId(null); } @@ -189,11 +203,20 @@ public class ObserveOpenDataManager implements Closeable { return isOpenTripLongline(parentTripLonglineId) && !dataContext.isOpenActivityLongline(); } - public void openActivityLongline(String parentTripLonglineId, String activityLonglineId) { + public void openActivityLongline(String parentTripLonglineId, String activityLonglineId, String setLonglineId) { Objects.requireNonNull(parentTripLonglineId, "id cant be null"); Objects.requireNonNull(activityLonglineId, "id cant be null"); Preconditions.checkState(canOpenActivityLongline(parentTripLonglineId), "the trip is not opened or another activity is already opened"); dataContext.setOpenActivityLonglineId(activityLonglineId); + if (setLonglineId != null) { + openSetLongline(activityLonglineId, setLonglineId); + } + } + + public void openSetLongline(String activityLonglineId, String setLonglineId) { + Objects.requireNonNull(activityLonglineId, "id cant be null"); + Objects.requireNonNull(setLonglineId, "id cant be null"); + dataContext.setOpenSetLonglineId(setLonglineId); } public boolean isOpenActivityLongline(String activityLonglineId) { @@ -204,6 +227,10 @@ public class ObserveOpenDataManager implements Closeable { public void closeActivityLongline(String activityLonglineId) { Objects.requireNonNull(activityLonglineId, "id cant be null"); Preconditions.checkState(isOpenActivityLongline(activityLonglineId), "this activity is not opened"); + if (dataContext.isOpenSet()) { + // on ferme aussi la calée associée + dataContext.setOpenSetLonglineId(null); + } dataContext.setOpenActivityLonglineId(null); } @@ -270,13 +297,8 @@ public class ObserveOpenDataManager implements Closeable { exists = servicesProvider.newActivityLonglineService().exists(id); - } else if (IdHelper.isSetLonglineId(id)) { - - exists = servicesProvider.newSetLonglineService().exists(id); - } else { - - exists = false; + exists = IdHelper.isSetLonglineId(id) && servicesProvider.newSetLonglineService().exists(id); } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUIHandler.java index 07dc8b4..4171be6 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUIHandler.java @@ -337,9 +337,15 @@ public class SetLonglineUIHandler extends ContentUIHandler<SetLonglineDto, SetLo String activityId = getSelectedParentId(); + boolean notPersisted = bean.isNotPersisted(); + SaveResultDto saveResult = getSetLonglineService().save(activityId, bean); saveResult.toDto(bean); + if (notPersisted) { + getOpenDataManager().openSetLongline(activityId, bean.getId()); + } + return true; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/SetSeineUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/SetSeineUIHandler.java index 8eef9ba..1d30aeb 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/SetSeineUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/SetSeineUIHandler.java @@ -237,10 +237,15 @@ public class SetSeineUIHandler extends ContentUIHandler<SetSeineDto, SetSeineUI> protected boolean doSave(SetSeineDto bean) throws Exception { String activityId = getSelectedParentId(); + boolean notPersisted = bean.isNotPersisted(); SaveResultDto saveResult = getSetSeineService().save(activityId, bean); saveResult.toDto(bean); + if (notPersisted) { + getOpenDataManager().openSetSeine(activityId, bean.getId()); + } + return true; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/longline/ActivityLonglineUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/longline/ActivityLonglineUIHandler.java index 597d966..566989c 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/longline/ActivityLonglineUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/longline/ActivityLonglineUIHandler.java @@ -30,6 +30,7 @@ import fr.ird.observe.application.swing.ui.content.ContentUIModel; import fr.ird.observe.application.swing.ui.content.open.ContentOpenableUIHandler; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline.ActivityLonglineNavigationTreeNode; import fr.ird.observe.application.swing.validation.ValidationContext; +import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.Form; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; import fr.ird.observe.services.dto.longline.ActivityLonglineHelper; @@ -41,6 +42,7 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.validator.NuitonValidatorScope; import javax.swing.SwingUtilities; +import java.util.Optional; import static org.nuiton.i18n.I18n.n; import static org.nuiton.i18n.I18n.t; @@ -75,7 +77,9 @@ class ActivityLonglineUIHandler extends ContentOpenableUIHandler<ActivityLonglin protected boolean doOpenData() { boolean result = getOpenDataManager().canOpenActivityLongline(getSelectedParentId()); if (result) { - getOpenDataManager().openActivityLongline(getSelectedParentId(), getSelectedId()); + String setLonglineId = Optional.of(getBean().getSetLongline()).map(DataReference::getId).orElse(null); + getOpenDataManager().openActivityLongline(getSelectedParentId(), getSelectedId(), setLonglineId); + } return result; } @@ -242,10 +246,6 @@ class ActivityLonglineUIHandler extends ContentOpenableUIHandler<ActivityLonglin boolean notPersisted = bean.isNotPersisted(); - if (log.isDebugEnabled()) { - log.debug(" long - lat = " + bean.getLongitude() + " - " + bean.getLatitude()); - } - String tripId = getSelectedParentId(); TripChildSaveResultDto saveResult = getActivityLonglineService().save(tripId, getModel().getBean()); @@ -257,7 +257,7 @@ class ActivityLonglineUIHandler extends ContentOpenableUIHandler<ActivityLonglin if (notPersisted) { // ouverture de l'activité après création - getOpenDataManager().openActivityLongline(getSelectedParentId(), bean.getId()); + getOpenDataManager().openActivityLongline(getSelectedParentId(), bean.getId(), null); if (ActivityLonglineNavigationTreeNode.FISHING_OPERATION_ID.equals(bean.getVesselActivityLongline().getId())) { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/seine/ActivitySeineUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/seine/ActivitySeineUIHandler.java index de962a5..94adf8a 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/seine/ActivitySeineUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/seine/ActivitySeineUIHandler.java @@ -28,6 +28,7 @@ import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.ContentUIModel; import fr.ird.observe.application.swing.ui.content.open.ContentOpenableUIHandler; import fr.ird.observe.application.swing.validation.ValidationContext; +import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.Form; import fr.ird.observe.services.dto.referential.ReferentialReference; import fr.ird.observe.services.dto.referential.seine.VesselActivitySeineDto; @@ -47,6 +48,7 @@ import org.nuiton.validator.NuitonValidatorScope; import javax.swing.SwingUtilities; import javax.swing.event.TableModelListener; import java.util.HashSet; +import java.util.Optional; import java.util.Set; import static org.nuiton.i18n.I18n.n; @@ -90,7 +92,9 @@ class ActivitySeineUIHandler extends ContentOpenableUIHandler<ActivitySeineDto, protected boolean doOpenData() { boolean result = getOpenDataManager().canOpenActivitySeine(getSelectedParentId()); if (result) { - getOpenDataManager().openActivitySeine(getSelectedParentId(), getSelectedId()); + String setSeineId = Optional.of(getBean().getSetSeine()).map(DataReference::getId).orElse(null); + + getOpenDataManager().openActivitySeine(getSelectedParentId(), getSelectedId(), setSeineId); } return result; } @@ -276,10 +280,6 @@ class ActivitySeineUIHandler extends ContentOpenableUIHandler<ActivitySeineDto, boolean notPersisted = bean.isNotPersisted(); - if (log.isDebugEnabled()) { - log.debug(" long - lat = " + bean.getLongitude() + " - " + bean.getLatitude()); - } - String routeId = getSelectedParentId(); bean.setOpen(true); @@ -291,7 +291,7 @@ class ActivitySeineUIHandler extends ContentOpenableUIHandler<ActivitySeineDto, if (notPersisted) { // ouverture de l'activité après création - getOpenDataManager().openActivitySeine(getSelectedParentId(), bean.getId()); + getOpenDataManager().openActivitySeine(getSelectedParentId(), bean.getId(), null); if (bean.getReasonForNoFishing() == null) { // création de l'opération de pêche -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 1ec820b0185e6e9096328c2cc77a3d516bd46706 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 4 11:51:33 2016 +0100 refs #8429 ajout raccourcis vers actions globales + revue de la partie Floating Object --- .../swing/decoration/DecoratorService.java | 4 ++-- .../application/swing/ui/MnemonicHelper.java | 15 ++++++++++-- .../impl/longline/LonglineDetailCompositionUI.jaxx | 2 ++ .../impl/longline/LonglineDetailCompositionUI.jcss | 9 +++++++ .../impl/longline/LonglineGlobalCompositionUI.jaxx | 2 ++ .../impl/longline/LonglineGlobalCompositionUI.jcss | 7 ++++++ .../ui/content/impl/longline/SetLonglineUI.jaxx | 5 ++++ .../ui/content/impl/longline/SetLonglineUI.jcss | 16 +++++++++++++ .../FloatingObjectTransmittingBuoyOperationUI.jaxx | 3 +++ .../FloatingObjectTransmittingBuoyOperationUI.jcss | 2 ++ .../ui/content/impl/seine/FloatingObjectUI.jaxx | 3 +++ .../ui/content/impl/seine/FloatingObjectUI.jcss | 4 ++++ .../impl/seine/FloatingObjectUIHandler.java | 4 +--- .../swing/ui/content/impl/seine/SetSeineUI.jaxx | 12 ++++++---- .../swing/ui/content/impl/seine/SetSeineUI.jcss | 14 +++++++++++ .../swing/ui/content/list/ContentListUI.jaxx | 6 +---- .../swing/ui/content/open/ContentOpenableUI.jaxx | 6 +++++ .../swing/ui/content/open/ContentOpenableUI.jcss | 7 +++++- .../swing/ui/content/table/ContentTableUI.jaxx | 4 ++++ .../swing/ui/content/table/ContentTableUI.jcss | 4 ++++ .../swing/ui/tree/navigation/NavigationTree.java | 18 +++++++++----- .../nodes/ReferenceNavigationTreeNodeSupport.java | 3 +++ .../FloatingObjectSeineNavigationTreeNode.java | 19 ++++++++++++++- ...ngObjectTransmittingBuoyNavigationTreeNode.java | 28 ++++++++++++++++++++++ .../ObjectObservedSpeciesNavigationTreeNode.java | 28 ++++++++++++++++++++++ .../ObjectSchoolEstimateNavigationTreeNode.java | 28 ++++++++++++++++++++++ 26 files changed, 228 insertions(+), 25 deletions(-) diff --git a/application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java b/application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java index 74ae5bb..e8a076e 100644 --- a/application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java +++ b/application-swing-decoration/src/main/java/fr/ird/observe/application/swing/decoration/DecoratorService.java @@ -343,8 +343,8 @@ public class DecoratorService extends DecoratorProvider { registerDataAndDataReferenceDecorator(FloatingObjectObservedSpeciesDto.class, t("observe.type.floatingObjectObservedSpecies")); registerDataAndDataReferenceDecorator(ObjectSchoolEstimateDto.class, - "${species/scientificLabel}$s##${weight}$d", - "${species}$s##${weight}$d"); + "${species/scientificLabel}$s##${totalWeight}$d", + "${species}$s##${totalWeight}$d"); registerDataAndDataReferenceDecorator(SchoolEstimateDto.class, "${species/scientificLabel}$s##${totalWeight}$d##${meanWeight}$d", "${species}$s##${totalWeight}$d##${meanWeight}$d"); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/MnemonicHelper.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/MnemonicHelper.java index 631af79..d928fba 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/MnemonicHelper.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/MnemonicHelper.java @@ -13,6 +13,7 @@ import java.util.LinkedHashSet; import java.util.Objects; import java.util.Set; +import static fr.ird.observe.application.swing.ui.content.ContentUIInitializer.GLOBAL_ACTION; import static javax.swing.Action.ACCELERATOR_KEY; import static javax.swing.Action.NAME; import static javax.swing.Action.SHORT_DESCRIPTION; @@ -47,11 +48,11 @@ public class MnemonicHelper { boolean showMnemonic = isShowMnemonic(); if (showMnemonic) { String actionStr = keyStrokeToStr(actionKey); - if (component.getText() != null) { + if (component.getText() != null && !component.getText().contains(actionStr)) { String text = component.getText() + actionStr; component.setText(text); } - if (component.getToolTipText() != null) { + if (component.getToolTipText() != null && !component.getToolTipText().contains(actionStr)) { String tip = component.getToolTipText() + actionStr; component.setToolTipText(tip); } @@ -94,6 +95,16 @@ public class MnemonicHelper { editor.setText(text); } + if (text != null || tip != null) { + String actionId = (String) editor.getClientProperty(GLOBAL_ACTION); + if (actionId != null) { + AbstractUIAction action = (AbstractUIAction) ObserveSwingApplicationContext.get().getActionMap().get(actionId); + Objects.requireNonNull(action, "action [" + actionId + "] not found"); + KeyStroke acceleratorKey = action.getAcceleratorKey(); + addKeyStroke(editor, acceleratorKey); + } + } + } public static void addKeyStrokeFromMnemonic(AbstractButton editor) { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineDetailCompositionUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineDetailCompositionUI.jaxx index f3a398a..8927108 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineDetailCompositionUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineDetailCompositionUI.jaxx @@ -27,6 +27,8 @@ fr.ird.observe.services.dto.longline.SetLonglineDetailCompositionDto fr.ird.observe.application.swing.ui.actions.content.ResetEditUIAction fr.ird.observe.application.swing.ui.actions.content.SaveEditUIAction + fr.ird.observe.application.swing.ui.actions.global.ResetDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.SaveDataGlobalUIAction fr.ird.observe.application.swing.ui.util.JVetoableTabbedPane diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineDetailCompositionUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineDetailCompositionUI.jcss index 5c70a50..4bc3373 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineDetailCompositionUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineDetailCompositionUI.jcss @@ -194,3 +194,12 @@ icon: {getHandler().getErrorIconIfFalse(model.isBranchlineDetailTabValid())}; enabled: {compositionTab.isEnabled() && model.isCompositionTabValid() && !branchlinesTableModel.isSelectionEmpty()}; } + + +#save { + _globalAction:{SaveDataGlobalUIAction.ACTION_NAME}; +} + +#reset { + _globalAction:{ResetDataGlobalUIAction.ACTION_NAME}; +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineGlobalCompositionUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineGlobalCompositionUI.jaxx index 372a383..9004083 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineGlobalCompositionUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineGlobalCompositionUI.jaxx @@ -30,6 +30,8 @@ fr.ird.observe.services.dto.referential.longline.MitigationTypeDto fr.ird.observe.application.swing.ui.actions.content.ResetEditUIAction fr.ird.observe.application.swing.ui.actions.content.SaveEditUIAction + fr.ird.observe.application.swing.ui.actions.global.ResetDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.SaveDataGlobalUIAction fr.ird.observe.application.swing.ui.content.table.impl.longline.BaitsCompositionUI fr.ird.observe.application.swing.ui.content.table.impl.longline.BaitsCompositionUIModel fr.ird.observe.application.swing.ui.content.table.impl.longline.BranchlinesCompositionUI diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineGlobalCompositionUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineGlobalCompositionUI.jcss index b4c4541..fa4a7fb 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineGlobalCompositionUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/LonglineGlobalCompositionUI.jcss @@ -61,3 +61,10 @@ selectedLabel:{t("observe.content.longlineGlobalComposition.selectedMitigationType")}; } +#save { + _globalAction:{SaveDataGlobalUIAction.ACTION_NAME}; +} + +#reset { + _globalAction:{ResetDataGlobalUIAction.ACTION_NAME}; +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUI.jaxx index 36225bd..eca9510 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUI.jaxx @@ -36,6 +36,11 @@ fr.ird.observe.application.swing.ui.actions.content.DeleteDataUIAction fr.ird.observe.application.swing.ui.actions.content.ResetEditUIAction fr.ird.observe.application.swing.ui.actions.content.SaveEditUIAction + fr.ird.observe.application.swing.ui.actions.global.DeleteDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.NewNextDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.ResetDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.SaveDataGlobalUIAction + fr.ird.observe.application.swing.ui.content.ContentUIModel fr.ird.observe.application.swing.ui.util.BooleanEditor diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUI.jcss index fd6d0e1..bd32966 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/longline/SetLonglineUI.jcss @@ -406,3 +406,19 @@ numberPattern:{fr.ird.observe.application.swing.ui.UIHelper.INT_6_DIGITS_PATTERN}; _validatorLabel:{t("observe.content.setLongline.haulingBreaks")}; } + +#delete { + _globalAction:{DeleteDataGlobalUIAction.ACTION_NAME}; +} + +#save { + _globalAction:{SaveDataGlobalUIAction.ACTION_NAME}; +} + +#cancel { + _globalAction:{ResetDataGlobalUIAction.ACTION_NAME}; +} + +#reset { + _globalAction:{ResetDataGlobalUIAction.ACTION_NAME}; +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectTransmittingBuoyOperationUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectTransmittingBuoyOperationUI.jaxx index 8bfa13f..3485cc9 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectTransmittingBuoyOperationUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectTransmittingBuoyOperationUI.jaxx @@ -35,6 +35,9 @@ fr.ird.observe.services.dto.referential.seine.TransmittingBuoyTypeDto fr.ird.observe.application.swing.ui.actions.content.ResetEditUIAction fr.ird.observe.application.swing.ui.actions.content.SaveEditUIAction + fr.ird.observe.application.swing.ui.actions.global.ResetDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.SaveDataGlobalUIAction + jaxx.runtime.swing.editor.bean.BeanComboBox java.awt.Dimension diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectTransmittingBuoyOperationUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectTransmittingBuoyOperationUI.jcss index b048673..8e33bfc 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectTransmittingBuoyOperationUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectTransmittingBuoyOperationUI.jcss @@ -185,12 +185,14 @@ #reset { _observeAction:{ResetEditUIAction.ACTION_NAME}; + _globalAction:{ResetDataGlobalUIAction.ACTION_NAME}; visible:{model.isEnabled()}; enabled:{model.isModified()}; } #save { _observeAction:{SaveEditUIAction.ACTION_NAME}; + _globalAction:{SaveDataGlobalUIAction.ACTION_NAME}; visible:{model.isEnabled()}; enabled:{model.isModified() && model.isValid()}; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectUI.jaxx index ae8fae4..f9824f2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectUI.jaxx @@ -33,6 +33,9 @@ fr.ird.observe.application.swing.ui.actions.content.DeleteDataUIAction fr.ird.observe.application.swing.ui.actions.content.ResetEditUIAction fr.ird.observe.application.swing.ui.actions.content.SaveEditUIAction + fr.ird.observe.application.swing.ui.actions.global.DeleteDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.ResetDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.SaveDataGlobalUIAction jaxx.runtime.swing.editor.NumberEditor jaxx.runtime.swing.editor.bean.BeanComboBox diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectUI.jcss index 81ba641..f3f1efa 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectUI.jcss @@ -88,23 +88,27 @@ BeanComboBox { #cancel { _observeAction:{CancelCreateUIAction.ACTION_NAME}; + _globalAction:{ResetDataGlobalUIAction.ACTION_NAME}; visible:{model.isCreatingMode()}; } #reset { _observeAction:{ResetEditUIAction.ACTION_NAME}; + _globalAction:{ResetDataGlobalUIAction.ACTION_NAME}; visible:{model.isUpdatingMode()}; enabled:{model.isModified()}; } #save { _observeAction:{SaveEditUIAction.ACTION_NAME}; + _globalAction:{SaveDataGlobalUIAction.ACTION_NAME}; visible:{!model.isReadingMode()}; enabled:{model.isModified() && model.isValid()}; } #delete { _observeAction:{DeleteDataUIAction.ACTION_NAME}; + _globalAction:{DeleteDataGlobalUIAction.ACTION_NAME}; visible:{model.isUpdatingMode()}; _toolTipText:{t("observe.action.delete.floatingObject.tip")}; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectUIHandler.java index f21b658..7974089 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/FloatingObjectUIHandler.java @@ -193,9 +193,7 @@ public class FloatingObjectUIHandler extends ContentUIHandler<FloatingObjectDto, } } else { - // select ancestor node -// treeHelper.refreshNode(node, false); - treeHelper.reloadSelectedNode(false, false); + treeHelper.refreshSelectedNode(); } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/SetSeineUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/SetSeineUI.jaxx index 784199b..6643322 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/SetSeineUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/SetSeineUI.jaxx @@ -32,6 +32,11 @@ fr.ird.observe.application.swing.ui.actions.content.DeleteDataUIAction fr.ird.observe.application.swing.ui.actions.content.ResetEditUIAction fr.ird.observe.application.swing.ui.actions.content.SaveEditUIAction + + fr.ird.observe.application.swing.ui.actions.global.DeleteDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.ResetDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.SaveDataGlobalUIAction + fr.ird.observe.application.swing.ui.util.BooleanEditor jaxx.runtime.swing.editor.NumberEditor @@ -57,11 +62,8 @@ <SetSeineDto id='bean'/> <!-- validator --> - <BeanValidator id='validator' - autoField='true' - beanClass='fr.ird.observe.services.dto.seine.SetSeineDto' - errorTableModel='{getErrorTableModel()}' - context='ui-update'> + <BeanValidator id='validator' autoField='true' beanClass='fr.ird.observe.services.dto.seine.SetSeineDto' + errorTableModel='{getErrorTableModel()}' context='ui-update'> </BeanValidator> <!-- formulaire --> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/SetSeineUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/SetSeineUI.jcss index c363595..6d0b394 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/SetSeineUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/impl/seine/SetSeineUI.jcss @@ -216,4 +216,18 @@ #delete { _toolTipText:{t("observe.action.delete.set.tip")}; + _globalAction:{DeleteDataGlobalUIAction.ACTION_NAME}; } + +#save { + _globalAction:{SaveDataGlobalUIAction.ACTION_NAME}; +} + +#cancel { + _globalAction:{ResetDataGlobalUIAction.ACTION_NAME}; +} + +#reset { + _globalAction:{ResetDataGlobalUIAction.ACTION_NAME}; +} + diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jaxx index 0f51db3..2fd605b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUI.jaxx @@ -24,14 +24,10 @@ genericType='E extends IdDto, C extends DataDto, U extends ContentListUI<E,C, U>'> <import> - fr.ird.observe.application.swing.ui.actions.content.CloseOpenUIAction - fr.ird.observe.application.swing.ui.actions.content.CreateOpenUIAction - fr.ird.observe.application.swing.ui.actions.content.ReOpenUIAction - fr.ird.observe.application.swing.ui.actions.content.SelectNodeUIAction fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport - fr.ird.observe.services.dto.IdDto fr.ird.observe.services.dto.DataDto + fr.ird.observe.services.dto.IdDto fr.ird.observe.services.dto.DataReference jaxx.runtime.swing.editor.bean.BeanListHeader diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/ContentOpenableUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/ContentOpenableUI.jaxx index 795e0cf..f142c18 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/ContentOpenableUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/ContentOpenableUI.jaxx @@ -34,6 +34,12 @@ fr.ird.observe.application.swing.ui.actions.content.ResetEditUIAction fr.ird.observe.application.swing.ui.actions.content.SaveEditUIAction + fr.ird.observe.application.swing.ui.actions.global.DeleteDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.NewNextDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.OpenCloseDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.ResetDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.SaveDataGlobalUIAction + javax.swing.SwingConstants </import> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/ContentOpenableUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/ContentOpenableUI.jcss index f1255cc..0769247 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/ContentOpenableUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/ContentOpenableUI.jcss @@ -29,15 +29,18 @@ visible:{!model.isReadingMode()}; enabled:{model.isCreatingMode() ? true : model.isModified()}; horizontalTextPosition:{SwingConstants.RIGHT}; + _globalAction:{ResetDataGlobalUIAction.ACTION_NAME}; } #save { _observeAction:{SaveEditUIAction.ACTION_NAME}; + _globalAction:{SaveDataGlobalUIAction.ACTION_NAME}; enabled:{model.isModified() && model.isValid()}; } #delete { _observeAction:{DeleteDataUIAction.ACTION_NAME}; + _globalAction:{DeleteDataGlobalUIAction.ACTION_NAME}; visible:{model.isUpdatingMode()}; } @@ -47,19 +50,21 @@ #reopen { _observeAction:{ReOpenUIAction.ACTION_NAME}; + _globalAction:{OpenCloseDataGlobalUIAction.ACTION_NAME}; visible:{model.isReadingMode() && model.isCanReopen()}; enabled:{model.isReadingMode() && model.isCanReopen()}; - } #close { _observeAction:{CloseOpenUIAction.ACTION_NAME}; + _globalAction:{OpenCloseDataGlobalUIAction.ACTION_NAME}; visible:{model.isUpdatingMode()}; enabled:{model.isUpdatingMode()}; } #closeAndCreate { _observeAction:{CloseAndCreateUIAction.ACTION_NAME}; + _globalAction:{NewNextDataGlobalUIAction.ACTION_NAME}; visible:{model.isUpdatingMode()}; enabled:{model.isUpdatingMode()}; } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/ContentTableUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/ContentTableUI.jaxx index 52661bb..dc143fc 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/ContentTableUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/ContentTableUI.jaxx @@ -32,6 +32,10 @@ fr.ird.observe.application.swing.ui.actions.content.ResetTableEntryUIAction fr.ird.observe.application.swing.ui.actions.content.SaveTableEntryUIAction fr.ird.observe.application.swing.ui.actions.content.DeleteTableEntryUIAction + fr.ird.observe.application.swing.ui.actions.global.DeleteDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.NewNextDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.ResetDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.SaveDataGlobalUIAction jaxx.runtime.swing.BlockingLayerUI jaxx.runtime.validator.swing.SwingValidator diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/ContentTableUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/ContentTableUI.jcss index c4e9296..68cb4ea 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/ContentTableUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/ContentTableUI.jcss @@ -74,6 +74,7 @@ #newEntry { _observeAction:{NewTableEntryUIAction.ACTION_NAME}; + _globalAction:{NewNextDataGlobalUIAction.ACTION_NAME}; _text:{t(getNewEntryText())}; _toolTipText:{t(getNewEntryTip())}; visible:{tableModel.isEditable() && !tableModel.isCreate()}; @@ -117,6 +118,7 @@ #deleteEntry { _observeAction:{DeleteTableEntryUIAction.ACTION_NAME}; + _globalAction:{DeleteDataGlobalUIAction.ACTION_NAME}; _text:{t(getDeleteEntryText())}; _toolTipText:{t(getDeleteEntryTip())}; actionIcon:"delete"; @@ -130,12 +132,14 @@ #reset { _observeAction:{ResetEditUIAction.ACTION_NAME}; + _globalAction:{ResetDataGlobalUIAction.ACTION_NAME}; visible:{model.isEnabled()}; enabled:{model.isModified()}; } #save { _observeAction:{SaveEditUIAction.ACTION_NAME}; + _globalAction:{SaveDataGlobalUIAction.ACTION_NAME}; _toolTipText:{t("observe.action.save.all.tip")}; visible:{model.isEnabled()}; enabled:{model.isModified() && model.isValid() && !tableModel.isCreate()}; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java index 51c59e8..190da68 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java @@ -26,6 +26,7 @@ import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.RootNavigationTreeNode; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline.ActivitiesLonglineNavigationTreeNode; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline.ActivityLonglineNavigationTreeNode; @@ -167,7 +168,7 @@ public class NavigationTree extends JXTree { TreePath path = new TreePath(getTreeModel().getPathToRoot(node)); setSelectionPath(path); - scrollPathToVisible(path); + SwingUtilities.invokeLater(() -> scrollPathToVisible(path)); } public NavigationTreeNodeSupport getChild(NavigationTreeNodeSupport node, String id) { @@ -205,7 +206,7 @@ public class NavigationTree extends JXTree { log.debug("will select previous ids " + selectedIds); } - NavigationTreeNodeSupport selectedNode = getTreeModel().findNode(getRootNode(), selectedIds); + NavigationTreeNodeSupport selectedNode = getTreeModel().findNode(getRootNode(), selectedIds.toArray()); if (selectedNode != null) { @@ -328,11 +329,10 @@ public class NavigationTree extends JXTree { NavigationTreeNodeSupport selectedNode = getSelectedNode(); while (selectedNode != null && !selectedNode.isRoot()) { - String id = selectedNode.getId(); - if (id == null) { - result.add(selectedNode.getClass()); + if (selectedNode instanceof ReferenceNavigationTreeNodeSupport) { + result.add(selectedNode.getId()); } else { - result.add(id); + result.add(selectedNode.getClass()); } selectedNode = selectedNode.getParent(); } @@ -595,4 +595,10 @@ public class NavigationTree extends JXTree { NavigationTreeNodeSupport routeNode = getRouteNode(programId, tripSeineId, routeId); return getActivitySeineNode(routeNode, activitySeineId); } + + public void refreshSelectedNode() { + NavigationTreeNodeSupport selectedNode = getSelectedNode(); + selectedNode.reload(); + getTreeModel().nodeChanged(selectedNode); + } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java index 7fba96d..b8db2ea 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java @@ -35,6 +35,9 @@ import org.nuiton.decorator.Decorator; */ public abstract class ReferenceNavigationTreeNodeSupport<D extends IdDto, O extends AbstractReference<D>> extends NavigationTreeNodeSupport<O> { + public boolean isPersisted() { + return getId()!=null; + } @Override public String getId() { return getData().getId(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectSeineNavigationTreeNode.java index e8d16a4..905912e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectSeineNavigationTreeNode.java @@ -27,6 +27,7 @@ import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.seine.FloatingObjectDto; +import fr.ird.observe.services.service.data.seine.FloatingObjectService; /** * Created on 14/11/16. @@ -38,11 +39,28 @@ public class FloatingObjectSeineNavigationTreeNode extends ReferenceNavigationTr public FloatingObjectSeineNavigationTreeNode(DataReference<FloatingObjectDto> data) { super(data, true); + if (isPersisted()) { + add(new FloatingObjectTransmittingBuoyNavigationTreeNode()); + add(new ObjectSchoolEstimateNavigationTreeNode()); + add(new ObjectObservedSpeciesNavigationTreeNode()); + } } @Override public void reload() { + FloatingObjectService service = getMainDataSourceServicesProvider().newFloatingObjectService(); + DataReference<FloatingObjectDto> reference = service.loadReferenceToRead(getId()); + setData(reference); + } + @Override + public boolean isLeaf() { + return !isPersisted(); + } + + @Override + public boolean isOpen() { + return getParent().isOpen(); } @Override @@ -52,6 +70,5 @@ public class FloatingObjectSeineNavigationTreeNode extends ReferenceNavigationTr @Override public void populateChilds0(NavigationTreeModel treeModel) { - removeAllChildren(); } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectTransmittingBuoyNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectTransmittingBuoyNavigationTreeNode.java new file mode 100644 index 0000000..45a6ee2 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectTransmittingBuoyNavigationTreeNode.java @@ -0,0 +1,28 @@ +package fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine; + +import fr.ird.observe.application.swing.ui.content.impl.seine.FloatingObjectTransmittingBuoyOperationUI; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ClassNavigationTreeNode; +import fr.ird.observe.services.dto.referential.seine.ObjectOperationDto; + +/** + * Created on 04/12/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class FloatingObjectTransmittingBuoyNavigationTreeNode extends ClassNavigationTreeNode<ObjectOperationDto> { + + public FloatingObjectTransmittingBuoyNavigationTreeNode() { + super(ObjectOperationDto.class); + } + + @Override + public Class<FloatingObjectTransmittingBuoyOperationUI> getContentClass() { + return FloatingObjectTransmittingBuoyOperationUI.class; + } + + @Override + public boolean isLeaf() { + return true; + } +} \ No newline at end of file diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ObjectObservedSpeciesNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ObjectObservedSpeciesNavigationTreeNode.java new file mode 100644 index 0000000..4e0a791 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ObjectObservedSpeciesNavigationTreeNode.java @@ -0,0 +1,28 @@ +package fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine; + +import fr.ird.observe.application.swing.ui.content.table.impl.seine.ObjectObservedSpeciesUI; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ClassNavigationTreeNode; +import fr.ird.observe.services.dto.seine.ObjectObservedSpeciesDto; + +/** + * Created on 04/12/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class ObjectObservedSpeciesNavigationTreeNode extends ClassNavigationTreeNode<ObjectObservedSpeciesDto> { + + public ObjectObservedSpeciesNavigationTreeNode() { + super(ObjectObservedSpeciesDto.class); + } + + @Override + public Class<ObjectObservedSpeciesUI> getContentClass() { + return ObjectObservedSpeciesUI.class; + } + + @Override + public boolean isLeaf() { + return true; + } +} \ No newline at end of file diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ObjectSchoolEstimateNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ObjectSchoolEstimateNavigationTreeNode.java new file mode 100644 index 0000000..7bbd2e5 --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ObjectSchoolEstimateNavigationTreeNode.java @@ -0,0 +1,28 @@ +package fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine; + +import fr.ird.observe.application.swing.ui.content.table.impl.seine.ObjectSchoolEstimateUI; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ClassNavigationTreeNode; +import fr.ird.observe.services.dto.seine.ObjectSchoolEstimateDto; + +/** + * Created on 04/12/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public class ObjectSchoolEstimateNavigationTreeNode extends ClassNavigationTreeNode<ObjectSchoolEstimateDto> { + + public ObjectSchoolEstimateNavigationTreeNode() { + super(ObjectSchoolEstimateDto.class); + } + + @Override + public Class<ObjectSchoolEstimateUI> getContentClass() { + return ObjectSchoolEstimateUI.class; + } + + @Override + public boolean isLeaf() { + return true; + } +} \ No newline at end of file -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 0b74ce6721d1f1947187e477137a49ad1402c524 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 4 12:42:16 2016 +0100 [iso] revue du rechargement des noeuds dans l'arbre de navigation + du nettoyage de code --- .../ui/content/list/ContentListUIHandler.java | 2 +- .../impl/longline/ActivityLonglineUIHandler.java | 3 +- .../swing/ui/tree/navigation/NavigationTree.java | 5 +-- .../ui/tree/navigation/NavigationTreeModel.java | 14 +++++-- .../navigation/nodes/ClassNavigationTreeNode.java | 5 --- .../nodes/NavigationTreeNodeSupport.java | 43 +++++++++++++++------- .../nodes/ReferenceNavigationTreeNodeSupport.java | 3 -- .../navigation/nodes/RootNavigationTreeNode.java | 5 --- .../nodes/StringNavigationTreeNodeSupport.java | 6 --- .../tree/navigation/nodes/WithChildsToReload.java | 12 ++++++ .../ActivitiesLonglineNavigationTreeNode.java | 13 ++----- .../ActivityLonglineNavigationTreeNode.java | 33 +++++------------ .../ProgramLonglineNavigationTreeNode.java | 8 +--- .../longline/SetLonglineNavigationTreeNode.java | 22 ++++++----- .../longline/TripLonglineNavigationTreeNode.java | 12 ++---- .../seine/ActivitiesSeineNavigationTreeNode.java | 18 ++------- .../seine/ActivitySeineNavigationTreeNode.java | 30 ++++++++------- .../FloatingObjectSeineNavigationTreeNode.java | 10 +---- .../seine/ProgramSeineNavigationTreeNode.java | 7 ---- .../nodes/seine/RouteSeineNavigationTreeNode.java | 11 ++---- .../nodes/seine/RoutesSeineNavigationTreeNode.java | 11 ++---- .../nodes/seine/SetSeineNavigationTreeNode.java | 27 ++++++++------ .../nodes/seine/TripSeineNavigationTreeNode.java | 5 --- .../dto/longline/ActivityLonglineHelper.java | 26 +++++++++++++ .../services/dto/seine/ActivitySeineHelper.java | 10 +++++ 25 files changed, 169 insertions(+), 172 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java index c2b79f2..8ae5090 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/list/ContentListUIHandler.java @@ -140,7 +140,7 @@ public abstract class ContentListUIHandler<E extends IdDto, C extends DataDto, U NavigationTreeNodeSupport selectedNode = treeHelper.getSelectedNode(); // on charge si besoin les enfants du nœud - selectedNode.populateChilds(treeHelper.getTreeModel()); + selectedNode.populateChilds(); Enumeration children = selectedNode.children(); while (children.hasMoreElements()) { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/longline/ActivityLonglineUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/longline/ActivityLonglineUIHandler.java index 566989c..d31b3a5 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/longline/ActivityLonglineUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/impl/longline/ActivityLonglineUIHandler.java @@ -28,7 +28,6 @@ import fr.ird.observe.application.swing.db.constants.DataContextType; import fr.ird.observe.application.swing.ui.content.ContentMode; import fr.ird.observe.application.swing.ui.content.ContentUIModel; import fr.ird.observe.application.swing.ui.content.open.ContentOpenableUIHandler; -import fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline.ActivityLonglineNavigationTreeNode; import fr.ird.observe.application.swing.validation.ValidationContext; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.Form; @@ -259,7 +258,7 @@ class ActivityLonglineUIHandler extends ContentOpenableUIHandler<ActivityLonglin // ouverture de l'activité après création getOpenDataManager().openActivityLongline(getSelectedParentId(), bean.getId(), null); - if (ActivityLonglineNavigationTreeNode.FISHING_OPERATION_ID.equals(bean.getVesselActivityLongline().getId())) { + if (ActivityLonglineHelper.FISHING_OPERATION_ID.equals(bean.getVesselActivityLongline().getId())) { // création de l'opération de pêche SwingUtilities.invokeLater(() -> getUi().getAddSet().doClick()); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java index 190da68..c13ef19 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java @@ -172,7 +172,7 @@ public class NavigationTree extends JXTree { } public NavigationTreeNodeSupport getChild(NavigationTreeNodeSupport node, String id) { - return node.findChildById(getTreeModel(), id); + return node.findChildById(id); } public void removeNode(NavigationTreeNodeSupport node) { @@ -299,8 +299,7 @@ public class NavigationTree extends JXTree { } // 3. Let's re-generate node's children by populating the node : this will call the child loaders. - node.reload(); - node.populateChilds(getTreeModel()); + node.updateNode(); // Fix bug (if no child in parent node, it will not expand...) fireTreeExpanded(new TreePath(node.getPath())); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java index c0feaba..aea1297 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java @@ -25,6 +25,7 @@ package fr.ird.observe.application.swing.ui.tree.navigation; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.NavigationTreeNodeSupport; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.RootNavigationTreeNode; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.WithChildsToReload; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline.ProgramLonglineNavigationTreeNode; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.referential.ReferentialsNavigationTreeNode; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine.ProgramSeineNavigationTreeNode; @@ -72,9 +73,9 @@ public class NavigationTreeModel extends DefaultTreeModel { for (Object id : ids) { if (id instanceof String) { - result = node.findChildById(this, (String) id); + result = node.findChildById((String) id); } else if (id instanceof Class) { - result = node.findChildByType(this, (Class) id); + result = node.findChildByType((Class) id); } if (result == null) { @@ -88,7 +89,7 @@ public class NavigationTreeModel extends DefaultTreeModel { } public NavigationTreeNodeSupport<?> findNodeByType(NavigationTreeNodeSupport<?> node, Class<?> nodeType) { - return node.findChildByType(this, nodeType); + return node.findChildByType(nodeType); } public void populate() { @@ -185,7 +186,12 @@ public class NavigationTreeModel extends DefaultTreeModel { } public <N extends NavigationTreeNodeSupport> void open(N node) { - boolean updated = node.populateChilds(this); + if (node instanceof WithChildsToReload) { + WithChildsToReload childsToReload = (WithChildsToReload) node; + node.populateChilds(); + + } + boolean updated = node.populateChilds(); if (updated) { reload(node); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ClassNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ClassNavigationTreeNode.java index 0c8c2d3..b6fc7c5 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ClassNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ClassNavigationTreeNode.java @@ -59,11 +59,6 @@ public abstract class ClassNavigationTreeNode<D extends IdDto> extends Navigatio } @Override - protected void populateChilds0(NavigationTreeModel treeModel) { - removeAllChildren(); - } - - @Override public String getText() { return t(ObserveI18nDecoratorHelper.getTypeI18nKey(getDataType())); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java index c72a72e..7b1b36f 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java @@ -27,7 +27,6 @@ import fr.ird.observe.application.swing.ui.MnemonicHelper; import fr.ird.observe.application.swing.ui.actions.content.SelectNodeUIAction; import fr.ird.observe.application.swing.ui.content.ContentUI; import fr.ird.observe.application.swing.ui.tree.ObserveTreeNodeSupport; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.services.ObserveServicesProvider; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -47,15 +46,33 @@ import java.util.Enumeration; */ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSupport<O> { + /** Logger */ + private static final Log log = LogFactory.getLog(NavigationTreeNodeSupport.class); + + private boolean loaded; + public abstract Class<?> getDataType(); public abstract void reload(); public abstract Class<? extends ContentUI<?, ?>> getContentClass(); - protected abstract void populateChilds0(NavigationTreeModel treeModel); + public void updateNode() { + loaded=false; + reload(); + if (withChildsToLoad()) { + populateChilds(); + } + loaded = true; + } - private boolean loaded; + protected boolean withChildsToLoad() { + return WithChildsToReload.class.isAssignableFrom(getClass()); + } + + public boolean isPersisted() { + return getId() != null; + } @Override public RootNavigationTreeNode getRoot() { @@ -76,9 +93,12 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor setUserObject(data); } - public final boolean populateChilds(NavigationTreeModel treeModel) { - if (getAllowsChildren() && !isLoaded()) { - populateChilds0(treeModel); + public final boolean populateChilds() { + if (isPersisted() && getAllowsChildren() && !isLoaded()) { + if (isPersisted() && withChildsToLoad()) { + removeAllChildren(); + ((WithChildsToReload) this).reloadChilds(); + } loaded = true; return true; } @@ -97,7 +117,7 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor return ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider(); } - public NavigationTreeNodeSupport findChildById(NavigationTreeModel treeModel, String id) { + public NavigationTreeNodeSupport findChildById(String id) { if (id == null) { // id null ? donc rien a faire @@ -112,7 +132,7 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor if (!isLoaded()) { // il faut charger les fils du noeud pour effectuer la recherche - populateChilds(treeModel); + populateChilds(); } if (isLeaf()) { @@ -131,7 +151,7 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor return null; } - public NavigationTreeNodeSupport findChildByType(NavigationTreeModel treeModel, Class<?> childType) { + public NavigationTreeNodeSupport findChildByType(Class<?> childType) { if (childType.isAssignableFrom(getClass())) { @@ -142,7 +162,7 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor if (!isLoaded()) { // il faut charger les fils du noeud pour effectuer la recherche - populateChilds(treeModel); + populateChilds(); } if (isLeaf()) { @@ -175,9 +195,6 @@ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSuppor return isOpen() ? Color.BLACK : Color.GRAY; } - /** Logger */ - private static final Log log = LogFactory.getLog(NavigationTreeNodeSupport.class); - public JMenuItem toMenuItem(SelectNodeUIAction action, ContentUI<?, ?> ui) { JMenuItem mi = new JMenuItem(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java index b8db2ea..7fba96d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java @@ -35,9 +35,6 @@ import org.nuiton.decorator.Decorator; */ public abstract class ReferenceNavigationTreeNodeSupport<D extends IdDto, O extends AbstractReference<D>> extends NavigationTreeNodeSupport<O> { - public boolean isPersisted() { - return getId()!=null; - } @Override public String getId() { return getData().getId(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/RootNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/RootNavigationTreeNode.java index 4e2cc1c..66227a0 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/RootNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/RootNavigationTreeNode.java @@ -23,7 +23,6 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes; */ import fr.ird.observe.application.swing.ui.content.ContentUI; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.services.dto.referential.ProgramDto; import fr.ird.observe.services.dto.referential.ReferentialReference; import org.apache.commons.collections4.EnumerationUtils; @@ -54,10 +53,6 @@ public class RootNavigationTreeNode extends StringNavigationTreeNodeSupport impl } @Override - protected void populateChilds0(NavigationTreeModel treeModel) { - } - - @Override public Iterator<ReferenceNavigationTreeNodeSupport<ProgramDto, ReferentialReference<ProgramDto>>> iterator() { return (Iterator) EnumerationUtils.toList(children()).stream().filter(c -> c instanceof ReferenceNavigationTreeNodeSupport).iterator(); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/StringNavigationTreeNodeSupport.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/StringNavigationTreeNodeSupport.java index 0a14e28..99ab435 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/StringNavigationTreeNodeSupport.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/StringNavigationTreeNodeSupport.java @@ -23,7 +23,6 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes; */ import fr.ird.observe.application.swing.ui.content.ContentUI; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; /** * Created on 14/11/16. @@ -58,11 +57,6 @@ public class StringNavigationTreeNodeSupport extends NavigationTreeNodeSupport<S } @Override - protected void populateChilds0(NavigationTreeModel treeModel) { - // par défaut, pas de fils à charger - } - - @Override public String getText() { return getData(); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/WithChildsToReload.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/WithChildsToReload.java new file mode 100644 index 0000000..e1e0c2f --- /dev/null +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/WithChildsToReload.java @@ -0,0 +1,12 @@ +package fr.ird.observe.application.swing.ui.tree.navigation.nodes; + +/** + * Created on 04/12/16. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 6.0 + */ +public interface WithChildsToReload { + + void reloadChilds(); +} diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivitiesLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivitiesLonglineNavigationTreeNode.java index 578c196..9263d5c 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivitiesLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivitiesLonglineNavigationTreeNode.java @@ -24,12 +24,11 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline; import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.application.swing.ui.content.list.impl.longline.ActivityLonglinesUI; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ClassNavigationTreeNode; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.WithChildsToReload; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.DataReferenceSet; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; -import fr.ird.observe.services.service.data.longline.ActivityLonglineService; import static org.nuiton.i18n.I18n.t; @@ -39,7 +38,7 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 5.1 */ -public class ActivitiesLonglineNavigationTreeNode extends ClassNavigationTreeNode<ActivityLonglineDto> { +public class ActivitiesLonglineNavigationTreeNode extends ClassNavigationTreeNode<ActivityLonglineDto> implements WithChildsToReload { public ActivitiesLonglineNavigationTreeNode() { super(ActivityLonglineDto.class, true); @@ -66,14 +65,10 @@ public class ActivitiesLonglineNavigationTreeNode extends ClassNavigationTreeNod } @Override - protected void populateChilds0(NavigationTreeModel treeModel) { - removeAllChildren(); - String id = getId(); - ActivityLonglineService service = getMainDataSourceServicesProvider().newActivityLonglineService(); - DataReferenceSet<ActivityLonglineDto> referenceSet = service.getActivityLonglineByTripLongline(id); + public void reloadChilds() { + DataReferenceSet<ActivityLonglineDto> referenceSet = getMainDataSourceServicesProvider().newActivityLonglineService().getActivityLonglineByTripLongline(getId()); for (DataReference<ActivityLonglineDto> reference : referenceSet.getReferences()) { add(new ActivityLonglineNavigationTreeNode(reference)); } } - } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivityLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivityLonglineNavigationTreeNode.java index 5b54473..5159145 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivityLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivityLonglineNavigationTreeNode.java @@ -22,12 +22,11 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline; * #L% */ -import com.google.common.collect.ImmutableSet; import fr.ird.observe.application.swing.ui.content.open.impl.longline.ActivityLonglineUI; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.ActivityLonglineDto; +import fr.ird.observe.services.dto.longline.ActivityLonglineHelper; import fr.ird.observe.services.dto.longline.SetLonglineDto; import static org.nuiton.i18n.I18n.t; @@ -41,32 +40,20 @@ import static org.nuiton.i18n.I18n.t; public class ActivityLonglineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<ActivityLonglineDto, DataReference<ActivityLonglineDto>> { - public final static String FISHING_OPERATION_ID = - "fr.ird.observe.entities.referentiel.longline.VesselActivityLongline#1239832686138#0.1"; // operation de peche - - private final static ImmutableSet<String> ENCOUNTERS_ID = ImmutableSet.of( - FISHING_OPERATION_ID, // operation de peche - "fr.ird.observe.entities.referentiel.longline.VesselActivityLongline#1239832686138#0.4" // rencontre interaction - ); - private final static ImmutableSet<String> SENSOR_USED_ID = ImmutableSet.of( - FISHING_OPERATION_ID, // operation de peche - "fr.ird.observe.entities.referentiel.longline.VesselActivityLongline#1239832686138#0.3" // station oceanographique - ); - public ActivityLonglineNavigationTreeNode(DataReference<ActivityLonglineDto> data) { super(data, true); - if (data.getId() != null) { - DataReference<SetLonglineDto> setLonglineRef = (DataReference) data.getPropertyValue(ActivityLonglineDto.PROPERTY_SET_LONGLINE); + if (isPersisted()) { + DataReference<SetLonglineDto> setLonglineRef = ActivityLonglineHelper.getSetLongline(data); if (setLonglineRef != null) { add(new SetLonglineNavigationTreeNode(setLonglineRef)); } - String vesselActivityId = (String) data.getPropertyValue(ActivityLonglineDto.PROPERTY_VESSEL_ACTIVITY_LONGLINE + "Id"); + String vesselActivityId = ActivityLonglineHelper.getVeseelActivityId(data); - if (ENCOUNTERS_ID.contains(vesselActivityId)) { + if (ActivityLonglineHelper.ENCOUNTERS_ID.contains(vesselActivityId)) { add(new EncounterLonglineNavigationTreeNode()); } - if (SENSOR_USED_ID.contains(vesselActivityId)) { + if (ActivityLonglineHelper.SENSOR_USED_ID.contains(vesselActivityId)) { add(new SensorUsedLonglineNavigationTreeNode()); } } @@ -74,12 +61,13 @@ public class ActivityLonglineNavigationTreeNode extends ReferenceNavigationTreeN @Override public void reload() { - + DataReference<ActivityLonglineDto> data = getMainDataSourceServicesProvider().newActivityLonglineService().loadReferenceToRead(getId()); + setData(data); } @Override public String getText() { - return getId() == null ? t("observe.type.activityLongline.unsaved") : super.getText(); + return isPersisted() ? super.getText() : t("observe.type.activityLongline.unsaved"); } @Override @@ -87,7 +75,4 @@ public class ActivityLonglineNavigationTreeNode extends ReferenceNavigationTreeN return ActivityLonglineUI.class; } - @Override - public void populateChilds0(NavigationTreeModel treeModel) { - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java index 7fa467b..f249d0a 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java @@ -23,7 +23,6 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline; */ import fr.ird.observe.application.swing.ui.content.list.impl.longline.TripLonglinesUI; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.TripLonglineDto; @@ -63,7 +62,8 @@ public class ProgramLonglineNavigationTreeNode extends ReferenceNavigationTreeNo @Override public void reload() { - + ReferentialReference<ProgramDto> data = getMainDataSourceServicesProvider().newReferentialService().loadReference(ProgramDto.class, getId()); + setData(data); } @Override @@ -77,10 +77,6 @@ public class ProgramLonglineNavigationTreeNode extends ReferenceNavigationTreeNo } @Override - protected void populateChilds0(NavigationTreeModel treeModel) { - } - - @Override public Iterator<TripLonglineNavigationTreeNode> iterator() { return EnumerationUtils.toList(children()).iterator(); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetLonglineNavigationTreeNode.java index 7ce594c..25a5006 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetLonglineNavigationTreeNode.java @@ -23,7 +23,6 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline; */ import fr.ird.observe.application.swing.ui.content.impl.longline.SetLonglineUI; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.SetLonglineDto; @@ -38,11 +37,23 @@ public class SetLonglineNavigationTreeNode extends ReferenceNavigationTreeNodeSu public SetLonglineNavigationTreeNode(DataReference<SetLonglineDto> data) { super(data, true); + if (isPersisted()) { + add(new SetGlobalCompositionLonglineNavigationTreeNode()); + add(new SetDetailCompositionLonglineNavigationTreeNode()); + add(new CatchLonglineNavigationTreeNode()); + add(new TdrLonglineNavigationTreeNode()); + } } @Override - public void reload() { + public boolean isLeaf() { + return !isPersisted(); + } + @Override + public void reload() { + DataReference<SetLonglineDto> data = getMainDataSourceServicesProvider().newSetLonglineService().loadReferenceToRead(getId()); + setData(data); } @Override @@ -55,11 +66,4 @@ public class SetLonglineNavigationTreeNode extends ReferenceNavigationTreeNodeSu return SetLonglineUI.class; } - @Override - public void populateChilds0(NavigationTreeModel treeModel) { - add(new SetGlobalCompositionLonglineNavigationTreeNode()); - add(new SetDetailCompositionLonglineNavigationTreeNode()); - add(new CatchLonglineNavigationTreeNode()); - add(new TdrLonglineNavigationTreeNode()); - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/TripLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/TripLonglineNavigationTreeNode.java index d22ef4f..7549c6d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/TripLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/TripLonglineNavigationTreeNode.java @@ -23,7 +23,6 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.longline; */ import fr.ird.observe.application.swing.ui.content.open.impl.longline.TripLonglineUI; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.longline.TripLonglineDto; @@ -41,7 +40,7 @@ public class TripLonglineNavigationTreeNode extends ReferenceNavigationTreeNodeS public TripLonglineNavigationTreeNode(DataReference<TripLonglineDto> data) { super(data, data.getId() != null); - if (data.getId() != null) { + if (isPersisted()) { add(new GearUseFeaturesLonglineNavigationTreeNode()); add(new ActivitiesLonglineNavigationTreeNode()); } @@ -49,12 +48,13 @@ public class TripLonglineNavigationTreeNode extends ReferenceNavigationTreeNodeS @Override public void reload() { - + DataReference<TripLonglineDto> data = getMainDataSourceServicesProvider().newTripLonglineService().loadReferenceToRead(getId()); + setData(data); } @Override public String getText() { - return getId() == null ? t("observe.type.tripLongline.unsaved") : (super.getText() + " (" + TripLonglineHelper.getActivityCount(getData()) + ")"); + return isPersisted() ? (super.getText() + " (" + TripLonglineHelper.getActivityCount(getData()) + ")") : t("observe.type.tripLongline.unsaved"); } @Override @@ -62,8 +62,4 @@ public class TripLonglineNavigationTreeNode extends ReferenceNavigationTreeNodeS return TripLonglineUI.class; } - @Override - public void populateChilds0(NavigationTreeModel treeModel) { - // rien à ajouter - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitiesSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitiesSeineNavigationTreeNode.java index e7f2ae4..62ac752 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitiesSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitiesSeineNavigationTreeNode.java @@ -24,12 +24,11 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine; import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.application.swing.ui.content.list.impl.seine.ActivitySeinesUI; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ClassNavigationTreeNode; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.WithChildsToReload; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.DataReferenceSet; import fr.ird.observe.services.dto.seine.ActivitySeineDto; -import fr.ird.observe.services.service.data.seine.ActivitySeineService; import static org.nuiton.i18n.I18n.t; @@ -39,7 +38,7 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 5.1 */ -public class ActivitiesSeineNavigationTreeNode extends ClassNavigationTreeNode<ActivitySeineDto> { +public class ActivitiesSeineNavigationTreeNode extends ClassNavigationTreeNode<ActivitySeineDto> implements WithChildsToReload { public ActivitiesSeineNavigationTreeNode() { super(ActivitySeineDto.class, true); @@ -66,19 +65,10 @@ public class ActivitiesSeineNavigationTreeNode extends ClassNavigationTreeNode<A } @Override - public void reload() { - - } - - @Override - protected void populateChilds0(NavigationTreeModel treeModel) { - removeAllChildren(); - String id = getId(); - ActivitySeineService service = getMainDataSourceServicesProvider().newActivitySeineService(); - DataReferenceSet<ActivitySeineDto> referenceSet = service.getActivitySeineByRoute(id); + public void reloadChilds() { + DataReferenceSet<ActivitySeineDto> referenceSet = getMainDataSourceServicesProvider().newActivitySeineService().getActivitySeineByRoute(getId()); for (DataReference<ActivitySeineDto> reference : referenceSet.getReferences()) { add(new ActivitySeineNavigationTreeNode(reference)); } } - } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitySeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitySeineNavigationTreeNode.java index f1e2346..b1e45a2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitySeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitySeineNavigationTreeNode.java @@ -23,14 +23,14 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine; */ import fr.ird.observe.application.swing.ui.content.open.impl.seine.ActivitySeineUI; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.WithChildsToReload; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.DataReferenceSet; import fr.ird.observe.services.dto.seine.ActivitySeineDto; +import fr.ird.observe.services.dto.seine.ActivitySeineHelper; import fr.ird.observe.services.dto.seine.FloatingObjectDto; import fr.ird.observe.services.dto.seine.SetSeineDto; -import fr.ird.observe.services.service.data.seine.FloatingObjectService; import static org.nuiton.i18n.I18n.t; @@ -40,31 +40,27 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 5.1 */ -public class ActivitySeineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<ActivitySeineDto, DataReference<ActivitySeineDto>> { +public class ActivitySeineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<ActivitySeineDto, DataReference<ActivitySeineDto>> implements WithChildsToReload { public ActivitySeineNavigationTreeNode(DataReference<ActivitySeineDto> data) { super(data, true); - if (data.getId() != null) { - DataReference<SetSeineDto> set = (DataReference<SetSeineDto>) data.getPropertyValue(ActivitySeineDto.PROPERTY_SET_SEINE); + if (isPersisted()) { + DataReference<SetSeineDto> set = ActivitySeineHelper.getSetSeine(data); if (set != null) { add(new SetSeineNavigationTreeNode(set)); } - - FloatingObjectService service = getMainDataSourceServicesProvider().newFloatingObjectService(); - DataReferenceSet<FloatingObjectDto> referenceSet = service.getFloatingObjectByActivitySeine(getId()); - for (DataReference<FloatingObjectDto> reference : referenceSet.getReferences()) { - add(new FloatingObjectSeineNavigationTreeNode(reference)); - } } } @Override public void reload() { + DataReference<ActivitySeineDto> data = getMainDataSourceServicesProvider().newActivitySeineService().loadReferenceToRead(getId()); + setData(data); } @Override public String getText() { - return getId() == null ? t("observe.type.activitySeine.unsaved") : super.getText(); + return isPersisted() ? super.getText() : t("observe.type.activitySeine.unsaved"); } @Override @@ -73,6 +69,14 @@ public class ActivitySeineNavigationTreeNode extends ReferenceNavigationTreeNode } @Override - public void populateChilds0(NavigationTreeModel treeModel) { + public void reloadChilds() { + DataReference<SetSeineDto> set = ActivitySeineHelper.getSetSeine(getData()); + if (set != null) { + add(new SetSeineNavigationTreeNode(set)); + } + DataReferenceSet<FloatingObjectDto> referenceSet = getMainDataSourceServicesProvider().newFloatingObjectService().getFloatingObjectByActivitySeine(getId()); + for (DataReference<FloatingObjectDto> reference : referenceSet.getReferences()) { + add(new FloatingObjectSeineNavigationTreeNode(reference)); + } } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectSeineNavigationTreeNode.java index 905912e..ebd7b26 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectSeineNavigationTreeNode.java @@ -23,11 +23,9 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine; */ import fr.ird.observe.application.swing.ui.content.impl.seine.FloatingObjectUI; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.seine.FloatingObjectDto; -import fr.ird.observe.services.service.data.seine.FloatingObjectService; /** * Created on 14/11/16. @@ -48,9 +46,8 @@ public class FloatingObjectSeineNavigationTreeNode extends ReferenceNavigationTr @Override public void reload() { - FloatingObjectService service = getMainDataSourceServicesProvider().newFloatingObjectService(); - DataReference<FloatingObjectDto> reference = service.loadReferenceToRead(getId()); - setData(reference); + DataReference<FloatingObjectDto> data = getMainDataSourceServicesProvider().newFloatingObjectService().loadReferenceToRead(getId()); + setData(data); } @Override @@ -68,7 +65,4 @@ public class FloatingObjectSeineNavigationTreeNode extends ReferenceNavigationTr return FloatingObjectUI.class; } - @Override - public void populateChilds0(NavigationTreeModel treeModel) { - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java index e30fdb7..e724def 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java @@ -23,7 +23,6 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine; */ import fr.ird.observe.application.swing.ui.content.list.impl.seine.TripSeinesUI; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.referential.ProgramDto; @@ -47,7 +46,6 @@ public class ProgramSeineNavigationTreeNode extends ReferenceNavigationTreeNodeS for (DataReference<TripSeineDto> trip : trips) { add(new TripSeineNavigationTreeNode(trip)); } - setLoaded(true); } @Override @@ -78,11 +76,6 @@ public class ProgramSeineNavigationTreeNode extends ReferenceNavigationTreeNodeS } @Override - protected void populateChilds0(NavigationTreeModel treeModel) { - } - - - @Override public Iterator<TripSeineNavigationTreeNode> iterator() { return EnumerationUtils.toList(children()).iterator(); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RouteSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RouteSeineNavigationTreeNode.java index be0ea75..dbf494d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RouteSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RouteSeineNavigationTreeNode.java @@ -23,7 +23,6 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine; */ import fr.ird.observe.application.swing.ui.content.open.impl.seine.RouteUI; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.seine.RouteDto; @@ -40,19 +39,20 @@ public class RouteSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSup public RouteSeineNavigationTreeNode(DataReference<RouteDto> data) { super(data, true); - if (data.getId() != null) { + if (isPersisted()) { add(new ActivitiesSeineNavigationTreeNode()); } } @Override public void reload() { - + DataReference<RouteDto> data = getMainDataSourceServicesProvider().newRouteService().loadReferenceToRead(getId()); + setData(data); } @Override public String getText() { - return getId() == null ? t("observe.type.route.unsaved") : super.getText(); + return isPersisted() ? super.getText() : t("observe.type.route.unsaved"); } @Override @@ -60,7 +60,4 @@ public class RouteSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSup return RouteUI.class; } - @Override - public void populateChilds0(NavigationTreeModel treeModel) { - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RoutesSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RoutesSeineNavigationTreeNode.java index 5f942a6..1bdbef2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RoutesSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RoutesSeineNavigationTreeNode.java @@ -25,8 +25,8 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper; import fr.ird.observe.application.swing.ui.content.list.impl.seine.RoutesUI; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ClassNavigationTreeNode; +import fr.ird.observe.application.swing.ui.tree.navigation.nodes.WithChildsToReload; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.DataReferenceSet; import fr.ird.observe.services.dto.seine.RouteDto; @@ -40,7 +40,7 @@ import static org.nuiton.i18n.I18n.t; * @author Tony Chemit - chemit@codelutin.com * @since 5.1 */ -public class RoutesSeineNavigationTreeNode extends ClassNavigationTreeNode<RouteDto> { +public class RoutesSeineNavigationTreeNode extends ClassNavigationTreeNode<RouteDto> implements WithChildsToReload { public RoutesSeineNavigationTreeNode() { super(RouteDto.class, true); @@ -67,12 +67,7 @@ public class RoutesSeineNavigationTreeNode extends ClassNavigationTreeNode<Route } @Override - public void reload() { - - } - - @Override - protected void populateChilds0(NavigationTreeModel treeModel) { + public void reloadChilds() { removeAllChildren(); String id = getId(); RouteService routeService = ObserveSwingApplicationContext.get().getMainDataSourceServicesProvider().newRouteService(); diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/SetSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/SetSeineNavigationTreeNode.java index 3894ce2..605227c 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/SetSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/SetSeineNavigationTreeNode.java @@ -23,10 +23,10 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine; */ import fr.ird.observe.application.swing.ui.content.impl.seine.SetSeineUI; -import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTreeModel; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ReferenceNavigationTreeNodeSupport; import fr.ird.observe.services.dto.DataReference; import fr.ird.observe.services.dto.seine.SetSeineDto; +import fr.ird.observe.services.service.data.seine.SetSeineService; /** * Created on 14/11/16. @@ -38,10 +38,24 @@ public class SetSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSuppo public SetSeineNavigationTreeNode(DataReference<SetSeineDto> data) { super(data, true); + if (isPersisted()) { + add(new SchoolEstimatesSeineNavigationTreeNode()); + add(new KeptTargetCatchesSeineNavigationTreeNode()); + add(new DiscardedTargetCatchesSeineNavigationTreeNode()); + add(new KeptTargetSamplesSeineNavigationTreeNode()); + add(new DiscardedTargetSamplesSeineNavigationTreeNode()); + add(new NonTargetCatchesSeineNavigationTreeNode()); + add(new NoneTargetSamplesSeineNavigationTreeNode()); + } } @Override public void reload() { + if (isPersisted()) { + SetSeineService service = getMainDataSourceServicesProvider().newSetSeineService(); + DataReference<SetSeineDto> data = service.loadReferenceToRead(getId()); + setData(data); + } } @Override @@ -54,15 +68,4 @@ public class SetSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSuppo return SetSeineUI.class; } - @Override - public void populateChilds0(NavigationTreeModel treeModel) { - removeAllChildren(); - add(new SchoolEstimatesSeineNavigationTreeNode()); - add(new KeptTargetCatchesSeineNavigationTreeNode()); - add(new DiscardedTargetCatchesSeineNavigationTreeNode()); - add(new KeptTargetSamplesSeineNavigationTreeNode()); - add(new DiscardedTargetSamplesSeineNavigationTreeNode()); - add(new NonTargetCatchesSeineNavigationTreeNode()); - add(new NoneTargetSamplesSeineNavigationTreeNode()); - } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/TripSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/TripSeineNavigationTreeNode.java index cbf872d..d442795 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/TripSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/TripSeineNavigationTreeNode.java @@ -62,9 +62,4 @@ public class TripSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSupp public Class<TripSeineUI> getContentClass() { return TripSeineUI.class; } - - @Override - public void populateChilds0(NavigationTreeModel treeModel) { - - } } diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/longline/ActivityLonglineHelper.java b/services-dto/src/main/java/fr/ird/observe/services/dto/longline/ActivityLonglineHelper.java new file mode 100644 index 0000000..42c1d0c --- /dev/null +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/longline/ActivityLonglineHelper.java @@ -0,0 +1,26 @@ +package fr.ird.observe.services.dto.longline; + +import com.google.common.collect.ImmutableSet; +import fr.ird.observe.services.dto.DataReference; + +public class ActivityLonglineHelper extends GeneratedActivityLonglineHelper { + + public final static String FISHING_OPERATION_ID = + "fr.ird.observe.entities.referentiel.longline.VesselActivityLongline#1239832686138#0.1"; // operation de peche + public final static ImmutableSet<String> SENSOR_USED_ID = ImmutableSet.of( + FISHING_OPERATION_ID, // operation de peche + "fr.ird.observe.entities.referentiel.longline.VesselActivityLongline#1239832686138#0.3" // station oceanographique + ); + public final static ImmutableSet<String> ENCOUNTERS_ID = ImmutableSet.of( + FISHING_OPERATION_ID, // operation de peche + "fr.ird.observe.entities.referentiel.longline.VesselActivityLongline#1239832686138#0.4" // rencontre interaction + ); + + public static DataReference<SetLonglineDto> getSetLongline(DataReference<ActivityLonglineDto> data) { + return (DataReference<SetLonglineDto>) data.getPropertyValue(ActivityLonglineDto.PROPERTY_SET_LONGLINE); + } + + public static String getVeseelActivityId(DataReference<ActivityLonglineDto> data) { + return (String) data.getPropertyValue(ActivityLonglineDto.PROPERTY_VESSEL_ACTIVITY_LONGLINE + "Id"); + } +} diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/seine/ActivitySeineHelper.java b/services-dto/src/main/java/fr/ird/observe/services/dto/seine/ActivitySeineHelper.java new file mode 100644 index 0000000..11b2855 --- /dev/null +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/seine/ActivitySeineHelper.java @@ -0,0 +1,10 @@ +package fr.ird.observe.services.dto.seine; + +import fr.ird.observe.services.dto.DataReference; + +public class ActivitySeineHelper extends GeneratedActivitySeineHelper { + + public static DataReference<SetSeineDto> getSetSeine(DataReference<ActivitySeineDto> data) { + return (DataReference<SetSeineDto>) data.getPropertyValue(ActivitySeineDto.PROPERTY_SET_SEINE); + } +} -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 26b459a57e834e4060fcbdb12e575a89bf0b5adf Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 4 12:43:05 2016 +0100 [iso] update since version --- .../swing/validators/CoordinateLatitudeDtoFieldValidator.java | 2 +- .../swing/validators/CoordinateLongitudeDtoFieldValidator.java | 2 +- .../fr/ird/observe/application/swing/ObserveSwingSessionHelper.java | 2 +- .../application/swing/ui/actions/content/AbstractContentUIAction.java | 2 +- .../application/swing/ui/actions/content/CreateOpenUIAction.java | 2 +- .../application/swing/ui/actions/content/DeleteTableEntryUIAction.java | 2 +- .../application/swing/ui/actions/content/NewTableEntryUIAction.java | 2 +- .../application/swing/ui/actions/content/ResetTableEntryUIAction.java | 2 +- .../application/swing/ui/actions/content/SaveTableEntryUIAction.java | 2 +- .../application/swing/ui/actions/global/AbstractGlobalUIAction.java | 2 +- .../application/swing/ui/actions/global/ChangeFocusGlobalUIAction.java | 2 +- .../application/swing/ui/actions/global/DeleteDataGlobalUIAction.java | 2 +- .../application/swing/ui/actions/global/NewNextDataGlobalUIAction.java | 2 +- .../swing/ui/actions/global/OpenCloseDataGlobalUIAction.java | 2 +- .../application/swing/ui/actions/global/ResetDataGlobalUIAction.java | 2 +- .../application/swing/ui/actions/global/SaveDataGlobalUIAction.java | 2 +- .../observe/application/swing/ui/content/ContentUIBlockingLayerUI.java | 2 +- .../fr/ird/observe/application/swing/ui/content/ObserveActionMap.java | 2 +- .../ird/observe/application/swing/ui/content/ObserveFocusManager.java | 2 +- .../swing/ui/content/ref/impl/LengthLengthParameterUIHandler.java | 2 +- .../swing/ui/content/ref/impl/LengthLengthParameterUIModel.java | 2 +- .../observe/application/swing/ui/content/ref/impl/ShipOwnerUIModel.java | 2 +- .../application/swing/ui/content/ref/impl/seine/SpeciesFateUIModel.java | 2 +- .../swing/ui/content/ref/impl/seine/VesselActivitySeineUIModel.java | 2 +- .../swing/ui/content/table/impl/seine/AbstractSampleUIHandler.java | 2 +- .../ird/observe/application/swing/ui/tree/ObserveTreeNodeSupport.java | 2 +- .../observe/application/swing/ui/tree/navigation/NavigationTree.java | 2 +- .../swing/ui/tree/navigation/NavigationTreeCellRenderer.java | 2 +- .../application/swing/ui/tree/navigation/NavigationTreeModel.java | 2 +- .../swing/ui/tree/navigation/nodes/ClassNavigationTreeNode.java | 2 +- .../swing/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java | 2 +- .../ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java | 2 +- .../swing/ui/tree/navigation/nodes/RootNavigationTreeNode.java | 2 +- .../swing/ui/tree/navigation/nodes/StringNavigationTreeNodeSupport.java | 2 +- .../navigation/nodes/longline/ActivitiesLonglineNavigationTreeNode.java | 2 +- .../navigation/nodes/longline/ActivityLonglineNavigationTreeNode.java | 2 +- .../tree/navigation/nodes/longline/CatchLonglineNavigationTreeNode.java | 2 +- .../navigation/nodes/longline/EncounterLonglineNavigationTreeNode.java | 2 +- .../nodes/longline/GearUseFeaturesLonglineNavigationTreeNode.java | 2 +- .../navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java | 2 +- .../navigation/nodes/longline/SensorUsedLonglineNavigationTreeNode.java | 2 +- .../nodes/longline/SetDetailCompositionLonglineNavigationTreeNode.java | 2 +- .../nodes/longline/SetGlobalCompositionLonglineNavigationTreeNode.java | 2 +- .../tree/navigation/nodes/longline/SetLonglineNavigationTreeNode.java | 2 +- .../tree/navigation/nodes/longline/TdrLonglineNavigationTreeNode.java | 2 +- .../tree/navigation/nodes/longline/TripLonglineNavigationTreeNode.java | 2 +- .../navigation/nodes/referential/ReferentialNavigationTreeNode.java | 2 +- .../navigation/nodes/referential/ReferentialsNavigationTreeNode.java | 2 +- .../tree/navigation/nodes/seine/ActivitiesSeineNavigationTreeNode.java | 2 +- .../ui/tree/navigation/nodes/seine/ActivitySeineNavigationTreeNode.java | 2 +- .../nodes/seine/DiscardedTargetCatchesSeineNavigationTreeNode.java | 2 +- .../nodes/seine/DiscardedTargetSamplesSeineNavigationTreeNode.java | 2 +- .../navigation/nodes/seine/FloatingObjectSeineNavigationTreeNode.java | 2 +- .../navigation/nodes/seine/GearUseFeaturesSeineNavigationTreeNode.java | 2 +- .../nodes/seine/KeptTargetCatchesSeineNavigationTreeNode.java | 2 +- .../nodes/seine/KeptTargetSamplesSeineNavigationTreeNode.java | 2 +- .../navigation/nodes/seine/NonTargetCatchesSeineNavigationTreeNode.java | 2 +- .../nodes/seine/NoneTargetSamplesSeineNavigationTreeNode.java | 2 +- .../ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java | 2 +- .../ui/tree/navigation/nodes/seine/RouteSeineNavigationTreeNode.java | 2 +- .../ui/tree/navigation/nodes/seine/RoutesSeineNavigationTreeNode.java | 2 +- .../navigation/nodes/seine/SchoolEstimatesSeineNavigationTreeNode.java | 2 +- .../ui/tree/navigation/nodes/seine/SetSeineNavigationTreeNode.java | 2 +- .../ui/tree/navigation/nodes/seine/TripSeineNavigationTreeNode.java | 2 +- .../ird/observe/application/swing/ui/tree/selection/SelectionTree.java | 2 +- .../application/swing/ui/tree/selection/SelectionTreeCellRenderer.java | 2 +- .../application/swing/ui/tree/selection/SelectionTreeHeaderHandler.java | 2 +- .../observe/application/swing/ui/tree/selection/SelectionTreeModel.java | 2 +- .../swing/ui/tree/selection/nodes/ProgramSelectionTreeNode.java | 2 +- .../ui/tree/selection/nodes/ReferenceSelectionTreeNodeSupport.java | 2 +- .../swing/ui/tree/selection/nodes/ReferentialSelectionTreeNode.java | 2 +- .../swing/ui/tree/selection/nodes/ReferentialsSelectionTreeNode.java | 2 +- .../swing/ui/tree/selection/nodes/RootSelectionTreeNode.java | 2 +- .../swing/ui/tree/selection/nodes/SelectionTreeNodeSupport.java | 2 +- .../swing/ui/tree/selection/nodes/TripLonglineSelectionTreeNode.java | 2 +- .../swing/ui/tree/selection/nodes/TripSeineSelectionTreeNode.java | 2 +- .../application/web/controller/v1/data/NavigationServiceController.java | 2 +- .../observe/entities/migration/DataSourceMigrationForVersion_6_0.java | 2 +- .../main/java/fr/ird/observe/entities/migration/MigrationVersion.java | 2 +- .../main/java/fr/ird/observe/entities/referentiel/FormulaHelper.java | 2 +- .../java/fr/ird/observe/entities/referentiel/FormulaSupportImpl.java | 2 +- .../fr/ird/observe/entities/referentiel/LengthLengthParameterImpl.java | 2 +- .../fr/ird/observe/entities/referentiel/LengthLengthParameters.java | 2 +- .../java/fr/ird/observe/entities/referentiel/FormulaHelperTest.java | 2 +- .../java/fr/ird/observe/services/dto/referential/FormulaHelper.java | 2 +- .../services/topia/binder/referential/common/ShipOwnerBinder.java | 2 +- .../ird/observe/services/topia/service/data/NavigationServiceTopia.java | 2 +- .../services/topia/service/referential/ReferentialsShellBuilder.java | 2 +- .../java/fr/ird/observe/services/service/data/NavigationRequest.java | 2 +- .../java/fr/ird/observe/services/service/data/NavigationResult.java | 2 +- .../java/fr/ird/observe/services/service/data/NavigationService.java | 2 +- .../observe/services/service/referential/MissingReferentialResult.java | 2 +- 92 files changed, 92 insertions(+), 92 deletions(-) diff --git a/application-swing-validators/src/main/java/fr/ird/observe/application/swing/validators/CoordinateLatitudeDtoFieldValidator.java b/application-swing-validators/src/main/java/fr/ird/observe/application/swing/validators/CoordinateLatitudeDtoFieldValidator.java index 86de2b7..5e504a6 100644 --- a/application-swing-validators/src/main/java/fr/ird/observe/application/swing/validators/CoordinateLatitudeDtoFieldValidator.java +++ b/application-swing-validators/src/main/java/fr/ird/observe/application/swing/validators/CoordinateLatitudeDtoFieldValidator.java @@ -43,7 +43,7 @@ import static org.nuiton.i18n.I18n.n; * Created on 03/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class CoordinateLatitudeDtoFieldValidator extends FieldValidatorSupport { diff --git a/application-swing-validators/src/main/java/fr/ird/observe/application/swing/validators/CoordinateLongitudeDtoFieldValidator.java b/application-swing-validators/src/main/java/fr/ird/observe/application/swing/validators/CoordinateLongitudeDtoFieldValidator.java index 4c51cab..f058625 100644 --- a/application-swing-validators/src/main/java/fr/ird/observe/application/swing/validators/CoordinateLongitudeDtoFieldValidator.java +++ b/application-swing-validators/src/main/java/fr/ird/observe/application/swing/validators/CoordinateLongitudeDtoFieldValidator.java @@ -43,7 +43,7 @@ import static org.nuiton.i18n.I18n.n; * Created on 03/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class CoordinateLongitudeDtoFieldValidator extends FieldValidatorSupport { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingSessionHelper.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingSessionHelper.java index bd7cf2e..85dd1d5 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingSessionHelper.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ObserveSwingSessionHelper.java @@ -35,7 +35,7 @@ import java.io.IOException; * Created on 07/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ObserveSwingSessionHelper implements Closeable { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/AbstractContentUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/AbstractContentUIAction.java index 45ff43e..4057072 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/AbstractContentUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/AbstractContentUIAction.java @@ -32,7 +32,7 @@ import java.awt.event.ActionEvent; * Created on 10/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public abstract class AbstractContentUIAction extends AbstractUIAction { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/CreateOpenUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/CreateOpenUIAction.java index dbc9498..6c8ab92 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/CreateOpenUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/CreateOpenUIAction.java @@ -30,7 +30,7 @@ import fr.ird.observe.application.swing.ui.content.list.ContentListUI; * Created on 11/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class CreateOpenUIAction extends AbstractContentUIAction { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/DeleteTableEntryUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/DeleteTableEntryUIAction.java index bc1a4a3..1c5633d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/DeleteTableEntryUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/DeleteTableEntryUIAction.java @@ -31,7 +31,7 @@ import fr.ird.observe.application.swing.ui.content.table.ContentTableUI; * Created on 10/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class DeleteTableEntryUIAction extends AbstractContentUIAction { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/NewTableEntryUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/NewTableEntryUIAction.java index 231e00d..ebfab2f 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/NewTableEntryUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/NewTableEntryUIAction.java @@ -31,7 +31,7 @@ import fr.ird.observe.application.swing.ui.content.table.ContentTableUI; * Created on 10/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class NewTableEntryUIAction extends AbstractContentUIAction { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/ResetTableEntryUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/ResetTableEntryUIAction.java index 6f50fca..fbfb9c0 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/ResetTableEntryUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/ResetTableEntryUIAction.java @@ -31,7 +31,7 @@ import fr.ird.observe.application.swing.ui.content.table.ContentTableUI; * Created on 10/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ResetTableEntryUIAction extends AbstractContentUIAction { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/SaveTableEntryUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/SaveTableEntryUIAction.java index f446cc8..e0685ed 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/SaveTableEntryUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/SaveTableEntryUIAction.java @@ -31,7 +31,7 @@ import fr.ird.observe.application.swing.ui.content.table.ContentTableUI; * Created on 10/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class SaveTableEntryUIAction extends AbstractContentUIAction { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/AbstractGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/AbstractGlobalUIAction.java index 85bdf9e..61d781b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/AbstractGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/AbstractGlobalUIAction.java @@ -32,7 +32,7 @@ import javax.swing.SwingUtilities; * Created on 11/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public abstract class AbstractGlobalUIAction extends AbstractUIAction { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/ChangeFocusGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/ChangeFocusGlobalUIAction.java index f1ad3a4..423dd3f 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/ChangeFocusGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/ChangeFocusGlobalUIAction.java @@ -36,7 +36,7 @@ import java.awt.event.ActionEvent; * Created on 11/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ChangeFocusGlobalUIAction extends AbstractGlobalUIAction { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/DeleteDataGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/DeleteDataGlobalUIAction.java index 0bb7d9d..6cc5caf 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/DeleteDataGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/DeleteDataGlobalUIAction.java @@ -35,7 +35,7 @@ import java.awt.event.ActionEvent; * Created on 11/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class DeleteDataGlobalUIAction extends AbstractGlobalUIAction { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/NewNextDataGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/NewNextDataGlobalUIAction.java index 3314a47..5730650 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/NewNextDataGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/NewNextDataGlobalUIAction.java @@ -36,7 +36,7 @@ import java.awt.event.ActionEvent; * Created on 11/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class NewNextDataGlobalUIAction extends AbstractGlobalUIAction { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/OpenCloseDataGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/OpenCloseDataGlobalUIAction.java index 0ba2d1a..26bcc25 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/OpenCloseDataGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/OpenCloseDataGlobalUIAction.java @@ -38,7 +38,7 @@ import java.util.Objects; * Created on 11/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class OpenCloseDataGlobalUIAction extends AbstractGlobalUIAction implements Runnable { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/ResetDataGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/ResetDataGlobalUIAction.java index 0dfa178..056050b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/ResetDataGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/ResetDataGlobalUIAction.java @@ -34,7 +34,7 @@ import java.awt.event.ActionEvent; * Created on 11/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ResetDataGlobalUIAction extends AbstractGlobalUIAction { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java index 6f03153..bd8a4a0 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java @@ -34,7 +34,7 @@ import java.awt.event.ActionEvent; * Created on 11/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class SaveDataGlobalUIAction extends AbstractGlobalUIAction { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIBlockingLayerUI.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIBlockingLayerUI.java index 18614d1..f69103e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIBlockingLayerUI.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ContentUIBlockingLayerUI.java @@ -43,7 +43,7 @@ import java.util.Set; * Created on 09/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ContentUIBlockingLayerUI extends BlockingLayerUI { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveActionMap.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveActionMap.java index 5737957..db09e26 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveActionMap.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveActionMap.java @@ -44,7 +44,7 @@ import java.util.Set; * Created on 10/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ObserveActionMap extends ActionMap { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveFocusManager.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveFocusManager.java index 5f1096e..dc1a87a 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveFocusManager.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ObserveFocusManager.java @@ -89,7 +89,7 @@ import java.util.function.Supplier; * Created on 09/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ObserveFocusManager { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/LengthLengthParameterUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/LengthLengthParameterUIHandler.java index e1d91d4..c171793 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/LengthLengthParameterUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/LengthLengthParameterUIHandler.java @@ -37,7 +37,7 @@ import java.util.Set; * Created on 9/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class LengthLengthParameterUIHandler extends ContentReferenceUIHandler<LengthLengthParameterDto, LengthLengthParameterUI> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/LengthLengthParameterUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/LengthLengthParameterUIModel.java index cb487f5..a76de39 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/LengthLengthParameterUIModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/LengthLengthParameterUIModel.java @@ -32,7 +32,7 @@ import java.util.Set; * Created on 11/5/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class LengthLengthParameterUIModel extends ContentReferenceUIModel<LengthLengthParameterDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/ShipOwnerUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/ShipOwnerUIModel.java index acee9c4..8756aa8 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/ShipOwnerUIModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/ShipOwnerUIModel.java @@ -29,7 +29,7 @@ import fr.ird.observe.services.dto.referential.ShipOwnerDto; * Created on 02/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ShipOwnerUIModel extends ContentReferenceUIModel<ShipOwnerDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/seine/SpeciesFateUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/seine/SpeciesFateUIModel.java index 6a03fb1..049e538 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/seine/SpeciesFateUIModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/seine/SpeciesFateUIModel.java @@ -29,7 +29,7 @@ import fr.ird.observe.services.dto.referential.seine.SpeciesFateDto; * Created on 9/28/14. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class SpeciesFateUIModel extends ContentReferenceUIModel<SpeciesFateDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/seine/VesselActivitySeineUIModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/seine/VesselActivitySeineUIModel.java index 15f4c07..5737ca2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/seine/VesselActivitySeineUIModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/impl/seine/VesselActivitySeineUIModel.java @@ -29,7 +29,7 @@ import fr.ird.observe.services.dto.referential.seine.VesselActivitySeineDto; * Created on 9/28/14. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class VesselActivitySeineUIModel extends ContentReferenceUIModel<VesselActivitySeineDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/AbstractSampleUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/AbstractSampleUIHandler.java index 9efd037..8f4b3f6 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/AbstractSampleUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/table/impl/seine/AbstractSampleUIHandler.java @@ -36,7 +36,7 @@ import java.beans.PropertyChangeListener; * Created on 31/10/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public abstract class AbstractSampleUIHandler<E extends IdDto, D extends IdDto, U extends ContentTableUI<E, D, U>> extends ContentTableUIHandler<E, D, U> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/ObserveTreeNodeSupport.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/ObserveTreeNodeSupport.java index 2a0f5f8..a8a31f4 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/ObserveTreeNodeSupport.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/ObserveTreeNodeSupport.java @@ -31,7 +31,7 @@ import java.awt.Color; * Created on 18/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public abstract class ObserveTreeNodeSupport<O> extends DefaultMutableTreeNode { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java index c13ef19..68e33c1 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTree.java @@ -79,7 +79,7 @@ import java.util.Set; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class NavigationTree extends JXTree { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeCellRenderer.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeCellRenderer.java index 87a9d41..38b4871 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeCellRenderer.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeCellRenderer.java @@ -38,7 +38,7 @@ import java.awt.Component; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class NavigationTreeCellRenderer extends DefaultTreeCellRenderer implements StringValue { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java index aea1297..a67620f 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/NavigationTreeModel.java @@ -55,7 +55,7 @@ import static org.nuiton.i18n.I18n.n; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class NavigationTreeModel extends DefaultTreeModel { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ClassNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ClassNavigationTreeNode.java index b6fc7c5..20d9f5c 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ClassNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ClassNavigationTreeNode.java @@ -32,7 +32,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public abstract class ClassNavigationTreeNode<D extends IdDto> extends NavigationTreeNodeSupport<Class<D>> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java index 7b1b36f..a207820 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/NavigationTreeNodeSupport.java @@ -42,7 +42,7 @@ import java.util.Enumeration; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public abstract class NavigationTreeNodeSupport<O> extends ObserveTreeNodeSupport<O> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java index 7fba96d..161e69d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/ReferenceNavigationTreeNodeSupport.java @@ -31,7 +31,7 @@ import org.nuiton.decorator.Decorator; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public abstract class ReferenceNavigationTreeNodeSupport<D extends IdDto, O extends AbstractReference<D>> extends NavigationTreeNodeSupport<O> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/RootNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/RootNavigationTreeNode.java index 66227a0..87aa86b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/RootNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/RootNavigationTreeNode.java @@ -33,7 +33,7 @@ import java.util.Iterator; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class RootNavigationTreeNode extends StringNavigationTreeNodeSupport implements Iterable<ReferenceNavigationTreeNodeSupport<ProgramDto, ReferentialReference<ProgramDto>>> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/StringNavigationTreeNodeSupport.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/StringNavigationTreeNodeSupport.java index 99ab435..24d6e3b 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/StringNavigationTreeNodeSupport.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/StringNavigationTreeNodeSupport.java @@ -28,7 +28,7 @@ import fr.ird.observe.application.swing.ui.content.ContentUI; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class StringNavigationTreeNodeSupport extends NavigationTreeNodeSupport<String> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivitiesLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivitiesLonglineNavigationTreeNode.java index 9263d5c..8087f31 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivitiesLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivitiesLonglineNavigationTreeNode.java @@ -36,7 +36,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ActivitiesLonglineNavigationTreeNode extends ClassNavigationTreeNode<ActivityLonglineDto> implements WithChildsToReload { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivityLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivityLonglineNavigationTreeNode.java index 5159145..571f2f4 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivityLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ActivityLonglineNavigationTreeNode.java @@ -35,7 +35,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ActivityLonglineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<ActivityLonglineDto, DataReference<ActivityLonglineDto>> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/CatchLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/CatchLonglineNavigationTreeNode.java index d284ac3..790948c 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/CatchLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/CatchLonglineNavigationTreeNode.java @@ -30,7 +30,7 @@ import fr.ird.observe.services.dto.longline.CatchLonglineDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class CatchLonglineNavigationTreeNode extends ClassNavigationTreeNode<CatchLonglineDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/EncounterLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/EncounterLonglineNavigationTreeNode.java index 843a144..5b61fd5 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/EncounterLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/EncounterLonglineNavigationTreeNode.java @@ -30,7 +30,7 @@ import fr.ird.observe.services.dto.longline.EncounterDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class EncounterLonglineNavigationTreeNode extends ClassNavigationTreeNode<EncounterDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/GearUseFeaturesLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/GearUseFeaturesLonglineNavigationTreeNode.java index 3f0b7e3..15caba3 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/GearUseFeaturesLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/GearUseFeaturesLonglineNavigationTreeNode.java @@ -31,7 +31,7 @@ import fr.ird.observe.services.dto.longline.GearUseFeaturesLonglineDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class GearUseFeaturesLonglineNavigationTreeNode extends ClassNavigationTreeNode<GearUseFeaturesLonglineDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java index f249d0a..5649b63 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/ProgramLonglineNavigationTreeNode.java @@ -37,7 +37,7 @@ import java.util.Iterator; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ProgramLonglineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<ProgramDto, ReferentialReference<ProgramDto>> implements Iterable<TripLonglineNavigationTreeNode> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SensorUsedLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SensorUsedLonglineNavigationTreeNode.java index b6f92fb..14eedf2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SensorUsedLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SensorUsedLonglineNavigationTreeNode.java @@ -30,7 +30,7 @@ import fr.ird.observe.services.dto.longline.SensorUsedDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class SensorUsedLonglineNavigationTreeNode extends ClassNavigationTreeNode<SensorUsedDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetDetailCompositionLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetDetailCompositionLonglineNavigationTreeNode.java index a37de5e..3e1eae2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetDetailCompositionLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetDetailCompositionLonglineNavigationTreeNode.java @@ -30,7 +30,7 @@ import fr.ird.observe.services.dto.longline.SetLonglineDetailCompositionDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class SetDetailCompositionLonglineNavigationTreeNode extends ClassNavigationTreeNode<SetLonglineDetailCompositionDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetGlobalCompositionLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetGlobalCompositionLonglineNavigationTreeNode.java index 7c4bbca..3484820 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetGlobalCompositionLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetGlobalCompositionLonglineNavigationTreeNode.java @@ -30,7 +30,7 @@ import fr.ird.observe.services.dto.longline.SetLonglineGlobalCompositionDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class SetGlobalCompositionLonglineNavigationTreeNode extends ClassNavigationTreeNode<SetLonglineGlobalCompositionDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetLonglineNavigationTreeNode.java index 25a5006..d158d05 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/SetLonglineNavigationTreeNode.java @@ -31,7 +31,7 @@ import fr.ird.observe.services.dto.longline.SetLonglineDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class SetLonglineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<SetLonglineDto, DataReference<SetLonglineDto>> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/TdrLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/TdrLonglineNavigationTreeNode.java index 6ffa840..601ddcb 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/TdrLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/TdrLonglineNavigationTreeNode.java @@ -30,7 +30,7 @@ import fr.ird.observe.services.dto.longline.TdrDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class TdrLonglineNavigationTreeNode extends ClassNavigationTreeNode<TdrDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/TripLonglineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/TripLonglineNavigationTreeNode.java index 7549c6d..6bd379d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/TripLonglineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/longline/TripLonglineNavigationTreeNode.java @@ -34,7 +34,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class TripLonglineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<TripLonglineDto, DataReference<TripLonglineDto>> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/referential/ReferentialNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/referential/ReferentialNavigationTreeNode.java index bc8e6f6..53e0e06 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/referential/ReferentialNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/referential/ReferentialNavigationTreeNode.java @@ -35,7 +35,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 16/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ReferentialNavigationTreeNode<D extends ReferentialDto> extends ClassNavigationTreeNode<D> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/referential/ReferentialsNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/referential/ReferentialsNavigationTreeNode.java index 2aaa25a..8fbc2da 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/referential/ReferentialsNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/referential/ReferentialsNavigationTreeNode.java @@ -33,7 +33,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ReferentialsNavigationTreeNode extends StringNavigationTreeNodeSupport { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitiesSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitiesSeineNavigationTreeNode.java index 62ac752..0b6a0f0 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitiesSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitiesSeineNavigationTreeNode.java @@ -36,7 +36,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ActivitiesSeineNavigationTreeNode extends ClassNavigationTreeNode<ActivitySeineDto> implements WithChildsToReload { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitySeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitySeineNavigationTreeNode.java index b1e45a2..0db9e11 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitySeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ActivitySeineNavigationTreeNode.java @@ -38,7 +38,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ActivitySeineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<ActivitySeineDto, DataReference<ActivitySeineDto>> implements WithChildsToReload { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/DiscardedTargetCatchesSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/DiscardedTargetCatchesSeineNavigationTreeNode.java index d246d3b..25a331c 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/DiscardedTargetCatchesSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/DiscardedTargetCatchesSeineNavigationTreeNode.java @@ -30,7 +30,7 @@ import fr.ird.observe.services.dto.seine.DiscardedTargetCatchDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class DiscardedTargetCatchesSeineNavigationTreeNode extends ClassNavigationTreeNode<DiscardedTargetCatchDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/DiscardedTargetSamplesSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/DiscardedTargetSamplesSeineNavigationTreeNode.java index f87b6f8..ee25705 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/DiscardedTargetSamplesSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/DiscardedTargetSamplesSeineNavigationTreeNode.java @@ -30,7 +30,7 @@ import fr.ird.observe.services.dto.seine.DiscardedTargetSampleDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class DiscardedTargetSamplesSeineNavigationTreeNode extends ClassNavigationTreeNode<DiscardedTargetSampleDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectSeineNavigationTreeNode.java index ebd7b26..7a14993 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectSeineNavigationTreeNode.java @@ -31,7 +31,7 @@ import fr.ird.observe.services.dto.seine.FloatingObjectDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class FloatingObjectSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<FloatingObjectDto, DataReference<FloatingObjectDto>> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/GearUseFeaturesSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/GearUseFeaturesSeineNavigationTreeNode.java index 9f94666..03d98ef 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/GearUseFeaturesSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/GearUseFeaturesSeineNavigationTreeNode.java @@ -31,7 +31,7 @@ import fr.ird.observe.services.dto.seine.GearUseFeaturesSeineDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class GearUseFeaturesSeineNavigationTreeNode extends ClassNavigationTreeNode<GearUseFeaturesSeineDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/KeptTargetCatchesSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/KeptTargetCatchesSeineNavigationTreeNode.java index bbc7095..0fbef79 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/KeptTargetCatchesSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/KeptTargetCatchesSeineNavigationTreeNode.java @@ -30,7 +30,7 @@ import fr.ird.observe.services.dto.seine.KeptTargetCatchDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class KeptTargetCatchesSeineNavigationTreeNode extends ClassNavigationTreeNode<KeptTargetCatchDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/KeptTargetSamplesSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/KeptTargetSamplesSeineNavigationTreeNode.java index ca8fdff..60c018f 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/KeptTargetSamplesSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/KeptTargetSamplesSeineNavigationTreeNode.java @@ -30,7 +30,7 @@ import fr.ird.observe.services.dto.seine.KeptTargetSampleDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class KeptTargetSamplesSeineNavigationTreeNode extends ClassNavigationTreeNode<KeptTargetSampleDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/NonTargetCatchesSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/NonTargetCatchesSeineNavigationTreeNode.java index c67ee88..080fb6d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/NonTargetCatchesSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/NonTargetCatchesSeineNavigationTreeNode.java @@ -30,7 +30,7 @@ import fr.ird.observe.services.dto.seine.NonTargetCatchDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class NonTargetCatchesSeineNavigationTreeNode extends ClassNavigationTreeNode<NonTargetCatchDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/NoneTargetSamplesSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/NoneTargetSamplesSeineNavigationTreeNode.java index 3fad21b..6480a47 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/NoneTargetSamplesSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/NoneTargetSamplesSeineNavigationTreeNode.java @@ -30,7 +30,7 @@ import fr.ird.observe.services.dto.seine.NonTargetSampleDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class NoneTargetSamplesSeineNavigationTreeNode extends ClassNavigationTreeNode<NonTargetSampleDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java index e724def..e08c6d9 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ProgramSeineNavigationTreeNode.java @@ -37,7 +37,7 @@ import java.util.Iterator; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ProgramSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<ProgramDto, ReferentialReference<ProgramDto>> implements Iterable<TripSeineNavigationTreeNode> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RouteSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RouteSeineNavigationTreeNode.java index dbf494d..7ecb0e4 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RouteSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RouteSeineNavigationTreeNode.java @@ -33,7 +33,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class RouteSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<RouteDto, DataReference<RouteDto>> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RoutesSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RoutesSeineNavigationTreeNode.java index 1bdbef2..46a4b36 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RoutesSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/RoutesSeineNavigationTreeNode.java @@ -38,7 +38,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class RoutesSeineNavigationTreeNode extends ClassNavigationTreeNode<RouteDto> implements WithChildsToReload { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/SchoolEstimatesSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/SchoolEstimatesSeineNavigationTreeNode.java index 0081a8f..a75aaea 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/SchoolEstimatesSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/SchoolEstimatesSeineNavigationTreeNode.java @@ -30,7 +30,7 @@ import fr.ird.observe.services.dto.seine.SchoolEstimateDto; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class SchoolEstimatesSeineNavigationTreeNode extends ClassNavigationTreeNode<SchoolEstimateDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/SetSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/SetSeineNavigationTreeNode.java index 605227c..44eb3a7 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/SetSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/SetSeineNavigationTreeNode.java @@ -32,7 +32,7 @@ import fr.ird.observe.services.service.data.seine.SetSeineService; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class SetSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<SetSeineDto, DataReference<SetSeineDto>> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/TripSeineNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/TripSeineNavigationTreeNode.java index d442795..0e499d1 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/TripSeineNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/TripSeineNavigationTreeNode.java @@ -35,7 +35,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class TripSeineNavigationTreeNode extends ReferenceNavigationTreeNodeSupport<TripSeineDto, DataReference<TripSeineDto>> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTree.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTree.java index 4b5a270..1a44b26 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTree.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTree.java @@ -37,7 +37,7 @@ import java.awt.event.KeyEvent; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class SelectionTree extends JXTree { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeCellRenderer.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeCellRenderer.java index 46e6d05..2b290ee 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeCellRenderer.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeCellRenderer.java @@ -38,7 +38,7 @@ import java.awt.Component; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class SelectionTreeCellRenderer extends DefaultXTreeCellRenderer { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeHeaderHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeHeaderHandler.java index 6d79d0a..5d70deb 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeHeaderHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeHeaderHandler.java @@ -31,7 +31,7 @@ import static org.nuiton.i18n.I18n.t; /** * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class SelectionTreeHeaderHandler implements UIHandler<SelectionTreeHeader> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java index 390cf76..1c31577 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/SelectionTreeModel.java @@ -64,7 +64,7 @@ import static org.nuiton.i18n.I18n.n; * Created on 14/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class SelectionTreeModel extends DefaultTreeModel { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ProgramSelectionTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ProgramSelectionTreeNode.java index f640935..5c55a24 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ProgramSelectionTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ProgramSelectionTreeNode.java @@ -38,7 +38,7 @@ import java.util.Iterator; * Created on 18/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ProgramSelectionTreeNode extends ReferenceSelectionTreeNodeSupport<ProgramDto, ReferentialReference<ProgramDto>> implements Iterable<TripSelectionTreeNodeSupport<?>> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ReferenceSelectionTreeNodeSupport.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ReferenceSelectionTreeNodeSupport.java index 66d0256..31ab2c2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ReferenceSelectionTreeNodeSupport.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ReferenceSelectionTreeNodeSupport.java @@ -31,7 +31,7 @@ import org.nuiton.decorator.Decorator; * Created on 18/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public abstract class ReferenceSelectionTreeNodeSupport<D extends IdDto, O extends AbstractReference<D>> extends SelectionTreeNodeSupport<O> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ReferentialSelectionTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ReferentialSelectionTreeNode.java index c38486d..996ce91 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ReferentialSelectionTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ReferentialSelectionTreeNode.java @@ -31,7 +31,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 18/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ReferentialSelectionTreeNode<D extends ReferentialDto> extends SelectionTreeNodeSupport<Class<D>> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ReferentialsSelectionTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ReferentialsSelectionTreeNode.java index cd4c76c..085411e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ReferentialsSelectionTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/ReferentialsSelectionTreeNode.java @@ -35,7 +35,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 18/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ReferentialsSelectionTreeNode extends SelectionTreeNodeSupport<String> implements Iterable<ReferentialSelectionTreeNode<?>> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/RootSelectionTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/RootSelectionTreeNode.java index 0336e48..d704295 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/RootSelectionTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/RootSelectionTreeNode.java @@ -30,7 +30,7 @@ import java.util.Iterator; * Created on 18/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class RootSelectionTreeNode extends SelectionTreeNodeSupport<Void> implements Iterable<ProgramSelectionTreeNode> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/SelectionTreeNodeSupport.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/SelectionTreeNodeSupport.java index 38a93c5..a7ec910 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/SelectionTreeNodeSupport.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/SelectionTreeNodeSupport.java @@ -32,7 +32,7 @@ import java.util.Enumeration; * Created on 18/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public abstract class SelectionTreeNodeSupport<O> extends DefaultMutableTreeNode { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/TripLonglineSelectionTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/TripLonglineSelectionTreeNode.java index d6ee184..1e9386e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/TripLonglineSelectionTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/TripLonglineSelectionTreeNode.java @@ -33,7 +33,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 18/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class TripLonglineSelectionTreeNode extends TripSelectionTreeNodeSupport<TripLonglineDto> { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/TripSeineSelectionTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/TripSeineSelectionTreeNode.java index ef2813b..2f309f1 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/TripSeineSelectionTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/selection/nodes/TripSeineSelectionTreeNode.java @@ -33,7 +33,7 @@ import static org.nuiton.i18n.I18n.t; * Created on 18/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class TripSeineSelectionTreeNode extends TripSelectionTreeNodeSupport<TripSeineDto> { diff --git a/application-web/src/main/java/fr/ird/observe/application/web/controller/v1/data/NavigationServiceController.java b/application-web/src/main/java/fr/ird/observe/application/web/controller/v1/data/NavigationServiceController.java index 41ada0f..235aff8 100644 --- a/application-web/src/main/java/fr/ird/observe/application/web/controller/v1/data/NavigationServiceController.java +++ b/application-web/src/main/java/fr/ird/observe/application/web/controller/v1/data/NavigationServiceController.java @@ -31,7 +31,7 @@ import fr.ird.observe.services.service.data.NavigationService; * Created on 22/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class NavigationServiceController extends ObserveAuthenticatedServiceControllerSupport<NavigationService> implements NavigationService { diff --git a/entities-migration/src/main/java/fr/ird/observe/entities/migration/DataSourceMigrationForVersion_6_0.java b/entities-migration/src/main/java/fr/ird/observe/entities/migration/DataSourceMigrationForVersion_6_0.java index 5635693..95958f6 100644 --- a/entities-migration/src/main/java/fr/ird/observe/entities/migration/DataSourceMigrationForVersion_6_0.java +++ b/entities-migration/src/main/java/fr/ird/observe/entities/migration/DataSourceMigrationForVersion_6_0.java @@ -44,7 +44,7 @@ import java.util.Set; * Created on 27/10/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ @MigrationVersion(version = "6.0") public class DataSourceMigrationForVersion_6_0 extends AbstractObserveMigrationCallBack { diff --git a/entities/src/main/java/fr/ird/observe/entities/migration/MigrationVersion.java b/entities/src/main/java/fr/ird/observe/entities/migration/MigrationVersion.java index dfce843..b46fdae 100644 --- a/entities/src/main/java/fr/ird/observe/entities/migration/MigrationVersion.java +++ b/entities/src/main/java/fr/ird/observe/entities/migration/MigrationVersion.java @@ -31,7 +31,7 @@ import java.lang.annotation.Target; * Created on 04/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) diff --git a/entities/src/main/java/fr/ird/observe/entities/referentiel/FormulaHelper.java b/entities/src/main/java/fr/ird/observe/entities/referentiel/FormulaHelper.java index 7188756..10e1e91 100644 --- a/entities/src/main/java/fr/ird/observe/entities/referentiel/FormulaHelper.java +++ b/entities/src/main/java/fr/ird/observe/entities/referentiel/FormulaHelper.java @@ -41,7 +41,7 @@ import java.util.regex.Pattern; * Created on 05/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class FormulaHelper { diff --git a/entities/src/main/java/fr/ird/observe/entities/referentiel/FormulaSupportImpl.java b/entities/src/main/java/fr/ird/observe/entities/referentiel/FormulaSupportImpl.java index 8ae237f..0c4fa18 100644 --- a/entities/src/main/java/fr/ird/observe/entities/referentiel/FormulaSupportImpl.java +++ b/entities/src/main/java/fr/ird/observe/entities/referentiel/FormulaSupportImpl.java @@ -31,7 +31,7 @@ import java.util.Set; * Created on 05/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public abstract class FormulaSupportImpl extends FormulaSupportAbstract { diff --git a/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthLengthParameterImpl.java b/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthLengthParameterImpl.java index ee23b71..3b16f67 100644 --- a/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthLengthParameterImpl.java +++ b/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthLengthParameterImpl.java @@ -26,7 +26,7 @@ package fr.ird.observe.entities.referentiel; * Created on 05/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class LengthLengthParameterImpl extends LengthLengthParameterAbstract { diff --git a/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthLengthParameters.java b/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthLengthParameters.java index 281d3d1..b852100 100644 --- a/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthLengthParameters.java +++ b/entities/src/main/java/fr/ird/observe/entities/referentiel/LengthLengthParameters.java @@ -30,7 +30,7 @@ import java.util.Optional; * Created on 05/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class LengthLengthParameters { diff --git a/entities/src/test/java/fr/ird/observe/entities/referentiel/FormulaHelperTest.java b/entities/src/test/java/fr/ird/observe/entities/referentiel/FormulaHelperTest.java index ecec502..d1d1571 100644 --- a/entities/src/test/java/fr/ird/observe/entities/referentiel/FormulaHelperTest.java +++ b/entities/src/test/java/fr/ird/observe/entities/referentiel/FormulaHelperTest.java @@ -29,7 +29,7 @@ import org.junit.Test; * Created on 05/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class FormulaHelperTest { diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/referential/FormulaHelper.java b/services-dto/src/main/java/fr/ird/observe/services/dto/referential/FormulaHelper.java index 888463f..0aefb89 100644 --- a/services-dto/src/main/java/fr/ird/observe/services/dto/referential/FormulaHelper.java +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/referential/FormulaHelper.java @@ -40,7 +40,7 @@ import java.util.regex.Pattern; * Created on 05/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class FormulaHelper { diff --git a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/referential/common/ShipOwnerBinder.java b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/referential/common/ShipOwnerBinder.java index 8ad1302..c932921 100644 --- a/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/referential/common/ShipOwnerBinder.java +++ b/services-topia-binder/src/main/java/fr/ird/observe/services/topia/binder/referential/common/ShipOwnerBinder.java @@ -34,7 +34,7 @@ import fr.ird.observe.services.topia.binder.referential.ReferentialBinderSupport * Created on 02/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ShipOwnerBinder extends ReferentialBinderSupport<ShipOwner, ShipOwnerDto> { diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/NavigationServiceTopia.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/NavigationServiceTopia.java index 1d5ca60..61fb2c7 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/NavigationServiceTopia.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/data/NavigationServiceTopia.java @@ -48,7 +48,7 @@ import fr.ird.observe.services.topia.ObserveServiceTopia; * Created on 22/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class NavigationServiceTopia extends ObserveServiceTopia implements NavigationService { diff --git a/services-topia/src/main/java/fr/ird/observe/services/topia/service/referential/ReferentialsShellBuilder.java b/services-topia/src/main/java/fr/ird/observe/services/topia/service/referential/ReferentialsShellBuilder.java index 368d740..99d3fc0 100644 --- a/services-topia/src/main/java/fr/ird/observe/services/topia/service/referential/ReferentialsShellBuilder.java +++ b/services-topia/src/main/java/fr/ird/observe/services/topia/service/referential/ReferentialsShellBuilder.java @@ -41,7 +41,7 @@ import java.util.TreeSet; * Created on 07/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class ReferentialsShellBuilder { diff --git a/services/src/main/java/fr/ird/observe/services/service/data/NavigationRequest.java b/services/src/main/java/fr/ird/observe/services/service/data/NavigationRequest.java index a4a2640..4eeb5c2 100644 --- a/services/src/main/java/fr/ird/observe/services/service/data/NavigationRequest.java +++ b/services/src/main/java/fr/ird/observe/services/service/data/NavigationRequest.java @@ -26,7 +26,7 @@ package fr.ird.observe.services.service.data; * Created on 22/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class NavigationRequest { diff --git a/services/src/main/java/fr/ird/observe/services/service/data/NavigationResult.java b/services/src/main/java/fr/ird/observe/services/service/data/NavigationResult.java index 859fdb8..33e7e5f 100644 --- a/services/src/main/java/fr/ird/observe/services/service/data/NavigationResult.java +++ b/services/src/main/java/fr/ird/observe/services/service/data/NavigationResult.java @@ -34,7 +34,7 @@ import fr.ird.observe.services.dto.seine.TripSeineDto; * Created on 22/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class NavigationResult { diff --git a/services/src/main/java/fr/ird/observe/services/service/data/NavigationService.java b/services/src/main/java/fr/ird/observe/services/service/data/NavigationService.java index 1d705fe..810e24b 100644 --- a/services/src/main/java/fr/ird/observe/services/service/data/NavigationService.java +++ b/services/src/main/java/fr/ird/observe/services/service/data/NavigationService.java @@ -28,7 +28,7 @@ import fr.ird.observe.services.ObserveService; * Created on 22/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public interface NavigationService extends ObserveService { diff --git a/services/src/main/java/fr/ird/observe/services/service/referential/MissingReferentialResult.java b/services/src/main/java/fr/ird/observe/services/service/referential/MissingReferentialResult.java index 78d83fd..0a95dcd 100644 --- a/services/src/main/java/fr/ird/observe/services/service/referential/MissingReferentialResult.java +++ b/services/src/main/java/fr/ird/observe/services/service/referential/MissingReferentialResult.java @@ -29,7 +29,7 @@ import fr.ird.observe.services.dto.referential.ReferentialDto; * Created on 07/11/16. * * @author Tony Chemit - chemit@codelutin.com - * @since 5.1 + * @since 6.0 */ public class MissingReferentialResult { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit aa3a30e375249960df50a131fbd21b71e5f9bd12 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 4 12:44:09 2016 +0100 [iso] add missing license header --- .../application/swing/ui/MnemonicHelper.java | 22 ++++++++++++++++++++++ .../ui/actions/menu/file/ToFullScreenAction.java | 22 ++++++++++++++++++++++ .../ui/actions/menu/file/ToWindowScreenAction.java | 22 ++++++++++++++++++++++ .../actions/menu/navigation/GotoActionSupport.java | 22 ++++++++++++++++++++++ .../menu/navigation/GotoOpenActivityAction.java | 22 ++++++++++++++++++++++ .../menu/navigation/GotoOpenProgramAction.java | 22 ++++++++++++++++++++++ .../menu/navigation/GotoOpenRouteAction.java | 22 ++++++++++++++++++++++ .../actions/menu/navigation/GotoOpenSetAction.java | 22 ++++++++++++++++++++++ .../menu/navigation/GotoOpenTripAction.java | 22 ++++++++++++++++++++++ .../menu/navigation/GotoReferentialAction.java | 22 ++++++++++++++++++++++ .../swing/ui/admin/config/ConfigModel.java | 22 ++++++++++++++++++++++ .../swing/ui/admin/config/SelectDataModel.java | 22 ++++++++++++++++++++++ .../swing/ui/admin/config/SelectDataUIHandler.java | 22 ++++++++++++++++++++++ .../swing/ui/admin/resume/ShowResumeModel.java | 22 ++++++++++++++++++++++ .../swing/ui/storage/tabs/BackupUIHandler.java | 22 ++++++++++++++++++++++ .../ui/storage/tabs/ChooseDbModeUIHandler.java | 22 ++++++++++++++++++++++ .../swing/ui/storage/tabs/ConfigDataUIHandler.java | 22 ++++++++++++++++++++++ .../storage/tabs/ConfigReferentielUIHandler.java | 22 ++++++++++++++++++++++ .../swing/ui/storage/tabs/ConfigUIHandler.java | 22 ++++++++++++++++++++++ .../swing/ui/storage/tabs/ConfirmUIHandler.java | 22 ++++++++++++++++++++++ .../swing/ui/storage/tabs/RolesUIHandler.java | 22 ++++++++++++++++++++++ .../swing/ui/storage/tabs/SelectDataUIHandler.java | 22 ++++++++++++++++++++++ .../tree/navigation/nodes/WithChildsToReload.java | 22 ++++++++++++++++++++++ ...ngObjectTransmittingBuoyNavigationTreeNode.java | 22 ++++++++++++++++++++++ .../ObjectObservedSpeciesNavigationTreeNode.java | 22 ++++++++++++++++++++++ .../ObjectSchoolEstimateNavigationTreeNode.java | 22 ++++++++++++++++++++++ ...evol_8391_species_drop_lengthmeasuretype-H2.sql | 21 +++++++++++++++++++++ ...evol_8391_species_drop_lengthmeasuretype-PG.sql | 21 +++++++++++++++++++++ .../dto/longline/ActivityLonglineHelper.java | 22 ++++++++++++++++++++++ .../services/dto/seine/ActivitySeineHelper.java | 22 ++++++++++++++++++++++ 30 files changed, 658 insertions(+) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/MnemonicHelper.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/MnemonicHelper.java index d928fba..dcad18d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/MnemonicHelper.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/MnemonicHelper.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.actions.AbstractUIAction; import jaxx.runtime.JAXXObject; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ToFullScreenAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ToFullScreenAction.java index 3aa62e0..f1e45df 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ToFullScreenAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ToFullScreenAction.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.actions.menu.file; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.ObserveMainUI; import jaxx.runtime.SwingUtil; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ToWindowScreenAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ToWindowScreenAction.java index 4cb3d0d..bfba161 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ToWindowScreenAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/file/ToWindowScreenAction.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.actions.menu.file; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.ObserveMainUI; import jaxx.runtime.SwingUtil; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoActionSupport.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoActionSupport.java index 64eb5a9..9d49996 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoActionSupport.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoActionSupport.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.actions.menu.navigation; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.ui.ObserveMainUI; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenActivityAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenActivityAction.java index a031622..e88ea8d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenActivityAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenActivityAction.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.actions.menu.navigation; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenProgramAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenProgramAction.java index 6b31227..fc87d65 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenProgramAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenProgramAction.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.actions.menu.navigation; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenRouteAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenRouteAction.java index cc4a452..fe5b1f4 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenRouteAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenRouteAction.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.actions.menu.navigation; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenSetAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenSetAction.java index 9c4ae23..c2caa10 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenSetAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenSetAction.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.actions.menu.navigation; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenTripAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenTripAction.java index 499c7b3..882a867 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenTripAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoOpenTripAction.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.actions.menu.navigation; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoReferentialAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoReferentialAction.java index f13b198..c7b0a9e 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoReferentialAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/menu/navigation/GotoReferentialAction.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.actions.menu.navigation; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.db.DataContext; import fr.ird.observe.application.swing.ui.ObserveMainUI; import fr.ird.observe.application.swing.ui.tree.navigation.NavigationTree; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigModel.java index e4644c0..848a3d7 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/ConfigModel.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.admin.config; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.configuration.constants.DbMode; import fr.ird.observe.application.swing.db.ObserveSwingDataSource; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataModel.java index 58160ba..c28d068 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataModel.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.admin.config; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.db.ObserveSwingDataSource; import fr.ird.observe.application.swing.ui.admin.AdminActionModel; import fr.ird.observe.application.swing.ui.admin.AdminStep; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataUIHandler.java index 5b5aa2f..8e942b0 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/config/SelectDataUIHandler.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.admin.config; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.admin.AdminTabUIHandler; import fr.ird.observe.application.swing.ui.tree.selection.SelectionTree; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/resume/ShowResumeModel.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/resume/ShowResumeModel.java index 65a0218..7f229fd 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/resume/ShowResumeModel.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/admin/resume/ShowResumeModel.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.admin.resume; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.ui.admin.AdminActionModel; import fr.ird.observe.application.swing.ui.admin.AdminStep; import fr.ird.observe.application.swing.ui.admin.AdminUIModel; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/BackupUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/BackupUIHandler.java index 016bfc1..5bae824 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/BackupUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/BackupUIHandler.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.storage.tabs; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.ui.MnemonicHelper; import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.storage.StorageStep; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ChooseDbModeUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ChooseDbModeUIHandler.java index 9fbfeeb..21e9a77 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ChooseDbModeUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ChooseDbModeUIHandler.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.storage.tabs; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.I18nEnumHelper; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ObserveTextGenerator; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigDataUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigDataUIHandler.java index 290c43b..19bd295 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigDataUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigDataUIHandler.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.storage.tabs; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.configuration.constants.CreationMode; import fr.ird.observe.application.swing.ui.UIHelper; import fr.ird.observe.application.swing.ui.storage.StorageStep; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigReferentielUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigReferentielUIHandler.java index 11b3ebb..ed48a8c 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigReferentielUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigReferentielUIHandler.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.storage.tabs; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.configuration.constants.CreationMode; import fr.ird.observe.application.swing.ui.MnemonicHelper; import fr.ird.observe.application.swing.ui.UIHelper; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUIHandler.java index 9205202..012b728 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfigUIHandler.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.storage.tabs; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ObserveTextGenerator; import fr.ird.observe.application.swing.configuration.constants.DbMode; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfirmUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfirmUIHandler.java index 867e4c6..b04e656 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfirmUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/ConfirmUIHandler.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.storage.tabs; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.spi.UIHandler; import static org.nuiton.i18n.I18n.t; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/RolesUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/RolesUIHandler.java index 7123fc4..1bcd4d9 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/RolesUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/RolesUIHandler.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.storage.tabs; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.ui.UIHelper; import jaxx.runtime.spi.UIHandler; import jaxx.runtime.swing.editor.MyDefaultCellEditor; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/SelectDataUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/SelectDataUIHandler.java index 55972ab..c00143c 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/SelectDataUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/storage/tabs/SelectDataUIHandler.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.storage.tabs; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.spi.UIHandler; import static org.nuiton.i18n.I18n.t; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/WithChildsToReload.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/WithChildsToReload.java index e1e0c2f..2ecd29d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/WithChildsToReload.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/WithChildsToReload.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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% + */ + /** * Created on 04/12/16. * diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectTransmittingBuoyNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectTransmittingBuoyNavigationTreeNode.java index 45a6ee2..0520433 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectTransmittingBuoyNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/FloatingObjectTransmittingBuoyNavigationTreeNode.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.ui.content.impl.seine.FloatingObjectTransmittingBuoyOperationUI; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ClassNavigationTreeNode; import fr.ird.observe.services.dto.referential.seine.ObjectOperationDto; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ObjectObservedSpeciesNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ObjectObservedSpeciesNavigationTreeNode.java index 4e0a791..c3ab529 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ObjectObservedSpeciesNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ObjectObservedSpeciesNavigationTreeNode.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.ui.content.table.impl.seine.ObjectObservedSpeciesUI; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ClassNavigationTreeNode; import fr.ird.observe.services.dto.seine.ObjectObservedSpeciesDto; diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ObjectSchoolEstimateNavigationTreeNode.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ObjectSchoolEstimateNavigationTreeNode.java index 7bbd2e5..e203190 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ObjectSchoolEstimateNavigationTreeNode.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/tree/navigation/nodes/seine/ObjectSchoolEstimateNavigationTreeNode.java @@ -1,5 +1,27 @@ package fr.ird.observe.application.swing.ui.tree.navigation.nodes.seine; +/*- + * #%L + * ObServe :: Application Swing + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.application.swing.ui.content.table.impl.seine.ObjectSchoolEstimateUI; import fr.ird.observe.application.swing.ui.tree.navigation.nodes.ClassNavigationTreeNode; import fr.ird.observe.services.dto.seine.ObjectSchoolEstimateDto; diff --git a/entities-migration/src/main/resources/db/migration/6.0/20_evol_8391_species_drop_lengthmeasuretype-H2.sql b/entities-migration/src/main/resources/db/migration/6.0/20_evol_8391_species_drop_lengthmeasuretype-H2.sql index a94568d..4ad8623 100644 --- a/entities-migration/src/main/resources/db/migration/6.0/20_evol_8391_species_drop_lengthmeasuretype-H2.sql +++ b/entities-migration/src/main/resources/db/migration/6.0/20_evol_8391_species_drop_lengthmeasuretype-H2.sql @@ -1 +1,22 @@ +--- +-- #%L +-- ObServe :: Entities Migration +-- %% +-- Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit +-- %% +-- 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% +--- ALTER TABLE observe_common.species DROP COLUMN lengthmeasuretype; \ No newline at end of file diff --git a/entities-migration/src/main/resources/db/migration/6.0/20_evol_8391_species_drop_lengthmeasuretype-PG.sql b/entities-migration/src/main/resources/db/migration/6.0/20_evol_8391_species_drop_lengthmeasuretype-PG.sql index b2b0485..e476620 100644 --- a/entities-migration/src/main/resources/db/migration/6.0/20_evol_8391_species_drop_lengthmeasuretype-PG.sql +++ b/entities-migration/src/main/resources/db/migration/6.0/20_evol_8391_species_drop_lengthmeasuretype-PG.sql @@ -1 +1,22 @@ +--- +-- #%L +-- ObServe :: Entities Migration +-- %% +-- Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit +-- %% +-- 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% +--- ALTER TABLE observe_common.species DROP COLUMN lengthmeasuretype CASCADE; \ No newline at end of file diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/longline/ActivityLonglineHelper.java b/services-dto/src/main/java/fr/ird/observe/services/dto/longline/ActivityLonglineHelper.java index 42c1d0c..fac5b56 100644 --- a/services-dto/src/main/java/fr/ird/observe/services/dto/longline/ActivityLonglineHelper.java +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/longline/ActivityLonglineHelper.java @@ -1,5 +1,27 @@ package fr.ird.observe.services.dto.longline; +/*- + * #%L + * ObServe :: Services DTO + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.collect.ImmutableSet; import fr.ird.observe.services.dto.DataReference; diff --git a/services-dto/src/main/java/fr/ird/observe/services/dto/seine/ActivitySeineHelper.java b/services-dto/src/main/java/fr/ird/observe/services/dto/seine/ActivitySeineHelper.java index 11b2855..45dc5fa 100644 --- a/services-dto/src/main/java/fr/ird/observe/services/dto/seine/ActivitySeineHelper.java +++ b/services-dto/src/main/java/fr/ird/observe/services/dto/seine/ActivitySeineHelper.java @@ -1,5 +1,27 @@ package fr.ird.observe.services.dto.seine; +/*- + * #%L + * ObServe :: Services DTO + * %% + * Copyright (C) 2008 - 2016 IRD, Code Lutin, Tony Chemit + * %% + * 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.ird.observe.services.dto.DataReference; public class ActivitySeineHelper extends GeneratedActivitySeineHelper { -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository observe. See https://gitlab.nuiton.org/codelutin/observe.git commit 142ade7881a1789c5018224ea7ae18685368e3d2 Author: Tony CHEMIT <chemit@codelutin.com> Date: Sun Dec 4 13:30:00 2016 +0100 refs #8429 Revue des raccourcis sur les écrans d'édition de référentiel --- .../BackToReferentialListUIAction.java} | 31 ++++++--------- .../CreateNewReferentialUIAction.java} | 30 ++++++-------- .../EditReferentialUIAction.java} | 30 ++++++-------- .../actions/global/DeleteDataGlobalUIAction.java | 16 ++++++-- .../actions/global/NewNextDataGlobalUIAction.java | 4 ++ .../ui/actions/global/SaveDataGlobalUIAction.java | 2 - .../swing/ui/content/open/ContentOpenableUI.jcss | 2 +- .../swing/ui/content/ref/ContentReferenceUI.jaxx | 14 +++++-- .../swing/ui/content/ref/ContentReferenceUI.jcss | 46 +++++++++++----------- .../ui/content/ref/ContentReferenceUIHandler.java | 12 ++---- 10 files changed, 88 insertions(+), 99 deletions(-) diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/BackToReferentialListUIAction.java similarity index 53% copy from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java copy to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/BackToReferentialListUIAction.java index bd8a4a0..c9fbadd 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/BackToReferentialListUIAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions.global; +package fr.ird.observe.application.swing.ui.actions.content; /*- * #%L @@ -22,39 +22,30 @@ package fr.ird.observe.application.swing.ui.actions.global; * #L% */ -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.ObserveMainUI; -import fr.ird.observe.application.swing.ui.actions.global.AbstractGlobalUIAction; import fr.ird.observe.application.swing.ui.content.ContentUI; +import fr.ird.observe.application.swing.ui.content.ref.ContentReferenceUI; -import javax.swing.JButton; -import java.awt.event.ActionEvent; +import static org.nuiton.i18n.I18n.t; /** - * Created on 11/11/16. + * Created on 10/11/16. * * @author Tony Chemit - chemit@codelutin.com * @since 6.0 */ -public class SaveDataGlobalUIAction extends AbstractGlobalUIAction { +public class BackToReferentialListUIAction extends AbstractContentUIAction { - public static final String ACTION_NAME = "saveDataGlobal"; + public static final String ACTION_NAME = "BackToReferentialListUIAction"; - public SaveDataGlobalUIAction(ObserveMainUI mainUI) { - super(mainUI, ACTION_NAME, "pressed F5"); + public BackToReferentialListUIAction(ObserveMainUI mainUI) { + super(mainUI, ACTION_NAME, t("observe.action.back.to.list"), t("observe.action.back.to.list.tip"), "go-back", "ctrl pressed B"); } - @Override - public void actionPerformed(ActionEvent e) { - - ContentUI<?, ?> contentUI = ObserveSwingApplicationContext.get().getContentUIManager().getSelectedContentUI(); - - JButton button = (JButton) contentUI.getObjectById("save"); - if (button != null) { - button.getAction().actionPerformed(e); - } - + protected void actionPerformed(ContentUI<?, ?> ui) { + ContentReferenceUI contentReferenceUI = (ContentReferenceUI) ui; + contentReferenceUI.getHandler().backToList(); } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/CreateNewReferentialUIAction.java similarity index 53% copy from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java copy to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/CreateNewReferentialUIAction.java index bd8a4a0..d0cc1d5 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/CreateNewReferentialUIAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions.global; +package fr.ird.observe.application.swing.ui.actions.content; /*- * #%L @@ -22,38 +22,30 @@ package fr.ird.observe.application.swing.ui.actions.global; * #L% */ -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.ObserveMainUI; -import fr.ird.observe.application.swing.ui.actions.global.AbstractGlobalUIAction; import fr.ird.observe.application.swing.ui.content.ContentUI; +import fr.ird.observe.application.swing.ui.content.ref.ContentReferenceUI; -import javax.swing.JButton; -import java.awt.event.ActionEvent; +import static org.nuiton.i18n.I18n.t; /** - * Created on 11/11/16. + * Created on 10/11/16. * * @author Tony Chemit - chemit@codelutin.com * @since 6.0 */ -public class SaveDataGlobalUIAction extends AbstractGlobalUIAction { +public class CreateNewReferentialUIAction extends AbstractContentUIAction { - public static final String ACTION_NAME = "saveDataGlobal"; + public static final String ACTION_NAME = "CreateNewReferentialUIAction"; - public SaveDataGlobalUIAction(ObserveMainUI mainUI) { - super(mainUI, ACTION_NAME, "pressed F5"); + public CreateNewReferentialUIAction(ObserveMainUI mainUI) { + super(mainUI, ACTION_NAME, t("observe.action.create"), "", "add", "ctrl pressed N"); } - @Override - public void actionPerformed(ActionEvent e) { - - ContentUI<?, ?> contentUI = ObserveSwingApplicationContext.get().getContentUIManager().getSelectedContentUI(); - - JButton button = (JButton) contentUI.getObjectById("save"); - if (button != null) { - button.getAction().actionPerformed(e); - } + protected void actionPerformed(ContentUI<?, ?> ui) { + ContentReferenceUI contentReferenceUI = (ContentReferenceUI) ui; + contentReferenceUI.getHandler().createUI(); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/EditReferentialUIAction.java similarity index 53% copy from application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java copy to application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/EditReferentialUIAction.java index bd8a4a0..6703cd2 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/content/EditReferentialUIAction.java @@ -1,4 +1,4 @@ -package fr.ird.observe.application.swing.ui.actions.global; +package fr.ird.observe.application.swing.ui.actions.content; /*- * #%L @@ -22,38 +22,30 @@ package fr.ird.observe.application.swing.ui.actions.global; * #L% */ -import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.ObserveMainUI; -import fr.ird.observe.application.swing.ui.actions.global.AbstractGlobalUIAction; import fr.ird.observe.application.swing.ui.content.ContentUI; +import fr.ird.observe.application.swing.ui.content.ref.ContentReferenceUI; -import javax.swing.JButton; -import java.awt.event.ActionEvent; +import static org.nuiton.i18n.I18n.t; /** - * Created on 11/11/16. + * Created on 10/11/16. * * @author Tony Chemit - chemit@codelutin.com * @since 6.0 */ -public class SaveDataGlobalUIAction extends AbstractGlobalUIAction { +public class EditReferentialUIAction extends AbstractContentUIAction { - public static final String ACTION_NAME = "saveDataGlobal"; + public static final String ACTION_NAME = "EditReferentialUIAction"; - public SaveDataGlobalUIAction(ObserveMainUI mainUI) { - super(mainUI, ACTION_NAME, "pressed F5"); + public EditReferentialUIAction(ObserveMainUI mainUI) { + super(mainUI, ACTION_NAME, t("observe.action.modify"), "", "go-detail", "ctrl pressed M"); } - @Override - public void actionPerformed(ActionEvent e) { - - ContentUI<?, ?> contentUI = ObserveSwingApplicationContext.get().getContentUIManager().getSelectedContentUI(); - - JButton button = (JButton) contentUI.getObjectById("save"); - if (button != null) { - button.getAction().actionPerformed(e); - } + protected void actionPerformed(ContentUI<?, ?> ui) { + ContentReferenceUI contentReferenceUI = (ContentReferenceUI) ui; + contentReferenceUI.getHandler().modifyUI(); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/DeleteDataGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/DeleteDataGlobalUIAction.java index 6cc5caf..7dc4a25 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/DeleteDataGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/DeleteDataGlobalUIAction.java @@ -24,12 +24,13 @@ package fr.ird.observe.application.swing.ui.actions.global; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.ObserveMainUI; -import fr.ird.observe.application.swing.ui.actions.global.AbstractGlobalUIAction; import fr.ird.observe.application.swing.ui.content.ContentUI; +import fr.ird.observe.application.swing.ui.content.ref.ContentReferenceUI; import fr.ird.observe.application.swing.ui.content.table.ContentTableUI; import javax.swing.JButton; import java.awt.event.ActionEvent; +import java.util.Objects; /** * Created on 11/11/16. @@ -55,12 +56,19 @@ public class DeleteDataGlobalUIAction extends AbstractGlobalUIAction { if (contentUI instanceof ContentTableUI) { ContentTableUI ui = (ContentTableUI) contentUI; button = ui.getDeleteEntry(); + } else if (contentUI instanceof ContentReferenceUI) { + ContentReferenceUI ui = (ContentReferenceUI) contentUI; + if (ui.getModel().isEditing()) { + button = ui.getDeleteFromDetail(); + } else { + button = ui.getDeleteFromList(); + } } else { button = (JButton) contentUI.getObjectById("delete"); } - if (button != null) { - button.getAction().actionPerformed(e); - } + Objects.requireNonNull(button); + + button.getAction().actionPerformed(e); } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/NewNextDataGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/NewNextDataGlobalUIAction.java index 5730650..8c4ec9a 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/NewNextDataGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/NewNextDataGlobalUIAction.java @@ -28,6 +28,7 @@ import fr.ird.observe.application.swing.ui.actions.global.AbstractGlobalUIAction import fr.ird.observe.application.swing.ui.content.ContentUI; import fr.ird.observe.application.swing.ui.content.list.ContentListUI; import fr.ird.observe.application.swing.ui.content.open.ContentOpenableUI; +import fr.ird.observe.application.swing.ui.content.ref.ContentReferenceUI; import fr.ird.observe.application.swing.ui.content.table.ContentTableUI; import java.awt.event.ActionEvent; @@ -60,6 +61,9 @@ public class NewNextDataGlobalUIAction extends AbstractGlobalUIAction { } else if (contentUI instanceof ContentTableUI) { ContentTableUI ui = (ContentTableUI) contentUI; ui.getNewEntry().getAction().actionPerformed(e); + } else if (contentUI instanceof ContentReferenceUI) { + ContentReferenceUI ui = (ContentReferenceUI) contentUI; + ui.getCreate().getAction().actionPerformed(e); } } diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java index bd8a4a0..b4e0856 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/actions/global/SaveDataGlobalUIAction.java @@ -24,7 +24,6 @@ package fr.ird.observe.application.swing.ui.actions.global; import fr.ird.observe.application.swing.ObserveSwingApplicationContext; import fr.ird.observe.application.swing.ui.ObserveMainUI; -import fr.ird.observe.application.swing.ui.actions.global.AbstractGlobalUIAction; import fr.ird.observe.application.swing.ui.content.ContentUI; import javax.swing.JButton; @@ -44,7 +43,6 @@ public class SaveDataGlobalUIAction extends AbstractGlobalUIAction { super(mainUI, ACTION_NAME, "pressed F5"); } - @Override public void actionPerformed(ActionEvent e) { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/ContentOpenableUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/ContentOpenableUI.jcss index 0769247..28daf2d 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/ContentOpenableUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/open/ContentOpenableUI.jcss @@ -26,10 +26,10 @@ #reset { _observeAction:{ResetEditUIAction.ACTION_NAME}; + _globalAction:{ResetDataGlobalUIAction.ACTION_NAME}; visible:{!model.isReadingMode()}; enabled:{model.isCreatingMode() ? true : model.isModified()}; horizontalTextPosition:{SwingConstants.RIGHT}; - _globalAction:{ResetDataGlobalUIAction.ACTION_NAME}; } #save { diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/ContentReferenceUI.jaxx b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/ContentReferenceUI.jaxx index 35732ba..19de298 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/ContentReferenceUI.jaxx +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/ContentReferenceUI.jaxx @@ -29,10 +29,18 @@ fr.ird.observe.services.dto.referential.ReferentialReference fr.ird.observe.application.swing.decoration.ObserveI18nDecoratorHelper fr.ird.observe.application.swing.ui.UIHelper + fr.ird.observe.application.swing.ui.actions.content.BackToReferentialListUIAction + fr.ird.observe.application.swing.ui.actions.content.CreateNewReferentialUIAction fr.ird.observe.application.swing.ui.actions.content.DeleteReferenceUIAction + fr.ird.observe.application.swing.ui.actions.content.EditReferentialUIAction fr.ird.observe.application.swing.ui.actions.content.ResetEditUIAction fr.ird.observe.application.swing.ui.actions.content.SaveEditUIAction + fr.ird.observe.application.swing.ui.actions.global.DeleteDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.NewNextDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.ResetDataGlobalUIAction + fr.ird.observe.application.swing.ui.actions.global.SaveDataGlobalUIAction + jaxx.runtime.swing.editor.bean.BeanListHeader jaxx.runtime.validator.swing.SwingValidator @@ -145,13 +153,13 @@ viewLayout.addLayoutComponent(editView, DETAIL_VIEW); <Table id="listActions" fill="both" weightx="1" insets="1" visible='{!model.isEditing()}'> <row> <cell> - <JButton id='create' onActionPerformed='getHandler().createUI()'/> + <JButton id='create'/> </cell> <cell> - <JButton id='modify' onActionPerformed='getHandler().modifyUI()'/> + <JButton id='modify' styleClass="edit"/> </cell> <cell> - <JButton id='detail' onActionPerformed='getHandler().modifyUI()'/> + <JButton id='detail' styleClass="edit"/> </cell> <cell> <JButton id='deleteFromList' styleClass='delete'/> diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/ContentReferenceUI.jcss b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/ContentReferenceUI.jcss index e325e6d..15cacec 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/ContentReferenceUI.jcss +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/ContentReferenceUI.jcss @@ -20,6 +20,19 @@ * #L% */ +.edit { + _observeAction:{EditReferentialUIAction.ACTION_NAME}; + enabled:{model.getSelectedBean() != null}; +} + +.delete { + _observeAction:"DeleteReferenceUIAction.ACTION_NAME"; + _globalAction:{DeleteDataGlobalUIAction.ACTION_NAME}; + toolTipText:{deleteToolTip}; + visible:{model.isUpdatingMode()}; + enabled:{model.getSelectedBean() != null}; +} + #model { modified:{getValidator().isChanged()}; valid:{getValidator().isValid()}; @@ -33,7 +46,6 @@ } #viewLayout { - /*useOnlyVisibleComponentDimension:true;*/ selected:{getHandler().updateView(model.isEditing())}; } @@ -58,26 +70,22 @@ } #create { - text:"observe.action.create"; - actionIcon:"add"; - toolTipText:{createToolTip}; + _observeAction:{CreateNewReferentialUIAction.ACTION_NAME}; + _globalAction:{NewNextDataGlobalUIAction.ACTION_NAME}; + _toolTipText:{createToolTip}; visible:{model.isUpdatingMode()}; } #modify { - text:"observe.action.modify"; - actionIcon:"go-detail"; - toolTipText:{modifyToolTip}; + _text:{t("observe.action.modify")}; + _toolTipText:{modifyToolTip}; visible:{model.isUpdatingMode()}; - enabled:{model.getSelectedBean() != null}; } #detail { - text:"observe.action.detail"; + _text:{t("observe.action.detail")}; actionIcon:"go-detail"; - toolTipText:{detailToolTip}; visible:{model.isReadingMode()}; - enabled:{model.getSelectedBean() != null}; } #editTable { @@ -93,28 +101,21 @@ visible:{getHandler().canSeeI18nTable(model.getBean())}; } -.delete { - _observeAction:"DeleteReferenceUIAction.ACTION_NAME"; - toolTipText:{deleteToolTip}; - visible:{model.isUpdatingMode()}; - enabled:{model.getSelectedBean() != null}; -} - -#reset{ +#reset { _observeAction:"ResetEditUIAction.ACTION_NAME"; + _globalAction:{ResetDataGlobalUIAction.ACTION_NAME}; enabled:{model.isModified()}; visible:{model.isUpdatingMode()}; } #save { _observeAction:"SaveEditUIAction.ACTION_NAME"; + _globalAction:{SaveDataGlobalUIAction.ACTION_NAME}; enabled:{model.isModified() && model.isValid()}; } #backToList { - text:"observe.action.back.to.list"; - actionIcon:"go-back"; - toolTipText:"observe.action.back.to.list.tip"; + _observeAction:{BackToReferentialListUIAction.ACTION_NAME}; } #showUsages { @@ -136,4 +137,3 @@ #showTechnicalInformations { enabled:{!model.isCreatingMode() && (model.isEditing() || model.getSelectedBean() != null)}; } - diff --git a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/ContentReferenceUIHandler.java b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/ContentReferenceUIHandler.java index 1e713aa..a727c25 100644 --- a/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/ContentReferenceUIHandler.java +++ b/application-swing/src/main/java/fr/ird/observe/application/swing/ui/content/ref/ContentReferenceUIHandler.java @@ -441,6 +441,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto, U extends Conte if (mode != ContentMode.READ) { //FIXME le binding ne marche pas en init ui.processDataBinding(ContentReferenceUI.BINDING_DELETE_FROM_LIST_ENABLED); + ui.processDataBinding(ContentReferenceUI.BINDING_MODIFY_ENABLED); } } @@ -538,12 +539,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto, U extends Conte validationContext.setEditingReferentielList(data); } -// @Override -// public boolean closeUI() throws Exception { -// return super.closeUI(); -// } - - void createUI() { + public void createUI() { ContentReferenceUI<E, U> ui = getUi(); @@ -560,7 +556,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto, U extends Conte ui.startEdit(null); } - void modifyUI() { + public void modifyUI() { ContentReferenceUIModel<E> model = getModel(); if (model.getMode() != ContentMode.READ) { @@ -607,7 +603,7 @@ public class ContentReferenceUIHandler<E extends ReferentialDto, U extends Conte } } - void backToList() { + public void backToList() { ContentReferenceUIModel<E> model = getModel(); if (!model.isModified() || checkEdit(getUi())) { getUi().stopEdit(); -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm