]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.g2d/src/org/simantics/g2d/element/handler/Clickable.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.g2d / src / org / simantics / g2d / element / handler / Clickable.java
1 /*******************************************************************************
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management
3  * in Industry THTH ry.
4  * All rights reserved. This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License v1.0
6  * which accompanies this distribution, and is available at
7  * http://www.eclipse.org/legal/epl-v10.html
8  *
9  * Contributors:
10  *     VTT Technical Research Centre of Finland - initial API and implementation
11  *******************************************************************************/
12 package org.simantics.g2d.element.handler;
13
14 import org.simantics.g2d.canvas.ICanvasContext;
15 import org.simantics.g2d.element.IElement;
16 import org.simantics.g2d.element.handler.impl.AbstractClickable;
17 import org.simantics.g2d.element.handler.impl.ClickableImpl;
18 import org.simantics.utils.threads.IThreadWorkQueue;
19
20 /**
21  * Clickable Element
22  * 
23  * 
24  * @See {@link ClickableImpl}
25  * @See {@link AbstractClickable} 
26  * @author Toni Kalajainen
27  */
28 public interface Clickable extends ElementHandler {
29
30         public static final ClickableImpl INSTANCE = ClickableImpl.INSTANCE;
31         
32         // TODO PressStatus should be a variable of the viewport, not the diagram
33         public static enum PressStatus { 
34                 NORMAL,  // not pressed 
35                 HOVER,   // not pressed but mouse is hovering over the element
36                 HELD,    // pressed but mouse is not hovering over the element
37                 PRESSED  // pressed and mouse is hovering over the element
38                 };
39         
40         public interface ClickListener {
41                 void onClick(IElement e, ICanvasContext ctx);
42         }
43         
44         PressStatus getPressStatus(IElement e, ICanvasContext ctx);
45
46         // IMPL Note! Invocation must be thread safe (canvas thread is not guaranteed)
47         void addListener(IElement e, ICanvasContext ctx, IThreadWorkQueue thread, ClickListener listener);
48         
49         // IMPL Note! Invocation must be thread safe (canvas thread is not guaranteed)
50         void removeListener(IElement e, ICanvasContext ctx, IThreadWorkQueue thread, ClickListener listener);
51         
52 }