blob: e3c72f53cbfdcedceb06588872bb51f2841b2fb4 [file] [log] [blame]
/*******************************************************************************
* <copyright>
*
* Copyright (c) 2005, 2010 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.graphiti.internal.command;
import org.eclipse.graphiti.features.IDirectEditingFeature;
import org.eclipse.graphiti.features.context.IDirectEditingContext;
import org.eclipse.graphiti.features.impl.AbstractDirectEditingFeature;
import org.eclipse.graphiti.func.IProposal;
import org.eclipse.graphiti.func.IProposalSupport;
/**
* The Class DirectEditingFeatureCommandWithContext.
*
* @noinstantiate This class is not intended to be instantiated by clients.
* @noextend This class is not intended to be subclassed by clients.
*/
public class DirectEditingFeatureCommandWithContext extends GenericFeatureCommandWithContext {
private String newValue;
private IProposal proposal;
/**
* Instantiates a new direct editing feature command with context.
*
* @param feature
* the feature
* @param context
* the context
* @param valueObject
* the value object
*/
public DirectEditingFeatureCommandWithContext(IDirectEditingFeature feature, IDirectEditingContext context, String valueObject,
IProposal proposal) {
super(feature, context);
setNewValue(valueObject);
setProposal(proposal);
}
private String getNewValue() {
return newValue;
}
private void setNewValue(String newValue) {
this.newValue = newValue;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.graphiti.internal.command.GenericFeatureCommandWithContext
* #execute()
*/
@Override
public boolean execute() {
boolean ret = false;
if (getFeature() instanceof IDirectEditingFeature && getContext() instanceof IDirectEditingContext) {
IDirectEditingFeature def = (IDirectEditingFeature) getFeature();
IDirectEditingContext dec = (IDirectEditingContext) getContext();
String initialValue = def.getInitialValue(dec);
if (initialValue == null) {
initialValue = ""; //$NON-NLS-1$
}
if (!initialValue.equals(getNewValue())) {
IProposalSupport proposalSupport = def.getProposalSupport();
if (proposalSupport == null) { // simple mode with
// strings as proposals
def.setValue(getNewValue(), dec);
} else {
proposalSupport.setValue(getNewValue(), getProposal(), dec);
}
ret = true;
// Notify the feature that there really are changes
if (getFeature() instanceof AbstractDirectEditingFeature) {
((AbstractDirectEditingFeature) getFeature()).setValueChanged();
}
}
}
return ret;
}
/**
* @return the proposal
*/
private IProposal getProposal() {
return proposal;
}
/**
* @param proposal
* the proposal to set
*/
private void setProposal(IProposal proposal) {
this.proposal = proposal;
}
}