X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.modeling.ui%2Fsrc%2Forg%2Fsimantics%2Fmodeling%2Fui%2FmodelBrowser%2Fhandlers%2FContextualHelp.java;h=9a1ea8360a751fe67aa294523be125f10a3f5150;hb=e84008c029ef2336cf55ad371256c9a12a889e98;hp=df01fe5d267207d55881afff88007f6273545df3;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/modelBrowser/handlers/ContextualHelp.java b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/modelBrowser/handlers/ContextualHelp.java index df01fe5d2..9a1ea8360 100644 --- a/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/modelBrowser/handlers/ContextualHelp.java +++ b/bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/modelBrowser/handlers/ContextualHelp.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2007, 2010 Association for Decentralized Information Management + * Copyright (c) 2007, 2017 Association for Decentralized Information Management * in Industry THTH ry. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 @@ -8,6 +8,7 @@ * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation + * Semantum Oy - #7116 regression fix *******************************************************************************/ package org.simantics.modeling.ui.modelBrowser.handlers; @@ -21,61 +22,71 @@ import org.simantics.Simantics; import org.simantics.databoard.Bindings; import org.simantics.db.ReadGraph; import org.simantics.db.Resource; -import org.simantics.db.common.request.ResourceRead; -import org.simantics.db.common.utils.Logger; +import org.simantics.db.common.request.UniqueRead; import org.simantics.db.exception.DatabaseException; import org.simantics.db.layer0.variable.Variable; import org.simantics.modeling.ModelingResources; import org.simantics.modeling.PropertyVariables; import org.simantics.ui.selection.WorkbenchSelectionUtils; import org.simantics.utils.ui.AdaptionUtils; +import org.slf4j.LoggerFactory; public class ContextualHelp extends AbstractHandler { + private static final org.slf4j.Logger LOGGER = LoggerFactory.getLogger(ContextualHelp.class); + private static String getPossibleId(ExecutionEvent event) { - String id = null; try { - Resource element = WorkbenchSelectionUtils.getPossibleResource(event); - id = Simantics.getSession().syncRequest(new ResourceRead(element) { + ISelection sel = HandlerUtil.getCurrentSelection(event); + Resource resource = WorkbenchSelectionUtils.getPossibleResource(sel); + Variable variable = WorkbenchSelectionUtils.getPossibleVariable(sel); + if (sel.isEmpty() && resource == null && variable == null) + return null; + return Simantics.getSession().syncRequest(new UniqueRead() { @Override public String perform(ReadGraph graph) throws DatabaseException { ModelingResources MOD = ModelingResources.getInstance(graph); - Resource component = graph.getPossibleObject(element, MOD.ElementToComponent); - if (component != null) - return graph.getPossibleRelatedValue2(component, MOD.contextualHelpId, Bindings.STRING); + if (resource != null) { + Resource component = graph.getPossibleObject(resource, MOD.ElementToComponent); + String id = component != null ? graph.getPossibleRelatedValue2(component, MOD.contextualHelpId, Bindings.STRING) : null; + if (id != null) + return id; + id = graph.getPossibleRelatedValue2(resource, MOD.contextualHelpId, Bindings.STRING); + if (id != null) + return id; + } - Variable var = WorkbenchSelectionUtils.getPossibleVariable(event); - if (var != null) - return var.getPossiblePropertyValue(graph, MOD.contextualHelpId, Bindings.STRING); + if (variable != null) { + String id = variable.getPossiblePropertyValue(graph, MOD.contextualHelpId, Bindings.STRING); + if (id != null) + return id; + } - ISelection sel = HandlerUtil.getCurrentSelection(event); + // TODO: consider removing this block if (sel != null) { PropertyVariables vars = AdaptionUtils.adaptToSingle(sel, PropertyVariables.class); - if (vars != null) { - var = vars.getConfiguration(); - if (var != null) - var.getPossiblePropertyValue(graph, MOD.contextualHelpId, Bindings.STRING); - } + Variable var = vars != null ? vars.getConfiguration() : null; + String id = var != null ? var.getPossiblePropertyValue(graph, MOD.contextualHelpId, Bindings.STRING) : null; + if (id != null) + return id; } + return null; } }); } catch (DatabaseException e) { - Logger.defaultLogError(e); + LOGGER.error("", e); + return null; } - return id; } @Override public Object execute(ExecutionEvent event) throws ExecutionException { - String id = getPossibleId(event); if (id != null) PlatformUI.getWorkbench().getHelpSystem().displayHelp(id); - return null; - } }