/** * <copyright> * * Copyright (c) 2002-2006 IBM Corporation 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: * IBM - Initial API and implementation * * </copyright> * * $Id: RedoAction.java,v 1.4 2006/12/28 06:50:05 marcelop Exp $ */ package org.eclipse.emf.examples.library.databinding; import org.eclipse.jface.action.Action; import org.eclipse.ui.IEditorPart; import org.eclipse.ui.IWorkbenchPart; import org.eclipse.emf.common.command.Command; import org.eclipse.emf.edit.domain.EditingDomain; import org.eclipse.emf.edit.domain.IEditingDomainProvider; /** * An redo action is implemented by using the {@link org.eclipse.emf.common.command.CommandStack}. */ public class RedoAction extends Action { protected EditingDomain domain; public RedoAction(EditingDomain domain) { super("Redo"); this.domain = domain; update(); } public RedoAction() { super("Redo"); } /** * This returns the action's domain. */ public EditingDomain getEditingDomain() { return domain; } /** * This sets the action's domain. */ public void setEditingDomain(EditingDomain domain) { this.domain = domain; } @Override public void run() { domain.getCommandStack().redo(); } public void update() { setEnabled(domain.getCommandStack().canRedo()); Command redoCommand = domain.getCommandStack().getRedoCommand(); if (redoCommand != null && redoCommand.getLabel() != null) { setText("Redo " + redoCommand.getLabel()); } else { setText("Redo"); } if (redoCommand != null && redoCommand.getDescription() != null) { setDescription("Redo " + redoCommand.getDescription()); } else { setDescription("Redo"); } } /** * @deprecated As of EMF 2.1.0, replaced by {@link #setActiveWorkbenchPart}. */ @Deprecated public void setActiveEditor(IEditorPart editorPart) { setActiveWorkbenchPart(editorPart); } /** * @since 2.1.0 */ public void setActiveWorkbenchPart(IWorkbenchPart workbenchPart) { if (workbenchPart instanceof IEditingDomainProvider) { domain = ((IEditingDomainProvider)workbenchPart).getEditingDomain(); } } }