/*******************************************************************************
- * 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
*
* Contributors:
* VTT Technical Research Centre of Finland - initial API and implementation
+ * Semantum Oy - #7116 regression fix
*******************************************************************************/
package org.simantics.modeling.ui.modelBrowser.handlers;
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<String>(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<String>() {
@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;
-
}
}