/***********************************************************************************
* REQUIRED METHODS FOR INTERFACES
**********************************************************************************/
public void actionPerformed(ActionEvent e) {
AWorkspaceTreeNode targetNode = null;
if(e == null || getRootPopupMenu((Component) e.getSource()) == null) {
targetNode = WorkspaceController.getCurrentProject().getModel().getRoot();
}
else {
targetNode = getNodeFromActionEvent(e);
}
if(targetNode == null) {
return;
}
AWorkspaceProject project = WorkspaceController.getProject(targetNode);
int mode = WorkspaceNewFolderPanel.MODE_VIRTUAL_PHYSICAL;
if(targetNode instanceof IFileSystemRepresentation) {
mode = WorkspaceNewFolderPanel.MODE_VIRTUAL_ONLY;
}
WorkspaceNewFolderPanel dialog = new WorkspaceNewFolderPanel(mode , targetNode);
int response = JOptionPane.showConfirmDialog(UITools.getFrame(), dialog, TextUtils.getText("workspace.action.node.new.folder.dialog.title"), JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE);
if(response == JOptionPane.OK_OPTION) {
String value = dialog.getFolderName();
if(value == null || value.trim().length() <= 0) {
//WORKSPACE - ToDo: prepare message, or call this method (with error message) again?
return;
}
if(dialog.isLinkedFolder()) {
File path = new File(dialog.getLinkPath());
if (path != null) {
FolderLinkNode node = new FolderLinkNode();
node.setName(value);
URI uri = project.getRelativeURI(path.toURI());
if(uri == null) {
node.setPath(path.toURI());
}
else {
node.setPath(uri);
}
targetNode.getModel().addNodeTo(node, targetNode);
node.refresh();
}
}
else {
if(targetNode instanceof IFileSystemRepresentation) {
try {
WorkspaceController.getFileSystemMgr().createDirectory(value, ((IFileSystemRepresentation) targetNode).getFile());
}
catch (IOException e1) {
JOptionPane.showMessageDialog(UITools.getFrame(), e1.getMessage());
}
}
else {
FolderVirtualNode node = new FolderVirtualNode();
node.setName(value);
targetNode.getModel().addNodeTo(node, targetNode);
}
}
targetNode.refresh();
targetNode.getModel().requestSave();
}
}