class DBOverviewContextMenu extends JPopupMenu
{
private JMenuItem mNewFolder, mNewProject, mChangeName;
public DBOverviewContextMenu()
{
super();
mNewFolder = new JMenuItem("Neuer Ordner");
mNewProject = new JMenuItem("Neues Projekt");
mChangeName = new JMenuItem("Name ändern");
this.add(mNewFolder);
this.add(mNewProject);
this.addSeparator();
this.add(mChangeName);
ActionListener tPopupAction = new ActionListener()
{
public void actionPerformed(ActionEvent pAE)
{
TreePath tCurrentPath = mTreeView.getSelectionPath();
if(pAE.getActionCommand().equals("Name ändern")) {
if(tCurrentPath!=null) mTreeView.startEditingAtPath(tCurrentPath);
}
else {
if(tCurrentPath!=null) {
DefaultMutableTreeNode tInsertionNode = (DefaultMutableTreeNode)tCurrentPath.getLastPathComponent();
int tParent;
if(tInsertionNode.getUserObject() instanceof String) tParent = 0;
else if(tInsertionNode.getUserObject() instanceof UMLFolder) tParent = ((UMLFolder)tInsertionNode.getUserObject()).getKey();
else return;
UMLAdvancedElement tNewElement = null;
if(pAE.getActionCommand().equals("Neuer Ordner")) tNewElement = new UMLFolder("", tParent);
else tNewElement = new UMLProject("", tParent);
if(tNewElement==null) return;
DefaultMutableTreeNode tNewChild = new DefaultMutableTreeNode(tNewElement);
mTreeModel.insertNodeInto(tNewChild, tInsertionNode, tInsertionNode.getChildCount());
tCurrentPath = tCurrentPath.pathByAddingChild(tNewChild);
if(tCurrentPath!=null) {
mTreeView.setSelectionPath(tCurrentPath);
mTreeView.startEditingAtPath(tCurrentPath);
}
}
}
}
};
mNewFolder.addActionListener(tPopupAction);
mNewProject.addActionListener(tPopupAction);
mChangeName.addActionListener(tPopupAction);
}
public void showMenu()
{
TreePath tPath = mTreeView.getSelectionPath();
if(tPath==null) return;
mNewFolder.setEnabled(true);
mNewProject.setEnabled(true);
mChangeName.setEnabled(true);
Object tSelectedObject = ((DefaultMutableTreeNode)tPath.getLastPathComponent()).getUserObject();
if(tSelectedObject instanceof UMLProject) mNewFolder.setEnabled(false);
if(tSelectedObject instanceof UMLProject || tSelectedObject instanceof String) mNewProject.setEnabled(false);
if(tSelectedObject instanceof String) mChangeName.setEnabled(false);
this.setVisible(true);
}
}