Author: chatellier Date: 2009-06-05 13:33:16 +0000 (Fri, 05 Jun 2009) New Revision: 2328 Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/GearUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/StrategyUI.jaxx Log: Improve Tab Swaping perfs. Add only one change listener per tab pane. Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/GearUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/GearUI.jaxx 2009-06-05 13:20:47 UTC (rev 2327) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/GearUI.jaxx 2009-06-05 13:33:16 UTC (rev 2328) @@ -20,19 +20,17 @@ <fr.ifremer.isisfish.ui.input.InputContentUI> <script><![CDATA[ -import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabbedPaneListener; - // constructor code setButtonTitle(_("isisfish.input.continueMetiers")); setNextPath("$root/$metiers"); @Override public void refresh() { - if (isSensitivity()) { - gearTab.addChangeListener(new SensitivityTabbedPaneListener()); - } else { - gearTab.addChangeListener(new InputTabbedPaneListener()); - } + + // install change listener + // (depends on sensitivity can't be done on constructor) + installChangeListener(gearTab); + getVerifier().addCurrentPanel(selectivityUI, gearTabUI); } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2009-06-05 13:20:47 UTC (rev 2327) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputContentUI.jaxx 2009-06-05 13:33:16 UTC (rev 2328) @@ -63,7 +63,10 @@ import fr.ifremer.isisfish.ui.util.UtilsUI; import fr.ifremer.isisfish.ui.sensitivity.FactorWizardUI; import fr.ifremer.isisfish.ui.sensitivity.EditorHelper; +import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabbedPaneListener; +protected ChangeListener tabbedPaneChangeListener; + /** * This method is UI entry point. * @@ -150,6 +153,30 @@ } } +/** + * Install tabbed pane change listener depending on sensitivity. + * (init at first call) + * + * @param tabbedPane tabbed pane to install change listener + */ +protected void installChangeListener(JTabbedPane tabbedPane) { + + // remove already registred listeners + for (ChangeListener changeListener : tabbedPane.getChangeListeners()) { + tabbedPane.removeChangeListener(changeListener); + } + + if (tabbedPaneChangeListener == null) { + if (isSensitivity()) { + tabbedPaneChangeListener = new SensitivityTabbedPaneListener(); + } else { + tabbedPaneChangeListener = new InputTabbedPaneListener(); + } + } + + tabbedPane.addChangeListener(tabbedPaneChangeListener); +} + ]]></script> <JPanel id='body' constraints='BorderLayout.CENTER'/> <JButton id='next' text='{getButtonTitle()}' constraints='BorderLayout.SOUTH' visible='{getNextPath() != null}' onActionPerformed='goTo()'/> Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierUI.jaxx 2009-06-05 13:20:47 UTC (rev 2327) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/MetierUI.jaxx 2009-06-05 13:33:16 UTC (rev 2328) @@ -20,20 +20,17 @@ <fr.ifremer.isisfish.ui.input.InputContentUI> <script><![CDATA[ -import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabbedPaneListener; - -//getVerifier().addCurrentPanel(this); +// Constructor code setButtonTitle(_("isisfish.input.continueTripTypes")); setNextPath("$root/$tripTypes"); @Override public void refresh() { - if (isSensitivity()) { - metierTab.addChangeListener(new SensitivityTabbedPaneListener()); - } else { - metierTab.addChangeListener(new InputTabbedPaneListener()); - } - + + // install change listener + // (depends on sensitivity c'ant be done on constructor) + installChangeListener(metierTab); + // add tab in reverse order // metierTabUI at last, for this tab refresh at end, and save/cancel button linked to // entity change Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationUI.jaxx 2009-06-05 13:20:47 UTC (rev 2327) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/PopulationUI.jaxx 2009-06-05 13:33:16 UTC (rev 2328) @@ -26,23 +26,25 @@ <script><![CDATA[ import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabbedPaneListener; -//getVerifier().addCurrentPanel(this); setButtonTitle(_("isisfish.input.continueGears")); setNextPath("$root/$gears"); @Override public void refresh() { - if (isSensitivity()) { - populationTab.addChangeListener(new SensitivityTabbedPaneListener()); - } else { - populationTab.addChangeListener(new InputTabbedPaneListener()); - } - getVerifier().addCurrentPanel(populationMigrationUI, populationRecruitementUI, populationCapturabilityUI, populationSeasonsUI, populationZoneUI, populationEquationUI, populationGroupUI, populationBasicsUI); + + // install change listener + // (depends on sensitivity can't be done on constructor) + installChangeListener(populationTab); + + // reverse ordre is no more needed + getVerifier().addCurrentPanel(populationMigrationUI, populationRecruitementUI, populationCapturabilityUI, + populationSeasonsUI, populationZoneUI, populationEquationUI, populationGroupUI, populationBasicsUI); } @Override public void setActionButtons() { - + // active les bouton sur le premier onglet + populationBasicsUI.setActionButtons(); } ]]> </script> Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsUI.jaxx 2009-06-05 13:20:47 UTC (rev 2327) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/SetOfVesselsUI.jaxx 2009-06-05 13:33:16 UTC (rev 2328) @@ -21,19 +21,17 @@ <fr.ifremer.isisfish.ui.input.InputContentUI> <script><![CDATA[ -import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabbedPaneListener; - setButtonTitle(_("isisfish.input.continueStrategies")); setNextPath("$root/$strategies"); //getVerifier().addCurrentPanel(this); @Override public void refresh() { - if (isSensitivity()) { - setOfVesselsTab.addChangeListener(new SensitivityTabbedPaneListener()); - } else { - setOfVesselsTab.addChangeListener(new InputTabbedPaneListener()); - } + + // install change listener + // (depends on sensitivity can't be done on constructor) + installChangeListener(setOfVesselsTab); + getVerifier().addCurrentPanel(effortDescriptionUI, setOfVesselsTabsUI); } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/StrategyUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/StrategyUI.jaxx 2009-06-05 13:20:47 UTC (rev 2327) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/StrategyUI.jaxx 2009-06-05 13:33:16 UTC (rev 2328) @@ -20,18 +20,13 @@ <fr.ifremer.isisfish.ui.input.InputContentUI> <script><![CDATA[ -import fr.ifremer.isisfish.ui.sensitivity.SensitivityTabbedPaneListener; - -// is this add needed ? -//getVerifier().addCurrentPanel(this); - @Override public void refresh() { - if (isSensitivity()) { - strategyTab.addChangeListener(new SensitivityTabbedPaneListener()); - } else { - strategyTab.addChangeListener(new InputTabbedPaneListener()); - } + + // install change listener + // (depends on sensitivity can't be done on constructor) + installChangeListener(strategyTab); + getVerifier().addCurrentPanel(strategyMonthInfoUI, strategyTabUI); }