Subversion Repository Public Repository

litesoft

Diff Revisions 949 vs 950 for /trunk/Java/KeyHole/src/org/litesoft/aokeyhole/toolkit/BoxedText.java

Diff revisions: vs.
  @@ -1,198 +1,198 @@
1 - // This Source Code is in the Public Domain per: http://unlicense.org
2 - package org.litesoft.aokeyhole.toolkit;
3 -
4 - import org.litesoft.aokeyhole.swing.*;
5 -
6 - import java.awt.*;
7 - import java.awt.geom.*;
8 -
9 - public class BoxedText {
10 - public static final BoxedText[] EMPTY_ARRAY = new BoxedText[0];
11 -
12 - private static int sNextID = 0;
13 -
14 - private int mID;
15 - private int mType;
16 - private Color mBackGround;
17 - private String mName = "";
18 -
19 - private BoxedSet mControllingSet = null;
20 -
21 - private int mAtX;
22 - private int mAtY;
23 -
24 - private boolean mUnfinished = true;
25 - private int mTextHeight;
26 - private int mTextWidth;
27 - private int mBoxWidth;
28 - private int mBoxHeight;
29 - private int mFontDecent;
30 - private Font mFont;
31 -
32 - private int mBoxAtX;
33 - private int mBoxAtY;
34 -
35 - public BoxedText( int pType, Color pBackGround, String pName ) {
36 - mID = getNextID();
37 - mType = pType;
38 - mBackGround = pBackGround;
39 - setName( pName );
40 - }
41 -
42 - private static synchronized int getNextID() {
43 - return sNextID++;
44 - }
45 -
46 - public int getID() {
47 - return mID;
48 - }
49 -
50 - public int getType() {
51 - return mType;
52 - }
53 -
54 - public String getName() {
55 - return mName;
56 - }
57 -
58 - public void setName( String pName ) {
59 - pName = (pName == null) ? "" : pName.trim();
60 - if ( !mName.equals( pName ) ) {
61 - mUnfinished = true;
62 - mName = pName;
63 - if ( mControllingSet != null ) {
64 - mControllingSet.setChanged();
65 - }
66 - }
67 - }
68 -
69 - public void setControllingSet( BoxedSet pControllingSet ) {
70 - mControllingSet = pControllingSet;
71 - }
72 -
73 - public void dispose() {
74 - mControllingSet = null;
75 - }
76 -
77 - public void finish( Graphics pGraphics ) {
78 - if ( mUnfinished ) {
79 - mUnfinished = false;
80 -
81 - FontMetrics metrics = pGraphics.getFontMetrics();
82 - Font zFont = metrics.getFont();
83 - mFont = AdjustFont.common( zFont );
84 - if ( mFont != zFont ) {
85 - metrics = pGraphics.getFontMetrics( mFont );
86 - }
87 - mFontDecent = metrics.getDescent();
88 - Rectangle2D bounds = metrics.getStringBounds( mName, null );
89 - mBoxHeight = (mTextHeight = (int) (bounds.getHeight() + 0.99)) + 3;
90 - mBoxWidth = (mTextWidth = (int) (bounds.getWidth() + 0.99)) + 5;
91 - }
92 - }
93 -
94 - public int getBoxWidth() {
95 - return mBoxWidth;
96 - }
97 -
98 - public void setBoxWidth( int pBoxWidth ) {
99 - mBoxWidth = pBoxWidth;
100 - }
101 -
102 - public int getBoxHeight() {
103 - return mBoxHeight;
104 - }
105 -
106 - public int getAtX() {
107 - return mAtX;
108 - }
109 -
110 - public int getAtY() {
111 - return mAtY;
112 - }
113 -
114 - public void setAtXY( int pAtX, int pAtY ) {
115 - mAtX = pAtX;
116 - mAtY = pAtY;
117 - }
118 -
119 - public void drawConnection( Graphics pGraphics, BoxedText pToBoxedText ) {
120 - if ( pToBoxedText == null ) {
121 - drawConnectionToSelf( pGraphics );
122 - } else if ( this.getAtX() < pToBoxedText.getAtX() ) {
123 - drawConnectionLeftToRight( pGraphics, pToBoxedText );
124 - } else {
125 - pToBoxedText.drawConnectionLeftToRight( pGraphics, this );
126 - }
127 - }
128 -
129 - private void drawConnectionToSelf( Graphics pGraphics ) {
130 - int fromX = this.getAtX() + (this.mBoxWidth / 2);
131 - int fromY = this.getAtY();
132 - int toX = fromX + 10;
133 - int toY = fromY;
134 - pGraphics.drawLine( fromX, fromY, toX, toY );
135 -
136 - fromX = toX;
137 - fromY = toY;
138 - toX = fromX;
139 - toY = fromY - 5;
140 - pGraphics.drawLine( fromX, fromY, toX, toY );
141 -
142 - fromX = toX;
143 - fromY = toY;
144 - toX = fromX - 5;
145 - toY = fromY;
146 - pGraphics.drawLine( fromX, fromY, toX, toY );
147 - }
148 -
149 - private void drawConnectionLeftToRight( Graphics pGraphics, BoxedText pToBoxedText ) {
150 - pGraphics.drawLine( this.getAtX() + (this.mBoxWidth / 2), this.getAtY(), pToBoxedText.getAtX() - (pToBoxedText.mBoxWidth / 2), pToBoxedText.getAtY() );
151 - }
152 -
153 - public void drawConnectionCenterToCenter( Graphics pGraphics, BoxedText pToBoxedText ) {
154 - pGraphics.drawLine( this.getAtX(), this.getAtY(), pToBoxedText.getAtX(), pToBoxedText.getAtY() );
155 - }
156 -
157 - public void draw( Graphics pGraphics ) {
158 - drawBox( pGraphics );
159 - drawText( pGraphics );
160 - }
161 -
162 - public void drawBox( Graphics pGraphics ) {
163 - mBoxAtX = (mAtX - (mBoxWidth + 1) / 2);
164 - mBoxAtY = (mAtY - (mBoxHeight + 1) / 2);
165 -
166 - Color curColor = pGraphics.getColor();
167 -
168 - pGraphics.setColor( mBackGround );
169 - pGraphics.fillRect( mBoxAtX, mBoxAtY, mBoxWidth, mBoxHeight );
170 - pGraphics.setColor( curColor );
171 -
172 - pGraphics.drawRect( mBoxAtX, mBoxAtY, mBoxWidth, mBoxHeight );
173 - }
174 -
175 - public void drawText( Graphics pGraphics ) {
176 - int atX = (mAtX - (mTextWidth + 1) / 2) + 1;
177 - int atY = (mAtY - (mTextHeight + 1) / 2) + mTextHeight - (mFontDecent + 1);
178 -
179 - Font curFont = AdjustFont.common( pGraphics.getFont() );
180 - if ( mFont.equals( curFont ) ) {
181 - pGraphics.drawString( mName, atX, atY );
182 - } else {
183 - pGraphics.setFont( mFont );
184 - pGraphics.drawString( mName, atX, atY );
185 - pGraphics.setFont( curFont );
186 - }
187 - }
188 -
189 - public boolean isClickedOn( Point pAt ) {
190 - return
191 - isBetween( mBoxAtX, pAt.x, mBoxAtX + mBoxWidth ) &&
192 - isBetween( mBoxAtY, pAt.y, mBoxAtY + mBoxHeight );
193 - }
194 -
195 - private boolean isBetween( int pLow, int pToCheck, int pHi ) {
196 - return (pLow < pToCheck) && (pToCheck < pHi);
197 - }
198 - }
1 + // This Source Code is in the Public Domain per: http://unlicense.org
2 + package org.litesoft.aokeyhole.toolkit;
3 +
4 + import org.litesoft.aokeyhole.swing.*;
5 +
6 + import java.awt.*;
7 + import java.awt.geom.*;
8 +
9 + public class BoxedText {
10 + public static final BoxedText[] EMPTY_ARRAY = new BoxedText[0];
11 +
12 + private static int sNextID = 0;
13 +
14 + private int mID;
15 + private int mType;
16 + private Color mBackGround;
17 + private String mName = "";
18 +
19 + private BoxedSet mControllingSet = null;
20 +
21 + private int mAtX;
22 + private int mAtY;
23 +
24 + private boolean mUnfinished = true;
25 + private int mTextHeight;
26 + private int mTextWidth;
27 + private int mBoxWidth;
28 + private int mBoxHeight;
29 + private int mFontDecent;
30 + private Font mFont;
31 +
32 + private int mBoxAtX;
33 + private int mBoxAtY;
34 +
35 + public BoxedText( int pType, Color pBackGround, String pName ) {
36 + mID = getNextID();
37 + mType = pType;
38 + mBackGround = pBackGround;
39 + setName( pName );
40 + }
41 +
42 + private static synchronized int getNextID() {
43 + return sNextID++;
44 + }
45 +
46 + public int getID() {
47 + return mID;
48 + }
49 +
50 + public int getType() {
51 + return mType;
52 + }
53 +
54 + public String getName() {
55 + return mName;
56 + }
57 +
58 + public void setName( String pName ) {
59 + pName = (pName == null) ? "" : pName.trim();
60 + if ( !mName.equals( pName ) ) {
61 + mUnfinished = true;
62 + mName = pName;
63 + if ( mControllingSet != null ) {
64 + mControllingSet.setChanged();
65 + }
66 + }
67 + }
68 +
69 + public void setControllingSet( BoxedSet pControllingSet ) {
70 + mControllingSet = pControllingSet;
71 + }
72 +
73 + public void dispose() {
74 + mControllingSet = null;
75 + }
76 +
77 + public void finish( Graphics pGraphics ) {
78 + if ( mUnfinished ) {
79 + mUnfinished = false;
80 +
81 + FontMetrics metrics = pGraphics.getFontMetrics();
82 + Font zFont = metrics.getFont();
83 + mFont = AdjustFont.common( zFont );
84 + if ( mFont != zFont ) {
85 + metrics = pGraphics.getFontMetrics( mFont );
86 + }
87 + mFontDecent = metrics.getDescent();
88 + Rectangle2D bounds = metrics.getStringBounds( mName, null );
89 + mBoxHeight = (mTextHeight = (int) (bounds.getHeight() + 0.99)) + 3;
90 + mBoxWidth = (mTextWidth = (int) (bounds.getWidth() + 0.99)) + 5;
91 + }
92 + }
93 +
94 + public int getBoxWidth() {
95 + return mBoxWidth;
96 + }
97 +
98 + public void setBoxWidth( int pBoxWidth ) {
99 + mBoxWidth = pBoxWidth;
100 + }
101 +
102 + public int getBoxHeight() {
103 + return mBoxHeight;
104 + }
105 +
106 + public int getAtX() {
107 + return mAtX;
108 + }
109 +
110 + public int getAtY() {
111 + return mAtY;
112 + }
113 +
114 + public void setAtXY( int pAtX, int pAtY ) {
115 + mAtX = pAtX;
116 + mAtY = pAtY;
117 + }
118 +
119 + public void drawConnection( Graphics pGraphics, BoxedText pToBoxedText ) {
120 + if ( pToBoxedText == null ) {
121 + drawConnectionToSelf( pGraphics );
122 + } else if ( this.getAtX() < pToBoxedText.getAtX() ) {
123 + drawConnectionLeftToRight( pGraphics, pToBoxedText );
124 + } else {
125 + pToBoxedText.drawConnectionLeftToRight( pGraphics, this );
126 + }
127 + }
128 +
129 + private void drawConnectionToSelf( Graphics pGraphics ) {
130 + int fromX = this.getAtX() + (this.mBoxWidth / 2);
131 + int fromY = this.getAtY();
132 + int toX = fromX + 10;
133 + int toY = fromY;
134 + pGraphics.drawLine( fromX, fromY, toX, toY );
135 +
136 + fromX = toX;
137 + fromY = toY;
138 + toX = fromX;
139 + toY = fromY - 5;
140 + pGraphics.drawLine( fromX, fromY, toX, toY );
141 +
142 + fromX = toX;
143 + fromY = toY;
144 + toX = fromX - 5;
145 + toY = fromY;
146 + pGraphics.drawLine( fromX, fromY, toX, toY );
147 + }
148 +
149 + private void drawConnectionLeftToRight( Graphics pGraphics, BoxedText pToBoxedText ) {
150 + pGraphics.drawLine( this.getAtX() + (this.mBoxWidth / 2), this.getAtY(), pToBoxedText.getAtX() - (pToBoxedText.mBoxWidth / 2), pToBoxedText.getAtY() );
151 + }
152 +
153 + public void drawConnectionCenterToCenter( Graphics pGraphics, BoxedText pToBoxedText ) {
154 + pGraphics.drawLine( this.getAtX(), this.getAtY(), pToBoxedText.getAtX(), pToBoxedText.getAtY() );
155 + }
156 +
157 + public void draw( Graphics pGraphics ) {
158 + drawBox( pGraphics );
159 + drawText( pGraphics );
160 + }
161 +
162 + public void drawBox( Graphics pGraphics ) {
163 + mBoxAtX = (mAtX - (mBoxWidth + 1) / 2);
164 + mBoxAtY = (mAtY - (mBoxHeight + 1) / 2);
165 +
166 + Color curColor = pGraphics.getColor();
167 +
168 + pGraphics.setColor( mBackGround );
169 + pGraphics.fillRect( mBoxAtX, mBoxAtY, mBoxWidth, mBoxHeight );
170 + pGraphics.setColor( curColor );
171 +
172 + pGraphics.drawRect( mBoxAtX, mBoxAtY, mBoxWidth, mBoxHeight );
173 + }
174 +
175 + public void drawText( Graphics pGraphics ) {
176 + int atX = (mAtX - (mTextWidth + 1) / 2) + 1;
177 + int atY = (mAtY - (mTextHeight + 1) / 2) + mTextHeight - (mFontDecent + 1);
178 +
179 + Font curFont = AdjustFont.common( pGraphics.getFont() );
180 + if ( mFont.equals( curFont ) ) {
181 + pGraphics.drawString( mName, atX, atY );
182 + } else {
183 + pGraphics.setFont( mFont );
184 + pGraphics.drawString( mName, atX, atY );
185 + pGraphics.setFont( curFont );
186 + }
187 + }
188 +
189 + public boolean isClickedOn( Point pAt ) {
190 + return
191 + isBetween( mBoxAtX, pAt.x, mBoxAtX + mBoxWidth ) &&
192 + isBetween( mBoxAtY, pAt.y, mBoxAtY + mBoxHeight );
193 + }
194 +
195 + private boolean isBetween( int pLow, int pToCheck, int pHi ) {
196 + return (pLow < pToCheck) && (pToCheck < pHi);
197 + }
198 + }