blob: f6be793bb1e81e32e7bc899083b23d102b846cfb [file] [log] [blame]
/*******************************************************************************
* <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;
}
}