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() {