blob: 8517bca0bb6cb7e7fcbc4282005d496b4b06b05c [file] [log] [blame]
package org.eclipse.e4.tools.emf.editor3x;
import org.eclipse.e4.core.contexts.ContextFunction;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.tools.emf.editor3x.emf.EditUIUtil;
import org.eclipse.e4.tools.emf.ui.common.IModelResource.ModelListener;
import org.eclipse.e4.tools.emf.ui.common.XMIModelResource;
import org.eclipse.e4.tools.services.IDirtyProviderService;
import org.eclipse.emf.common.util.URI;
import org.eclipse.ui.IEditorInput;
public class XMIResourceFunction extends ContextFunction {
@Override
public Object compute(final IEclipseContext context, String contextKey) {
final IEditorInput input = context.get(IEditorInput.class);
final IDirtyProviderService dirtyProvider = context.get(IDirtyProviderService.class);
if (input != null) {
final URI resourceURI = EditUIUtil.getURI(input);
final XMIModelResource resource = new XMIModelResource(resourceURI);
resource.addModelListener(new ModelListener() {
@Override
public void dirtyChanged() {
dirtyProvider.setDirtyState(resource.isDirty());
}
@Override
public void commandStackChanged() {
}
});
return resource;
}
return null;
}
}