blob: 26e6f57c15c3dea8d3baa7eb5ef81322fc1b546b [file] [log] [blame]
/*******************************************************************************
* <copyright>
*
* Copyright (c) 2005, 2012 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
* mgorning - Bug 376572 - Generic context buttons name changeable via getName() method
* cbrand - Bug 385586 - Remove,Delete, Update Action (ContextMenu, ButtonPad etc.)
*
* </copyright>
*
*******************************************************************************/
package org.eclipse.graphiti.tb;
import org.eclipse.graphiti.features.IDeleteFeature;
import org.eclipse.graphiti.features.IFeature;
import org.eclipse.graphiti.features.IFeatureProvider;
import org.eclipse.graphiti.features.IRemoveFeature;
import org.eclipse.graphiti.features.IUpdateFeature;
import org.eclipse.graphiti.features.context.IContext;
import org.eclipse.graphiti.features.context.IDeleteContext;
import org.eclipse.graphiti.features.context.IRemoveContext;
import org.eclipse.graphiti.features.context.IUpdateContext;
import org.eclipse.graphiti.features.context.impl.DeleteContext;
import org.eclipse.graphiti.features.context.impl.RemoveContext;
import org.eclipse.graphiti.features.context.impl.UpdateContext;
import org.eclipse.graphiti.internal.Messages;
import org.eclipse.graphiti.mm.pictograms.PictogramElement;
import org.eclipse.graphiti.platform.IPlatformImageConstants;
/**
* The Class ContextEntryHelper comprises methods for creating and modifying
* context button entries.
*/
public class ContextEntryHelper {
/**
* Creates an default update context button entry.
*
* @param featureProvider
* the feature provider
* @param pe
* the pictogram element
* @return the created default update context button entry
*/
public static IContextButtonEntry createDefaultUpdateContextButton(IFeatureProvider featureProvider,
PictogramElement pe) {
final IUpdateContext updateContext = new UpdateContext(pe);
final IUpdateFeature updateFeature = featureProvider.getUpdateFeature(updateContext);
IContextButtonEntry ret = null;
if (checkFeatureAvalability(updateFeature, updateContext)) {
ret = new ContextButtonEntry(updateFeature, updateContext) {
@Override
public boolean canExecute() {
return super.canExecute() && updateFeature.updateNeeded(updateContext).toBoolean();
}
};
markAsUpdateContextEntry(ret);
}
return ret;
}
/**
* Creates an default remove context button entry.
*
* @param featureProvider
* the feature provider
* @param pe
* the pictogram element
* @return the created default remove context button entry
*/
public static IContextButtonEntry createDefaultRemoveContextButton(IFeatureProvider featureProvider,
PictogramElement pe) {
IRemoveContext removeContext = new RemoveContext(pe);
IRemoveFeature removeFeature = featureProvider.getRemoveFeature(removeContext);
IContextButtonEntry ret = null;
if (checkFeatureAvalability(removeFeature, removeContext)) {
ret = new ContextButtonEntry(removeFeature, removeContext);
markAsRemoveContextEntry(ret);
}
return ret;
}
/**
* Creates an default delete context button entry.
*
* @param featureProvider
* the feature provider
* @param pe
* the pictogram element
* @return the created default delete context button entry
*/
public static IContextButtonEntry createDefaultDeleteContextButton(IFeatureProvider featureProvider,
PictogramElement pe) {
IDeleteContext deleteContext = new DeleteContext(pe);
IDeleteFeature deleteFeature = featureProvider.getDeleteFeature(deleteContext);
IContextButtonEntry ret = null;
if (checkFeatureAvalability(deleteFeature, deleteContext)) {
ret = new ContextButtonEntry(deleteFeature, deleteContext);
markAsDeleteContextEntry(ret);
}
return ret;
}
/**
* Creates collapse button entry or expand button entry as indicated by
* parameter collapse.
*
* @param collapse
* creates a collapse button entry when true, otherwise a expand
* button entry
* @param customFeature
* the custom feature
* @param customContext
* the custom context
* @return the created collapse button
*/
public static IContextButtonEntry createCollapseContextButton(boolean collapse, IFeature customFeature,
IContext customContext) {
IContextButtonEntry ret = null;
ret = new ContextButtonEntry(customFeature, customContext);
if (collapse) {
ret.setText(Messages.ContextEntryHelper_10_xfld);
ret.setDescription(Messages.ContextEntryHelper_11_xfld);
ret.setIconId(IPlatformImageConstants.IMG_EDIT_COLLAPSE);
} else {
ret.setText(Messages.ContextEntryHelper_12_xfld);
ret.setDescription(Messages.ContextEntryHelper_13_xfld);
ret.setIconId(IPlatformImageConstants.IMG_EDIT_EXPAND);
}
return ret;
}
/**
* Marks the given context entry with update figure.
*
* @param entry
* the context entry
*/
public static void markAsUpdateContextEntry(IContextEntry entry) {
if (entry != null) {
setTextAndDescription(entry, Messages.ContextEntryHelper_0_xfld, Messages.ContextEntryHelper_1_xfld);
entry.setIconId(IPlatformImageConstants.IMG_EDIT_REFRESH);
}
}
/**
* Marks the given context entry with remove figure from diagram.
*
* @param entry
* the context entry
*/
public static void markAsRemoveContextEntry(IContextEntry entry) {
if (entry != null) {
setTextAndDescription(entry, Messages.ContextEntryHelper_2_xfld, Messages.ContextEntryHelper_3_xfld);
entry.setIconId(IPlatformImageConstants.IMG_EDIT_REMOVE);
}
}
/**
* Marks the given context entry with delete from model.
*
* @param entry
* the context entry
*/
public static void markAsDeleteContextEntry(IContextEntry entry) {
if (entry != null) {
setTextAndDescription(entry, Messages.ContextEntryHelper_4_xfld, Messages.ContextEntryHelper_5_xfld);
entry.setIconId(IPlatformImageConstants.IMG_EDIT_DELETE);
}
}
public static final String NAME = Messages.ContextEntryHelper_5_xfld;
/**
* Marks the given context entry with collapse or expand figure.
*
* @param entry
* the context entry
* @param collapse
* mark with collapse when true, otherwise with expand
*/
public static void markAsCollapseContextEntry(IContextEntry entry, boolean collapse) {
if (entry != null) {
if (collapse) {
entry.setText(Messages.ContextEntryHelper_6_xfld);
entry.setDescription(Messages.ContextEntryHelper_7_xfld);
entry.setIconId(IPlatformImageConstants.IMG_EDIT_COLLAPSE);
} else {
entry.setText(Messages.ContextEntryHelper_8_xfld);
entry.setDescription(Messages.ContextEntryHelper_9_xfld);
entry.setIconId(IPlatformImageConstants.IMG_EDIT_EXPAND);
}
}
}
private static void setTextAndDescription(IContextEntry entry, String defaultText, String defaultDescription) {
String entryText = defaultText;
String entryDescription = defaultDescription;
IFeature f = entry.getFeature();
if (f != null) {
if (f.getName() != null) {
entryText = f.getName();
}
if (f.getDescription() != null) {
entryDescription = f.getDescription();
}
}
entry.setText(entryText);
entry.setDescription(entryDescription);
}
private static boolean checkFeatureAvalability(IFeature feature, IContext context) {
return feature != null && feature.isAvailable(context);
}
}