package krasa.mavenrun.analyzer.action;
import org.jetbrains.idea.maven.dom.model.MavenDomDependencies;
import org.jetbrains.idea.maven.dom.model.MavenDomDependency;
import org.jetbrains.idea.maven.dom.model.MavenDomProjectModel;
import org.jetbrains.idea.maven.model.MavenArtifactNode;
import org.jetbrains.idea.maven.project.MavenProject;
import com.intellij.notification.Notification;
import com.intellij.notification.NotificationType;
import com.intellij.notification.Notifications;
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.command.CommandProcessor;
import com.intellij.openapi.project.Project;
import com.intellij.util.xml.DomFileElement;
/**
* @author Vojtech Krasa
*/
public class RemoveDependencyAction extends BaseAction {
public RemoveDependencyAction(Project project, MavenProject mavenProject, MavenArtifactNode myTreeNode) {
super(project, mavenProject, myTreeNode, "Remove");
}
private void exclude() {
DomFileElement domFileElement = getDomFileElement(mavenArtifactNode);
if (domFileElement != null) {
final MavenDomProjectModel rootElement = (MavenDomProjectModel) domFileElement.getRootElement();
final MavenDomDependencies dependencies = rootElement.getDependencies();
boolean found = false;
for (MavenDomDependency mavenDomDependency : dependencies.getDependencies()) {
if (isSameDependency(mavenArtifactNode.getArtifact(), mavenDomDependency)) {
found = true;
mavenDomDependency.undefine();
dependencyDeleted();
}
}
if (!found) {
final Notification notification = new Notification(MAVEN_HELPER_DEPENDENCY_ANALYZER_NOTIFICATION, "",
"Parent dependency not found, it is probably in parent pom", NotificationType.WARNING);
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override
public void run() {
Notifications.Bus.notify(notification, project);
}
});
}
}
}
@Override
public void actionPerformed(AnActionEvent e) {
// CommandProcessor for undo and formatting
CommandProcessor.getInstance().executeCommand(project, new Runnable() {
public void run() {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
public void run() {
exclude();
}
});
}
}, "Remove", "MavenRunHelper");
}
public void dependencyDeleted() {
}
}