195 lines
5.1 KiB
Java
195 lines
5.1 KiB
Java
/*
|
|
*
|
|
* Copyright (C) 2003 Kent Hansen.
|
|
*
|
|
* This file is part of Tile Mangler.
|
|
*
|
|
* Tile Mangler is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Tile Mangler is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
*/
|
|
|
|
package tm.modaldialog;
|
|
|
|
import tm.treenodes.*;
|
|
import javax.swing.*;
|
|
import javax.swing.event.*;
|
|
import javax.swing.tree.*;
|
|
import java.awt.*;
|
|
import java.awt.event.*;
|
|
|
|
/**
|
|
*
|
|
*
|
|
**/
|
|
|
|
public class TMAddToTreeDialog extends TMModalDialog {
|
|
|
|
private TMTreeNodeTree tree;
|
|
private JLabel descLabel;
|
|
private JLabel createInLabel;
|
|
private JTextField descField;
|
|
private JButton newFolderButton;
|
|
private TMNewFolderDialog newFolderDialog;
|
|
private JScrollPane scrollPane;
|
|
|
|
/**
|
|
*
|
|
* Creates the dialog.
|
|
*
|
|
**/
|
|
|
|
public TMAddToTreeDialog(Frame owner, String title, tm.utils.Xlator xl) {
|
|
super(owner, title, xl);
|
|
newFolderDialog = new TMNewFolderDialog(owner, xl);
|
|
}
|
|
|
|
/**
|
|
*
|
|
*
|
|
*
|
|
**/
|
|
|
|
protected JPanel getDialogPane() {
|
|
descLabel = new JLabel(xlate("Description_Prompt"));
|
|
descField = new JTextField();
|
|
descField.getDocument().addDocumentListener(new TMDocumentListener());
|
|
createInLabel = new JLabel(xlate("Create_In"));
|
|
|
|
newFolderButton = new JButton(xlate("New_Folder"));
|
|
newFolderButton.addActionListener(
|
|
new ActionListener() {
|
|
public void actionPerformed(ActionEvent e) {
|
|
doNewFolderCommand();
|
|
}
|
|
}
|
|
);
|
|
|
|
tree = new TMTreeNodeTree();
|
|
tree.setCellRenderer(new FolderCellRenderer());
|
|
scrollPane = new JScrollPane(tree);
|
|
|
|
JPanel p = new JPanel();
|
|
GridBagLayout gbl = new GridBagLayout();
|
|
p.setLayout(gbl);
|
|
GridBagConstraints gbc = new GridBagConstraints();
|
|
gbc.anchor = GridBagConstraints.WEST;
|
|
gbc.fill = GridBagConstraints.NONE;
|
|
buildConstraints(gbc, 0, 0, 1, 1, 25, 10);
|
|
gbl.setConstraints(descLabel, gbc);
|
|
p.add(descLabel);
|
|
gbc.fill = GridBagConstraints.HORIZONTAL;
|
|
buildConstraints(gbc, 1, 0, 1, 1, 75, 10);
|
|
gbl.setConstraints(descField, gbc);
|
|
p.add(descField);
|
|
gbc.fill = GridBagConstraints.NONE;
|
|
buildConstraints(gbc, 0, 1, 1, 1, 25, 10);
|
|
gbl.setConstraints(createInLabel, gbc);
|
|
p.add(createInLabel);
|
|
gbc.anchor = GridBagConstraints.EAST;
|
|
buildConstraints(gbc, 1, 1, 1, 1, 75, 10);
|
|
gbl.setConstraints(newFolderButton, gbc);
|
|
p.add(newFolderButton);
|
|
gbc.anchor = GridBagConstraints.CENTER;
|
|
gbc.fill = GridBagConstraints.BOTH;
|
|
buildConstraints(gbc, 0, 2, 2, 1, 80, 80);
|
|
gbl.setConstraints(scrollPane, gbc);
|
|
p.add(scrollPane);
|
|
|
|
p.setPreferredSize(new Dimension(300, 200));
|
|
return p;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* Prompts the user for a folder name, then inserts a folder node with that name
|
|
* as a subfolder of the currently selected node in the tree.
|
|
*
|
|
**/
|
|
|
|
public void doNewFolderCommand() {
|
|
newFolderDialog.setName(""); // clear previous input, if any
|
|
int retVal = newFolderDialog.showDialog(); // prompt user for folder name
|
|
if (retVal == JOptionPane.OK_OPTION) {
|
|
// create & insert the folder
|
|
String name = newFolderDialog.getName();
|
|
FolderNode folder = (FolderNode)tree.getSelectedNode();
|
|
FolderNode newFolder = new FolderNode(name);
|
|
folder.add(newFolder);
|
|
((DefaultTreeModel)tree.getModel()).reload(folder);
|
|
tree.expandNode(newFolder);
|
|
tree.setSelectionPath(new TreePath(newFolder.getPath()));
|
|
scrollPane.revalidate();
|
|
}
|
|
}
|
|
|
|
/**
|
|
*
|
|
* Gets the folder where the new item is to be inserted.
|
|
*
|
|
**/
|
|
|
|
public FolderNode getFolder() {
|
|
return (FolderNode)tree.getSelectedNode();
|
|
}
|
|
|
|
/**
|
|
*
|
|
* Gets the description that the user entered for the item.
|
|
*
|
|
**/
|
|
|
|
public String getDescription() {
|
|
return descField.getText();
|
|
}
|
|
|
|
/**
|
|
*
|
|
*
|
|
*
|
|
**/
|
|
|
|
private class FolderCellRenderer extends DefaultTreeCellRenderer {
|
|
|
|
public FolderCellRenderer() {
|
|
super();
|
|
setLeafIcon(openIcon);
|
|
}
|
|
}
|
|
|
|
/**
|
|
*
|
|
*
|
|
*
|
|
**/
|
|
|
|
public int showDialog(TMTreeNode root) {
|
|
tree.loadTreeNodes(root, false);
|
|
descField.setText("");
|
|
maybeEnableOKButton();
|
|
SwingUtilities.invokeLater( new Runnable() {
|
|
public void run() {
|
|
descField.requestFocus();
|
|
}
|
|
});
|
|
return super.showDialog();
|
|
}
|
|
|
|
/**
|
|
*
|
|
*
|
|
*
|
|
**/
|
|
|
|
public boolean inputOK() {
|
|
return !(descField.getText().trim().equals(""));
|
|
}
|
|
|
|
} |