1 /*******************************************************************************
\r
2 * Copyright (c) 2007, 2010 Association for Decentralized Information Management
\r
3 * in Industry THTH ry.
\r
4 * All rights reserved. This program and the accompanying materials
\r
5 * are made available under the terms of the Eclipse Public License v1.0
\r
6 * which accompanies this distribution, and is available at
\r
7 * http://www.eclipse.org/legal/epl-v10.html
\r
10 * VTT Technical Research Centre of Finland - initial API and implementation
\r
11 *******************************************************************************/
\r
12 package org.simantics.g2d.tooltip;
\r
14 import java.awt.geom.Point2D;
\r
16 import org.simantics.g2d.canvas.impl.DependencyReflection.Dependency;
\r
17 import org.simantics.g2d.diagram.participant.pointertool.PointerInteractor;
\r
18 import org.simantics.g2d.diagram.participant.pointertool.TerminalUtil.TerminalInfo;
\r
19 import org.simantics.g2d.element.ElementHints;
\r
20 import org.simantics.g2d.element.handler.TerminalData;
\r
21 import org.simantics.scenegraph.g2d.events.EventHandlerReflection.EventHandler;
\r
22 import org.simantics.scenegraph.g2d.events.MouseEvent.MouseMovedEvent;
\r
23 import org.simantics.utils.datastructures.hints.IHintContext.Key;
\r
24 import org.simantics.utils.datastructures.hints.IHintContext.KeyOf;
\r
28 * TooltipParticipan that is able to show terminal tooltips
\r
30 * Note: this participant does not co-operate with TooltipParticipant.
\r
33 * @author Marko Luukkainen <marko.luukkainen@vtt.fi>
\r
36 public class TerminalTooltipParticipant extends BaseTooltipParticipant {
\r
38 public static final Key KEY_TOOLTIP_TEXT = new KeyOf(String.class, "TERMINAL_TOOLTIP_TEXT");
\r
40 @Dependency PointerInteractor interactor;
\r
42 @EventHandler(priority = 0)
\r
43 public boolean handleMove(MouseMovedEvent me) {
\r
44 update(me.controlPosition);
\r
48 private void update(Point2D controlPos) {
\r
49 TerminalInfo info = interactor.pickTerminal(controlPos);
\r
52 TerminalData data = info.e.getElementClass().getAtMostOneItemOfClass(TerminalData.class);
\r
56 String text = data.getHint(info.e, info.t, ElementHints.KEY_TEXT);
\r
57 // this is not a really good way to provide terminal name
\r
58 info.e.setHint(KEY_TOOLTIP_TEXT, text);
\r
59 showTooltipFor(info.e);
\r