/*************************************************** * * cismet GmbH, Saarbruecken, Germany * * ... and it just works. * ****************************************************/ /* * TreeCommands.java * * Created on 30. August 2004, 13:40 */ package Sirius.navigator.ui.tree.editor; import Sirius.navigator.connection.*; import Sirius.navigator.method.*; import Sirius.navigator.plugin.interfaces.PluginMethod; import Sirius.navigator.plugin.ui.*; import Sirius.navigator.resource.*; import Sirius.navigator.types.treenode.*; import Sirius.navigator.ui.*; import Sirius.navigator.ui.tree.*; import Sirius.server.middleware.types.*; import Sirius.server.newuser.permission.PermissionHolder; import Sirius.server.newuser.permission.Policy; import org.apache.log4j.Logger; import java.awt.event.*; import javax.swing.*; import javax.swing.tree.*; /** * DOCUMENT ME! * * @author pascal * @version $Revision$, $Date$ */ public class TreeEditorMenu extends PluginMenu { //~ Constructors ----------------------------------------------------------- // Funktionalitaet wurde in MutablepopupMenu umgelagert // Diese Klasse kann gelöscht werden // private final MetaCatalogueTree metaCatalogueTree; // private final TreeNodeEditor treeNodeEditor; // private final ResourceManager resources; // private final Logger logger; /** * Creates a new instance of TreeCommands. * * @param mainWindow DOCUMENT ME! * @param metaCatalogueTree DOCUMENT ME! */ public TreeEditorMenu(final JFrame mainWindow, final MetaCatalogueTree metaCatalogueTree) { super(TreeEditorMenu.class.getName()); // // this.logger = Logger.getLogger(this.getClass()); // this.resources = ResourceManager.getManager(); // // this.metaCatalogueTree = metaCatalogueTree; // this.treeNodeEditor = new TreeNodeEditor(mainWindow, true); // // this.setText(ResourceManager.getManager().getString("tree.editor.menu.name")); // this.setIcon(ResourceManager.getManager().getIcon(ResourceManager.getManager().getString("tree.editor.menu.icon"))); // // Node node = metaCatalogueTree.getSelectedNode().getNode(); // if (node.getId() != -1 && node.getDynamicChildrenStatement() == null) { // //Kein dynamischer Knoten, keine dynamischen Kinder // this.addItem(new NewNodeMethod()); // this.addItem(new EditNodeMethod()); // this.addItem(new DeleteNodeMethod()); // this.addItem(new EditObjectMethod()); // } else if (node instanceof MetaObjectNode && node.getId() == -1) { // //DynamicObjectNode // // //EditObject // this.addItem(new EditObjectMethod()); // //DeleteObject // this.addItem(new DeleteObjectMethod()); // } else if (node instanceof MetaNode && node.getClassId() != -1) { // int classID = node.getClassId(); // String domain = node.getDomain(); // try { // this.addItem(new NewObjectMethod(classID, domain)); // } catch (Exception e) { // logger.error("Error when adding the NewObjectMethodMenuItem",e); // } // } // this.addItem(new ExploreSubTreeMethod()); } // protected class NewNodeMethod extends PluginMenuItem implements PluginMethod { // // public NewNodeMethod() { // super(MethodManager.PURE_NODE); // // this.pluginMethod = this; // // this.setText(ResourceManager.getManager().getString("tree.editor.menu.new.name")); // this.setIcon(ResourceManager.getManager().getIcon(ResourceManager.getManager().getString("tree.editor.menu.new.icon"))); // } // // public String getId() { // return this.getClass().getName(); // } // // public void invoke() throws Exception { // DefaultMetaTreeNode selectedNode = metaCatalogueTree.getSelectedNode(); // // if (logger.isDebugEnabled()) { // logger.debug("NewNodeMethod: creating new node as parent of " + selectedNode); // } // if (selectedNode != null && selectedNode.isPureNode()) { // String key = SessionManager.getSession().getUser().getUserGroup().getKey().toString(); // //Sirius.server.newuser.permission.Permission perm = SessionManager.getSession().getWritePermission(); // // if (selectedNode.getNode().getPermissions().hasPermission(key, PermissionHolder.WRITEPERMISSION)) { // // knoten aufklappen // if (!selectedNode.isLeaf() && !selectedNode.isExplored()) { // if (logger.isDebugEnabled()) { // logger.warn("NewNodeMethod: parent node is not explored"); // } // try { // metaCatalogueTree.expandPath(new TreePath(selectedNode.getPath())); // //selectedNode.explore(); // //((DefaultTreeModel)metaCatalogueTree.getModel()).nodeStructureChanged(selectedNode); // } catch (Exception exp) { // logger.error("could not explore node: " + selectedNode, exp); // } // } // // treeNodeEditor.setLocationRelativeTo(ComponentRegistry.getRegistry().getMainWindow()); // DefaultMetaTreeNode metaTreeNode = treeNodeEditor.createTreeNode(); // // if (metaTreeNode != null) { // metaTreeNode.setNew(true); // // damit beim Aufklappen nicht die explore methode aufgerufen wird // metaTreeNode.setExplored(true); // // // das endg\u00FCltige Hinzuf\u00FCgen erledigt der Attribut Editor // if (metaTreeNode.isObjectNode()) { // if (!ComponentRegistry.getRegistry().getAttributeEditor().isChanged()) { // MethodManager.getManager().addTreeNode(metaCatalogueTree, selectedNode, metaTreeNode); // // ComponentRegistry.getRegistry().showComponent(ComponentRegistry.ATTRIBUTE_EDITOR); // ComponentRegistry.getRegistry().getAttributeEditor().setTreeNode(metaTreeNode); // } else { // logger.warn("could not create new object node: edited object still unsaved"); // JOptionPane.showMessageDialog(ComponentRegistry.getRegistry().getMainWindow(), "<html><p>Es kann kein neues Objekt erstellt werden, da z.Z. ein anderes Objekt bearbeitet wird.</p><p>Speichern sie das bearbeitete Objekt und versuchen sie es erneut.</p></html>", "Neues Objekt", JOptionPane.INFORMATION_MESSAGE); // } // } else { // if (MethodManager.getManager().addNode(metaCatalogueTree, selectedNode, metaTreeNode)) { // MethodManager.getManager().addTreeNode(metaCatalogueTree, selectedNode, metaTreeNode); // metaTreeNode.setNew(false); // } else if (logger.isDebugEnabled()) { // logger.warn("addNode failed, omitting addTreeNode"); // } // } // } // } else { // logger.warn("no permission to create node"); // JOptionPane.showMessageDialog(ComponentRegistry.getRegistry().getMainWindow(), ResourceManager.getManager().getString("tree.editor.menu.new.nopermission"), ResourceManager.getManager().getString("tree.editor.menu.new.nopermission.title"), JOptionPane.WARNING_MESSAGE); // } // } else { // logger.warn("parent node '" + selectedNode + "' is no pure node"); // JOptionPane.showMessageDialog(ComponentRegistry.getRegistry().getMainWindow(), ResourceManager.getManager().getString("tree.editor.menu.new.nopurenode.1") + selectedNode + ResourceManager.getManager().getString("tree.editor.menu.new.nopurenode.2"), ResourceManager.getManager().getString("tree.editor.menu.new.nopurenode.title"), JOptionPane.WARNING_MESSAGE); // } // } // } // // // protected class NewObjectMethod extends PluginMenuItem implements PluginMethod { // // int classID = -1; // String domain = null; // MetaClass metaClass=null; // public NewObjectMethod(int classID, String domain) throws Exception { // super(MethodManager.PURE_NODE); // this.classID = classID; // this.domain = domain; // this.pluginMethod = this; // // metaClass = SessionManager.getProxy().getMetaClass(classID, domain); // // this.setText(ResourceManager.getManager().getString("tree.editor.menu.newobject.name")+ " ("+metaClass.getName()+")"); // this.setIcon(ResourceManager.getManager().getIcon(ResourceManager.getManager().getString("tree.editor.menu.newobject.icon"))); // this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK)); // } // // public String getId() { // return this.getClass().getName(); // } // // public void invoke() throws Exception { // DefaultMetaTreeNode selectedNode = metaCatalogueTree.getSelectedNode(); // if (metaClass.getPermissions().hasWritePermission(SessionManager.getSession().getUser().getUserGroup())){ // // MetaObject MetaObject=metaClass.getEmptyInstance(); // MetaObject.setStatus(MetaObject.NEW); // MetaObjectNode MetaObjectNode = new MetaObjectNode(-1, SessionManager.getSession().getUser().getDomain(), MetaObject, null, null, true, Policy.createWIKIPolicy(), -1, null, false); // DefaultMetaTreeNode metaTreeNode = new ObjectTreeNode(MetaObjectNode); // ComponentRegistry.getRegistry().showComponent(ComponentRegistry.ATTRIBUTE_EDITOR); // ComponentRegistry.getRegistry().getAttributeEditor().setTreeNode(metaTreeNode); // } // // } // } // // protected class EditNodeMethod extends PluginMenuItem implements PluginMethod { // // public EditNodeMethod() { // super(MethodManager.PURE_NODE + MethodManager.OBJECT_NODE + MethodManager.CLASS_NODE); // // this.pluginMethod = this; // // // XXX i18n // this.setText(ResourceManager.getManager().getString("Sirius.navigator.ui.tree.editor.TreeEditorMenu.EditNodeMethod.Text")); // this.setIcon(ResourceManager.getManager().getIcon(ResourceManager.getManager().getString("tree.editor.menu.edit.icon"))); // this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F2, 0)); // } // // public String getId() { // return this.getClass().getName(); // } // // public void invoke() throws Exception { // DefaultMetaTreeNode selectedNode = metaCatalogueTree.getSelectedNode(); // if (MethodManager.getManager().checkPermission(selectedNode.getNode(), PermissionHolder.WRITEPERMISSION)) { // if (selectedNode.getParent() != null && !(selectedNode.getParent() instanceof RootTreeNode)) { // treeNodeEditor.editTreeNode(selectedNode); // if (selectedNode.isChanged()) { // MethodManager.getManager().updateNode(metaCatalogueTree, (DefaultMetaTreeNode) selectedNode.getParent(), selectedNode); // // selectedNode.setChanged(false); // ((DefaultTreeModel) metaCatalogueTree.getModel()).nodeChanged(selectedNode); // } // } else { // logger.warn("can not rename top node " + selectedNode); // // XXX dialog ... // } // } else if (logger.isDebugEnabled()) { // logger.warn("insufficient permission to edit node " + selectedNode); // } // } // } // // protected class EditObjectMethod extends PluginMenuItem implements PluginMethod { // // public EditObjectMethod() { // super(MethodManager.OBJECT_NODE); // // this.pluginMethod = this; // // this.setText(ResourceManager.getManager().getString("tree.editor.menu.edit.object.name")); // this.setIcon(ResourceManager.getManager().getIcon(ResourceManager.getManager().getString("tree.editor.menu.edit.object.icon"))); // } // // public String getId() { // return this.getClass().getName(); // } // // public void invoke() throws Exception { // DefaultMetaTreeNode selectedNode = metaCatalogueTree.getSelectedNode(); // // MetaObjectNode mon = (MetaObjectNode) selectedNode.getNode(); //// SessionManager.getSession().getConnection().getMetaObject() // //// if() // if (MethodManager.getManager().checkPermission(mon, PermissionHolder.WRITEPERMISSION)) { // ComponentRegistry.getRegistry().showComponent(ComponentRegistry.ATTRIBUTE_EDITOR); // ComponentRegistry.getRegistry().getAttributeEditor().setTreeNode(selectedNode); // } else if (logger.isDebugEnabled()) { // logger.warn("insufficient permission to edit node " + selectedNode); // } // } // } // // protected class DeleteNodeMethod extends PluginMenuItem implements PluginMethod { // // public DeleteNodeMethod() { // super(MethodManager.PURE_NODE + MethodManager.CLASS_NODE + MethodManager.OBJECT_NODE); // // this.pluginMethod = this; // // this.setText(ResourceManager.getManager().getString("tree.editor.menu.delete.name")); // this.setIcon(ResourceManager.getManager().getIcon(ResourceManager.getManager().getString("tree.editor.menu.delete.icon"))); // } // // public String getId() { // return this.getClass().getName(); // } // // public void invoke() throws Exception { // DefaultMetaTreeNode selectedNode = metaCatalogueTree.getSelectedNode(); // if (selectedNode != null && selectedNode.isLeaf()) { // if (MethodManager.getManager().checkPermission(selectedNode.getNode(), PermissionHolder.WRITEPERMISSION)) { // MethodManager.getManager().deleteNode(metaCatalogueTree, selectedNode); // } else if (logger.isDebugEnabled()) { // logger.warn("insufficient permission to delete node: " + selectedNode); // } // } else { // logger.warn("can not delete node, node is no leaf: " + selectedNode); // JOptionPane.showMessageDialog(ComponentRegistry.getRegistry().getMainWindow(), "Dieser Knoten kann nicht gel\u00F6scht werden, da er noch Kindknoten enth\u00E4lt", "Dieser Knoten kann nicht gel\u00F6scht werden", JOptionPane.INFORMATION_MESSAGE); // } // } // } // // protected class DeleteObjectMethod extends PluginMenuItem implements PluginMethod { // //TODO es wird noch deleteNode aufgerufen // // public DeleteObjectMethod() { // super(MethodManager.OBJECT_NODE); // // this.pluginMethod = this; // // this.setText(ResourceManager.getManager().getString("tree.editor.menu.deleteobject.name")); // this.setIcon(ResourceManager.getManager().getIcon(ResourceManager.getManager().getString("tree.editor.menu.deleteobject.icon"))); // } // // public String getId() { // return this.getClass().getName(); // } // // public void invoke() throws Exception { // DefaultMetaTreeNode selectedNode = metaCatalogueTree.getSelectedNode(); // if (selectedNode != null && selectedNode.isLeaf()) { // if (MethodManager.getManager().checkPermission(selectedNode.getNode(), PermissionHolder.WRITEPERMISSION)) { // MethodManager.getManager().deleteNode(metaCatalogueTree, selectedNode); // } else if (logger.isDebugEnabled()) { // logger.warn("insufficient permission to delete node: " + selectedNode); // } // } else { // logger.warn("can not delete node, node is no leaf: " + selectedNode); // JOptionPane.showMessageDialog(ComponentRegistry.getRegistry().getMainWindow(), "Dieser Knoten kann nicht gel\u00F6scht werden, da er noch Kindknoten enth\u00E4lt", "Dieser Knoten kann nicht gel\u00F6scht werden", JOptionPane.INFORMATION_MESSAGE); // } // } // } // // protected class ExploreSubTreeMethod extends PluginMenuItem implements PluginMethod { // // public ExploreSubTreeMethod() { // super(Long.MAX_VALUE); // // this.pluginMethod = this; // // this.setText(ResourceManager.getManager().getString("tree.editor.menu.reload.name")); // this.setIcon(ResourceManager.getManager().getIcon(ResourceManager.getManager().getString("tree.editor.menu.reload.icon"))); // this.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0)); // } // // public String getId() { // return this.getClass().getName(); // } // // public void invoke() throws Exception { // // final TreePath selectionPath = metaCatalogueTree.getSelectionPath(); // RootTreeNode rootTreeNode = new RootTreeNode(SessionManager.getProxy().getRoots()); // // ((DefaultTreeModel) metaCatalogueTree.getModel()).setRoot(rootTreeNode); // ((DefaultTreeModel) metaCatalogueTree.getModel()).reload(); // // metaCatalogueTree.exploreSubtree(selectionPath); // } // } }