Author: tchemit Date: 2008-01-24 00:29:24 +0000 (Thu, 24 Jan 2008) New Revision: 469 Modified: trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab/ShowDetailTabAction.java Log: ajout listener sur tree pour agir lors de la selection d'un node Modified: trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab/ShowDetailTabAction.java =================================================================== --- trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab/ShowDetailTabAction.java 2008-01-24 00:28:51 UTC (rev 468) +++ trunk/simexplorer-is-swing/src/java/fr/cemagref/simexplorer/is/ui/swing/action/tab/ShowDetailTabAction.java 2008-01-24 00:29:24 UTC (rev 469) @@ -25,13 +25,20 @@ 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.LoggableElementTreeHelper; +import fr.cemagref.simexplorer.is.ui.swing.model.LoggableElementTreeNode; import fr.cemagref.simexplorer.is.ui.swing.tab.JApplicationDetailTab; +import javax.swing.JTree; +import javax.swing.event.TreeSelectionEvent; +import javax.swing.event.TreeSelectionListener; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeModel; import javax.swing.tree.TreeNode; +import javax.swing.tree.TreePath; import java.awt.event.ActionEvent; +import static org.codelutin.i18n.I18n.*; + /** * Action pour afficher le tab de détail d'un LoggableElement * @@ -50,6 +57,7 @@ private static final long serialVersionUID = 6643631041114311643L; + protected Boolean firstTime; public ShowDetailTabAction(String name) { super(name); @@ -57,9 +65,6 @@ @Override protected boolean beforeAction(ActionEvent e) throws Exception { - if (!super.beforeAction(e)) { - return false; - } ListTabModel listModel; DetailTabModel model = (DetailTabModel) getModel(); if (model.isRemote()) { @@ -67,6 +72,9 @@ } else { listModel = (ListTabModel) SimExplorerTab.local.getModel(); } + // mark it, after action will push table model + firstTime = getUI() == null; + MetaDataEntity data = listModel.get(model.getIndex()); String uuid = data.getUuid(); Version version = data.getVersion(); @@ -88,16 +96,84 @@ TreeNode root = LoggableElementTreeHelper.buildLoggableElementNode(model.getBean()); // push tree model - TreeModel modelTree = ui.getTree().getModel(); + JTree tree = getTree(); + TreeModel modelTree = tree.getModel(); if (modelTree instanceof DefaultTreeModel) { DefaultTreeModel t = (DefaultTreeModel) modelTree; t.setRoot(root); } else { DefaultTreeModel t = new DefaultTreeModel(root); - ui.getTree().setModel(t); + tree.setModel(t); } + if (firstTime) { + // add a listener of tree model + tree.addTreeSelectionListener(new TreeSelectionListener() { + public void valueChanged(TreeSelectionEvent e) { + TreePath path = e.getNewLeadSelectionPath(); + boolean download = false; + boolean export = false; + boolean detail = false; + boolean history = false; + JApplicationDetailTab ui = (JApplicationDetailTab) getUI(); + + LoggableElementTreeNode node = null; + if (path != null) { + node = (LoggableElementTreeNode) path.getLastPathComponent(); + if (node.isDownloadableElement()) { + download = true; + } + if (node.isLoggableElement()) { + detail = history = true; + } + if (node.isRoot()) { + export = true; + } + } + ui.getDownload().setEnabled(download); + if (download) { + ui.getDownload().setToolTipText(_("simexplorer.action.dowload2",node.getUserObject())); + } else { + ui.getDownload().setToolTipText(null); + } + + ui.getExportApplication().setEnabled(export); + if (detail) { + showDetail(node); + } + if (history) { + showHistory(node); + } + } + }); + } + // by default select the root node (to display info about the exploration) + tree.setSelectionRow(0); + // refresh ui getMainUI().refreshDetailTabUI(model, ui); } + @Override + protected void clear() { + super.clear(); + firstTime = null; + } + + protected void showDetail(final LoggableElementTreeNode node) { + JApplicationDetailTab ui = (JApplicationDetailTab) getUI(); + ui.getDetailFake().setText("detail [" + node.getUserObject().getClass().getSimpleName() + "]" + node.getUserObject()); + } + + protected void showHistory(LoggableElementTreeNode node) { + JApplicationDetailTab ui = (JApplicationDetailTab) getUI(); + ui.getHistoryFake().setText("history [" + node.getUserObject().getClass().getSimpleName() + "]" + node.getUserObject()); + ui.repaint(); + } + + protected JTree getTree() { + JTree tree; + tree = ((JApplicationDetailTab) getUI()).getTree(); + return tree; + } + }
participants (1)
-
tchemit@users.labs.libre-entreprise.org