20 package net.sf.gridarta.gui.data;
22 import java.awt.Component;
23 import java.awt.Window;
24 import java.awt.event.MouseAdapter;
25 import java.awt.event.MouseEvent;
26 import javax.swing.JOptionPane;
27 import javax.swing.JScrollPane;
28 import javax.swing.JTree;
29 import javax.swing.tree.TreeNode;
30 import javax.swing.tree.TreePath;
35 import net.
sf.japi.swing.action.ActionBuilder;
36 import net.
sf.japi.swing.action.ActionBuilderFactory;
37 import org.jetbrains.annotations.NotNull;
38 import org.jetbrains.annotations.Nullable;
52 private static final ActionBuilder
ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(
"net.sf.gridarta");
72 final NamedObject initialObject = namedObjects.get(initial);
73 final String initialPath = initialObject ==
null ? initial : initialObject.
getPath();
74 final JTree tree =
new JTree(namedObjects.getTreeRoot());
76 final JScrollPane scrollPane =
new JScrollPane(tree);
77 tree.setExpandsSelectedPaths(
true);
78 final TreePath path = namedObjects.getTreeRoot().getPathFor(initialPath);
79 tree.makeVisible(path);
80 tree.setSelectionPath(path);
81 tree.scrollPathToVisible(path);
82 final JOptionPane pane =
new JOptionPane(scrollPane, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION,
null,
null,
null);
83 final Window dialog = pane.createDialog(parentComponent,
ACTION_BUILDER.format(
"chooseNamedObject.title", namedObjects.getName()));
84 pane.selectInitialValue();
86 tree.addMouseListener(
new MouseAdapter() {
89 public void mousePressed(
final MouseEvent e) {
90 if (e.getClickCount() == 2) {
91 final TreePath selPath = tree.getPathForLocation(e.getX(), e.getY());
92 if (selPath !=
null) {
93 final TreeNode node = (TreeNode) selPath.getLastPathComponent();
102 dialog.setVisible(
true);
105 if (pane.getValue() ==
null || !pane.getValue().equals(0)) {
109 final TreePath selectionPath = tree.getSelectionPath();
110 return selectionPath ==
null ? null : ((
NamedTreeNode<?>) selectionPath.getLastPathComponent()).getName();