//------------------------------------------------------------------------------
// Copyright (c) 2005, 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 Corporation - initial implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.publishing.ui.actions;

import org.eclipse.jface.action.Action;
import org.eclipse.jface.resource.ImageDescriptor;

/**
 * define the Publish action
 * 
 * @author Jinhua Xi
 * @since 1.0
 */
public class PublishAction extends Action {
	private String id;
	
	/**
	 * create a PublishAction instance
	 * 
	 * @param id String the id of the action
	 * @param name String the name of the action
	 * @param image ImageDescriptor the image descriptor for the action icon
	 */
	public PublishAction(String id,  String name, ImageDescriptor image) {
		super(name, image);	
		this.id = id;
	}
	
	/**
	 * get the id of the action
	 * @return String
	 */
	public String getId() {
		return id;
	}
	
	/**
	 * execute the action.
	 */
	public void run() {
		new Publish().run(this);
	}
}
