/* * Created on 2006-09-06 * * TODO To change the template for this generated file go to * Window - Preferences - Java - Code Style - Code Templates */ package net.ms.designer.editors.packages.commands; import java.io.File; import java.util.List; import net.ms.designer.core.MsContext; import net.ms.designer.core.MsElement; import net.ms.designer.core.MsProject; import net.ms.designer.editors.packages.models.Package; import net.ms.designer.editors.packages.models.PackageDiagram; import net.ms.designer.editors.packages.ui.PackageEditor; import net.ms.designer.editors.packages.ui.WriteToProjectXML; import org.eclipse.gef.commands.Command; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.ui.internal.UIPlugin; /** * @author mashuai * * TODO To change the template for this generated type comment go to * Window - Preferences - Java - Code Style - Code Templates */ public class DeleteNodeCommand extends Command { private PackageDiagram diagram; private Package node; private int index; public void setDiagram(PackageDiagram diagram) { this.diagram = diagram; } public void setNode(Package node) { this.node = node; } //------------------------------------------------------------------------ // Overridden from Command public void execute() { PackageEditor editor = (PackageEditor)UIPlugin.getDefault() .getWorkbench().getActiveWorkbenchWindow() .getActivePage().getActiveEditor(); MsProject project = editor.getProject(); MsContext context = editor.getContext(); if(context.getElement("component" + "_" + node.getName()).getChildren().size() != 0) { boolean flag = MessageDialog.openQuestion(UIPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow() .getShell() , "Information" , "There are components in this package . Do you want to continue ?" ); if(!flag) { return; } } index=diagram.getNodes().indexOf(node); diagram.removeNode(node); String path = project.getConfigPath(); path = path + "project.xml"; WriteToProjectXML writor = new WriteToProjectXML(); try { writor.doDelete(path,"package",node.getName()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } MsElement child = context.getElement("component" + "_" + node.getName()); // first , deleting the children elements , and the xml files List children = child.getChildren(); for(int i = 0 ; i < children.size() ; i++) { MsElement tmp = (MsElement)children.get(i); File file = new File(project.getConfigPath() + tmp.getId() + ".xml"); file.delete(); child.removeChild(tmp); } MsElement parent = child.getParent(); parent.removeChild(child); context.removeElement("component" + "_" + node.getName()); } public String getLabel() { return "Delete Node"; } public void redo() { execute(); } public void undo() { diagram.addNode(node); } }