/**
* Copyright (c) 2011 committers of YAKINDU 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:
* committers of YAKINDU - initial API and implementation
*
*/
package org.yakindu.sct.ui.editor.policies;
import org.eclipse.gef.editpolicies.SelectionEditPolicy;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.yakindu.sct.ui.editor.utils.HelpContextIds;
/**
* Adds context-sensitive help to the host <code>EditPart</code>.
*
* @see org.yakindu.sct.ui.editor.utils.HelpContextIds
*
* @author martin esser
*
*/
public class ContextSensitiveHelpPolicy extends SelectionEditPolicy {
// Duplicate of the internal constant used to register the help view as a UI
// extension.
// @see org.eclipse.help.ui.internalDefaulHelptUI#HELP_VIEW_ID
private final static String HELP_VIEW_ID = "org.eclipse.help.ui.HelpView";
private String helpContextId;
public ContextSensitiveHelpPolicy(String helpContextId) {
this.helpContextId = helpContextId;
}
@Override
protected void showSelection() {
if (isDynamicHelpViewShowing()) {
displayViewerHelpContext(helpContextId);
}
}
@Override
protected void hideSelection() {
if (isDynamicHelpViewShowing()) {
displayViewerHelpContext(HelpContextIds.SC_EDITOR_GRAPHICAL_VIEWER);
}
}
private void displayViewerHelpContext(String helpContextId) {
PlatformUI.getWorkbench().getHelpSystem()
.setHelp(getHost().getViewer().getControl(), helpContextId);
PlatformUI.getWorkbench().getHelpSystem().displayDynamicHelp();
}
public static boolean isDynamicHelpViewShowing() {
boolean open = false;
IWorkbenchWindow activeWindow = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow();
if (activeWindow != null) {
IWorkbenchPage activePage = activeWindow.getActivePage();
if (activePage != null) {
IViewPart view = activePage.findView(HELP_VIEW_ID);
if (view != null) {
open = true;
}
}
}
return open;
}
}