r2619 - in isis-fish/trunk: . src/main/java/fr/ifremer/isisfish/datastore src/main/java/fr/ifremer/isisfish/ui src/main/java/fr/ifremer/isisfish/ui/input src/main/java/fr/ifremer/isisfish/ui/simulator
Author: chatellier Date: 2009-09-15 08:24:06 +0000 (Tue, 15 Sep 2009) New Revision: 2619 Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeEvent.java Removed: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/RegionMonitor.java Modified: isis-fish/trunk/changelog.txt isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeListener.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeTabUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx Log: Refactor storage modifications notification (done for regions) Modified: isis-fish/trunk/changelog.txt =================================================================== --- isis-fish/trunk/changelog.txt 2009-09-14 16:15:52 UTC (rev 2618) +++ isis-fish/trunk/changelog.txt 2009-09-15 08:24:06 UTC (rev 2619) @@ -1,5 +1,6 @@ isis-fish (3.2.0.7) stable; urgency=low + * Refactor storage modifications notification (done for regions) * Fix a little trace util object for both Cache and Trace aspect * Add aspect to get rule time (init/pre/post) in simulation summary Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2009-09-14 16:15:52 UTC (rev 2618) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/RegionStorage.java 2009-09-15 08:24:06 UTC (rev 2619) @@ -165,31 +165,15 @@ tx.commitTransaction(); tx.closeContext(); regions.put(toName, this); + + // add storage modification event + fireDataChanged(new StorageChangeEvent(this)); + } catch (TopiaException eee) { throw new StorageException(_("isisfish.error.rename.region", toName), eee); } } - /* - * Retourne le nom courant de la région. - * - * @return Le nom de la region - * @throws StorageException if db problem - * - * @deprecated ne plus utiliser car le context n'est jamais ferme, plutot - * utiliser {@link #getFisheryRegion(TopiaContext)} - * - public FisheryRegion getFisheryRegion() throws StorageException { - try { - TopiaContext tx = getStorage().beginTransaction(); - FisheryRegion result = getFisheryRegion(tx); - tx.commitTransaction(); - return result; - } catch (TopiaException eee) { - throw new StorageException(_("isisfish.error.get.fisheryRegion"), eee); - } - }*/ - public File getMapRepository() { File result = new File(getDirectory(), MAP_DIRECTORY); return result; @@ -214,6 +198,9 @@ tx.commitTransaction(); tx.closeContext(); } + + // add storage modification event + fireDataChanged(new StorageChangeEvent(region)); } return region; } @@ -303,6 +290,10 @@ } regions.put(name, result); + + // add storage modification event + fireDataChanged(new StorageChangeEvent(result)); + return result; } @@ -312,6 +303,10 @@ @Override public void delete(boolean cvsDelete) throws StorageException { super.delete(cvsDelete); + + // add storage modification event + fireDataChanged(new StorageChangeEvent(this)); + regions.remove(getName()); } @@ -453,6 +448,9 @@ } } + // add storage modification event + fireDataChanged(new StorageChangeEvent(result)); + return result; } catch (TopiaException eee) { throw new StorageException(_("isisfish.error.import.file", file), eee); Added: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeEvent.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeEvent.java (rev 0) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeEvent.java 2009-09-15 08:24:06 UTC (rev 2619) @@ -0,0 +1,45 @@ +/* *##% + * Copyright (C) 2009 Code Lutin + * + * 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 2 + * 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, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + *##%*/ + +package fr.ifremer.isisfish.datastore; + +import java.util.EventObject; + +/** + * Event change on storage. + * + * @author chatellier + * @version $Revision$ + * + * Last update : $Date$ + * By : $Author$ + */ +public class StorageChangeEvent extends EventObject { + + /** serialVersionUID. */ + private static final long serialVersionUID = 1526286543413553975L; + + /** + * Constructs a StorageChangeEvent. + * + * @param source + */ + public StorageChangeEvent(VersionStorage source) { + super(source); + } +} Property changes on: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeEvent.java ___________________________________________________________________ Added: svn:keywords + "Author Date Id Revision HeadURL" Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeListener.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeListener.java 2009-09-14 16:15:52 UTC (rev 2618) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/StorageChangeListener.java 2009-09-15 08:24:06 UTC (rev 2619) @@ -18,7 +18,6 @@ package fr.ifremer.isisfish.datastore; -import java.awt.Event; import java.util.EventListener; /** @@ -42,5 +41,5 @@ * * @param e event to fire */ - void versionDataChanged(Event e); + void versionDataChanged(StorageChangeEvent e); } Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2009-09-14 16:15:52 UTC (rev 2618) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/datastore/VersionStorage.java 2009-09-15 08:24:06 UTC (rev 2619) @@ -21,7 +21,6 @@ import static org.codelutin.i18n.I18n._; -import java.awt.Event; import java.io.File; import java.util.ArrayList; import java.util.Collections; @@ -325,9 +324,9 @@ * * @param event event to fire */ - protected static void fireDataChanged(Event event) { + protected static void fireDataChanged(StorageChangeEvent event) { try { - changeListeners.fire("dataChanged", event); + changeListeners.fire("versionDataChanged", event); } catch (Exception e) { if (log.isErrorEnabled()) { log.error("Can't fire data change event", e); Deleted: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/RegionMonitor.java =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/RegionMonitor.java 2009-09-14 16:15:52 UTC (rev 2618) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/RegionMonitor.java 2009-09-15 08:24:06 UTC (rev 2619) @@ -1,73 +0,0 @@ -/* *##% - * Copyright (C) 2009 Ifremer, Code Lutin - * - * 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 2 - * 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, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - *##%*/ - -package fr.ifremer.isisfish.ui; - -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; - -/** - * Class to listen for region change. - * - * For adding region, removing region... - * - * @author letellier - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ - * - * @deprecated use {@link fr.ifremer.isisfish.datastore.VersionStorage#fireDataChanged(java.awt.Event)} instead - */ - at Deprecated -public class RegionMonitor { - - /** pour le support des modifications de propriétés. */ - protected final PropertyChangeSupport pcs; - - protected boolean regionChanged = false; - - protected static String REGION_PROPERTY = "regionChanged"; - - public RegionMonitor() { - this.pcs = new PropertyChangeSupport(this); - } - - public void changeRegion() { - setRegionChanged(!regionChanged); - } - - protected boolean isRegionChanged() { - return regionChanged; - } - - protected void setRegionChanged(boolean regionChanged) { - boolean oldValue = this.regionChanged; - this.regionChanged = regionChanged; - pcs.firePropertyChange(REGION_PROPERTY, oldValue, this.regionChanged); - } - - public void addRegionPropertyChangeListener(PropertyChangeListener listener) { - pcs.addPropertyChangeListener(REGION_PROPERTY, listener); - } - - public void removeRegionPropertyChangeListener( - PropertyChangeListener listener) { - pcs.removePropertyChangeListener(REGION_PROPERTY, listener); - } -} Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeTabUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeTabUI.jaxx 2009-09-14 16:15:52 UTC (rev 2618) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeTabUI.jaxx 2009-09-15 08:24:06 UTC (rev 2619) @@ -24,8 +24,6 @@ import jaxx.runtime.JAXXInitialContext; import fr.ifremer.isisfish.ui.input.InputAction; import fr.ifremer.isisfish.ui.input.InputSaveVerifier; - - protected RegionMonitor regionMonitor = getContextValue(RegionMonitor.class); // chatellier already done in SimulAction constructor //simulUI.getContextValue(SimulAction.class).init(); @@ -42,13 +40,13 @@ </script> <JTabbedPane id="simulTabs" tabPlacement='{JTabbedPane.LEFT}' constraints="BorderLayout.CENTER"> <tab title=' ' icon='{new ImageIcon(getClass().getResource("/images/book.gif"))}'> - <fr.ifremer.isisfish.ui.input.InputUI id='inputUI' constructorParams='new JAXXInitialContext().add(regionMonitor).add(getContextValue(WelcomeSaveVerifier.class)).add(new InputAction()).add(new InputSaveVerifier()).add(this)'/> + <fr.ifremer.isisfish.ui.input.InputUI id='inputUI' constructorParams='new JAXXInitialContext().add(getContextValue(WelcomeSaveVerifier.class)).add(new InputAction()).add(new InputSaveVerifier()).add(this)'/> </tab> <tab title=' ' icon='{new ImageIcon(getClass().getResource("/images/simulation.gif"))}'> - <fr.ifremer.isisfish.ui.simulator.SimulUI id='simulUI' constructorParams='new JAXXInitialContext().add(regionMonitor).add(new SimulAction()).add(this)'/> + <fr.ifremer.isisfish.ui.simulator.SimulUI id='simulUI' constructorParams='new JAXXInitialContext().add(new SimulAction()).add(this)'/> </tab> <tab title=' ' icon='{new ImageIcon(getClass().getResource("/images/sensitivities.gif"))}'> - <fr.ifremer.isisfish.ui.sensitivity.SensitivityUI id="sensitivityUI" constructorParams='new JAXXInitialContext().add(regionMonitor).add(new InputAction()).add(new InputSaveVerifier()).add(new SimulAction()).add(this)'/> + <fr.ifremer.isisfish.ui.sensitivity.SensitivityUI id="sensitivityUI" constructorParams='new JAXXInitialContext().add(new InputAction()).add(new InputSaveVerifier()).add(new SimulAction()).add(this)'/> </tab> <tab title=' ' icon='{new ImageIcon(getClass().getResource("/images/calc.gif"))}'> <fr.ifremer.isisfish.ui.result.ResultView/> Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx 2009-09-14 16:15:52 UTC (rev 2618) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/WelcomeUI.jaxx 2009-09-15 08:24:06 UTC (rev 2619) @@ -43,11 +43,10 @@ Map<JFrame, WelcomePanelUI> allFrameOpened; WelcomeSaveVerifier verifier = new WelcomeSaveVerifier(); - RegionMonitor regionMonitor = new RegionMonitor(); - setContextValue(regionMonitor); + setContextValue(verifier); allFrameOpened = new java.util.HashMap<JFrame, WelcomePanelUI>(); - welcomePanelUI.setContent(new WelcomeTabUI(new JAXXInitialContext().add(getVerifier()).add(regionMonitor))); + welcomePanelUI.setContent(new WelcomeTabUI(new JAXXInitialContext().add(getVerifier()))); // increase tooltip display time ToolTipManager toolTipManager = ToolTipManager.sharedInstance(); @@ -57,7 +56,7 @@ protected void openFrame(Container c, String title) { JFrame f = new JFrame(); f.setLayout(new BorderLayout()); - WelcomePanelUI welcome = new WelcomePanelUI(new JAXXInitialContext().add(verifier).add(regionMonitor).add(this)); + WelcomePanelUI welcome = new WelcomePanelUI(new JAXXInitialContext().add(verifier).add(this)); welcome.setContent(c); f.add(welcome, BorderLayout.CENTER); f.setTitle(title); @@ -140,11 +139,11 @@ <JMenuItem text="isisfish.welcome.menu.close" onActionPerformed='close()'/> </JMenu> <JMenu text="isisfish.welcome.menu.frame"> - <JMenuItem text="isisfish.welcome.menu.simulation" onActionPerformed='openFrame(new SimulUI(new JAXXInitialContext().add(new SimulAction()).add(regionMonitor).add(this)), _("isisfish.simulation.title"))'/> + <JMenuItem text="isisfish.welcome.menu.simulation" onActionPerformed='openFrame(new SimulUI(new JAXXInitialContext().add(new SimulAction()).add(this)), _("isisfish.simulation.title"))'/> <JMenuItem text="isisfish.welcome.menu.result" onActionPerformed='openFrame(new ResultView(), _("isisfish.result.title"))'/> - <JMenuItem text="isisfish.welcome.menu.input" onActionPerformed='openFrame(new InputUI(new JAXXInitialContext().add(verifier).add(regionMonitor).add(new InputAction()).add(new InputSaveVerifier()).add(this)), _("isisfish.input.title"))'/> + <JMenuItem text="isisfish.welcome.menu.input" onActionPerformed='openFrame(new InputUI(new JAXXInitialContext().add(verifier).add(new InputAction()).add(new InputSaveVerifier()).add(this)), _("isisfish.input.title"))'/> <JMenuItem text="isisfish.welcome.menu.script" onActionPerformed='openFrame(new ScriptUI(), _("isisfish.script.title"))'/> - <JMenuItem text="isisfish.sensitivity.title" onActionPerformed='openFrame(new SensitivityUI(new JAXXInitialContext().add(regionMonitor).add(new InputAction()).add(new InputSaveVerifier()).add(new SimulAction()).add(this)), _("isisfish.sensitivity.title"))'/> + <JMenuItem text="isisfish.sensitivity.title" onActionPerformed='openFrame(new SensitivityUI(new JAXXInitialContext().add(new InputAction()).add(new InputSaveVerifier()).add(new SimulAction()).add(this)), _("isisfish.sensitivity.title"))'/> <JSeparator/> <JMenuItem text="isisfish.welcome.menu.queue" onActionPerformed='openFrame(new QueueUI(), _("isisfish.queue.title"))'/> </JMenu> Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx 2009-09-14 16:15:52 UTC (rev 2618) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/input/InputUI.jaxx 2009-09-15 08:24:06 UTC (rev 2619) @@ -31,27 +31,32 @@ <fr.ifremer.isisfish.entities.FisheryRegionImpl id='region' javaBean='null'/> <script><![CDATA[ +import fr.ifremer.isisfish.datastore.RegionStorage; +import fr.ifremer.isisfish.datastore.StorageChangeEvent; +import fr.ifremer.isisfish.datastore.StorageChangeListener; +import fr.ifremer.isisfish.entities.FisheryRegionImpl; import fr.ifremer.isisfish.ui.Common; import fr.ifremer.isisfish.ui.WelcomeSaveVerifier; import fr.ifremer.isisfish.ui.WelcomePanelUI; -import fr.ifremer.isisfish.ui.RegionMonitor; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreePath; import jaxx.runtime.swing.navigation.NavigationTreeModel.NavigationTreeNode; import jaxx.runtime.swing.navigation.NavigationUtil; -import fr.ifremer.isisfish.entities.FisheryRegionImpl; import jaxx.runtime.swing.navigation.NavigationTreeModel; import org.codelutin.topia.TopiaContext; -import fr.ifremer.isisfish.datastore.RegionStorage; getContextValue(WelcomeSaveVerifier.class).addSaveVerifier(getVerifier()); + new fr.ifremer.isisfish.ui.input.InputNavigationTreeSelectionAdapter(this); -getContextValue(RegionMonitor.class).addRegionPropertyChangeListener(new PropertyChangeListener() { + +StorageChangeListener regionStorageListener; +regionStorageListener = new StorageChangeListener() { @Override - public void propertyChange(PropertyChangeEvent evt) { + public void versionDataChanged(StorageChangeEvent e) { setFieldCurrentRegionModel(); } -}); +}; +RegionStorage.addStorageChangeListener(regionStorageListener); protected InputAction getAction() { return getContextValue(InputAction.class); @@ -152,14 +157,10 @@ WelcomePanelUI root = getParentContainer(WelcomePanelUI.class); root.setStatusMessage(s, running); } -protected void regionChange() { - getContextValue(RegionMonitor.class).changeRegion(); -} protected void newRegion() { String name = fieldNewRegion.getText(); setStatusMessage(_("isisfish.message.creating.region", name), true); getContextValue(InputAction.class).newRegion(name); - regionChange(); fieldCurrentRegion.setSelectedItem(name); JButtonNewRegion.setEnabled(false); fieldNewRegion.setText(""); @@ -176,23 +177,19 @@ protected void importRegion() { setStatusMessage(_("isisfish.message.import.zip"), true); getContextValue(InputAction.class).importRegion(); - regionChange(); setStatusMessage(_("isisfish.message.import.finished")); } protected void importRegionAndRename() { setStatusMessage(_("isisfish.message.import.zip"), true); getContextValue(InputAction.class).importRegionAndRename(); - regionChange(); setStatusMessage(_("isisfish.message.import.finished")); } protected void importV2Region() { setStatusMessage(_("isisfish.message.import.xml.v2.file") + getContextValue(InputAction.class).importV2Region(), true); - regionChange(); setStatusMessage(_("isisfish.message.import.finished")); } protected void importRegionFromSimulation() { setStatusMessage(_("isisfish.message.import", getContextValue(InputAction.class).importRegionFromSimulation()), true); - regionChange(); setStatusMessage(_("isisfish.message.export.done")); } protected void exportRegion() { @@ -201,13 +198,11 @@ } protected void copyRegion() { setStatusMessage(_("isisfish.message.copy.region", getContextValue(InputAction.class).copyRegion(getRegionStorage())), true); - regionChange(); setStatusMessage(_("isisfish.message.copy.finished")); } protected void removeRegion() { setStatusMessage(_("isisfish.message.removing.region", getRegionStorage().getName()), true); setStatusMessage(getContextValue(InputAction.class).removeRegion(getRegionStorage(), false)); - regionChange(); regionNull(); } protected void commitRegionInCVS() { Modified: isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx =================================================================== --- isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2009-09-14 16:15:52 UTC (rev 2618) +++ isis-fish/trunk/src/main/java/fr/ifremer/isisfish/ui/simulator/ParamsUI.jaxx 2009-09-15 08:24:06 UTC (rev 2619) @@ -26,6 +26,8 @@ import org.codelutin.topia.TopiaContext; import java.text.ParseException; import fr.ifremer.isisfish.datastore.RegionStorage; +import fr.ifremer.isisfish.datastore.StorageChangeEvent; +import fr.ifremer.isisfish.datastore.StorageChangeListener; import fr.ifremer.isisfish.datastore.StorageException; import fr.ifremer.isisfish.entities.Population; import fr.ifremer.isisfish.entities.Strategy; @@ -34,7 +36,6 @@ import fr.ifremer.isisfish.ui.Common; import fr.ifremer.isisfish.ui.WelcomePanelUI; import fr.ifremer.isisfish.ui.WelcomeTabUI; -import fr.ifremer.isisfish.ui.RegionMonitor; import fr.ifremer.isisfish.ui.models.rule.RuleComboModel; import fr.ifremer.isisfish.ui.models.rule.RuleComboRenderer; import fr.ifremer.isisfish.ui.models.rule.RuleListCellRenderer; @@ -51,14 +52,16 @@ // instances variables déclaration SimulationServiceListener simulationListener; +StorageChangeListener regionStorageListener; SimulAction simulAction = getContextValue(SimulAction.class); -getContextValue(RegionMonitor.class).addRegionPropertyChangeListener(new PropertyChangeListener() { +regionStorageListener = new StorageChangeListener() { @Override - public void propertyChange(PropertyChangeEvent evt) { + public void versionDataChanged(StorageChangeEvent e) { fieldSimulParamsRegion.setModel(new DefaultComboBoxModel(Common.getRegionItem())); } -}); +}; +RegionStorage.addStorageChangeListener(regionStorageListener); // end constructor code simulationListener = new SimulationServiceListener() {
participants (1)
-
chatellier@users.labs.libre-entreprise.org