X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.browsing.ui.model%2Fsrc%2Forg%2Fsimantics%2Fbrowsing%2Fui%2Fmodel%2Ftooltips%2FDescriptionTooltipRule.java;h=a9ebb9dfcbe26e2aa4e9ba1ff16d46be1ddb9699;hp=b581b4cd8e6424dc4835e503c61c69b118c02bf8;hb=7754cc9adc240214e9ea864dc5dfe0aaed43b818;hpb=96bb7ef9cbe42d82eb58306d8f9b62392cc29ba8 diff --git a/bundles/org.simantics.browsing.ui.model/src/org/simantics/browsing/ui/model/tooltips/DescriptionTooltipRule.java b/bundles/org.simantics.browsing.ui.model/src/org/simantics/browsing/ui/model/tooltips/DescriptionTooltipRule.java index b581b4cd8..a9ebb9dfc 100644 --- a/bundles/org.simantics.browsing.ui.model/src/org/simantics/browsing/ui/model/tooltips/DescriptionTooltipRule.java +++ b/bundles/org.simantics.browsing.ui.model/src/org/simantics/browsing/ui/model/tooltips/DescriptionTooltipRule.java @@ -1,90 +1,88 @@ -package org.simantics.browsing.ui.model.tooltips; - -import java.util.Map; - -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.FontMetrics; -import org.eclipse.swt.graphics.GC; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Text; -import org.simantics.browsing.ui.BuiltinKeys; -import org.simantics.browsing.ui.NodeContext; -import org.simantics.db.ReadGraph; -import org.simantics.db.Resource; -import org.simantics.db.exception.DatabaseException; -import org.simantics.db.layer0.variable.Variable; -import org.simantics.layer0.Layer0; - -public class DescriptionTooltipRule implements TooltipRule { - - public static final DescriptionTooltipRule INSTANCE = new DescriptionTooltipRule(); - - public DescriptionTooltipRule() { - } - - @Override - public Object createTooltip(Object event, Object parentComponent, NodeContext context, Map auxiliary) { - Composite parent = (Composite)parentComponent; - Composite composite = new Composite(parent, SWT.NONE); - //ScrolledComposite composite = new ScrolledComposite(parent, SWT.NONE); - - composite.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND)); - GridLayout layout = new GridLayout(1, false); - composite.setLayout(layout); - Text text = new Text(composite, SWT.NONE | SWT.READ_ONLY | SWT.WRAP); - text.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND)); - - String toolTipContent = (String) auxiliary.get("content"); - text.setText(toolTipContent); - - GC gc = new GC(text); - FontMetrics fm = gc.getFontMetrics(); - int width = toolTipContent.length() * fm.getAverageCharWidth(); - gc.dispose(); - GridData gridData = new GridData(); - if (width < 500) - gridData.widthHint = width; - else - gridData.widthHint = 500; - - text.setLayoutData(gridData); - - return composite; - } - - @Override - public boolean isCompatible(Class contentType) { - return (contentType == Resource.class || contentType == Variable.class); - } - - private static String getToolTipContent(ReadGraph graph, NodeContext nodeContext) throws DatabaseException { - Object input = nodeContext.getConstant(BuiltinKeys.INPUT); - String content = null; - if (input instanceof Variable) { - Variable var = (Variable) input; - Resource res = var.getPredicateResource(graph); - Layer0 L0 = Layer0.getInstance(graph); - String description = graph.getPossibleRelatedValue2(res, L0.HasDescription); - return description; - } else if (input instanceof Resource) { - Resource res = (Resource) input; - - Layer0 L0 = Layer0.getInstance(graph); - String description = graph.getPossibleRelatedValue2(res, L0.HasDescription); - return description; - } - return content; - } - - @Override - public boolean shouldCreateToolTip(ReadGraph graph , NodeContext context, Map auxiliary) throws DatabaseException { - String content = getToolTipContent(graph, context); - if (content == null || content.isEmpty()) - return false; - auxiliary.put("content", content); - return true; - } - -} +package org.simantics.browsing.ui.model.tooltips; + +import java.util.Map; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.graphics.FontMetrics; +import org.eclipse.swt.graphics.GC; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Text; +import org.simantics.browsing.ui.BuiltinKeys; +import org.simantics.browsing.ui.NodeContext; +import org.simantics.db.ReadGraph; +import org.simantics.db.Resource; +import org.simantics.db.exception.DatabaseException; +import org.simantics.db.layer0.variable.Variable; +import org.simantics.layer0.Layer0; + +public class DescriptionTooltipRule implements TooltipRule { + + public static final DescriptionTooltipRule INSTANCE = new DescriptionTooltipRule(); + + public DescriptionTooltipRule() { + } + + @Override + public Object createTooltip(Object event, Object parentComponent, NodeContext context, Map auxiliary) { + Composite parent = (Composite)parentComponent; + Composite composite = new Composite(parent, SWT.NONE); + //ScrolledComposite composite = new ScrolledComposite(parent, SWT.NONE); + + composite.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND)); + GridLayout layout = new GridLayout(1, false); + composite.setLayout(layout); + Text text = new Text(composite, SWT.NONE | SWT.READ_ONLY | SWT.WRAP); + text.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_INFO_BACKGROUND)); + + String toolTipContent = (String) auxiliary.get("content"); + text.setText(toolTipContent); + + GC gc = new GC(text); + FontMetrics fm = gc.getFontMetrics(); + int width = toolTipContent.length() * fm.getAverageCharWidth(); + gc.dispose(); + GridData gridData = new GridData(); + if (width < 500) + gridData.widthHint = width; + else + gridData.widthHint = 500; + + text.setLayoutData(gridData); + + return composite; + } + + @Override + public boolean isCompatible(Class contentType) { + return (contentType == Resource.class || contentType == Variable.class); + } + + private static String getToolTipContent(ReadGraph graph, NodeContext nodeContext) throws DatabaseException { + Object input = nodeContext.getConstant(BuiltinKeys.INPUT); + if (input instanceof Variable) { + Variable var = (Variable) input; + Resource res = var.getPossiblePredicateResource(graph); + if (res != null) { + Layer0 L0 = Layer0.getInstance(graph); + return graph.getPossibleRelatedValue2(res, L0.HasDescription); + } + } else if (input instanceof Resource) { + Resource res = (Resource) input; + Layer0 L0 = Layer0.getInstance(graph); + return graph.getPossibleRelatedValue2(res, L0.HasDescription); + } + return null; + } + + @Override + public boolean shouldCreateToolTip(ReadGraph graph, NodeContext context, Map auxiliary) throws DatabaseException { + String content = getToolTipContent(graph, context); + if (content == null || content.isEmpty()) + return false; + auxiliary.put("content", content); + return true; + } + +}