/*******************************************************************************
* Copyright (c) 2008, 2011 Obeo.
* 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:
* Obeo - initial API and implementation
*******************************************************************************/
package org.eclipse.emf.eef.runtime.impl.operation;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.emf.eef.runtime.context.PropertiesEditingContext;
import org.eclipse.emf.eef.runtime.context.impl.DomainPropertiesEditionContext;
import org.eclipse.emf.eef.runtime.impl.services.WizardOpeningPolicyProviderService;
import org.eclipse.emf.eef.runtime.ui.wizards.IWizardOpeningPolicy;
import org.eclipse.emf.eef.runtime.ui.wizards.PropertiesEditionWizard;
import org.eclipse.emf.transaction.TransactionalEditingDomain;
import org.eclipse.emf.workspace.AbstractEMFOperation;
/**
* @author glefur
*/
public class WizardEditingOperation extends AbstractEMFOperation {
protected PropertiesEditingContext editingContext;
/**
* @param domain
* @param label
*/
public WizardEditingOperation(DomainPropertiesEditionContext editingContext) {
super((TransactionalEditingDomain)editingContext.getEditingDomain(), "EEF Editing Operaiton");
this.editingContext = editingContext;
}
/**
* {@inheritDoc}
*
* @see org.eclipse.emf.workspace.AbstractEMFOperation#doExecute(org.eclipse.core.runtime.IProgressMonitor,
* org.eclipse.core.runtime.IAdaptable)
*/
protected IStatus doExecute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
PropertiesEditionWizard wizard = new PropertiesEditionWizard(editingContext,
editingContext.getAdapterFactory(), editingContext.getEObject());
IWizardOpeningPolicy wizardOpeningPolicy = WizardOpeningPolicyProviderService.provide(editingContext.getEObject());
boolean open = wizardOpeningPolicy.openWizard(editingContext, wizard);
if (open) {
return Status.OK_STATUS;
} else {
return Status.CANCEL_STATUS;
}
}
}