1:
37:
38:
39: package ;
40:
41: import ;
42: import ;
43: import ;
44: import ;
45: import ;
46: import ;
47: import ;
48: import ;
49:
50: public class GtkTextAreaPeer extends GtkComponentPeer
51: implements TextComponentPeer, TextAreaPeer
52: {
53: private static transient int DEFAULT_ROWS = 10;
54: private static transient int DEFAULT_COLS = 80;
55:
56: native void create (int width, int height, int scrollbarVisibility);
57:
58: native void gtkWidgetModifyFont (String name, int style, int size);
59: native void gtkWidgetRequestFocus ();
60:
61: public native void connectSignals ();
62:
63: public native int getCaretPosition ();
64: public native void setCaretPosition (int pos);
65: public native int getSelectionStart ();
66: public native int getSelectionEnd ();
67: public native String getText ();
68: public native void select (int start, int end);
69: public native void setEditable (boolean state);
70: public native void setText (String text);
71:
72: public int getIndexAtPoint(int x, int y)
73: {
74:
75: return 0;
76: }
77:
78: public Rectangle getCharacterBounds (int pos)
79: {
80:
81: return null;
82: }
83:
84: public long filterEvents (long filter)
85: {
86:
87: return filter;
88: }
89:
90: void create ()
91: {
92: Font f = awtComponent.getFont ();
93:
94:
95:
96:
97: if (f == null)
98: {
99: f = new Font ("Dialog", Font.PLAIN, 12);
100: awtComponent.setFont (f);
101: }
102:
103: FontMetrics fm = getFontMetrics (f);
104:
105: TextArea ta = ((TextArea) awtComponent);
106: int sizeRows = ta.getRows ();
107: int sizeCols = ta.getColumns ();
108:
109: sizeRows = sizeRows == 0 ? DEFAULT_ROWS : sizeRows;
110: sizeCols = sizeCols == 0 ? DEFAULT_COLS : sizeCols;
111:
112: int width = sizeCols * fm.getMaxAdvance ();
113: int height = sizeRows * (fm.getMaxDescent () + fm.getMaxAscent ());
114:
115: create (width, height, ta.getScrollbarVisibility ());
116: setEditable (ta.isEditable ());
117: }
118:
119: public GtkTextAreaPeer (TextArea ta)
120: {
121: super (ta);
122:
123: setText (ta.getText ());
124: setCaretPosition (0);
125: }
126:
127: public native void insert (String str, int pos);
128: public native void replaceRange (String str, int start, int end);
129:
130: public Dimension getMinimumSize (int rows, int cols)
131: {
132: return minimumSize (rows == 0 ? DEFAULT_ROWS : rows,
133: cols == 0 ? DEFAULT_COLS : cols);
134: }
135:
136: public Dimension getPreferredSize (int rows, int cols)
137: {
138: return preferredSize (rows == 0 ? DEFAULT_ROWS : rows,
139: cols == 0 ? DEFAULT_COLS : cols);
140: }
141:
142: native int getHScrollbarHeight ();
143: native int getVScrollbarWidth ();
144:
145:
146: public Dimension minimumSize (int rows, int cols)
147: {
148: TextArea ta = ((TextArea) awtComponent);
149: int height = 0;
150: int width = 0;
151:
152: if (ta.getScrollbarVisibility () == TextArea.SCROLLBARS_BOTH
153: || ta.getScrollbarVisibility () == TextArea.SCROLLBARS_HORIZONTAL_ONLY)
154: height = getHScrollbarHeight ();
155:
156: if (ta.getScrollbarVisibility () == TextArea.SCROLLBARS_BOTH
157: || ta.getScrollbarVisibility () == TextArea.SCROLLBARS_VERTICAL_ONLY)
158: width = getVScrollbarWidth ();
159:
160: Font f = awtComponent.getFont ();
161: if (f == null)
162: return new Dimension (width, height);
163:
164: FontMetrics fm = getFontMetrics (f);
165:
166: int sizeRows = rows == 0 ? DEFAULT_ROWS : rows;
167: int sizeCols = cols == 0 ? DEFAULT_COLS : cols;
168:
169: width += sizeCols * fm.getMaxAdvance ();
170: height += sizeRows * (fm.getMaxDescent () + fm.getMaxAscent ());
171:
172: return new Dimension (width, height);
173: }
174:
175: public Dimension preferredSize (int rows, int cols)
176: {
177: TextArea ta = ((TextArea) awtComponent);
178: int height = 0;
179: int width = 0;
180:
181: if (ta.getScrollbarVisibility () == TextArea.SCROLLBARS_BOTH
182: || ta.getScrollbarVisibility () == TextArea.SCROLLBARS_HORIZONTAL_ONLY)
183: height = getHScrollbarHeight ();
184:
185: if (ta.getScrollbarVisibility () == TextArea.SCROLLBARS_BOTH
186: || ta.getScrollbarVisibility () == TextArea.SCROLLBARS_VERTICAL_ONLY)
187: width = getVScrollbarWidth ();
188:
189: Font f = awtComponent.getFont ();
190: if (f == null)
191: return new Dimension (width, height);
192:
193: FontMetrics fm = getFontMetrics (f);
194:
195: int sizeRows = rows == 0 ? DEFAULT_ROWS : rows;
196: int sizeCols = cols == 0 ? DEFAULT_COLS : cols;
197:
198: width += sizeCols * fm.getMaxAdvance ();
199: height += sizeRows * (fm.getMaxDescent () + fm.getMaxAscent ());
200:
201: return new Dimension (width, height);
202: }
203:
204: public void replaceText (String str, int start, int end)
205: {
206: replaceRange (str, start, end);
207: }
208:
209: public void insertText (String str, int pos)
210: {
211: insert (str, pos);
212: }
213:
214: public InputMethodRequests getInputMethodRequests()
215: {
216:
217: return null;
218: }
219: }