Author: tchemit Date: 2008-02-20 13:51:45 +0000 (Wed, 20 Feb 2008) New Revision: 1137 Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java Log: un seul listener g?\195?\169n?\195?\169rique d'?\195?\169coute sur l'arbre de navigation 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 13:51:09 UTC (rev 1136) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/ShowSynchronizeTabAction.java 2008-02-20 13:51:45 UTC (rev 1137) @@ -19,11 +19,10 @@ package fr.cemagref.simexplorer.is.ui.swing.actions; import fr.cemagref.simexplorer.is.entities.data.LoggableElement; -import fr.cemagref.simexplorer.is.entities.metadata.Version; -import fr.cemagref.simexplorer.is.ui.StorageServiceHelper; 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.actions.util.ShowTabAbstractAction; import fr.cemagref.simexplorer.is.ui.swing.model.DataEntityModel; import fr.cemagref.simexplorer.is.ui.swing.model.EntityTreeNode; @@ -64,8 +63,8 @@ public ShowSynchronizeTabAction(String name) { super(name); - navigationLocalListener = new NavigationLocalSelectionListener(); - navigationRemoteListener = new NavigationRemoteSelectionListener(); + navigationLocalListener = new NavigationSelectionListener(false); + navigationRemoteListener = new NavigationSelectionListener(true); } @Override @@ -79,55 +78,17 @@ return false; } + SynchronizeTabModel model = (SynchronizeTabModel) SimExplorerTab.synchronize.getModel(); + // init synchronize tab model - initTabModel(); - + model.updateTabModel(getContext(), selected); return true; } - protected void initTabModel() { - - boolean remote = selected.isRemote(); - String uuid = selected.getUuid(); - - // preparation du model de l'onglet - SynchronizeTabModel model = (SynchronizeTabModel) SimExplorerTab.synchronize.getModel(); - - // on nettoye le model avant tout - model.reset(); - - // l'élément selectionné est bien la source - model.setSelectedItem(selected); - - DataEntityModel save = model.getSelectedItem(); - LoggableElement source = save.getLe(getContext()); - - model.setSelectedItem(null); - // recuperation des versions de l'element destination - Version[] versions = StorageServiceHelper.getVersions(getContext(), !remote, uuid); - Version requiredVersion = null; - if (versions.length != 0) { - // on prend la dernière version disponible dans la base (i.e - // la première de la liste des versions :)) - requiredVersion = versions[0]; - } - - model.synch(!remote, uuid, requiredVersion); - - LoggableElement destination = model.getSelectedItem().getLe(getContext()); - - // sauvegarde de la source - model.setSource(source); - // sauvegarde de la destination - model.setDestination(destination); - - model.setSelectedItem(save); - } - protected void initFirstUsage(JSynchronizeTab ui, SynchronizeTabModel model) { // add a listener on navigation tree - ui.getContentTreeLocal().addTreeSelectionListener(navigationLocalListener); - ui.getContentTreeRemote().addTreeSelectionListener(navigationRemoteListener); + ui.getTree(false).addTreeSelectionListener(navigationLocalListener); + ui.getTree(true).addTreeSelectionListener(navigationRemoteListener); } @Override @@ -137,61 +98,20 @@ } /** - * The listener of the selection in local navigation tree. + * The listener of the selection in a navigation tree. * * @author chemit */ - protected class NavigationLocalSelectionListener implements TreeSelectionListener, PropertyChangeListener { + protected class NavigationSelectionListener implements TreeSelectionListener, PropertyChangeListener { - public NavigationLocalSelectionListener() { - getTabModel().addPropertyChangeListener(SynchronizeTabModel.SELECTED_LOCAL_NODE_PROPERTY_CHANGED, this); - } + protected boolean remote; - public void valueChanged(TreeSelectionEvent e) { + public NavigationSelectionListener(boolean remote) { + this.remote = remote; 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é - SynchronizeTabRefreshHelper.refreshTreeLocalActions(getTabUI(), node); - - Object o = node == null ? null : node.getUserObject(); - - // update history list - LoggableElement element = (LoggableElement) (o == null || !(o instanceof LoggableElement) ? null : o); - - // le node est acceptable uniquement si c'est un loggableElement - model.setLocalSelectedNode(element); + getTabModel().addPropertyChangeListener(model.getSelectedProperty(remote), this); } - /** - * Notify a modification in the model. - * <p/> - * This method will update ui. - * - * @param evt event coming from DetailTabModel - */ - public void propertyChange(PropertyChangeEvent evt) { - log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue()); - SynchronizeTabRefreshHelper.refreshExportElement(getTabUI(), getTabModel(),false); - } - } - - /** - * The listener of the selection in local navigation tree. - * - * @author chemit - */ - protected class NavigationRemoteSelectionListener implements TreeSelectionListener, PropertyChangeListener { - - public NavigationRemoteSelectionListener() { - getTabModel().addPropertyChangeListener(SynchronizeTabModel.SELECTED_REMOTE_NODE_PROPERTY_CHANGED, this); - } - public void valueChanged(TreeSelectionEvent e) { SynchronizeTabModel model = getTabModel(); @@ -201,16 +121,16 @@ 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é - SynchronizeTabRefreshHelper.refreshTreeRemoteActions(getTabUI(), node); - + // 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(); // update history list LoggableElement element = (LoggableElement) (o == null || !(o instanceof LoggableElement) ? null : o); // le node est acceptable uniquement si c'est un loggableElement - model.setRemoteSelectedNode(element); + model.setSelectedNode(element, remote); } /** @@ -221,9 +141,10 @@ * @param evt event coming from DetailTabModel */ public void propertyChange(PropertyChangeEvent evt) { - log.debug(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue()); - SynchronizeTabRefreshHelper.refreshExportElement(getTabUI(), getTabModel(),true); + log.info(evt.getPropertyName() + " old:" + evt.getOldValue() + ", new:" + evt.getNewValue()); + SynchronizeTabRefreshHelper.refreshExportElement(getTabUI(), getTabModel(), remote); } } + }