Author: tchemit Date: 2008-02-18 23:19:31 +0000 (Mon, 18 Feb 2008) New Revision: 1107 Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java Log: action showTab_synchronize revisit?\195?\169 pour utiliser uniquement le selected du model incrimin?\195?\169 : ainsi l'action est bien stateless et on peut la r?\195?\169utilis?\195?\169 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-18 23:19:09 UTC (rev 1106) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java 2008-02-18 23:19:31 UTC (rev 1107) @@ -26,7 +26,6 @@ import fr.cemagref.simexplorer.is.ui.swing.SynchronizeTabRefreshHelper; 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.model.SynchronizeTabModel; @@ -57,8 +56,10 @@ private static final long serialVersionUID = -3901398502496915785L; + /** le listener sur la navigation dans l'arbre local */ protected TreeSelectionListener navigationLocalListener; + /** le listener sur la navigation dans l'arbre distant */ protected TreeSelectionListener navigationRemoteListener; public ShowSynchronizeTabAction(String name) { @@ -67,34 +68,25 @@ navigationRemoteListener = new NavigationRemoteSelectionListener(); } - public void setSelected(DataEntityModel selected) { - this.selected = selected; - } - @Override protected boolean beforeAction(ActionEvent e) throws Exception { if (!super.beforeAction(e)) { return false; } - if (selected == null) { - //FIXME: ce la ne fonctionne pas bien, a revoir... - // trick : quand c'est null, cela veut dire que l'on vient de - // l'onglet de detail, car dans les onglets de list, l'action est - // toujours initialisée avant d'arriver ici, alors que dans le cas - // de l'onglet de detail on ne prepare pas l'action car cela n'est - // pas pertinent (par exemple si on a déjà exécuté cette action depuis - // l'onglet de detail, et que l'on veut la relancer sur un retour sur - // l'onglet de detail, on a pas de moyen simple de reinitialiser cette - // action, donc on ne l'initialise jamais d'avance dans ce cas. - DetailTabModel model = (DetailTabModel) SimExplorerTab.detail.getModel(); - - selected = model.getSelectedItem(); - - } - if (selected == null) { - // on restete l'accessibilite de l'action + selected = findSelectedItem(e); + boolean selectedUuid = selected != null && selected.getUuid() != null; + if (!selectedUuid) { return false; } + + // init synchronize tab model + initTabModel(); + + return true; + } + + protected void initTabModel() { + boolean remote = selected.isRemote(); String uuid = selected.getUuid(); @@ -111,7 +103,6 @@ LoggableElement source = save.getLe(getContext()); model.setSelectedItem(null); - LoggableElement destination; // recuperation des versions de l'element destination Version[] versions = StorageServiceHelper.getVersions(getContext(), !remote, uuid); Version requiredVersion = null; @@ -123,7 +114,7 @@ model.synch(!remote, uuid, requiredVersion); - destination = model.getSelectedItem().getLe(getContext()); + LoggableElement destination = model.getSelectedItem().getLe(getContext()); // sauvegarde de la source model.setSource(source); @@ -131,7 +122,6 @@ model.setDestination(destination); model.setSelectedItem(save); - return true; } protected void initFirstUsage(JSynchronizeTab ui, SynchronizeTabModel model) {
participants (1)
-
tchemit@users.labs.libre-entreprise.org