All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.ui.cheatsheets.OpenCheatSheetAction Maven / Gradle / Ivy

The newest version!
/*******************************************************************************
 * Copyright (c) 2004, 2007 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 API and implementation
 *******************************************************************************/
package org.eclipse.ui.cheatsheets;

import java.net.URL;

// RAP [if] Help system not supported
//import org.eclipse.help.ui.internal.views.HelpTray;
//import org.eclipse.help.ui.internal.views.IHelpPartPage;
//import org.eclipse.help.ui.internal.views.ReusableHelpPart;
import org.eclipse.jface.action.Action;
//import org.eclipse.jface.dialogs.TrayDialog;
//import org.eclipse.swt.widgets.Display;
//import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.IWorkbenchPage;
//import org.eclipse.ui.internal.cheatsheets.registry.CheatSheetElement;
//import org.eclipse.ui.internal.cheatsheets.registry.CheatSheetRegistryReader;
//import org.eclipse.ui.internal.cheatsheets.state.DefaultStateManager;
//import org.eclipse.ui.internal.cheatsheets.views.CheatSheetHelpPart;
import org.eclipse.ui.internal.cheatsheets.views.CheatSheetView;
import org.eclipse.ui.internal.cheatsheets.views.ViewUtilities;

/**
 * Action for opening a cheat sheet. The cheat sheet can be specified
 * either by a cheat sheet id or by a URL of a cheat sheet content file.
 *
 * @since 3.0
 * @noextend This class is not intended to be subclassed by clients.
 */
public final class OpenCheatSheetAction extends Action {
	private String id;
	private String name;
	private URL url;
	private String xml;
	private String basePath;

	/**
	 * Creates an action that opens the cheat sheet with the given id.
	 * The cheat sheet content file is located via the
	 * org.eclipse.ui.cheatsheets.cheatSheetContent
	 * extension point.
	 *
	 * @param id the cheat sheet id
	 * @exception IllegalArgumentException if id
	 * is null
	 */
	public OpenCheatSheetAction(String id) {
		if (id == null) {
			throw new IllegalArgumentException();
		}
		this.id = id;
	}

	/**
	 * Creates an action that opens the cheat sheet with the
	 * given cheat sheet content file.
	 *
	 * @param id the id to give this cheat sheet
	 * @param name the name to give this cheat sheet
	 * @param url URL of the cheat sheet content file
	 * @exception IllegalArgumentException if the parameters
	 * are null
	 */
	public OpenCheatSheetAction(String id, String name, URL url) {
		if (id == null || name == null || url == null) {
			throw new IllegalArgumentException();
		}
		this.id = id;
		this.name = name;
		this.url = url;
	}

	/**
	 * Creates an action that opens a cheat sheet using
	 * XML passed in as a string.
	 *
	 * @param id the id to give this cheat sheet
	 * @param name the name to give this cheat sheet
	 * @param xml the cheatsheet content in xml format
	 * @param baseURL is a URL which is only required if the cheat sheet is
	 * a composite cheat sheet which has tasks which use path parameters in which
	 * case the paths will be relative to baseURL. May be null
	 * if this is not a composite cheat sheet
	 * @exception IllegalArgumentException if the parameters
	 * are null
	 * @since 3.3
	 */
	public OpenCheatSheetAction(String id, String name, String xml, URL baseURL) {
		if (id == null || name == null || xml == null) {
			throw new IllegalArgumentException();
		}
		this.id = id;
		this.name = name;
		this.xml = xml;
		if (baseURL !=null) {
			basePath = baseURL.toExternalForm();
		}
	}


	/* (non-javadoc)
	 * This action will try to launch the cheat sheet view and populate
	 * it with the content specified either in the URL or the content
	 * file specified in the cheatsheetContent extension point
	 * for the cheat sheet with the id passed to this action.
	 * @see IAction#run()
	 */
	public void run() {
// RAP [if] Help system not supported
//		Shell shell = Display.getDefault().getActiveShell();
//		// are we in a dialog that can show a cheat sheet?
//		if (shell != null && !shell.isFocusControl() && shell.getData() instanceof TrayDialog) {
//			TrayDialog dialog = (TrayDialog)shell.getData();
//			HelpTray tray = (HelpTray)dialog.getTray();
//			if (tray == null) {
//				tray = new HelpTray();
//				dialog.openTray(tray);
//			}
//			ReusableHelpPart helpPart = tray.getHelpPart();
//			IHelpPartPage page = helpPart.createPage(CheatSheetHelpPart.ID, null, null);
//			page.setVerticalSpacing(0);
//			page.setHorizontalMargin(0);
//			CheatSheetElement contentElement = CheatSheetRegistryReader.getInstance().findCheatSheet(id);
//			helpPart.addPart(CheatSheetHelpPart.ID, new CheatSheetHelpPart(helpPart.getForm().getForm().getBody(), helpPart.getForm().getToolkit(), page.getToolBarManager(), contentElement, new DefaultStateManager()));
//			page.addPart(CheatSheetHelpPart.ID, true);
//			helpPart.addPage(page);
//			helpPart.showPage(CheatSheetHelpPart.ID);
//		}
//		else {
			CheatSheetView view = ViewUtilities.showCheatSheetView();
			if (view == null) {
				return;
			}
			// Depending on which constructor was used open the cheat sheet view from a
			// URL, an XML string or based on the id
			if(url != null) {
				view.setInput(id, name, url);
			} else if (xml != null) {
				view.setInputFromXml(id, name, xml, basePath);
			} else {
				view.setInput(id);
			}
			IWorkbenchPage page = view.getSite().getWorkbenchWindow().getActivePage();
			page.bringToTop(view);
//		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy