blob: d132e02352b9cb5d4daea822c332797f917e4946 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005, 2012 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.bpel.ui.commands;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import org.eclipse.bpel.ui.commands.util.AutoUndoCommand;
import org.eclipse.bpel.ui.util.ModelHelper;
import org.eclipse.wst.wsdl.Definition;
import org.eclipse.wst.wsdl.ExtensibilityElement;
/**
* Deletes an ExtensibilityElement from its enclosing WSDL resource.
*
* Also runs a DeleteNonContainmentRefsCommand using the WSDL resource and
* the BPEL resource as model roots.
*/
public abstract class DeleteWSDLExtensibilityElementCommand extends AutoUndoCommand {
Definition fDefinition;
ExtensibilityElement fElement;
DeleteNonContainmentRefsCommand deleteRefsCmd;
/**
* @return the default label
*/
public abstract String getDefaultLabel();
/**
*
* @param element
*/
public DeleteWSDLExtensibilityElementCommand(ExtensibilityElement element) {
super(new ArrayList<Object>(1));
this.fElement = element;
setLabel(getDefaultLabel());
addModelRoot(element.getEnclosingDefinition());
}
/**
* @see org.eclipse.bpel.ui.commands.util.AutoUndoCommand#canDoExecute()
*/
@Override
public boolean canDoExecute() {
if (fElement.getEnclosingDefinition() == null) return false;
return super.canDoExecute();
}
/**
* @see org.eclipse.bpel.ui.commands.util.AutoUndoCommand#doExecute()
*/
@Override
public void doExecute() {
fDefinition = fElement.getEnclosingDefinition();
Set<Object> modelRootSet = new HashSet<Object>();
modelRootSet.add(fElement.eResource());
modelRootSet.add(ModelHelper.getBPELEditor(fElement).getResource());
deleteRefsCmd = new DeleteNonContainmentRefsCommand(Collections.singleton((Object) fElement), modelRootSet);
fElement.setEnclosingDefinition(null);
fDefinition.getEExtensibilityElements().remove(fElement);
deleteRefsCmd.execute();
}
}