package at.bestsolution.e4.addressbook.ui.undo;
import java.util.HashMap;
import org.eclipse.e4.core.contexts.ContextFunction;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.emf.common.command.BasicCommandStack;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.domain.EditingDomain;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
@SuppressWarnings("restriction")
public class EditingDomainFunction extends ContextFunction {
@Override
public Object compute(IEclipseContext arg0) {
IEclipseContext context = arg0.get(MApplication.class).getContext();
EditingDomain domain = context.get(AdapterFactoryEditingDomain.class);
if( domain == null ) {
ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE);
BasicCommandStack commandStack = new BasicCommandStack();
domain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>());
context.set(AdapterFactoryEditingDomain.class, (AdapterFactoryEditingDomain)domain);
}
return domain;
}
}