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=0d0ec7ce64d5554b46e1913ebb3cd33a21f3ddde;hb=ae850de7b68a267719333e3e96b8a9276d90d046;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..0d0ec7ce6 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, 2018 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,8 @@ * * Contributors: * VTT Technical Research Centre of Finland - initial API and implementation + * Semantum Oy - #7116 regression fix + * Semantum Oy - gitlab #147 - expose getPossibleId implementation *******************************************************************************/ package org.simantics.modeling.ui.modelBrowser.handlers; @@ -21,61 +23,75 @@ 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); - - Variable var = WorkbenchSelectionUtils.getPossibleVariable(event); - if (var != null) - return var.getPossiblePropertyValue(graph, MOD.contextualHelpId, Bindings.STRING); - - ISelection sel = HandlerUtil.getCurrentSelection(event); - 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); - } - } - return null; + return getPossibleId(graph, resource, variable, sel); } }); } 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; + } + public static String getPossibleId(ReadGraph graph, Resource resource, Variable variable, ISelection sel) throws DatabaseException { + ModelingResources MOD = ModelingResources.getInstance(graph); + 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; + } + + if (variable != null) { + String id = variable.getPossiblePropertyValue(graph, MOD.contextualHelpId, Bindings.STRING); + if (id != null) + return id; + } + + // TODO: consider removing this block + if (sel != null) { + PropertyVariables vars = AdaptionUtils.adaptToSingle(sel, PropertyVariables.class); + 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; } }