Source code: com/memoire/dja/DjaDirectArrow.java
1 /**
2 * @modification $Date: 2001/12/03 16:28:08 $
3 * @statut unstable
4 * @file DjaDirectArrow.java
5 * @version 0.36
6 * @author Guillaume Desnoix
7 * @email guillaume@desnoix.com
8 * @license GNU General Public License 2 (GPL2)
9 * @copyright 1998-2001 Guillaume Desnoix
10 */
11
12 package com.memoire.dja;
13
14 import com.memoire.fu.*;
15 import com.memoire.dnd.*;
16 import com.memoire.bu.*;
17 import com.memoire.dja.*;
18 import com.memoire.mst.*;
19
20
21 import java.awt.*;
22 import java.awt.event.*;
23 import javax.swing.*;
24 import javax.swing.border.*;
25
26 public class DjaDirectArrow
27 extends DjaLink
28 {
29 private int xr0,yr0,xr1,yr1;
30
31 public DjaDirectArrow(String _text)
32 {
33 super();
34
35 xr0=xbegin_;
36 yr0=ybegin_;
37 xr1=xend_;
38 yr1=yend_;
39
40 if(_text!=null) addText(_text);
41 }
42
43 public DjaDirectArrow()
44 {
45 this(null);
46 }
47
48 public boolean contains(int _x, int _y)
49 {
50 return DjaLib.close(xr0,yr0,xr1,yr1,_x,_y);
51 }
52
53 public DjaAnchor[] getAnchors()
54 {
55 DjaAnchor[] r=new DjaAnchor[1];
56 r[0]=new DjaAnchor(this,0,ANY,(xr0+xr1)/2,(yr0+yr1)/2);
57 return r;
58 }
59
60 public void paintObject(Graphics _g)
61 {
62 updateXYO();
63
64 int x0=xbegin_;
65 int y0=ybegin_;
66 int o0=obegin_;
67 int x1=xend_;
68 int y1=yend_;
69 int o1=oend_;
70
71 int x,y;
72
73 xr0=x0;
74 yr0=y0;
75 xr1=x1;
76 yr1=y1;
77
78 if(tbegin_!=0)
79 switch(o0)
80 {
81 case EAST:
82 drawBracket(_g,tbegin_,o0,x0,y0-5,x0+10,y0+5);
83 xr0+=11;
84 break;
85 case WEST:
86 drawBracket(_g,tbegin_,o0,x0,y0-5,x0-10,y0+5);
87 xr0-=11;
88 break;
89 case NORTH:
90 drawBracket(_g,tbegin_,o0,x0-5,y0,x0+5,y0-10);
91 yr0-=11;
92 break;
93 case SOUTH:
94 drawBracket(_g,tbegin_,o0,x0-5,y0,x0+5,y0+10);
95 yr0+=11;
96 break;
97 }
98
99 if(tend_!=0)
100 switch(o1)
101 {
102 case EAST:
103 drawBracket(_g,tend_,o1,x1,y1-5,x1+10,y1+5);
104 xr1+=11;
105 break;
106 case WEST:
107 drawBracket(_g,tend_,o1,x1,y1-5,x1-10,y1+5);
108 xr1-=11;
109 break;
110 case NORTH:
111 drawBracket(_g,tend_,o1,x1-5,y1,x1+5,y1-10);
112 yr1-=11;
113 break;
114 case SOUTH:
115 drawBracket(_g,tend_,o1,x1-5,y1,x1+5,y1+10);
116 yr1+=11;
117 break;
118 }
119
120 if((tbegin_==1)||(tbegin_==4)) { xr0=xbegin_; yr0=ybegin_; }
121 if((tend_ ==1)||(tend_ ==4)) { xr1=xend_; yr1=yend_; }
122
123 _g.setColor(getForeground());
124 DjaGraphics.BresenhamParams bp=DjaGraphics.getBresenhamParams(this);
125 DjaGraphics.drawLine(_g,xr0,yr0,xr1,yr1,bp);
126
127 super.paintObject(_g);
128 }
129 }