r1124 - in trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing: . actions
Author: tchemit Date: 2008-02-19 17:54:40 +0000 (Tue, 19 Feb 2008) New Revision: 1124 Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SynchronizeTabRefreshHelper.java trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java Log: updateUI ok apres action delete (tous les onglets sont coherent) todo : faire de meme pour l'import et l'export Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SynchronizeTabRefreshHelper.java =================================================================== --- trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SynchronizeTabRefreshHelper.java 2008-02-19 17:52:47 UTC (rev 1123) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/SynchronizeTabRefreshHelper.java 2008-02-19 17:54:40 UTC (rev 1124) @@ -49,6 +49,11 @@ SynchronizeTabRefreshHelper.refreshExportElementToLocalAction(ui, model); SynchronizeTabRefreshHelper.refreshExportElementToRemoteAction(ui, model); + SynchronizeTabRefreshHelper.refreshRootNodes(ui, model); + } + + public static void refreshRootNodes(JSynchronizeTab ui, SynchronizeTabModel model) { + boolean remote = model.isRemote(); TreeNode sourceRoot = EntityTreeNodeHelper.build(model.getSource(), remote); TreeNode destinationRoot = model.getDestination() == null ? null : EntityTreeNodeHelper.build(model.getDestination(), !remote); @@ -63,20 +68,22 @@ sourceTree = ui.getContentTreeLocal(); destinationTree = ui.getContentTreeRemote(); } - ((DefaultTreeModel) sourceTree.getModel()).setRoot(sourceRoot); ((DefaultTreeModel) destinationTree.getModel()).setRoot(destinationRoot); - // by default select the root node - sourceTree.setSelectionRow(0); + if (sourceRoot == null) { + sourceTree.getSelectionModel().clearSelection(); + } else { + sourceTree.setSelectionRow(0); + } + if (destinationRoot == null) { destinationTree.getSelectionModel().clearSelection(); - } else { destinationTree.setSelectionRow(0); } } - + public static void refreshExportElementToRemoteAction(JSynchronizeTab ui, SynchronizeTabModel model) { LoggableElement sNode = model.getLocalSelectedNode(); boolean enabled = EntityHelper.Action.EXPORT.accept(sNode); @@ -105,7 +112,6 @@ EntityTreeNodeHelper.refreshTreeActions(ui.getCollapseAllRemote(), ui.getExpandAllRemote(), node); } - protected SynchronizeTabRefreshHelper() { // do not instanciate me please 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-19 17:52:47 UTC (rev 1123) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java 2008-02-19 17:54:40 UTC (rev 1124) @@ -18,14 +18,18 @@ * ##% */ 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.JSynchronizeTab; +import fr.cemagref.simexplorer.is.ui.swing.SimExplorerActionManager; import fr.cemagref.simexplorer.is.ui.swing.SimExplorerTab; -import fr.cemagref.simexplorer.is.ui.swing.SimExplorerActionManager; +import fr.cemagref.simexplorer.is.ui.swing.SynchronizeTabRefreshHelper; 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 static org.codelutin.i18n.I18n._; import javax.swing.JOptionPane; @@ -91,44 +95,81 @@ StorageServiceHelper.deleteElement(getContext(), selected.isRemote(), selected.getUuid(), selected.getVersion().toString()); // suppression de l'élément de l'historique (si present) - SimExplorerActionManager.fireAction("historyDelete",e.getSource()); + SimExplorerActionManager.fireAction("historyDelete", e.getSource()); } @Override public void updateUI() { // on doit invalider les données apres un export - ListTabModel listTabModel; + + updateListTab(); + + // update detail model (delegue a l'action d'historique) + + // update synchronize model + updateSynchronizeTab(); + } + + protected void updateListTab() { + ListTabModel model; JListTab ui; SimExplorerTab tab; if (selected.isRemote()) { // reinit de la liste locale tab = SimExplorerTab.remote; - listTabModel = (ListTabModel) tab.getModel(); + model = (ListTabModel) tab.getModel(); ui = (JListTab) tab.getUI(); } else { // reninit de la liste remote tab = SimExplorerTab.local; - listTabModel = (ListTabModel) tab.getModel(); + model = (ListTabModel) tab.getModel(); ui = (JListTab) tab.getUI(); } - listTabModel.setPagination(null); - listTabModel.updateTabModel(getContext(), (ListTableModel) ui.getTable().getModel()); + model.setPagination(null); + model.updateTabModel(getContext(), (ListTableModel) ui.getTable().getModel()); tab.updateUI(); + } - // update detail model (delegue a l'action d'historique) + protected void updateSynchronizeTab() { + SimExplorerTab tab; + tab = SimExplorerTab.synchronize; + JSynchronizeTab ui = (JSynchronizeTab) tab.getUI(); + SynchronizeTabModel model = (SynchronizeTabModel) tab.getModel(); - // update synchronize model - tab = SimExplorerTab.synchronize; - //model = tab.getModel(); - //TODO verifier si l'élément se trouve dans la synchro, pour le moment - //TODO on ferme toujours la synchro - //item = model.getSelectedItem(); - //if (item.getUuid() != null && item.getUuid().equals(selected.getUuid())) { - // on supprimer la donnée - //model.synch(null); + LoggableElement oldSource = model.getSource(); + LoggableElement oldDestination = model.getDestination(); + LoggableElement item; + boolean modelIsRemote = model.isRemote(); + if (selected.isRemote()) { + // selected is remote + item = modelIsRemote ? model.getSource() : model.getDestination(); + if (item != null && item.getMetaData().getUuid() != null && item.getMetaData().getUuid().equals(selected.getUuid())) { + if (modelIsRemote) { + model.setSource(null); + } else { + model.setDestination(null); + } + } + } else { + // selected is local + item = modelIsRemote ? model.getDestination() : model.getSource(); + if (item != null && item.getMetaData().getUuid() != null && item.getMetaData().getUuid().equals(selected.getUuid())) { + if (modelIsRemote) { + model.setDestination(null); + } else { + model.setSource(null); + } + } + } + if (model.getSource() == null && model.getDestination() == null) { // on doit supprimer la vue tab.closeTab(getTabContainer()); - //} + } + + if (model.getSource() != oldSource || model.getDestination() != oldDestination) { + // rebuild node ? + SynchronizeTabRefreshHelper.refreshRootNodes(ui, model); + } } @Override
participants (1)
-
tchemit@users.labs.libre-entreprise.org