Author: tchemit Date: 2008-02-20 18:46:01 +0000 (Wed, 20 Feb 2008) New Revision: 1145 Added: 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/SimExplorerConfig.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerContext.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/StorageServiceHelper.java Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/actions/SimExplorerAbstractOptionAction.java 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/actions/AboutAction.java 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/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/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/DownloadElementAction.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/ExportElementToLocalAction.java 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/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/HelpAction.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/actions/QuitAction.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/ShowLocalTabAction.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowRemoteTabAction.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/HistoryNextAction.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryPreviousAction.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryUnconnectAction.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ChangeI18nAbstractAction.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/DataEntityModel.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/EntityTreeNode.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/SimExplorerTabModel.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java Log: move ui to ui package Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/actions/SimExplorerAbstractOptionAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/actions/SimExplorerAbstractOptionAction.java 2008-02-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/actions/SimExplorerAbstractOptionAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,9 +18,9 @@ package fr.cemagref.simexplorer.is.ui.actions; -import fr.cemagref.simexplorer.is.ui.SimExplorer; -import fr.cemagref.simexplorer.is.ui.SimExplorerContext; import fr.cemagref.simexplorer.is.ui.SimExplorerOptionParser; +import fr.cemagref.simexplorer.is.ui.swing.SimExplorer; +import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; import org.codelutin.option.Option; import org.codelutin.option.OptionAction; Copied: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorer.java (from rev 1132, trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/SimExplorer.java) =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorer.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorer.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -0,0 +1,153 @@ +/* +* ##% 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; + +import fr.cemagref.simexplorer.is.exceptions.SimExplorerRuntimeException; +import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractAction; +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.util.ErrorDialog; +import org.codelutin.i18n.I18n; +import org.codelutin.option.ui.ConfigTableModel; +import org.codelutin.option.ui.ConfigUI; + +import java.awt.event.ActionEvent; +import java.io.IOException; + +/** + * L'application principale + * + * @author chemit + */ +public class SimExplorer { + + /** le context principal de l'application */ + protected static SimExplorerContext context; + + public static SimExplorerContext getContext() { + checkInitContext(); + return context; + } + + /** + * initialisation de l'application : + * <p/> + * chargement du context + * + * @param args les arguments passés à l'application + */ + public static void init(String... args) { + + // init context + context = new SimExplorerContext(); + + // init i18n + I18n.initISO88591(); + + // init parser + context.initParser(args); + + // init config + context.initConfig(); + + // save config + try { + context.save(); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + + /** Lancement de l'ui après init de l'application. */ + public static void launch() { + + // init ui + SimExplorerMainUI mainUI = SimExplorerMainUI.getUI(); + + SimExplorerConfig conf = getContext().getConfig(); + + if (conf.isShowLocalTab()) { + // show local tab + mainUI.getToggleTab_local().doClick(); + } + if (conf.isAutoConnect()) { + try { + // try to connect + mainUI.getConnect().getAction().actionPerformed(new ActionEvent(mainUI, 0, "connect")); + // action will update ui if everything is correct + if (context.isConnected() && conf.isShowRemoteTab()) { + // show remote tab + mainUI.getToggleTab_remote().doClick(); + } + } catch (Exception e) { + // ignore ? + System.err.println(e.getMessage()); + } + } + + // refresh ui accessibles actions + if (!context.isConnected()) { + ((SimExplorerAbstractAction)mainUI.getConnectAction(false)).updateUI(); + } + mainUI.setVisible(true); + } + + public static void dispose(boolean reload) { + + SimExplorerTab.dispose(); + SimExplorerActionManager.dispose(); + + ConfigUI.reloadUI(); + ErrorDialog.disposeUI(); + SimExplorerMainUI.getUI().disposeUI(); + if (reload) { + launch(); + } + } + + public static void main(String... args) throws Exception { + + // init application (parser,config,i18n,...) + init(args); + + // launch actions required + context.getParser().doAllActions(); + + // show edit config if first launch + if (SimExplorer.context.isFirstLaunch()) { + ConfigUI.showUI(context.getConfig(), ConfigTableModel.TypeModel.all); + } + + // launch ui only if required + if (!context.isQuit() && context.isLaunchUI()) { + launch(); + } + + } + + public static void checkInitContext() { + if (context == null) { + throw new SimExplorerRuntimeException("context is null, you must init first the " + SimExplorer.class.getName() + " class via init method"); + } + } + + protected SimExplorer() { + // protected restricted access + } +} 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerActionManager.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -19,6 +19,7 @@ package fr.cemagref.simexplorer.is.ui.swing; import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractAction; +import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab; import jaxx.runtime.JAXXObject; import jaxx.runtime.builder.ActionFactory; import jaxx.runtime.builder.SimpleActionFactoryImpl; @@ -34,7 +35,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, SimExplorerTab)} de charger + * On peut de plus via la méthode {@link #loadActions(JAXXObject, fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab)} de charger * dans l'ui les actions connues. * * @author tony @@ -83,16 +84,16 @@ * @return l'usine d'actions * @see jaxx.runtime.builder.ActionFactory */ - protected static ActionFactory getFactory() { + public static ActionFactory getFactory() { if (factory == null) { // used a simple factory implementation - factory = new SimpleActionFactoryImpl(); + factory = new SimpleActionFactoryImpl(); } return factory; } public static void fireAction(String actionKey, Object source) { - fireAction(actionKey,source, (AbstractButton) null); + fireAction(actionKey, source, (AbstractButton) null); } public static AbstractAction newAction(String actionKey) { @@ -103,10 +104,11 @@ getFactory().resetCache(); } - public static void disposeUI() { + public static void dispose() { + resetCache(); for (String actionKey : getFactory().getActionNames()) { SimExplorerAbstractAction action = (SimExplorerAbstractAction) newAction(actionKey); - if (action!=null) { + if (action != null) { action.disposeUI(); } } Copied: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerConfig.java (from rev 1132, trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/SimExplorerConfig.java) =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerConfig.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerConfig.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -0,0 +1,133 @@ +/* +* ##% Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 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; + +import fr.cemagref.simexplorer.is.exceptions.SimExplorerRuntimeException; +import fr.cemagref.simexplorer.is.ui.SimExplorerOptionParser; +import fr.cemagref.simexplorer.is.ui.configs.SimExplorerAbstractConfigMain; +import fr.cemagref.simexplorer.is.ui.options.SimExplorerOptionConfig; +import fr.cemagref.simexplorer.is.ui.options.SimExplorerOptionConfigFile; +import org.codelutin.i18n.CountryEnum; +import org.codelutin.i18n.I18n; +import static org.codelutin.i18n.I18n._; +import org.codelutin.i18n.LanguageEnum; +import org.codelutin.option.ConfigPropertyKey; +import org.codelutin.option.OptionParser; + +import java.io.File; +import java.io.IOException; + +/** + * L'implantation concrete de la config principale + * + * @author chemit + */ +public class SimExplorerConfig extends SimExplorerAbstractConfigMain { + + public SimExplorerConfig() { + super(); + String home = System.getProperty("user.home"); + if (home == null) { + // this is a serious fatal error + throw new SimExplorerRuntimeException("simexplorer.error.user.home"); + } + doInit(); + } + + public void init() throws IOException { + log.info("start for category [" + category + "] -------------------------"); + + SimExplorerOptionParser parser = SimExplorer.getContext().getParser(); + initConfigFile(parser); + log.info("config file : " + getSource()); + // chargement des valeurs par défaut + loadFromDefaultValue(); + // après le chargement des valeurs par défaut + // la configuration n'est pas modifiée + clearModified(); + // surcharge à partir du fichier de configuration de l'utilisateur + loadFromSource(); + // surcharge à partir des propriétés système + loadFromSystem(); + // surcharge à partir des propriétés de la jvm + loadFromJvm(); + // surcharge à partir de l'option config de la ligne de commande + loadFromOptions(parser); + clearModified(); + for (String s : this.toString().split("\n")) { + log.debug(s); + } + log.info("end for category [" + category + "] ---------------------------"); + } + + protected void initConfigFile(OptionParser parser) { + File file; + if (parser.isOptionEnabled(SimExplorerOptionParser.CONFIG_FILE_OPTION_KEY)) { + // surcharge config file + SimExplorerOptionConfigFile option = SimExplorerOptionParser.CONFIG_FILE_OPTION_KEY.getOptions().get(0); + + file = option.getConfigFile(); + } else { + String home = System.getProperty("user.home", ""); + File root = new File(home); + file = new File(root, SimExplorerConfig.CONFIG_FILE_NAME_PROPERTY_KEY.getDefaultValue().getName()); + if (!file.exists()) { + SimExplorer.getContext().setFirstLaunch(true); + try { + file.createNewFile(); + } catch (IOException e) { + throw new SimExplorerRuntimeException(e); + } + } + } + if (containsKey(SimExplorerConfig.CONFIG_FILE_NAME_PROPERTY_KEY)) { + setProperty(SimExplorerConfig.CONFIG_FILE_NAME_PROPERTY_KEY, file); + } + setSource(file); + } + + public void initI18n() { + I18n.initISO88591(getUserLanguage().name(), getUserCountry().name()); + } + + protected void loadFromOptions(SimExplorerOptionParser parser) { + if (!parser.isOptionEnabled(SimExplorerOptionParser.CONFIG_OPTION_KEY)) { + return; + } + // surcharge config file + for (SimExplorerOptionConfig option : SimExplorerOptionParser.CONFIG_OPTION_KEY.getOptions()) { + if (getCategory().equals(SimExplorerOptionParser.MAIN_CONFIG_KEY.getCategory())) { + ConfigPropertyKey<?> propKey = getPropertyKey(option.getKey()); + if (propKey == null) { + // fatal error , could not found a matching configuration property + throw new SimExplorerRuntimeException(_("simexplorer.error.unfound.config.property", category, option.getKey())); + } + Object oldVal = propKey.getCurrentValue(); + setProperty(propKey, option.getValue()); + Object newVal = propKey.getCurrentValue(); + log.info(_("simexplorer.change.config.property", category, propKey, oldVal, newVal)); + } + } + } + + public void setI18n(LanguageEnum language, CountryEnum country) { + setUserLanguage(language); + setUserCountry(country); + } +} \ No newline at end of file Copied: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerContext.java (from rev 1132, trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/SimExplorerContext.java) =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerContext.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SimExplorerContext.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -0,0 +1,198 @@ +/* +* ##% 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; + +import fr.cemagref.simexplorer.is.exceptions.SimExplorerRuntimeException; +import fr.cemagref.simexplorer.is.ui.SimExplorerOptionParser; +import fr.cemagref.simexplorer.is.ui.actions.SimExplorerCommonActions; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.codelutin.option.ParserException; + +import java.io.BufferedOutputStream; +import java.io.FileOutputStream; +import java.io.IOException; + +/** + * Le context de l'application, implanté en singleton. + * <p/> + * Contient la configuration de l'application, le parseur d'options,... + * + * @author chemit + */ +public class SimExplorerContext { + + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog(SimExplorerContext.class); + + /** + * le parseur utilisé au démarrage pour récupérer les options passées + * par l'utilisateur. + */ + protected SimExplorerOptionParser parser; + + /** flag pour indiquer si 'lon veut quitter l'appli après les options */ + protected boolean quit; + + /** flag pour indiquer si l'on affiche ou non l'ui principale */ + protected boolean launchUI = true; + + /** + * flag pour indiquer une première utilisation de l'application (pas de + * fichier de configuration) + */ + protected boolean firstLaunch; + + /** le token pour la connexion au serveur distant */ + protected String token; + + /** + * @return le parseur utilisé pour parser les options de la ligne de + * commande. + */ + public SimExplorerOptionParser getParser() { + if (parser == null) { + // creation du parseur + parser = new SimExplorerOptionParser(); + // enregistrement des actions concretes + parser.registerActions(SimExplorerCommonActions.class); + // enregistrement des configs concretes + parser.registerConfig(SimExplorerConfig.class); + } + return parser; + } + + /** @return la configuration de l'application */ + public SimExplorerConfig getConfig() { + return (SimExplorerConfig) getParser().getMainConfig(); + } + + /** + * @return <code>true</code> si l'utilisateur est connecté, + * <code>false</code> sinon. + */ + public boolean isConnected() { + return !(token == null || token.isEmpty()); + } + + /** + * Sauvegarde la configuration courante de l'utilisateur. + * + * @throws IOException si problème lors de l'écriture du fichier de configuration + */ + public void save() throws IOException { + if (getConfig().getSource() == null) { + return; + } + BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(getConfig().getSource())); + try { + getConfig().save(out); + } finally { + out.flush(); + out.close(); + } + } + + /** + * Sauvegarde la configuration de l'utilisateur sans soulever d'exception + * si un problème est survenu lors de l'opération. + */ + public void saveSafely() { + try { + save(); + } catch (Exception e) { + log.warn("simexplorer.error.unsafe.save.config" + e.getMessage(), e); + } + } + + /** + * @return <code>true</code> si on doit quitter l'application (uniquement utilisé + * lors du démarrage de l'application lors de l'exécution des options + * utilisateurs) + */ + public boolean isQuit() { + return quit; + } + + /** + * @return <code>true</code> si on doit lancer l'ui au démarrage de + * l'application, après avoir traité toutes les options utilisateurs + */ + public boolean isLaunchUI() { + return launchUI; + } + + /** + * @return <code>true</code> s'il s'agit de la première utilisation de + * l'application (aucun de fichier de configuration trouvé) + */ + public boolean isFirstLaunch() { + return firstLaunch; + } + + /** + * @return le token utilisé pour identifié l'utilisateur sur le serveur distant. + * <p/> + * <b>Si est null ou vide cela veut que l'utilisateur n'est pas connecté.</b> + */ + public String getToken() { + return token; + } + + public void setQuit(boolean quit) { + this.quit = quit; + } + + public void setLaunchUI(boolean launchUI) { + this.launchUI = launchUI; + } + + public void setFirstLaunch(boolean firstLaunch) { + this.firstLaunch = firstLaunch; + } + + public void setToken(String token) { + this.token = token; + } + + /** restricted access constructor */ + SimExplorerContext() { + + } + + /** + * Initialisation du parseur d'options. + * + * @param args les arguments passés au démarrage de l'application + */ + void initParser(String... args) { + try { + getParser().doParse(args); + } catch (ParserException e) { + throw new SimExplorerRuntimeException(e); + } catch (IOException e) { + throw new SimExplorerRuntimeException(e); + } + } + + /** Initialisation de la configuration utilisateur */ + void initConfig() { + getConfig().initI18n(); + } +} Copied: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/StorageServiceHelper.java (from rev 1132, trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/StorageServiceHelper.java) =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/StorageServiceHelper.java (rev 0) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/StorageServiceHelper.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -0,0 +1,245 @@ +/* +* ##% 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; + +import com.healthmarketscience.rmiio.SerializableInputStream; +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.exceptions.SimExplorerException; +import fr.cemagref.simexplorer.is.exceptions.SimExplorerRuntimeException; +import fr.cemagref.simexplorer.is.exceptions.UnreachableServiceException; +import fr.cemagref.simexplorer.is.service.MockStorageServiceImpl; +import fr.cemagref.simexplorer.is.service.StorageService; +import fr.cemagref.simexplorer.is.service.StorageServiceClient; +import static fr.cemagref.simexplorer.is.service.StorageServiceHelper.STORAGE_SERVICE_LOOKUP_NAME; + +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import java.io.BufferedInputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.net.URI; +import java.util.Properties; + +/** + * Une classe pour encapsuler les appels aux services Storage et leur initialisation. + * + * @author chemit + */ +public class StorageServiceHelper { + + private final static boolean mock = false; + + private final static String PROVIDER_URL = "java.naming.provider.url"; + private final static String FACTORY_INITIAL = "java.naming.factory.initial"; + private final static String FACTORY_URL_PKGS = "java.naming.factory.url.pkgs"; + + /** le service de données distant */ + protected static StorageService remoteStorageService; + + /** le service de données local */ + protected static StorageService storageService; + + /** + * @param context le context de l'application + * @param remote flag pour indiquer le type de service recherché (local ou remote) + * @return le service instancié et initialisé + * @throws UnreachableServiceException si service non joignable + */ + public static StorageService getService(SimExplorerContext context, boolean remote) throws UnreachableServiceException { + StorageService service; + service = remote ? getRemoteStorageService(context) : getLocalStorageService(); + if (service == null) { + throw new UnreachableServiceException("could not find service " + (remote ? "remote" : "local")); + } + return service; + } + + public static int getCount(SimExplorerContext context, boolean remote, String query, boolean onlyLatest) { + StorageService service = getService(context, remote); + String token = context.getToken(); + int size; + try { + if (query == null || query.isEmpty()) { + size = service.findApplicationsCount(token, onlyLatest); + } else { + size = service.findFullTextCount(token, query, onlyLatest); + } + return size; + } catch (SimExplorerException e) { + throw new SimExplorerRuntimeException(e); + } + } + + public static String loginUser(SimExplorerContext context, boolean remote, String login, String hashPassword) throws UnreachableServiceException { + StorageService service = getService(context, remote); + try { + String token; + token = service.loginUser(login, hashPassword); + return token; + } catch (SimExplorerException e) { + throw new SimExplorerRuntimeException(e); + } + } + + public static MetaData[] getData(SimExplorerContext context, boolean remote, boolean onlyLatest, String query, long newFirstIndex, int width, int rowOrder) { + StorageService service = getService(context, remote); + String token = context.getToken(); + try { + MetaData[] data; + if (query == null || query.isEmpty()) { + data = service.findApplications(token, onlyLatest, (int) newFirstIndex, width, rowOrder); + } else { + data = service.findFullText(token, query, onlyLatest, (int) newFirstIndex, width, rowOrder); + } + return data; + } catch (SimExplorerException e) { + throw new SimExplorerRuntimeException(e); + } + } + + + public static LoggableElement getElement(SimExplorerContext context, boolean remote, String uuid, String version) { + try { + LoggableElement data; + data = getService(context, remote).getLoggableElement(context.getToken(), uuid, version); + return data; + } catch (SimExplorerException e1) { + throw new SimExplorerRuntimeException(e1); + } + } + + public static void deleteElement(SimExplorerContext context, boolean remote, String uuid, String version) { + try { + getService(context, remote).deleteElement(context.getToken(), uuid, version); + } catch (SimExplorerException e1) { + throw new SimExplorerRuntimeException(e1); + } + } + + public static MetaData getMetaData(SimExplorerContext context, boolean remote, String uuid, String version) { + try { + MetaData metas; + metas = getService(context, remote).getMetadata(context.getToken(), uuid, version); + return metas; + } catch (SimExplorerException e1) { + throw new SimExplorerRuntimeException(e1); + } + } + + + public static BufferedInputStream retrieveElementFull(SimExplorerContext context, boolean remote, String uuid, String version) { + try { + InputStream stream = getService(context, remote).retrieveElementFull(context.getToken(), uuid, version); + BufferedInputStream bis; + bis = new BufferedInputStream(stream); + return bis; + } catch (SimExplorerException e1) { + throw new SimExplorerRuntimeException(e1); + } + } + + public static BufferedInputStream retrieveElementData(SimExplorerContext context, boolean remote, String uuid, String version, Attachment attachment) { + try { + InputStream stream = getService(context, remote).retrieveElementData(context.getToken(), uuid, version, attachment); + BufferedInputStream bis; + bis = new BufferedInputStream(stream); + return bis; + } catch (SimExplorerException e1) { + throw new SimExplorerRuntimeException(e1); + } + } + + public static void importElement(SimExplorerContext context, boolean remote, File file) { + try { + SerializableInputStream zipStream; + zipStream = new SerializableInputStream(new FileInputStream(file)); + getService(context, remote).saveElement(context.getToken(), zipStream); + } catch (Exception e) { + throw new SimExplorerRuntimeException(e); + } + } + + public static Version[] getVersions(SimExplorerContext context, boolean remote, String uuid) { + try { + Version[] result; + result = getService(context, remote).getVersions(context.getToken(), uuid); + return result; + } catch (SimExplorerException e) { + throw new SimExplorerRuntimeException(e); + } + } + + /** @return le service de storage locale */ + protected static StorageService getLocalStorageService() { + if (storageService == null) { + if (mock) { + return storageService = new MockStorageServiceImpl(false); + } + try { + storageService = new StorageServiceClient(); + } catch (Exception e) { + throw new SimExplorerRuntimeException(e); + } + } + return storageService; + } + + /** + * @param context le context de l'application + * @return le service de storage distant + */ + protected static StorageService getRemoteStorageService(SimExplorerContext context) { + if (remoteStorageService == null) { + if (mock) { + return remoteStorageService = new MockStorageServiceImpl(true); + } + try { + Properties props = initProperties(context.getConfig().getRemoteURI()); + Context context2; + try { + context2 = new InitialContext(props); + } catch (Exception e) { + context2 = new InitialContext(); + } + remoteStorageService = (StorageService) context2.lookup(STORAGE_SERVICE_LOOKUP_NAME); + } catch (NamingException e) { + // no remote service available + remoteStorageService = null; + } + } + return remoteStorageService; + } + + protected static Properties initProperties(URI uri) { + Properties props = (Properties) System.getProperties().clone(); + props.put(PROVIDER_URL, uri.toString()); + props.put(FACTORY_INITIAL, "org.jnp.interfaces.NamingContextFactory"); + props.put(FACTORY_URL_PKGS, "org.jnp.interfaces"); + return props; + } + + protected StorageServiceHelper() { + // no instance + } +} Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/AboutAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/AboutAction.java 2008-02-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/AboutAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,8 +18,8 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions; +import fr.cemagref.simexplorer.is.exceptions.SimExplorerRuntimeException; import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractAction; -import fr.cemagref.simexplorer.is.exceptions.SimExplorerRuntimeException; import java.awt.event.ActionEvent; @@ -48,6 +48,6 @@ @Override protected void doAction(ActionEvent e) throws Exception { super.doAction(e); - throw new SimExplorerRuntimeException(this+" is not implemented yet!"); + throw new SimExplorerRuntimeException(this + " is not implemented yet!"); } } \ No newline at end of file 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangePageAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,13 +18,15 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions; -import fr.cemagref.simexplorer.is.ui.swing.JListTab; +import fr.cemagref.simexplorer.is.ui.swing.ui.JListTab; import fr.cemagref.simexplorer.is.ui.swing.SimExplorerActionManager; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerTab; 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.PaginationModel; 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; import javax.swing.AbstractAction; import javax.swing.Action; @@ -32,9 +34,6 @@ import javax.swing.JComponent; import java.awt.event.ActionEvent; -import jaxx.runtime.swing.JAXXTab; -import jaxx.runtime.JAXXObject; - /** * Action pour lancer une recherche d'application * @@ -60,11 +59,11 @@ @Override protected boolean beforeAction(ActionEvent e) throws Exception { SimExplorerTab myTab = findTab(e); - if (myTab==null) { + if (myTab == null) { return false; } JComboBox jComboBox = getChangePageComboBox(myTab.getUI()); - if (jComboBox==null || !jComboBox.isEnabled()) { + if (jComboBox == null || !jComboBox.isEnabled()) { return false; } ListTabModel model = (ListTabModel) myTab.getModel(); @@ -89,14 +88,14 @@ pagination.setFirstIndex(newFirstIndex); // update model - model.updateTabModel(getContext(), (ListTableModel) ((JListTab) getUI()).getTable().getModel()); + model.updateTabModel(getContext(), (ListTableModel) ((JListTab) getUI()).getTable().getModel(), false); } @Override public void updateUI() { super.updateUI(); // refresh ui - getTab().updateUI(); + getTab().updateUI(getContext(),getMainUI()); } @Override @@ -106,7 +105,7 @@ } //TODO Suppress this code - protected JComboBox getChangePageComboBox(JAXXTab myTab) { + protected JComboBox getChangePageComboBox(JAXXTab myTab) { JComponent uiObject = getUIObject((String) getValue(Action.ACTION_COMMAND_KEY), (JAXXObject) myTab); if (uiObject instanceof JComboBox) { return (JComboBox) uiObject; 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ChangeSizorAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -19,7 +19,7 @@ package fr.cemagref.simexplorer.is.ui.swing.actions; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; -import fr.cemagref.simexplorer.is.ui.swing.JListTab; +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; @@ -45,6 +45,7 @@ protected Integer newWidth; protected ListTabModel model; + public ChangeSizorAction(String name) { super(name); } @@ -73,18 +74,16 @@ } else { getContext().getConfig().setLocalSizor(newWidth); } - // on supprime la pagination actuelle, elle sera recalculé dans l'update - model.setPagination(null); model.synch(remote, (MetaData) null); // update model - model.updateTabModel(getContext(), (ListTableModel) ((JListTab) getUI()).getTable().getModel()); + model.updateTabModel(getContext(), (ListTableModel) ((JListTab) getUI()).getTable().getModel(), true); } @Override public void updateUI() { super.updateUI(); // refresh ui - getTab().updateUI(); + getTab().updateUI(getContext(),getMainUI()); } @Override @@ -92,7 +91,7 @@ // multi-tab action setTab(null); newWidth = null; - model=null; + model = null; } protected JComboBox getComboBox() { 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CloseTabAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -43,7 +43,7 @@ public CloseTabAction() { super("closeTab"); } - + public CloseTabAction(String name) { super(name, "closeTab"); } @@ -55,7 +55,7 @@ @Override protected void doAction(ActionEvent e) throws Exception { - getTab().closeTab(getTabContainer()); + getTab().closeTab(getMainUI(), getTabContainer()); } @Override 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/CollapseAllAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,9 +18,9 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions; -import fr.cemagref.simexplorer.is.ui.swing.EntityTreeNodeHelper; import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractTabAction; import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode; +import fr.cemagref.simexplorer.is.ui.swing.ui.EntityTreeNodeHelper; import javax.swing.JTree; import java.awt.event.ActionEvent; @@ -61,7 +61,7 @@ } tree = getTreeForAction("collapseAll", getActionName()); - node = EntityTreeNodeHelper.getSelectedNodeOrRootNode(tree); + 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ConnectAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -22,17 +22,17 @@ 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.StorageServiceHelper; -import fr.cemagref.simexplorer.is.ui.swing.DetailTabRefreshHelper; -import fr.cemagref.simexplorer.is.ui.swing.JDetailTab; -import fr.cemagref.simexplorer.is.ui.swing.JListTab; -import fr.cemagref.simexplorer.is.ui.swing.ListTabRefreshHelper; -import fr.cemagref.simexplorer.is.ui.swing.LoginUI; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerMainUI; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerTab; +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._; import javax.swing.JOptionPane; @@ -75,7 +75,7 @@ return false; } initLoginUI(); - return true; + return getService(); } @Override @@ -114,14 +114,14 @@ JDetailTab tabUI = (JDetailTab) SimExplorerTab.detail.getUI(); if (SimExplorerTab.detail.isTabVisible(container)) { - DetailTabRefreshHelper.refreshSynchroniseAction(tabUI, model); - DetailTabRefreshHelper.refreshExportAction(tabUI, model); + DetailTabRefreshHelper.refreshSynchroniseAction(getContext(), tabUI, model); + DetailTabRefreshHelper.refreshExportAction(getContext(),tabUI, model); } if (SimExplorerTab.local.isTabVisible(container)) { ListTabModel localListModel = (ListTabModel) SimExplorerTab.local.getModel(); if (!localListModel.isEmpty()) { - ListTabRefreshHelper.refreshListTablePopupMenu((JListTab) SimExplorerTab.local.getUI(), localListModel); + ListTabRefreshHelper.refreshListTablePopupMenu(getContext(), (JListTab) SimExplorerTab.local.getUI(), localListModel); } } // } @@ -135,8 +135,28 @@ } } + protected boolean getService() { + // first test if service is enable + boolean ok = false; + while (true) { + try { + StorageServiceHelper.getService(getContext(), true); + ok = true; + break; + } catch (UnreachableServiceException e) { + if (failedToReachService()) { + break; + } + } + } + return ok; + } + + protected boolean failedToReachService() { + int result = JOptionPane.showConfirmDialog(ui, _("simexplorer.login.retry"), _("simexplorer.error.service.failed"), JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE); + return result == JOptionPane.NO_OPTION; + } - private class MyLoginUIHandler extends LoginUI.LoginUIHandler { /** * Tente de se connecter au service. @@ -178,10 +198,6 @@ } } - protected boolean failedToReachService() { - int result = JOptionPane.showConfirmDialog(ui, _("simexplorer.login.retry"), _("simexplorer.error.service.failed"), JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE); - return result == JOptionPane.NO_OPTION; - } protected boolean failedToConnect() { int result = JOptionPane.showConfirmDialog(ui, _("simexplorer.login.retry"), _("simexplorer.error.login.failed"), JOptionPane.YES_NO_OPTION, JOptionPane.ERROR_MESSAGE); @@ -190,20 +206,9 @@ public void doConnect() { setCancel(false); - // first test if service is enable - while (true) { - try { - StorageServiceHelper.getService(getContext(), true); - break; - } catch (UnreachableServiceException e) { - if (failedToReachService()) { - setCancel(true); - break; - } - } - } - if (isCancel()) { - log.warn("could not find remote service "); + if (!getService()) { + log.warn("could not find remote service "); + setCancel(true); return; } if (!connect(ui.getLogin().getText(), ui.getPassword().getPassword())) { @@ -215,6 +220,7 @@ } } + public void doCancel() { setCancel(false); ui.getLogin().setText(null); 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -19,16 +19,16 @@ package fr.cemagref.simexplorer.is.ui.swing.actions; import fr.cemagref.simexplorer.is.entities.data.LoggableElement; -import fr.cemagref.simexplorer.is.ui.StorageServiceHelper; -import fr.cemagref.simexplorer.is.ui.swing.JListTab; +import fr.cemagref.simexplorer.is.ui.swing.ui.JListTab; import fr.cemagref.simexplorer.is.ui.swing.SimExplorerActionManager; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerTab; -import fr.cemagref.simexplorer.is.ui.swing.SynchronizeTabRefreshHelper; +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.SimExplorerTab; +import fr.cemagref.simexplorer.is.ui.swing.ui.SynchronizeTabRefreshHelper; import static org.codelutin.i18n.I18n._; import javax.swing.JOptionPane; @@ -107,7 +107,6 @@ if (SimExplorerTab.synchronize.isTabVisible(getTabContainer())) { updateSynchronizeTab(); } - } protected void updateListTab() { @@ -125,9 +124,8 @@ model = (ListTabModel) tab.getModel(); ui = (JListTab) tab.getUI(); } - model.setPagination(null); - model.updateTabModel(getContext(), (ListTableModel) ui.getTable().getModel()); - tab.updateUI(); + model.updateTabModel(getContext(), (ListTableModel) ui.getTable().getModel(), true); + tab.updateUI(getContext(),getMainUI()); } protected void updateSynchronizeTab() { @@ -144,7 +142,11 @@ if (item != null && item.getMetaData().getUuid() != null && item.getMetaData().getUuid().equals(selected.getUuid())) { model.setRootNode(null, modelIsRemote); } - SynchronizeTabRefreshHelper.updateTree(getTabContainer(), oldLocalRoot, oldRemoteRoot); + if (model.getSource().isRemote() == modelIsRemote) { + // invalidate + model.getSource().setRemote(!modelIsRemote); + } + SynchronizeTabRefreshHelper.updateTree(getMainUI(), getTabContainer(), oldLocalRoot, oldRemoteRoot); } @Override 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DetailToTreeAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -20,13 +20,13 @@ import fr.cemagref.simexplorer.is.entities.data.LoggableElement; import fr.cemagref.simexplorer.is.entities.metadata.Version; -import fr.cemagref.simexplorer.is.ui.StorageServiceHelper; -import fr.cemagref.simexplorer.is.ui.swing.DetailTabRefreshHelper; -import fr.cemagref.simexplorer.is.ui.swing.JDetailTab; +import fr.cemagref.simexplorer.is.ui.swing.ui.JDetailTab; +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.DetailTabModel; import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode; -import fr.cemagref.simexplorer.is.ui.swing.EntityTreeNodeHelper; +import fr.cemagref.simexplorer.is.ui.swing.ui.DetailTabRefreshHelper; +import fr.cemagref.simexplorer.is.ui.swing.ui.EntityTreeNodeHelper; import java.awt.event.ActionEvent; 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DownloadAttachmentAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -19,11 +19,11 @@ package fr.cemagref.simexplorer.is.ui.swing.actions; import fr.cemagref.simexplorer.is.entities.attachment.Attachment; -import fr.cemagref.simexplorer.is.ui.StorageServiceHelper; +import fr.cemagref.simexplorer.is.ui.swing.StorageServiceHelper; import fr.cemagref.simexplorer.is.ui.swing.actions.util.DownloadAbstractAction; import fr.cemagref.simexplorer.is.ui.swing.model.DetailTabModel; +import static org.codelutin.i18n.I18n._; import org.codelutin.util.FileUtil; -import static org.codelutin.i18n.I18n._; import java.io.BufferedInputStream; import java.io.File; @@ -61,7 +61,7 @@ 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")); + 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; Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DownloadElementAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DownloadElementAction.java 2008-02-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DownloadElementAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,7 +18,7 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions; -import fr.cemagref.simexplorer.is.ui.StorageServiceHelper; +import fr.cemagref.simexplorer.is.ui.swing.StorageServiceHelper; import fr.cemagref.simexplorer.is.ui.swing.actions.util.DownloadAbstractAction; import static org.codelutin.i18n.I18n._; import org.codelutin.util.FileUtil; 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExpandAllAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,9 +18,9 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions; -import fr.cemagref.simexplorer.is.ui.swing.EntityTreeNodeHelper; import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractTabAction; import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode; +import fr.cemagref.simexplorer.is.ui.swing.ui.EntityTreeNodeHelper; import javax.swing.JTree; import java.awt.event.ActionEvent; @@ -61,7 +61,7 @@ return false; } tree = getTreeForAction("expandAll", getActionName()); - node = EntityTreeNodeHelper.getSelectedNodeOrRootNode(tree); + 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,31 +18,32 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions; +import fr.cemagref.simexplorer.is.entities.data.LoggableElement; import fr.cemagref.simexplorer.is.service.StorageService; -import fr.cemagref.simexplorer.is.ui.StorageServiceHelper; -import fr.cemagref.simexplorer.is.ui.swing.JListTab; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerActionManager; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerTab; +import fr.cemagref.simexplorer.is.ui.swing.ui.JListTab; +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.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.SimExplorerTab; +import fr.cemagref.simexplorer.is.ui.swing.ui.SynchronizeTabRefreshHelper; import jaxx.runtime.builder.TabModel; import static org.codelutin.i18n.I18n.n_; import java.awt.event.ActionEvent; /** - * Action pour exporter une application + * Action pour exporter un élément * * @author chemit */ @jaxx.runtime.builder.ActionConfig( actionCommand = "exportElement", name = "simexplorer.action.exportElement", - //shortDescription = "simexplorer.action.exportElement.tooltip", longDescription = "simexplorer.action.exportElement.help", smallIcon = "action/export-element.png", mnemonic = 'x', @@ -50,11 +51,14 @@ ) public class ExportElementAction extends SimExplorerAbstractTabAction { - private static final long serialVersionUID = 7535647131305304738L; - + /** le modèle de sélection */ protected DataEntityModel selected; + /** le service d'origine */ + protected StorageService fromService; + /** le service où exporter */ + protected StorageService toService; - protected StorageService fromService, toService; + private static final long serialVersionUID = 7535647131305304738L; public ExportElementAction(String name) { super(name); @@ -62,7 +66,6 @@ @Override public String getI18nToolTipText() { - return getI18nToolTipText(selected != null && selected.isRemote()); } @@ -121,34 +124,46 @@ @Override public void updateUI() { - // on doit invalider les données apres un export + + updateListTab(); + + // update detail model (delegue a l'action d'historique quand elle sera presente) + + if (SimExplorerTab.synchronize.isTabVisible(getTabContainer())) { + updateSynchronizeTab(); + } + } + + protected void updateListTab() { ListTabModel model; JListTab ui; SimExplorerTab tab; - if (selected.isRemote()) { - // reinit de la liste locale - tab = SimExplorerTab.local; - model = (ListTabModel) tab.getModel(); - ui = (JListTab) tab.getUI(); - } else { - // reninit de la liste remote - tab = SimExplorerTab.remote; - model = (ListTabModel) tab.getModel(); - ui = (JListTab) tab.getUI(); - } + boolean remote = selected.isRemote(); + + tab = SimExplorerTab.getListTab(remote); + model = SimExplorerTab.getListModel(remote); + ui = SimExplorerTab.getListUI(remote); + // pour reforcer le calcul de la liste - model.setPagination(null); - model.updateTabModel(getContext(), (ListTableModel) ui.getTable().getModel()); - tab.updateUI(); - boolean wasVisible = SimExplorerTab.synchronize.isTabVisible(getTabContainer()); - if (wasVisible) { - SimExplorerActionManager.fireAction("showTab_synchronize", e.getSource()); - if (getTab() != SimExplorerTab.synchronize) { - SimExplorerTab.synchronize.closeTab(getTabContainer()); - getTab().showTab(getTabContainer()); - } + model.updateTabModel(getContext(), (ListTableModel) ui.getTable().getModel(), true); + tab.updateUI(getContext(),getMainUI()); + } + + protected void updateSynchronizeTab() { + + SimExplorerTab tab = SimExplorerTab.synchronize; + SynchronizeTabModel model = (SynchronizeTabModel) tab.getModel(); + + LoggableElement oldLocalRoot = model.getRootNode(false); + LoggableElement oldRemoteRoot = model.getRootNode(true); + LoggableElement item; + boolean modelIsRemote = !selected.isRemote(); + + item = model.getRootNode(modelIsRemote); + if (item != null && item.getMetaData().getUuid() != null && item.getMetaData().getUuid().equals(selected.getUuid())) { + model.setRootNode(null, modelIsRemote); } - + SynchronizeTabRefreshHelper.updateTree(getMainUI(), getTabContainer(), oldLocalRoot, oldRemoteRoot); } @Override Modified: 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementToLocalAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -20,13 +20,13 @@ 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 fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel; import java.awt.event.ActionEvent; /** - * Action pour exporter une application + * Action pour exporter un élément vers la base locale * * @author chemit */ @@ -56,7 +56,7 @@ boolean result; if (result = EntityHelper.Action.EXPORT.accept(element)) { selected = new DataEntityModel(); - selected.synch(true,element); + selected.synch(true, element); } return result; } Modified: 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ExportElementToRemoteAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -20,13 +20,13 @@ 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 fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel; import java.awt.event.ActionEvent; /** - * Action pour exporter une application + * Action pour exporter un élément vers la base distante * * @author chemit */ @@ -56,7 +56,7 @@ boolean result; if (result = EntityHelper.Action.EXPORT.accept(element)) { selected = new DataEntityModel(); - selected.synch(false,element); + selected.synch(false, element); } return result; } 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoLastPageAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,8 +18,8 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerTab; import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel; +import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab; import java.awt.event.ActionEvent; 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoNextPageAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -19,7 +19,7 @@ package fr.cemagref.simexplorer.is.ui.swing.actions; import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerTab; +import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab; import java.awt.event.ActionEvent; @@ -48,14 +48,14 @@ @Override protected boolean beforeAction(ActionEvent e) throws Exception { SimExplorerTab myTab = findTab(e); - if (myTab==null) { + if (myTab == null) { return false; } ListTabModel model = (ListTabModel) myTab.getModel(); Integer oldPage = model.getPagination().getCurrentPage(); boolean b = oldPage < model.getPagination().getNbPages(); if (b) { - newPage = oldPage+1; + newPage = oldPage + 1; } return 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/GoPreviousPageAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -19,7 +19,7 @@ package fr.cemagref.simexplorer.is.ui.swing.actions; import fr.cemagref.simexplorer.is.ui.swing.model.ListTabModel; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerTab; +import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab; import java.awt.event.ActionEvent; @@ -48,7 +48,7 @@ @Override protected boolean beforeAction(ActionEvent e) throws Exception { SimExplorerTab myTab = findTab(e); - if (myTab==null) { + if (myTab == null) { return false; } ListTabModel model = (ListTabModel) myTab.getModel(); Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/HelpAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/HelpAction.java 2008-02-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/HelpAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,8 +18,8 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions; +import fr.cemagref.simexplorer.is.exceptions.SimExplorerRuntimeException; import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractAction; -import fr.cemagref.simexplorer.is.exceptions.SimExplorerRuntimeException; import java.awt.event.ActionEvent; @@ -48,6 +48,6 @@ @Override protected void doAction(ActionEvent e) throws Exception { super.doAction(e); - throw new SimExplorerRuntimeException(this+" is not implemented yet!"); + throw new SimExplorerRuntimeException(this + " is not implemented yet!"); } } \ No newline at end of file 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ImportElementAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,8 +18,8 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions; -import fr.cemagref.simexplorer.is.ui.StorageServiceHelper; -import fr.cemagref.simexplorer.is.ui.swing.ImportDialog; +import fr.cemagref.simexplorer.is.ui.swing.ui.ImportDialog; +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.ListTabModel; import static org.codelutin.i18n.I18n._; @@ -97,7 +97,7 @@ } @Override - public String getI18nToolTipText() { + public String getI18nToolTipText() { return getI18nToolTipText(remote); } Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/QuitAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/QuitAction.java 2008-02-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/QuitAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,6 +18,7 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions; +import fr.cemagref.simexplorer.is.ui.swing.SimExplorer; import fr.cemagref.simexplorer.is.ui.swing.actions.util.SimExplorerAbstractAction; /** @@ -46,6 +47,6 @@ protected void doAction(java.awt.event.ActionEvent e) throws Exception { //TODO Fermer tous les tabs //TODO se deconnecter,... - getMainUI().dispose(); + SimExplorer.dispose(false); } } 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ResetSearchAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,11 +18,11 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions; -import fr.cemagref.simexplorer.is.ui.swing.JListTab; +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 fr.cemagref.simexplorer.is.entities.metadata.MetaData; import java.awt.event.ActionEvent; @@ -75,19 +75,17 @@ model.setQuery(null); // reset selected item model.synch(model.isRemote(), (MetaData) null); - log.info("sync "+model.getSelectedItem()); - // pagination a vide - model.setPagination(null); + log.info("sync " + model.getSelectedItem()); // update model - model.updateTabModel(getContext(), (ListTableModel) ((JListTab) getUI()).getTable().getModel()); + model.updateTabModel(getContext(), (ListTableModel) ((JListTab) getUI()).getTable().getModel(), true); } @Override public void updateUI() { super.updateUI(); // refresh ui - getTab().updateUI(); + getTab().updateUI(getContext(),getMainUI()); } @Override 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/SearchAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,11 +18,11 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions; -import fr.cemagref.simexplorer.is.ui.swing.JListTab; +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 fr.cemagref.simexplorer.is.entities.metadata.MetaData; import javax.swing.JTextField; import java.awt.event.ActionEvent; @@ -68,17 +68,14 @@ model.synch(model.isRemote(), (MetaData) null); model.setSelectedIndex(-1); - // pagination a vide - model.setPagination(null); - // update model - model.updateTabModel(getContext(), (ListTableModel) ((JListTab) getUI()).getTable().getModel()); + model.updateTabModel(getContext(), (ListTableModel) ((JListTab) getUI()).getTable().getModel(), true); } @Override public void updateUI() { // refresh tab ui - getTab().updateUI(); + getTab().updateUI(getContext(),getMainUI()); } @Override 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowDetailTabAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -21,15 +21,15 @@ 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.StorageServiceHelper; -import fr.cemagref.simexplorer.is.ui.swing.DetailTabRefreshHelper; -import fr.cemagref.simexplorer.is.ui.swing.EntityTreeNodeHelper; -import fr.cemagref.simexplorer.is.ui.swing.JDetailTab; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerTab; +import fr.cemagref.simexplorer.is.ui.swing.ui.JDetailTab; +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.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.SimExplorerTab; import javax.swing.DefaultComboBoxModel; import javax.swing.event.ListSelectionEvent; @@ -153,7 +153,7 @@ model.resetSelectedVersion(); // update history list - LoggableElement element = node == null ? null : node.getLoggableElement(); + LoggableElement element = node == null ? null : node.getLoggableElement(); boolean history = element != null; Version selectedVersion; Integer selectedAttachment; @@ -213,7 +213,7 @@ attachmentListener.setEnabled(wasEnable2); // update actions on toolbar EntityTreeNode node = EntityTreeNodeHelper.getSelectedNode(ui.getNavigationTree()); - DetailTabRefreshHelper.refreshDetailActions(ui, model, node); + DetailTabRefreshHelper.refreshDetailActions(getContext(), ui, model, node); EntityTreeNode rootNode = EntityTreeNodeHelper.getRootNode(ui.getNavigationTree()); if (model.getDetail() != null && !node.equals(rootNode)) { @@ -239,7 +239,7 @@ JDetailTab ui = getTabUI(); DetailTabModel model = getTabModel(); - MetaData metas; + MetaData metas; Object selectedItem = ui.getDetailVersions().getSelectedItem(); if (selectedItem == null) { throw new NullPointerException("can not have a selectedItem null"); @@ -303,7 +303,7 @@ ui.getDetailAttachments().setSelectedIndex(0); // update actions on toolbar EntityTreeNode node = EntityTreeNodeHelper.getSelectedNodeOrRootNode(ui.getNavigationTree()); - DetailTabRefreshHelper.refreshDetailActions(ui, model, node); + DetailTabRefreshHelper.refreshDetailActions(getContext(), ui, model, node); } public boolean isEnabled() { Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowLocalTabAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowLocalTabAction.java 2008-02-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowLocalTabAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -38,6 +38,6 @@ private static final long serialVersionUID = 7009836674867908237L; public ShowLocalTabAction(String name) { - super(name,false); + super(name, false); } } \ No newline at end of file Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowRemoteTabAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowRemoteTabAction.java 2008-02-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowRemoteTabAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -38,6 +38,6 @@ private static final long serialVersionUID = -5791049785753596347L; public ShowRemoteTabAction(String name) { - super(name,true); + super(name, true); } } \ No newline at end of file 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -19,18 +19,17 @@ package fr.cemagref.simexplorer.is.ui.swing.actions; import fr.cemagref.simexplorer.is.entities.data.LoggableElement; -import fr.cemagref.simexplorer.is.ui.swing.JSynchronizeTab; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerTab; -import fr.cemagref.simexplorer.is.ui.swing.SynchronizeTabRefreshHelper; -import fr.cemagref.simexplorer.is.ui.swing.EntityTreeNodeHelper; +import fr.cemagref.simexplorer.is.ui.swing.ui.JSynchronizeTab; 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; 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.SimExplorerTab; +import fr.cemagref.simexplorer.is.ui.swing.ui.SynchronizeTabRefreshHelper; import javax.swing.event.TreeSelectionEvent; import javax.swing.event.TreeSelectionListener; -import javax.swing.tree.TreePath; import java.awt.event.ActionEvent; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; @@ -57,14 +56,14 @@ /** le listener sur la navigation dans l'arbre local */ protected TreeSelectionListener navigationLocalListener; + protected TreeSelectionListener navigationActionsLocalListener; /** le listener sur la navigation dans l'arbre distant */ protected TreeSelectionListener navigationRemoteListener; + protected TreeSelectionListener navigationActionsRemoteListener; public ShowSynchronizeTabAction(String name) { super(name); - navigationLocalListener = new NavigationSelectionListener(false); - navigationRemoteListener = new NavigationSelectionListener(true); } @Override @@ -86,18 +85,60 @@ } protected void initFirstUsage(JSynchronizeTab ui, SynchronizeTabModel model) { + navigationLocalListener = new NavigationSelectionListener(false); + navigationRemoteListener = new NavigationSelectionListener(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); } @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); + } + } + + @Override protected void clear() { super.clear(); selected = null; } /** + * Listen on selection of node in a tree, and refresh navigation actions. + * + * @author chemit + */ + protected class NavigationActionsSelectionListener implements TreeSelectionListener { + + protected final boolean remote; + protected JSynchronizeTab ui; + + public NavigationActionsSelectionListener(JSynchronizeTab ui, boolean remote) { + this.remote = remote; + this.ui = ui; + } + + public void valueChanged(TreeSelectionEvent e) { + // get EntityTreeNode + EntityTreeNode node = EntityTreeNodeHelper.getSelectedNode(e); + // refresh tree actions + EntityTreeNodeHelper.refreshTreeActions(ui.getCollapseButton(remote), ui.getExpandButton(remote), node); + } + } + + /** * The listener of the selection in a navigation tree. * * @author chemit @@ -115,21 +156,10 @@ public void valueChanged(TreeSelectionEvent e) { SynchronizeTabModel model = getTabModel(); - TreePath path = e.getNewLeadSelectionPath(); - EntityTreeNode node = null; - if (path != null) { - node = (EntityTreeNode) path.getLastPathComponent(); - } - // on rafraichit toujours ici les actions de l'arbre qui sont - // indépendantes du model et dépendent juste dunoeud sélectionné - EntityTreeNodeHelper.refreshTreeActions(getTabUI().getCollapseButton(remote), getTabUI().getExpandButton(remote), node); - - Object o = node == null ? null : node.getUserObject(); + EntityTreeNode node = EntityTreeNodeHelper.getSelectedNode(e); - // update history list - LoggableElement element = (LoggableElement) (o == null || !(o instanceof LoggableElement) ? null : o); + LoggableElement element = node.getLoggableElement(); - // le node est acceptable uniquement si c'est un loggableElement model.setSelectedNode(element, remote); } @@ -142,7 +172,7 @@ */ public void propertyChange(PropertyChangeEvent evt) { log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue()); - SynchronizeTabRefreshHelper.refreshExportElement(getTabUI(), getTabModel(), remote); + SynchronizeTabRefreshHelper.refreshExportElement(getContext(),getTabUI(), getTabModel(), remote); } } 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/UnconnectAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,18 +18,18 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions; -import fr.cemagref.simexplorer.is.ui.swing.DetailTabRefreshHelper; -import fr.cemagref.simexplorer.is.ui.swing.JDetailTab; -import fr.cemagref.simexplorer.is.ui.swing.JListTab; -import fr.cemagref.simexplorer.is.ui.swing.ListTabRefreshHelper; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerMainUI; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerTab; +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.model.EntityTreeNode; +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 javax.swing.JTabbedPane; import java.awt.event.ActionEvent; @@ -73,7 +73,7 @@ //DetailTabModel model = (DetailTabModel) SimExplorerTab.detail.getModel(); // remove all remote entries from history - SimExplorerActionManager.fireAction("historyUnconnect",e.getSource()); + SimExplorerActionManager.fireAction("historyUnconnect", e.getSource()); } @@ -103,11 +103,11 @@ if (SimExplorerTab.remote.isTabVisible(container)) { // close tab - SimExplorerTab.remote.closeTab(container); + SimExplorerTab.remote.closeTab(getMainUI(), container); } if (SimExplorerTab.synchronize.isTabVisible(container)) { // close tab - SimExplorerTab.synchronize.closeTab(container); + SimExplorerTab.synchronize.closeTab(getMainUI(), container); } /*if (SimExplorerTab.detail.isTabVisible(container) && history != null) { if (history.isEmpty()) { @@ -125,12 +125,12 @@ }*/ if (SimExplorerTab.detail.isTabVisible(container)) { - DetailTabRefreshHelper.refreshSynchroniseAction(tabUI, model); - DetailTabRefreshHelper.refreshExportAction(tabUI, model); + DetailTabRefreshHelper.refreshSynchroniseAction(getContext(), tabUI, model); + DetailTabRefreshHelper.refreshExportAction(getContext(),tabUI, model); } if (SimExplorerTab.local.isTabVisible(container)) { - ListTabRefreshHelper.refreshListTablePopupMenu((JListTab) SimExplorerTab.local.getUI(), (ListTabModel) SimExplorerTab.local.getModel()); + ListTabRefreshHelper.refreshListTablePopupMenu(getContext(), (JListTab) SimExplorerTab.local.getUI(), (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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryAbstractAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,13 +18,13 @@ package fr.cemagref.simexplorer.is.ui.swing.actions.history; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; -import fr.cemagref.simexplorer.is.ui.swing.DetailTabRefreshHelper; -import fr.cemagref.simexplorer.is.ui.swing.JDetailTab; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerTab; +import fr.cemagref.simexplorer.is.ui.swing.ui.JDetailTab; 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 java.awt.event.ActionEvent; @@ -92,7 +92,7 @@ DetailTabRefreshHelper.updateDetailNavigationTree((JDetailTab) getUI(), history); } else if (getTab().isTabVisible(getTabContainer())) { // close tab, no more history - getTab().closeTab(getTabContainer()); + getTab().closeTab(getMainUI(), getTabContainer()); } } 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryDeleteAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -19,7 +19,6 @@ package fr.cemagref.simexplorer.is.ui.swing.actions.history; import fr.cemagref.simexplorer.is.entities.data.LoggableElement; -import fr.cemagref.simexplorer.is.ui.swing.actions.history.HistoryAbstractAction; 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; Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryNextAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryNextAction.java 2008-02-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryNextAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,7 +18,6 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions.history; -import fr.cemagref.simexplorer.is.ui.swing.actions.history.HistoryAbstractAction; import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode; import fr.cemagref.simexplorer.is.ui.swing.model.HistoryModel; Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryPreviousAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryPreviousAction.java 2008-02-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryPreviousAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,7 +18,6 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions.history; -import fr.cemagref.simexplorer.is.ui.swing.actions.history.HistoryAbstractAction; import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode; import fr.cemagref.simexplorer.is.ui.swing.model.HistoryModel; Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryUnconnectAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryUnconnectAction.java 2008-02-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/history/HistoryUnconnectAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,7 +18,6 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions.history; -import fr.cemagref.simexplorer.is.ui.swing.actions.history.HistoryAbstractAction; import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode; import fr.cemagref.simexplorer.is.ui.swing.model.HistoryModel; Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ChangeI18nAbstractAction.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ChangeI18nAbstractAction.java 2008-02-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ChangeI18nAbstractAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,7 +18,7 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions.util; -import fr.cemagref.simexplorer.is.ui.SimExplorer; +import fr.cemagref.simexplorer.is.ui.swing.SimExplorer; import org.apache.commons.beanutils.Converter; import org.codelutin.i18n.CountryEnum; import org.codelutin.i18n.I18n; @@ -62,22 +62,19 @@ } @Override - public void doAction(java.awt.event.ActionEvent e) { + public void doAction(ActionEvent e) { //TODO Should ask confirm from user since it will close ui, and re instanciate ui - - getMainUI().getQuit().getAction().actionPerformed(new ActionEvent(this, ActionEvent.ACTION_FIRST, "cancel")); + //getMainUI().getQuit().getAction().actionPerformed(new ActionEvent(this, ActionEvent.ACTION_FIRST, "cancel")); getContext().getConfig().setI18n(language, country); // on doit initialiser la nouvelle locale avant de decharger les ui // au cas ou un appel à une ui surviendrait et dans quel cas la locale // serait toujours sur l'ancienne valeur ... getContext().getConfig().initI18n(); // save config - SimExplorer.getContext().saveSafely(); - // dispose all ui - SimExplorer.disposeUI(); - // reload main ui - SimExplorer.launch(); + getContext().saveSafely(); + // dispose then reload main ui + SimExplorer.dispose(true); } public boolean equalsLocale(LanguageEnum lang, CountryEnum countr) { 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowListTabAbstractAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -20,14 +20,15 @@ import fr.cemagref.simexplorer.is.entities.metadata.MetaData; import fr.cemagref.simexplorer.is.exceptions.SimExplorerRuntimeException; -import fr.cemagref.simexplorer.is.ui.swing.JListTab; -import fr.cemagref.simexplorer.is.ui.swing.ListTabRefreshHelper; +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.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.ListTabRefreshHelper; import jaxx.runtime.swing.JAXXTab; +import static org.codelutin.i18n.I18n._; import javax.swing.AbstractButton; import javax.swing.JTabbedPane; @@ -41,8 +42,6 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import static org.codelutin.i18n.I18n._; - /** @author chemit */ public class ShowListTabAbstractAction extends ShowTabAbstractAction<JListTab, ListTabModel> { private static final long serialVersionUID = 3813479850648257169L; @@ -138,7 +137,7 @@ entityModel = model.getSelectedItem(); log.info(entityModel); - ListTabRefreshHelper.refreshListTablePopupMenu(ui, model); + ListTabRefreshHelper.refreshListTablePopupMenu(getContext(), ui, model); } } @@ -174,26 +173,26 @@ } @Override - public void mousePressed(MouseEvent e) { + public void mousePressed(MouseEvent e) { super.mousePressed(e); initPopup(e); } @Override - public void mouseReleased(MouseEvent e) { + public void mouseReleased(MouseEvent e) { super.mouseReleased(e); initPopup(e); } @Override - public void mouseClicked(MouseEvent e) { + 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 //ActionEvent e1 = new ActionEvent(e.getSource(), ActionEvent.ACTION_FIRST, "showTab_detail"); - SimExplorerActionManager.fireAction("showTab_detail", e.getSource(),(AbstractButton) null); + SimExplorerActionManager.fireAction("showTab_detail", e.getSource(), (AbstractButton) null); } catch (Exception e1) { throw new SimExplorerRuntimeException(e1); } 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/ShowTabAbstractAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -73,7 +73,7 @@ protected void updateUI(U ui, M model) { // refresh ui - getTab().updateUI(ui, model); + getTab().updateUI(getContext(),getMainUI(), ui, model); } @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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,9 +18,10 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions.util; -import fr.cemagref.simexplorer.is.ui.SimExplorer; -import fr.cemagref.simexplorer.is.ui.SimExplorerContext; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerMainUI; +import fr.cemagref.simexplorer.is.ui.swing.SimExplorer; +import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; +import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerMainUI; +import fr.cemagref.simexplorer.is.ui.swing.ui.util.ErrorDialog; import jaxx.runtime.JAXXObject; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -61,7 +62,7 @@ updateUI(); } } catch (Exception e1) { - SimExplorer.showError(e1); + showError(e1); } finally { this.e = null; // always clear action after use : actions are staless @@ -69,6 +70,10 @@ } } + protected void showError(Exception e) { + ErrorDialog.showError(e); + } + protected SimExplorerAbstractAction(String name) { super(name); log.debug("> " + this); @@ -79,7 +84,7 @@ } protected SimExplorerMainUI getMainUI() { - return SimExplorer.getUI(); + return SimExplorerMainUI.getUI(); } protected String getActionName() { 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/util/SimExplorerAbstractTabAction.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,12 +18,12 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.actions.util; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerTab; -import fr.cemagref.simexplorer.is.ui.swing.JDetailTab; -import fr.cemagref.simexplorer.is.ui.swing.JSynchronizeTab; +import fr.cemagref.simexplorer.is.exceptions.SimExplorerRuntimeException; +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.exceptions.SimExplorerRuntimeException; +import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab; import jaxx.runtime.JAXXObject; import jaxx.runtime.swing.JAXXTab; import org.apache.commons.beanutils.Converter; Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DataEntityModel.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DataEntityModel.java 2008-02-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DataEntityModel.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -23,8 +23,8 @@ 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.SimExplorerContext; -import fr.cemagref.simexplorer.is.ui.StorageServiceHelper; +import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; +import fr.cemagref.simexplorer.is.ui.swing.StorageServiceHelper; /** * Le model d'un meta sélectionné dans un onglet @@ -90,7 +90,7 @@ // acquire it le = StorageServiceHelper.getElement(context, isRemote(), uuid, version.toString()); - if (le != null) { + if (le != null) { meta = le.getMetaData(); } return le; @@ -225,7 +225,7 @@ @Override public String toString() { String s = super.toString(); - return s.substring(s.lastIndexOf('.')+1) + "<remote:" + remote + ", uuid:" + uuid + + return s.substring(s.lastIndexOf('.') + 1) + "<remote:" + remote + ", uuid:" + uuid + ", version:" + version + ", result:" + isResult() + ", type:" + type + ">"; } 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/DetailTabModel.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -34,6 +34,7 @@ */ public class DetailTabModel extends SimExplorerTabModel { + public static final String ROOT_NODE_PROPERTY_CHANGED = "rootNodePropertyChanged"; public static final String SELECTED_NODE_PROPERTY_CHANGED = "selectedNodePropertyChanged"; public static final String SELECTED_VERSION_INDEX_PROPERTY_CHANGED = "selectedVersionIndexPropertyChanged"; public static final String SELECTED_ATTACHMENT_INDEX_PROPERTY_CHANGED = "selectedAttachmentIndexPropertyChanged"; @@ -167,7 +168,7 @@ public void setDetail(MetaData detail) { this.detail = detail; - synch(isRemote(),detail); + synch(isRemote(), detail); } public void reset() { 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/EntityTreeNode.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -62,7 +62,7 @@ public Object get() { LoggableElement le = getLoggableElement(); - if (le!=null) { + if (le != null) { return le; } if (isResult()) { @@ -70,7 +70,7 @@ } return null; } - + public LoggableElement getLoggableElement() { Object userObject = getUserObject(); if (userObject instanceof LoggableElement) { 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTabModel.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -19,8 +19,8 @@ package fr.cemagref.simexplorer.is.ui.swing.model; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; -import fr.cemagref.simexplorer.is.ui.SimExplorerContext; -import fr.cemagref.simexplorer.is.ui.StorageServiceHelper; +import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; +import fr.cemagref.simexplorer.is.ui.swing.StorageServiceHelper; /** * Le model pour un Tab contenant une liste d'application @@ -90,7 +90,7 @@ @Override public String toString() { String s = super.toString(); - return s.substring(s.lastIndexOf(".") + 1) + "<size: " + size() + ",selectedItem:"+selectedItem+">"; + return s.substring(s.lastIndexOf(".") + 1) + "<size: " + size() + ",selectedItem:" + selectedItem + ">"; } public void setSelectedIndex(int selectedIndex) { @@ -116,21 +116,27 @@ synch(remote, null, null); // first query, build model - updateTabModel(context, tableModel); + updateTabModel(context, tableModel, true); } - public void updateTabModel(SimExplorerContext context, ListTableModel tableModel) { + public void updateTabModel(SimExplorerContext context, ListTableModel tableModel, boolean deletePagination) { // init pagination - PaginationModel paginationModel; - paginationModel = pagination == null ? initPagination(context) : 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) paginationModel.getFirstIndex(), paginationModel.getWidth(), queryModel.getDateOrder()); + MetaData[] data = StorageServiceHelper.getData(context, remote, queryModel.isOnlyLatest(), queryModel.getQuery(), (int) model.getFirstIndex(), model.getWidth(), queryModel.getDateOrder()); // save in model setList(data); @@ -145,15 +151,15 @@ long size = StorageServiceHelper.getCount(context, remote, query, queryModel.isOnlyLatest()); // init pagination - PaginationModel paginationModel = getPagination(); - paginationModel.setFirstIndex(0); - paginationModel.setSize(size); + PaginationModel model = getPagination(); + model.setFirstIndex(0); + model.setSize(size); // utilisation sizor par défaut - paginationModel.setWidth(remote ? context.getConfig().getRemoteSizor() : context.getConfig().getLocalSizor()); + model.setWidth(remote ? context.getConfig().getRemoteSizor() : context.getConfig().getLocalSizor()); // save pagination in model - setPagination(paginationModel); - return paginationModel; + setPagination(model); + return model; } private void checkSize(int 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/ListTableModel.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -18,8 +18,8 @@ * ##% */ package fr.cemagref.simexplorer.is.ui.swing.model; +import fr.cemagref.simexplorer.is.entities.EntityHelper; import fr.cemagref.simexplorer.is.entities.metadata.MetaData; -import fr.cemagref.simexplorer.is.entities.EntityHelper; import static org.codelutin.i18n.I18n._; import static org.codelutin.i18n.I18n.n_; @@ -79,7 +79,7 @@ MetaData current = data[rowIndex]; if (current != null) { try { - if (columnIndex==1) { + if (columnIndex == 1) { // use I18n result = EntityHelper.Type.getLibelle(current); } else { 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/PaginationModel.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -69,8 +69,8 @@ } public int getNbPages() { - int nbPages = (int) (size / width); - if ((size%width!=0) || (nbPages == 0 && size > 0)) { + int nbPages = (int) (size / width); + if ((size % width != 0) || (nbPages == 0 && size > 0)) { nbPages++; } return nbPages; 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/QueryModel.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -41,7 +41,7 @@ public boolean hasQuery() { return query != null && !query.isEmpty(); } - + public int getDateOrder() { return dateOrder; } 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SimExplorerTabModel.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -20,7 +20,7 @@ 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.SimExplorerTab; +import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerTab; import jaxx.runtime.builder.TabModel; import java.beans.PropertyChangeListener; 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-20 18:45:27 UTC (rev 1144) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/model/SynchronizeTabModel.java 2008-02-20 18:46:01 UTC (rev 1145) @@ -20,8 +20,8 @@ import fr.cemagref.simexplorer.is.entities.data.LoggableElement; import fr.cemagref.simexplorer.is.entities.metadata.Version; -import fr.cemagref.simexplorer.is.ui.SimExplorerContext; -import fr.cemagref.simexplorer.is.ui.StorageServiceHelper; +import fr.cemagref.simexplorer.is.ui.swing.SimExplorerContext; +import fr.cemagref.simexplorer.is.ui.swing.StorageServiceHelper; /** * Le model pour un Tab contenant 2 arbres de navigation de LE @@ -30,17 +30,24 @@ */ public class SynchronizeTabModel extends SimExplorerTabModel { - public static final String ROOT_LOCAL_NODE_PROPERTY_CHANGED = "rootLocalNodePropertyChanged"; + /** 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"; - public static final String ROOT_REMOTE_NODE_PROPERTY_CHANGED = "rootRemoteNodePropertyChanged"; + /** la clef de l'évènement après la modification du root de l'arbre distant */ + public static final String REMOTE_ROOT_NODE_PROPERTY_CHANGED = "rootRemoteNodePropertyChanged"; - public static final String SELECTED_LOCAL_NODE_PROPERTY_CHANGED = "selectedLocalNodePropertyChanged"; + /** la clef de l'évènement après la modification du noeud sélectionné dans l'arbre local */ + public static final String LOCAL_SELECTED_NODE_PROPERTY_CHANGED = "selectedLocalNodePropertyChanged"; - public static final String SELECTED_REMOTE_NODE_PROPERTY_CHANGED = "selectedRemoteNodePropertyChanged"; + /** la clef de l'évènement après la modification du noeud sélectionné dans l'arbre distant */ + public static final String REMOTE_SELECTED_NODE_PROPERTY_CHANGED = "selectedRemoteNodePropertyChanged"; private static final long serialVersionUID = -3623331875470531459L; - /** la racine de l'arbre de nivation local. */ + /** l'element source de la synchronisation */ + protected DataEntityModel source; + + /** la racine de l'arbre de navigation local. */ protected LoggableElement localRootNode; /** la racine de l'abre de navigation distant. */ @@ -69,13 +76,21 @@ } public String getRootProperty(boolean remote) { - return remote ? ROOT_REMOTE_NODE_PROPERTY_CHANGED : ROOT_LOCAL_NODE_PROPERTY_CHANGED; + return remote ? REMOTE_ROOT_NODE_PROPERTY_CHANGED : LOCAL_ROOT_NODE_PROPERTY_CHANGED; } public String getSelectedProperty(boolean remote) { - return remote ? SELECTED_REMOTE_NODE_PROPERTY_CHANGED : SELECTED_LOCAL_NODE_PROPERTY_CHANGED; + return remote ? REMOTE_SELECTED_NODE_PROPERTY_CHANGED : LOCAL_SELECTED_NODE_PROPERTY_CHANGED; } + public DataEntityModel getSource() { + return source; + } + + public void setSource(DataEntityModel source) { + this.source = source; + } + public void setRootNode(LoggableElement source, boolean remote) { String property = getRootProperty(remote); LoggableElement oldRootNode = getRootNode(remote); @@ -101,8 +116,11 @@ public void updateTabModel(SimExplorerContext context, DataEntityModel selected) { // on nettoye le model avant tout + reset(); + setSource(selected); + if (selected == null) { // rien de plus à faire return;