Source code: com/vinculum/processeditor/figures/NodeFigure.java
1 /* * ** ** BEGIN LICENSE BLOCK * ** **
2 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3 *
4 * The contents of this file are subject to the Mozilla Public License Version
5 * 1.1 (the "License"); you may not use this file except in compliance with
6 * the License. You may obtain a copy of the License at
7 * http://www.mozilla.org/MPL/
8 *
9 * Software distributed under the License is distributed on an "AS IS" basis,
10 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11 * for the specific language governing rights and limitations under the
12 * License.
13 *
14 * The Original Code is Vinculum Open Source.
15 *
16 * The Initial Developer of the Original Code is
17 * Gerard Toonstra.
18 * Portions created by the Initial Developer are Copyright (C) 2003
19 * the Initial Developer. All Rights Reserved.
20 *
21 * Contributor(s):
22 *
23 * Alternatively, the contents of this file may be used under the terms of
24 * either the GNU General Public License Version 2 or later (the "GPL"), or
25 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26 * in which case the provisions of the GPL or the LGPL are applicable instead
27 * of those above. If you wish to allow use of your version of this file only
28 * under the terms of either the GPL or the LGPL, and not to allow others to
29 * use your version of this file under the terms of the MPL, indicate your
30 * decision by deleting the provisions above and replace them with the notice
31 * and other provisions required by the GPL or the LGPL. If you do not delete
32 * the provisions above, a recipient may use your version of this file under
33 * the terms of any one of the MPL, the GPL or the LGPL.
34 *
35 * ** ** * END LICENSE BLOCK * ** **
36 */
37
38 /***************************************************************************
39 $RCSfile: NodeFigure.java,v $ - description
40 -------------------
41 begin : $Date: 2003/07/08 08:02:32 $
42 copyright : Vinculum (C) 2002
43 author : $Author: chiraz $
44 ***************************************************************************/
45
46 /* $Log: NodeFigure.java,v $
47 /* Revision 1.1.1.1 2003/07/08 08:02:32 chiraz
48 /* egg
49 /* */
50
51 package com.vinculum.processeditor.figures;
52
53 import org.eclipse.draw2d.ConnectionAnchor;
54 import org.eclipse.draw2d.ImageFigure;
55 import org.eclipse.draw2d.geometry.Point;
56
57 /**
58 * @author chilan
59 *
60 */
61 public class NodeFigure extends ImageFigure
62 {
63 protected FixedConnectionAnchor inputConnectionAnchor = new FixedConnectionAnchor(this);
64 protected FixedConnectionAnchor outputConnectionAnchor = new FixedConnectionAnchor(this);
65
66 public ConnectionAnchor connectionAnchorAt(Point p)
67 {
68 long min = Long.MAX_VALUE;
69 ConnectionAnchor srcAnchor = null;
70 Point srcPoint = null;
71 long srcDist = 0;
72 ConnectionAnchor destAnchor = null;
73 Point destPoint = null;
74 long destDist = 0;
75
76 srcAnchor = (ConnectionAnchor)outputConnectionAnchor;
77 srcPoint = srcAnchor.getLocation(null);
78 srcDist = p.getDistance2(srcPoint);
79
80 destAnchor = (ConnectionAnchor)inputConnectionAnchor;
81 destPoint = destAnchor.getLocation(null);
82 destDist = p.getDistance2(destPoint);
83
84 if (srcDist < destDist)
85 {
86 return srcAnchor;
87 }
88
89 return destAnchor;
90 }
91
92 public ConnectionAnchor getTargetConnectionAnchor()
93 {
94 return inputConnectionAnchor;
95 }
96
97 public ConnectionAnchor getSourceConnectionAnchor()
98 {
99 return outputConnectionAnchor;
100 }
101
102 public ConnectionAnchor getConnectionAnchor(String name)
103 {
104 if (name.equals("TARGET"))
105 {
106 return inputConnectionAnchor;
107 }
108 else if ( name.equals("SOURCE"))
109 {
110 return outputConnectionAnchor;
111 }
112 return null;
113 }
114
115 public String mapConnectionAnchorToName(ConnectionAnchor anchor)
116 {
117 if ( inputConnectionAnchor.equals(anchor))
118 {
119 return "TARGET";
120 }
121 else if ( outputConnectionAnchor.equals(anchor))
122 {
123 return "SOURCE";
124 }
125 return null;
126 }
127 }