Author: tchemit Date: 2008-02-18 23:13:30 +0000 (Mon, 18 Feb 2008) New Revision: 1105 Modified: trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java Log: m?\195?\169thode delete presque ok, reste juste ?\195?\160 supprimer l'?\195?\169l?\195?\169ment de l'historique de l'onglet detail et a ne cacher l'onglet synchronize uniquement si l'objet concern?\195?\169 y est comme racine 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-18 23:12:36 UTC (rev 1104) +++ trunk/simexplorer-is/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/actions/DeleteElementAction.java 2008-02-18 23:13:30 UTC (rev 1105) @@ -25,10 +25,10 @@ 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.SimExplorerTabModel; import static org.codelutin.i18n.I18n._; import javax.swing.JOptionPane; -import java.awt.Component; import java.awt.event.ActionEvent; /** @@ -64,54 +64,81 @@ if (!super.beforeAction(e)) { return false; } - // on doit retrouver l'élément à traiter à partir de la source - SimExplorerTab sourceTab = SimExplorerTab.findTab((Component) e.getSource()); - log.info("incoming tab " + sourceTab); - if (sourceTab == null) { - //fatal error - log.warn("could not find a tab for source " + e.getSource()); - return false; + if (selected == null) { + // on doit retrouver l'élément à traiter à partir de la source + selected = findSelectedItem(e); } - selected = sourceTab.getModel().getSelectedItem(); + boolean selectedUuid = selected != null && selected.getUuid() != null; + if (selectedUuid) { - return selected != null; + // demande de confirmation avant d'effacer + int result = JOptionPane.showConfirmDialog(null, _("simexplorer.confirm.delete", getDeleteMessage()), "delete", JOptionPane.YES_NO_OPTION); + if (result != JOptionPane.OK_OPTION) { + // do nothing + return false; + } + } + return selectedUuid; } + @Override protected void doAction(ActionEvent e) throws Exception { super.doAction(e); log.info("selected " + selected); - // demande de confirmation avant d'effacer - int result = JOptionPane.showConfirmDialog(null, _("simexplorer.confirm.delete", getDeleteMessage()), "delete", JOptionPane.YES_NO_OPTION); - if (result != JOptionPane.OK_OPTION) { - // do nothing - return; - } + // effectue la suppression StorageServiceHelper.deleteElement(getContext(), selected.isRemote(), selected.getUuid(), selected.getVersion().toString()); + + //TODO supprimer l'élément de l'historique de detail } @Override public void updateUI() { // on doit invalider les données apres un export - ListTabModel model; + ListTabModel listTabModel; JListTab ui; SimExplorerTab tab; if (selected.isRemote()) { // reinit de la liste locale tab = SimExplorerTab.remote; - model = (ListTabModel) tab.getModel(); + listTabModel = (ListTabModel) tab.getModel(); ui = (JListTab) tab.getUI(); } else { // reninit de la liste remote tab = SimExplorerTab.local; - model = (ListTabModel) tab.getModel(); + listTabModel = (ListTabModel) tab.getModel(); ui = (JListTab) tab.getUI(); } - updateList(model, ui, tab); + updateList(listTabModel, ui, tab); + + // update detail model + tab = SimExplorerTab.detail; + SimExplorerTabModel model = tab.getModel(); + DataEntityModel item = model.getSelectedItem(); + if (tab.isTabVisible(getTabContainer()) && item.getUuid() != null && item.getUuid().equals(selected.getUuid())) { + // on supprimer la donnée + model.synch(null); + // on doit supprimer la vue + tab.closeTab(getTabContainer()); + } + + // 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); + // on doit supprimer la vue + tab.closeTab(getTabContainer()); + //} } private void updateList(ListTabModel model, JListTab ui, SimExplorerTab tab) { + model.setPagination(null); model.updateTabModel(getContext(), (ListTableModel) ui.getTable().getModel()); tab.updateUI(); }