/*******************************************************************************
 * Copyright (c) 2000, 2003 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials 
 * are made available under the terms of the Common Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/cpl-v10.html
 * 
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.ui.examples.readmetool;

import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.ui.IEditorActionDelegate;
import org.eclipse.ui.IEditorPart;

/**
 * This class is used to demonstrate editor action extensions.
 * An extension should be defined in the readme plugin.xml.
 */
public class EditorActionDelegate implements IEditorActionDelegate {
	private IEditorPart editor;
/**
 * Creates a new EditorActionDelegate.
 */
public EditorActionDelegate() {
}
/* (non-Javadoc)
 * Method declared on IActionDelegate
 */
public void run(IAction action) {
	MessageDialog.openInformation(editor.getSite().getShell(),
		MessageUtil.getString("Readme_Editor"),  //$NON-NLS-1$
		MessageUtil.getString("Editor_Action_executed")); //$NON-NLS-1$
}
/** 
 * The <code>EditorActionDelegate</code> implementation of this
 * <code>IActionDelegate</code> method 
 *
 * Selection in the desktop has changed. Plugin provider
 * can use it to change the availability of the action
 * or to modify other presentation properties.
 *
 * <p>Action delegate cannot be notified about
 * selection changes before it is loaded. For that reason,
 * control of action's enable state should also be performed
 * through simple XML rules defined for the extension
 * point. These rules allow enable state control before
 * the delegate has been loaded.</p>
 */
public void selectionChanged(IAction action, ISelection selection) {
}
/** 
 * The <code>EditorActionDelegate</code> implementation of this
 * <code>IEditorActionDelegate</code> method 
 *
 * The matching editor has been activated. Notification
 * guarantees that only editors that match the type for which 
 * this action has been registered will be tracked.
 *
 * @param action action proxy that represents this delegate in the desktop
 * @param editor the matching editor that has been activated
 */
public void setActiveEditor(IAction action, IEditorPart editor) {
	this.editor = editor;
}
}
