delete confirmation for dom tree view elements(IDEADEV-5071)
[fedora-idea.git] / dom / impl / src / com / intellij / util / xml / tree / actions / DeleteDomElement.java
blob8275aa4dff7e59da153f9245e8590a1e3b36deac
1 /*
2 * Copyright (c) 2000-2006 JetBrains s.r.o. All Rights Reserved.
3 */
5 package com.intellij.util.xml.tree.actions;
7 import com.intellij.openapi.actionSystem.AnActionEvent;
8 import com.intellij.openapi.application.ApplicationBundle;
9 import com.intellij.openapi.application.Result;
10 import com.intellij.openapi.command.WriteCommandAction;
11 import com.intellij.openapi.util.IconLoader;
12 import com.intellij.openapi.ui.Messages;
13 import com.intellij.ui.treeStructure.SimpleNode;
14 import com.intellij.util.xml.DomElement;
15 import com.intellij.util.xml.ElementPresentation;
16 import com.intellij.util.xml.tree.BaseDomElementNode;
17 import com.intellij.util.xml.tree.DomFileElementNode;
18 import com.intellij.util.xml.tree.DomModelTreeView;
20 /**
21 * User: Sergey.Vasiliev
23 public class DeleteDomElement extends BaseDomTreeAction {
25 public DeleteDomElement() {
28 public DeleteDomElement(final DomModelTreeView treeView) {
29 super(treeView);
32 public void actionPerformed(AnActionEvent e, DomModelTreeView treeView) {
33 final SimpleNode selectedNode = treeView.getTree().getSelectedNode();
35 if (selectedNode instanceof BaseDomElementNode) {
37 final DomElement domElement = ((BaseDomElementNode)selectedNode).getDomElement();
39 final int ret = Messages.showOkCancelDialog(getPresentationText(selectedNode) + "?", ApplicationBundle.message("action.remove"),
40 Messages.getQuestionIcon());
41 if (ret == 0) {
42 new WriteCommandAction(domElement.getManager().getProject(), domElement.getRoot().getFile()) {
43 protected void run(final Result result) throws Throwable {
44 domElement.undefine();
46 }.execute();
51 public void update(AnActionEvent e, DomModelTreeView treeView) {
52 final SimpleNode selectedNode = treeView.getTree().getSelectedNode();
54 if (selectedNode instanceof DomFileElementNode) {
55 e.getPresentation().setVisible(false);
56 return;
59 boolean enabled = false;
60 if (selectedNode instanceof BaseDomElementNode) {
61 final DomElement domElement = ((BaseDomElementNode)selectedNode).getDomElement();
62 if (domElement.isValid() && domElement.getXmlElement() != null && !domElement.equals(domElement.getRoot().getRootElement())) {
63 enabled = true;
67 e.getPresentation().setEnabled(enabled);
70 if (enabled) {
71 e.getPresentation().setText(getPresentationText(selectedNode));
73 else {
74 e.getPresentation().setText(ApplicationBundle.message("action.remove"));
77 e.getPresentation().setIcon(IconLoader.getIcon("/general/remove.png"));
80 private static String getPresentationText(final SimpleNode selectedNode) {
81 String removeString = ApplicationBundle.message("action.remove");
82 final ElementPresentation presentation = ((BaseDomElementNode)selectedNode).getDomElement().getPresentation();
83 removeString += " " + presentation.getTypeName() +
84 (presentation.getElementName() == null || presentation.getElementName().trim().length() == 0? "" : ": " + presentation.getElementName());
85 return removeString;