Simexplorer-si-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
February 2008
- 2 participants
- 701 discussions
r1225 - in trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions: . history util
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
24 Feb '08
Author: tchemit
Date: 2008-02-24 23:20:32 +0000 (Sun, 24 Feb 2008)
New Revision: 1225
Modified:
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CloseTabAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CollapseAllAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExpandAllAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAddAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ToggleTabAbstractAction.java
Log:
mise en place log d'action
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CloseTabAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CloseTabAction.java 2008-02-24 23:20:12 UTC (rev 1224)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CloseTabAction.java 2008-02-24 23:20:32 UTC (rev 1225)
@@ -49,6 +49,11 @@
}
@Override
+ protected void setStatus(String status) {
+ // no log
+ }
+
+ @Override
protected boolean beforeAction(ActionEvent e) throws Exception {
return super.beforeAction(e) && getTabContainer().getTabCount() > 0 && getTab().isTabVisible(getTabContainer());
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CollapseAllAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CollapseAllAction.java 2008-02-24 23:20:12 UTC (rev 1224)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CollapseAllAction.java 2008-02-24 23:20:32 UTC (rev 1225)
@@ -50,6 +50,11 @@
}
@Override
+ protected void setStatus(String status) {
+ // no log
+ }
+
+ @Override
public String getI18nToolTipText() {
return "simexplorer.action.collapseAll.tooltip";
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java 2008-02-24 23:20:12 UTC (rev 1224)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java 2008-02-24 23:20:32 UTC (rev 1225)
@@ -103,7 +103,7 @@
SynchronizeTabModel model = getSynchronizeModel();
- model.reloadSources(getContext(), uuid, !remote,remote,!remote,remote);
+ model.reloadSources(uuid, !remote,remote,!remote,remote);
}
// suppression de l'élément de l'historique (si present)
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExpandAllAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExpandAllAction.java 2008-02-24 23:20:12 UTC (rev 1224)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExpandAllAction.java 2008-02-24 23:20:32 UTC (rev 1225)
@@ -51,6 +51,11 @@
}
@Override
+ protected void setStatus(String status) {
+ // no log
+ }
+
+ @Override
public String getI18nToolTipText() {
return "simexplorer.action.expandAll.tooltip";
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java 2008-02-24 23:20:12 UTC (rev 1224)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java 2008-02-24 23:20:32 UTC (rev 1225)
@@ -157,7 +157,7 @@
if (SimExplorerTab.synchronize.isTabVisible(getTabContainer())) {
SynchronizeTabModel model = getSynchronizeModel();
- model.reloadSources(getContext(), uuid, false,false,remote,!remote);
+ model.reloadSources(uuid, false,false,remote,!remote);
}
// suppression de l'élément de l'historique (si present)
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java 2008-02-24 23:20:12 UTC (rev 1224)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java 2008-02-24 23:20:32 UTC (rev 1225)
@@ -19,6 +19,7 @@
package fr.cemagref.simexplorer.is.ui.swing.actions;
import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
+import fr.cemagref.simexplorer.is.ui.swing.actions.util.SelectedAction;
import fr.cemagref.simexplorer.is.ui.swing.actions.util.ShowTabAbstractAction;
import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel;
import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode;
@@ -47,7 +48,7 @@
mnemonic = 'S',
hideActionText = true
)
-public class ShowSynchronizeTabAction extends ShowTabAbstractAction<JSynchronizeTab, SynchronizeTabModel> {
+public class ShowSynchronizeTabAction extends ShowTabAbstractAction<JSynchronizeTab, SynchronizeTabModel> implements SelectedAction {
protected DataEntityModel selected;
@@ -68,11 +69,17 @@
}
@Override
+ protected void setStatus(String status) {
+ // no log
+ }
+ @Override
protected boolean beforeAction(ActionEvent e) throws Exception {
if (!super.beforeAction(e)) {
return false;
}
- selected = findSelectedItem(e);
+ if (selected == null) {
+ selected = findSelectedItem(e);
+ }
boolean selectedUuid = selected != null && selected.getUuid() != null;
if (!selectedUuid) {
return false;
@@ -112,20 +119,20 @@
super.disposeUI();
JSynchronizeTab ui = getTabUI();
if (navigationActionsLocalListener != null) {
- ui.getTree(false).removeTreeSelectionListener(navigationActionsLocalListener );
- navigationActionsLocalListener=null;
+ ui.getTree(false).removeTreeSelectionListener(navigationActionsLocalListener);
+ navigationActionsLocalListener = null;
}
- if (navigationActionsRemoteListener!= null) {
+ if (navigationActionsRemoteListener != null) {
ui.getTree(false).removeTreeSelectionListener(navigationActionsRemoteListener);
- navigationActionsRemoteListener=null;
+ navigationActionsRemoteListener = null;
}
- if (navigationLocalListener!= null) {
+ if (navigationLocalListener != null) {
ui.getTree(true).removeTreeSelectionListener(navigationLocalListener);
- navigationLocalListener=null;
+ navigationLocalListener = null;
}
if (navigationActionsRemoteListener != null) {
- ui.getTree(true).removeTreeSelectionListener(navigationActionsRemoteListener );
- navigationActionsRemoteListener =null;
+ ui.getTree(true).removeTreeSelectionListener(navigationActionsRemoteListener);
+ navigationActionsRemoteListener = null;
}
}
@@ -136,6 +143,10 @@
sources = null;
}
+ public void setSelected(DataEntityModel selected) {
+ this.selected = selected;
+ }
+
/**
* Listen on selection of node in a tree, and refresh navigation actions.
*
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAddAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAddAction.java 2008-02-24 23:20:12 UTC (rev 1224)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAddAction.java 2008-02-24 23:20:32 UTC (rev 1225)
@@ -50,6 +50,11 @@
super(name);
}
+ @Override
+ protected void setStatus(String status) {
+ // no log
+ }
+
protected boolean hasHistoryEntry(HistoryModel<EntityTreeNode> model) {
// cette action doit toujours être configurée avant lancement
if (selected==null) {
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java 2008-02-24 23:20:12 UTC (rev 1224)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java 2008-02-24 23:20:32 UTC (rev 1225)
@@ -61,6 +61,11 @@
}
@Override
+ protected void setStatus(String status) {
+ // no log
+ }
+
+ @Override
protected boolean beforeAction(ActionEvent e) throws Exception {
super.beforeAction(e);
JTabbedPane tabbedPane = getTabContainer();
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractAction.java 2008-02-24 23:20:12 UTC (rev 1224)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractAction.java 2008-02-24 23:20:32 UTC (rev 1225)
@@ -32,6 +32,7 @@
import jaxx.runtime.JAXXObject;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import static org.codelutin.i18n.I18n._;
import javax.swing.JComponent;
import java.awt.event.ActionEvent;
@@ -64,8 +65,8 @@
log.debug(getActionName() + " (treate:" + accepted + ") : " + this);
}
if (accepted) {
- setStatus(toString());
doAction(e);
+ setStatus(_("simexplorer.action.done",getName()));
updateUI();
}
} catch (Exception e1) {
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ToggleTabAbstractAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ToggleTabAbstractAction.java 2008-02-24 23:20:12 UTC (rev 1224)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ToggleTabAbstractAction.java 2008-02-24 23:20:32 UTC (rev 1225)
@@ -43,6 +43,11 @@
}
@Override
+ protected void setStatus(String status) {
+ // no log
+ }
+
+ @Override
protected boolean beforeAction(ActionEvent e) throws Exception {
super.beforeAction(e);
// find real action to perform
1
0
r1224 - in trunk/simexplorer-is/simexplorer-is-swing/src: java/fr/cemagref/simexplorer/is/ui/swing java/fr/cemagref/simexplorer/is/ui/swing/actions java/fr/cemagref/simexplorer/is/ui/swing/model java/fr/cemagref/simexplorer/is/ui/swing/ui resources/i18n
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
24 Feb '08
Author: tchemit
Date: 2008-02-24 23:20:12 +0000 (Sun, 24 Feb 2008)
New Revision: 1224
Modified:
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/StorageServiceHelper.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ImportElementAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerMainUI.java
trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-en_GB.properties
trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-fr_FR.properties
Log:
mise en place import
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/StorageServiceHelper.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/StorageServiceHelper.java 2008-02-24 21:34:08 UTC (rev 1223)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/StorageServiceHelper.java 2008-02-24 23:20:12 UTC (rev 1224)
@@ -170,11 +170,13 @@
}
}
- public static void importElement(SimExplorerContext context, boolean remote, File file) {
+ public static MetaData importElement(SimExplorerContext context, boolean remote, File file) {
try {
SerializableInputStream zipStream;
zipStream = new SerializableInputStream(new FileInputStream(file));
- getService(context, remote).saveElement(context.getToken(), zipStream);
+ MetaData result;
+ result = getService(context, remote).saveElement(context.getToken(), zipStream);
+ return result;
} catch (Exception e) {
throw new SimExplorerRuntimeException(e);
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ImportElementAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ImportElementAction.java 2008-02-24 21:34:08 UTC (rev 1223)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ImportElementAction.java 2008-02-24 23:20:12 UTC (rev 1224)
@@ -19,9 +19,14 @@
package fr.cemagref.simexplorer.is.ui.swing.actions;
import fr.cemagref.simexplorer.is.ui.swing.ui.ImportDialog;
+import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab;
import fr.cemagref.simexplorer.is.ui.swing.StorageServiceHelper;
+import fr.cemagref.simexplorer.is.ui.swing.SimExplorerActionManager;
import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractTabAction;
import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
+import fr.cemagref.simexplorer.is.ui.swing.model.SynchronizeTabModel;
+import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel;
+import fr.cemagref.simexplorer.is.entities.metadata.MetaData;
import static org.codelutin.i18n.I18n._;
import static org.codelutin.i18n.I18n.n_;
@@ -60,6 +65,9 @@
}
public void disposeUI() {
+ if (ui!=null) {
+ ui.dispose();
+ }
ui = null;
}
@@ -77,15 +85,24 @@
@Override
protected void doAction(ActionEvent e) throws Exception {
- StorageServiceHelper.importElement(getContext(), remote, f);
- }
+ MetaData result = StorageServiceHelper.importElement(getContext(), remote, f);
- @Override
- public void updateUI() {
- super.updateUI();
- //TODO should invalidate the 'remote' list
- //TODO look if detail history is touch by this modification
- //TODO look if synchronize is touched by this modification
+ DataEntityModel selected = new DataEntityModel();
+ selected.synch(remote,result);
+
+ // reload the list
+ getListModel(remote).reload();
+
+
+ if (SimExplorerTab.synchronize.isTabVisible(getTabContainer())) {
+ SynchronizeTabModel model = getSynchronizeModel();
+
+ model.reloadSources(selected.getUuid(), false,false,!remote,remote);
+ }
+
+ // suppression de l'élément de l'historique (si present)
+
+ SimExplorerActionManager.fireSelectedAction("historyDelete", e.getSource(), selected);
}
@Override
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java 2008-02-24 21:34:08 UTC (rev 1223)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java 2008-02-24 23:20:12 UTC (rev 1224)
@@ -148,7 +148,7 @@
localRootNode = remoteRootNode = null;
}
- public void reloadSources(SimExplorerContext context, String uuid, boolean deleteLocal, boolean deleteRemote, boolean treateLocal, boolean treateRemote) {
+ public void reloadSources(String uuid, boolean deleteLocal, boolean deleteRemote, boolean treateLocal, boolean treateRemote) {
LoggableElement[] result = new LoggableElement[2];
result[0] =loadSource(context, uuid, deleteLocal, treateLocal, false);
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerMainUI.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerMainUI.java 2008-02-24 21:34:08 UTC (rev 1223)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerMainUI.java 2008-02-24 23:20:12 UTC (rev 1224)
@@ -25,16 +25,16 @@
import fr.cemagref.simexplorer.is.ui.swing.SimExplorerActionManager;
import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext;
import fr.cemagref.simexplorer.is.ui.swing.actions.ExportElementAction;
+import fr.cemagref.simexplorer.is.ui.swing.actions.util.ChangeLocaleAction;
import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractAction;
-import fr.cemagref.simexplorer.is.ui.swing.actions.util.ChangeLocaleAction;
+import static org.codelutin.i18n.I18n._;
import org.codelutin.i18n.LocaleEnum;
-import static org.codelutin.i18n.I18n.*;
import javax.swing.AbstractButton;
+import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
-import javax.swing.JComboBox;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.util.regex.Matcher;
@@ -48,7 +48,7 @@
/** l'ui principale de l'application */
public static SimExplorerMainUI ui;
-
+
public DetailTabUpdater detailUpdater;
public ListTabUpdater localUpdater;
public ListTabUpdater remoteUpdater;
@@ -83,18 +83,20 @@
ui = null;
}
- public void setStatus(final String msg) {
+ MyRunnable runnable;
- Runnable runnable = new Runnable() {
- public void run() {
- //TODO il faut enlever le synchronize dans statusBar
- //getStatusBar().setStatus(msg);
- //System.out.println(msg);
- }
- };
- SwingUtilities.invokeLater(runnable);
+ private MyRunnable getRunnable(String msg) {
+ if (runnable == null) {
+ runnable = new MyRunnable();
+ }
+ runnable.setMsg(msg);
+ return runnable;
}
+ public void setStatus(final String msg) {
+ SwingUtilities.invokeLater(getRunnable(msg));
+ }
+
protected SimExplorerMainUI() {
super();
finalizeInit(SimExplorer.getContext());
@@ -137,7 +139,7 @@
AbstractButton button = (AbstractButton) getObjectById(actionName);
ChangeLocaleAction action = (ChangeLocaleAction) button.getAction();
boolean enable = !action.equalsLocale(locale);
- UpdateButton(button,enable, enable?action.getLocale():null);
+ UpdateButton(button, enable, enable ? action.getLocale() : null);
//button.setEnabled(enable);
}
}
@@ -161,11 +163,11 @@
public static void DisableButton(AbstractButton... buttons) {
for (AbstractButton button : buttons) {
UpdateButton(button, false);
- }
+ }
}
public static void EnableButton(AbstractButton button, Object... params) {
- UpdateButton(button,true,params);
+ UpdateButton(button, true, params);
}
public static void UpdateButton(AbstractButton button, boolean enabled, Object... params) {
@@ -185,9 +187,9 @@
button.setToolTipText(null);
} else {
SimExplorerAbstractAction action = (SimExplorerAbstractAction) button.getAction();
- if (action!=null) {
- String t = _(action.getI18nToolTipText(), params);
- button.setToolTipText(t);
+ if (action != null) {
+ String t = _(action.getI18nToolTipText(), params);
+ button.setToolTipText(t);
}
}
}
@@ -200,7 +202,7 @@
}
public ListTabUpdater getListUpdater(SimExplorerContext context, boolean remote) {
- return remote?getRemoteUpdater(context):getLocalUpdater(context);
+ return remote ? getRemoteUpdater(context) : getLocalUpdater(context);
}
public ListTabUpdater getLocalUpdater(SimExplorerContext context) {
@@ -223,4 +225,16 @@
}
return synchronizeUpdater;
}
+
+ private class MyRunnable implements Runnable {
+ private String msg;
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+
+ public void run() {
+ getStatusBar().setStatus(msg);
+ }
+ }
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-en_GB.properties
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-en_GB.properties 2008-02-24 21:34:08 UTC (rev 1223)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-en_GB.properties 2008-02-24 23:20:12 UTC (rev 1224)
@@ -9,7 +9,7 @@
simexplorer.action.changeSizor=Change Page size
simexplorer.action.changeSizor.help=
simexplorer.action.changeSizor.tooltip=Select the number of results to display in a page
-simexplorer.action.changeVersion.tooltip=Choose another version
+simexplorer.action.changeVersion.tooltip=Choose another version
simexplorer.action.closeTab=close
simexplorer.action.closeTab.help=
simexplorer.action.closeTab.tooltip=close the tab
@@ -29,6 +29,7 @@
simexplorer.action.detailToTree=Synchronize detail to tree
simexplorer.action.detailToTree.help=
simexplorer.action.detailToTree.tooltip=Synchronize element ''{0}'' as navigation root node
+simexplorer.action.done=Action ''{0}'' done.
simexplorer.action.download.attachment=Directory where to download attachment ''{0}'' of element ''{1}''
simexplorer.action.download.le=Directory where to download element ''{0}''
simexplorer.action.downloadAttachment=Download Attachment
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-fr_FR.properties
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-fr_FR.properties 2008-02-24 21:34:08 UTC (rev 1223)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-fr_FR.properties 2008-02-24 23:20:12 UTC (rev 1224)
@@ -29,6 +29,7 @@
simexplorer.action.detailToTree=Afficher dans l'arbre
simexplorer.action.detailToTree.help=
simexplorer.action.detailToTree.tooltip=Positionne l''\u00E9l\u00E9ment ''{0}'' comme racine de l''arbre de navigation
+simexplorer.action.done=Action ''{0}'' termin\u00E9e.
simexplorer.action.download.attachment=R\u00E9pertoire o\u00F9 t\u00E9l\u00E9charger le fichier attach\u00E9 ''{0}'' de l''\u00E9l\u00E9ment ''{1}''
simexplorer.action.download.le=R\u00E9pertoire o\u00F9 t\u00E9l\u00E9charger le zip de l''\u00E9l\u00E9ment ''{0}''
simexplorer.action.downloadAttachment=T\u00E9l\u00E9charger le fichier attach\u00E9
1
0
r1223 - in trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions: . history util
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
24 Feb '08
Author: tchemit
Date: 2008-02-24 21:34:08 +0000 (Sun, 24 Feb 2008)
New Revision: 1223
Modified:
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangePageAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CloseTabAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoLastPageAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoNextPageAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoPreviousPageAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetSearchAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/UnconnectAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAbstractAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractTabAction.java
Log:
integration context dans les modeles
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangePageAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangePageAction.java 2008-02-24 21:33:36 UTC (rev 1222)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangePageAction.java 2008-02-24 21:34:08 UTC (rev 1223)
@@ -63,7 +63,7 @@
if (jComboBox == null || !jComboBox.isEnabled()) {
return false;
}
- Integer oldPage = ((ListTabModel) myTab.getModel()).getPagination().getCurrentPage();
+ Integer oldPage = ((ListTabModel) myTab.getModel(getContext())).getPagination().getCurrentPage();
Object o = jComboBox.getSelectedItem();
log.info("selected number page "+o.getClass()+" : "+o);
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CloseTabAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CloseTabAction.java 2008-02-24 21:33:36 UTC (rev 1222)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CloseTabAction.java 2008-02-24 21:34:08 UTC (rev 1223)
@@ -55,7 +55,7 @@
@Override
protected void doAction(ActionEvent e) throws Exception {
- getTab().closeTab(getMainUI(), getTabContainer());
+ closeTab(getTab());
}
@Override
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java 2008-02-24 21:33:36 UTC (rev 1222)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java 2008-02-24 21:34:08 UTC (rev 1223)
@@ -107,13 +107,13 @@
JTabbedPane container = ui.getContent();
if (SimExplorerTab.detail.isTabVisible(container)) {
- getDetailUpdater(this).refreshWithConnectAction();
+ getDetailUpdater().refreshWithConnectAction();
}
if (SimExplorerTab.local.isTabVisible(container)) {
- ListTabModel localListModel = (ListTabModel) SimExplorerTab.local.getModel();
+ ListTabModel localListModel = (ListTabModel) SimExplorerTab.local.getModel(getContext());
if (!localListModel.isEmpty()) {
- getListUpdater(this,false).refreshListTablePopupMenu(localListModel);
+ getListUpdater( false).refreshListTablePopupMenu(localListModel);
}
}
// }
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java 2008-02-24 21:33:36 UTC (rev 1222)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java 2008-02-24 21:34:08 UTC (rev 1223)
@@ -97,11 +97,11 @@
String uuid = selected.getUuid();
StorageServiceHelper.deleteElement(getContext(), remote, uuid, selected.getVersion().toString());
- SimExplorerTab.getListModel(remote).reload();
+ getListModel(remote).reload();
if (SimExplorerTab.synchronize.isTabVisible(getTabContainer())) {
- SynchronizeTabModel model = (SynchronizeTabModel) SimExplorerTab.synchronize.getModel();
+ SynchronizeTabModel model = getSynchronizeModel();
model.reloadSources(getContext(), uuid, !remote,remote,!remote,remote);
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java 2008-02-24 21:33:36 UTC (rev 1222)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java 2008-02-24 21:34:08 UTC (rev 1223)
@@ -152,10 +152,10 @@
String uuid = selected.getUuid();
fr.cemagref.simexplorer.is.service.StorageServiceHelper.exportElementTo(getContext().getToken(), fromService, toService, uuid, selected.getVersion().toString());
- SimExplorerTab.getListModel(!remote).reload();
+ getListModel(!remote).reload();
if (SimExplorerTab.synchronize.isTabVisible(getTabContainer())) {
- SynchronizeTabModel model = (SynchronizeTabModel) SimExplorerTab.synchronize.getModel();
+ SynchronizeTabModel model = getSynchronizeModel();
model.reloadSources(getContext(), uuid, false,false,remote,!remote);
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoLastPageAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoLastPageAction.java 2008-02-24 21:33:36 UTC (rev 1222)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoLastPageAction.java 2008-02-24 21:34:08 UTC (rev 1223)
@@ -51,7 +51,7 @@
if (myTab == null) {
return false;
}
- ListTabModel model = (ListTabModel) myTab.getModel();
+ ListTabModel model = (ListTabModel) myTab.getModel(getContext());
Integer oldPage = model.getPagination().getCurrentPage();
boolean b = oldPage < model.getPagination().getNbPages();
if (b) {
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoNextPageAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoNextPageAction.java 2008-02-24 21:33:36 UTC (rev 1222)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoNextPageAction.java 2008-02-24 21:34:08 UTC (rev 1223)
@@ -51,7 +51,7 @@
if (myTab == null) {
return false;
}
- ListTabModel model = (ListTabModel) myTab.getModel();
+ ListTabModel model = (ListTabModel) myTab.getModel(getContext());
Integer oldPage = model.getPagination().getCurrentPage();
boolean b = oldPage < model.getPagination().getNbPages();
if (b) {
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoPreviousPageAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoPreviousPageAction.java 2008-02-24 21:33:36 UTC (rev 1222)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoPreviousPageAction.java 2008-02-24 21:34:08 UTC (rev 1223)
@@ -51,7 +51,7 @@
if (myTab == null) {
return false;
}
- ListTabModel model = (ListTabModel) myTab.getModel();
+ ListTabModel model = (ListTabModel) myTab.getModel(getContext());
Integer oldPage = model.getPagination().getCurrentPage();
boolean b = oldPage > 0;
if (b) {
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetSearchAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetSearchAction.java 2008-02-24 21:33:36 UTC (rev 1222)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetSearchAction.java 2008-02-24 21:34:08 UTC (rev 1223)
@@ -20,6 +20,7 @@
import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractTabAction;
import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
+import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerMainUI;
import java.awt.event.ActionEvent;
@@ -53,7 +54,7 @@
if (!model.hasQuery()) {
// directly refresh search actions
// but do not realize action
- getListUpdater(this, model.isRemote()).resetSearch();
+ getListUpdater( model.isRemote()).resetSearch();
return false;
}
// only reset search if something was previously search
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java 2008-02-24 21:33:36 UTC (rev 1222)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java 2008-02-24 21:34:08 UTC (rev 1223)
@@ -107,7 +107,7 @@
}
// préparation du modèle de détail
- DetailTabModel detailModel = (DetailTabModel) SimExplorerTab.detail.getModel();
+ DetailTabModel detailModel = getDetailModel();
// synchronisation de l'élément sélectionné
detailModel.setSelectedItem(selected);
@@ -140,7 +140,7 @@
ui.getDetailAttachments().addListSelectionListener(attachmentSelectionListener);
// init updater listens the model
- getDetailUpdater(this).initListeners();
+ getDetailUpdater().initListeners();
}
public void setSelected(DataEntityModel selected) {
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java 2008-02-24 21:33:36 UTC (rev 1222)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java 2008-02-24 21:34:08 UTC (rev 1223)
@@ -26,7 +26,6 @@
import fr.cemagref.simexplorer.is.ui.swing.ui.EntityTreeNodeHelper;
import fr.cemagref.simexplorer.is.ui.swing.ui.JSynchronizeTab;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerMainUI;
-import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab;
import fr.cemagref.simexplorer.is.ui.swing.ui.TreeActionsUpdater;
import javax.swing.AbstractButton;
@@ -80,7 +79,7 @@
}
// init synchronize tab model
- sources = ((SynchronizeTabModel) SimExplorerTab.synchronize.getModel()).guessSources(getContext(), selected);
+ sources = getSynchronizeModel().guessSources(getContext(), selected);
return true;
}
@@ -97,7 +96,7 @@
ui.getTree(true).addTreeSelectionListener(navigationRemoteListener);
ui.getTree(true).addTreeSelectionListener(navigationActionsRemoteListener);
// init updater listens the model
- getSynchronizeUpdater(this).initListeners();
+ getSynchronizeUpdater().initListeners();
ui.getShowTabLocal_detail().setHideActionText(true);
ui.getShowTabRemote_detail().setHideActionText(true);
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/UnconnectAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/UnconnectAction.java 2008-02-24 21:33:36 UTC (rev 1222)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/UnconnectAction.java 2008-02-24 21:34:08 UTC (rev 1223)
@@ -22,10 +22,8 @@
import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractAction;
import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode;
import fr.cemagref.simexplorer.is.ui.swing.model.HistoryModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerMainUI;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab;
-import fr.cemagref.simexplorer.is.ui.swing.ui.ListTabUpdater;
import javax.swing.JTabbedPane;
import java.awt.event.ActionEvent;
@@ -97,11 +95,11 @@
if (SimExplorerTab.remote.isTabVisible(container)) {
// close tab
- SimExplorerTab.remote.closeTab(getMainUI(), container);
+ closeTab(SimExplorerTab.remote);
}
if (SimExplorerTab.synchronize.isTabVisible(container)) {
// close tab
- SimExplorerTab.synchronize.closeTab(getMainUI(), container);
+ closeTab(SimExplorerTab.synchronize);
}
/*if (SimExplorerTab.detail.isTabVisible(container) && history != null) {
if (history.isEmpty()) {
@@ -112,16 +110,16 @@
EntityTreeNode node = history.getCurrent();
model.synch(node);
- getDetailUpdater(this).updateDetailNavigationTree(tabUI, model.getHistory());
+ getDetailUpdater().updateDetailNavigationTree(tabUI, model.getHistory());
}
}*/
if (SimExplorerTab.detail.isTabVisible(container)) {
- getDetailUpdater(this).refreshWithConnectAction();
+ getDetailUpdater().refreshWithConnectAction();
}
if (SimExplorerTab.local.isTabVisible(container)) {
- getListUpdater(this,false).refreshListTablePopupMenu((ListTabModel) SimExplorerTab.local.getModel());
+ getListUpdater( false).refreshListTablePopupMenu(getListModel(false));
}
// }
//});
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAbstractAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAbstractAction.java 2008-02-24 21:33:36 UTC (rev 1222)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAbstractAction.java 2008-02-24 21:34:08 UTC (rev 1223)
@@ -90,7 +90,7 @@
if (history.isEmpty()) {
if (getTab().isTabVisible(getTabContainer())) {
// close tab, no more history
- getTab().closeTab(getMainUI(), getTabContainer());
+ closeTab(getTab());
}
}
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java 2008-02-24 21:33:36 UTC (rev 1222)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java 2008-02-24 21:34:08 UTC (rev 1223)
@@ -20,14 +20,11 @@
import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
import fr.cemagref.simexplorer.is.ui.swing.SimExplorerActionManager;
-import fr.cemagref.simexplorer.is.ui.swing.actions.ImportElementAction;
import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
import fr.cemagref.simexplorer.is.ui.swing.model.ListTableModel;
import fr.cemagref.simexplorer.is.ui.swing.ui.JListTab;
-import fr.cemagref.simexplorer.is.ui.swing.ui.ListTabUpdater;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerMainUI;
import jaxx.runtime.swing.JAXXTab;
-import static org.codelutin.i18n.I18n._;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
@@ -55,7 +52,6 @@
protected boolean remote;
ListMetaSelectionListener listMetaSelectionListener;
-
TableRowSorterListener rowSorterListener;
MyTableRowSorter rowSorter;
@@ -93,9 +89,6 @@
rowSorter=null;
}
}
- public ListTabUpdater getUpdater() {
- return getListUpdater(this, getModel().isRemote());
- }
protected void initFirstUsage(final JListTab ui, final ListTabModel model) {
@@ -104,8 +97,6 @@
// init remote property on model
model.synch(remote, (LoggableElement) null);
-
-
//FIXME : when we change locale, this is no more enabled ?
SimExplorerMainUI.EnableButton(ui.getImportElement());
@@ -117,7 +108,7 @@
@Override
public void keyReleased(KeyEvent e) {
// rafraichissement des actions de recherche
- getUpdater().refreshSearchActions();
+ getListUpdater( getModel().isRemote()).refreshSearchActions();
}
});
@@ -136,10 +127,10 @@
rowSorter.addRowSorterListener(rowSorterListener);
// init updater listens the model
- getListUpdater(this, model.isRemote()).initListeners();
+ getListUpdater( model.isRemote()).initListeners();
// init model
- model.initTabModel(getContext(), remote);
+ model.initTabModel(remote);
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractAction.java 2008-02-24 21:33:36 UTC (rev 1222)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractAction.java 2008-02-24 21:34:08 UTC (rev 1223)
@@ -20,9 +20,13 @@
import fr.cemagref.simexplorer.is.ui.swing.SimExplorer;
import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext;
+import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel;
+import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
+import fr.cemagref.simexplorer.is.ui.swing.model.SynchronizeTabModel;
import fr.cemagref.simexplorer.is.ui.swing.ui.DetailTabUpdater;
import fr.cemagref.simexplorer.is.ui.swing.ui.ListTabUpdater;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerMainUI;
+import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab;
import fr.cemagref.simexplorer.is.ui.swing.ui.SynchronizeTabUpdater;
import fr.cemagref.simexplorer.is.ui.swing.ui.util.ErrorDialog;
import jaxx.runtime.JAXXObject;
@@ -45,44 +49,6 @@
protected ActionEvent e;
- protected static DetailTabUpdater detailUpdater;
- protected static ListTabUpdater localUpdater;
- protected static ListTabUpdater remoteUpdater;
- protected static SynchronizeTabUpdater synchronizeUpdater;
-
- protected static DetailTabUpdater getDetailUpdater(SimExplorerAbstractAction action) {
- if (detailUpdater == null) {
- detailUpdater = new DetailTabUpdater(action.getContext());
- }
- return detailUpdater;
- }
-
-
- protected static ListTabUpdater getListUpdater(SimExplorerAbstractAction action,boolean remote) {
- return remote?getRemoteUpdater(action):getLocalUpdater(action);
- }
-
- protected static ListTabUpdater getLocalUpdater(SimExplorerAbstractAction action) {
- if (localUpdater == null) {
- localUpdater = new ListTabUpdater(action.getContext(), false);
- }
- return localUpdater;
- }
-
- protected static ListTabUpdater getRemoteUpdater(SimExplorerAbstractAction action) {
- if (remoteUpdater == null) {
- remoteUpdater = new ListTabUpdater(action.getContext(), true);
- }
- return remoteUpdater;
- }
-
- public static SynchronizeTabUpdater getSynchronizeUpdater(SimExplorerAbstractAction action) {
- if (synchronizeUpdater == null) {
- synchronizeUpdater = new SynchronizeTabUpdater(action.getContext());
- }
- return synchronizeUpdater;
- }
-
public void actionPerformed(java.awt.event.ActionEvent e) {
log.debug("------------------------------------------------------------");
@@ -171,22 +137,41 @@
return "simexplorer.action." + getActionName() + ".tooltip";
}
- public static void dispose() {
- if (detailUpdater != null) {
- detailUpdater.removeListeners();
- detailUpdater = null;
- }
- if (localUpdater != null) {
- localUpdater.removeListeners();
- localUpdater = null;
- }
- if (remoteUpdater != null) {
- remoteUpdater.removeListeners();
- remoteUpdater = null;
- }
- if (synchronizeUpdater != null) {
- synchronizeUpdater.removeListeners();
- synchronizeUpdater = null;
- }
+ public DetailTabModel getDetailModel() {
+ return (DetailTabModel) SimExplorerTab.detail.getModel(getContext());
}
+
+ public ListTabModel getListModel(boolean remote) {
+ return (ListTabModel) SimExplorerTab.getListTab(remote).getModel(getContext());
+ }
+
+ public SynchronizeTabModel getSynchronizeModel() {
+ return (SynchronizeTabModel) SimExplorerTab.synchronize.getModel(getContext());
+ }
+
+
+ public DetailTabUpdater getDetailUpdater() {
+ return getMainUI().getDetailUpdater(getContext());
+ }
+
+ public ListTabUpdater getListUpdater(boolean remote) {
+ return getMainUI().getListUpdater(getContext(), remote);
+ }
+
+ public ListTabUpdater getLocalUpdater() {
+ return getMainUI().getLocalUpdater(getContext());
+ }
+
+ public ListTabUpdater getRemoteUpdater() {
+ return getMainUI().getRemoteUpdater(getContext());
+ }
+
+ public SynchronizeTabUpdater getSynchronizeUpdater() {
+ return getMainUI().getSynchronizeUpdater(getContext());
+ }
+
+ public void closeTab(SimExplorerTab tab) {
+ tab.closeTab(getContext(),getMainUI(),getMainUI().getContent());
+ }
+
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractTabAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractTabAction.java 2008-02-24 21:33:36 UTC (rev 1222)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractTabAction.java 2008-02-24 21:34:08 UTC (rev 1223)
@@ -119,7 +119,7 @@
}
public SimExplorerTabModel getModel() {
- return getTab().getModel();
+ return getTab().getModel(getContext());
}
@Override
@@ -162,7 +162,7 @@
log.warn("could not find a tab for source " + e.getSource());
return null;
}
- DataEntityModel entityModel = sourceTab.getModel().getSelectedItem();
+ DataEntityModel entityModel = sourceTab.getModel(getContext()).getSelectedItem();
if (entityModel != null) {
entityModel = entityModel.cloneSafe();
}
1
0
r1222 - in trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing: . model ui
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
24 Feb '08
Author: tchemit
Date: 2008-02-24 21:33:36 +0000 (Sun, 24 Feb 2008)
New Revision: 1222
Modified:
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorer.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DetailTabModel.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/HistoryModel.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTabModel.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SimExplorerTabModel.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabUpdater.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabUpdater.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerAbstractTabUpdater.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerMainUI.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTabFactory.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabUpdater.java
Log:
integration context dans les modeles
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorer.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorer.java 2008-02-24 21:32:07 UTC (rev 1221)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorer.java 2008-02-24 21:33:36 UTC (rev 1222)
@@ -114,7 +114,6 @@
public static void dispose(boolean reload) {
SimExplorerTab.dispose();
- SimExplorerAbstractAction.dispose();
SimExplorerActionManager.dispose();
ErrorDialog.disposeUI();
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DetailTabModel.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DetailTabModel.java 2008-02-24 21:32:07 UTC (rev 1221)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DetailTabModel.java 2008-02-24 21:33:36 UTC (rev 1222)
@@ -21,6 +21,7 @@
import fr.cemagref.simexplorer.is.entities.attachment.Attachment;
import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
import fr.cemagref.simexplorer.is.entities.metadata.Version;
+import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -45,8 +46,6 @@
/** la propriété pour indiquer un changement de sélection de fichier attaché */
public static final String SELECTED_ATTACHMENT_INDEX_PROPERTY_CHANGED = "selectedAttachmentIndexPropertyChanged";
- private static final int HISTORY_CAPACITY = 20;
-
private static final long serialVersionUID = 4851121531481734868L;
static protected Log log = LogFactory.getLog(DetailTabModel.class);
@@ -85,8 +84,43 @@
*/
protected Integer selectedAttachmentIndex;
+ /**
+ * l'historique des elements deja visites.
+ *
+ * @see HistoryModel
+ */
protected HistoryModel<EntityTreeNode> history;
+ public DetailTabModel(SimExplorerContext context) {
+ super(context);
+ history =new HistoryModel<EntityTreeNode>();
+ }
+
+ public void setRootNode(EntityTreeNode rootNode) {
+ EntityTreeNode oldRootNode = this.rootNode;
+ this.rootNode = rootNode;
+ firePropertyChange(ROOT_NODE_PROPERTY_CHANGED, oldRootNode, rootNode);
+ }
+
+ public void setSelectedNode(LoggableElement selectedNode) {
+ LoggableElement oldSelectedNode = this.selectedNode;
+ this.selectedNode = selectedNode;
+ this.detailNode = selectedNode;
+ firePropertyChange(SELECTED_NODE_PROPERTY_CHANGED, oldSelectedNode, selectedNode);
+ }
+
+ public void setSelectedVersion(Version version) {
+ Integer oldSelectedVersionIndex = this.selectedVersionIndex;
+ this.selectedVersionIndex = getVersionIndex(version);
+ firePropertyChange(SELECTED_VERSION_INDEX_PROPERTY_CHANGED, oldSelectedVersionIndex, selectedVersionIndex);
+ }
+
+ public void setSelectedAttachmentIndex(Integer selectedAttachmentIndex) {
+ Integer oldSelectedAttachmentIndex = this.selectedAttachmentIndex;
+ this.selectedAttachmentIndex = selectedAttachmentIndex;
+ firePropertyChange(SELECTED_ATTACHMENT_INDEX_PROPERTY_CHANGED, oldSelectedAttachmentIndex, selectedAttachmentIndex);
+ }
+
public EntityTreeNode getRootNode() {
return rootNode;
}
@@ -121,36 +155,11 @@
public HistoryModel<EntityTreeNode> getHistory() {
if (history == null) {
- history = new HistoryModel<EntityTreeNode>(HISTORY_CAPACITY);
+ history = new HistoryModel<EntityTreeNode>(HistoryModel.HISTORY_CAPACITY);
}
return history;
}
- public void setRootNode(EntityTreeNode rootNode) {
- EntityTreeNode oldRootNode = this.rootNode;
- this.rootNode = rootNode;
- firePropertyChange(ROOT_NODE_PROPERTY_CHANGED, oldRootNode, rootNode);
- }
-
- public void setSelectedNode(LoggableElement selectedNode) {
- LoggableElement oldSelectedNode = this.selectedNode;
- this.selectedNode = selectedNode;
- this.detailNode = selectedNode;
- firePropertyChange(SELECTED_NODE_PROPERTY_CHANGED, oldSelectedNode, selectedNode);
- }
-
- public void setSelectedVersion(Version version) {
- Integer oldSelectedVersionIndex = this.selectedVersionIndex;
- this.selectedVersionIndex = getVersionIndex(version);
- firePropertyChange(SELECTED_VERSION_INDEX_PROPERTY_CHANGED, oldSelectedVersionIndex, selectedVersionIndex);
- }
-
- public void setSelectedAttachmentIndex(Integer selectedAttachmentIndex) {
- Integer oldSelectedAttachmentIndex = this.selectedAttachmentIndex;
- this.selectedAttachmentIndex = selectedAttachmentIndex;
- firePropertyChange(SELECTED_ATTACHMENT_INDEX_PROPERTY_CHANGED, oldSelectedAttachmentIndex, selectedAttachmentIndex);
- }
-
public void setDetailNode(LoggableElement detailNode) {
this.detailNode = detailNode;
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/HistoryModel.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/HistoryModel.java 2008-02-24 21:32:07 UTC (rev 1221)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/HistoryModel.java 2008-02-24 21:33:36 UTC (rev 1222)
@@ -39,11 +39,19 @@
protected int capacity;
private static final long serialVersionUID = -6436315419371336090L;
+ /**
+ * capacite maximum de l'historique
+ */
+ public static final int HISTORY_CAPACITY = 20;
public HistoryModel(int capacity) {
this.capacity = capacity;
}
+ public HistoryModel() {
+ this(HISTORY_CAPACITY);
+ }
+
/**
* Ajoute à l'historique une donnée après la position courante s'il y avait
* déjà des données ou en première position le cas échéant.
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTabModel.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTabModel.java 2008-02-24 21:32:07 UTC (rev 1221)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTabModel.java 2008-02-24 21:33:36 UTC (rev 1222)
@@ -46,25 +46,22 @@
protected final PaginationModel pagination;
protected final PaginationModel oldPagination;
- protected SimExplorerContext context;
-
protected MetaData[] list;
protected int selectedIndex;
private static final long serialVersionUID = -3623331875470531459L;
- public ListTabModel() {
+ public ListTabModel(SimExplorerContext context) {
+ super(context);
queryModel = new QueryModel();
oldQueryModel = new QueryModel();
pagination = new PaginationModel(SimplePaginationEnum._10);
oldPagination= new PaginationModel(SimplePaginationEnum._10);
}
- public void initTabModel(SimExplorerContext context, boolean remote) {
+ public void initTabModel(boolean remote) {
- this.context=context;
-
reset();
// no selection at first load
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SimExplorerTabModel.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SimExplorerTabModel.java 2008-02-24 21:32:07 UTC (rev 1221)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SimExplorerTabModel.java 2008-02-24 21:33:36 UTC (rev 1222)
@@ -21,6 +21,7 @@
import fr.cemagref.simexplorer.is.entities.metadata.MetaData;
import fr.cemagref.simexplorer.is.entities.metadata.Version;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab;
+import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext;
import jaxx.runtime.builder.TabModel;
import java.beans.PropertyChangeListener;
@@ -44,11 +45,17 @@
/** flag pour savoir si la source est remote ou non */
protected Boolean remote;
+ protected final SimExplorerContext context;
+
/** support pourles changements des propriétés */
protected PropertyChangeSupport changeSupport;
private static final long serialVersionUID = 4136959472154027361L;
+ public SimExplorerTabModel(SimExplorerContext context) {
+ this.context = context;
+ }
+
public String getName() {
return tab.name();
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java 2008-02-24 21:32:07 UTC (rev 1221)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java 2008-02-24 21:33:36 UTC (rev 1222)
@@ -58,6 +58,10 @@
/** l'élément de l'arbre de navigation distant sélectionné */
protected LoggableElement remoteSelectedNode;
+ public SynchronizeTabModel(SimExplorerContext context) {
+ super(context);
+ }
+
/**
* @param remote flag pour indiquer sur quel arbre on travaille
* @return le LE encapsulé dans le root de l'arbre de navigation, ou null
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabUpdater.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabUpdater.java 2008-02-24 21:32:07 UTC (rev 1221)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabUpdater.java 2008-02-24 21:33:36 UTC (rev 1222)
@@ -56,10 +56,6 @@
public void propertyChange(PropertyChangeEvent evt) {
String evtName = evt.getPropertyName();
- if (log.isDebugEnabled()) {
- log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
- }
-
if (evtName.equals(DetailTabModel.ROOT_NODE_PROPERTY_CHANGED)) {
fireRootSelected(getUi(), getModel(), evt);
return;
@@ -77,12 +73,14 @@
return;
}
- throw new IllegalStateException("could not treate property " + evtName);
+ throw new IllegalStateException("could not treate property " + evtName+"\n"+evt);
}
protected void fireRootSelected(JDetailTab ui, DetailTabModel model, PropertyChangeEvent evt) {
- log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ if (log.isDebugEnabled()) {
+ log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ }
EntityTreeNode node = (EntityTreeNode) evt.getNewValue();
@@ -121,7 +119,9 @@
}
protected void fireNodeSelected(JDetailTab ui, DetailTabModel model, PropertyChangeEvent evt) {
- log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ if (log.isDebugEnabled()) {
+ log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ }
LoggableElement newSelectedNode = (LoggableElement) evt.getNewValue();
@@ -159,7 +159,9 @@
}
protected void fireVersionSelected(JDetailTab ui, DetailTabModel model, PropertyChangeEvent evt) {
- log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ if (log.isDebugEnabled()) {
+ log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ }
Integer index = (Integer) evt.getNewValue();
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabUpdater.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabUpdater.java 2008-02-24 21:32:07 UTC (rev 1221)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabUpdater.java 2008-02-24 21:33:36 UTC (rev 1222)
@@ -68,7 +68,9 @@
}
protected void fireRowSelected(JListTab ui, ListTabModel model, PropertyChangeEvent evt) {
- log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ if (log.isDebugEnabled()) {
+ log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ }
if (!model.isEmpty()) {
ui.getTable().getSelectionModel().setSelectionInterval(model.getSelectedIndex(), model.getSelectedIndex());
@@ -81,7 +83,9 @@
}
protected void fireQueryChanged(JListTab ui, ListTabModel model, PropertyChangeEvent evt) {
- log.info(evt.getPropertyName() + "\n\told:" + evt.getOldValue() + ",\n\tnew:" + evt.getNewValue());
+ if (log.isDebugEnabled()) {
+ log.debug(evt.getPropertyName() + "\n\told:" + evt.getOldValue() + ",\n\tnew:" + evt.getNewValue());
+ }
QueryModel query = (QueryModel) evt.getNewValue();
if (query == null) {
resetSearch();
@@ -103,7 +107,9 @@
}
protected void firePaginationChanged(JListTab ui, ListTabModel model, PropertyChangeEvent evt) {
- log.info(evt.getPropertyName() + "\n\told:" + evt.getOldValue() + ",\n\tnew:" + evt.getNewValue());
+ if (log.isDebugEnabled()) {
+ log.debug(evt.getPropertyName() + "\n\told:" + evt.getOldValue() + ",\n\tnew:" + evt.getNewValue());
+ }
ui.getSearchText().setText(model.getQuery());
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerAbstractTabUpdater.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerAbstractTabUpdater.java 2008-02-24 21:32:07 UTC (rev 1221)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerAbstractTabUpdater.java 2008-02-24 21:33:36 UTC (rev 1222)
@@ -56,7 +56,7 @@
@SuppressWarnings({"unchecked"})
public M getModel() {
- return (M) tab.getModel();
+ return (M) tab.getModel(context);
}
@SuppressWarnings({"unchecked"})
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerMainUI.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerMainUI.java 2008-02-24 21:32:07 UTC (rev 1221)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerMainUI.java 2008-02-24 21:33:36 UTC (rev 1222)
@@ -48,6 +48,11 @@
/** l'ui principale de l'application */
public static SimExplorerMainUI ui;
+
+ public DetailTabUpdater detailUpdater;
+ public ListTabUpdater localUpdater;
+ public ListTabUpdater remoteUpdater;
+ public SynchronizeTabUpdater synchronizeUpdater;
public static SimExplorerMainUI getUI() {
SimExplorer.checkInitContext();
@@ -59,6 +64,22 @@
public void disposeUI() {
super.dispose();
+ if (detailUpdater != null) {
+ detailUpdater.removeListeners();
+ detailUpdater = null;
+ }
+ if (localUpdater != null) {
+ localUpdater.removeListeners();
+ localUpdater = null;
+ }
+ if (remoteUpdater != null) {
+ remoteUpdater.removeListeners();
+ remoteUpdater = null;
+ }
+ if (synchronizeUpdater != null) {
+ synchronizeUpdater.removeListeners();
+ synchronizeUpdater = null;
+ }
ui = null;
}
@@ -171,4 +192,35 @@
}
}
+ public DetailTabUpdater getDetailUpdater(SimExplorerContext context) {
+ if (detailUpdater == null) {
+ detailUpdater = new DetailTabUpdater(context);
+ }
+ return detailUpdater;
+ }
+
+ public ListTabUpdater getListUpdater(SimExplorerContext context, boolean remote) {
+ return remote?getRemoteUpdater(context):getLocalUpdater(context);
+ }
+
+ public ListTabUpdater getLocalUpdater(SimExplorerContext context) {
+ if (localUpdater == null) {
+ localUpdater = new ListTabUpdater(context, false);
+ }
+ return localUpdater;
+ }
+
+ public ListTabUpdater getRemoteUpdater(SimExplorerContext context) {
+ if (remoteUpdater == null) {
+ remoteUpdater = new ListTabUpdater(context, true);
+ }
+ return remoteUpdater;
+ }
+
+ public SynchronizeTabUpdater getSynchronizeUpdater(SimExplorerContext context) {
+ if (synchronizeUpdater == null) {
+ synchronizeUpdater = new SynchronizeTabUpdater(context);
+ }
+ return synchronizeUpdater;
+ }
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java 2008-02-24 21:32:07 UTC (rev 1221)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java 2008-02-24 21:33:36 UTC (rev 1222)
@@ -22,6 +22,7 @@
import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
import fr.cemagref.simexplorer.is.ui.swing.model.SimExplorerTabModel;
import fr.cemagref.simexplorer.is.ui.swing.model.SynchronizeTabModel;
+import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext;
import jaxx.runtime.builder.TabContentConfig;
import jaxx.runtime.swing.JAXXTab;
@@ -117,19 +118,23 @@
return (JListTab) getListTab(remote).getUI();
}
- public static ListTabModel getListModel(boolean remote) {
+ /*public static ListTabModel getListModel(boolean remote) {
return (ListTabModel) getListTab(remote).getModel();
- }
+ }*/
public JAXXTab getUI() {
return getFactory().getUI(name());
}
- public SimExplorerTabModel getModel() {
+ private SimExplorerTabModel getModel() {
return getFactory().getModel(name());
}
+ public SimExplorerTabModel getModel(SimExplorerContext context) {
+ return getFactory().getModel(name(),context);
+ }
+
public boolean isTabVisible(JTabbedPane container) {
JAXXTab ui = getUI();
return ui != null && getFactory().getTabIndex(container, ui) > -1;
@@ -148,14 +153,14 @@
getFactory().showTab(container, name());
}
- public void closeTab(SimExplorerMainUI mainUi, JTabbedPane container) {
+ public void closeTab(SimExplorerContext context, SimExplorerMainUI mainUi, JTabbedPane container) {
getFactory().closeTab(mainUi, container, name());
- getModel().setSelectedItem(null);
+ getModel(context).setSelectedItem(null);
}
public static void dispose() {
- for (SimExplorerTab simExplorerTab : values()) {
- simExplorerTab.getModel().removePropertyChangeListeners();
+ for (String simExplorerTab : getFactory().keySet()) {
+ getFactory().getModel(simExplorerTab).removePropertyChangeListeners();
}
getFactory().resetCache();
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTabFactory.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTabFactory.java 2008-02-24 21:32:07 UTC (rev 1221)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTabFactory.java 2008-02-24 21:33:36 UTC (rev 1222)
@@ -20,11 +20,13 @@
import fr.cemagref.simexplorer.is.exceptions.SimExplorerRuntimeException;
import fr.cemagref.simexplorer.is.ui.swing.SimExplorerActionManager;
+import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext;
import fr.cemagref.simexplorer.is.ui.swing.model.SimExplorerTabModel;
import fr.cemagref.simexplorer.is.ui.swing.ui.util.MyTabHeader;
import jaxx.runtime.JAXXObject;
import jaxx.runtime.builder.TabContentConfig;
import jaxx.runtime.builder.TabFactory;
+import jaxx.runtime.builder.TabModel;
import jaxx.runtime.swing.JAXXTab;
import static org.codelutin.i18n.I18n._;
@@ -35,6 +37,8 @@
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.lang.reflect.Field;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
import java.util.Map;
import java.util.TreeMap;
@@ -69,11 +73,24 @@
}
@Override
- public SimExplorerTabModel getModel(String tabName) {
- return (SimExplorerTabModel) super.getModel(tabName);
+ protected TabModel initTabModel(TabContentConfig config, Object... params) throws InstantiationException, IllegalAccessException {
+ try {
+ Constructor<?> constructor = config.model().getConstructor(SimExplorerContext.class);
+ return (TabModel) constructor.newInstance(params[0]);
+ } catch (InvocationTargetException e) {
+ throw new SimExplorerRuntimeException(e);
+ } catch (NoSuchMethodException e) {
+ throw new SimExplorerRuntimeException(e);
+ }
}
+
@Override
+ public SimExplorerTabModel getModel(String tabName,Object... params) {
+ return (SimExplorerTabModel) super.getModel(tabName,params);
+ }
+
+ @Override
protected JComponent addTabHeader(final JTabbedPane container,
String tabName,
TabContentConfig tab,
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabUpdater.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabUpdater.java 2008-02-24 21:32:07 UTC (rev 1221)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabUpdater.java 2008-02-24 21:33:36 UTC (rev 1222)
@@ -77,12 +77,14 @@
}
private void fireSources(PropertyChangeEvent evt) {
- log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ if (log.isDebugEnabled()) {
+ log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ }
LoggableElement[] oldSources = (LoggableElement[]) evt.getOldValue();
LoggableElement[] sources = (LoggableElement[]) evt.getNewValue();
if (sources[0] == null && sources[1] == null) {
// close tab
- SimExplorerTab.synchronize.closeTab(getMainUI(), getMainUI().getContent());
+ SimExplorerTab.synchronize.closeTab(getContext(), getMainUI(), getMainUI().getContent());
}
if (sources[0]==null && oldSources[0]==null) {
@@ -94,13 +96,12 @@
// disable remote
SimExplorerMainUI.DisableButton(getUi().getExportButton(true), getUi().getShowDetailButton(true),getUi().getCollapseButton(true),getUi().getExpandButton(true));
}
- // by default disable the action
- //SimExplorerMainUI.DisableButton(getUi().getExportButton(false), getUi().getExportButton(true));
-
}
protected void fireRootSelected(PropertyChangeEvent evt, boolean remote) {
- log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ if (log.isDebugEnabled()) {
+ log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ }
LoggableElement le = (LoggableElement) evt.getNewValue();
1
0
r1221 - trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
24 Feb '08
Author: tchemit
Date: 2008-02-24 21:32:07 +0000 (Sun, 24 Feb 2008)
New Revision: 1221
Modified:
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/EntityTreeNode.java
Log:
voir de nouveau la version sur les le dans les arbres de navigation
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/EntityTreeNode.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/EntityTreeNode.java 2008-02-24 19:54:38 UTC (rev 1220)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/EntityTreeNode.java 2008-02-24 21:32:07 UTC (rev 1221)
@@ -46,6 +46,10 @@
protected boolean remote;
+ public EntityTreeNode(EntityTreeNode parent, LoggableElement userObject, boolean remote, boolean allowedChildren) {
+ this(parent, userObject.toString() + " ["+userObject.getMetaData().getVersion()+"]", userObject, remote, allowedChildren);
+ }
+
public EntityTreeNode(EntityTreeNode parent, Object userObject, boolean remote, boolean allowedChildren) {
this(parent, userObject.toString(), userObject, remote, allowedChildren);
}
@@ -71,6 +75,7 @@
return null;
}
+
public LoggableElement getLoggableElement() {
Object userObject = getUserObject();
if (userObject instanceof LoggableElement) {
@@ -87,7 +92,7 @@
public String toString() {
return text;
}
-
+
public boolean isRemote() {
return remote;
}
1
0
r1220 - in trunk/simexplorer-is/simexplorer-is-swing/src/resources: . i18n jaxx
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
24 Feb '08
Author: tchemit
Date: 2008-02-24 19:54:38 +0000 (Sun, 24 Feb 2008)
New Revision: 1220
Modified:
trunk/simexplorer-is/simexplorer-is-swing/src/resources/commandline.properties
trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-en_GB.properties
trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-fr_FR.properties
trunk/simexplorer-is/simexplorer-is-swing/src/resources/jaxx/simexplorer-is-swing-actions.properties
Log:
utilisation object de type Updater pour gerer la mise a jour des ui suite a une modification dans le modele d'onglet
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/resources/commandline.properties
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/resources/commandline.properties 2008-02-24 19:54:25 UTC (rev 1219)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/resources/commandline.properties 2008-02-24 19:54:38 UTC (rev 1220)
@@ -77,10 +77,10 @@
###
### Application preferences
###
-main.config.definition.localSizor=java.lang.Integer:10
+main.config.definition.localSizor=jaxx.util.SimplePaginationEnum:_5
main.config.modifiers.localSizor=
-main.config.definition.remoteSizor=java.lang.Integer:10
+main.config.definition.remoteSizor=jaxx.util.SimplePaginationEnum:_20
main.config.modifiers.remoteSizor=
main.config.definition.showLocalTab=java.lang.Boolean:True
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-en_GB.properties
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-en_GB.properties 2008-02-24 19:54:25 UTC (rev 1219)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-en_GB.properties 2008-02-24 19:54:38 UTC (rev 1220)
@@ -42,11 +42,7 @@
simexplorer.action.expandAll.tooltip=Expand all nodes of ''{0}''
simexplorer.action.exportElement=export
simexplorer.action.exportElement.help=
-simexplorer.action.exportElementToLocal=export to local
-simexplorer.action.exportElementToLocal.help=
simexplorer.action.exportElementToLocal.tooltip=Export element ''{0} [{1}]'' to locale database
-simexplorer.action.exportElementToRemote=export to remote
-simexplorer.action.exportElementToRemote.help=
simexplorer.action.exportElementToRemote.tooltip=Export element ''{0} [{1}]'' to remote database
simexplorer.action.goFirstPage=First page
simexplorer.action.goFirstPage.help=
@@ -72,6 +68,9 @@
simexplorer.action.hideTab_remote=List (remote)
simexplorer.action.hideTab_remote.help=
simexplorer.action.hideTab_remote.tooltip=Hide the list of remote elements
+simexplorer.action.historyAdd=
+simexplorer.action.historyAdd.help=
+simexplorer.action.historyAdd.tooltip=
simexplorer.action.historyDelete=Delete from history
simexplorer.action.historyDelete.help=
simexplorer.action.historyDelete.tooltip=Delete deleted element from history
@@ -170,6 +169,7 @@
simexplorer.config.remote.proxyPassword.description=password to proxy host
simexplorer.config.remote.useAuthenticationProxy.description=use an anthenticated proxy
simexplorer.config.remote.useProxy.description=use a proxy host toreach remote server
+simexplorer.confirm.changeLanguage=Changing to language ''{0}'' will reset the ui and the history
simexplorer.confirm.delete=Confirm delete of ''{0}''
simexplorer.entities.applicationExploration=Exploration Application
simexplorer.entities.library=Library
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-fr_FR.properties
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-fr_FR.properties 2008-02-24 19:54:25 UTC (rev 1219)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/resources/i18n/simexplorer-is-swing-fr_FR.properties 2008-02-24 19:54:38 UTC (rev 1220)
@@ -42,11 +42,7 @@
simexplorer.action.expandAll.tooltip=\u00E9taler tous les noeuds de ''{0}''
simexplorer.action.exportElement=Exporter
simexplorer.action.exportElement.help=
-simexplorer.action.exportElementToLocal=Exporter vers le serveur local
-simexplorer.action.exportElementToLocal.help=
simexplorer.action.exportElementToLocal.tooltip=Exporter l''\u00E9l\u00E9ment ''{0} [{1}]'' vers la base locale
-simexplorer.action.exportElementToRemote=Exporter vers le serveur distant
-simexplorer.action.exportElementToRemote.help=
simexplorer.action.exportElementToRemote.tooltip=Export l''\u00E9l\u00E9ment ''{0} [{1}]'' vers la base distante
simexplorer.action.goFirstPage=Premi\u00E8re page
simexplorer.action.goFirstPage.help=
@@ -72,6 +68,9 @@
simexplorer.action.hideTab_remote=Liste distante
simexplorer.action.hideTab_remote.help=
simexplorer.action.hideTab_remote.tooltip=Cacher la liste des \u00E9l\u00E9ments du serveur distant
+simexplorer.action.historyAdd=
+simexplorer.action.historyAdd.help=
+simexplorer.action.historyAdd.tooltip=
simexplorer.action.historyDelete=Suprimer de l'historique
simexplorer.action.historyDelete.help=
simexplorer.action.historyDelete.tooltip=Supprimer un \u00E9l\u00E9ment de l'historique
@@ -84,7 +83,7 @@
simexplorer.action.historyPrevious=El\u00E9ment pr\u00E9c\u00E9dent
simexplorer.action.historyPrevious.help=
simexplorer.action.historyPrevious.tooltip=Afficher l''\u00E9l\u00E9ment pr\u00E9c\u00E9dent ''{0}''
-simexplorer.action.historyReset=Vider l''historique
+simexplorer.action.historyReset=Vider l'historique
simexplorer.action.historyReset.help=
simexplorer.action.historyReset.tooltip=R\u00E9initialise l'historique des \u00E9lements
simexplorer.action.historyUnconnect=Supprimer les \u00E9l\u00E9ments distants
@@ -170,6 +169,7 @@
simexplorer.config.remote.proxyPassword.description=Mot de passe proxy
simexplorer.config.remote.useAuthenticationProxy.description=utilise une authentification sur le proxy
simexplorer.config.remote.useProxy.description=utilise un proxy pour atteindre le serveur distant
+simexplorer.confirm.changeLanguage=Changer vers la langue ''{0}'' va r\u00E9initialiser les interfaces et l''historique
simexplorer.confirm.delete=Confirmer la suppression de ''{0}''
simexplorer.entities.applicationExploration=Exploration d'application
simexplorer.entities.library=Librairie
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/resources/jaxx/simexplorer-is-swing-actions.properties
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/resources/jaxx/simexplorer-is-swing-actions.properties 2008-02-24 19:54:25 UTC (rev 1219)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/resources/jaxx/simexplorer-is-swing-actions.properties 2008-02-24 19:54:38 UTC (rev 1220)
@@ -24,6 +24,8 @@
action.showTab_local=fr.cemagref.simexplorer.is.ui.swing.actions.ShowLocalTabAction
action.showTab_remote=fr.cemagref.simexplorer.is.ui.swing.actions.ShowRemoteTabAction
action.showTab_detail=fr.cemagref.simexplorer.is.ui.swing.actions.ShowDetailTabAction
+action.showTabLocal_detail=fr.cemagref.simexplorer.is.ui.swing.actions.ShowDetailTabAction
+action.showTabRemote_detail=fr.cemagref.simexplorer.is.ui.swing.actions.ShowDetailTabAction
action.showTab_synchronize=fr.cemagref.simexplorer.is.ui.swing.actions.ShowSynchronizeTabAction
# toggle tab actions
@@ -64,6 +66,7 @@
action.detailToTree=fr.cemagref.simexplorer.is.ui.swing.actions.DetailToTreeAction
# navigation history actions
+action.historyAdd=fr.cemagref.simexplorer.is.ui.swing.actions.history.HistoryAddAction
action.historyDelete=fr.cemagref.simexplorer.is.ui.swing.actions.history.HistoryDeleteAction
action.historyDeleteExport=fr.cemagref.simexplorer.is.ui.swing.actions.history.HistoryDeleteExportAction
action.historyUnconnect=fr.cemagref.simexplorer.is.ui.swing.actions.history.HistoryUnconnectAction
1
0
r1219 - in trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing: actions actions/history actions/util model
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
24 Feb '08
Author: tchemit
Date: 2008-02-24 19:54:25 +0000 (Sun, 24 Feb 2008)
New Revision: 1219
Added:
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAddAction.java
Removed:
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementToLocalAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementToRemoteAction.java
Modified:
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangePageAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeSizorAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CollapseAllAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DetailToTreeAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DownloadAttachmentAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExpandAllAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetSearchAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/UnconnectAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAbstractAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteExportAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowTabAbstractAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractTabAction.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DetailTabModel.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/HistoryModel.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTabModel.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTableModel.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/PaginationModel.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/QueryModel.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java
Log:
utilisation object de type Updater pour gerer la mise a jour des ui suite a une modification dans le modele d'onglet
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangePageAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangePageAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangePageAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -18,12 +18,9 @@
* ##% */
package fr.cemagref.simexplorer.is.ui.swing.actions;
-import fr.cemagref.simexplorer.is.ui.swing.ui.JListTab;
import fr.cemagref.simexplorer.is.ui.swing.SimExplorerActionManager;
import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractTabAction;
import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.ListTableModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.PaginationModel;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab;
import jaxx.runtime.JAXXObject;
import jaxx.runtime.swing.JAXXTab;
@@ -65,40 +62,22 @@
JComboBox jComboBox = getChangePageComboBox(myTab.getUI());
if (jComboBox == null || !jComboBox.isEnabled()) {
return false;
- }
- ListTabModel model = (ListTabModel) myTab.getModel();
- Integer oldPage = model.getPagination().getCurrentPage();
+ }
+ Integer oldPage = ((ListTabModel) myTab.getModel()).getPagination().getCurrentPage();
+
Object o = jComboBox.getSelectedItem();
- if (o != null) {
- newPage = Integer.valueOf(o + "");
- }
- return o != null && !oldPage.equals(newPage);
+ log.info("selected number page "+o.getClass()+" : "+o);
+ newPage = o != null?null:Integer.valueOf(o + "");
+ return newPage != null && !oldPage.equals(newPage);
}
@Override
- protected void doAction(ActionEvent e) throws Exception {
- // user ask to change page
- final ListTabModel model = (ListTabModel) getModel();
- final PaginationModel pagination = model.getPagination();
-
- int width = pagination.getWidth();
- long newFirstIndex = newPage * width;
-
- // save new firstIndex in model
- pagination.setFirstIndex(newFirstIndex);
-
- // update model
- model.updateTabModel(getContext(), (ListTableModel) ((JListTab) getUI()).getTable().getModel(), false);
+ protected void doAction(ActionEvent e) throws Exception {
+ ListTabModel model = (ListTabModel) getModel();
+ model.setPageNumber(newPage);
}
@Override
- public void updateUI() {
- super.updateUI();
- // refresh ui
- getTab().updateUI(getContext(),getMainUI());
- }
-
- @Override
protected void clear() {
setTab(null);
newPage = null;
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeSizorAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeSizorAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeSizorAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -18,11 +18,9 @@
* ##% */
package fr.cemagref.simexplorer.is.ui.swing.actions;
-import fr.cemagref.simexplorer.is.entities.metadata.MetaData;
-import fr.cemagref.simexplorer.is.ui.swing.ui.JListTab;
import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractTabAction;
import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.ListTableModel;
+import jaxx.util.SimplePaginationEnum;
import javax.swing.Action;
import javax.swing.JComboBox;
@@ -43,7 +41,7 @@
public class ChangeSizorAction extends SimExplorerAbstractTabAction {
private static final long serialVersionUID = 5137512273375524199L;
- protected Integer newWidth;
+ protected SimplePaginationEnum newWidth;
protected ListTabModel model;
public ChangeSizorAction(String name) {
@@ -57,10 +55,10 @@
return false;
}
model = (ListTabModel) getModel();
- Integer oldIndex = model.getPagination().getWidth();
+ SimplePaginationEnum oldIndex = model.getPagination().getWidth();
Object o = jComboBox.getSelectedItem();
if (o != null) {
- newWidth = Integer.valueOf(o + "");
+ newWidth = (SimplePaginationEnum) o;
}
return o != null && !oldIndex.equals(newWidth);
}
@@ -69,24 +67,15 @@
protected void doAction(ActionEvent e) throws Exception {
// on sauvegarde dans la config la nouvelle valeur
boolean remote = model.isRemote();
- if (remote) {
+ /*if (remote) {
getContext().getConfig().setRemoteSizor(newWidth);
} else {
getContext().getConfig().setLocalSizor(newWidth);
- }
- model.synch(remote, (MetaData) null);
- // update model
- model.updateTabModel(getContext(), (ListTableModel) ((JListTab) getUI()).getTable().getModel(), true);
+ }*/
+ model.setWidth(newWidth);
}
@Override
- public void updateUI() {
- super.updateUI();
- // refresh ui
- getTab().updateUI(getContext(),getMainUI());
- }
-
- @Override
protected void clear() {
// multi-tab action
setTab(null);
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CollapseAllAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CollapseAllAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CollapseAllAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -60,7 +60,7 @@
return false;
}
- tree = getTreeForAction("collapseAll", getActionName());
+ tree = getTreeForAction(getUI(),"collapseAll", getActionName());
node = EntityTreeNodeHelper.getSelectedNodeOrRootNode(tree);
return !(node == null || node.isLeaf());
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -22,15 +22,10 @@
import fr.cemagref.simexplorer.is.exceptions.SimExplorerRuntimeException;
import fr.cemagref.simexplorer.is.exceptions.UnreachableServiceException;
import fr.cemagref.simexplorer.is.service.AuthenticationServiceHelper;
-import fr.cemagref.simexplorer.is.ui.swing.ui.JDetailTab;
-import fr.cemagref.simexplorer.is.ui.swing.ui.JListTab;
import fr.cemagref.simexplorer.is.ui.swing.ui.LoginUI;
import fr.cemagref.simexplorer.is.ui.swing.StorageServiceHelper;
import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractAction;
-import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel;
import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
-import fr.cemagref.simexplorer.is.ui.swing.ui.DetailTabRefreshHelper;
-import fr.cemagref.simexplorer.is.ui.swing.ui.ListTabRefreshHelper;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerMainUI;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab;
import static org.codelutin.i18n.I18n._;
@@ -110,18 +105,15 @@
ui.getToggleTab_remote().setEnabled(true);
JTabbedPane container = ui.getContent();
- DetailTabModel model = (DetailTabModel) SimExplorerTab.detail.getModel();
- JDetailTab tabUI = (JDetailTab) SimExplorerTab.detail.getUI();
if (SimExplorerTab.detail.isTabVisible(container)) {
- DetailTabRefreshHelper.refreshSynchroniseAction(getContext(), tabUI, model);
- DetailTabRefreshHelper.refreshExportAction(getMainUI(),getContext(),tabUI, model);
+ getDetailUpdater(this).refreshWithConnectAction();
}
if (SimExplorerTab.local.isTabVisible(container)) {
ListTabModel localListModel = (ListTabModel) SimExplorerTab.local.getModel();
if (!localListModel.isEmpty()) {
- ListTabRefreshHelper.refreshListTablePopupMenu(ui,getContext(), (JListTab) SimExplorerTab.local.getUI(), localListModel);
+ getListUpdater(this,false).refreshListTablePopupMenu(localListModel);
}
}
// }
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -23,12 +23,8 @@
import fr.cemagref.simexplorer.is.ui.swing.StorageServiceHelper;
import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractTabAction;
import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.ListTableModel;
import fr.cemagref.simexplorer.is.ui.swing.model.SynchronizeTabModel;
-import fr.cemagref.simexplorer.is.ui.swing.ui.JListTab;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab;
-import fr.cemagref.simexplorer.is.ui.swing.ui.SynchronizeTabRefreshHelper;
import static org.codelutin.i18n.I18n._;
import javax.swing.JOptionPane;
@@ -91,7 +87,6 @@
return selectedUuid;
}
-
@Override
protected void doAction(ActionEvent e) throws Exception {
super.doAction(e);
@@ -99,48 +94,23 @@
// effectue la suppression
boolean remote = selected.isRemote();
- StorageServiceHelper.deleteElement(getContext(), remote, selected.getUuid(), selected.getVersion().toString());
+ String uuid = selected.getUuid();
+ StorageServiceHelper.deleteElement(getContext(), remote, uuid, selected.getVersion().toString());
- {
- ListTabModel model = SimExplorerTab.getListModel(remote);
- JListTab ui = SimExplorerTab.getListUI(remote);
- model.updateTabModel(getContext(), (ListTableModel) ui.getTable().getModel(), true);
- }
+ SimExplorerTab.getListModel(remote).reload();
if (SimExplorerTab.synchronize.isTabVisible(getTabContainer())) {
+
SynchronizeTabModel model = (SynchronizeTabModel) SimExplorerTab.synchronize.getModel();
- LoggableElement item = model.getRootNode(remote);
- if (item != null && item.getMetaData().getUuid().equals(selected.getUuid())) {
- synchronizeModified = true;
- oldLocalRoot = model.getRootNode(false);
- oldRemoteRoot = model.getRootNode(true);
- if (model.getRootNode(!remote)==null) {
- model.setRootNode(null,false);
- model.setRootNode(null,false);
- }
- selected.setRemote(!remote);
- model.updateTabModel(getContext(), selected);
- selected.setRemote(remote);
- }
+
+ model.reloadSources(getContext(), uuid, !remote,remote,!remote,remote);
}
// suppression de l'élément de l'historique (si present)
- SimExplorerActionManager.fireAction("historyDelete", e.getSource());
+ SimExplorerActionManager.fireSelectedAction("historyDelete", e.getSource(), selected);
}
- @Override
- public void updateUI() {
- SimExplorerTab.getListTab(selected.isRemote()).updateUI(getContext(), getMainUI());
-
- // update detail model (delegue a l'action d'historique)
-
- if (synchronizeModified != null && synchronizeModified) {
- SynchronizeTabRefreshHelper.updateTree(getMainUI(),getContext(), getTabContainer(), oldLocalRoot, oldRemoteRoot);
- }
- }
-
-
@Override
protected void clear() {
super.clear();
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DetailToTreeAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DetailToTreeAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DetailToTreeAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -19,14 +19,9 @@
package fr.cemagref.simexplorer.is.ui.swing.actions;
import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
-import fr.cemagref.simexplorer.is.entities.metadata.Version;
-import fr.cemagref.simexplorer.is.ui.swing.ui.JDetailTab;
-import fr.cemagref.simexplorer.is.ui.swing.StorageServiceHelper;
+import fr.cemagref.simexplorer.is.ui.swing.SimExplorerActionManager;
import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractTabAction;
-import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode;
-import fr.cemagref.simexplorer.is.ui.swing.ui.DetailTabRefreshHelper;
-import fr.cemagref.simexplorer.is.ui.swing.ui.EntityTreeNodeHelper;
+import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel;
import java.awt.event.ActionEvent;
@@ -47,13 +42,10 @@
)
public class DetailToTreeAction extends SimExplorerAbstractTabAction {
- EntityTreeNode node;
LoggableElement element;
- String uuid;
- Version version;
- DetailTabModel model;
private static final long serialVersionUID = 2165684159831076054L;
+ protected DataEntityModel selected;
public DetailToTreeAction(String name) {
super(name);
@@ -64,34 +56,27 @@
if (!super.beforeAction(e)) {
return false;
}
- model = (DetailTabModel) getModel();
- uuid = model.getDetail().getUuid();
- version = model.getSelectedVersion();
- element = StorageServiceHelper.getElement(getContext(), model.isRemote(), uuid, version.toString());
- return element != null;
+ if (selected == null) {
+ // on doit retrouver l'élément à traiter à partir de la source
+ selected = findSelectedItem(e);
+ }
+ return selected != null && selected.getUuid() != null;
}
@Override
protected void doAction(ActionEvent e) throws Exception {
- model.setRootNode(element);
- // create navigation tree
- EntityTreeNode root = EntityTreeNodeHelper.build(model.getRootNode(), model.isRemote());
- model.getHistory().add(root);
- }
+ // on synchronise le nouvel element
+ //LoggableElement element1 = selected.getLe(getContext());
- @Override
- public void updateUI() {
- // push it in tree
- DetailTabRefreshHelper.updateDetailNavigationTree(getMainUI(), (JDetailTab) getUI(), model.getHistory());
+ //log.info("detailToTree selected : "+selected);
+ //getModel().synch(selected.isRemote(), element1);
+ // ajout de l'élément dans l'historique
+ SimExplorerActionManager.fireSelectedAction("historyAdd", e.getSource(),selected);
}
@Override
protected void clear() {
super.clear();
- node = null;
- element = null;
- version = null;
- uuid = null;
- model = null;
+ selected = null;
}
}
\ No newline at end of file
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DownloadAttachmentAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DownloadAttachmentAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DownloadAttachmentAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -40,7 +40,8 @@
longDescription = "simexplorer.action.downloadAttachment.help",
smallIcon = "action/download-attachment.png",
mnemonic = 'x',
- hideActionText = true
+ hideActionText = true,
+ enabled = false
)
public class DownloadAttachmentAction extends DownloadAbstractAction {
@@ -57,24 +58,24 @@
DetailTabModel model = (DetailTabModel) getModel();
Integer selectedAttachment = model.getSelectedAttachmentIndex();
// FIXME !!!
- return null;
-// attachment = selected.getLe(context) getAttachment(selectedAttachment);
-// if (attachment == null) {
-// return null;
-// }
-// // ask user path where to save data
-// String dir = FileUtil.getDirectory(_("simexplorer.action.download.attachment", attachment.getFileName(), selected.getMeta().getName() + " [" + selected.getVersion() + "]"), _("simexplorer.choose.dir"));
-// if (dir == null) {
-// // user cancel action
-// return null;
-// }
-// File parent = new File(dir);
-// if (!parent.exists()) {
-// parent.mkdirs();
-// }
-// File file;
-// file = new File(parent, attachment.getFileName());
-// return file;
+ //return null;
+ attachment = selected.getLe(getContext()).getAttachment(selectedAttachment);
+ if (attachment == null) {
+ return null;
+ }
+ // ask user path where to save data
+ String dir = FileUtil.getDirectory(_("simexplorer.action.download.attachment", attachment.getFileName(), selected.getMeta().getName() + " [" + selected.getVersion() + "]"), _("simexplorer.choose.dir"));
+ if (dir == null) {
+ // user cancel action
+ return null;
+ }
+ File parent = new File(dir);
+ if (!parent.exists()) {
+ parent.mkdirs();
+ }
+ File file;
+ file = new File(parent, attachment.getFileName());
+ return file;
}
protected BufferedInputStream getInputStream() {
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExpandAllAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExpandAllAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExpandAllAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -60,7 +60,7 @@
if (!super.beforeAction(e)) {
return false;
}
- tree = getTreeForAction("expandAll", getActionName());
+ tree = getTreeForAction(getUI(), "expandAll", getActionName());
node = EntityTreeNodeHelper.getSelectedNodeOrRootNode(tree);
return !(node == null || node.isLeaf());
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -27,12 +27,9 @@
import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel;
import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel;
import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.ListTableModel;
import fr.cemagref.simexplorer.is.ui.swing.model.SimExplorerTabModel;
import fr.cemagref.simexplorer.is.ui.swing.model.SynchronizeTabModel;
-import fr.cemagref.simexplorer.is.ui.swing.ui.JListTab;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab;
-import fr.cemagref.simexplorer.is.ui.swing.ui.SynchronizeTabRefreshHelper;
import jaxx.runtime.UIHelper;
import jaxx.runtime.builder.TabModel;
import static org.codelutin.i18n.I18n.n_;
@@ -60,12 +57,6 @@
protected StorageService toService;
/** le modèle de sélection */
protected DataEntityModel selected;
- /** flag pour indiquer si le model de l'onglet de synchro a ete modifie */
- protected Boolean synchronizeModified;
- /** l'ancien local root node de la synchro */
- protected LoggableElement oldLocalRoot;
- /** l'ancien remote root node de la synchro */
- protected LoggableElement oldRemoteRoot;
private static final long serialVersionUID = 7535647131305304738L;
@@ -150,52 +141,40 @@
@Override
protected void doAction(ActionEvent e) throws Exception {
boolean remote = selected.isRemote();
+
StorageService fromService = StorageServiceHelper.getService(getContext(), remote);
StorageService toService = StorageServiceHelper.getService(getContext(), !remote);
+
log.info("fromService : " + fromService);
log.info("toService : " + toService);
log.info("selected : " + selected);
- fr.cemagref.simexplorer.is.service.StorageServiceHelper.exportElementTo(getContext().getToken(), fromService, toService, selected.getUuid(), selected.getVersion().toString());
- {
- ListTabModel model = SimExplorerTab.getListModel(!remote);
- JListTab ui = SimExplorerTab.getListUI(!remote);
- model.updateTabModel(getContext(), (ListTableModel) ui.getTable().getModel(), true);
- }
+ String uuid = selected.getUuid();
+ fr.cemagref.simexplorer.is.service.StorageServiceHelper.exportElementTo(getContext().getToken(), fromService, toService, uuid, selected.getVersion().toString());
+ SimExplorerTab.getListModel(!remote).reload();
+
if (SimExplorerTab.synchronize.isTabVisible(getTabContainer())) {
SynchronizeTabModel model = (SynchronizeTabModel) SimExplorerTab.synchronize.getModel();
- LoggableElement item = model.getRootNode(remote);
- if (item != null && item.getMetaData().getUuid().equals(selected.getUuid())) {
- synchronizeModified = true;
- oldLocalRoot = model.getRootNode(false);
- oldRemoteRoot = model.getRootNode(true);
- model.updateTabModel(getContext(), selected);
- }
+
+ model.reloadSources(getContext(), uuid, false,false,remote,!remote);
}
// suppression de l'élément de l'historique (si present)
- SimExplorerActionManager.fireAction("historyDeleteExport", e.getSource());
+ SimExplorerActionManager.fireSelectedAction("historyDeleteExport", e.getSource(), selected);
}
@Override
public void updateUI() {
- SimExplorerTab.getListTab(!selected.isRemote()).updateUI(getContext(), getMainUI());
-
// update detail model (delegue a l'action d'historique)
- if (synchronizeModified != null && synchronizeModified) {
- SynchronizeTabRefreshHelper.updateTree(getMainUI(), getContext(), getTabContainer(), oldLocalRoot, oldRemoteRoot);
- }
}
@Override
protected void clear() {
selected = null;
fromService = toService = null;
- oldLocalRoot = oldRemoteRoot = null;
- synchronizeModified = null;
// l'action est multi-tab
setTab(null);
}
Deleted: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementToLocalAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementToLocalAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementToLocalAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -1,63 +0,0 @@
-/*
-* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Code Lutin,
-* Tony Chemit, Gabriel Landais
-*
-* 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.cemagref.simexplorer.is.ui.swing.actions;
-
-import fr.cemagref.simexplorer.is.entities.EntityHelper;
-import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
-import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.SynchronizeTabModel;
-
-import java.awt.event.ActionEvent;
-
-/**
- * Action pour exporter un élément vers la base locale
- *
- * @author chemit
- */
- at jaxx.runtime.builder.ActionConfig(
- actionCommand = "exportElementToLocal",
- name = "simexplorer.action.exportElementToLocal",
- longDescription = "simexplorer.action.exportElementToLocal.help",
- smallIcon = "action/export-element-to-local.png",
- mnemonic = 'x',
- hideActionText = true
-)
-public class ExportElementToLocalAction extends ExportElementAction {
-
- private static final long serialVersionUID = 7535647131305304738L;
-
- public ExportElementToLocalAction(String name) {
- super(name);
- }
-
- @Override
- protected boolean beforeAction(ActionEvent e) throws Exception {
- if (!super.beforeAction(e)) {
- return false;
- }
- SynchronizeTabModel model = (SynchronizeTabModel) getModel();
- LoggableElement element = model.getSelectedNode(true);
- boolean result;
- if (result = EntityHelper.Action.EXPORT.accept(element)) {
- selected = new DataEntityModel();
- selected.synch(true, element);
- }
- return result;
- }
-}
\ No newline at end of file
Deleted: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementToRemoteAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementToRemoteAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementToRemoteAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -1,63 +0,0 @@
-/*
-* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Code Lutin,
-* Tony Chemit, Gabriel Landais
-*
-* 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.cemagref.simexplorer.is.ui.swing.actions;
-
-import fr.cemagref.simexplorer.is.entities.EntityHelper;
-import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
-import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.SynchronizeTabModel;
-
-import java.awt.event.ActionEvent;
-
-/**
- * Action pour exporter un élément vers la base distante
- *
- * @author chemit
- */
- at jaxx.runtime.builder.ActionConfig(
- actionCommand = "exportElementToRemote",
- name = "simexplorer.action.exportElementToRemote",
- longDescription = "simexplorer.action.exportElementToRemote.help",
- smallIcon = "action/export-element-to-remote.png",
- mnemonic = 'x',
- hideActionText = true
-)
-public class ExportElementToRemoteAction extends ExportElementAction {
-
- private static final long serialVersionUID = 7535647131305304738L;
-
- public ExportElementToRemoteAction(String name) {
- super(name);
- }
-
- @Override
- protected boolean beforeAction(ActionEvent e) throws Exception {
- if (!super.beforeAction(e)) {
- return false;
- }
- SynchronizeTabModel model = (SynchronizeTabModel) getModel();
- LoggableElement element = model.getSelectedNode(false);
- boolean result;
- if (result = EntityHelper.Action.EXPORT.accept(element)) {
- selected = new DataEntityModel();
- selected.synch(false, element);
- }
- return result;
- }
-}
\ No newline at end of file
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetSearchAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetSearchAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetSearchAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -18,11 +18,8 @@
* ##% */
package fr.cemagref.simexplorer.is.ui.swing.actions;
-import fr.cemagref.simexplorer.is.entities.metadata.MetaData;
-import fr.cemagref.simexplorer.is.ui.swing.ui.JListTab;
import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractTabAction;
import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.ListTableModel;
import java.awt.event.ActionEvent;
@@ -52,14 +49,11 @@
@Override
protected boolean beforeAction(ActionEvent e) throws Exception {
ListTabModel model = (ListTabModel) getModel();
- JListTab ui = (JListTab) getUI();
- // always clean the input text (should be done in jaxx)
- ui.getSearchText().setText(null);
- if (!model.getQuery().hasQuery()) {
+
+ if (!model.hasQuery()) {
// directly refresh search actions
// but do not realize action
- updateUI();
- //ListTabRefreshHelper.refreshSearchActions(ui,model);
+ getListUpdater(this, model.isRemote()).resetSearch();
return false;
}
// only reset search if something was previously search
@@ -68,27 +62,11 @@
@Override
protected void doAction(ActionEvent e) throws Exception {
-
- ListTabModel model = (ListTabModel) getModel();
-
// reset query in model
- model.setQuery(null);
- // reset selected item
- model.synch(model.isRemote(), (MetaData) null);
- log.info("sync " + model.getSelectedItem());
-
- // update model
- model.updateTabModel(getContext(), (ListTableModel) ((JListTab) getUI()).getTable().getModel(), true);
+ ((ListTabModel) getModel()).resetQuery();
}
@Override
- public void updateUI() {
- super.updateUI();
- // refresh ui
- getTab().updateUI(getContext(),getMainUI());
- }
-
- @Override
protected void clear() {
super.clear();
setTab(null);
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -18,11 +18,8 @@
* ##% */
package fr.cemagref.simexplorer.is.ui.swing.actions;
-import fr.cemagref.simexplorer.is.entities.metadata.MetaData;
-import fr.cemagref.simexplorer.is.ui.swing.ui.JListTab;
import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractTabAction;
import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.ListTableModel;
import javax.swing.JTextField;
import java.awt.event.ActionEvent;
@@ -56,32 +53,17 @@
JTextField uiObject = (JTextField) getUIObject("searchText");
query = uiObject.getText();
ListTabModel model = (ListTabModel) getModel();
- return !query.isEmpty() && !query.equals(model.getQuery().getQuery());
+ return !query.isEmpty() && !query.equals(model.getQuery());
}
@Override
protected void doAction(ActionEvent e) throws Exception {
- ListTabModel model = (ListTabModel) getModel();
- model.getQuery().setQuery(query);
- // on supprime la selection courante avant tout
- model.synch(model.isRemote(), (MetaData) null);
- model.setSelectedIndex(-1);
-
- //model.getQuery().setSortAscending(false);
- //model.getQuery().setSortColumn(SortColumn.None);
-
- // update model
- model.updateTabModel(getContext(), (ListTableModel) ((JListTab) getUI()).getTable().getModel(), true);
+ ListTabModel model = (ListTabModel) getModel();
+ model.setQuery(query);
}
@Override
- public void updateUI() {
- // refresh tab ui
- getTab().updateUI(getContext(),getMainUI());
- }
-
- @Override
protected void clear() {
query = null;
setTab(null);
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -19,29 +19,29 @@
import fr.cemagref.simexplorer.is.entities.attachment.Attachment;
import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
-import fr.cemagref.simexplorer.is.entities.metadata.MetaData;
import fr.cemagref.simexplorer.is.entities.metadata.Version;
-import fr.cemagref.simexplorer.is.ui.swing.ui.JDetailTab;
+import fr.cemagref.simexplorer.is.ui.swing.SimExplorerActionManager;
import fr.cemagref.simexplorer.is.ui.swing.StorageServiceHelper;
import fr.cemagref.simexplorer.is.ui.swing.actions.util.ShowTabAbstractAction;
+import fr.cemagref.simexplorer.is.ui.swing.actions.util.SelectedAction;
import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel;
import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel;
import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode;
-import fr.cemagref.simexplorer.is.ui.swing.ui.DetailTabRefreshHelper;
import fr.cemagref.simexplorer.is.ui.swing.ui.EntityTreeNodeHelper;
+import fr.cemagref.simexplorer.is.ui.swing.ui.JDetailTab;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab;
+import fr.cemagref.simexplorer.is.ui.swing.ui.TreeActionsUpdater;
-import javax.swing.DefaultComboBoxModel;
+import javax.swing.AbstractButton;
+import javax.swing.JTree;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
-import javax.swing.tree.TreePath;
+import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
/**
* Action pour afficher le tab de détail d'un LoggableElement.
@@ -59,36 +59,48 @@
longDescription = "simexplorer.action.showTab_detail.help",
smallIcon = "action/show-tab-detail.png",
mnemonic = 'd',
- hideActionText = false
+ hideActionText = true
)
-public class ShowDetailTabAction extends ShowTabAbstractAction<JDetailTab, DetailTabModel> {
+public class ShowDetailTabAction extends ShowTabAbstractAction<JDetailTab, DetailTabModel> implements SelectedAction {
+
/** la donnée à afficher dans l'onglet de détail */
protected DataEntityModel selected;
- /** le listener de navigation dans l'arbre */
- protected NavigationSelectionListener navigationListener;
- /** le listener de navigation dans les versions */
- protected VersionSelectionListener versionListener;
- /** le listener de navigation dans les fichiers attachés */
- protected AttachmentSelectionListener attachmentListener;
private static final long serialVersionUID = 6643631041114311643L;
public ShowDetailTabAction(String name) {
super(name);
- navigationListener = new NavigationSelectionListener();
- versionListener = new VersionSelectionListener();
- attachmentListener = new AttachmentSelectionListener();
}
@Override
+ public String getI18nToolTipText() {
+ return "simexplorer.action.showTab_detail.tooltip";
+ }
+
+ @Override
protected boolean beforeAction(ActionEvent e) throws Exception {
if (!super.beforeAction(e)) {
return false;
}
if (selected == null) {
- // on doit retrouver l'élément à traiter à partir de la source
- selected = findSelectedItem(e);
- }
+ SimExplorerTab sourceTab = SimExplorerTab.findTab((Component) e.getSource());
+ if (sourceTab == SimExplorerTab.synchronize) {
+ // find the tree
+ JTree tree = getTreeForAction(SimExplorerTab.synchronize.getUI(), "showTab", getParam());
+ //JTree tree = getTreeForAction("showTab", getParam().substring(7));
+ if (tree != null) {
+ log.debug("---------------------- incoming tree " + tree);
+ EntityTreeNode node = EntityTreeNodeHelper.getSelectedNode(tree);
+ if (node != null) {
+ selected = new DataEntityModel();
+ selected.synch(node);
+ }
+ }
+ } else {
+ // on doit retrouver l'élément à traiter à partir de la source
+ selected = findSelectedItem(e);
+ }
+ }
boolean selectedUuid = selected != null && selected.getUuid() != null;
if (!selectedUuid) {
return false;
@@ -101,25 +113,70 @@
detailModel.setSelectedItem(selected);
// chargement de l'élément à partir du service
- // délégué au model de selection
- LoggableElement element = (LoggableElement) detailModel.getSelectedItem().get(getContext());
-
- // positionnement du rootNode du modèle
- detailModel.setRootNode(element);
-
- return element != null;
+ // délégué au model de selection
+ return detailModel.getSelectedItem().getLe(getContext()) != null;
}
+ NavigationSelectionListener navigationSelectionListener;
+ TreeActionUpdater treeActionUpdater;
+ VersionSelectionListener versionSelectionListener;
+ AttachmentSelectionListener attachmentSelectionListener;
+
protected void initFirstUsage(final JDetailTab ui, final DetailTabModel model) {
// add a listener on navigation tree
- ui.getNavigationTree().addTreeSelectionListener(navigationListener);
+ navigationSelectionListener = new NavigationSelectionListener();
+ ui.getNavigationTree().addTreeSelectionListener(navigationSelectionListener);
+
+ // add a listener to refresh navigation toolbar actions
+ treeActionUpdater = new TreeActionUpdater();
+ ui.getNavigationTree().addTreeSelectionListener(treeActionUpdater);
+
// add a listener on versions list
- ui.getDetailVersions().addItemListener(versionListener);
+ versionSelectionListener = new VersionSelectionListener();
+ ui.getDetailVersions().addItemListener(versionSelectionListener);
+
// add a listener on attachments list
- ui.getDetailAttachments().addListSelectionListener(attachmentListener);
+ attachmentSelectionListener = new AttachmentSelectionListener();
+ ui.getDetailAttachments().addListSelectionListener(attachmentSelectionListener);
+
+ // init updater listens the model
+ getDetailUpdater(this).initListeners();
}
+ public void setSelected(DataEntityModel selected) {
+ this.selected = selected;
+ }
+
@Override
+ protected void updateUI(JDetailTab ui, DetailTabModel model) {
+
+ // ajout de l'élément dans l'historique
+ SimExplorerActionManager.fireSelectedAction("historyAdd", e.getSource(),selected);
+ }
+
+ @Override
+ public void disposeUI() {
+ super.disposeUI();
+ if (navigationSelectionListener!=null) {
+ getTabUI().getNavigationTree().removeTreeSelectionListener(navigationSelectionListener);
+ navigationSelectionListener=null;
+ }
+ if (treeActionUpdater!=null) {
+ getTabUI().getNavigationTree().removeTreeSelectionListener(treeActionUpdater);
+ treeActionUpdater=null;
+ }
+ if (versionSelectionListener!=null) {
+ getTabUI().getDetailVersions().removeItemListener(versionSelectionListener);
+ versionSelectionListener=null;
+ }
+
+ if (attachmentSelectionListener!=null) {
+ getTabUI().getDetailAttachments().removeListSelectionListener(attachmentSelectionListener);
+ attachmentSelectionListener=null;
+ }
+ }
+
+ @Override
protected void clear() {
super.clear();
selected = null;
@@ -130,203 +187,75 @@
*
* @author chemit
*/
- protected class NavigationSelectionListener implements TreeSelectionListener, PropertyChangeListener {
+ protected class NavigationSelectionListener implements TreeSelectionListener {
- public NavigationSelectionListener() {
- getTabModel().addPropertyChangeListener(DetailTabModel.SELECTED_NODE_PROPERTY_CHANGED, this);
- }
-
public void valueChanged(TreeSelectionEvent e) {
+
DetailTabModel model = getTabModel();
- TreePath path = e.getNewLeadSelectionPath();
- EntityTreeNode node = null;
- if (path != null) {
- node = (EntityTreeNode) path.getLastPathComponent();
- }
-
- // always reset version index, in that way, if there is no more
- // version list, nothing will be trigger by setting selectedVersion
- // null, it means also that we have to reset detail always from this
- // class (in method propertyChange).
- // The VersionListener will deal only with a real version selection.
+ // always reset version index and attachment, since it will be
+ // write again, this will prevent us to have two events : once for
+ // XXX -> null, then null -> YYY
model.resetSelectedVersion();
- // update history list
- LoggableElement element = node == null ? null : node.getLoggableElement();
- boolean history = element != null;
- Version selectedVersion;
- Integer selectedAttachment;
- Version[] versions;
- if (!history) {
- versions = null;
- selectedVersion = null;
- selectedAttachment = null;
- } else {
- versions = StorageServiceHelper.getVersions(getContext(), model.isRemote(), element.getMetaData().getUuid());
- selectedVersion = element.getMetaData().getVersion();
- selectedAttachment = element.getAttachments().isEmpty() ? null : 0;
- }
+ // update versions list
+ EntityTreeNode node = EntityTreeNodeHelper.getSelectedNode(e);
- model.setVersions(versions);
- model.setDetail(element == null ? null : element.getMetaData());
+ LoggableElement element = null;
+ if (node != null) {
+ element = node.getLoggableElement();
+ if (node.isLoggableElement()) {
+
+ Version[] versions;
+ versions = StorageServiceHelper.getVersions(getContext(), node.isRemote(), element.getMetaData().getUuid());
+ model.setVersions(versions);
+ }
+ }
// le node est acceptable uniquement si c'est un loggableElement
model.setSelectedNode(element);
-
- // on positionne la version selectionnee
- model.setSelectedVersion(selectedVersion);
-
- // on positionne l'attachment selectionne
- model.setSelectedAttachmentIndex(selectedAttachment);
-
- //TODO on ne doit pas modifier les ui dans cette méthode
- // on rafraichit toujours ici les actions de l'arbre qui sont
- // indépendantes du model et dépendent juste du noeud sélectionné
- DetailTabRefreshHelper.refreshTreeDetailActions(getTabUI(), node);
}
- /**
- * Notify a modification in the model.
- * <p/>
- * This method will update ui.
- *
- * @param evt event coming from DetailTabModel
- */
- public void propertyChange(PropertyChangeEvent evt) {
- if (log.isDebugEnabled()) {
- log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
- }
- JDetailTab ui = getTabUI();
- DetailTabModel model = getTabModel();
- DefaultComboBoxModel historyModel = (DefaultComboBoxModel) ui.getDetailVersions().getModel();
-
- boolean wasEnable = versionListener.isEnabled();
- boolean wasEnable2 = attachmentListener.isEnabled();
- // disable version listener on selection (we already have updated model)
- versionListener.setEnabled(false);
- attachmentListener.setEnabled(false);
- // refresh ui
- DetailTabRefreshHelper.resetHistory(ui, model, historyModel);
- // push back previous state of version listener
- versionListener.setEnabled(wasEnable);
- attachmentListener.setEnabled(wasEnable2);
- // update actions on toolbar
- EntityTreeNode node = EntityTreeNodeHelper.getSelectedNode(ui.getNavigationTree());
- DetailTabRefreshHelper.refreshDetailActions(getMainUI(),getContext(), ui, model, node);
-
- EntityTreeNode rootNode = EntityTreeNodeHelper.getRootNode(ui.getNavigationTree());
- if (model.getDetail() != null && !node.equals(rootNode)) {
- // refresh detail to tree button only if required
- DetailTabRefreshHelper.refreshDetailToTreeAction(ui, model);
- }
- }
}
- private class VersionSelectionListener implements PropertyChangeListener, ItemListener {
+ private class VersionSelectionListener implements ItemListener {
- protected boolean enabled;
-
- public VersionSelectionListener() {
- enabled = true;
- getTabModel().addPropertyChangeListener(DetailTabModel.SELECTED_VERSION_INDEX_PROPERTY_CHANGED, this);
- }
-
public void itemStateChanged(ItemEvent e) {
- if (!isEnabled()) {
- return;
- }
+
JDetailTab ui = getTabUI();
- DetailTabModel model = getTabModel();
- MetaData metas;
Object selectedItem = ui.getDetailVersions().getSelectedItem();
if (selectedItem == null) {
- throw new NullPointerException("can not have a selectedItem null");
+ // no item selected, so nothing to do
+ return;
}
- Integer selectedAttachment;
- Version selectedVersion = Version.valueOf(selectedItem.toString());
- if (log.isDebugEnabled()) {
- log.debug("selected version (" + selectedVersion + ") " + selectedItem);
- }
- metas = StorageServiceHelper.getMetaData(
- getContext(),
- model.isRemote(),
- model.getSelectedNode().getMetaData().getUuid(),
- selectedVersion.toString()
- );
- // FIXME !!!
- selectedAttachment = null;
-// selectedAttachment = metas.getAttachments().isEmpty() ? null : 0;
+ DetailTabModel model = getTabModel();
- model.setDetail(metas);
+ Version selectedVersion = Version.valueOf(selectedItem.toString());
+ //if (log.isDebugEnabled()) {
+ log.info("selected version (" + selectedVersion + ") " + selectedItem);
+ //}
- // finally change selectedIndex
- model.setSelectedVersion(selectedVersion);
+ DataEntityModel item = model.getSelectedItem().cloneSafe();
- // on positionne l'attachment selectionne
- model.setSelectedAttachmentIndex(selectedAttachment);
+ item.synch(item.isRemote(), model.getDetailNode().getMetaData().getUuid(), selectedVersion);
- // refresh detail to tree button
- DetailTabRefreshHelper.refreshDetailToTreeAction(ui, model);
- }
+ // synchronize model
+ model.setSelectedItem(item);
- /**
- * When the model modifies his data, ui must be updated.
- * <p/>
- * Note : <b>Only used when the selectedVersion is not null.</b>
- *
- * @param evt property changed event
- */
- public void propertyChange(PropertyChangeEvent evt) {
- if (log.isDebugEnabled()) {
- log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
- }
- Integer index = (Integer) evt.getNewValue();
- JDetailTab ui = getTabUI();
- DetailTabModel model = getTabModel();
- LoggableElement selectedNode = model.getSelectedNode();
- boolean wasEnable = isEnabled();
- boolean wasEnable2 = attachmentListener.isEnabled();
- // disable this listener, while updating list model, it will
- // change the selection, and we don't want the model to be updated
- // again
- setEnabled(false);
- attachmentListener.setEnabled(false);
+ LoggableElement element = item.getLe(getContext());
- if (index == null || index == -1) {
- DetailTabRefreshHelper.resetDetailPanel(ui);
- } else {
- DetailTabRefreshHelper.updateDetailPanel(index, ui, model, selectedNode);
- }
- setEnabled(wasEnable);
- attachmentListener.setEnabled(wasEnable2);
- ui.getDetailAttachments().setSelectedIndex(0);
- // update actions on toolbar
- EntityTreeNode node = EntityTreeNodeHelper.getSelectedNodeOrRootNode(ui.getNavigationTree());
- DetailTabRefreshHelper.refreshDetailActions(getMainUI(),getContext(), ui, model, node);
- }
+ log.info("----- new detaul " + element);
+ model.setDetailNode(element);
- public boolean isEnabled() {
- return enabled;
- }
+ model.setSelectedVersion(selectedVersion);
- public void setEnabled(boolean enabled) {
- this.enabled = enabled;
}
-
}
- private class AttachmentSelectionListener implements PropertyChangeListener, ListSelectionListener {
+ private class AttachmentSelectionListener implements ListSelectionListener {
- protected boolean enabled;
-
- public AttachmentSelectionListener() {
- enabled = true;
- getTabModel().addPropertyChangeListener(DetailTabModel.SELECTED_ATTACHMENT_INDEX_PROPERTY_CHANGED, this);
- }
-
public void valueChanged(ListSelectionEvent e) {
if (!isEnabled()) {
return;
@@ -334,47 +263,28 @@
JDetailTab ui = getTabUI();
DetailTabModel model = getTabModel();
Object selectedItem = ui.getDetailAttachments().getSelectedValue();
- if (selectedItem == null) {
- throw new NullPointerException("can not have a attachment null");
+ Integer index = null;
+
+ if (selectedItem != null) {
+ Attachment attachment = (Attachment) selectedItem;
+ if (log.isDebugEnabled()) {
+ log.debug("selected attachment (" + attachment + ") " + selectedItem);
+ }
+ index = ui.getDetailAttachments().getSelectedIndex();
}
- Attachment attachment = (Attachment) selectedItem;
- if (log.isDebugEnabled()) {
- log.debug("selected attachment (" + attachment + ") " + selectedItem);
- }
- // finally change selectedIndex
- model.setSelectedAttachmentIndex(ui.getDetailAttachments().getSelectedIndex());
+ model.setSelectedAttachmentIndex(index);
}
+ }
- /**
- * When the model modifies his data, ui must be updated.
- * <p/>
- * Note : <b>Only used when the selectedVersion is not null.</b>
- *
- * @param evt property changed event
- */
- public void propertyChange(PropertyChangeEvent evt) {
- if (log.isDebugEnabled()) {
- log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
- }
- JDetailTab ui = getTabUI();
- DetailTabModel model = getTabModel();
- boolean wasEnable = isEnabled();
- // disable this listener, while updating list model, it will
- // change the selection, and we don't want the model to be updated
- // again
- setEnabled(false);
- DetailTabRefreshHelper.refreshDownloadAttachmentAction(ui, model);
- setEnabled(wasEnable);
- }
+ private class TreeActionUpdater extends TreeActionsUpdater {
- public boolean isEnabled() {
- return enabled;
+ protected AbstractButton getExpandAction() {
+ return getTabUI().getExpandAllDetail();
}
- public void setEnabled(boolean enabled) {
- this.enabled = enabled;
+ protected AbstractButton getCollapseAction() {
+ return getTabUI().getCollapseAllDetail();
}
}
-
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -25,13 +25,14 @@
import fr.cemagref.simexplorer.is.ui.swing.model.SynchronizeTabModel;
import fr.cemagref.simexplorer.is.ui.swing.ui.EntityTreeNodeHelper;
import fr.cemagref.simexplorer.is.ui.swing.ui.JSynchronizeTab;
+import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerMainUI;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab;
+import fr.cemagref.simexplorer.is.ui.swing.ui.TreeActionsUpdater;
+import javax.swing.AbstractButton;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
import java.awt.event.ActionEvent;
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
/**
* Action pour afficher le tab de synchronisation
@@ -61,6 +62,8 @@
protected TreeSelectionListener navigationRemoteListener;
protected TreeSelectionListener navigationActionsRemoteListener;
+ protected LoggableElement[] sources;
+
public ShowSynchronizeTabAction(String name) {
super(name);
}
@@ -76,42 +79,62 @@
return false;
}
- SynchronizeTabModel model = (SynchronizeTabModel) SimExplorerTab.synchronize.getModel();
-
// init synchronize tab model
- model.updateTabModel(getContext(), selected);
+ sources = ((SynchronizeTabModel) SimExplorerTab.synchronize.getModel()).guessSources(getContext(), selected);
return true;
}
protected void initFirstUsage(JSynchronizeTab ui, SynchronizeTabModel model) {
- navigationLocalListener = new NavigationSelectionListener(false);
- navigationRemoteListener = new NavigationSelectionListener(true);
+ navigationLocalListener = new NavigationSelectionListener(model, false);
+ navigationRemoteListener = new NavigationSelectionListener(model, true);
navigationActionsLocalListener = new NavigationActionsSelectionListener(ui, false);
navigationActionsRemoteListener = new NavigationActionsSelectionListener(ui, true);
+
// add a listener on navigation tree
ui.getTree(false).addTreeSelectionListener(navigationLocalListener);
ui.getTree(false).addTreeSelectionListener(navigationActionsLocalListener);
ui.getTree(true).addTreeSelectionListener(navigationRemoteListener);
ui.getTree(true).addTreeSelectionListener(navigationActionsRemoteListener);
+ // init updater listens the model
+ getSynchronizeUpdater(this).initListeners();
+
+ ui.getShowTabLocal_detail().setHideActionText(true);
+ ui.getShowTabRemote_detail().setHideActionText(true);
}
@Override
+ protected void updateUI(JSynchronizeTab ui, SynchronizeTabModel model) {
+ model.setSources(sources);
+ }
+
+ @Override
public void disposeUI() {
super.disposeUI();
JSynchronizeTab ui = getTabUI();
if (navigationActionsLocalListener != null) {
- ui.getTree(false).removeTreeSelectionListener(navigationLocalListener);
- ui.getTree(false).removeTreeSelectionListener(navigationActionsLocalListener);
- ui.getTree(true).removeTreeSelectionListener(navigationRemoteListener);
- ui.getTree(true).removeTreeSelectionListener(navigationActionsRemoteListener);
+ ui.getTree(false).removeTreeSelectionListener(navigationActionsLocalListener );
+ navigationActionsLocalListener=null;
}
+ if (navigationActionsRemoteListener!= null) {
+ ui.getTree(false).removeTreeSelectionListener(navigationActionsRemoteListener);
+ navigationActionsRemoteListener=null;
+ }
+ if (navigationLocalListener!= null) {
+ ui.getTree(true).removeTreeSelectionListener(navigationLocalListener);
+ navigationLocalListener=null;
+ }
+ if (navigationActionsRemoteListener != null) {
+ ui.getTree(true).removeTreeSelectionListener(navigationActionsRemoteListener );
+ navigationActionsRemoteListener =null;
+ }
}
@Override
protected void clear() {
super.clear();
selected = null;
+ sources = null;
}
/**
@@ -119,7 +142,7 @@
*
* @author chemit
*/
- protected class NavigationActionsSelectionListener implements TreeSelectionListener {
+ protected static class NavigationActionsSelectionListener extends TreeActionsUpdater {
protected final boolean remote;
protected JSynchronizeTab ui;
@@ -129,12 +152,21 @@
this.ui = ui;
}
+ @Override
public void valueChanged(TreeSelectionEvent e) {
- // get EntityTreeNode
+ super.valueChanged(e);
EntityTreeNode node = EntityTreeNodeHelper.getSelectedNode(e);
- // refresh tree actions
- EntityTreeNodeHelper.refreshTreeActions(ui.getCollapseButton(remote), ui.getExpandButton(remote), node);
+ boolean enable = node != null && node.isLoggableElement();
+ SimExplorerMainUI.UpdateButton(ui.getShowDetailButton(remote), enable, !enable ? null : node.getLoggableElement());
}
+
+ protected AbstractButton getExpandAction() {
+ return ui.getExpandButton(remote);
+ }
+
+ protected AbstractButton getCollapseAction() {
+ return ui.getCollapseButton(remote);
+ }
}
/**
@@ -142,38 +174,24 @@
*
* @author chemit
*/
- protected class NavigationSelectionListener implements TreeSelectionListener, PropertyChangeListener {
+ protected static class NavigationSelectionListener implements TreeSelectionListener {
protected boolean remote;
+ SynchronizeTabModel model;
- public NavigationSelectionListener(boolean remote) {
+ public NavigationSelectionListener(SynchronizeTabModel model, boolean remote) {
this.remote = remote;
- SynchronizeTabModel model = getTabModel();
- getTabModel().addPropertyChangeListener(model.getSelectedProperty(remote), this);
+ this.model = model;
+
}
public void valueChanged(TreeSelectionEvent e) {
- SynchronizeTabModel model = getTabModel();
-
EntityTreeNode node = EntityTreeNodeHelper.getSelectedNode(e);
LoggableElement element = node == null ? null : node.getLoggableElement();
model.setSelectedNode(element, remote);
}
-
- /**
- * Notify a modification in the model.
- * <p/>
- * This method will update ui.
- *
- * @param evt event coming from DetailTabModel
- */
- public void propertyChange(PropertyChangeEvent evt) {
- log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
- LoggableElement sNode = getTabModel().getSelectedNode(remote);
- getMainUI().refreshExportElement(getContext(), getTabUI().getExportButton(remote), remote, sNode);
- }
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/UnconnectAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/UnconnectAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/UnconnectAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -18,18 +18,14 @@
* ##% */
package fr.cemagref.simexplorer.is.ui.swing.actions;
-import fr.cemagref.simexplorer.is.ui.swing.ui.JDetailTab;
-import fr.cemagref.simexplorer.is.ui.swing.ui.JListTab;
import fr.cemagref.simexplorer.is.ui.swing.SimExplorerActionManager;
import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractAction;
-import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel;
import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode;
import fr.cemagref.simexplorer.is.ui.swing.model.HistoryModel;
import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
-import fr.cemagref.simexplorer.is.ui.swing.ui.DetailTabRefreshHelper;
-import fr.cemagref.simexplorer.is.ui.swing.ui.ListTabRefreshHelper;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerMainUI;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab;
+import fr.cemagref.simexplorer.is.ui.swing.ui.ListTabUpdater;
import javax.swing.JTabbedPane;
import java.awt.event.ActionEvent;
@@ -96,8 +92,6 @@
ui.getToggleTab_remote().setEnabled(false);
JTabbedPane container = ui.getContent();
- DetailTabModel model = (DetailTabModel) SimExplorerTab.detail.getModel();
- JDetailTab tabUI = (JDetailTab) SimExplorerTab.detail.getUI();
// close all connected ui
@@ -117,20 +111,17 @@
// select current history element
EntityTreeNode node = history.getCurrent();
- model.synch(node);
- //model.setRemote(node.isRemote());
- //model.setRootNode((LoggableElement) node.getUserObject());
- DetailTabRefreshHelper.updateDetailNavigationTree(tabUI, model.getHistory());
+ model.synch(node);
+ getDetailUpdater(this).updateDetailNavigationTree(tabUI, model.getHistory());
}
}*/
if (SimExplorerTab.detail.isTabVisible(container)) {
- DetailTabRefreshHelper.refreshSynchroniseAction(getContext(), tabUI, model);
- DetailTabRefreshHelper.refreshExportAction(getMainUI(),getContext(),tabUI, model);
+ getDetailUpdater(this).refreshWithConnectAction();
}
if (SimExplorerTab.local.isTabVisible(container)) {
- ListTabRefreshHelper.refreshListTablePopupMenu(ui,getContext(), (JListTab) SimExplorerTab.local.getUI(), (ListTabModel) SimExplorerTab.local.getModel());
+ getListUpdater(this,false).refreshListTablePopupMenu((ListTabModel) SimExplorerTab.local.getModel());
}
// }
//});
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAbstractAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAbstractAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAbstractAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -17,15 +17,12 @@
* ##% */
package fr.cemagref.simexplorer.is.ui.swing.actions.history;
-import fr.cemagref.simexplorer.is.entities.metadata.MetaData;
-import fr.cemagref.simexplorer.is.ui.swing.ui.JDetailTab;
+import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractTabAction;
import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel;
import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode;
import fr.cemagref.simexplorer.is.ui.swing.model.HistoryModel;
-import fr.cemagref.simexplorer.is.ui.swing.ui.DetailTabRefreshHelper;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab;
-import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerMainUI;
import java.awt.event.ActionEvent;
@@ -80,22 +77,21 @@
}
DetailTabModel model = (DetailTabModel) getModel();
if (node == null) {
- model.synch(model.isRemote(), (MetaData) null);
+ model.synch(model.isRemote(), (LoggableElement) null);
} else {
model.synch(node);
}
+ // set the new root node
+ model.setRootNode(node);
}
@Override
- public void updateUI() {
- if (!history.isEmpty()) {
- // select current history element
- DetailTabRefreshHelper.updateDetailNavigationTree(getMainUI(),(JDetailTab) getUI(), history);
- } else if (getTab().isTabVisible(getTabContainer())) {
- SimExplorerMainUI.UpdateButton(getMainUI().getHistoryReset(), !history.isEmpty());
- // close tab, no more history
- getTab().closeTab(getMainUI(), getTabContainer());
-
+ public void updateUI() {
+ if (history.isEmpty()) {
+ if (getTab().isTabVisible(getTabContainer())) {
+ // close tab, no more history
+ getTab().closeTab(getMainUI(), getTabContainer());
+ }
}
}
Added: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAddAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAddAction.java (rev 0)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAddAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -0,0 +1,112 @@
+/*
+* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Code Lutin,
+* Tony Chemit, Gabriel Landais
+*
+* 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.cemagref.simexplorer.is.ui.swing.actions.history;
+
+import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
+import fr.cemagref.simexplorer.is.entities.metadata.Version;
+import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel;
+import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode;
+import fr.cemagref.simexplorer.is.ui.swing.model.HistoryModel;
+import fr.cemagref.simexplorer.is.ui.swing.ui.EntityTreeNodeHelper;
+import fr.cemagref.simexplorer.is.ui.swing.actions.util.SelectedAction;
+
+import java.util.List;
+
+/**
+ * Action d'ajout de l'item dans l'historique
+ *
+ * @author chemit
+ */
+ at jaxx.runtime.builder.ActionConfig(
+ actionCommand = "historyAdd",
+ name = "simexplorer.action.historyAdd",
+ shortDescription = "simexplorer.action.historyAdd.tooltip",
+ longDescription = "simexplorer.action.historyAdd.help",
+ hideActionText = true
+)
+public class HistoryAddAction extends HistoryAbstractAction implements SelectedAction {
+
+ private static final long serialVersionUID = 2165684159831076054L;
+
+ protected DataEntityModel selected;
+
+ public HistoryAddAction(String name) {
+ super(name);
+ }
+
+ protected boolean hasHistoryEntry(HistoryModel<EntityTreeNode> model) {
+ // cette action doit toujours être configurée avant lancement
+ if (selected==null) {
+ throw new IllegalStateException("the SelectedAction ("+getActionName()+") must have a not null selected before action performed");
+ }
+ return true;
+ }
+
+ protected EntityTreeNode getHistoryEntry(HistoryModel<EntityTreeNode> model) {
+ int pos = 0;
+ List<EntityTreeNode> datas = model.getData();
+ boolean remote = selected.isRemote();
+ String uuid = selected.getUuid();
+ Version version = selected.getVersion();
+ LoggableElement selectedElement = selected.getLe(getContext());
+
+ boolean wasFound = false;
+ //if (log.isDebugEnabled()) {
+ log.info("----- search entry to go :" + selected + ", " + selected.isRemote());
+ //}
+ if (datas!=null) {
+ for (EntityTreeNode node : datas) {
+ boolean remote2 = node.isRemote();
+ LoggableElement le = node.getLoggableElement();
+ if (le != null && remote == remote2 && uuid.equals(le.getMetaData().getUuid()) && version.equals(le.getMetaData().getVersion()) ) {
+ //if (log.isDebugEnabled()) {
+ log.info("----- found entry to go :" + node + ", " + node.isRemote());
+ //}
+ wasFound = true;
+ break;
+ }
+ pos++;
+ }
+ }
+
+ if (wasFound) {
+ model.setCurrentIndex(pos);
+ } else {
+ // must create the tree node
+ EntityTreeNode root = EntityTreeNodeHelper.build(selectedElement, selected.isRemote());
+ // ajout a la fin de l'historique
+ model.addTail(root);
+ // go to new position
+ model.setCurrentIndex(model.size()-1);
+ }
+ EntityTreeNode node;
+ node = model.getCurrent();
+ return node;
+ }
+
+ @Override
+ protected void clear() {
+ super.clear();
+ selected = null;
+ }
+
+ public void setSelected(DataEntityModel selected) {
+ this.selected = selected;
+ }
+}
\ No newline at end of file
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -22,6 +22,7 @@
import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel;
import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode;
import fr.cemagref.simexplorer.is.ui.swing.model.HistoryModel;
+import fr.cemagref.simexplorer.is.ui.swing.actions.util.SelectedAction;
import java.util.Iterator;
import java.util.List;
@@ -40,7 +41,7 @@
//mnemonic = 'N',
hideActionText = true
)
-public class HistoryDeleteAction extends HistoryAbstractAction {
+public class HistoryDeleteAction extends HistoryAbstractAction implements SelectedAction {
private static final long serialVersionUID = 2165684159831076054L;
@@ -54,11 +55,10 @@
if (model.isEmpty()) {
return false;
}
- if (selected == null) {
- // on doit retrouver l'élément à traiter à partir de la source
- selected = findSelectedItem(e);
+ if (selected==null) {
+ throw new IllegalStateException("the SelectedAction ("+getActionName()+") must have a not null selected before action performed");
}
- return selected != null && selected.getUuid() != null;
+ return true;
}
protected EntityTreeNode getHistoryEntry(HistoryModel<EntityTreeNode> model) {
@@ -68,18 +68,18 @@
boolean remote = selected.isRemote();
String uuid = selected.getUuid();
boolean wasRemove = false;
- //if (log.isDebugEnabled()) {
- log.info("----- search entry to remove :" + selected + ", " + selected.isRemote());
- //}
+ if (log.isDebugEnabled()) {
+ log.debug("----- search entry to remove :" + selected + ", " + selected.isRemote());
+ }
for (Iterator<EntityTreeNode> it = datas.iterator(); it.hasNext();) {
EntityTreeNode node = it.next();
boolean remote2 = node.isRemote();
LoggableElement le = node.getLoggableElement();
if (le != null && remote == remote2 && uuid.equals(le.getMetaData().getUuid())) {
it.remove();
- //if (log.isDebugEnabled()) {
- log.info("----- found entry to remove :" + node + ", " + node.isRemote());
- //}
+ if (log.isDebugEnabled()) {
+ log.debug("----- found entry to remove :" + node + ", " + node.isRemote());
+ }
wasRemove = true;
break;
}
@@ -107,4 +107,8 @@
super.clear();
selected = null;
}
+
+ public void setSelected(DataEntityModel selected) {
+ this.selected=selected;
+ }
}
\ No newline at end of file
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteExportAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteExportAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteExportAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -48,8 +48,8 @@
}
// we are working on other list impact by an export
+ selected = selected.cloneSafe();
selected.setRemote(!selected.isRemote());
-
return true;
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -18,19 +18,17 @@
* ##% */
package fr.cemagref.simexplorer.is.ui.swing.actions.util;
-import fr.cemagref.simexplorer.is.entities.metadata.MetaData;
-import fr.cemagref.simexplorer.is.exceptions.SimExplorerRuntimeException;
+import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
import fr.cemagref.simexplorer.is.ui.swing.SimExplorerActionManager;
import fr.cemagref.simexplorer.is.ui.swing.actions.ImportElementAction;
-import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel;
import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
import fr.cemagref.simexplorer.is.ui.swing.model.ListTableModel;
import fr.cemagref.simexplorer.is.ui.swing.ui.JListTab;
-import fr.cemagref.simexplorer.is.ui.swing.ui.ListTabRefreshHelper;
+import fr.cemagref.simexplorer.is.ui.swing.ui.ListTabUpdater;
+import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerMainUI;
import jaxx.runtime.swing.JAXXTab;
import static org.codelutin.i18n.I18n._;
-import javax.swing.AbstractButton;
import javax.swing.JTabbedPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
@@ -40,7 +38,6 @@
import javax.swing.event.ListSelectionListener;
import javax.swing.event.RowSorterEvent;
import javax.swing.event.RowSorterListener;
-import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import java.awt.Point;
import java.awt.event.ActionEvent;
@@ -59,6 +56,9 @@
ListMetaSelectionListener listMetaSelectionListener;
+ TableRowSorterListener rowSorterListener;
+ MyTableRowSorter rowSorter;
+
public ShowListTabAbstractAction(String name, boolean remote) {
super(name);
this.remote = remote;
@@ -69,112 +69,78 @@
super.beforeAction(e);
JTabbedPane tabbedPane = getTabContainer();
JAXXTab ui = getUI();
-
if (getTab().isTabVisible(tabbedPane)) {
// tab is already visible, just select it
tabbedPane.setSelectedComponent(ui);
return false;
}
-
return true;
}
+ @Override
+ public void disposeUI() {
+ super.disposeUI();
+ if (listMetaSelectionListener!=null) {
+ getTabUI().getTable().getSelectionModel().removeListSelectionListener(listMetaSelectionListener);
+ listMetaSelectionListener=null;
+ }
+ if (rowSorterListener!=null) {
+ getTabUI().getTable().getRowSorter().removeRowSorterListener(rowSorterListener);
+ rowSorterListener=null;
+ }
+ if (rowSorter!=null) {
+ getTabUI().getTable().setRowSorter(rowSorter);
+ rowSorter=null;
+ }
+ }
+ public ListTabUpdater getUpdater() {
+ return getListUpdater(this, getModel().isRemote());
+ }
+
protected void initFirstUsage(final JListTab ui, final ListTabModel model) {
- MetaData[] data = model.getList();
- if (data == null) {
- // first coming here, init model
- model.initTabModel(getContext(), remote, (ListTableModel) ((JListTab) getUI()).getTable().getModel());
- }
- ui.getShowTab_synchronize().setHideActionText(false);
- ui.getExportElement().setHideActionText(false);
- ui.getDownloadElement().setHideActionText(false);
- ui.getDeleteElement().setHideActionText(false);
- //FIXME : when we change locale, this is no more enabled ?
- ui.getImportElement().setEnabled(true);
- ui.getImportElement().getAction().setEnabled(true);
- ImportElementAction action = (ImportElementAction) ui.getImportElement().getAction();
- ui.getImportElement().setToolTipText(_(action.getI18nToolTipText(model.isRemote())));
+ ui.initPopup();
- listMetaSelectionListener = new ListMetaSelectionListener(ui, model);
- final JTable table = ui.getTable();
- table.getSelectionModel().addListSelectionListener(listMetaSelectionListener);
+ // init remote property on model
+ model.synch(remote, (LoggableElement) null);
- table.addMouseListener(new ListMetaMouseListener(ui, model));
+
+ //FIXME : when we change locale, this is no more enabled ?
+
+ SimExplorerMainUI.EnableButton(ui.getImportElement());
+ //ImportElementAction action = (ImportElementAction) ui.getImportElement().getAction();
+ //ui.getImportElement().setToolTipText(_(action.getI18nToolTipText(model.isRemote())));
+
// add search actions listeners
ui.getSearchText().addKeyListener(new KeyAdapter() {
@Override
public void keyReleased(KeyEvent e) {
// rafraichissement des actions de recherche
- ListTabRefreshHelper.refreshSearchActions(ui, model);
+ getUpdater().refreshSearchActions();
}
});
- //TODO Est-ce vraiment le bon endroit pour faire ça ?
- // push model into tableModel
- final ListTableModel modelTab = (ListTableModel) table.getModel();
- modelTab.setData(model.getList());
- // on force les valeurs nulles
- model.setSelectedIndex(-1);
- model.setSelectedItem(null);
- //table.setAutoCreateRowSorter(true);
+ listMetaSelectionListener = new ListMetaSelectionListener(ui, model);
+
+ JTable table = ui.getTable();
+ table.getSelectionModel().addListSelectionListener(listMetaSelectionListener);
+ table.addMouseListener(new ListMetaMouseListener(ui, model));
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
table.getTableHeader().setReorderingAllowed(true);
- final MyTableRowSorter rowSorter = new MyTableRowSorter(modelTab);
- ui.getTable().setRowSorter(rowSorter);
- rowSorter.addRowSorterListener(new RowSorterListener() {
- public void sorterChanged(RowSorterEvent e) {
- RowSorterEvent.Type type = e.getType();
- if (type == RowSorterEvent.Type.SORT_ORDER_CHANGED) {
- List keys = e.getSource().getSortKeys();
- if (keys.isEmpty()) {
- return;
- }
- RowSorter.SortKey key = (RowSorter.SortKey) keys.get(0);
- int column = key.getColumn();
- SortOrder sortOrder = key.getSortOrder();
- model.getQuery().setSortColumn(modelTab.getSortColumn(column));
- model.getQuery().setSortAscending(sortOrder== SortOrder.ASCENDING);
- log.info("sortedChanged " + model.getQuery());
- //TODOFinish this
- model.updateTabModel(getContext(), modelTab, true);
- }
+ ui.getTable().setRowSorter(rowSorter = new MyTableRowSorter((ListTableModel) table.getModel()));
- }
- });
- }
+ rowSorterListener = new TableRowSorterListener(model);
+ rowSorter.addRowSorterListener(rowSorterListener);
- protected void synchSelected(final JListTab ui, int rowAtPoint, ListSelectionModel selectionModel, ListTabModel model) {
- // if empty list, this is quick
- if (model.isEmpty()) {
- model.setSelectedIndex(-1);
- model.synch(model.isRemote(), (MetaData) null);
- return;
- }
- DataEntityModel entityModel;
- if (rowAtPoint == -1 || model.getSelectedIndex() != rowAtPoint || selectionModel.isSelectionEmpty() || selectionModel.getMinSelectionIndex() != rowAtPoint) {
- if (rowAtPoint == -1) {
- rowAtPoint = 0;
- }
- if (ui.getTable().getSelectedRow() != rowAtPoint) {
- // select the row
- boolean wasEnabled = listMetaSelectionListener.enabled;
- listMetaSelectionListener.enabled = false;
- selectionModel.setSelectionInterval(rowAtPoint, rowAtPoint);
- listMetaSelectionListener.enabled = wasEnabled;
- }
- // the model is not yet ready
- model.setSelectedIndex(rowAtPoint);
+ // init updater listens the model
+ getListUpdater(this, model.isRemote()).initListeners();
- model.synch(model.isRemote(), model.get(rowAtPoint));
+ // init model
+ model.initTabModel(getContext(), remote);
- entityModel = model.getSelectedItem();
- log.info(entityModel);
- ListTabRefreshHelper.refreshListTablePopupMenu(getMainUI(), getContext(), ui, model);
- }
}
protected int getRowAtPoint(JListTab ui, Point e) {
@@ -193,9 +159,7 @@
}
public void valueChanged(ListSelectionEvent e) {
- if (enabled) {
- synchSelected(ui, ui.getTable().getSelectedRow(), ui.getTable().getSelectionModel(), model);
- }
+ model.setSelectedIndex(ui.getTable().getSelectedRow());
}
}
@@ -224,36 +188,70 @@
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
try {
- // synchronization du meta selectionne
- synchSelected(ui, getRowAtPoint(ui, e.getPoint()), ui.getTable().getSelectionModel(), model);
- // lancement de l'action d'affichage de l'onglet de detail
- SimExplorerActionManager.fireAction("showTab_detail", e.getSource(), (AbstractButton) null);
+ // update model
+ model.setSelectedIndex(getRowAtPoint(ui, e.getPoint()));
+
+ // launch show tab action
+ SimExplorerActionManager.fireSelectedAction("showTab_detail", e.getSource(), model.getSelectedItem());
} catch (Exception e1) {
- throw new SimExplorerRuntimeException(e1);
+ showError(e1);
}
}
}
protected void initPopup(MouseEvent e) {
if (e.isPopupTrigger()) {
- // synchronization du meta selectionne
- synchSelected(ui, getRowAtPoint(ui, e.getPoint()), ui.getTable().getSelectionModel(), model);
+ model.setSelectedIndex(getRowAtPoint(ui, e.getPoint()));
// affichage de la popup
ui.getTablePopupMenu().show(ui.getTable(), e.getX(), e.getY());
}
}
}
- private static class MyTableRowSorter extends TableRowSorter<TableModel> {
+ private static class MyTableRowSorter extends TableRowSorter<ListTableModel> {
- private MyTableRowSorter(TableModel model) {
+ private ListTableModel myModel;
+
+ MyTableRowSorter(ListTableModel model) {
super(model);
+ this.myModel = model;
setMaxSortKeys(1);
}
+ public void setMyModel(ListTableModel model) {
+ super.setModel(model);
+ }
+
+ public ListTableModel getMyModel() {
+ return myModel;
+ }
+
@Override
public void sort() {
// do not sort
}
}
+
+ private class TableRowSorterListener implements RowSorterListener {
+ private final ListTabModel model;
+
+ public TableRowSorterListener(ListTabModel model) {
+ this.model = model;
+ }
+
+ public void sorterChanged(RowSorterEvent e) {
+ RowSorterEvent.Type type = e.getType();
+ if (type == RowSorterEvent.Type.SORT_ORDER_CHANGED) {
+ List keys = e.getSource().getSortKeys();
+ if (keys.isEmpty()) {
+ return;
+ }
+ RowSorter.SortKey key = (RowSorter.SortKey) keys.get(0);
+ int column = key.getColumn();
+ SortOrder sortOrder = key.getSortOrder();
+
+ model.setQuerySort(rowSorter.getModel().getSortColumn(column), sortOrder == SortOrder.ASCENDING);
+ }
+ }
+ }
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowTabAbstractAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowTabAbstractAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowTabAbstractAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -72,8 +72,7 @@
}
protected void updateUI(U ui, M model) {
- // refresh ui
- getTab().updateUI(getContext(),getMainUI(), ui, model);
+ // refresh ui
}
@Override
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -20,7 +20,10 @@
import fr.cemagref.simexplorer.is.ui.swing.SimExplorer;
import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext;
+import fr.cemagref.simexplorer.is.ui.swing.ui.DetailTabUpdater;
+import fr.cemagref.simexplorer.is.ui.swing.ui.ListTabUpdater;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerMainUI;
+import fr.cemagref.simexplorer.is.ui.swing.ui.SynchronizeTabUpdater;
import fr.cemagref.simexplorer.is.ui.swing.ui.util.ErrorDialog;
import jaxx.runtime.JAXXObject;
import org.apache.commons.logging.Log;
@@ -42,6 +45,44 @@
protected ActionEvent e;
+ protected static DetailTabUpdater detailUpdater;
+ protected static ListTabUpdater localUpdater;
+ protected static ListTabUpdater remoteUpdater;
+ protected static SynchronizeTabUpdater synchronizeUpdater;
+
+ protected static DetailTabUpdater getDetailUpdater(SimExplorerAbstractAction action) {
+ if (detailUpdater == null) {
+ detailUpdater = new DetailTabUpdater(action.getContext());
+ }
+ return detailUpdater;
+ }
+
+
+ protected static ListTabUpdater getListUpdater(SimExplorerAbstractAction action,boolean remote) {
+ return remote?getRemoteUpdater(action):getLocalUpdater(action);
+ }
+
+ protected static ListTabUpdater getLocalUpdater(SimExplorerAbstractAction action) {
+ if (localUpdater == null) {
+ localUpdater = new ListTabUpdater(action.getContext(), false);
+ }
+ return localUpdater;
+ }
+
+ protected static ListTabUpdater getRemoteUpdater(SimExplorerAbstractAction action) {
+ if (remoteUpdater == null) {
+ remoteUpdater = new ListTabUpdater(action.getContext(), true);
+ }
+ return remoteUpdater;
+ }
+
+ public static SynchronizeTabUpdater getSynchronizeUpdater(SimExplorerAbstractAction action) {
+ if (synchronizeUpdater == null) {
+ synchronizeUpdater = new SynchronizeTabUpdater(action.getContext());
+ }
+ return synchronizeUpdater;
+ }
+
public void actionPerformed(java.awt.event.ActionEvent e) {
log.debug("------------------------------------------------------------");
@@ -129,4 +170,23 @@
public String getI18nToolTipText() {
return "simexplorer.action." + getActionName() + ".tooltip";
}
+
+ public static void dispose() {
+ if (detailUpdater != null) {
+ detailUpdater.removeListeners();
+ detailUpdater = null;
+ }
+ if (localUpdater != null) {
+ localUpdater.removeListeners();
+ localUpdater = null;
+ }
+ if (remoteUpdater != null) {
+ remoteUpdater.removeListeners();
+ remoteUpdater = null;
+ }
+ if (synchronizeUpdater != null) {
+ synchronizeUpdater.removeListeners();
+ synchronizeUpdater = null;
+ }
+ }
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractTabAction.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractTabAction.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractTabAction.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -19,10 +19,10 @@
package fr.cemagref.simexplorer.is.ui.swing.actions.util;
import fr.cemagref.simexplorer.is.exceptions.SimExplorerRuntimeException;
+import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel;
+import fr.cemagref.simexplorer.is.ui.swing.model.SimExplorerTabModel;
import fr.cemagref.simexplorer.is.ui.swing.ui.JDetailTab;
import fr.cemagref.simexplorer.is.ui.swing.ui.JSynchronizeTab;
-import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.SimExplorerTabModel;
import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab;
import jaxx.runtime.JAXXObject;
import jaxx.runtime.swing.JAXXTab;
@@ -55,19 +55,30 @@
if (prefixPatternName == null) {
throw new IllegalArgumentException("prefixPatternName can not be null, but was.");
}
+
+ String suffix;
if (name.equals(prefixPatternName)) {
param = name;
} else {
Pattern patternName = Pattern.compile(prefixPatternName + "_(\\w+)");
Matcher matcher = patternName.matcher(name);
if (!matcher.matches()) {
- throw new IllegalArgumentException(I18n._("{0} should have a name like this {1}, but was {2}", getClass().getName(), patternName, name));
+
+ Pattern patternName2 = Pattern.compile(prefixPatternName + "(\\w+)_(\\w+)");
+ Matcher matcher2 = patternName2.matcher(name);
+
+ if (!matcher2.matches()) {
+ throw new IllegalArgumentException(I18n._("{0} should have a name like this {1}, but was {2}", getClass().getName(), patternName, name));
+ }
+ prefixPatternName += matcher2.group(1);
+ suffix = matcher2.group(2);
+ } else {
+ suffix = matcher.group(1);
}
-
param = prefixPatternName;
Converter convertorLanguage = ConverterUtil.getConverter(SimExplorerTab.class);
- tab = (SimExplorerTab) convertorLanguage.convert(SimExplorerTab.class, matcher.group(1));
+ tab = (SimExplorerTab) convertorLanguage.convert(SimExplorerTab.class, suffix);
}
log.debug(">>> " + this);
@@ -158,17 +169,17 @@
return entityModel;
}
- protected JTree getTreeForAction(String actionPrefix, String actionName) {
+ protected JTree getTreeForAction(JAXXTab _ui, String actionPrefix, String actionName) {
JTree tree = null;
// on retrouve l'arbre concerné à partir du nom de l'action
if ((actionPrefix + "Detail").equals(actionName)) {
- JDetailTab ui = (JDetailTab) getUI();
+ JDetailTab ui = (JDetailTab) _ui;
tree = ui.getNavigationTree();
} else if ((actionPrefix + "Local").equals(actionName)) {
- JSynchronizeTab ui = (JSynchronizeTab) getUI();
+ JSynchronizeTab ui = (JSynchronizeTab) _ui;
tree = ui.getTree(false);
} else if ((actionPrefix + "Remote").equals(actionName)) {
- JSynchronizeTab ui = (JSynchronizeTab) getUI();
+ JSynchronizeTab ui = (JSynchronizeTab) _ui;
tree = ui.getTree(true);
}
if (tree == null) {
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DetailTabModel.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DetailTabModel.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DetailTabModel.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -20,7 +20,6 @@
import fr.cemagref.simexplorer.is.entities.attachment.Attachment;
import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
-import fr.cemagref.simexplorer.is.entities.metadata.MetaData;
import fr.cemagref.simexplorer.is.entities.metadata.Version;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -34,9 +33,16 @@
*/
public class DetailTabModel extends SimExplorerTabModel {
+ /** la propriété pour indiquer un changement de racine d'arbre */
public static final String ROOT_NODE_PROPERTY_CHANGED = "rootNodePropertyChanged";
+
+ /** la propriété pour indiquer un changement de sélection de noeud dans l'arbre */
public static final String SELECTED_NODE_PROPERTY_CHANGED = "selectedNodePropertyChanged";
+
+ /** la propriété pour indiquer un changement de sélection de version */
public static final String SELECTED_VERSION_INDEX_PROPERTY_CHANGED = "selectedVersionIndexPropertyChanged";
+
+ /** la propriété pour indiquer un changement de sélection de fichier attaché */
public static final String SELECTED_ATTACHMENT_INDEX_PROPERTY_CHANGED = "selectedAttachmentIndexPropertyChanged";
private static final int HISTORY_CAPACITY = 20;
@@ -46,7 +52,7 @@
static protected Log log = LogFactory.getLog(DetailTabModel.class);
/** le LoggableElement root de l'arbre de navigation */
- protected LoggableElement rootNode;
+ protected EntityTreeNode rootNode;
/**
* le LoggableElement sélectionné dans l'arbre de navigation (ou null
@@ -55,6 +61,12 @@
protected LoggableElement selectedNode;
/**
+ * le LoggableElement affiché dans le panel de détail : il correspond au LE
+ * sélectionné avec la version sélectionné (ou null si le node sélectionné
+ * n'est pas un LoggableElement)
+ */
+ protected LoggableElement detailNode;
+ /**
* la liste des versions disponibles pour le LoggableElement sélectionné
* dans l'arbre (ou null si pas de LoggableElement sélectionné dans l'arbre
* de navigation)
@@ -73,15 +85,9 @@
*/
protected Integer selectedAttachmentIndex;
- /**
- * les métas à afficher dans le panel de détaillié à un uuid et à une version
- * (ou null si pas de node sélectionné, ou pas de version).
- */
- protected MetaData detail;
-
protected HistoryModel<EntityTreeNode> history;
- public LoggableElement getRootNode() {
+ public EntityTreeNode getRootNode() {
return rootNode;
}
@@ -98,9 +104,7 @@
}
public Attachment getSelectedAttachment() {
- // FIXME !!!
- return null;
-// return selectedAttachmentIndex == null || selectedAttachmentIndex == -1 ? null : getDetail().getAttachment(selectedAttachmentIndex);
+ return detailNode == null || selectedAttachmentIndex == null || selectedAttachmentIndex == -1 ? null : detailNode.getAttachment(selectedAttachmentIndex);
}
public Version getSelectedVersion(int integer) {
@@ -111,8 +115,8 @@
return versions;
}
- public MetaData getDetail() {
- return detail;
+ public LoggableElement getDetailNode() {
+ return detailNode;
}
public HistoryModel<EntityTreeNode> getHistory() {
@@ -122,32 +126,35 @@
return history;
}
- public void setRootNode(LoggableElement rootNode) {
+ public void setRootNode(EntityTreeNode rootNode) {
+ EntityTreeNode oldRootNode = this.rootNode;
this.rootNode = rootNode;
+ firePropertyChange(ROOT_NODE_PROPERTY_CHANGED, oldRootNode, rootNode);
}
public void setSelectedNode(LoggableElement selectedNode) {
LoggableElement oldSelectedNode = this.selectedNode;
this.selectedNode = selectedNode;
- // ui must build a list of versions for this node (if not null)
+ this.detailNode = selectedNode;
firePropertyChange(SELECTED_NODE_PROPERTY_CHANGED, oldSelectedNode, selectedNode);
}
public void setSelectedVersion(Version version) {
- Integer index = getVersionIndex(version);
Integer oldSelectedVersionIndex = this.selectedVersionIndex;
- this.selectedVersionIndex = index;
- // ui must update detail panel for the selected node and version
+ this.selectedVersionIndex = getVersionIndex(version);
firePropertyChange(SELECTED_VERSION_INDEX_PROPERTY_CHANGED, oldSelectedVersionIndex, selectedVersionIndex);
}
public void setSelectedAttachmentIndex(Integer selectedAttachmentIndex) {
Integer oldSelectedAttachmentIndex = this.selectedAttachmentIndex;
this.selectedAttachmentIndex = selectedAttachmentIndex;
- // ui must update button downloadAttachment accessibility
firePropertyChange(SELECTED_ATTACHMENT_INDEX_PROPERTY_CHANGED, oldSelectedAttachmentIndex, selectedAttachmentIndex);
}
+ public void setDetailNode(LoggableElement detailNode) {
+ this.detailNode = detailNode;
+ }
+
public void clear() {
getHistory().clear();
reset();
@@ -168,25 +175,15 @@
this.versions = versions;
}
- public void setDetail(MetaData detail) {
- this.detail = detail;
- synch(isRemote(), detail);
- }
-
public void reset() {
super.reset();
- rootNode = null;
- resetSelectedNode();
- }
-
- public void resetSelectedNode() {
selectedNode = null;
- versions = null;
- detail = null;
resetSelectedVersion();
}
public void resetSelectedVersion() {
+ versions = null;
+ detailNode = null;
selectedVersionIndex = null;
selectedAttachmentIndex = null;
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/HistoryModel.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/HistoryModel.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/HistoryModel.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -77,6 +77,24 @@
}
/**
+ * Ajoute a la fin de l'historique un nouvel element.
+ *
+ * @param e l'element a ajouter
+ */
+ public void addTail(E e) {
+ if (data == null) {
+ data = new ArrayList<E>();
+ }
+ data.add(e);
+
+ if (data.size() > capacity) {
+ // on supprime le premier element de l'historique
+ data.remove(0);
+ }
+ setCurrentIndex(data.size() - 1);
+ }
+
+ /**
* @return l'elemenet precedent par rapport a l'element courant
* @throws IllegalStateException si pas de data ou deja sur le premier element
*/
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTabModel.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTabModel.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTabModel.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -19,8 +19,10 @@
package fr.cemagref.simexplorer.is.ui.swing.model;
import fr.cemagref.simexplorer.is.entities.metadata.MetaData;
+import fr.cemagref.simexplorer.is.storage.SortColumn;
import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext;
import fr.cemagref.simexplorer.is.ui.swing.StorageServiceHelper;
+import jaxx.util.SimplePaginationEnum;
/**
* Le model pour un Tab contenant une liste d'application
@@ -29,42 +31,150 @@
*/
public class ListTabModel extends SimExplorerTabModel {
- protected QueryModel query;
+ /** la propriété pour indiquer un changement de sélection de ligne dans la table */
+ public static final String SELECTED_ROW_PROPERTY_CHANGED = "selectedRowPropertyChanged";
- protected PaginationModel pagination;
+ /** la propriété pour indiquer un changement dans le modele de requete */
+ public static final String QUERY_PROPERTY_CHANGED = "queryPropertyChanged";
+ /** la propriété pour indiquer un changement dans le modele de pagination */
+ public static final String PAGINATION_PROPERTY_CHANGED = "paginationPropertyChanged";
+
+ protected final QueryModel queryModel;
+ protected final QueryModel oldQueryModel;
+
+ protected final PaginationModel pagination;
+ protected final PaginationModel oldPagination;
+
+ protected SimExplorerContext context;
+
protected MetaData[] list;
protected int selectedIndex;
private static final long serialVersionUID = -3623331875470531459L;
+ public ListTabModel() {
+ queryModel = new QueryModel();
+ oldQueryModel = new QueryModel();
+ pagination = new PaginationModel(SimplePaginationEnum._10);
+ oldPagination= new PaginationModel(SimplePaginationEnum._10);
+ }
+
+ public void initTabModel(SimExplorerContext context, boolean remote) {
+
+ this.context=context;
+
+ reset();
+
+ // no selection at first load
+ synch(remote, null, null);
+
+
+ // setdefault sizor from config
+ setWidth(remote ? context.getConfig().getRemoteSizor() : context.getConfig().getLocalSizor());
+ }
+
+ public void setSelectedIndex(int selectedIndex) {
+ Integer oldSelectedIndex = this.selectedIndex;
+ this.selectedIndex = selectedIndex;
+ if (selectedIndex!=-1) {
+ synch(isRemote(),get(selectedIndex));
+
+ }
+ firePropertyChange(SELECTED_ROW_PROPERTY_CHANGED, oldSelectedIndex, selectedIndex);
+ }
+
+ public void setPageNumber(int pageNumber) {
+ getPagination().bind(oldPagination);
+ getPagination().setPageNumber(pageNumber);
+ // rebuild list
+ rebuildList(context, false);
+ firePropertyChange(PAGINATION_PROPERTY_CHANGED, oldPagination, getPagination());
+ }
+
+ public void setWidth(SimplePaginationEnum width) {
+ getPagination().bind(oldPagination);
+ getPagination().setWidth(width);
+ // rebuild list
+ rebuildList(context, true);
+ firePropertyChange(PAGINATION_PROPERTY_CHANGED, oldPagination, getPagination());
+ }
+
+ public void setQuery(String query) {
+ getQueryModel().bind(oldQueryModel);
+ getQueryModel().setQuery(query);
+ // rebuild list
+ rebuildList(context, true);
+ firePropertyChange(QUERY_PROPERTY_CHANGED, oldQueryModel, getQueryModel());
+ }
+
+ public void reload() {
+ getPagination().setPageNumber(-1);
+ getPagination().bind(oldPagination);
+
+ // rebuild list
+ rebuildList(context, true);
+ firePropertyChange(PAGINATION_PROPERTY_CHANGED, oldPagination, getPagination());
+ }
+
+ public void resetQuery() {
+ getQueryModel().bind(oldQueryModel);
+ getQueryModel().reset();
+ // rebuild list
+ rebuildList(context, true);
+ firePropertyChange(QUERY_PROPERTY_CHANGED, oldQueryModel, getQueryModel());
+ }
+
+ public void setOnlyLatest(boolean onlyLatest) {
+ getQueryModel().bind(oldQueryModel);
+ getQueryModel().setOnlyLatest(onlyLatest);
+ // rebuild list
+ rebuildList(context, true);
+ firePropertyChange(QUERY_PROPERTY_CHANGED, oldQueryModel, getQueryModel());
+ }
+
+ public void setQuerySort(SortColumn sortColumn, boolean ascending) {
+ getQueryModel().bind(oldQueryModel);
+ getQueryModel().setOrder(sortColumn, ascending);
+ // rebuild list
+ rebuildList(context, true);
+ firePropertyChange(QUERY_PROPERTY_CHANGED, oldQueryModel, getQueryModel());
+ }
+
+ public void setSimpleQuery(boolean simpleQuery) {
+ getQueryModel().bind(oldQueryModel);
+ getQueryModel().setSimpleQuery(simpleQuery);
+ firePropertyChange(QUERY_PROPERTY_CHANGED, oldQueryModel, getQueryModel());
+ }
+
public MetaData[] getList() {
return list;
}
public PaginationModel getPagination() {
- if (pagination == null) {
- pagination = new PaginationModel();
- }
return pagination;
}
- public QueryModel getQuery() {
- if (query == null) {
- query = new QueryModel();
- }
- return query;
+ public boolean hasQuery() {
+ return getQueryModel().hasQuery();
}
+ public String getQuery() {
+ return getQueryModel().getQuery();
+ }
+
+ private QueryModel getQueryModel() {
+ return queryModel;
+ }
+
@Override
public void reset() {
super.reset();
list = null;
selectedIndex = -1;
- query = null;
- pagination = null;
- query = null;
+ queryModel.reset();
+ pagination.reset();
}
public MetaData get(int index) {
@@ -76,7 +186,7 @@
}
public boolean isEmpty() {
- return list == null || getList().length == 0;
+ return list == null || list.length == 0;
}
public int size() {
@@ -93,75 +203,46 @@
return s.substring(s.lastIndexOf(".") + 1) + "<size: " + size() + ",selectedItem:" + selectedItem + ">";
}
- public void setSelectedIndex(int selectedIndex) {
- this.selectedIndex = selectedIndex;
- //TODO should fire a property_changed
+ public void setList(MetaData[] list) {
+ this.list = list;
}
- public void setPagination(PaginationModel pagination) {
- this.pagination = pagination;
- }
+ protected void rebuildList(SimExplorerContext context, boolean generatePagination) {
- public void setQuery(QueryModel query) {
- this.query = query;
- }
+ selectedIndex=-1;
- public void setList(MetaData[] list) {
- this.list = list;
- }
+ PaginationModel page = getPagination();
+ QueryModel query = getQueryModel();
- public void initTabModel(SimExplorerContext context, boolean remote, ListTableModel tableModel) {
+ // init pagination
+ if (generatePagination) {
- // no selection at first load
- synch(remote, null, null);
+ // get size list
+ long size = StorageServiceHelper.getCount(context, isRemote(), query.getQuery(), query.isOnlyLatest());
- // first query, build model
- updateTabModel(context, tableModel, true);
- }
+ // init pagination
+ page.setSize(size);
- public void updateTabModel(SimExplorerContext context, ListTableModel tableModel, boolean deletePagination) {
-
- // init pagination
- if (deletePagination) {
- setPagination(null);
}
- if (pagination == null) {
- initPagination(context);
- }
- PaginationModel model = pagination;
-
// init query model
- QueryModel queryModel;
- queryModel = getQuery();
// obtain datas from service
- MetaData[] data = StorageServiceHelper.getData(context, remote, queryModel.isOnlyLatest(), queryModel.getQuery(), (int) model.getFirstIndex(), model.getWidth(), queryModel.getSortColumn().getColumn(), queryModel.isSortAscending());
+ MetaData[] data = StorageServiceHelper.getData(
+ context,
+ isRemote(),
+ query.isOnlyLatest(),
+ query.getQuery(),
+ (int) page.getFirstIndex(),
+ page.getWidthInt(),
+ query.getSortColumn().getColumn(),
+ query.isSortAscending()
+ );
// save in model
setList(data);
- tableModel.setData(data);
}
- protected PaginationModel initPagination(SimExplorerContext context) {
- QueryModel queryModel = getQuery();
-
- String query = queryModel.getQuery();
- // get size list
- long size = StorageServiceHelper.getCount(context, remote, query, queryModel.isOnlyLatest());
-
- // init pagination
- PaginationModel model = getPagination();
- model.setFirstIndex(0);
- model.setSize(size);
- // utilisation sizor par défaut
- model.setWidth(remote ? context.getConfig().getRemoteSizor() : context.getConfig().getLocalSizor());
-
- // save pagination in model
- setPagination(model);
- return model;
- }
-
private void checkSize(int index) {
if (index > -1 && (isEmpty() || size() < index)) {
throw new IllegalStateException(getClass() + " has size " + size() + " and was required index " + index);
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTableModel.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTableModel.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTableModel.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -57,6 +57,7 @@
public void setData(MetaData[] data) {
this.data = data;
+ fireTableDataChanged();
}
private final SortColumn[] sorts = {
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/PaginationModel.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/PaginationModel.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/PaginationModel.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -18,6 +18,8 @@
* ##% */
package fr.cemagref.simexplorer.is.ui.swing.model;
+import jaxx.util.SimplePaginationEnum;
+
/**
* Le modèle de pagination d'une liste
*
@@ -25,66 +27,109 @@
*/
public class PaginationModel {
- /** the index */
- long firstIndex;
+ /** default size of a page */
+ protected SimplePaginationEnum defaultWidth;
+ /** the current page number */
+ protected int pageNumber;
+
/** size of the total flow */
- long size;
+ protected long size;
/** size of a page */
- int width;
+ protected SimplePaginationEnum width;
+ public PaginationModel(SimplePaginationEnum defaultWidth) {
+ this.defaultWidth = defaultWidth;
+ reset();
+ }
+
+ public void reset() {
+ pageNumber = -1;
+ size = 0;
+ width = defaultWidth;
+ }
+
+ public void bind(PaginationModel destination) {
+ destination.pageNumber = pageNumber;
+ destination.width = width;
+ destination.size = size;
+ }
+
public long getFirstIndex() {
- return firstIndex;
+ return pageNumber * getWidthInt();
}
public long getSize() {
return size;
}
- public int getWidth() {
+ public SimplePaginationEnum getWidth() {
return width;
}
public boolean hasNext() {
- return size - firstIndex > width;
+ return size - pageNumber > getWidthInt();
}
- @Override
- public String toString() {
- String s = super.toString();
- return s.substring(s.indexOf('@')) + "<size:" + size + ", firstIndex:" + firstIndex + ", width:" + width + ", nbPages:" + getNbPages() + ">";
- }
-
public boolean hasPrevious() {
- return firstIndex >= width;
+ return pageNumber >= getWidthInt();
}
public int getCurrentPage() {
- int page = (int) (firstIndex / width);
- if (page > 0 && firstIndex % width > 0) {
- page++;
- }
- return page;
+
+ return pageNumber;
}
public int getNbPages() {
- int nbPages = (int) (size / width);
- if ((size % width != 0) || (nbPages == 0 && size > 0)) {
+ int anInt = getWidthInt();
+ int nbPages = (int) (size / anInt);
+ if ((size % anInt != 0) || (nbPages == 0 && size > 0)) {
nbPages++;
}
return nbPages;
}
- public void setFirstIndex(long firstIndex) {
- this.firstIndex = firstIndex;
+ public int getWidthInt() {
+ return width == null ? SimplePaginationEnum._10.intValue() : getWidth().intValue();
}
- public void setSize(long size) {
+ @Override
+ public String toString() {
+ String s = super.toString();
+ return s.substring(s.indexOf('@')) + "<size:" + size + ", pageNumber:" + pageNumber + ", width:" + width + ", nbPages:" + getNbPages() + ">";
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof PaginationModel)) return false;
+ PaginationModel that = (PaginationModel) o;
+ return pageNumber == that.pageNumber &&
+ size == that.size &&
+ width == that.width;
+ }
+
+ @Override
+ public int hashCode() {
+ int result;
+ result = pageNumber;
+ result = 31 * result + (int) (size ^ (size >>> 32));
+ result = 31 * result + width.hashCode();
+ return result;
+ }
+
+ void setPageNumber(int pageNumber) {
+ this.pageNumber = pageNumber;
+ }
+
+ void setSize(long size) {
this.size = size;
+ this.pageNumber = 0;
}
- public void setWidth(int width) {
+ void setWidth(SimplePaginationEnum width) {
this.width = width;
+ this.pageNumber = 0;
}
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/QueryModel.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/QueryModel.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/QueryModel.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -28,72 +28,111 @@
*/
public class QueryModel implements Serializable {
- protected boolean simpleQuery = true;
+ /** flag to detect simple text query */
+ protected boolean simpleQuery;
- protected String query;
+ /** flag to get only latest version */
+ protected boolean onlyLatest;
- protected boolean onlyLatest = true;
+ /** flag to indicate sorting way (null for none) */
+ protected boolean sortAscending;
- protected SortColumn sortColumn = SortColumn.None;
+ /** simple full text query */
+ protected String query;
- protected boolean sortAscending = true;
+ /** query column ordering (use SortColumn.Noe if no sort) */
+ protected SortColumn sortColumn;
private static final long serialVersionUID = -5018101346037499469L;
+ public QueryModel() {
+ // obtain default empty query
+ reset();
+ }
+
+ public void bind(QueryModel destination) {
+ destination.simpleQuery = simpleQuery;
+ destination.onlyLatest = onlyLatest;
+ destination.sortAscending = sortAscending;
+ destination.query = query;
+ destination.sortColumn = sortColumn;
+ }
+
+ public void reset() {
+ simpleQuery = true;
+ onlyLatest = true;
+ sortAscending = true;
+ query = null;
+ sortColumn = SortColumn.None;
+ }
+
public boolean hasQuery() {
return query != null && !query.isEmpty();
}
- public SortColumn getSortColumn() {
- return sortColumn;
+ public boolean isSimpleQuery() {
+ return simpleQuery;
}
public boolean isOnlyLatest() {
return onlyLatest;
}
+ public boolean isSortAscending() {
+ return sortAscending;
+ }
+
public String getQuery() {
return query;
}
- public boolean isSimpleQuery() {
- return simpleQuery;
+ public SortColumn getSortColumn() {
+ return sortColumn;
}
- public void setSortColumn(SortColumn sortColumn) {
- this.sortColumn = sortColumn;
+ @Override
+ public String toString() {
+ String s = super.toString();
+ return s.substring(s.lastIndexOf('.') + 1) + "<sortColumn:" + sortColumn + ",sortAscending:" + sortAscending + ", query:" + query + ">";
}
- public boolean isSortAscending() {
- return sortAscending;
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (!(o instanceof QueryModel)) return false;
+ QueryModel that = (QueryModel) o;
+ return onlyLatest == that.onlyLatest &&
+ simpleQuery == that.simpleQuery &&
+ sortAscending == that.sortAscending &&
+ !(query != null ? !query.equals(that.query) : that.query != null)
+ && sortColumn == that.sortColumn;
}
- public void setSortAscending(boolean sortAscending) {
+ @Override
+ public int hashCode() {
+ int result;
+ result = (simpleQuery ? 1 : 0);
+ result = 31 * result + (onlyLatest ? 1 : 0);
+ result = 31 * result + (sortAscending ? 1 : 0);
+ result = 31 * result + (query != null ? query.hashCode() : 0);
+ result = 31 * result + sortColumn.hashCode();
+ return result;
+ }
+
+ void setOrder(SortColumn sortColumn, boolean sortAscending) {
+ this.sortColumn = sortColumn;
this.sortAscending = sortAscending;
}
- public void setOnlyLatest(boolean onlyLatest) {
+ void setOnlyLatest(boolean onlyLatest) {
this.onlyLatest = onlyLatest;
}
- public void setQuery(String query) {
+ void setQuery(String query) {
this.query = query;
}
- public void setSimpleQuery(boolean simpleQuery) {
+ void setSimpleQuery(boolean simpleQuery) {
this.simpleQuery = simpleQuery;
}
-
- public void reset() {
- simpleQuery = true;
- query = null;
- onlyLatest = true;
- sortColumn = SortColumn.None;
- sortAscending = true;
- }
-
- @Override
- public String toString() {
- return super.toString() + "<sortColumn:" + sortColumn + ",sortAscending:" + sortAscending + ", query:" + query + ">";
- }
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java 2008-02-24 19:51:08 UTC (rev 1218)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java 2008-02-24 19:54:25 UTC (rev 1219)
@@ -30,6 +30,8 @@
*/
public class SynchronizeTabModel extends SimExplorerTabModel {
+ /** la clef de l'évènement après des sources */
+ public static final String SOURCES_PROPERTY_CHANGED = "sourcesPropertyChanged";
/** la clef de l'évènement après la modification du root de l'arbre local */
public static final String LOCAL_ROOT_NODE_PROPERTY_CHANGED = "rootLocalNodePropertyChanged";
@@ -44,9 +46,6 @@
private static final long serialVersionUID = -3623331875470531459L;
- /** l'element source de la synchronisation */
- protected DataEntityModel source;
-
/** la racine de l'arbre de navigation local. */
protected LoggableElement localRootNode;
@@ -83,14 +82,13 @@
return remote ? REMOTE_SELECTED_NODE_PROPERTY_CHANGED : LOCAL_SELECTED_NODE_PROPERTY_CHANGED;
}
- public DataEntityModel getSource() {
- return source;
+ public void setSources(LoggableElement[] sources) {
+ LoggableElement[] olds = new LoggableElement[]{localRootNode, remoteRootNode};
+ firePropertyChange(SOURCES_PROPERTY_CHANGED, olds, sources);
+ setRootNode(sources[0], false);
+ setRootNode(sources[1], true);
}
- public void setSource(DataEntityModel source) {
- this.source = source;
- }
-
public void setRootNode(LoggableElement source, boolean remote) {
String property = getRootProperty(remote);
LoggableElement oldRootNode = getRootNode(remote);
@@ -113,65 +111,90 @@
firePropertyChange(property, oldSelectedNode, source);
}
- public void updateTabModel(SimExplorerContext context, DataEntityModel selected) {
+ public LoggableElement[] guessSources(SimExplorerContext context, boolean remote, String uuid, LoggableElement le) {
// on nettoye le model avant tout
+ LoggableElement[] result = new LoggableElement[2];
- reset();
+ result[remote ? 1 : 0] = le;
- setSource(selected);
+ result[remote ? 0 : 1] = getLe(context, !remote, uuid);
+ return result;
+ }
+
+ public LoggableElement[] guessSources(SimExplorerContext context, DataEntityModel selected) {
+
+ // on nettoye le model avant tout
+
+ LoggableElement[] result = new LoggableElement[2];
+
if (selected == null) {
// rien de plus à faire
- return;
+ return result;
}
- boolean remote = selected.isRemote();
- String uuid = selected.getUuid();
+ return guessSources(context, selected.isRemote(), selected.getUuid(), selected.getLe(context));
+ }
- // l'élément selectionné est bien la source
- setSelectedItem(selected);
+ @Override
+ public void reset() {
+ super.reset();
+ localSelectedNode = remoteSelectedNode = null;
+ localRootNode = remoteRootNode = null;
+ }
- DataEntityModel save = getSelectedItem();
+ public void reloadSources(SimExplorerContext context, String uuid, boolean deleteLocal, boolean deleteRemote, boolean treateLocal, boolean treateRemote) {
+ LoggableElement[] result = new LoggableElement[2];
- LoggableElement source=null;
+ result[0] =loadSource(context, uuid, deleteLocal, treateLocal, false);
+ result[1] =loadSource(context, uuid, deleteRemote, treateRemote,true);
- try {
- source = save.getLe(context);
- } catch (NullPointerException e) {
- //TODO si le service ne trouve pas le LE un NullPointer ?
- e.printStackTrace();
+ setSources(result);
+ }
+
+ private LoggableElement loadSource(SimExplorerContext context, String uuid, boolean deleteRemote, boolean treateRemote, boolean remote) {
+ LoggableElement result=null;
+ LoggableElement node = getRootNode(remote);
+ if (node != null && !node.getMetaData().getUuid().equals(uuid)) {
+ // nothing tobe done
+ result = node;
+ } else {
+ if (!deleteRemote) {
+ if (treateRemote && (node == null || node.getMetaData().getUuid().equals(uuid))) {
+ // must load this node
+ result = getLe(context, remote, uuid);
+ } else {
+ result = node;
+ }
+ }
}
+ return result;
+ }
- setSelectedItem(null);
+ private LoggableElement getLe(SimExplorerContext context, boolean remote, String uuid) {
+ Version version = getVersion(context, remote, uuid);
+
+ DataEntityModel destination = new DataEntityModel();
+
+ if (version != null) {
+ destination.synch(remote, uuid, version);
+ return destination.getLe(context);
+ }
+ return null;
+ }
+
+
+ protected Version getVersion(SimExplorerContext context, boolean remote, String uuid) {
// recuperation des versions de l'element destination
- Version[] versions = StorageServiceHelper.getVersions(context, !remote, uuid);
+ Version[] versions = StorageServiceHelper.getVersions(context, remote, uuid);
Version requiredVersion = null;
if (versions.length != 0) {
// on prend la dernière version disponible dans la base (i.e
// la première de la liste des versions :))
requiredVersion = versions[0];
}
-
- synch(!remote, uuid, requiredVersion);
-
- LoggableElement destination = getSelectedItem().getLe(context);
-
- // sauvegarde de la source
- setRootNode(source, remote);
-
- // sauvegarde de la destination
- setRootNode(destination, !remote);
-
- setSelectedItem(save);
+ return requiredVersion;
}
-
- @Override
- public void reset() {
- super.reset();
- localSelectedNode = remoteSelectedNode = null;
- localRootNode = remoteRootNode = null;
- }
-
}
\ No newline at end of file
1
0
r1218 - in trunk/simexplorer-is/simexplorer-is-swing/src: java/fr/cemagref/simexplorer/is/ui/swing/ui test/fr/cemagref/simexplorer/is/ui/swing/ui
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
24 Feb '08
Author: tchemit
Date: 2008-02-24 19:51:08 +0000 (Sun, 24 Feb 2008)
New Revision: 1218
Added:
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabUpdater.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabUpdater.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerAbstractTabUpdater.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabUpdater.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/TreeActionsUpdater.java
Removed:
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabRefreshHelper.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabRefreshHelper.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabRefreshHelper.java
Modified:
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/EntityTreeNodeHelper.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerMainUI.java
trunk/simexplorer-is/simexplorer-is-swing/src/test/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerUIRefreshHelperTest.java
Log:
utilisation object de type Updater pour gerer la mise a jour des ui suite a une modification dans le modele d'onglet
Deleted: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabRefreshHelper.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabRefreshHelper.java 2008-02-24 19:49:59 UTC (rev 1217)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabRefreshHelper.java 2008-02-24 19:51:08 UTC (rev 1218)
@@ -1,304 +0,0 @@
-/*
-* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Code Lutin,
-* Tony Chemit, Gabriel Landais
-*
-* 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.cemagref.simexplorer.is.ui.swing.ui;
-
-import fr.cemagref.simexplorer.is.entities.EntityHelper;
-import fr.cemagref.simexplorer.is.entities.attachment.Attachment;
-import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
-import fr.cemagref.simexplorer.is.entities.metadata.MetaData;
-import fr.cemagref.simexplorer.is.entities.metadata.Version;
-import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext;
-import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.DetailTableModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode;
-import fr.cemagref.simexplorer.is.ui.swing.model.HistoryModel;
-import static org.codelutin.i18n.I18n._;
-
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.DefaultListModel;
-import javax.swing.JList;
-import javax.swing.JTable;
-import javax.swing.tree.DefaultTreeModel;
-import java.awt.Dimension;
-import java.awt.Rectangle;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Cette classe contient les méthodes utiles et réutilisables pour rafraichir
- * l'onglet de detail.
- * <p/>
- * Les méthodes utilisent les données stockées dans les modèles pour rafraichir
- * les uis concernées.
- * <p/>
- * Note : <b>Dans toutes ces méthodes, NOS modèles ne doivent en aucun cas être modifiés</b>
- * <p/>
- * Par contre les modèles des ui peuvent être modifiés (par exemple modèle d'arbre, de liste)
- * mais uniquement à partir de nos modèles.
- *
- * @author chemit
- */
-public class DetailTabRefreshHelper {
-
- public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss.SSS");
-
- public static void refreshDetailTab(SimExplorerMainUI mainUi, JDetailTab ui, DetailTabModel model) {
- EntityTreeNode root = EntityTreeNodeHelper.build(model.getRootNode(), model.isRemote());
- EntityTreeNode current = model.getHistory().getCurrent();
- //FIXME : if object has different version, it says that this is same!!!
- if (current == null || !root.getUserObject().equals(current.getUserObject())) {
- model.getHistory().add(root);
- }
- DetailTabRefreshHelper.updateDetailNavigationTree(mainUi,ui, model.getHistory());
- }
-
- /**
- * Rafraichit les actions d'un node dans l'arbre de navigation
- *
- * @param mainUI l'ui principale
- * @param context le context de l'appplication
- * @param ui l'onglet de détail
- * @param model le model de d'onglet detail
- * @param node le node sélectionné dans l'arbre de navigation
- */
- public static void refreshDetailActions(SimExplorerMainUI mainUI, SimExplorerContext context, JDetailTab ui, DetailTabModel model, EntityTreeNode node) {
- // refresh synchronize action button
- refreshSynchroniseAction(context, ui, model);
- // refresh download LoggableElement button
- refreshDownloadElementAction(ui, model, node);
- // refresh delete button
- refreshDeleteAction(ui, model);
- // refresh export button
- refreshExportAction(mainUI,context,ui, model);
- // refresh download Attachment button
- refreshDownloadAttachmentAction(ui, model);
- }
-
- public static void refreshTreeDetailActions(JDetailTab ui, EntityTreeNode node) {
- EntityTreeNodeHelper.refreshTreeActions(ui.getCollapseAllDetail(), ui.getExpandAllDetail(), node);
- }
-
- public static void refreshDownloadElementAction(JDetailTab ui, DetailTabModel model, EntityTreeNode node) {
- MetaData detail = model.getDetail();
- boolean enabled = EntityHelper.Action.DOWNLOAD.accept(node);
- SimExplorerMainUI.UpdateButton(ui.getDownloadElement(), enabled, enabled ? detail == null ? node.getUserObject() : detail.getName() + " [" + model.getSelectedVersion() + "]" : null);
- }
-
- protected static void refreshDeleteAction(JDetailTab ui, DetailTabModel model) {
- MetaData detail = model.getDetail();
- boolean enabled = EntityHelper.Action.DELETE.accept(detail);
- SimExplorerMainUI.UpdateButton(ui.getDeleteElement(), enabled, enabled ? detail.getName() + " [" + model.getSelectedVersion() + "]" : null);
- }
-
- public static void refreshDownloadAttachmentAction(JDetailTab ui, DetailTabModel model) {
- Attachment attachment = model.getSelectedAttachment();
- boolean enabled = model.getDetail() != null && attachment != null;
- SimExplorerMainUI.UpdateButton(ui.getDownloadAttachment(), enabled, enabled ? attachment : null);
- }
-
- public static void refreshDetailToTreeAction(JDetailTab ui, DetailTabModel model) {
- MetaData detail = model.getDetail();
- EntityTreeNode rootNode = model.getHistory().getCurrent();
- LoggableElement rootElement = (LoggableElement) rootNode.getUserObject();
- MetaData data = rootElement.getMetaData();
- Version version = model.getSelectedVersion();
- if (version == null) {
- // la version peut être null, ce qui veut dire que l'on vient d'un changement
- // de node dans l'arbre de navigation et donc la version est celle du detai
- version = detail.getVersion();
- }
- boolean enabled = !(detail.getName().equals(data.getName()) && data.getVersion().equals(version));
-
- SimExplorerMainUI.UpdateButton(ui.getDetailToTree(), enabled, enabled ? detail.getName() + " [" + version + "]" : null);
- }
-
- public static void refreshSynchroniseAction(SimExplorerContext context, JDetailTab ui, DetailTabModel model) {
- MetaData detail = model.getDetail();
- boolean enabled = detail != null && context.isConnected();
- SimExplorerMainUI.UpdateButton(ui.getShowTab_synchronize(), enabled, enabled ? detail.getName() + " [" + model.getSelectedVersion() + "]" : null);
- }
-
- public static void refreshExportAction(SimExplorerMainUI mainUI, SimExplorerContext context, JDetailTab ui, DetailTabModel model) {
- LoggableElement sNode = model.getSelectedNode();
- mainUI.refreshExportElement(context,ui.getExportElement(),model.isRemote(),sNode);
- }
-
- public static void resetHistory(JDetailTab ui, DetailTabModel model, DefaultComboBoxModel historyModel) {
- historyModel.removeAllElements();
- LoggableElement selectedNode = model.getSelectedNode();
- Version[] versions = model.getVersions();
- boolean nodetail = versions == null || selectedNode == null;
- if (nodetail) {
- resetDetailPanel(ui);
- } else {
- ui.getDetailHeaderFromLocal().setVisible(!model.isRemote());
- ui.getDetailHeaderFromRemote().setVisible(model.isRemote());
- for (Version version : versions) {
- historyModel.addElement(version);
- }
- boolean enabled = ui.getDetailVersions().getItemCount() > 1;
- ui.getDetailVersions().setEnabled(enabled);
- String text;
- text = !enabled ? null : _("simexplorer.action.changeVersion.tooltip");
- ui.getDetailVersions().setToolTipText(text);
- }
- // can not synchronize to tree
- SimExplorerMainUI.UpdateButton(ui.getDetailToTree(), false);
- }
-
- public static void resetDetailPanel(final JDetailTab ui) {
- ui.getDetailVersions().setVisible(false);
- ui.getDetailHeader().setText(_("simexplorer.node.nodetail"));
- ui.getDetailAttachmentsHeader().setText(_("simexplorer.node.noattachments"));
- JList listAttchments = ui.getDetailAttachments();
- listAttchments.clearSelection();
- DefaultListModel listModel = (DefaultListModel) listAttchments.getModel();
- listModel.setSize(0);
- listModel.trimToSize();
- ui.getDetail().setVisible(false);
- ((DetailTableModel) ui.getDetailTable().getModel()).setData(null);
- }
-
- public static void updateDetailNavigationTree(SimExplorerMainUI mainUi, JDetailTab ui, HistoryModel<EntityTreeNode> model) {
- // push it in tree model
- ((DefaultTreeModel) ui.getNavigationTree().getModel()).setRoot(model.getCurrent());
- // by default select the root node
- if (ui.getNavigationTree().getModel().getRoot() != null) {
- ui.getNavigationTree().setSelectionRow(0);
- }
- boolean enabled;
- enabled = model.size() > 1 && model.hasPrevious();
- SimExplorerMainUI.UpdateButton(ui.getHistoryPrevious(), enabled, !enabled ? null : model.getPrevious());
- enabled = model.size() > 1 && model.hasNext();
- SimExplorerMainUI.UpdateButton(ui.getHistoryNext(), enabled, !enabled ? null : model.getNext());
-
- SimExplorerMainUI.UpdateButton(mainUi.getHistoryReset(), !model.isEmpty());
-
- }
-
- public static void updateDetailPanel(Integer index, final JDetailTab ui, DetailTabModel model, LoggableElement selectedNode) {
- MetaData detail = model.getDetail();
- ui.getDetailVersions().setVisible(true);
- if (ui.getDetailVersions().getItemCount() > 0) {
- ui.getDetailVersions().setSelectedIndex(index);
- }
- ui.getDetailHeader().setText(selectedNode.getMetaData().getName());
- // FIXME !!!
-// ui.getDetailDescriptorsHeader().setText(_("simexplorer.node.descriptors", detail.getDescriptors().size()));
- ui.getDetailDescriptorsHeader().setText(_("simexplorer.node.descriptors", 0));
- ui.getDetailType().setText(EntityHelper.Type.getLibelle(detail.getElementClass()));
- String s = detail.getDescription();
- String tooltip = s;
- if (s.length() > 32) {
- s = s.substring(0, 32) + "...";
- }
- ui.getDetailDescription().setText(s);
- if (!s.equals(tooltip)) {
- ui.getDetailDescription().setToolTipText(tooltip);
- }
- ui.getDetailCreationDate().setText(DATE_FORMAT.format(detail.getCreationDate()));
- ui.getDetail().setVisible(true);
- JTable table = ui.getDetailTable();
- // FIXME !!!
- ((DetailTableModel) table.getModel()).setData(null);
-// ((DetailTableModel) table.getModel()).setData(detail);
- int nbDescriptorRows = table.getRowCount();
-
- // FIXME !!!
-// List<Attachment> attachments = detail.getAttachments();
- List<Attachment> attachments = new ArrayList<Attachment>();
- JList listAttachments = ui.getDetailAttachments();
- DefaultListModel listModel = (DefaultListModel) listAttachments.getModel();
- listModel.setSize(0);
- listModel.trimToSize();
- int nbAttachmentRows;
- if (attachments.isEmpty()) {
- ui.getDetailAttachmentsHeader().setText(_("simexplorer.node.noattachments"));
- ui.getScrollAttachments().setVisible(false);
- nbAttachmentRows = 0;
- } else {
- ui.getDetailAttachmentsHeader().setText(EntityHelper.Type.Attachment.getLibelles() + " (" + attachments.size() + ")");
- for (Attachment attachment : attachments) {
- listModel.addElement(attachment);
- }
- listAttachments.setSelectedIndex(0);
- nbAttachmentRows = listModel.getSize();
- ui.getScrollAttachments().setVisible(true);
- }
-
- int[] rows = computeRows(nbDescriptorRows, nbAttachmentRows);
-
- Dimension dimOneRow = table.getUI().getPreferredSize(table.getTableHeader());
-
- ui.getScrollTable().setPreferredSize(new Dimension((int) dimOneRow.getWidth(), 2 + ((rows[0] + 1) * (4 + table.getFont().getSize()))));
- //ui.getScrollTable().setPreferredSize(new Dimension((int) table.getSize().getWidth(), 2 + (nbDescriptorRows * (4 + table.getFont().getSize()))));
- if (nbAttachmentRows > 0) {
- Rectangle rect = listAttachments.getUI().getCellBounds(listAttachments, 0, 0);
- ui.getScrollAttachments().setPreferredSize(new Dimension((int) rect.getWidth() - 4, (int) (3 + rows[1] * rect.getHeight())));
- }
-
- table.invalidate();
- listAttachments.invalidate();
- ui.getScrollPane().invalidate();
- ui.repaint();
- }
-
- protected static int[] computeRows(int nbDescriptorRows, int nbAttachmentRows) {
- int[] result = new int[2];
- int max = 14;
- int maxOne = max / 2;
- if (nbDescriptorRows == 0) {
- result[0] = 0;
- result[1] = nbAttachmentRows > max ? max : nbAttachmentRows;
- return result;
- }
- if (nbAttachmentRows == 0) {
- result[0] = nbDescriptorRows > max ? max : nbDescriptorRows;
- result[1] = 0;
- return result;
- }
- if (nbAttachmentRows < maxOne + 1 && nbDescriptorRows < maxOne + 1) {
- result[0] = nbDescriptorRows;
- result[1] = nbAttachmentRows;
- return result;
- }
- if (nbDescriptorRows > maxOne && nbAttachmentRows > maxOne) {
- result[0] = result[1] = maxOne;
- return result;
- }
- if (nbDescriptorRows < maxOne + 1) {
- result[0] = nbDescriptorRows;
- int i = max - nbDescriptorRows;
- result[1] = nbAttachmentRows < i ? nbAttachmentRows : i;
- return result;
- }
- if (nbAttachmentRows < maxOne + 1) {
- int i = max - nbAttachmentRows;
- result[0] = nbDescriptorRows < i ? nbDescriptorRows : i;
- result[1] = nbAttachmentRows;
- return result;
- }
- throw new IllegalStateException("can not come her :)");
- }
-
- protected DetailTabRefreshHelper() {
- // do not instanciate me please
- }
-}
\ No newline at end of file
Added: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabUpdater.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabUpdater.java (rev 0)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/DetailTabUpdater.java 2008-02-24 19:51:08 UTC (rev 1218)
@@ -0,0 +1,383 @@
+/*
+* ##% Copyright (C) 2007, 2008 Code Lutin, Tony Chemit, Gabriel Landais
+*
+* 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.cemagref.simexplorer.is.ui.swing.ui;
+
+import fr.cemagref.simexplorer.is.entities.EntityHelper;
+import fr.cemagref.simexplorer.is.entities.attachment.Attachment;
+import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
+import fr.cemagref.simexplorer.is.entities.metadata.MetaData;
+import fr.cemagref.simexplorer.is.entities.metadata.Version;
+import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext;
+import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel;
+import fr.cemagref.simexplorer.is.ui.swing.model.DetailTableModel;
+import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode;
+import fr.cemagref.simexplorer.is.ui.swing.model.HistoryModel;
+import static org.codelutin.i18n.I18n._;
+
+import javax.swing.DefaultComboBoxModel;
+import javax.swing.DefaultListModel;
+import javax.swing.JComboBox;
+import javax.swing.JList;
+import javax.swing.JTable;
+import javax.swing.tree.DefaultTreeModel;
+import java.awt.Dimension;
+import java.awt.Rectangle;
+import java.beans.PropertyChangeEvent;
+import java.text.SimpleDateFormat;
+import java.util.List;
+
+/**
+ * TODO javadoc
+ *
+ * @author chemit
+ */
+public class DetailTabUpdater extends SimExplorerAbstractTabUpdater<JDetailTab, DetailTabModel> {
+
+ public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss.SSS");
+
+ public DetailTabUpdater(SimExplorerContext context) {
+ super(context, SimExplorerTab.detail);
+ }
+
+ public void propertyChange(PropertyChangeEvent evt) {
+ String evtName = evt.getPropertyName();
+ if (log.isDebugEnabled()) {
+ log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ }
+
+ if (evtName.equals(DetailTabModel.ROOT_NODE_PROPERTY_CHANGED)) {
+ fireRootSelected(getUi(), getModel(), evt);
+ return;
+ }
+ if (evtName.equals(DetailTabModel.SELECTED_NODE_PROPERTY_CHANGED)) {
+ fireNodeSelected(getUi(), getModel(), evt);
+ return;
+ }
+ if (evtName.equals(DetailTabModel.SELECTED_VERSION_INDEX_PROPERTY_CHANGED)) {
+ fireVersionSelected(getUi(), getModel(), evt);
+ return;
+ }
+ if (evtName.equals(DetailTabModel.SELECTED_ATTACHMENT_INDEX_PROPERTY_CHANGED)) {
+ fireAttachmentSelected(getUi(), getModel(), evt);
+ return;
+ }
+
+ throw new IllegalStateException("could not treate property " + evtName);
+
+ }
+
+ protected void fireRootSelected(JDetailTab ui, DetailTabModel model, PropertyChangeEvent evt) {
+ log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+
+ EntityTreeNode node = (EntityTreeNode) evt.getNewValue();
+
+ ((DefaultTreeModel) ui.getNavigationTree().getModel()).setRoot(node);
+
+ if (node == null) {
+ ui.getNavigationTree().clearSelection();
+ return;
+ }
+
+ // refresh tree toolbar label
+ ui.getDetailHeaderFromLocal().setVisible(!model.isRemote());
+ ui.getDetailHeaderFromRemote().setVisible(model.isRemote());
+
+ HistoryModel<EntityTreeNode> history = model.getHistory();
+
+ // reset history action
+ SimExplorerMainUI.UpdateButton(getMainUI().getHistoryReset(), history.size() > 0);
+
+ // history next action
+ if (history.size() > 1 && history.hasPrevious()) {
+ SimExplorerMainUI.EnableButton(ui.getHistoryPrevious(), history.getPrevious());
+ } else {
+ SimExplorerMainUI.DisableButton(ui.getHistoryPrevious());
+ }
+
+ // history previous action
+ if (history.size() > 1 && history.hasNext()) {
+ SimExplorerMainUI.EnableButton(ui.getHistoryNext(), history.getNext());
+ } else {
+ SimExplorerMainUI.DisableButton(ui.getHistoryNext());
+ }
+
+ // select root node (will trigger fireNodeSelected)
+ ui.getNavigationTree().setSelectionRow(0);
+ }
+
+ protected void fireNodeSelected(JDetailTab ui, DetailTabModel model, PropertyChangeEvent evt) {
+ log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+
+ LoggableElement newSelectedNode = (LoggableElement) evt.getNewValue();
+
+ boolean noNode = newSelectedNode == null;
+
+ resetDetailPanel(noNode);
+
+ if (noNode) {
+ return;
+ }
+
+ // add versions
+ DefaultComboBoxModel historyModel = (DefaultComboBoxModel) ui.getDetailVersions().getModel();
+ Version newVersion = newSelectedNode.getMetaData().getVersion();
+
+ Version[] versions = model.getVersions();
+ Integer newIndex=null;
+ if (versions != null) {
+ for (int i = 0; i < versions.length; i++) {
+ Version version = versions[i];
+ historyModel.addElement(version);
+ if (version.equals(newVersion)) {
+ newIndex=i;
+ }
+ }
+ }
+
+ if (newIndex!=null) {
+ ui.getDetailVersions().setSelectedIndex(newIndex);
+ }
+ // add accessibility on combo
+ boolean enabled = ui.getDetailVersions().getItemCount() > 1;
+ SimExplorerMainUI.UpdateCombo(ui.getDetailVersions(), enabled, !enabled ? null : _("simexplorer.action.changeVersion.tooltip"));
+
+ }
+
+ protected void fireVersionSelected(JDetailTab ui, DetailTabModel model, PropertyChangeEvent evt) {
+ log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+
+ Integer index = (Integer) evt.getNewValue();
+
+ if (index == null || index == -1) {
+ resetDetailPanel(true);
+ return;
+ }
+
+ EntityTreeNode node = EntityTreeNodeHelper.getSelectedNode(ui.getNavigationTree());
+
+ MetaData detail = null;
+ if (model.getDetailNode() != null) {
+ detail = model.getDetailNode().getMetaData();
+ }
+
+ JList listAttachments = ui.getDetailAttachments();
+
+ DefaultListModel listModel = (DefaultListModel) listAttachments.getModel();
+
+ List<Attachment> attachments = model.getDetailNode() == null ? null : model.getDetailNode().getAttachments();
+
+ if (attachments != null && !attachments.isEmpty()) {
+ for (Attachment attachment : attachments) {
+ listModel.addElement(attachment);
+ }
+ ui.getScrollAttachments().setVisible(true);
+ ui.getDetailAttachments().setSelectedIndex(0);
+ } else {
+ ui.getDetailAttachments().getSelectionModel().clearSelection();
+ // if we had a previous empty list, no trigger to fireAttachmentSelected
+ SimExplorerMainUI.DisableButton(ui.getDownloadAttachment());
+ ui.getScrollAttachments().setVisible(false);
+ }
+
+ if (ui.getDetailVersions().getSelectedIndex()!=index) {
+ ui.getDetailVersions().setSelectedIndex(index);
+ }
+
+ refreshDetailPanelActions(ui, model, detail, node);
+
+ LoggableElement element = model.getDetailNode();
+ if (element == null) {
+ return;
+ }
+
+ updateDetailPanel(ui, detail, listAttachments, element);
+ }
+
+ private void refreshDetailPanelActions(JDetailTab ui, DetailTabModel model, MetaData detail, EntityTreeNode node) {
+ boolean enabled;
+
+ // refresh synchronize and export actions
+ refreshWithConnectAction();
+
+ // refresh download LoggableElement button
+ enabled = detail != null && EntityHelper.Action.DOWNLOAD.accept(node);
+ SimExplorerMainUI.UpdateButton(ui.getDownloadElement(), enabled, enabled ? detail == null ? node.getUserObject() : detail.getName() + " [" + model.getSelectedVersion() + "]" : null);
+
+ // refresh delete button
+
+ enabled = detail != null && EntityHelper.Action.DELETE.accept(detail);
+ SimExplorerMainUI.UpdateButton(ui.getDeleteElement(), enabled, enabled ? detail.getName() + " [" + model.getSelectedVersion() + "]" : null);
+
+ // refresh detail to tree button
+
+ EntityTreeNode rootNode = model.getHistory().getCurrent();
+ LoggableElement rootElement = (LoggableElement) rootNode.getUserObject();
+ MetaData data = rootElement.getMetaData();
+ Version version = model.getSelectedVersion();
+ if (version == null && detail != null) {
+ // la version peut être null, ce qui veut dire que l'on vient d'un changement
+ // de node dans l'arbre de navigation et donc la version est celle du detai
+ version = detail.getVersion();
+ }
+ enabled = detail != null && !(detail.getName().equals(data.getName()) && data.getVersion().equals(version));
+
+ SimExplorerMainUI.UpdateButton(ui.getDetailToTree(), enabled, enabled ? detail.getName() + " [" + version + "]" : null);
+ }
+
+ protected void fireAttachmentSelected(JDetailTab ui, DetailTabModel model, PropertyChangeEvent evt) {
+ log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ Attachment attachment = model.getSelectedAttachment();
+ boolean enabled = model.getDetailNode() != null && attachment != null;
+ SimExplorerMainUI.UpdateButton(ui.getDownloadAttachment(), enabled, enabled ? attachment : null);
+ }
+
+ public void refreshWithConnectAction() {
+ DetailTabModel model = getModel();
+ JDetailTab ui = getUi();
+ boolean b = model.getDetailNode() != null;
+ boolean enabled = b && context.isConnected();
+
+ MetaData detail = b ? model.getDetailNode().getMetaData() : null;
+ SimExplorerMainUI.UpdateButton(ui.getShowTab_synchronize(), enabled, enabled ? detail.getName() + " [" + model.getSelectedVersion() + "]" : null);
+ LoggableElement sNode = model.getSelectedNode();
+ getMainUI().refreshExportElement(context, ui.getExportElement(), model.isRemote(), sNode);
+ }
+
+ public void initListeners() {
+ DetailTabModel model = getModel();
+ model.addPropertyChangeListener(DetailTabModel.ROOT_NODE_PROPERTY_CHANGED, this);
+ model.addPropertyChangeListener(DetailTabModel.SELECTED_NODE_PROPERTY_CHANGED, this);
+ model.addPropertyChangeListener(DetailTabModel.SELECTED_VERSION_INDEX_PROPERTY_CHANGED, this);
+ model.addPropertyChangeListener(DetailTabModel.SELECTED_ATTACHMENT_INDEX_PROPERTY_CHANGED, this);
+ }
+
+ protected void resetDetailPanel(boolean disable) {
+ JDetailTab ui = getUi();
+ JComboBox versions = ui.getDetailVersions();
+ JList attchments = ui.getDetailAttachments();
+
+ ui.getDetailHeader().setText(_("simexplorer.node.nodetail"));
+ ui.getDetailAttachmentsHeader().setText(_("simexplorer.node.noattachments"));
+
+ if (disable) {
+ versions.setVisible(false);
+ ui.getDetail().setVisible(false);
+ SimExplorerMainUI.DisableButton(
+ ui.getDetailToTree(),
+ ui.getShowTab_synchronize(),
+ ui.getExportElement(),
+ ui.getDownloadAttachment(),
+ ui.getDownloadElement(),
+ ui.getDeleteElement()
+ );
+ }
+
+ // clean versions combo
+ DefaultComboBoxModel comboModel = (DefaultComboBoxModel) versions.getModel();
+ comboModel.removeAllElements();
+
+ // clean descriptors table
+ ((DetailTableModel) ui.getDetailTable().getModel()).setData(null);
+
+ // clean attachments list
+ attchments.clearSelection();
+ DefaultListModel listModel = (DefaultListModel) attchments.getModel();
+ listModel.setSize(0);
+ listModel.trimToSize();
+
+ }
+
+ protected void updateDetailPanel(JDetailTab ui, MetaData detail, JList listAttachments, LoggableElement element) {
+
+ ui.getDetailHeader().setText(detail.getName());
+ ui.getDetailDescriptorsHeader().setText(_("simexplorer.node.descriptors", element.getDescriptors().size()));
+ ui.getDetailType().setText(EntityHelper.Type.getLibelle(detail.getElementClass()));
+
+ String s = detail.getDescription();
+ String tooltip = s;
+ if (s.length() > 32) {
+ s = s.substring(0, 32) + "...";
+ }
+ ui.getDetailDescription().setText(s);
+ ui.getDetailDescription().setToolTipText(tooltip);
+
+ ui.getDetailCreationDate().setText(DATE_FORMAT.format(detail.getCreationDate()));
+ ui.getDetail().setVisible(true);
+ ui.getDetailVersions().setVisible(true);
+ JTable table = ui.getDetailTable();
+
+ ((DetailTableModel) table.getModel()).setData(element);
+
+ int nbDescriptorRows = table.getRowCount();
+ int nbAttachmentRows = listAttachments.getModel().getSize();
+
+ int[] rows = computeRows(nbDescriptorRows, nbAttachmentRows);
+
+ Dimension dimOneRow = table.getUI().getPreferredSize(table.getTableHeader());
+
+ ui.getScrollTable().setPreferredSize(new Dimension((int) dimOneRow.getWidth(), 2 + ((rows[0] + 1) * (4 + table.getFont().getSize()))));
+ //ui.getScrollTable().setPreferredSize(new Dimension((int) table.getSize().getWidth(), 2 + (nbDescriptorRows * (4 + table.getFont().getSize()))));
+ if (nbAttachmentRows > 0) {
+ ui.getDetailAttachmentsHeader().setText(EntityHelper.Type.Attachment.getLibelles() + " (" + nbAttachmentRows + ")");
+ Rectangle rect = listAttachments.getUI().getCellBounds(listAttachments, 0, 0);
+ ui.getScrollAttachments().setPreferredSize(new Dimension((int) rect.getWidth() - 4, (int) (3 + rows[1] * rect.getHeight())));
+ }
+ table.invalidate();
+ listAttachments.invalidate();
+ ui.getScrollPane().invalidate();
+ ui.repaint();
+ }
+
+ protected int[] computeRows(int nbDescriptorRows, int nbAttachmentRows) {
+ int[] result = new int[2];
+ int max = 14;
+ int maxOne = max / 2;
+ if (nbDescriptorRows == 0) {
+ result[0] = 0;
+ result[1] = nbAttachmentRows > max ? max : nbAttachmentRows;
+ return result;
+ }
+ if (nbAttachmentRows == 0) {
+ result[0] = nbDescriptorRows > max ? max : nbDescriptorRows;
+ result[1] = 0;
+ return result;
+ }
+ if (nbAttachmentRows < maxOne + 1 && nbDescriptorRows < maxOne + 1) {
+ result[0] = nbDescriptorRows;
+ result[1] = nbAttachmentRows;
+ return result;
+ }
+ if (nbDescriptorRows > maxOne && nbAttachmentRows > maxOne) {
+ result[0] = result[1] = maxOne;
+ return result;
+ }
+ if (nbDescriptorRows < maxOne + 1) {
+ result[0] = nbDescriptorRows;
+ int i = max - nbDescriptorRows;
+ result[1] = nbAttachmentRows < i ? nbAttachmentRows : i;
+ return result;
+ }
+ if (nbAttachmentRows < maxOne + 1) {
+ int i = max - nbAttachmentRows;
+ result[0] = nbDescriptorRows < i ? nbDescriptorRows : i;
+ result[1] = nbAttachmentRows;
+ return result;
+ }
+ throw new IllegalStateException("can not come her :)");
+ }
+}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/EntityTreeNodeHelper.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/EntityTreeNodeHelper.java 2008-02-24 19:49:59 UTC (rev 1217)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/EntityTreeNodeHelper.java 2008-02-24 19:51:08 UTC (rev 1218)
@@ -46,6 +46,9 @@
import javax.swing.tree.TreePath;
import java.util.Collection;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
/**
* La classe responsable de la création des arbres de {@link fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode}
* à partir de {@link LoggableElement} .
@@ -58,6 +61,8 @@
*/
public class EntityTreeNodeHelper {
+ protected static Log log = LogFactory.getLog(EntityTreeNodeHelper.class);
+
/** L'instance cachée de builder par Thread. */
protected static final ThreadLocal<EntityVisitorBuilder> builder =
new ThreadLocal<EntityVisitorBuilder>() {
@@ -81,10 +86,23 @@
EntityTreeNode result;
// walk
result = instance.visit(v, remote);
+ log.info(v+" ("+remote+") ");
return result;
}
}
+ public static LoggableElement getSelectedLoggableElement(TreeSelectionEvent e) {
+ TreePath path = e.getNewLeadSelectionPath();
+ EntityTreeNode node = null;
+ if (path != null) {
+ Object o = path.getLastPathComponent();
+ if (o instanceof EntityTreeNode) {
+ node = (EntityTreeNode) o;
+ }
+ }
+ return node==null?null:node.getLoggableElement();
+ }
+
public static EntityTreeNode getSelectedNode(TreeSelectionEvent e) {
TreePath path = e.getNewLeadSelectionPath();
EntityTreeNode node = null;
Deleted: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabRefreshHelper.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabRefreshHelper.java 2008-02-24 19:49:59 UTC (rev 1217)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabRefreshHelper.java 2008-02-24 19:51:08 UTC (rev 1218)
@@ -1,171 +0,0 @@
-/*
-* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Code Lutin,
-* Tony Chemit, Gabriel Landais
-*
-* 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.cemagref.simexplorer.is.ui.swing.ui;
-
-import fr.cemagref.simexplorer.is.entities.EntityHelper;
-import fr.cemagref.simexplorer.is.entities.metadata.MetaData;
-import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext;
-import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
-import fr.cemagref.simexplorer.is.ui.swing.model.PaginationModel;
-
-import javax.swing.JComboBox;
-import javax.swing.ListSelectionModel;
-import javax.swing.SwingUtilities;
-
-/**
- * Cette classe contient les méthodes utiles et réutilisables pour rafraichir
- * les onglets de liste.
- * <p/>
- * Les méthodes utilisent les données stockées dans les modèles pour rafraichir
- * les uis concernées.
- * <p/>
- * Note : <b>Dans toutes ces méthodes, NOS modèles ne doivent en aucun cas être modifiés</b>
- * <p/>
- * Par contre les modèles des ui peuvent être modifiés (par exemple modèle d'arbre, de liste)
- * mais uniquement à partir de nos modèles.
- *
- * @author chemit
- */
-public class ListTabRefreshHelper {
-
- /**
- * Rafraichit un onglet de type liste à partir de son modèle.
- *
- * @param mainUi main ui
- * @param ui l'onglet de liste à utiliser
- * @param model le modèle de liste à utiliser
- */
- public static void refreshListTabUI(final SimExplorerMainUI mainUi, final JListTab ui, final ListTabModel model) {
-
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
-
- // refresh search text
- ui.getSearchText().setText(model.getQuery().getQuery());
-
- // refresh search actions
- refreshSearchActions(ui, model);
-
- // refresh pagination actions
- refreshPagination(ui, model.getPagination());
-
-
- ListSelectionModel selectionModel = ui.getTable().getSelectionModel();
- if (!model.isEmpty() && selectionModel.isSelectionEmpty()) {
- // always select the first row (to init selectedItem)
- selectionModel.setSelectionInterval(0, 0);
- } else {
- selectionModel.clearSelection();
- }
-
- // table data model may have changed, must revalidate
- ui.getTable().invalidate();
-
- // repaint the frame
- mainUi.repaint();
- }
- });
- }
-
- public static void refreshListTablePopupMenu(SimExplorerMainUI mainUi, SimExplorerContext context, final JListTab ui, final ListTabModel model) {
- DataEntityModel item = model.getSelectedItem();
- ui.getTablePopupMenu().setEnabled(item != null);
- int index = model.getSelectedIndex();
- if (item == null || index == -1 || model.isEmpty()) {
- return;
- }
- MetaData data = model.get(index);
-
- String text = data.getName() + " [" + data.getVersion() + "]";
-
- SimExplorerMainUI.UpdateButton(ui.getDownloadElement(), EntityHelper.Action.DOWNLOAD.accept(data), text);
- SimExplorerMainUI.UpdateButton(ui.getDeleteElement(), EntityHelper.Action.DELETE.accept(data), text);
- mainUi.refreshExportElement(context,ui.getExportElement(), model.isRemote(), data);
- SimExplorerMainUI.UpdateButton(ui.getShowTab_detail(), true, text);
- SimExplorerMainUI.UpdateButton(ui.getShowTab_synchronize(), context.isConnected(), text);
- }
-
- /**
- * Rafraichit les actions de recherche d'un onglet de type liste.
- *
- * @param ui l'onglet de liste à utiliser
- * @param model le modèle de liste à utiliser
- */
- public static void refreshSearchActions(JListTab ui, ListTabModel model) {
- String text = ui.getSearchText().getText();
- boolean hasQuery = model.getQuery().hasQuery();
- ui.getSearch().setEnabled(hasQuery || !text.isEmpty());
- ui.getResetSearch().setEnabled(hasQuery || !text.isEmpty());
- }
-
- public static void refreshPagination(JListTab ui, PaginationModel pagination) {
-
- // refresh changePage combobox
- refreshChangePageCombo(ui, pagination);
-
- // refresh changeSizor combo
- refreshChangeSizorCombo(ui, pagination);
-
- int page = pagination.getCurrentPage();
- boolean notLast = page + 1 < pagination.getNbPages();
- ui.getGoNextPage().setEnabled(notLast);
- ui.getGoLastPage().setEnabled(notLast);
- boolean notFirstPage = !(pagination.getSize() < 2 || page < 1);
- ui.getGoFirstPage().setEnabled(notFirstPage);
- ui.getGoPreviousPage().setEnabled(notFirstPage);
- }
-
- public static void refreshChangeSizorCombo(JListTab ui, PaginationModel pagination) {
- JComboBox combo = ui.getChangeSizor();
- String s = pagination.getWidth() + "";
- if (!s.equals(String.valueOf(combo.getSelectedItem()))) {
- combo.setEnabled(false);
- combo.setSelectedItem(s);
- combo.setEnabled(true);
- }
- }
-
- public static void refreshChangePageCombo(JListTab ui, PaginationModel pagination) {
- JComboBox combo = ui.getGoPage();
- long size = pagination.getNbPages();
- combo.setEnabled(false);
- //System.out.println("page old size : " + combo.getItemCount() + " new size : " + size);
- if (size < combo.getItemCount()) {
- while (size < combo.getItemCount()) {
- combo.removeItemAt(combo.getItemCount() - 1);
- }
- } else {
- while (size > combo.getItemCount()) {
- combo.addItem(combo.getItemCount());
- }
- }
- //System.out.println("new page size : " + combo.getItemCount());
- if (combo.getItemCount() > 0) {
- combo.setSelectedIndex(pagination.getCurrentPage());
- }
- boolean b = combo.getItemCount() > 1;
- combo.setEnabled(b);
- ui.getCurrentPage().setEnabled(b);
- }
-
- protected ListTabRefreshHelper() {
- // do not instanciate me please
- }
-}
\ No newline at end of file
Added: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabUpdater.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabUpdater.java (rev 0)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/ListTabUpdater.java 2008-02-24 19:51:08 UTC (rev 1218)
@@ -0,0 +1,202 @@
+/*
+* ##% Copyright (C) 2007, 2008 Code Lutin, Tony Chemit, Gabriel Landais
+*
+* 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.cemagref.simexplorer.is.ui.swing.ui;
+
+import fr.cemagref.simexplorer.is.entities.EntityHelper;
+import fr.cemagref.simexplorer.is.entities.metadata.MetaData;
+import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext;
+import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel;
+import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
+import fr.cemagref.simexplorer.is.ui.swing.model.ListTableModel;
+import fr.cemagref.simexplorer.is.ui.swing.model.PaginationModel;
+import fr.cemagref.simexplorer.is.ui.swing.model.QueryModel;
+
+import javax.swing.JComboBox;
+import java.beans.PropertyChangeEvent;
+import java.text.SimpleDateFormat;
+
+/**
+ * La classe responsable du rafrachissement des ui de l'onglet de liste.
+ *
+ * @author chemit
+ */
+public class ListTabUpdater extends SimExplorerAbstractTabUpdater<JListTab, ListTabModel> {
+
+ public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss.SSS");
+
+ public ListTabUpdater(SimExplorerContext context, boolean remote) {
+ super(context, remote ? SimExplorerTab.remote : SimExplorerTab.local);
+ }
+
+ public void propertyChange(PropertyChangeEvent evt) {
+ String evtName = evt.getPropertyName();
+ if (log.isDebugEnabled()) {
+ log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ }
+
+ if (evtName.equals(ListTabModel.SELECTED_ROW_PROPERTY_CHANGED)) {
+ fireRowSelected(getUi(), getModel(), evt);
+ return;
+ }
+
+ if (evtName.equals(ListTabModel.QUERY_PROPERTY_CHANGED)) {
+ fireQueryChanged(getUi(), getModel(), evt);
+ return;
+ }
+
+ if (evtName.equals(ListTabModel.PAGINATION_PROPERTY_CHANGED)) {
+ firePaginationChanged(getUi(), getModel(), evt);
+ return;
+ }
+
+ throw new IllegalStateException("could not treate property " + evtName);
+ }
+
+ protected void fireRowSelected(JListTab ui, ListTabModel model, PropertyChangeEvent evt) {
+ log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+
+ if (!model.isEmpty()) {
+ ui.getTable().getSelectionModel().setSelectionInterval(model.getSelectedIndex(), model.getSelectedIndex());
+ } else {
+ ui.getTable().getSelectionModel().clearSelection();
+ }
+
+ // refresh popup
+ refreshListTablePopupMenu(model);
+ }
+
+ protected void fireQueryChanged(JListTab ui, ListTabModel model, PropertyChangeEvent evt) {
+ log.info(evt.getPropertyName() + "\n\told:" + evt.getOldValue() + ",\n\tnew:" + evt.getNewValue());
+ QueryModel query = (QueryModel) evt.getNewValue();
+ if (query == null) {
+ resetSearch();
+ return;
+ }
+
+ ui.getSearchText().setText(query.getQuery());
+
+ refreshSearchActions();
+
+ refreshPaginationActions(model.getPagination());
+
+ ((ListTableModel) ui.getTable().getModel()).setData(model.getList());
+
+ // on selectionne le premier item
+ if (!model.isEmpty()) {
+ ui.getTable().getSelectionModel().setSelectionInterval(0,0);
+ }
+ }
+
+ protected void firePaginationChanged(JListTab ui, ListTabModel model, PropertyChangeEvent evt) {
+ log.info(evt.getPropertyName() + "\n\told:" + evt.getOldValue() + ",\n\tnew:" + evt.getNewValue());
+
+ ui.getSearchText().setText(model.getQuery());
+
+ refreshSearchActions();
+
+ refreshPaginationActions(model.getPagination());
+
+ ((ListTableModel) ui.getTable().getModel()).setData(model.getList());
+
+ if (!model.isEmpty()) {
+ ui.getTable().getSelectionModel().setSelectionInterval(0,0);
+ }
+ }
+
+ protected void refreshPaginationActions(PaginationModel pagination) {
+ JListTab ui = getUi();
+ JComboBox combo = ui.getGoPage();
+ long size = pagination.getNbPages();
+ combo.setEnabled(false);
+ //System.out.println("page old size : " + combo.getItemCount() + " new size : " + size);
+ if (size < combo.getItemCount()) {
+ while (size < combo.getItemCount()) {
+ combo.removeItemAt(combo.getItemCount() - 1);
+ }
+ } else {
+ while (size > combo.getItemCount()) {
+ combo.addItem(combo.getItemCount());
+ }
+ }
+ //System.out.println("new page size : " + combo.getItemCount());
+ if (combo.getItemCount() > 0) {
+ combo.setSelectedIndex(pagination.getCurrentPage());
+ }
+ boolean b = combo.getItemCount() > 1;
+ combo.setEnabled(b);
+ ui.getCurrentPage().setEnabled(b);
+
+ combo = ui.getChangeSizor();
+ //String s = pagination.getWidth() + "";
+ if (!pagination.getWidth().equals(combo.getSelectedItem())) {
+ combo.setEnabled(false);
+ combo.setSelectedItem(pagination.getWidth());
+ combo.setEnabled(true);
+ }
+
+ int page = pagination.getCurrentPage();
+ boolean notLast = page + 1 < pagination.getNbPages();
+ ui.getGoNextPage().setEnabled(notLast);
+ ui.getGoLastPage().setEnabled(notLast);
+ boolean notFirstPage = !(pagination.getSize() < 2 || page < 1);
+ ui.getGoFirstPage().setEnabled(notFirstPage);
+ ui.getGoPreviousPage().setEnabled(notFirstPage);
+ }
+
+ public void initListeners() {
+ ListTabModel model = getModel();
+ model.addPropertyChangeListener(ListTabModel.SELECTED_ROW_PROPERTY_CHANGED, this);
+ model.addPropertyChangeListener(ListTabModel.PAGINATION_PROPERTY_CHANGED, this);
+ model.addPropertyChangeListener(ListTabModel.QUERY_PROPERTY_CHANGED, this);
+ }
+
+
+ public void resetSearch() {
+ getUi().getSearchText().setText(null);
+ SimExplorerMainUI.DisableButton(getUi().getResetSearch(), getUi().getSearch());
+ }
+
+ /** Rafraichit les actions de recherche d'un onglet de type liste. */
+ public void refreshSearchActions() {
+ JListTab ui = getUi();
+ String text = ui.getSearchText().getText();
+ boolean hasQuery = getModel().hasQuery() || !text.isEmpty();
+ SimExplorerMainUI.UpdateButton(ui.getSearch(), hasQuery);
+ SimExplorerMainUI.UpdateButton(ui.getResetSearch(), hasQuery);
+ }
+
+ public void refreshListTablePopupMenu(final ListTabModel model) {
+ JListTab ui = getUi();
+ DataEntityModel item = model.getSelectedItem();
+ ui.getTablePopupMenu().setEnabled(item != null);
+ int index = model.getSelectedIndex();
+ if (item == null || index == -1 || model.isEmpty()) {
+ return;
+ }
+ MetaData data = model.get(index);
+
+ String text = data.getName() + " [" + data.getVersion() + "]";
+
+ SimExplorerMainUI.UpdateButton(ui.getDownloadElement(), EntityHelper.Action.DOWNLOAD.accept(data), text);
+ SimExplorerMainUI.UpdateButton(ui.getDeleteElement(), EntityHelper.Action.DELETE.accept(data), text);
+ SimExplorerMainUI.UpdateButton(ui.getShowTab_detail(), true, text);
+ SimExplorerMainUI.UpdateButton(ui.getShowTab_synchronize(), getContext().isConnected(), text);
+
+ getMainUI().refreshExportElement(getContext(), ui.getExportElement(), model.isRemote(), data);
+ }
+}
\ No newline at end of file
Added: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerAbstractTabUpdater.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerAbstractTabUpdater.java (rev 0)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerAbstractTabUpdater.java 2008-02-24 19:51:08 UTC (rev 1218)
@@ -0,0 +1,66 @@
+/*
+* ##% Copyright (C) 2007, 2008 Code Lutin, Tony Chemit, Gabriel Landais
+*
+* 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.cemagref.simexplorer.is.ui.swing.ui;
+
+import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext;
+import fr.cemagref.simexplorer.is.ui.swing.model.SimExplorerTabModel;
+import jaxx.runtime.swing.JAXXTab;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.beans.PropertyChangeListener;
+
+/**
+ * TODO javadoc
+ *
+ * @author chemit
+ */
+public abstract class SimExplorerAbstractTabUpdater<U extends JAXXTab, M extends SimExplorerTabModel> implements PropertyChangeListener {
+ protected static Log log = LogFactory.getLog(DetailTabUpdater.class);
+ final protected SimExplorerContext context;
+ protected SimExplorerTab tab;
+
+ protected abstract void initListeners();
+
+ public void removeListeners() {
+ getModel().removePropertyChangeListener(this);
+ }
+
+ public SimExplorerAbstractTabUpdater(SimExplorerContext context, SimExplorerTab tab) {
+ this.context = context;
+ this.tab = tab;
+ }
+
+ public SimExplorerContext getContext() {
+ return context;
+ }
+
+ protected SimExplorerMainUI getMainUI() {
+ return SimExplorerMainUI.getUI();
+ }
+
+ @SuppressWarnings({"unchecked"})
+ public M getModel() {
+ return (M) tab.getModel();
+ }
+
+ @SuppressWarnings({"unchecked"})
+ public U getUi() {
+ return (U) tab.getUI();
+ }
+}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerMainUI.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerMainUI.java 2008-02-24 19:49:59 UTC (rev 1217)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerMainUI.java 2008-02-24 19:51:08 UTC (rev 1218)
@@ -34,6 +34,7 @@
import javax.swing.JComponent;
import javax.swing.KeyStroke;
import javax.swing.SwingUtilities;
+import javax.swing.JComboBox;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.util.regex.Matcher;
@@ -81,7 +82,7 @@
protected void finalizeInit(SimExplorerContext context) {
// chargement dans l'ui des actions
- SimExplorerActionManager.loadActions(this, null);
+ SimExplorerActionManager.loadActions(this);
// add Ctrl-W to close current tab
getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_W, InputEvent.CTRL_MASK), "closeTab");
@@ -136,6 +137,16 @@
button.setToolTipText(t);
}
+ public static void DisableButton(AbstractButton... buttons) {
+ for (AbstractButton button : buttons) {
+ UpdateButton(button, false);
+ }
+ }
+
+ public static void EnableButton(AbstractButton button, Object... params) {
+ UpdateButton(button,true,params);
+ }
+
public static void UpdateButton(AbstractButton button, boolean enabled, Object... params) {
button.setEnabled(enabled);
if (!enabled) {
@@ -146,4 +157,18 @@
button.setToolTipText(t);
}
}
+
+ public static void UpdateCombo(JComboBox button, boolean enabled, Object... params) {
+ button.setEnabled(enabled);
+ if (!enabled) {
+ button.setToolTipText(null);
+ } else {
+ SimExplorerAbstractAction action = (SimExplorerAbstractAction) button.getAction();
+ if (action!=null) {
+ String t = _(action.getI18nToolTipText(), params);
+ button.setToolTipText(t);
+ }
+ }
+ }
+
}
Deleted: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabRefreshHelper.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabRefreshHelper.java 2008-02-24 19:49:59 UTC (rev 1217)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabRefreshHelper.java 2008-02-24 19:51:08 UTC (rev 1218)
@@ -1,107 +0,0 @@
-/*
-* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Code Lutin,
-* Tony Chemit, Gabriel Landais
-*
-* 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.cemagref.simexplorer.is.ui.swing.ui;
-
-import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
-import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext;
-import fr.cemagref.simexplorer.is.ui.swing.model.SynchronizeTabModel;
-
-import javax.swing.JTabbedPane;
-import javax.swing.JTree;
-import javax.swing.tree.DefaultTreeModel;
-import javax.swing.tree.TreeNode;
-
-/**
- * Cette classe contient les méthodes utiles et réutilisables pour rafraichir
- * les onglets de liste.
- * <p/>
- * Les méthodes utilisent les données stockées dans les modèles pour rafraichir
- * les uis concernées.
- * <p/>
- * Note : <b>Dans toutes ces méthodes, NOS modèles ne doivent en aucun cas être modifiés</b>
- * <p/>
- * Par contre les modèles des ui peuvent être modifiés (par exemple modèle d'arbre, de liste)
- * mais uniquement à partir de nos modèles.
- *
- * @author chemit
- */
-public class SynchronizeTabRefreshHelper {
-
- protected static void refreshSynchronizeTab(SimExplorerMainUI mainUi,SimExplorerContext context, JSynchronizeTab ui, SynchronizeTabModel model) {
-
- EntityTreeNodeHelper.refreshTreeActions(ui.getCollapseButton(false), ui.getExpandButton(false), null);
- EntityTreeNodeHelper.refreshTreeActions(ui.getCollapseButton(true), ui.getExpandButton(true), null);
-
- mainUi.refreshExportElement(context, ui.getExportButton(false), false, model.getSelectedNode(false));
- mainUi.refreshExportElement(context, ui.getExportButton(true), true, model.getSelectedNode(true));
-
- refreshRootNode(mainUi,context,ui, model, false);
- refreshRootNode(mainUi,context,ui, model, true);
- }
-
- public static void updateTree(SimExplorerMainUI mainUi,SimExplorerContext context, JTabbedPane container, LoggableElement oldLocalRoot, LoggableElement oldRemoteRoot) {
-
- SimExplorerTab tab = SimExplorerTab.synchronize;
-
- SynchronizeTabModel model = (SynchronizeTabModel) tab.getModel();
- if (model.getRootNode(false) == null && model.getRootNode(true) == null) {
- // on doit supprimer la vue
- tab.closeTab(mainUi, container);
- }
-
- JSynchronizeTab ui = (JSynchronizeTab) tab.getUI();
-
- if (model.getRootNode(false) != oldLocalRoot) {
- // rebuild node ?
- refreshRootNode(mainUi,context,ui, model, false);
- }
-
- if (model.getRootNode(true) != oldRemoteRoot) {
- // rebuild node ?
- refreshRootNode(mainUi,context,ui, model, true);
- }
- }
-
- protected static void refreshRootNode(SimExplorerMainUI mainUi,SimExplorerContext context,JSynchronizeTab ui, SynchronizeTabModel model, boolean remote) {
-
- LoggableElement element;
- TreeNode root = null;
-
- element = model.getRootNode(remote);
- if (element != null) {
- root = EntityTreeNodeHelper.build(element, remote);
- }
-
- JTree tree = ui.getTree(remote);
-
- ((DefaultTreeModel) tree.getModel()).setRoot(root);
-
- if (root == null) {
- tree.getSelectionModel().clearSelection();
- LoggableElement sNode = model.getSelectedNode(remote);
- mainUi.refreshExportElement(context, ui.getExportButton(remote), remote, sNode);
- } else {
- tree.setSelectionRow(0);
- }
- }
-
- protected SynchronizeTabRefreshHelper() {
- // do not instanciate me please
- }
-}
\ No newline at end of file
Added: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabUpdater.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabUpdater.java (rev 0)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SynchronizeTabUpdater.java 2008-02-24 19:51:08 UTC (rev 1218)
@@ -0,0 +1,134 @@
+/*
+* ##% Copyright (C) 2007, 2008 Code Lutin, Tony Chemit, Gabriel Landais
+*
+* 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.cemagref.simexplorer.is.ui.swing.ui;
+
+import fr.cemagref.simexplorer.is.entities.data.LoggableElement;
+import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext;
+import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode;
+import fr.cemagref.simexplorer.is.ui.swing.model.SynchronizeTabModel;
+
+import javax.swing.JTree;
+import javax.swing.tree.DefaultTreeModel;
+import java.beans.PropertyChangeEvent;
+
+/**
+ * TODO javadoc
+ *
+ * @author chemit
+ */
+public class SynchronizeTabUpdater extends SimExplorerAbstractTabUpdater<JSynchronizeTab, SynchronizeTabModel> {
+
+ public SynchronizeTabUpdater(SimExplorerContext context) {
+ super(context, SimExplorerTab.synchronize);
+ }
+
+ public void propertyChange(PropertyChangeEvent evt) {
+ String evtName = evt.getPropertyName();
+ if (log.isDebugEnabled()) {
+ log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ }
+
+ if (evtName.equals(SynchronizeTabModel.SOURCES_PROPERTY_CHANGED)) {
+ fireSources(evt);
+ return;
+ }
+ if (evtName.equals(SynchronizeTabModel.LOCAL_ROOT_NODE_PROPERTY_CHANGED)) {
+ fireRootSelected(evt, false);
+ return;
+ }
+ if (evtName.equals(SynchronizeTabModel.LOCAL_SELECTED_NODE_PROPERTY_CHANGED)) {
+ fireNodeSelected(evt, false);
+ return;
+ }
+ if (evtName.equals(SynchronizeTabModel.REMOTE_ROOT_NODE_PROPERTY_CHANGED)) {
+ fireRootSelected(evt, true);
+ return;
+ }
+ if (evtName.equals(SynchronizeTabModel.REMOTE_SELECTED_NODE_PROPERTY_CHANGED)) {
+ fireNodeSelected(evt, true);
+ return;
+ }
+
+ throw new IllegalStateException("could not treate property " + evtName);
+ }
+
+ public void initListeners() {
+ SynchronizeTabModel model = getModel();
+ model.addPropertyChangeListener(SynchronizeTabModel.LOCAL_ROOT_NODE_PROPERTY_CHANGED, this);
+ model.addPropertyChangeListener(SynchronizeTabModel.LOCAL_SELECTED_NODE_PROPERTY_CHANGED, this);
+ model.addPropertyChangeListener(SynchronizeTabModel.REMOTE_ROOT_NODE_PROPERTY_CHANGED, this);
+ model.addPropertyChangeListener(SynchronizeTabModel.REMOTE_SELECTED_NODE_PROPERTY_CHANGED, this);
+ model.addPropertyChangeListener(SynchronizeTabModel.SOURCES_PROPERTY_CHANGED, this);
+ }
+
+ private void fireSources(PropertyChangeEvent evt) {
+ log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+ LoggableElement[] oldSources = (LoggableElement[]) evt.getOldValue();
+ LoggableElement[] sources = (LoggableElement[]) evt.getNewValue();
+ if (sources[0] == null && sources[1] == null) {
+ // close tab
+ SimExplorerTab.synchronize.closeTab(getMainUI(), getMainUI().getContent());
+ }
+
+ if (sources[0]==null && oldSources[0]==null) {
+ // disable local
+ SimExplorerMainUI.DisableButton(getUi().getExportButton(false), getUi().getShowDetailButton(false),getUi().getCollapseButton(false),getUi().getExpandButton(false));
+ }
+
+ if (sources[1]==null&& oldSources[1]==null) {
+ // disable remote
+ SimExplorerMainUI.DisableButton(getUi().getExportButton(true), getUi().getShowDetailButton(true),getUi().getCollapseButton(true),getUi().getExpandButton(true));
+ }
+ // by default disable the action
+ //SimExplorerMainUI.DisableButton(getUi().getExportButton(false), getUi().getExportButton(true));
+
+ }
+
+ protected void fireRootSelected(PropertyChangeEvent evt, boolean remote) {
+ log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+
+ LoggableElement le = (LoggableElement) evt.getNewValue();
+
+ JTree tree = getUi().getTree(remote);
+ DefaultTreeModel treeModel = (DefaultTreeModel) tree.getModel();
+
+ if (le == null) {
+ treeModel.setRoot(null);
+ tree.clearSelection();
+ return;
+ }
+
+ EntityTreeNode root = EntityTreeNodeHelper.build(le, remote);
+ treeModel.setRoot(root);
+
+ // select root node (will trigger fireNodeSelected)
+ tree.setSelectionRow(0);
+
+ }
+
+ protected void fireNodeSelected(PropertyChangeEvent evt, boolean remote) {
+ log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue());
+
+ LoggableElement newSelectedNode = (LoggableElement) evt.getNewValue();
+
+ getMainUI().refreshExportElement(getContext(), getUi().getExportButton(remote), remote, newSelectedNode);
+
+ }
+
+
+}
\ No newline at end of file
Added: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/TreeActionsUpdater.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/TreeActionsUpdater.java (rev 0)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/TreeActionsUpdater.java 2008-02-24 19:51:08 UTC (rev 1218)
@@ -0,0 +1,43 @@
+/*
+* ##% Copyright (C) 2007, 2008 Code Lutin, Tony Chemit, Gabriel Landais
+*
+* 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.cemagref.simexplorer.is.ui.swing.ui;
+
+import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode;
+
+import javax.swing.AbstractButton;
+import javax.swing.event.TreeSelectionEvent;
+import javax.swing.event.TreeSelectionListener;
+
+/**
+ * Un updater sur les actions d'unarbre de navigation.
+ *
+ * @author chemit
+ */
+public abstract class TreeActionsUpdater implements TreeSelectionListener {
+
+ protected abstract AbstractButton getExpandAction();
+
+ protected abstract AbstractButton getCollapseAction();
+
+ public void valueChanged(TreeSelectionEvent e) {
+
+ EntityTreeNode node = EntityTreeNodeHelper.getSelectedNode(e);
+
+ EntityTreeNodeHelper.refreshTreeActions(getCollapseAction(), getExpandAction(), node);
+ }
+}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/test/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerUIRefreshHelperTest.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/test/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerUIRefreshHelperTest.java 2008-02-24 19:49:59 UTC (rev 1217)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/test/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerUIRefreshHelperTest.java 2008-02-24 19:51:08 UTC (rev 1218)
@@ -1,7 +1,6 @@
package fr.cemagref.simexplorer.is.ui.swing.ui;
import junit.framework.TestCase;
-import fr.cemagref.simexplorer.is.ui.swing.ui.DetailTabRefreshHelper;
/**
* SimExplorerUIRefreshHelper Tester.
@@ -12,19 +11,21 @@
*/
public class SimExplorerUIRefreshHelperTest extends TestCase {
int max = 14;
+ static DetailTabUpdater updater =new DetailTabUpdater(null);
+
public SimExplorerUIRefreshHelperTest(String name) {
super(name);
}
public void testComputeRowLimitCases() throws Exception {
for (int i = 0; i < max+1; i++) {
- assertComputeRow(0, i, DetailTabRefreshHelper.computeRows(0, i));
+ assertComputeRow(0, i, updater.computeRows(0, i));
}
for (int i = 0; i < max+1; i++) {
- assertComputeRow(i, 0, DetailTabRefreshHelper.computeRows(i, 0));
+ assertComputeRow(i, 0, updater.computeRows(i, 0));
}
- assertComputeRow(0, max, DetailTabRefreshHelper.computeRows(0, max+1));
- assertComputeRow(max, 0, DetailTabRefreshHelper.computeRows(max+1, 0));
+ assertComputeRow(0, max, updater.computeRows(0, max+1));
+ assertComputeRow(max, 0, updater.computeRows(max+1, 0));
}
@@ -43,14 +44,14 @@
public void testComputeRowAttachment(int nb) throws Exception {
int pivot = max - nb;
for (int i = 0; i < pivot + 1; i++) {
- assertComputeRow(i, nb, DetailTabRefreshHelper.computeRows(i, nb));
+ assertComputeRow(i, nb, updater.computeRows(i, nb));
}
for (int i = pivot + 1; i < max+1; i++) {
if (nb + i > max) {
- int[] res = DetailTabRefreshHelper.computeRows(i, nb);
+ int[] res = updater.computeRows(i, nb);
assertEquals(max, res[0] + res[1]);
} else {
- assertComputeRow(pivot, nb, DetailTabRefreshHelper.computeRows(i, nb));
+ assertComputeRow(pivot, nb, updater.computeRows(i, nb));
}
}
}
@@ -58,14 +59,14 @@
public void testComputeRowDescriptor(int nb) throws Exception {
int pivot = max - nb;
for (int i = 0; i < pivot + 1; i++) {
- assertComputeRow(nb, i, DetailTabRefreshHelper.computeRows(nb, i));
+ assertComputeRow(nb, i, updater.computeRows(nb, i));
}
for (int i = pivot + 1; i < max+1; i++) {
if (nb + i > max) {
- int[] res = DetailTabRefreshHelper.computeRows(nb, i);
+ int[] res = updater.computeRows(nb, i);
assertEquals(max, res[0] + res[1]);
} else {
- assertComputeRow(nb, pivot, DetailTabRefreshHelper.computeRows(nb, i));
+ assertComputeRow(nb, pivot, updater.computeRows(nb, i));
}
}
}
1
0
r1217 - in trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing: . ui
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
24 Feb '08
Author: tchemit
Date: 2008-02-24 19:49:59 +0000 (Sun, 24 Feb 2008)
New Revision: 1217
Modified:
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorer.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTabFactory.java
Log:
suppression methodes inutiles
ajout d'une methode dispose pour nettoyer les onglet avant une fermeture
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorer.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorer.java 2008-02-24 19:47:55 UTC (rev 1216)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorer.java 2008-02-24 19:49:59 UTC (rev 1217)
@@ -114,6 +114,7 @@
public static void dispose(boolean reload) {
SimExplorerTab.dispose();
+ SimExplorerAbstractAction.dispose();
SimExplorerActionManager.dispose();
ErrorDialog.disposeUI();
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java 2008-02-24 19:47:55 UTC (rev 1216)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTab.java 2008-02-24 19:49:59 UTC (rev 1217)
@@ -18,7 +18,6 @@
* ##% */
package fr.cemagref.simexplorer.is.ui.swing.ui;
-import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext;
import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel;
import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel;
import fr.cemagref.simexplorer.is.ui.swing.model.SimExplorerTabModel;
@@ -44,10 +43,7 @@
parentImpl = JTabbedPane.class,
name = "simexplorer.tab.detail",
shortDescription = "simexplorer.tab.detail.tooltip"
- )detail {
- public <U extends JAXXTab, M extends SimExplorerTabModel> void updateUI(SimExplorerContext context, SimExplorerMainUI mainUi, U ui, M model) {
- DetailTabRefreshHelper.refreshDetailTab(mainUi, (JDetailTab) ui, (DetailTabModel) model);
- }},
+ )detail,
@TabContentConfig(
impl = JListTab.class,
@@ -56,10 +52,7 @@
useToogle = true,
name = "simexplorer.tab.local",
shortDescription = "simexplorer.tab.local.tooltip"
- )local {
- public <U extends JAXXTab, M extends SimExplorerTabModel> void updateUI(SimExplorerContext context, SimExplorerMainUI mainUi, U ui, M model) {
- ListTabRefreshHelper.refreshListTabUI(mainUi, (JListTab) ui, (ListTabModel) model);
- }},
+ )local,
@TabContentConfig(
impl = JListTab.class,
@@ -68,10 +61,7 @@
useToogle = true,
name = "simexplorer.tab.remote",
shortDescription = "simexplorer.tab.remote.tooltip"
- )remote {
- public <U extends JAXXTab, M extends SimExplorerTabModel> void updateUI(SimExplorerContext context, SimExplorerMainUI mainUi, U ui, M model) {
- ListTabRefreshHelper.refreshListTabUI(mainUi, (JListTab) ui, (ListTabModel) model);
- }},
+ )remote,
@TabContentConfig(
impl = JSynchronizeTab.class,
@@ -80,11 +70,7 @@
useToogle = false,
name = "simexplorer.tab.synchronize",
shortDescription = "simexplorer.tab.synchronize.tooltip"
- )synchronize {
- public <U extends JAXXTab, M extends SimExplorerTabModel> void updateUI(SimExplorerContext context, SimExplorerMainUI mainUi, U ui, M model) {
- SynchronizeTabRefreshHelper.refreshSynchronizeTab(mainUi,context,(JSynchronizeTab) ui, (SynchronizeTabModel) model);
- }
- };
+ )synchronize;
/** l'usine de tabs */
private static SimExplorerTabFactory factory;
@@ -135,16 +121,7 @@
return (ListTabModel) getListTab(remote).getModel();
}
- public static void dispose() {
- SimExplorerTab.getFactory().resetCache();
- // remove listeners on detail tab model
- for (SimExplorerTab tab : SimExplorerTab.values()) {
- tab.removePropertyChangeListeners();
- }
- }
- public abstract <U extends JAXXTab, M extends SimExplorerTabModel> void updateUI(SimExplorerContext context, SimExplorerMainUI mainUi, U ui, M model);
-
public JAXXTab getUI() {
return getFactory().getUI(name());
}
@@ -176,11 +153,10 @@
getModel().setSelectedItem(null);
}
- public void updateUI(SimExplorerContext context, SimExplorerMainUI mainUI) {
- updateUI(context,mainUI, getUI(), getModel());
+ public static void dispose() {
+ for (SimExplorerTab simExplorerTab : values()) {
+ simExplorerTab.getModel().removePropertyChangeListeners();
+ }
+ getFactory().resetCache();
}
-
- public void removePropertyChangeListeners() {
- getModel().removePropertyChangeListeners();
- }
}
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTabFactory.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTabFactory.java 2008-02-24 19:47:55 UTC (rev 1216)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerTabFactory.java 2008-02-24 19:49:59 UTC (rev 1217)
@@ -61,7 +61,7 @@
}
protected void initTab(JAXXTab tab, String tabName, TabContentConfig config) {
- SimExplorerActionManager.loadActions((JAXXObject) tab, getTab(tabName));
+ SimExplorerActionManager.loadActions((JAXXObject) tab);
}
protected SimExplorerTab getTab(String tabName) {
@@ -89,7 +89,7 @@
panel.get$objectMap().put(actionName, panel.getCloseTab());
// chargement dans l'ui des actions
- SimExplorerActionManager.loadActions(panel, getTab(tabName));
+ SimExplorerActionManager.loadActions(panel);
panel.setToolTipText(_(tab.shortDescription()));
panel.getLabel().setText(_(tab.name()));
1
0
r1216 - trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
by tchemit@users.labs.libre-entreprise.org 24 Feb '08
24 Feb '08
Author: tchemit
Date: 2008-02-24 19:47:55 +0000 (Sun, 24 Feb 2008)
New Revision: 1216
Modified:
trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerActionManager.java
Log:
ajout methode pour consumer une action sur une action de type SelectedAction
suppression code inutile
Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerActionManager.java
===================================================================
--- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerActionManager.java 2008-02-24 19:46:36 UTC (rev 1215)
+++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerActionManager.java 2008-02-24 19:47:55 UTC (rev 1216)
@@ -18,8 +18,9 @@
* ##% */
package fr.cemagref.simexplorer.is.ui.swing;
+import fr.cemagref.simexplorer.is.ui.swing.actions.util.SelectedAction;
import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractAction;
-import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab;
+import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel;
import jaxx.runtime.JAXXObject;
import jaxx.runtime.builder.ActionFactory;
import jaxx.runtime.builder.SimpleActionFactoryImpl;
@@ -35,7 +36,7 @@
* La classe responsable de l'enregistrement des actions disponibles
* dans l'application en délégeant à une ActionFactory.
* <p/>
- * On peut de plus via la méthode {@link #loadActions(JAXXObject, fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab)} de charger
+ * On peut de plus via la méthode {@link #loadActions(jaxx.runtime.JAXXObject)} de charger
* dans l'ui les actions connues.
*
* @author tony
@@ -49,33 +50,15 @@
private static ActionFactory factory;
/**
- * la tab en cours de chargement, utilisé dans l'init des actions
- * de type <code>SimExplorerAbstractTabAction</code> pour savoir à quel tab
- * elles se rattachent.
- */
- private static SimExplorerTab loadingTab;
-
- /**
* @param ui l'ui à charger
- * @param fromTab la tab en cours de chargement ou <code>null</code< si l'ui
- * n'est pas une tab
* @return le tableau des actions instanciées ou récupérées du cache de
* la factory
*/
- public static AbstractAction[] loadActions(JAXXObject ui, SimExplorerTab fromTab) {
- loadingTab = fromTab;
- try {
- AbstractAction[] actions;
- actions = getFactory().loadActions(ui);
- return actions;
- } finally {
- loadingTab = null;
- }
- }
+ public static AbstractAction[] loadActions(JAXXObject ui) {
+ AbstractAction[] actions;
+ actions = getFactory().loadActions(ui);
+ return actions;
- /** @return la tab en cours de chargement ou bien <code>null</code> */
- public static SimExplorerTab getLoadingTab() {
- return loadingTab;
}
/**
@@ -96,6 +79,12 @@
fireAction(actionKey, source, (AbstractButton) null);
}
+ public static void fireSelectedAction(String actionKey, Object source, DataEntityModel selected) {
+ SelectedAction selectedAction = (SelectedAction) newAction(actionKey);
+ selectedAction.setSelected(selected);
+ fireAction0(actionKey, source, (AbstractAction) selectedAction);
+ }
+
public static AbstractAction newAction(String actionKey) {
return newAction(actionKey, (AbstractButton) null);
}
1
0