/******************************************************************************* | |
* <copyright> | |
* | |
* Copyright (c) 2013, 2013 SAP AG. | |
* 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: | |
* SAP AG - initial API, implementation and documentation | |
* | |
* </copyright> | |
* | |
*******************************************************************************/ | |
package org.eclipse.fmc.blockdiagram.editor.features; | |
import org.eclipse.graphiti.features.IFeatureProvider; | |
import org.eclipse.graphiti.features.IRemoveFeature; | |
import org.eclipse.graphiti.features.context.IDeleteContext; | |
import org.eclipse.graphiti.features.context.IMultiDeleteInfo; | |
import org.eclipse.graphiti.features.context.IRemoveContext; | |
import org.eclipse.graphiti.features.context.impl.RemoveContext; | |
import org.eclipse.graphiti.features.impl.DefaultRemoveFeature; | |
import org.eclipse.graphiti.mm.pictograms.Diagram; | |
import org.eclipse.graphiti.mm.pictograms.PictogramElement; | |
import org.eclipse.graphiti.ui.features.DefaultDeleteFeature; | |
/** | |
* This class extends the DefaultDeleteFeature and skips the delete dialog. | |
* | |
* @author Benjamin Schmeling | |
* | |
*/ | |
public class DontAskWhenDeleteFeature extends DefaultDeleteFeature { | |
/** | |
* Dirty flag for | |
*/ | |
private boolean dirty; | |
/** | |
* Main constructor. | |
* | |
* @param featureProvider The feature provider. | |
*/ | |
public DontAskWhenDeleteFeature(IFeatureProvider featureProvider) { | |
super(featureProvider); | |
} | |
/* | |
* (non-Javadoc) | |
* | |
* @see | |
* org.eclipse.graphiti.ui.features.DefaultDeleteFeature#canDelete(org.eclipse | |
* .graphiti.features.context.IDeleteContext) | |
*/ | |
@Override | |
public boolean canDelete(IDeleteContext context) { | |
return !(context.getPictogramElement() instanceof Diagram); | |
} | |
/* | |
* (non-Javadoc) | |
* | |
* @see | |
* org.eclipse.graphiti.ui.features.DefaultDeleteFeature#delete(org.eclipse | |
* .graphiti.features.context.IDeleteContext) | |
*/ | |
@Override | |
public void delete(IDeleteContext context) { | |
IMultiDeleteInfo multiDeleteInfo = context.getMultiDeleteInfo(); | |
if (multiDeleteInfo != null && multiDeleteInfo.isDeleteCanceled()) { | |
return; | |
} | |
PictogramElement pe = context.getPictogramElement(); | |
Object[] businessObjectsForPictogramElement = getAllBusinessObjectsForPictogramElement(pe); | |
if (businessObjectsForPictogramElement != null | |
&& businessObjectsForPictogramElement.length > 0) { | |
if (multiDeleteInfo == null) { | |
if (!getUserDecision(context)) { | |
return; | |
} | |
} else { | |
if (multiDeleteInfo.isShowDialog()) { | |
boolean okPressed = getUserDecision(context); | |
if (okPressed) { | |
// don't show further dialogs | |
multiDeleteInfo.setShowDialog(false); | |
} else { | |
multiDeleteInfo.setDeleteCanceled(true); | |
return; | |
} | |
} | |
} | |
} | |
this.dirty = true; | |
preDelete(context); | |
IRemoveContext rc = new RemoveContext(pe); | |
IFeatureProvider featureProvider = getFeatureProvider(); | |
IRemoveFeature removeFeature = new DefaultRemoveFeature(featureProvider); | |
if (removeFeature != null) { | |
removeFeature.remove(rc); | |
} | |
deleteBusinessObjects(businessObjectsForPictogramElement); | |
postDelete(context); | |
} | |
/* | |
* (non-Javadoc) | |
* | |
* @see | |
* org.eclipse.graphiti.ui.features.DefaultDeleteFeature#hasDoneChanges() | |
*/ | |
@Override | |
public boolean hasDoneChanges() { | |
return dirty; | |
} | |
/* | |
* (non-Javadoc) | |
* @see org.eclipse.graphiti.ui.features.DefaultDeleteFeature#setDoneChanges(boolean) | |
*/ | |
@Override | |
protected void setDoneChanges(boolean doneChanges) { | |
this.dirty = doneChanges; | |
} | |
/* | |
* (non-Javadoc) | |
* | |
* @see | |
* org.eclipse.graphiti.ui.features.DefaultDeleteFeature#getUserDecision | |
* (org.eclipse.graphiti.features.context.IDeleteContext) | |
*/ | |
@Override | |
protected boolean getUserDecision(IDeleteContext context) { | |
return true; | |
} | |
} |