/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.gui.workflow.editor; import org.eclipse.gef.GraphicalViewer; import org.eclipse.help.HelpSystem; import org.eclipse.help.IContext; import org.eclipse.help.IContextProvider; import org.eclipse.jface.viewers.IStructuredSelection; import de.rcenvironment.core.component.api.ComponentConstants; import de.rcenvironment.core.component.integration.ToolIntegrationConstants; import de.rcenvironment.core.component.integration.ToolIntegrationContextRegistry; import de.rcenvironment.core.component.workflow.model.api.WorkflowNode; import de.rcenvironment.core.gui.workflow.parts.ConnectionPart; import de.rcenvironment.core.gui.workflow.parts.WorkflowExecutionInformationPart; import de.rcenvironment.core.gui.workflow.parts.WorkflowLabelPart; import de.rcenvironment.core.gui.workflow.parts.WorkflowNodePart; import de.rcenvironment.core.gui.workflow.parts.WorkflowPart; import de.rcenvironment.core.utils.incubator.ServiceRegistry; import de.rcenvironment.core.utils.incubator.ServiceRegistryAccess; /** * Class that provides context ID of components. * * @author Doreen Seider */ public class WorkflowEditorHelpContextProvider implements IContextProvider { private GraphicalViewer viewer; private ToolIntegrationContextRegistry toolIntegrationRegistry; public WorkflowEditorHelpContextProvider(GraphicalViewer viewer) { this.viewer = viewer; ServiceRegistryAccess serviceRegistryAccess = ServiceRegistry.createAccessFor(this); toolIntegrationRegistry = serviceRegistryAccess.getService(ToolIntegrationContextRegistry.class); } @Override public IContext getContext(Object arg0) { Object object = (((IStructuredSelection) viewer.getSelection()).getFirstElement()); if (object instanceof WorkflowNodePart) { WorkflowNodePart nodePart = (WorkflowNodePart) object; String componentIdentifier = ((WorkflowNode) nodePart.getModel()).getComponentDescription().getIdentifier(); // remove version suffix otherwise the context help system does not work properly for some reason (even if the contexts ids in // contexts.xml are adapted and version suffix is added) // as a consequence, context help can only be provided per component and not per version // - seid_do, Dec 2013 if (toolIntegrationRegistry.hasId(componentIdentifier)) { return HelpSystem.getContext(ToolIntegrationConstants.CONTEXTUAL_HELP_PLACEHOLDER_ID); } else if (componentIdentifier.contains("de.rcenvironment.remoteaccess")) { return HelpSystem.getContext("de.rcenvironment.remoteaccess.*"); } else { return HelpSystem.getContext(componentIdentifier.substring(0, componentIdentifier.lastIndexOf(ComponentConstants.ID_SEPARATOR))); } } else if (object instanceof ConnectionPart) { return HelpSystem.getContext("de.rcenvironment.connectionEditorContext"); } else if (object instanceof WorkflowLabelPart) { return HelpSystem.getContext("de.rcenvironment.workflowLabelContext"); } else if (object instanceof WorkflowPart) { return HelpSystem.getContext("de.rcenvironment.workflowEditorContext"); } else if (object instanceof WorkflowExecutionInformationPart) { return HelpSystem.getContext("de.rcenvironment.runtimeWorkflowEditorContext"); } return HelpSystem.getContext("de.rcenvironment.rce.gui.workflow.editor"); //$NON-NLS-1$ } @Override public int getContextChangeMask() { return IContextProvider.SELECTION; } @Override public String getSearchExpression(Object arg0) { return null; } }