/******************************************************************************* * Copyright (c) 2010 BestSolution.at and others. * 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: * Tom Schindl <tom.schindl@bestsolution.at> - initial API and implementation ******************************************************************************/ package org.eclipse.e4.tools.emf.editor3x; import org.eclipse.e4.tools.compat.parts.DIEditorPart; import org.eclipse.e4.tools.emf.ui.common.IModelResource.ModelListener; import org.eclipse.e4.tools.emf.ui.internal.wbm.ApplicationModelEditor; import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.IWorkbenchCommandConstants; import org.eclipse.ui.actions.ActionFactory; @SuppressWarnings("restriction") public class E4WorkbenchModelEditor extends DIEditorPart<ApplicationModelEditor> { private UndoAction undoAction; private RedoAction redoAction; private ModelListener listener = new ModelListener() { public void dirtyChanged() { firePropertyChange(PROP_DIRTY); } public void commandStackChanged() { } }; public E4WorkbenchModelEditor() { super(ApplicationModelEditor.class, COPY|CUT|PASTE); } @Override public void createPartControl(Composite parent) { super.createPartControl(parent); setPartName(getEditorInput().getName()); } protected void makeActions() { super.makeActions(); undoAction = new UndoAction(getComponent().getModelProvider()); undoAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_UNDO); redoAction = new RedoAction(getComponent().getModelProvider()); redoAction.setActionDefinitionId(IWorkbenchCommandConstants.EDIT_REDO); getEditorSite().getActionBars().setGlobalActionHandler( ActionFactory.UNDO.getId(), undoAction); getEditorSite().getActionBars().setGlobalActionHandler( ActionFactory.REDO.getId(), redoAction); } @Override public void dispose() { if (undoAction != null) undoAction.dispose(); if (redoAction != null) redoAction.dispose(); if (listener != null && getComponent().getModelProvider() != null) getComponent().getModelProvider().removeModelListener(listener); super.dispose(); } }