20 package net.sf.gridarta.gui.treasurelist;
22 import java.awt.BorderLayout;
23 import java.awt.Component;
24 import java.awt.Container;
25 import java.awt.Frame;
26 import javax.swing.AbstractButton;
27 import javax.swing.BorderFactory;
28 import javax.swing.JButton;
29 import javax.swing.JDialog;
30 import javax.swing.JPanel;
31 import javax.swing.JScrollPane;
32 import javax.swing.JSplitPane;
33 import javax.swing.JTree;
34 import javax.swing.JViewport;
35 import javax.swing.ScrollPaneConstants;
36 import javax.swing.WindowConstants;
37 import javax.swing.text.JTextComponent;
38 import javax.swing.tree.DefaultMutableTreeNode;
39 import javax.swing.tree.TreeNode;
40 import javax.swing.tree.TreePath;
49 import net.
sf.japi.swing.action.ActionBuilder;
50 import net.
sf.japi.swing.action.ActionBuilderFactory;
51 import org.jetbrains.annotations.NotNull;
52 import org.jetbrains.annotations.Nullable;
67 public static final String
NONE_SYM =
"<none>";
73 private static final ActionBuilder
ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(
"net.sf.gridarta");
105 private final AbstractButton
okButton =
new JButton(
"Select");
112 private final AbstractButton
noneButton =
new JButton(
"None");
136 faceObjectProviders.addFaceObjectProvidersListener(faceObjectProvidersListener);
138 putClientProperty(
"JTree.lineStyle",
"Angled");
154 final boolean hasBeenDisplayed =
frame !=
null;
157 frame =
new JDialog(this.parent,
"Treasurelists",
false);
158 frame.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
160 setBorder(BorderFactory.createEmptyBorder(5, 10, 5, 5));
161 final JScrollPane scrollPane =
new JScrollPane(
this);
162 scrollPane.getViewport().setScrollMode(JViewport.SIMPLE_SCROLL_MODE);
163 scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
164 scrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
167 final JSplitPane splitPane =
new JSplitPane(JSplitPane.VERTICAL_SPLIT, scrollPane, buttonPanel);
168 splitPane.setOneTouchExpandable(
false);
169 assert
frame !=
null;
170 splitPane.setDividerLocation(
frame.getHeight() - buttonPanel.getMinimumSize().height - 4);
172 splitPane.setDividerSize(4);
173 splitPane.setResizeWeight(1.0);
175 assert
frame !=
null;
176 frame.getContentPane().add(splitPane);
180 if (
frame.isShowing()) {
181 assert
frame !=
null;
182 frame.setVisible(
false);
187 for (
int i = getRowCount() - 1; i > 0; i--) {
195 assert
frame !=
null;
196 frame.setSize(470, 550);
197 assert
frame !=
null;
201 scrollRowToVisible(0);
202 setSelectionPath(
null);
204 final String listName =
input.getText().trim();
205 final DefaultMutableTreeNode treasureNode =
treasureTree.
get(listName);
206 if (treasureNode ==
null) {
207 scrollRowToVisible(0);
208 setSelectionPath(
null);
210 final DefaultMutableTreeNode[] node =
new DefaultMutableTreeNode[2];
212 node[1] = treasureNode;
213 final TreePath treePath =
new TreePath(node);
214 expandPath(treePath);
215 setSelectionPath(treePath);
217 if (!hasBeenDisplayed) {
220 assert
frame !=
null;
222 assert
frame !=
null;
223 frame.setSize(470, 550);
224 setSelectionPath(treePath);
227 scrollRowToVisible(getRowCount() - 1);
228 scrollPathToVisible(treePath);
231 assert
frame !=
null;
232 frame.setVisible(
true);
241 final JPanel buttonPanel =
new JPanel(
new BorderLayout());
243 final Container leftSide =
new JPanel();
244 final Container rightSide =
new JPanel();
248 if (result !=
null) {
257 final AbstractButton cancelButton =
new JButton(
"Cancel");
258 cancelButton.addActionListener(e -> {
259 assert
frame !=
null;
260 frame.setVisible(
false);
262 rightSide.add(cancelButton);
264 final AbstractButton helpButton =
new JButton(
"Help");
265 helpButton.addActionListener(e ->
new Help(
parent,
"treasurelists.html").setVisible(
true));
266 leftSide.add(helpButton);
267 final Component testButton =
new JButton(
"Test");
268 leftSide.add(testButton);
269 testButton.setEnabled(
false);
271 buttonPanel.add(leftSide, BorderLayout.WEST);
272 buttonPanel.add(rightSide, BorderLayout.EAST);
282 input.setText(
" " + result);
284 assert
frame !=
null;
285 frame.setVisible(
false);
296 if (isSelectionEmpty()) {
300 TreeNode node = (TreeNode) getSelectionPath().getLastPathComponent();
307 final TreeNode parentNode = node.getParent();