/******************************************************************************* * Copyright (c) 2008 Olivier Moises * * 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: * Olivier Moises- initial API and implementation *******************************************************************************/ package org.eclipse.wazaabi.locationpaths.emft; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EStructuralFeature; import org.eclipse.emf.edit.command.SetCommand; import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.transaction.RecordingCommand; import org.eclipse.emf.transaction.TransactionalEditingDomain; public class PointersEvaluatorImpl extends org.eclipse.wazaabi.locationpaths.PointersEvaluatorImpl { public static final String FACTORY_ID = PointersEvaluatorImpl.class .getName(); protected void setFeature(final EObject target, final EStructuralFeature feature, final Object value) { EditingDomain tmpEditingDomain = AdapterFactoryEditingDomain .getEditingDomainFor(target); if (tmpEditingDomain == null && target.eResource() != null && target.eResource().getResourceSet() != null) tmpEditingDomain = TransactionalEditingDomain.Factory.INSTANCE .getEditingDomain(target.eResource().getResourceSet()); final EditingDomain editingDomain = tmpEditingDomain; if (editingDomain instanceof TransactionalEditingDomain) { editingDomain.getCommandStack().execute( new RecordingCommand( (TransactionalEditingDomain) editingDomain) { protected void doExecute() { PointersEvaluatorImpl.super.setFeature(target, feature, value); } }); } else if (editingDomain != null) { SetCommand setCommand = new SetCommand(editingDomain, target, feature, value); editingDomain.getCommandStack().execute(setCommand); } else super.setFeature(target, feature, value); } @Override public String getFactoryID() { return FACTORY_ID; } }