Mercurial > projects > dwt-linux
annotate dwt/custom/StyledText.d @ 238:380bad9f6852
reverted char[] to String
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Mon, 05 May 2008 00:42:55 +0200 |
parents | 19ce131cbd99 |
children | ce446666f5a2 |
rev | line source |
---|---|
115
52b32f5cb1e0
many file checked for switch default
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
1 /******************************************************************************* |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2 * Copyright (c) 2000, 2007 IBM Corporation and others. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3 * All rights reserved. This program and the accompanying materials |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4 * are made available under the terms of the Eclipse Public License v1.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5 * which accompanies this distribution, and is available at |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6 * http://www.eclipse.org/legal/epl-v10.html |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8 * Contributors: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
9 * IBM Corporation - initial API and implementation |
108 | 10 * Port to the D programming language: |
11 * Frank Benoit <benoit@tionex.de> | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
12 *******************************************************************************/ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
13 module dwt.custom.StyledText; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
14 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
15 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
16 import dwt.DWT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
17 import dwt.DWTError; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
18 import dwt.DWTException; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
19 import dwt.accessibility.ACC; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
20 import dwt.accessibility.Accessible; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
21 import dwt.accessibility.AccessibleAdapter; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
22 import dwt.accessibility.AccessibleControlAdapter; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
23 import dwt.accessibility.AccessibleControlEvent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
24 import dwt.accessibility.AccessibleEvent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
25 import dwt.accessibility.AccessibleTextAdapter; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
26 import dwt.accessibility.AccessibleTextEvent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
27 import dwt.dnd.Clipboard; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
28 import dwt.dnd.DND; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
29 import dwt.dnd.RTFTransfer; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
30 import dwt.dnd.TextTransfer; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
31 import dwt.dnd.Transfer; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
32 import dwt.events.ModifyListener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
33 import dwt.events.SelectionEvent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
34 import dwt.events.SelectionListener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
35 import dwt.events.VerifyListener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
36 import dwt.graphics.Color; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
37 import dwt.graphics.Cursor; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
38 import dwt.graphics.Font; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
39 import dwt.graphics.FontData; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
40 import dwt.graphics.FontMetrics; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
41 import dwt.graphics.GC; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
42 import dwt.graphics.GlyphMetrics; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
43 import dwt.graphics.Image; |
103 | 44 import dwt.graphics.Device; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
45 import dwt.graphics.Point; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
46 import dwt.graphics.Rectangle; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
47 import dwt.graphics.Resource; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
48 import dwt.graphics.TextLayout; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
49 import dwt.internal.BidiUtil; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
50 import dwt.internal.Compatibility; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
51 import dwt.printing.Printer; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
52 import dwt.printing.PrinterData; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
53 import dwt.widgets.Canvas; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
54 import dwt.widgets.Caret; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
55 import dwt.widgets.Composite; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
56 import dwt.widgets.Control; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
57 import dwt.widgets.Display; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
58 import dwt.widgets.Event; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
59 import dwt.widgets.Label; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
60 import dwt.widgets.Listener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
61 import dwt.widgets.ScrollBar; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
62 import dwt.widgets.TypedListener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
63 import dwt.custom.StyledTextContent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
64 import dwt.custom.TextChangeListener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
65 import dwt.custom.StyledTextRenderer; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
66 import dwt.custom.StyledTextPrintOptions; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
67 import dwt.custom.ExtendedModifyListener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
68 import dwt.custom.BidiSegmentListener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
69 import dwt.custom.LineBackgroundListener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
70 import dwt.custom.LineStyleListener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
71 import dwt.custom.PaintObjectListener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
72 import dwt.custom.VerifyKeyListener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
73 import dwt.custom.MovementListener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
74 import dwt.custom.Bullet; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
75 import dwt.custom.StyledTextEvent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
76 import dwt.custom.StyleRange; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
77 import dwt.custom.TextChangedEvent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
78 import dwt.custom.TextChangingEvent; |
103 | 79 import dwt.custom.DefaultContent; |
80 import dwt.custom.StyledTextDropTargetEffect; | |
81 import dwt.custom.StyledTextListener; | |
82 import dwt.custom.ST; | |
83 import dwt.dwthelper.Runnable; | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
84 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
85 static import tango.text.Text; |
103 | 86 static import tango.text.Util; |
87 static import tango.io.FileConst; | |
88 static import tango.text.convert.Utf; | |
89 import tango.util.Convert; | |
200
08789b28bdf3
import dwt.dwthelper.utils now explicit
Frank Benoit <benoit@tionex.de>
parents:
182
diff
changeset
|
90 import dwt.dwthelper.utils; |
103 | 91 |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
92 alias tango.text.Text.Text!(char) StringBuffer; |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
93 |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
94 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
95 * A StyledText is an editable user interface object that displays lines |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
96 * of text. The following style attributes can be defined for the text: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
97 * <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
98 * <li>foreground color |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
99 * <li>background color |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
100 * <li>font style (bold, italic, bold-italic, regular) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
101 * <li>underline |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
102 * <li>strikeout |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
103 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
104 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
105 * In addition to text style attributes, the background color of a line may |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
106 * be specified. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
107 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
108 * There are two ways to use this widget when specifying text style information. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
109 * You may use the API that is defined for StyledText or you may define your own |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
110 * LineStyleListener. If you define your own listener, you will be responsible |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
111 * for maintaining the text style information for the widget. IMPORTANT: You may |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
112 * not define your own listener and use the StyledText API. The following |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
113 * StyledText API is not supported if you have defined a LineStyleListener: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
114 * <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
115 * <li>getStyleRangeAtOffset(int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
116 * <li>getStyleRanges() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
117 * <li>replaceStyleRanges(int,int,StyleRange[]) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
118 * <li>setStyleRange(StyleRange) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
119 * <li>setStyleRanges(StyleRange[]) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
120 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
121 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
122 * There are two ways to use this widget when specifying line background colors. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
123 * You may use the API that is defined for StyledText or you may define your own |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
124 * LineBackgroundListener. If you define your own listener, you will be responsible |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
125 * for maintaining the line background color information for the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
126 * IMPORTANT: You may not define your own listener and use the StyledText API. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
127 * The following StyledText API is not supported if you have defined a |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
128 * LineBackgroundListener: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
129 * <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
130 * <li>getLineBackground(int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
131 * <li>setLineBackground(int,int,Color) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
132 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
133 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
134 * The content implementation for this widget may also be user-defined. To do so, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
135 * you must implement the StyledTextContent interface and use the StyledText API |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
136 * setContent(StyledTextContent) to initialize the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
137 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
138 * <dl> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
139 * <dt><b>Styles:</b><dd>FULL_SELECTION, MULTI, READ_ONLY, SINGLE, WRAP |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
140 * <dt><b>Events:</b><dd>ExtendedModify, LineGetBackground, LineGetSegments, LineGetStyle, Modify, Selection, Verify, VerifyKey |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
141 * </dl> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
142 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
143 * IMPORTANT: This class is <em>not</em> intended to be subclassed. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
144 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
145 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
146 public class StyledText : Canvas { |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
147 alias Canvas.computeSize computeSize; |
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
148 |
103 | 149 static const char TAB = '\t'; |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
150 static const String PlatformLineDelimiter = tango.io.FileConst.FileConst.NewlineString; |
103 | 151 static const int BIDI_CARET_WIDTH = 3; |
152 static const int DEFAULT_WIDTH = 64; | |
153 static const int DEFAULT_HEIGHT = 64; | |
154 static const int V_SCROLL_RATE = 50; | |
155 static const int H_SCROLL_RATE = 10; | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
156 |
103 | 157 static const int ExtendedModify = 3000; |
158 static const int LineGetBackground = 3001; | |
159 static const int LineGetStyle = 3002; | |
160 static const int TextChanging = 3003; | |
161 static const int TextSet = 3004; | |
162 static const int VerifyKey = 3005; | |
163 static const int TextChanged = 3006; | |
164 static const int LineGetSegments = 3007; | |
165 static const int PaintObject = 3008; | |
166 static const int WordNext = 3009; | |
167 static const int WordPrevious = 3010; | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
168 |
103 | 169 static const int PREVIOUS_OFFSET_TRAILING = 0; |
170 static const int OFFSET_LEADING = 1; | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
171 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
172 Color selectionBackground; // selection background color |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
173 Color selectionForeground; // selection foreground color |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
174 StyledTextContent content; // native content (default or user specified) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
175 StyledTextRenderer renderer; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
176 Listener listener; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
177 TextChangeListener textChangeListener; // listener for TextChanging, TextChanged and TextSet events from StyledTextContent |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
178 int verticalScrollOffset = 0; // pixel based |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
179 int horizontalScrollOffset = 0; // pixel based |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
180 int topIndex = 0; // top visible line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
181 int topIndexY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
182 int clientAreaHeight = 0; // the client area height. Needed to calculate content width for new visible lines during Resize callback |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
183 int clientAreaWidth = 0; // the client area width. Needed during Resize callback to determine if line wrap needs to be recalculated |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
184 int tabLength = 4; // number of characters in a tab |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
185 int leftMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
186 int topMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
187 int rightMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
188 int bottomMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
189 int columnX; // keep track of the horizontal caret position when changing lines/pages. Fixes bug 5935 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
190 int caretOffset = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
191 int caretAlignment; |
103 | 192 Point selection; // x and y are start and end caret offsets of selection |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
193 Point clipboardSelection; // x and y are start and end caret offsets of previous selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
194 int selectionAnchor; // position of selection anchor. 0 based offset from beginning of text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
195 Point doubleClickSelection; // selection after last mouse double click |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
196 bool editable = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
197 bool wordWrap = false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
198 bool doubleClickEnabled = true; // see getDoubleClickEnabled |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
199 bool overwrite = false; // insert/overwrite edit mode |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
200 int textLimit = -1; // limits the number of characters the user can type in the widget. Unlimited by default. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
201 int[int] keyActionMap; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
202 Color background = null; // workaround for bug 4791 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
203 Color foreground = null; // |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
204 Clipboard clipboard; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
205 int clickCount; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
206 int autoScrollDirection = DWT.NULL; // the direction of autoscrolling (up, down, right, left) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
207 int autoScrollDistance = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
208 int lastTextChangeStart; // cache data of the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
209 int lastTextChangeNewLineCount; // last text changing |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
210 int lastTextChangeNewCharCount; // event for use in the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
211 int lastTextChangeReplaceLineCount; // text changed handler |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
212 int lastTextChangeReplaceCharCount; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
213 int lastLineBottom; // the bottom pixel of the last line been replaced |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
214 bool isMirrored_; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
215 bool bidiColoring = false; // apply the BIDI algorithm on text segments of the same color |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
216 Image leftCaretBitmap = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
217 Image rightCaretBitmap = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
218 int caretDirection = DWT.NULL; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
219 Caret defaultCaret = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
220 bool updateCaretDirection = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
221 bool fixedLineHeight; |
103 | 222 bool dragDetect_ = true; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
223 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
224 int alignment; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
225 bool justify; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
226 int indent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
227 int lineSpacing; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
228 |
103 | 229 const static bool IS_CARBON, IS_GTK, IS_MOTIF; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
230 static this(){ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
231 String platform = DWT.getPlatform(); |
103 | 232 IS_CARBON = ("carbon" == platform); |
233 IS_GTK = ("gtk" == platform); | |
234 IS_MOTIF = ("motif" == platform); | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
235 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
236 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
237 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
238 * The Printing class : printing of a range of text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
239 * An instance of <code>Printing</code> is returned in the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
240 * StyledText#print(Printer) API. The run() method may be |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
241 * invoked from any thread. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
242 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
243 static class Printing : Runnable { |
103 | 244 const static int LEFT = 0; // left aligned header/footer segment |
245 const static int CENTER = 1; // centered header/footer segment | |
246 const static int RIGHT = 2; // right aligned header/footer segment | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
247 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
248 Printer printer; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
249 StyledTextRenderer printerRenderer; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
250 StyledTextPrintOptions printOptions; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
251 Rectangle clientArea; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
252 FontData fontData; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
253 Font printerFont; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
254 Resource[Resource] resources; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
255 int tabLength; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
256 GC gc; // printer GC |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
257 int pageWidth; // width of a printer page in pixels |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
258 int startPage; // first page to print |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
259 int endPage; // last page to print |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
260 int startLine; // first (wrapped) line to print |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
261 int endLine; // last (wrapped) line to print |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
262 bool singleLine; // widget single line mode |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
263 Point selection = null; // selected text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
264 bool mirrored; // indicates the printing gc should be mirrored |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
265 int lineSpacing; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
266 int printMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
267 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
268 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
269 * Creates an instance of <code>Printing</code>. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
270 * Copies the widget content and rendering data that needs |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
271 * to be requested from listeners. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
272 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
273 * @param parent StyledText widget to print. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
274 * @param printer printer device to print on. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
275 * @param printOptions print options |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
276 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
277 this(StyledText styledText, Printer printer, StyledTextPrintOptions printOptions) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
278 this.printer = printer; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
279 this.printOptions = printOptions; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
280 this.mirrored = (styledText.getStyle() & DWT.MIRRORED) !is 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
281 singleLine = styledText.isSingleLine(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
282 startPage = 1; |
103 | 283 endPage = int.max; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
284 PrinterData data = printer.getPrinterData(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
285 if (data.scope_ is PrinterData.PAGE_RANGE) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
286 startPage = data.startPage; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
287 endPage = data.endPage; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
288 if (endPage < startPage) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
289 int temp = endPage; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
290 endPage = startPage; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
291 startPage = temp; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
292 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
293 } else if (data.scope_ is PrinterData.SELECTION) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
294 selection = styledText.getSelectionRange(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
295 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
296 printerRenderer = new StyledTextRenderer(printer, null); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
297 printerRenderer.setContent(copyContent(styledText.getContent())); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
298 cacheLineData(styledText); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
299 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
300 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
301 * Caches all line data that needs to be requested from a listener. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
302 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
303 * @param printerContent <code>StyledTextContent</code> to request |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
304 * line data for. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
305 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
306 void cacheLineData(StyledText styledText) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
307 StyledTextRenderer renderer = styledText.renderer; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
308 renderer.copyInto(printerRenderer); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
309 fontData = styledText.getFont().getFontData()[0]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
310 tabLength = styledText.tabLength; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
311 int lineCount = printerRenderer.lineCount; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
312 if (styledText.isListening(LineGetBackground) || (styledText.isBidi() && styledText.isListening(LineGetSegments)) || styledText.isListening(LineGetStyle)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
313 StyledTextContent content = printerRenderer.content; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
314 for (int i = 0; i < lineCount; i++) { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
315 String line = content.getLine(i); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
316 int lineOffset = content.getOffsetAtLine(i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
317 StyledTextEvent event = styledText.getLineBackgroundData(lineOffset, line); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
318 if (event !is null && event.lineBackground !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
319 printerRenderer.setLineBackground(i, 1, event.lineBackground); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
320 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
321 if (styledText.isBidi()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
322 int[] segments = styledText.getBidiSegments(lineOffset, line); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
323 printerRenderer.setLineSegments(i, 1, segments); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
324 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
325 event = styledText.getLineStyleData(lineOffset, line); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
326 if (event !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
327 printerRenderer.setLineIndent(i, 1, event.indent); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
328 printerRenderer.setLineAlignment(i, 1, event.alignment); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
329 printerRenderer.setLineJustify(i, 1, event.justify); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
330 printerRenderer.setLineBullet(i, 1, event.bullet); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
331 StyleRange[] styles = event.styles; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
332 if (styles !is null && styles.length > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
333 printerRenderer.setStyleRanges(event.ranges, styles); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
334 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
335 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
336 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
337 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
338 Point screenDPI = styledText.getDisplay().getDPI(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
339 Point printerDPI = printer.getDPI(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
340 resources = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
341 for (int i = 0; i < lineCount; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
342 Color color = printerRenderer.getLineBackground(i, null); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
343 if (color !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
344 if (printOptions.printLineBackground) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
345 Color printerColor; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
346 if ( auto p = color in resources ) { |
103 | 347 printerColor = cast(Color)*p; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
348 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
349 else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
350 printerColor = new Color (printer, color.getRGB()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
351 resources[color]=printerColor; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
352 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
353 printerRenderer.setLineBackground(i, 1, printerColor); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
354 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
355 printerRenderer.setLineBackground(i, 1, null); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
356 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
357 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
358 int indent = printerRenderer.getLineIndent(i, 0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
359 if (indent !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
360 printerRenderer.setLineIndent(i, 1, indent * printerDPI.x / screenDPI.x); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
361 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
362 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
363 StyleRange[] styles = printerRenderer.styles; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
364 for (int i = 0; i < printerRenderer.styleCount; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
365 StyleRange style = styles[i]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
366 Font font = style.font; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
367 if (style.font !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
368 Font printerFont; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
369 if ( auto p = font in resources ) { |
103 | 370 printerFont = cast(Font)*p; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
371 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
372 else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
373 printerFont = new Font (printer, font.getFontData()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
374 resources[font]= printerFont; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
375 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
376 style.font = printerFont; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
377 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
378 Color color = style.foreground; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
379 if (color !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
380 if (printOptions.printTextForeground) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
381 Color printerColor; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
382 if ( auto p = color in resources ) { |
103 | 383 printerColor = cast(Color)*p; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
384 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
385 else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
386 printerColor = new Color (printer, color.getRGB()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
387 resources[color]=printerColor; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
388 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
389 style.foreground = printerColor; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
390 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
391 style.foreground = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
392 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
393 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
394 color = style.background; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
395 if (color !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
396 if (printOptions.printTextBackground) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
397 Color printerColor; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
398 if ( auto p = color in resources ) { |
103 | 399 printerColor = cast(Color)*p; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
400 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
401 else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
402 printerColor = new Color (printer, color.getRGB()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
403 resources[color]=printerColor; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
404 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
405 style.background = printerColor; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
406 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
407 style.background = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
408 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
409 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
410 if (!printOptions.printTextFontStyle) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
411 style.fontStyle = DWT.NORMAL; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
412 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
413 style.rise = style.rise * printerDPI.y / screenDPI.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
414 GlyphMetrics metrics = style.metrics; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
415 if (metrics !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
416 metrics.ascent = metrics.ascent * printerDPI.y / screenDPI.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
417 metrics.descent = metrics.descent * printerDPI.y / screenDPI.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
418 metrics.width = metrics.width * printerDPI.x / screenDPI.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
419 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
420 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
421 lineSpacing = styledText.lineSpacing * printerDPI.y / screenDPI.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
422 if (printOptions.printLineNumbers) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
423 printMargin = 3 * printerDPI.x / screenDPI.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
424 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
425 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
426 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
427 * Copies the text of the specified <code>StyledTextContent</code>. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
428 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
429 * @param original the <code>StyledTextContent</code> to copy. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
430 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
431 StyledTextContent copyContent(StyledTextContent original) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
432 StyledTextContent printerContent = new DefaultContent(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
433 int insertOffset = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
434 for (int i = 0; i < original.getLineCount(); i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
435 int insertEndOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
436 if (i < original.getLineCount() - 1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
437 insertEndOffset = original.getOffsetAtLine(i + 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
438 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
439 insertEndOffset = original.getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
440 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
441 printerContent.replaceTextRange(insertOffset, 0, original.getTextRange(insertOffset, insertEndOffset - insertOffset)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
442 insertOffset = insertEndOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
443 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
444 return printerContent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
445 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
446 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
447 * Disposes of the resources and the <code>PrintRenderer</code>. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
448 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
449 void dispose() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
450 if (gc !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
451 gc.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
452 gc = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
453 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
454 foreach( resource; resources.values ){ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
455 resource.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
456 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
457 resources = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
458 if (printerFont !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
459 printerFont.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
460 printerFont = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
461 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
462 if (printerRenderer !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
463 printerRenderer.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
464 printerRenderer = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
465 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
466 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
467 void init() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
468 Rectangle trim = printer.computeTrim(0, 0, 0, 0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
469 Point dpi = printer.getDPI(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
470 |
103 | 471 printerFont = new Font( cast(Device)printer, fontData.getName(), fontData.getHeight(), DWT.NORMAL); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
472 clientArea = printer.getClientArea(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
473 pageWidth = clientArea.width; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
474 // one inch margin around text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
475 clientArea.x = dpi.x + trim.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
476 clientArea.y = dpi.y + trim.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
477 clientArea.width -= (clientArea.x + trim.width); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
478 clientArea.height -= (clientArea.y + trim.height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
479 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
480 int style = mirrored ? DWT.RIGHT_TO_LEFT : DWT.LEFT_TO_RIGHT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
481 gc = new GC(printer, style); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
482 gc.setFont(printerFont); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
483 printerRenderer.setFont(printerFont, tabLength); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
484 int lineHeight = printerRenderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
485 if (printOptions.header !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
486 clientArea.y += lineHeight * 2; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
487 clientArea.height -= lineHeight * 2; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
488 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
489 if (printOptions.footer !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
490 clientArea.height -= lineHeight * 2; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
491 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
492 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
493 // TODO not wrapped |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
494 StyledTextContent content = printerRenderer.content; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
495 startLine = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
496 endLine = singleLine ? 0 : content.getLineCount() - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
497 PrinterData data = printer.getPrinterData(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
498 if (data.scope_ is PrinterData.PAGE_RANGE) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
499 int pageSize = clientArea.height / lineHeight;//WRONG |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
500 startLine = (startPage - 1) * pageSize; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
501 } else if (data.scope_ is PrinterData.SELECTION) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
502 startLine = content.getLineAtOffset(selection.x); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
503 if (selection.y > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
504 endLine = content.getLineAtOffset(selection.x + selection.y - 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
505 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
506 endLine = startLine - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
507 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
508 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
509 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
510 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
511 * Prints the lines in the specified page range. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
512 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
513 void print() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
514 Color background = gc.getBackground(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
515 Color foreground = gc.getForeground(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
516 int paintY = clientArea.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
517 int paintX = clientArea.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
518 int width = clientArea.width; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
519 int page = startPage; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
520 int pageBottom = clientArea.y + clientArea.height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
521 int orientation = gc.getStyle() & (DWT.RIGHT_TO_LEFT | DWT.LEFT_TO_RIGHT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
522 TextLayout printLayout = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
523 if (printOptions.printLineNumbers || printOptions.header !is null || printOptions.footer !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
524 printLayout = new TextLayout(printer); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
525 printLayout.setFont(printerFont); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
526 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
527 if (printOptions.printLineNumbers) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
528 int count = endLine - startLine + 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
529 StringBuffer buffer = new StringBuffer("0"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
530 while ((count /= 10) > 0) buffer.append("0"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
531 printLayout.setText(buffer.toString()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
532 int numberingWidth = printLayout.getBounds().width + printMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
533 if (numberingWidth > width) numberingWidth = width; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
534 paintX += numberingWidth; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
535 width -= numberingWidth; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
536 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
537 for (int i = startLine; i <= endLine && page <= endPage; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
538 if (paintY is clientArea.y) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
539 printer.startPage(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
540 printDecoration(page, true, printLayout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
541 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
542 TextLayout layout = printerRenderer.getTextLayout(i, orientation, width, lineSpacing); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
543 Color lineBackground = printerRenderer.getLineBackground(i, background); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
544 int paragraphBottom = paintY + layout.getBounds().height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
545 if (paragraphBottom <= pageBottom) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
546 //normal case, the whole paragraph fits in the current page |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
547 printLine(paintX, paintY, gc, foreground, lineBackground, layout, printLayout, i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
548 paintY = paragraphBottom; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
549 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
550 int lineCount = layout.getLineCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
551 while (paragraphBottom > pageBottom && lineCount > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
552 lineCount--; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
553 paragraphBottom -= layout.getLineBounds(lineCount).height + layout.getSpacing(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
554 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
555 if (lineCount is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
556 //the whole paragraph goes to the next page |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
557 printDecoration(page, false, printLayout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
558 printer.endPage(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
559 page++; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
560 if (page <= endPage) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
561 printer.startPage(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
562 printDecoration(page, true, printLayout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
563 paintY = clientArea.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
564 printLine(paintX, paintY, gc, foreground, lineBackground, layout, printLayout, i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
565 paintY += layout.getBounds().height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
566 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
567 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
568 //draw paragraph top in the current page and paragraph bottom in the next |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
569 int height = paragraphBottom - paintY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
570 gc.setClipping(paintX, paintY, width, height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
571 printLine(paintX, paintY, gc, foreground, lineBackground, layout, printLayout, i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
572 printDecoration(page, false, printLayout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
573 printer.endPage(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
574 page++; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
575 if (page <= endPage) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
576 printer.startPage(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
577 printDecoration(page, true, printLayout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
578 paintY = clientArea.y - height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
579 int layoutHeight = layout.getBounds().height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
580 gc.setClipping(paintX, clientArea.y, width, layoutHeight - height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
581 printLine(paintX, paintY, gc, foreground, lineBackground, layout, printLayout, i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
582 paintY += layoutHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
583 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
584 gc.setClipping(cast(Rectangle)null); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
585 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
586 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
587 printerRenderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
588 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
589 if (paintY > clientArea.y) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
590 // close partial page |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
591 printDecoration(page, false, printLayout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
592 printer.endPage(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
593 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
594 if (printLayout !is null) printLayout.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
595 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
596 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
597 * Print header or footer decorations. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
598 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
599 * @param page page number to print, if specified in the StyledTextPrintOptions header or footer. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
600 * @param header true = print the header, false = print the footer |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
601 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
602 void printDecoration(int page, bool header, TextLayout layout) { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
603 String text = header ? printOptions.header : printOptions.footer; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
604 if (text is null) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
605 int lastSegmentIndex = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
606 for (int i = 0; i < 3; i++) { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
607 int segmentIndex = text.indexOf( StyledTextPrintOptions.SEPARATOR, lastSegmentIndex); |
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
608 String segment; |
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
609 if (segmentIndex is -1 ) { |
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
610 segment = text.substring(lastSegmentIndex); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
611 printDecorationSegment(segment, i, page, header, layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
612 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
613 } else { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
614 segment = text.substring(lastSegmentIndex, segmentIndex); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
615 printDecorationSegment(segment, i, page, header, layout); |
103 | 616 lastSegmentIndex = segmentIndex + StyledTextPrintOptions.SEPARATOR.length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
617 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
618 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
619 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
620 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
621 * Print one segment of a header or footer decoration. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
622 * Headers and footers have three different segments. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
623 * One each for left aligned, centered, and right aligned text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
624 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
625 * @param segment decoration segment to print |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
626 * @param alignment alignment of the segment. 0=left, 1=center, 2=right |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
627 * @param page page number to print, if specified in the decoration segment. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
628 * @param header true = print the header, false = print the footer |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
629 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
630 void printDecorationSegment(String segment, int alignment, int page, bool header, TextLayout layout) { |
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
631 int pageIndex = segment.indexOf(StyledTextPrintOptions.PAGE_TAG); |
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
632 if (pageIndex !is -1 ) { |
103 | 633 int pageTagLength = StyledTextPrintOptions.PAGE_TAG.length; |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
634 StringBuffer buffer = new StringBuffer(segment.substring (0, pageIndex)); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
635 buffer.append (page); |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
636 buffer.append (segment.substring(pageIndex + pageTagLength)); |
103 | 637 segment = buffer.toString().dup; |
638 } | |
639 if (segment.length > 0) { | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
640 layout.setText(segment); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
641 int segmentWidth = layout.getBounds().width; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
642 int segmentHeight = printerRenderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
643 int drawX = 0, drawY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
644 if (alignment is LEFT) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
645 drawX = clientArea.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
646 } else if (alignment is CENTER) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
647 drawX = (pageWidth - segmentWidth) / 2; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
648 } else if (alignment is RIGHT) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
649 drawX = clientArea.x + clientArea.width - segmentWidth; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
650 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
651 if (header) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
652 drawY = clientArea.y - segmentHeight * 2; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
653 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
654 drawY = clientArea.y + clientArea.height + segmentHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
655 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
656 layout.draw(gc, drawX, drawY); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
657 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
658 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
659 void printLine(int x, int y, GC gc, Color foreground, Color background, TextLayout layout, TextLayout printLayout, int index) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
660 if (background !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
661 Rectangle rect = layout.getBounds(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
662 gc.setBackground(background); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
663 gc.fillRectangle(x, y, rect.width, rect.height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
664 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
665 // int lineCount = layout.getLineCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
666 // for (int i = 0; i < lineCount; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
667 // Rectangle rect = layout.getLineBounds(i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
668 // rect.x += paintX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
669 // rect.y += paintY + layout.getSpacing(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
670 // rect.width = width;//layout bounds |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
671 // gc.fillRectangle(rect); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
672 // } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
673 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
674 if (printOptions.printLineNumbers) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
675 FontMetrics metrics = layout.getLineMetrics(0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
676 printLayout.setAscent(metrics.getAscent() + metrics.getDescent()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
677 printLayout.setDescent(metrics.getDescent()); |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
678 printLayout.setText( to!(String)(index) ); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
679 int paintX = x - printMargin - printLayout.getBounds().width; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
680 printLayout.draw(gc, paintX, y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
681 printLayout.setAscent(-1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
682 printLayout.setDescent(-1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
683 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
684 gc.setForeground(foreground); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
685 layout.draw(gc, x, y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
686 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
687 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
688 * Starts a print job and prints the pages specified in the constructor. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
689 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
690 public void run() { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
691 String jobName = printOptions.jobName; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
692 if (jobName is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
693 jobName = "Printing"; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
694 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
695 if (printer.startJob(jobName)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
696 init(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
697 print(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
698 dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
699 printer.endJob(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
700 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
701 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
702 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
703 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
704 * The <code>RTFWriter</code> class is used to write widget content as |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
705 * rich text. The implementation complies with the RTF specification |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
706 * version 1.5. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
707 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
708 * toString() is guaranteed to return a valid RTF string only after |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
709 * close() has been called. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
710 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
711 * Whole and partial lines and line breaks can be written. Lines will be |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
712 * formatted using the styles queried from the LineStyleListener, if |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
713 * set, or those set directly in the widget. All styles are applied to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
714 * the RTF stream like they are rendered by the widget. In addition, the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
715 * widget font name and size is used for the whole text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
716 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
717 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
718 class RTFWriter : TextWriter { |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
719 |
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
720 alias TextWriter.write write; |
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
721 |
103 | 722 static const int DEFAULT_FOREGROUND = 0; |
723 static const int DEFAULT_BACKGROUND = 1; | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
724 Color[] colorTable; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
725 Font[] fontTable; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
726 bool WriteUnicode; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
727 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
728 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
729 * Creates a RTF writer that writes content starting at offset "start" |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
730 * in the document. <code>start</code> and <code>length</code>can be set to specify partial |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
731 * lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
732 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
733 * @param start start offset of content to write, 0 based from |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
734 * beginning of document |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
735 * @param length length of content to write |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
736 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
737 public this(int start, int length) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
738 super(start, length); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
739 colorTable ~= getForeground(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
740 colorTable ~= getBackground(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
741 fontTable ~= getFont(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
742 setUnicode(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
743 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
744 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
745 * Closes the RTF writer. Once closed no more content can be written. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
746 * <b>NOTE:</b> <code>toString()</code> does not return a valid RTF string until |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
747 * <code>close()</code> has been called. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
748 */ |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
749 public override void close() { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
750 if (!isClosed()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
751 writeHeader(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
752 write("\n}}\0"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
753 super.close(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
754 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
755 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
756 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
757 * Returns the index of the specified color in the RTF color table. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
758 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
759 * @param color the color |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
760 * @param defaultIndex return value if color is null |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
761 * @return the index of the specified color in the RTF color table |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
762 * or "defaultIndex" if "color" is null. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
763 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
764 int getColorIndex(Color color, int defaultIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
765 if (color is null) return defaultIndex; |
103 | 766 int index = -1; |
767 foreach( i, col; colorTable ){ | |
768 if( col == color ){ | |
769 index = i; | |
770 break; | |
771 } | |
772 } | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
773 if (index is -1) { |
103 | 774 index = colorTable.length; |
775 colorTable ~= color; | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
776 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
777 return index; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
778 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
779 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
780 * Returns the index of the specified color in the RTF color table. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
781 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
782 * @param color the color |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
783 * @param defaultIndex return value if color is null |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
784 * @return the index of the specified color in the RTF color table |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
785 * or "defaultIndex" if "color" is null. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
786 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
787 int getFontIndex(Font font) { |
103 | 788 int index = -1; |
789 foreach( i, f; colorTable ){ | |
790 if( f == font ){ | |
791 index = i; | |
792 break; | |
793 } | |
794 } | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
795 if (index is -1) { |
103 | 796 index = fontTable.length; |
797 fontTable ~= font; | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
798 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
799 return index; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
800 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
801 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
802 * Determines if Unicode RTF should be written. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
803 * Don't write Unicode RTF on Windows 95/98/ME or NT. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
804 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
805 void setUnicode() { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
806 // const String Win95 = "windows 95"; |
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
807 // const String Win98 = "windows 98"; |
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
808 // const String WinME = "windows me"; |
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
809 // const String WinNT = "windows nt"; |
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
810 // String osName = System.getProperty("os.name").toLowerCase(); |
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
811 // String osVersion = System.getProperty("os.version"); |
103 | 812 // int majorVersion = 0; |
813 // | |
814 // if (osName.startsWith(WinNT) && osVersion !is null) { | |
815 // int majorIndex = osVersion.indexOf('.'); | |
816 // if (majorIndex !is -1) { | |
817 // osVersion = osVersion.substring(0, majorIndex); | |
818 // try { | |
819 // majorVersion = Integer.parseInt(osVersion); | |
820 // } catch (NumberFormatException exception) { | |
821 // // ignore exception. version number remains unknown. | |
822 // // will write without Unicode | |
823 // } | |
824 // } | |
825 // } | |
826 // WriteUnicode = !osName.startsWith(Win95) && | |
827 // !osName.startsWith(Win98) && | |
828 // !osName.startsWith(WinME) && | |
829 // (!osName.startsWith(WinNT) || majorVersion > 4); | |
830 WriteUnicode = true; // we are on linux-gtk | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
831 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
832 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
833 * Appends the specified segment of "string" to the RTF data. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
834 * Copy from <code>start</code> up to, but excluding, <code>end</code>. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
835 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
836 * @param string string to copy a segment from. Must not contain |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
837 * line breaks. Line breaks should be written using writeLineDelimiter() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
838 * @param start start offset of segment. 0 based. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
839 * @param end end offset of segment |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
840 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
841 void write(String string, int start, int end) { |
103 | 842 start = 0; |
182
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
843 end = string.length; |
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
844 int incr = 1; |
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
845 for (int index = start; index < end; index+=incr) { |
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
846 dchar ch = firstCodePoint( string[index .. $], incr ); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
847 if (ch > 0xFF && WriteUnicode) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
848 // write the sub string from the last escaped character |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
849 // to the current one. Fixes bug 21698. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
850 if (index > start) { |
182
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
851 write( string[start .. index ] ); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
852 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
853 write("\\u"); |
238 | 854 write( to!(String)( cast(short)ch )); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
855 write(' '); // control word delimiter |
182
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
856 start = index + incr; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
857 } else if (ch is '}' || ch is '{' || ch is '\\') { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
858 // write the sub string from the last escaped character |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
859 // to the current one. Fixes bug 21698. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
860 if (index > start) { |
182
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
861 write(string[start .. index]); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
862 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
863 write('\\'); |
103 | 864 write(cast(char)ch); // ok because one of {}\ |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
865 start = index + 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
866 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
867 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
868 // write from the last escaped character to the end. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
869 // Fixes bug 21698. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
870 if (start < end) { |
182
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
871 write(string[ start .. end]); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
872 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
873 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
874 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
875 * Writes the RTF header including font table and color table. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
876 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
877 void writeHeader() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
878 StringBuffer header = new StringBuffer(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
879 FontData fontData = getFont().getFontData()[0]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
880 header.append("{\\rtf1\\ansi"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
881 // specify code page, necessary for copy to work in bidi |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
882 // systems that don't support Unicode RTF. |
238 | 883 // PORTING_TODO: String cpg = System.getProperty("file.encoding").toLowerCase(); |
884 String cpg = "UTF16"; | |
103 | 885 /+ |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
886 if (cpg.startsWith("cp") || cpg.startsWith("ms")) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
887 cpg = cpg.substring(2, cpg.length()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
888 header.append("\\ansicpg"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
889 header.append(cpg); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
890 } |
103 | 891 +/ |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
892 header.append("\\uc0\\deff0{\\fonttbl{\\f0\\fnil "); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
893 header.append(fontData.getName()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
894 header.append(";"); |
103 | 895 for (int i = 1; i < fontTable.length; i++) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
896 header.append("\\f"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
897 header.append(i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
898 header.append(" "); |
103 | 899 FontData fd = (cast(Font)fontTable[i]).getFontData()[0]; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
900 header.append(fd.getName()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
901 header.append(";"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
902 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
903 header.append("}}\n{\\colortbl"); |
103 | 904 for (int i = 0; i < colorTable.length; i++) { |
905 Color color = cast(Color) colorTable[i]; | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
906 header.append("\\red"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
907 header.append(color.getRed()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
908 header.append("\\green"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
909 header.append(color.getGreen()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
910 header.append("\\blue"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
911 header.append(color.getBlue()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
912 header.append(";"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
913 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
914 // some RTF readers ignore the deff0 font tag. Explicitly |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
915 // set the font for the whole document to work around this. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
916 header.append("}\n{\\f0\\fs"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
917 // font size is specified in half points |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
918 header.append(fontData.getHeight() * 2); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
919 header.append(" "); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
920 write(header.toString(), 0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
921 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
922 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
923 * Appends the specified line text to the RTF data. Lines will be formatted |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
924 * using the styles queried from the LineStyleListener, if set, or those set |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
925 * directly in the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
926 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
927 * @param line line text to write as RTF. Must not contain line breaks |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
928 * Line breaks should be written using writeLineDelimiter() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
929 * @param lineOffset offset of the line. 0 based from the start of the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
930 * widget document. Any text occurring before the start offset or after the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
931 * end offset specified during object creation is ignored. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
932 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
933 * <li>ERROR_IO when the writer is closed.</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
934 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
935 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
936 public override void writeLine(String line, int lineOffset) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
937 if (isClosed()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
938 DWT.error(DWT.ERROR_IO); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
939 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
940 int lineIndex = content.getLineAtOffset(lineOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
941 int lineAlignment, lineIndent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
942 bool lineJustify; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
943 int[] ranges; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
944 StyleRange[] styles; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
945 StyledTextEvent event = getLineStyleData(lineOffset, line); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
946 if (event !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
947 lineAlignment = event.alignment; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
948 lineIndent = event.indent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
949 lineJustify = event.justify; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
950 ranges = event.ranges; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
951 styles = event.styles; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
952 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
953 lineAlignment = renderer.getLineAlignment(lineIndex, alignment); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
954 lineIndent = renderer.getLineIndent(lineIndex, indent); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
955 lineJustify = renderer.getLineJustify(lineIndex, justify); |
103 | 956 ranges = renderer.getRanges(lineOffset, line.length); |
957 styles = renderer.getStyleRanges(lineOffset, line.length, false); | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
958 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
959 if (styles is null) styles = new StyleRange[0]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
960 Color lineBackground = renderer.getLineBackground(lineIndex, null); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
961 event = getLineBackgroundData(lineOffset, line); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
962 if (event !is null && event.lineBackground !is null) lineBackground = event.lineBackground; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
963 writeStyledLine(line, lineOffset, ranges, styles, lineBackground, lineIndent, lineAlignment, lineJustify); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
964 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
965 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
966 * Appends the specified line delimiter to the RTF data. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
967 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
968 * @param lineDelimiter line delimiter to write as RTF. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
969 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
970 * <li>ERROR_IO when the writer is closed.</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
971 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
972 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
973 public override void writeLineDelimiter(String lineDelimiter) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
974 if (isClosed()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
975 DWT.error(DWT.ERROR_IO); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
976 } |
103 | 977 write(lineDelimiter, 0, lineDelimiter.length); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
978 write("\\par "); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
979 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
980 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
981 * Appends the specified line text to the RTF data. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
982 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
983 * Use the colors and font styles specified in "styles" and "lineBackground". |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
984 * Formatting is written to reflect the text rendering by the text widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
985 * Style background colors take precedence over the line background color. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
986 * Background colors are written using the \highlight tag (vs. the \cb tag). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
987 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
988 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
989 * @param line line text to write as RTF. Must not contain line breaks |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
990 * Line breaks should be written using writeLineDelimiter() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
991 * @param lineOffset offset of the line. 0 based from the start of the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
992 * widget document. Any text occurring before the start offset or after the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
993 * end offset specified during object creation is ignored. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
994 * @param styles styles to use for formatting. Must not be null. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
995 * @param lineBackground line background color to use for formatting. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
996 * May be null. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
997 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
998 void writeStyledLine(String line, int lineOffset, int ranges[], StyleRange[] styles, Color lineBackground, int indent, int alignment, bool justify) { |
103 | 999 int lineLength = line.length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1000 int startOffset = getStart(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1001 int writeOffset = startOffset - lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1002 if (writeOffset >= lineLength) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1003 int lineIndex = Math.max(0, writeOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1004 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1005 write("\\fi"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1006 write(indent); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1007 switch (alignment) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1008 case DWT.LEFT: write("\\ql"); break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1009 case DWT.CENTER: write("\\qc"); break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1010 case DWT.RIGHT: write("\\qr"); break; |
115
52b32f5cb1e0
many file checked for switch default
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
1011 default: |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1012 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1013 if (justify) write("\\qj"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1014 write(" "); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1015 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1016 if (lineBackground !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1017 write("{\\highlight"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1018 write(getColorIndex(lineBackground, DEFAULT_BACKGROUND)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1019 write(" "); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1020 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1021 int endOffset = startOffset + super.getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1022 int lineEndOffset = Math.min(lineLength, endOffset - lineOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1023 for (int i = 0; i < styles.length; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1024 StyleRange style = styles[i]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1025 int start, end; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1026 if (ranges !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1027 start = ranges[i << 1] - lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1028 end = start + ranges[(i << 1) + 1]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1029 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1030 start = style.start - lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1031 end = start + style.length; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1032 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1033 // skip over partial first line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1034 if (end < writeOffset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1035 continue; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1036 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1037 // style starts beyond line end or RTF write end |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1038 if (start >= lineEndOffset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1039 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1040 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1041 // write any unstyled text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1042 if (lineIndex < start) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1043 // copy to start of style |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1044 // style starting beyond end of write range or end of line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1045 // is guarded against above. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1046 write(line, lineIndex, start); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1047 lineIndex = start; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1048 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1049 // write styled text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1050 write("{\\cf"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1051 write(getColorIndex(style.foreground, DEFAULT_FOREGROUND)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1052 int colorIndex = getColorIndex(style.background, DEFAULT_BACKGROUND); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1053 if (colorIndex !is DEFAULT_BACKGROUND) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1054 write("\\highlight"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1055 write(colorIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1056 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1057 Font font = style.font; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1058 if (font !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1059 int fontIndex = getFontIndex(font); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1060 write("\\f"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1061 write(fontIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1062 FontData fontData = font.getFontData()[0]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1063 write("\\fs"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1064 write(fontData.getHeight() * 2); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1065 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1066 if ((style.fontStyle & DWT.BOLD) !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1067 write("\\b"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1068 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1069 if ((style.fontStyle & DWT.ITALIC) !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1070 write("\\i"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1071 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1072 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1073 if (style.underline) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1074 write("\\ul"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1075 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1076 if (style.strikeout) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1077 write("\\strike"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1078 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1079 write(" "); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1080 // copy to end of style or end of write range or end of line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1081 int copyEnd = Math.min(end, lineEndOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1082 // guard against invalid styles and let style processing continue |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1083 copyEnd = Math.max(copyEnd, lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1084 write(line, lineIndex, copyEnd); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1085 if (font is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1086 if ((style.fontStyle & DWT.BOLD) !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1087 write("\\b0"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1088 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1089 if ((style.fontStyle & DWT.ITALIC) !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1090 write("\\i0"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1091 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1092 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1093 if (style.underline) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1094 write("\\ul0"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1095 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1096 if (style.strikeout) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1097 write("\\strike0"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1098 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1099 write("}"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1100 lineIndex = copyEnd; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1101 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1102 // write unstyled text at the end of the line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1103 if (lineIndex < lineEndOffset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1104 write(line, lineIndex, lineEndOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1105 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1106 if (lineBackground !is null) write("}"); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1107 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1108 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1109 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1110 * The <code>TextWriter</code> class is used to write widget content to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1111 * a string. Whole and partial lines and line breaks can be written. To write |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1112 * partial lines, specify the start and length of the desired segment |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1113 * during object creation. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1114 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1115 * </b>NOTE:</b> <code>toString()</code> is guaranteed to return a valid string only after close() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1116 * has been called. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1117 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1118 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1119 class TextWriter { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1120 private StringBuffer buffer; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1121 private int startOffset; // offset of first character that will be written |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1122 private int endOffset; // offset of last character that will be written. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1123 // 0 based from the beginning of the widget text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1124 private bool isClosed_ = false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1125 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1126 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1127 * Creates a writer that writes content starting at offset "start" |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1128 * in the document. <code>start</code> and <code>length</code> can be set to specify partial lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1129 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1130 * @param start start offset of content to write, 0 based from beginning of document |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1131 * @param length length of content to write |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1132 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1133 public this(int start, int length) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1134 buffer = new StringBuffer(length); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1135 startOffset = start; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1136 endOffset = start + length; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1137 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1138 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1139 * Closes the writer. Once closed no more content can be written. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1140 * <b>NOTE:</b> <code>toString()</code> is not guaranteed to return a valid string unless |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1141 * the writer is closed. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1142 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1143 public void close() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1144 if (!isClosed_) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1145 isClosed_ = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1146 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1147 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1148 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1149 * Returns the number of characters to write. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1150 * @return the integer number of characters to write |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1151 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1152 public int getCharCount() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1153 return endOffset - startOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1154 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1155 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1156 * Returns the offset where writing starts. 0 based from the start of |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1157 * the widget text. Used to write partial lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1158 * @return the integer offset where writing starts |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1159 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1160 public int getStart() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1161 return startOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1162 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1163 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1164 * Returns whether the writer is closed. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1165 * @return a bool specifying whether or not the writer is closed |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1166 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1167 public bool isClosed() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1168 return isClosed_; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1169 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1170 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1171 * Returns the string. <code>close()</code> must be called before <code>toString()</code> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1172 * is guaranteed to return a valid string. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1173 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1174 * @return the string |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1175 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1176 public override String toString() { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1177 return buffer.toString(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1178 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1179 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1180 * Appends the given string to the data. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1181 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1182 void write(String string) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1183 buffer.append(string); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1184 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1185 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1186 * Inserts the given string to the data at the specified offset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1187 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1188 * Do nothing if "offset" is < 0 or > getCharCount() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1189 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1190 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1191 * @param string text to insert |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1192 * @param offset offset in the existing data to insert "string" at. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1193 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1194 void write(String string, int offset) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1195 if (offset < 0 || offset > buffer.length()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1196 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1197 } |
103 | 1198 buffer.select( offset ); |
1199 buffer.prepend( string ); | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1200 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1201 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1202 * Appends the given int to the data. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1203 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1204 void write(int i) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1205 buffer.append(i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1206 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1207 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1208 * Appends the given character to the data. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1209 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1210 void write(char i) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1211 buffer.append(i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1212 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1213 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1214 * Appends the specified line text to the data. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1215 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1216 * @param line line text to write. Must not contain line breaks |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1217 * Line breaks should be written using writeLineDelimiter() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1218 * @param lineOffset offset of the line. 0 based from the start of the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1219 * widget document. Any text occurring before the start offset or after the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1220 * end offset specified during object creation is ignored. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1221 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1222 * <li>ERROR_IO when the writer is closed.</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1223 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1224 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1225 public void writeLine(String line, int lineOffset) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1226 if (isClosed_) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1227 DWT.error(DWT.ERROR_IO); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1228 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1229 int writeOffset = startOffset - lineOffset; |
103 | 1230 int lineLength = line.length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1231 int lineIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1232 if (writeOffset >= lineLength) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1233 return; // whole line is outside write range |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1234 } else if (writeOffset > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1235 lineIndex = writeOffset; // line starts before write start |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1236 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1237 lineIndex = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1238 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1239 int copyEnd = Math.min(lineLength, endOffset - lineOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1240 if (lineIndex < copyEnd) { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1241 write(line.substring(lineIndex, copyEnd)); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1242 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1243 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1244 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1245 * Appends the specified line delimiter to the data. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1246 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1247 * @param lineDelimiter line delimiter to write |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1248 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1249 * <li>ERROR_IO when the writer is closed.</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1250 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1251 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1252 public void writeLineDelimiter(String lineDelimiter) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1253 if (isClosed_) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1254 DWT.error(DWT.ERROR_IO); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1255 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1256 write(lineDelimiter); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1257 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1258 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1259 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1260 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1261 * Constructs a new instance of this class given its parent |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1262 * and a style value describing its behavior and appearance. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1263 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1264 * The style value is either one of the style constants defined in |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1265 * class <code>DWT</code> which is applicable to instances of this |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1266 * class, or must be built by <em>bitwise OR</em>'ing together |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1267 * (that is, using the <code>int</code> "|" operator) two or more |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1268 * of those <code>DWT</code> style constants. The class description |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1269 * lists the style constants that are applicable to the class. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1270 * Style bits are also inherited from superclasses. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1271 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1272 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1273 * @param parent a widget which will be the parent of the new instance (cannot be null) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1274 * @param style the style of widget to construct |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1275 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1276 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1277 * <li>ERROR_NULL_ARGUMENT - if the parent is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1278 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1279 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1280 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the parent</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1281 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1282 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1283 * @see DWT#FULL_SELECTION |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1284 * @see DWT#MULTI |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1285 * @see DWT#READ_ONLY |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1286 * @see DWT#SINGLE |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1287 * @see DWT#WRAP |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1288 * @see #getStyle |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1289 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1290 public this(Composite parent, int style) { |
103 | 1291 selection = new Point(0, 0); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1292 super(parent, checkStyle(style)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1293 // set the fg in the OS to ensure that these are the same as StyledText, necessary |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1294 // for ensuring that the bg/fg the IME box uses is the same as what StyledText uses |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1295 super.setForeground(getForeground()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1296 super.setDragDetect(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1297 Display display = getDisplay(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1298 isMirrored_ = (super.getStyle() & DWT.MIRRORED) !is 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1299 fixedLineHeight = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1300 if ((style & DWT.READ_ONLY) !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1301 setEditable(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1302 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1303 leftMargin = rightMargin = isBidiCaret() ? BIDI_CARET_WIDTH - 1: 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1304 if ((style & DWT.SINGLE) !is 0 && (style & DWT.BORDER) !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1305 leftMargin = topMargin = rightMargin = bottomMargin = 2; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1306 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1307 alignment = style & (DWT.LEFT | DWT.RIGHT | DWT.CENTER); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1308 if (alignment is 0) alignment = DWT.LEFT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1309 clipboard = new Clipboard(display); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1310 installDefaultContent(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1311 renderer = new StyledTextRenderer(getDisplay(), this); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1312 renderer.setContent(content); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1313 renderer.setFont(getFont(), tabLength); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1314 defaultCaret = new Caret(this, DWT.NULL); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1315 if ((style & DWT.WRAP) !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1316 setWordWrap(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1317 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1318 if (isBidiCaret()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1319 createCaretBitmaps(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1320 Runnable runnable = new class() Runnable { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1321 public void run() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1322 int direction = BidiUtil.getKeyboardLanguage() is BidiUtil.KEYBOARD_BIDI ? DWT.RIGHT : DWT.LEFT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1323 if (direction is caretDirection) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1324 if (getCaret() !is defaultCaret) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1325 Point newCaretPos = getPointAtOffset(caretOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1326 setCaretLocation(newCaretPos, direction); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1327 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1328 }; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1329 BidiUtil.addLanguageListener(handle, runnable); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1330 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1331 setCaret(defaultCaret); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1332 calculateScrollBars(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1333 createKeyBindings(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1334 setCursor(display.getSystemCursor(DWT.CURSOR_IBEAM)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1335 installListeners(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1336 initializeAccessible(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1337 setData("DEFAULT_DROP_TARGET_EFFECT", new StyledTextDropTargetEffect(this)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1338 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1339 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1340 * Adds an extended modify listener. An ExtendedModify event is sent by the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1341 * widget when the widget text has changed. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1342 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1343 * @param extendedModifyListener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1344 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1345 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1346 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1347 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1348 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1349 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1350 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1351 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1352 public void addExtendedModifyListener(ExtendedModifyListener extendedModifyListener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1353 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1354 if (extendedModifyListener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1355 StyledTextListener typedListener = new StyledTextListener(extendedModifyListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1356 addListener(ExtendedModify, typedListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1357 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1358 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1359 * Adds a bidirectional segment listener. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1360 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1361 * A BidiSegmentEvent is sent |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1362 * whenever a line of text is measured or rendered. The user can |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1363 * specify text ranges in the line that should be treated as if they |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1364 * had a different direction than the surrounding text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1365 * This may be used when adjacent segments of right-to-left text should |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1366 * not be reordered relative to each other. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1367 * E.g., Multiple Java string literals in a right-to-left language |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1368 * should generally remain in logical order to each other, that is, the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1369 * way they are stored. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1370 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1371 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1372 * @param listener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1373 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1374 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1375 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1376 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1377 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1378 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1379 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1380 * @see BidiSegmentEvent |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1381 * @since 2.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1382 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1383 public void addBidiSegmentListener(BidiSegmentListener listener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1384 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1385 if (listener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1386 addListener(LineGetSegments, new StyledTextListener(listener)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1387 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1388 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1389 * Adds a line background listener. A LineGetBackground event is sent by the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1390 * widget to determine the background color for a line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1391 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1392 * @param listener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1393 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1394 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1395 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1396 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1397 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1398 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1399 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1400 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1401 public void addLineBackgroundListener(LineBackgroundListener listener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1402 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1403 if (listener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1404 if (!isListening(LineGetBackground)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1405 renderer.clearLineBackground(0, content.getLineCount()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1406 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1407 addListener(LineGetBackground, new StyledTextListener(listener)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1408 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1409 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1410 * Adds a line style listener. A LineGetStyle event is sent by the widget to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1411 * determine the styles for a line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1412 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1413 * @param listener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1414 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1415 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1416 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1417 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1418 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1419 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1420 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1421 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1422 public void addLineStyleListener(LineStyleListener listener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1423 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1424 if (listener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1425 if (!isListening(LineGetStyle)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1426 setStyleRanges(0, 0, null, null, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1427 renderer.clearLineStyle(0, content.getLineCount()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1428 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1429 addListener(LineGetStyle, new StyledTextListener(listener)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1430 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1431 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1432 * Adds a modify listener. A Modify event is sent by the widget when the widget text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1433 * has changed. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1434 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1435 * @param modifyListener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1436 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1437 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1438 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1439 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1440 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1441 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1442 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1443 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1444 public void addModifyListener(ModifyListener modifyListener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1445 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1446 if (modifyListener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1447 addListener(DWT.Modify, new TypedListener(modifyListener)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1448 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1449 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1450 * Adds a paint object listener. A paint object event is sent by the widget when an object |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1451 * needs to be drawn. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1452 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1453 * @param listener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1454 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1455 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1456 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1457 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1458 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1459 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1460 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1461 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1462 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1463 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1464 * @see PaintObjectListener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1465 * @see PaintObjectEvent |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1466 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1467 public void addPaintObjectListener(PaintObjectListener listener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1468 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1469 if (listener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1470 addListener(PaintObject, new StyledTextListener(listener)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1471 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1472 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1473 * Adds a selection listener. A Selection event is sent by the widget when the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1474 * user changes the selection. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1475 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1476 * When <code>widgetSelected</code> is called, the event x and y fields contain |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1477 * the start and end caret indices of the selection. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1478 * <code>widgetDefaultSelected</code> is not called for StyledTexts. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1479 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1480 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1481 * @param listener the listener which should be notified when the user changes the receiver's selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1482 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1483 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1484 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1485 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1486 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1487 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1488 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1489 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1490 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1491 * @see SelectionListener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1492 * @see #removeSelectionListener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1493 * @see SelectionEvent |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1494 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1495 public void addSelectionListener(SelectionListener listener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1496 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1497 if (listener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1498 addListener(DWT.Selection, new TypedListener(listener)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1499 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1500 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1501 * Adds a verify key listener. A VerifyKey event is sent by the widget when a key |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1502 * is pressed. The widget ignores the key press if the listener sets the doit field |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1503 * of the event to false. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1504 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1505 * @param listener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1506 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1507 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1508 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1509 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1510 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1511 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1512 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1513 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1514 public void addVerifyKeyListener(VerifyKeyListener listener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1515 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1516 if (listener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1517 addListener(VerifyKey, new StyledTextListener(listener)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1518 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1519 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1520 * Adds a verify listener. A Verify event is sent by the widget when the widget text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1521 * is about to change. The listener can set the event text and the doit field to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1522 * change the text that is set in the widget or to force the widget to ignore the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1523 * text change. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1524 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1525 * @param verifyListener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1526 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1527 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1528 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1529 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1530 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1531 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1532 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1533 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1534 public void addVerifyListener(VerifyListener verifyListener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1535 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1536 if (verifyListener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1537 addListener(DWT.Verify, new TypedListener(verifyListener)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1538 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1539 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1540 * Adds a word movement listener. A movement event is sent when the boundary |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1541 * of a word is needed. For example, this occurs during word next and word |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1542 * previous actions. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1543 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1544 * @param movementListener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1545 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1546 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1547 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1548 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1549 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1550 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1551 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1552 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1553 * @see MovementEvent |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1554 * @see MovementListener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1555 * @see #removeWordMovementListener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1556 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1557 * @since 3.3 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1558 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1559 public void addWordMovementListener(MovementListener movementListener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1560 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1561 if (listener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1562 addListener(WordNext, new StyledTextListener(movementListener)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1563 addListener(WordPrevious, new StyledTextListener(movementListener)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1564 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1565 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1566 * Appends a string to the text at the end of the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1567 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1568 * @param string the string to be appended |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1569 * @see #replaceTextRange(int,int,String) |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1570 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1571 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1572 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1573 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1574 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1575 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1576 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1577 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1578 public void append(String string) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1579 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1580 if (string is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1581 DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1582 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1583 int lastChar = Math.max(getCharCount(), 0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1584 replaceTextRange(lastChar, 0, string); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1585 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1586 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1587 * Calculates the scroll bars |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1588 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1589 void calculateScrollBars() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1590 ScrollBar horizontalBar = getHorizontalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1591 ScrollBar verticalBar = getVerticalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1592 setScrollBars(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1593 if (verticalBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1594 verticalBar.setIncrement(getVerticalIncrement()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1595 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1596 if (horizontalBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1597 horizontalBar.setIncrement(getHorizontalIncrement()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1598 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1599 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1600 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1601 * Calculates the top index based on the current vertical scroll offset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1602 * The top index is the index of the topmost fully visible line or the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1603 * topmost partially visible line if no line is fully visible. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1604 * The top index starts at 0. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1605 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1606 void calculateTopIndex(int delta) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1607 int oldTopIndex = topIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1608 int oldTopIndexY = topIndexY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1609 if (isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1610 int verticalIncrement = getVerticalIncrement(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1611 if (verticalIncrement is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1612 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1613 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1614 topIndex = Compatibility.ceil(getVerticalScrollOffset(), verticalIncrement); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1615 // Set top index to partially visible top line if no line is fully |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1616 // visible but at least some of the widget client area is visible. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1617 // Fixes bug 15088. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1618 if (topIndex > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1619 if (clientAreaHeight > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1620 int bottomPixel = getVerticalScrollOffset() + clientAreaHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1621 int fullLineTopPixel = topIndex * verticalIncrement; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1622 int fullLineVisibleHeight = bottomPixel - fullLineTopPixel; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1623 // set top index to partially visible line if no line fully fits in |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1624 // client area or if space is available but not used (the latter should |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1625 // never happen because we use claimBottomFreeSpace) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1626 if (fullLineVisibleHeight < verticalIncrement) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1627 topIndex--; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1628 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1629 } else if (topIndex >= content.getLineCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1630 topIndex = content.getLineCount() - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1631 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1632 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1633 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1634 if (delta >= 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1635 delta -= topIndexY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1636 int lineIndex = topIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1637 int lineCount = content.getLineCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1638 while (lineIndex < lineCount) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1639 if (delta <= 0) break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1640 delta -= renderer.getLineHeight(lineIndex++); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1641 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1642 if (lineIndex < lineCount && -delta + renderer.getLineHeight(lineIndex) <= clientAreaHeight - topMargin - bottomMargin) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1643 topIndex = lineIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1644 topIndexY = -delta; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1645 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1646 topIndex = lineIndex - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1647 topIndexY = -renderer.getLineHeight(topIndex) - delta; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1648 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1649 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1650 delta -= topIndexY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1651 int lineIndex = topIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1652 while (lineIndex > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1653 int lineHeight = renderer.getLineHeight(lineIndex - 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1654 if (delta + lineHeight > 0) break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1655 delta += lineHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1656 lineIndex--; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1657 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1658 if (lineIndex is 0 || -delta + renderer.getLineHeight(lineIndex) <= clientAreaHeight - topMargin - bottomMargin) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1659 topIndex = lineIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1660 topIndexY = - delta; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1661 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1662 topIndex = lineIndex - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1663 topIndexY = - renderer.getLineHeight(topIndex) - delta; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1664 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1665 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1666 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1667 if (topIndex !is oldTopIndex || oldTopIndexY !is topIndexY) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1668 renderer.calculateClientArea(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1669 setScrollBars(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1670 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1671 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1672 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1673 * Hides the scroll bars if widget is created in single line mode. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1674 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1675 static int checkStyle(int style) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1676 if ((style & DWT.SINGLE) !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1677 style &= ~(DWT.H_SCROLL | DWT.V_SCROLL | DWT.WRAP | DWT.MULTI); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1678 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1679 style |= DWT.MULTI; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1680 if ((style & DWT.WRAP) !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1681 style &= ~DWT.H_SCROLL; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1682 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1683 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1684 style |= DWT.NO_REDRAW_RESIZE | DWT.DOUBLE_BUFFERED | DWT.NO_BACKGROUND; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1685 return style; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1686 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1687 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1688 * Scrolls down the text to use new space made available by a resize or by |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1689 * deleted lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1690 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1691 void claimBottomFreeSpace() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1692 int clientAreaHeight = this.clientAreaHeight - topMargin - bottomMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1693 if (isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1694 int lineHeight = renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1695 int newVerticalOffset = Math.max(0, content.getLineCount() * lineHeight - clientAreaHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1696 if (newVerticalOffset < getVerticalScrollOffset()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1697 scrollVertical(newVerticalOffset - getVerticalScrollOffset(), true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1698 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1699 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1700 int bottomIndex = getPartialBottomIndex(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1701 int height = getLinePixel(bottomIndex + 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1702 if (clientAreaHeight > height) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1703 scrollVertical(-getAvailableHeightAbove(clientAreaHeight - height), true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1704 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1705 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1706 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1707 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1708 * Scrolls text to the right to use new space made available by a resize. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1709 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1710 void claimRightFreeSpace() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1711 int newHorizontalOffset = Math.max(0, renderer.getWidth() - (clientAreaWidth - leftMargin - rightMargin)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1712 if (newHorizontalOffset < horizontalScrollOffset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1713 // item is no longer drawn past the right border of the client area |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1714 // align the right end of the item with the right border of the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1715 // client area (window is scrolled right). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1716 scrollHorizontal(newHorizontalOffset - horizontalScrollOffset, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1717 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1718 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1719 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1720 * Removes the widget selection. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1721 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1722 * @param sendEvent a Selection event is sent when set to true and when the selection is actually reset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1723 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1724 void clearSelection(bool sendEvent) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1725 int selectionStart = selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1726 int selectionEnd = selection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1727 resetSelection(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1728 // redraw old selection, if any |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1729 if (selectionEnd - selectionStart > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1730 int length = content.getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1731 // called internally to remove selection after text is removed |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1732 // therefore make sure redraw range is valid. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1733 int redrawStart = Math.min(selectionStart, length); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1734 int redrawEnd = Math.min(selectionEnd, length); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1735 if (redrawEnd - redrawStart > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1736 internalRedrawRange(redrawStart, redrawEnd - redrawStart); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1737 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1738 if (sendEvent) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1739 sendSelectionEvent(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1740 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1741 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1742 } |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
1743 public override Point computeSize (int wHint, int hHint, bool changed) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1744 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1745 int lineCount = (getStyle() & DWT.SINGLE) !is 0 ? 1 : content.getLineCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1746 int width = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1747 int height = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1748 if (wHint is DWT.DEFAULT || hHint is DWT.DEFAULT) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1749 Display display = getDisplay(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1750 int maxHeight = display.getClientArea().height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1751 for (int lineIndex = 0; lineIndex < lineCount; lineIndex++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1752 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1753 if (wordWrap) layout.setWidth(wHint is 0 ? 1 : wHint); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1754 Rectangle rect = layout.getBounds(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1755 height += rect.height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1756 width = Math.max(width, rect.width); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1757 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1758 if (isFixedLineHeight() && height > maxHeight) break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1759 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1760 if (isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1761 height = lineCount * renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1762 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1763 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1764 // Use default values if no text is defined. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1765 if (width is 0) width = DEFAULT_WIDTH; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1766 if (height is 0) height = DEFAULT_HEIGHT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1767 if (wHint !is DWT.DEFAULT) width = wHint; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1768 if (hHint !is DWT.DEFAULT) height = hHint; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1769 int wTrim = leftMargin + rightMargin + getCaretWidth(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1770 int hTrim = topMargin + bottomMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1771 Rectangle rect = computeTrim(0, 0, width + wTrim, height + hTrim); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1772 return new Point (rect.width, rect.height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1773 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1774 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1775 * Copies the selected text to the <code>DND.CLIPBOARD</code> clipboard. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1776 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1777 * The text will be put on the clipboard in plain text format and RTF format. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1778 * The <code>DND.CLIPBOARD</code> clipboard is used for data that is |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1779 * transferred by keyboard accelerator (such as Ctrl+C/Ctrl+V) or |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1780 * by menu action. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1781 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1782 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1783 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1784 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1785 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1786 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1787 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1788 public void copy() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1789 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1790 copy(DND.CLIPBOARD); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1791 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1792 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1793 * Copies the selected text to the specified clipboard. The text will be put in the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1794 * clipboard in plain text format and RTF format. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1795 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1796 * The clipboardType is one of the clipboard constants defined in class |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1797 * <code>DND</code>. The <code>DND.CLIPBOARD</code> clipboard is |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1798 * used for data that is transferred by keyboard accelerator (such as Ctrl+C/Ctrl+V) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1799 * or by menu action. The <code>DND.SELECTION_CLIPBOARD</code> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1800 * clipboard is used for data that is transferred by selecting text and pasting |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1801 * with the middle mouse button. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1802 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1803 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1804 * @param clipboardType indicates the type of clipboard |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1805 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1806 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1807 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1808 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1809 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1810 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1811 * @since 3.1 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1812 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1813 public void copy(int clipboardType) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1814 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1815 if (clipboardType !is DND.CLIPBOARD && clipboardType !is DND.SELECTION_CLIPBOARD) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1816 int length = selection.y - selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1817 if (length > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1818 try { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1819 setClipboardContent(selection.x, length, clipboardType); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1820 } catch (DWTError error) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1821 // Copy to clipboard failed. This happens when another application |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1822 // is accessing the clipboard while we copy. Ignore the error. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1823 // Fixes 1GDQAVN |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1824 // Rethrow all other errors. Fixes bug 17578. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1825 if (error.code !is DND.ERROR_CANNOT_SET_CLIPBOARD) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1826 throw error; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1827 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1828 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1829 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1830 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1831 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1832 * Returns the alignment of the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1833 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1834 * @return the alignment |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1835 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1836 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1837 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1838 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1839 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1840 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1841 * @see #getLineAlignment(int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1842 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1843 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1844 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1845 public int getAlignment() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1846 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1847 return alignment; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1848 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1849 int getAvailableHeightAbove(int height) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1850 int maxHeight = verticalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1851 if (maxHeight is -1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1852 int lineIndex = topIndex - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1853 maxHeight = -topIndexY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1854 if (topIndexY > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1855 maxHeight += renderer.getLineHeight(lineIndex--); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1856 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1857 while (height > maxHeight && lineIndex >= 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1858 maxHeight += renderer.getLineHeight(lineIndex--); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1859 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1860 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1861 return Math.min(height, maxHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1862 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1863 int getAvailableHeightBellow(int height) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1864 int partialBottomIndex = getPartialBottomIndex(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1865 int topY = getLinePixel(partialBottomIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1866 int lineHeight = renderer.getLineHeight(partialBottomIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1867 int availableHeight = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1868 int clientAreaHeight = this.clientAreaHeight - topMargin - bottomMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1869 if (topY + lineHeight > clientAreaHeight) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1870 availableHeight = lineHeight - (clientAreaHeight - topY); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1871 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1872 int lineIndex = partialBottomIndex + 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1873 int lineCount = content.getLineCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1874 while (height > availableHeight && lineIndex < lineCount) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1875 availableHeight += renderer.getLineHeight(lineIndex++); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1876 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1877 return Math.min(height, availableHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1878 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1879 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1880 * Returns a string that uses only the line delimiter specified by the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1881 * StyledTextContent implementation. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1882 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1883 * Returns only the first line if the widget has the DWT.SINGLE style. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1884 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1885 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1886 * @param text the text that may have line delimiters that don't |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1887 * match the model line delimiter. Possible line delimiters |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1888 * are CR ('\r'), LF ('\n'), CR/LF ("\r\n") |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1889 * @return the converted text that only uses the line delimiter |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1890 * specified by the model. Returns only the first line if the widget |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1891 * has the DWT.SINGLE style. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1892 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1893 String getModelDelimitedText(String text) { |
103 | 1894 int length = text.length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1895 if (length is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1896 return text; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1897 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1898 int crIndex = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1899 int lfIndex = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1900 int i = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1901 StringBuffer convertedText = new StringBuffer(length); |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1902 String delimiter = getLineDelimiter(); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1903 while (i < length) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1904 if (crIndex !is -1) { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1905 crIndex = text.indexOf (DWT.CR, i); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1906 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1907 if (lfIndex !is -1) { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1908 lfIndex = text.indexOf (DWT.LF, i); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1909 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1910 if (lfIndex is -1 && crIndex is -1) { // no more line breaks? |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1911 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1912 } else if ((crIndex < lfIndex && crIndex !is -1) || lfIndex is -1) { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1913 convertedText.append(text.substring(i, crIndex)); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1914 if (lfIndex is crIndex + 1) { // CR/LF combination? |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1915 i = lfIndex + 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1916 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1917 i = crIndex + 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1918 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1919 } else { // LF occurs before CR! |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1920 convertedText.append(text.substring(i, lfIndex)); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1921 i = lfIndex + 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1922 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1923 if (isSingleLine()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1924 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1925 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1926 convertedText.append(delimiter); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1927 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1928 // copy remaining text if any and if not in single line mode or no |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1929 // text copied thus far (because there only is one line) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1930 if (i < length && (!isSingleLine() || convertedText.length() is 0)) { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
1931 convertedText.append(text.substring(i)); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1932 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1933 return convertedText.toString(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1934 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1935 bool checkDragDetect(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1936 if (!isListening(DWT.DragDetect)) return false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1937 if (IS_MOTIF) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1938 if (event.button !is 2) return false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1939 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1940 if (event.button !is 1) return false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1941 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1942 if (selection.x is selection.y) return false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1943 int offset = getOffsetAtPoint(event.x, event.y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1944 if (offset > selection.x && offset < selection.y) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1945 return dragDetect(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1946 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1947 return false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1948 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1949 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1950 * Creates default key bindings. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1951 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1952 void createKeyBindings() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1953 int nextKey = isMirrored() ? DWT.ARROW_LEFT : DWT.ARROW_RIGHT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1954 int previousKey = isMirrored() ? DWT.ARROW_RIGHT : DWT.ARROW_LEFT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1955 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1956 // Navigation |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1957 setKeyBinding(DWT.ARROW_UP, ST.LINE_UP); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1958 setKeyBinding(DWT.ARROW_DOWN, ST.LINE_DOWN); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1959 if (IS_CARBON) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1960 setKeyBinding(previousKey | DWT.MOD1, ST.LINE_START); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1961 setKeyBinding(nextKey | DWT.MOD1, ST.LINE_END); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1962 setKeyBinding(DWT.HOME, ST.TEXT_START); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1963 setKeyBinding(DWT.END, ST.TEXT_END); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1964 setKeyBinding(DWT.ARROW_UP | DWT.MOD1, ST.TEXT_START); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1965 setKeyBinding(DWT.ARROW_DOWN | DWT.MOD1, ST.TEXT_END); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1966 setKeyBinding(nextKey | DWT.MOD3, ST.WORD_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1967 setKeyBinding(previousKey | DWT.MOD3, ST.WORD_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1968 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1969 setKeyBinding(DWT.HOME, ST.LINE_START); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1970 setKeyBinding(DWT.END, ST.LINE_END); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1971 setKeyBinding(DWT.HOME | DWT.MOD1, ST.TEXT_START); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1972 setKeyBinding(DWT.END | DWT.MOD1, ST.TEXT_END); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1973 setKeyBinding(nextKey | DWT.MOD1, ST.WORD_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1974 setKeyBinding(previousKey | DWT.MOD1, ST.WORD_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1975 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1976 setKeyBinding(DWT.PAGE_UP, ST.PAGE_UP); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1977 setKeyBinding(DWT.PAGE_DOWN, ST.PAGE_DOWN); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1978 setKeyBinding(DWT.PAGE_UP | DWT.MOD1, ST.WINDOW_START); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1979 setKeyBinding(DWT.PAGE_DOWN | DWT.MOD1, ST.WINDOW_END); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1980 setKeyBinding(nextKey, ST.COLUMN_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1981 setKeyBinding(previousKey, ST.COLUMN_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1982 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1983 // Selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1984 setKeyBinding(DWT.ARROW_UP | DWT.MOD2, ST.SELECT_LINE_UP); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1985 setKeyBinding(DWT.ARROW_DOWN | DWT.MOD2, ST.SELECT_LINE_DOWN); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1986 if (IS_CARBON) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1987 setKeyBinding(previousKey | DWT.MOD1 | DWT.MOD2, ST.SELECT_LINE_START); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1988 setKeyBinding(nextKey | DWT.MOD1 | DWT.MOD2, ST.SELECT_LINE_END); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1989 setKeyBinding(DWT.HOME | DWT.MOD2, ST.SELECT_TEXT_START); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1990 setKeyBinding(DWT.END | DWT.MOD2, ST.SELECT_TEXT_END); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1991 setKeyBinding(DWT.ARROW_UP | DWT.MOD1 | DWT.MOD2, ST.SELECT_TEXT_START); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1992 setKeyBinding(DWT.ARROW_DOWN | DWT.MOD1 | DWT.MOD2, ST.SELECT_TEXT_END); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1993 setKeyBinding(nextKey | DWT.MOD2 | DWT.MOD3, ST.SELECT_WORD_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1994 setKeyBinding(previousKey | DWT.MOD2 | DWT.MOD3, ST.SELECT_WORD_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1995 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1996 setKeyBinding(DWT.HOME | DWT.MOD2, ST.SELECT_LINE_START); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1997 setKeyBinding(DWT.END | DWT.MOD2, ST.SELECT_LINE_END); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1998 setKeyBinding(DWT.HOME | DWT.MOD1 | DWT.MOD2, ST.SELECT_TEXT_START); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
1999 setKeyBinding(DWT.END | DWT.MOD1 | DWT.MOD2, ST.SELECT_TEXT_END); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2000 setKeyBinding(nextKey | DWT.MOD1 | DWT.MOD2, ST.SELECT_WORD_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2001 setKeyBinding(previousKey | DWT.MOD1 | DWT.MOD2, ST.SELECT_WORD_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2002 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2003 setKeyBinding(DWT.PAGE_UP | DWT.MOD2, ST.SELECT_PAGE_UP); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2004 setKeyBinding(DWT.PAGE_DOWN | DWT.MOD2, ST.SELECT_PAGE_DOWN); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2005 setKeyBinding(DWT.PAGE_UP | DWT.MOD1 | DWT.MOD2, ST.SELECT_WINDOW_START); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2006 setKeyBinding(DWT.PAGE_DOWN | DWT.MOD1 | DWT.MOD2, ST.SELECT_WINDOW_END); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2007 setKeyBinding(nextKey | DWT.MOD2, ST.SELECT_COLUMN_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2008 setKeyBinding(previousKey | DWT.MOD2, ST.SELECT_COLUMN_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2009 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2010 // Modification |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2011 // Cut, Copy, Paste |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2012 setKeyBinding('X' | DWT.MOD1, ST.CUT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2013 setKeyBinding('C' | DWT.MOD1, ST.COPY); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2014 setKeyBinding('V' | DWT.MOD1, ST.PASTE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2015 if (IS_CARBON) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2016 setKeyBinding(DWT.DEL | DWT.MOD2, ST.DELETE_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2017 setKeyBinding(DWT.BS | DWT.MOD3, ST.DELETE_WORD_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2018 setKeyBinding(DWT.DEL | DWT.MOD3, ST.DELETE_WORD_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2019 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2020 // Cut, Copy, Paste Wordstar style |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2021 setKeyBinding(DWT.DEL | DWT.MOD2, ST.CUT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2022 setKeyBinding(DWT.INSERT | DWT.MOD1, ST.COPY); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2023 setKeyBinding(DWT.INSERT | DWT.MOD2, ST.PASTE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2024 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2025 setKeyBinding(DWT.BS | DWT.MOD2, ST.DELETE_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2026 setKeyBinding(DWT.BS, ST.DELETE_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2027 setKeyBinding(DWT.DEL, ST.DELETE_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2028 setKeyBinding(DWT.BS | DWT.MOD1, ST.DELETE_WORD_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2029 setKeyBinding(DWT.DEL | DWT.MOD1, ST.DELETE_WORD_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2030 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2031 // Miscellaneous |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2032 setKeyBinding(DWT.INSERT, ST.TOGGLE_OVERWRITE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2033 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2034 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2035 * Create the bitmaps to use for the caret in bidi mode. This |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2036 * method only needs to be called upon widget creation and when the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2037 * font changes (the caret bitmap height needs to match font height). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2038 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2039 void createCaretBitmaps() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2040 int caretWidth = BIDI_CARET_WIDTH; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2041 Display display = getDisplay(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2042 if (leftCaretBitmap !is null) { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
2043 if (defaultCaret !is null && leftCaretBitmap==/*eq*/defaultCaret.getImage()) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2044 defaultCaret.setImage(null); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2045 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2046 leftCaretBitmap.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2047 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2048 int lineHeight = renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2049 leftCaretBitmap = new Image(display, caretWidth, lineHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2050 GC gc = new GC (leftCaretBitmap); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2051 gc.setBackground(display.getSystemColor(DWT.COLOR_BLACK)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2052 gc.fillRectangle(0, 0, caretWidth, lineHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2053 gc.setForeground(display.getSystemColor(DWT.COLOR_WHITE)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2054 gc.drawLine(0,0,0,lineHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2055 gc.drawLine(0,0,caretWidth-1,0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2056 gc.drawLine(0,1,1,1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2057 gc.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2058 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2059 if (rightCaretBitmap !is null) { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
2060 if (defaultCaret !is null && rightCaretBitmap==/*eq*/defaultCaret.getImage()) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2061 defaultCaret.setImage(null); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2062 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2063 rightCaretBitmap.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2064 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2065 rightCaretBitmap = new Image(display, caretWidth, lineHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2066 gc = new GC (rightCaretBitmap); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2067 gc.setBackground(display.getSystemColor(DWT.COLOR_BLACK)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2068 gc.fillRectangle(0, 0, caretWidth, lineHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2069 gc.setForeground(display.getSystemColor(DWT.COLOR_WHITE)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2070 gc.drawLine(caretWidth-1,0,caretWidth-1,lineHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2071 gc.drawLine(0,0,caretWidth-1,0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2072 gc.drawLine(caretWidth-1,1,1,1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2073 gc.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2074 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2075 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2076 * Moves the selected text to the clipboard. The text will be put in the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2077 * clipboard in plain text format and RTF format. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2078 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2079 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2080 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2081 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2082 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2083 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2084 public void cut(){ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2085 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2086 int length = selection.y - selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2087 if (length > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2088 try { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2089 setClipboardContent(selection.x, length, DND.CLIPBOARD); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2090 } catch (DWTError error) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2091 // Copy to clipboard failed. This happens when another application |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2092 // is accessing the clipboard while we copy. Ignore the error. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2093 // Fixes 1GDQAVN |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2094 // Rethrow all other errors. Fixes bug 17578. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2095 if (error.code !is DND.ERROR_CANNOT_SET_CLIPBOARD) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2096 throw error; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2097 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2098 // Abort cut operation if copy to clipboard fails. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2099 // Fixes bug 21030. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2100 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2101 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2102 doDelete(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2103 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2104 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2105 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2106 * A mouse move event has occurred. See if we should start autoscrolling. If |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2107 * the move position is outside of the client area, initiate autoscrolling. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2108 * Otherwise, we've moved back into the widget so end autoscrolling. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2109 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2110 void doAutoScroll(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2111 if (event.y > clientAreaHeight) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2112 doAutoScroll(DWT.DOWN, event.y - clientAreaHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2113 } else if (event.y < 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2114 doAutoScroll(DWT.UP, -event.y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2115 } else if (event.x < leftMargin && !wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2116 doAutoScroll(ST.COLUMN_PREVIOUS, leftMargin - event.x); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2117 } else if (event.x > clientAreaWidth - leftMargin - rightMargin && !wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2118 doAutoScroll(ST.COLUMN_NEXT, event.x - (clientAreaWidth - leftMargin - rightMargin)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2119 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2120 endAutoScroll(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2121 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2122 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2123 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2124 * Initiates autoscrolling. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2125 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2126 * @param direction DWT.UP, DWT.DOWN, DWT.COLUMN_NEXT, DWT.COLUMN_PREVIOUS |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2127 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2128 void doAutoScroll(int direction, int distance) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2129 autoScrollDistance = distance; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2130 // If we're already autoscrolling in the given direction do nothing |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2131 if (autoScrollDirection is direction) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2132 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2133 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2134 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2135 Runnable timer = null; |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
2136 final Display disp = getDisplay(); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2137 // Set a timer that will simulate the user pressing and holding |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2138 // down a cursor key (i.e., arrowUp, arrowDown). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2139 if (direction is DWT.UP) { |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
2140 timer = new class(disp) Runnable { |
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
2141 Display display; |
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
2142 this( Display d ){ this.display = d; } |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2143 public void run() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2144 if (autoScrollDirection is DWT.UP) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2145 doSelectionPageUp(autoScrollDistance); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2146 display.timerExec(V_SCROLL_RATE, this); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2147 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2148 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2149 }; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2150 autoScrollDirection = direction; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2151 display.timerExec(V_SCROLL_RATE, timer); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2152 } else if (direction is DWT.DOWN) { |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
2153 timer = new class(disp) Runnable { |
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
2154 Display display; |
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
2155 this( Display d ){ this.display = d; } |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2156 public void run() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2157 if (autoScrollDirection is DWT.DOWN) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2158 doSelectionPageDown(autoScrollDistance); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2159 display.timerExec(V_SCROLL_RATE, this); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2160 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2161 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2162 }; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2163 autoScrollDirection = direction; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2164 display.timerExec(V_SCROLL_RATE, timer); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2165 } else if (direction is ST.COLUMN_NEXT) { |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
2166 timer = new class(disp) Runnable { |
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
2167 Display display; |
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
2168 this( Display d ){ this.display = d; } |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2169 public void run() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2170 if (autoScrollDirection is ST.COLUMN_NEXT) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2171 doVisualNext(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2172 setMouseWordSelectionAnchor(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2173 doMouseSelection(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2174 display.timerExec(H_SCROLL_RATE, this); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2175 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2176 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2177 }; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2178 autoScrollDirection = direction; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2179 display.timerExec(H_SCROLL_RATE, timer); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2180 } else if (direction is ST.COLUMN_PREVIOUS) { |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
2181 timer = new class(disp) Runnable { |
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
2182 Display display; |
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
2183 this( Display d ){ this.display = d; } |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2184 public void run() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2185 if (autoScrollDirection is ST.COLUMN_PREVIOUS) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2186 doVisualPrevious(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2187 setMouseWordSelectionAnchor(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2188 doMouseSelection(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2189 display.timerExec(H_SCROLL_RATE, this); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2190 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2191 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2192 }; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2193 autoScrollDirection = direction; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2194 display.timerExec(H_SCROLL_RATE, timer); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2195 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2196 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2197 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2198 * Deletes the previous character. Delete the selected text if any. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2199 * Move the caret in front of the deleted text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2200 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2201 void doBackspace() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2202 Event event = new Event(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2203 event.text = ""; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2204 if (selection.x !is selection.y) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2205 event.start = selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2206 event.end = selection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2207 sendKeyEvent(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2208 } else if (caretOffset > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2209 int lineIndex = content.getLineAtOffset(caretOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2210 int lineOffset = content.getOffsetAtLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2211 if (caretOffset is lineOffset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2212 lineOffset = content.getOffsetAtLine(lineIndex - 1); |
103 | 2213 event.start = lineOffset + content.getLine(lineIndex - 1).length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2214 event.end = caretOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2215 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2216 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2217 int start = layout.getPreviousOffset(caretOffset - lineOffset, DWT.MOVEMENT_CHAR); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2218 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2219 event.start = start + lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2220 event.end = caretOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2221 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2222 sendKeyEvent(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2223 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2224 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2225 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2226 * Replaces the selection with the character or insert the character at the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2227 * current caret position if no selection exists. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2228 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2229 * If a carriage return was typed replace it with the line break character |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2230 * used by the widget on this platform. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2231 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2232 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2233 * @param key the character typed by the user |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2234 */ |
182
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
2235 void doContent(dchar key) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2236 if (textLimit > 0 && |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2237 content.getCharCount() - (selection.y - selection.x) >= textLimit) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2238 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2239 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2240 Event event = new Event(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2241 event.start = selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2242 event.end = selection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2243 // replace a CR line break with the widget line break |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2244 // CR does not make sense on Windows since most (all?) applications |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2245 // don't recognize CR as a line break. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2246 if (key is DWT.CR || key is DWT.LF) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2247 if (!isSingleLine()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2248 event.text = getLineDelimiter(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2249 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2250 } else if (selection.x is selection.y && overwrite && key !is TAB) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2251 // no selection and overwrite mode is on and the typed key is not a |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2252 // tab character (tabs are always inserted without overwriting)? |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2253 int lineIndex = content.getLineAtOffset(event.end); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2254 int lineOffset = content.getOffsetAtLine(lineIndex); |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
2255 String line = content.getLine(lineIndex); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2256 // replace character at caret offset if the caret is not at the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2257 // end of the line |
103 | 2258 if (event.end < lineOffset + line.length) { |
182
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
2259 event.end+=dcharToString( key ).length; |
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
2260 } |
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
2261 event.text = dcharToString( key ); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2262 } else { |
182
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
2263 event.text = dcharToString( key ); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2264 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2265 if (event.text !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2266 sendKeyEvent(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2267 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2268 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2269 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2270 * Moves the caret after the last character of the widget content. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2271 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2272 void doContentEnd() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2273 // place caret at end of first line if receiver is in single |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2274 // line mode. fixes 4820. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2275 if (isSingleLine()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2276 doLineEnd(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2277 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2278 int length = content.getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2279 if (caretOffset < length) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2280 caretOffset = length; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2281 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2282 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2283 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2284 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2285 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2286 * Moves the caret in front of the first character of the widget content. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2287 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2288 void doContentStart() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2289 if (caretOffset > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2290 caretOffset = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2291 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2292 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2293 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2294 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2295 * Moves the caret to the start of the selection if a selection exists. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2296 * Otherwise, if no selection exists move the cursor according to the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2297 * cursor selection rules. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2298 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2299 * @see #doSelectionCursorPrevious |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2300 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2301 void doCursorPrevious() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2302 if (selection.y - selection.x > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2303 caretOffset = selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2304 caretAlignment = OFFSET_LEADING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2305 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2306 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2307 doSelectionCursorPrevious(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2308 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2309 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2310 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2311 * Moves the caret to the end of the selection if a selection exists. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2312 * Otherwise, if no selection exists move the cursor according to the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2313 * cursor selection rules. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2314 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2315 * @see #doSelectionCursorNext |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2316 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2317 void doCursorNext() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2318 if (selection.y - selection.x > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2319 caretOffset = selection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2320 caretAlignment = PREVIOUS_OFFSET_TRAILING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2321 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2322 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2323 doSelectionCursorNext(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2324 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2325 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2326 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2327 * Deletes the next character. Delete the selected text if any. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2328 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2329 void doDelete() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2330 Event event = new Event(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2331 event.text = ""; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2332 if (selection.x !is selection.y) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2333 event.start = selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2334 event.end = selection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2335 sendKeyEvent(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2336 } else if (caretOffset < content.getCharCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2337 int line = content.getLineAtOffset(caretOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2338 int lineOffset = content.getOffsetAtLine(line); |
103 | 2339 int lineLength = content.getLine(line).length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2340 if (caretOffset is lineOffset + lineLength) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2341 event.start = caretOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2342 event.end = content.getOffsetAtLine(line + 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2343 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2344 event.start = caretOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2345 event.end = getClusterNext(caretOffset, line); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2346 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2347 sendKeyEvent(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2348 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2349 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2350 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2351 * Deletes the next word. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2352 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2353 void doDeleteWordNext() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2354 if (selection.x !is selection.y) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2355 // if a selection exists, treat the as if |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2356 // only the delete key was pressed |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2357 doDelete(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2358 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2359 Event event = new Event(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2360 event.text = ""; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2361 event.start = caretOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2362 event.end = getWordNext(caretOffset, DWT.MOVEMENT_WORD); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2363 sendKeyEvent(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2364 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2365 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2366 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2367 * Deletes the previous word. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2368 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2369 void doDeleteWordPrevious() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2370 if (selection.x !is selection.y) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2371 // if a selection exists, treat as if |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2372 // only the backspace key was pressed |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2373 doBackspace(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2374 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2375 Event event = new Event(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2376 event.text = ""; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2377 event.start = getWordPrevious(caretOffset, DWT.MOVEMENT_WORD); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2378 event.end = caretOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2379 sendKeyEvent(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2380 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2381 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2382 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2383 * Moves the caret one line down and to the same character offset relative |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2384 * to the beginning of the line. Move the caret to the end of the new line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2385 * if the new line is shorter than the character offset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2386 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2387 void doLineDown(bool select) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2388 int caretLine = getCaretLine(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2389 int lineCount = content.getLineCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2390 int y = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2391 bool lastLine = false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2392 if (wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2393 int lineOffset = content.getOffsetAtLine(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2394 int offsetInLine = caretOffset - lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2395 TextLayout layout = renderer.getTextLayout(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2396 int lineIndex = getVisualLineIndex(layout, offsetInLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2397 int layoutLineCount = layout.getLineCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2398 if (lineIndex is layoutLineCount - 1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2399 lastLine = caretLine is lineCount - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2400 caretLine++; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2401 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2402 y = layout.getLineBounds(lineIndex + 1).y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2403 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2404 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2405 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2406 lastLine = caretLine is lineCount - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2407 caretLine++; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2408 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2409 if (lastLine) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2410 if (select) caretOffset = content.getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2411 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2412 caretOffset = getOffsetAtPoint(columnX, y, caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2413 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2414 int oldColumnX = columnX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2415 int oldHScrollOffset = horizontalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2416 if (select) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2417 setMouseWordSelectionAnchor(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2418 // select first and then scroll to reduce flash when key |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2419 // repeat scrolls lots of lines |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2420 doSelection(ST.COLUMN_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2421 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2422 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2423 int hScrollChange = oldHScrollOffset - horizontalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2424 columnX = oldColumnX + hScrollChange; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2425 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2426 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2427 * Moves the caret to the end of the line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2428 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2429 void doLineEnd() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2430 int caretLine = getCaretLine(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2431 int lineOffset = content.getOffsetAtLine(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2432 int lineEndOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2433 if (wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2434 TextLayout layout = renderer.getTextLayout(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2435 int offsetInLine = caretOffset - lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2436 int lineIndex = getVisualLineIndex(layout, offsetInLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2437 int[] offsets = layout.getLineOffsets(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2438 lineEndOffset = lineOffset + offsets[lineIndex + 1]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2439 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2440 } else { |
103 | 2441 int lineLength = content.getLine(caretLine).length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2442 lineEndOffset = lineOffset + lineLength; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2443 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2444 if (caretOffset < lineEndOffset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2445 caretOffset = lineEndOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2446 caretAlignment = PREVIOUS_OFFSET_TRAILING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2447 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2448 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2449 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2450 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2451 * Moves the caret to the beginning of the line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2452 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2453 void doLineStart() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2454 int caretLine = getCaretLine(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2455 int lineOffset = content.getOffsetAtLine(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2456 if (wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2457 TextLayout layout = renderer.getTextLayout(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2458 int offsetInLine = caretOffset - lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2459 int lineIndex = getVisualLineIndex(layout, offsetInLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2460 int[] offsets = layout.getLineOffsets(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2461 lineOffset += offsets[lineIndex]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2462 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2463 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2464 if (caretOffset > lineOffset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2465 caretOffset = lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2466 caretAlignment = OFFSET_LEADING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2467 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2468 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2469 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2470 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2471 * Moves the caret one line up and to the same character offset relative |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2472 * to the beginning of the line. Move the caret to the end of the new line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2473 * if the new line is shorter than the character offset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2474 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2475 void doLineUp(bool select) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2476 int caretLine = getCaretLine(), y = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2477 bool firstLine = false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2478 if (wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2479 int lineOffset = content.getOffsetAtLine(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2480 int offsetInLine = caretOffset - lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2481 TextLayout layout = renderer.getTextLayout(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2482 int lineIndex = getVisualLineIndex(layout, offsetInLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2483 if (lineIndex is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2484 firstLine = caretLine is 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2485 if (!firstLine) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2486 caretLine--; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2487 y = renderer.getLineHeight(caretLine) - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2488 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2489 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2490 y = layout.getLineBounds(lineIndex - 1).y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2491 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2492 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2493 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2494 firstLine = caretLine is 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2495 caretLine--; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2496 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2497 if (firstLine) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2498 if (select) caretOffset = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2499 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2500 caretOffset = getOffsetAtPoint(columnX, y, caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2501 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2502 int oldColumnX = columnX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2503 int oldHScrollOffset = horizontalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2504 if (select) setMouseWordSelectionAnchor(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2505 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2506 if (select) doSelection(ST.COLUMN_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2507 int hScrollChange = oldHScrollOffset - horizontalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2508 columnX = oldColumnX + hScrollChange; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2509 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2510 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2511 * Moves the caret to the specified location. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2512 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2513 * @param x x location of the new caret position |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2514 * @param y y location of the new caret position |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2515 * @param select the location change is a selection operation. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2516 * include the line delimiter in the selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2517 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2518 void doMouseLocationChange(int x, int y, bool select) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2519 int line = getLineIndex(y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2520 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2521 updateCaretDirection = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2522 // allow caret to be placed below first line only if receiver is |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2523 // not in single line mode. fixes 4820. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2524 if (line < 0 || (isSingleLine() && line > 0)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2525 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2526 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2527 int oldCaretAlignment = caretAlignment; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2528 int newCaretOffset = getOffsetAtPoint(x, y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2529 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2530 if (clickCount > 1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2531 // double click word select the previous/next word. fixes bug 15610 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2532 newCaretOffset = doMouseWordSelect(x, newCaretOffset, line); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2533 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2534 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2535 int newCaretLine = content.getLineAtOffset(newCaretOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2536 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2537 // Is the mouse within the left client area border or on |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2538 // a different line? If not the autoscroll selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2539 // could be incorrectly reset. Fixes 1GKM3XS |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2540 if (0 <= y && y < clientAreaHeight && |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2541 (0 <= x && x < clientAreaWidth || wordWrap || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2542 newCaretLine !is content.getLineAtOffset(caretOffset))) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2543 if (newCaretOffset !is caretOffset || caretAlignment !is oldCaretAlignment) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2544 caretOffset = newCaretOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2545 if (select) doMouseSelection(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2546 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2547 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2548 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2549 if (!select) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2550 caretOffset = newCaretOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2551 clearSelection(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2552 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2553 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2554 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2555 * Updates the selection based on the caret position |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2556 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2557 void doMouseSelection() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2558 if (caretOffset <= selection.x || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2559 (caretOffset > selection.x && |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2560 caretOffset < selection.y && selectionAnchor is selection.x)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2561 doSelection(ST.COLUMN_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2562 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2563 doSelection(ST.COLUMN_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2564 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2565 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2566 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2567 * Returns the offset of the word at the specified offset. |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
2568 * If the current selection extends from high index to low index |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2569 * (i.e., right to left, or caret is at left border of selection on |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2570 * non-bidi platforms) the start offset of the word preceding the |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
2571 * selection is returned. If the current selection extends from |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2572 * low index to high index the end offset of the word following |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2573 * the selection is returned. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2574 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2575 * @param x mouse x location |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2576 * @param newCaretOffset caret offset of the mouse cursor location |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2577 * @param line line index of the mouse cursor location |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2578 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2579 int doMouseWordSelect(int x, int newCaretOffset, int line) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2580 // flip selection anchor based on word selection direction from |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2581 // base double click. Always do this here (and don't rely on doAutoScroll) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2582 // because auto scroll only does not cover all possible mouse selections |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2583 // (e.g., mouse x < 0 && mouse y > caret line y) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2584 if (newCaretOffset < selectionAnchor && selectionAnchor is selection.x) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2585 selectionAnchor = doubleClickSelection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2586 } else if (newCaretOffset > selectionAnchor && selectionAnchor is selection.y) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2587 selectionAnchor = doubleClickSelection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2588 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2589 if (0 <= x && x < clientAreaWidth) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2590 bool wordSelect = (clickCount & 1) is 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2591 if (caretOffset is selection.x) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2592 if (wordSelect) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2593 newCaretOffset = getWordPrevious(newCaretOffset, DWT.MOVEMENT_WORD_START); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2594 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2595 newCaretOffset = content.getOffsetAtLine(line); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2596 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2597 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2598 if (wordSelect) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2599 newCaretOffset = getWordNext(newCaretOffset, DWT.MOVEMENT_WORD_END); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2600 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2601 int lineEnd = content.getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2602 if (line + 1 < content.getLineCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2603 lineEnd = content.getOffsetAtLine(line + 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2604 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2605 newCaretOffset = lineEnd; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2606 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2607 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2608 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2609 return newCaretOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2610 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2611 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2612 * Scrolls one page down so that the last line (truncated or whole) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2613 * of the current page becomes the fully visible top line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2614 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2615 * The caret is scrolled the same number of lines so that its location |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2616 * relative to the top line remains the same. The exception is the end |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2617 * of the text where a full page scroll is not possible. In this case |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2618 * the caret is moved after the last character. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2619 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2620 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2621 * @param select whether or not to select the page |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2622 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2623 void doPageDown(bool select, int height) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2624 if (isSingleLine()) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2625 int oldColumnX = columnX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2626 int oldHScrollOffset = horizontalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2627 if (isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2628 int lineCount = content.getLineCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2629 int caretLine = getCaretLine(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2630 if (caretLine < lineCount - 1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2631 int lineHeight = renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2632 int lines = (height is -1 ? clientAreaHeight : height) / lineHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2633 int scrollLines = Math.min(lineCount - caretLine - 1, lines); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2634 // ensure that scrollLines never gets negative and at least one |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2635 // line is scrolled. fixes bug 5602. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2636 scrollLines = Math.max(1, scrollLines); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2637 caretOffset = getOffsetAtPoint(columnX, getLinePixel(caretLine + scrollLines)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2638 if (select) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2639 doSelection(ST.COLUMN_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2640 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2641 // scroll one page down or to the bottom |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2642 int verticalMaximum = lineCount * getVerticalIncrement(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2643 int pageSize = clientAreaHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2644 int verticalScrollOffset = getVerticalScrollOffset(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2645 int scrollOffset = verticalScrollOffset + scrollLines * getVerticalIncrement(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2646 if (scrollOffset + pageSize > verticalMaximum) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2647 scrollOffset = verticalMaximum - pageSize; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2648 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2649 if (scrollOffset > verticalScrollOffset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2650 scrollVertical(scrollOffset - verticalScrollOffset, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2651 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2652 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2653 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2654 int lineCount = content.getLineCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2655 int caretLine = getCaretLine(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2656 int lineIndex, lineHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2657 if (height is -1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2658 lineIndex = getPartialBottomIndex(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2659 int topY = getLinePixel(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2660 lineHeight = renderer.getLineHeight(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2661 height = topY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2662 if (topY + lineHeight <= clientAreaHeight) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2663 height += lineHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2664 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2665 if (wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2666 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2667 int y = clientAreaHeight - topY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2668 for (int i = 0; i < layout.getLineCount(); i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2669 Rectangle bounds = layout.getLineBounds(i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2670 if (bounds.contains(bounds.x, y)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2671 height += bounds.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2672 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2673 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2674 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2675 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2676 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2677 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2678 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2679 lineIndex = getLineIndex(height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2680 int topLineY = getLinePixel(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2681 if (wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2682 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2683 int y = height - topLineY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2684 for (int i = 0; i < layout.getLineCount(); i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2685 Rectangle bounds = layout.getLineBounds(i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2686 if (bounds.contains(bounds.x, y)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2687 height = topLineY + bounds.y + bounds.height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2688 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2689 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2690 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2691 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2692 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2693 height = topLineY + renderer.getLineHeight(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2694 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2695 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2696 int caretHeight = height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2697 if (wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2698 TextLayout layout = renderer.getTextLayout(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2699 int offsetInLine = caretOffset - content.getOffsetAtLine(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2700 lineIndex = getVisualLineIndex(layout, offsetInLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2701 caretHeight += layout.getLineBounds(lineIndex).y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2702 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2703 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2704 lineIndex = caretLine; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2705 lineHeight = renderer.getLineHeight(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2706 while (caretHeight - lineHeight >= 0 && lineIndex < lineCount - 1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2707 caretHeight -= lineHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2708 lineHeight = renderer.getLineHeight(++lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2709 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2710 caretOffset = getOffsetAtPoint(columnX, caretHeight, lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2711 if (select) doSelection(ST.COLUMN_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2712 height = getAvailableHeightBellow(height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2713 scrollVertical(height, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2714 if (height is 0) setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2715 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2716 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2717 int hScrollChange = oldHScrollOffset - horizontalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2718 columnX = oldColumnX + hScrollChange; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2719 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2720 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2721 * Moves the cursor to the end of the last fully visible line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2722 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2723 void doPageEnd() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2724 // go to end of line if in single line mode. fixes 5673 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2725 if (isSingleLine()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2726 doLineEnd(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2727 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2728 int bottomOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2729 if (wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2730 int lineIndex = getPartialBottomIndex(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2731 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2732 int y = (clientAreaHeight - bottomMargin) - getLinePixel(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2733 int index = layout.getLineCount() - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2734 while (index >= 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2735 Rectangle bounds = layout.getLineBounds(index); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2736 if (y >= bounds.y + bounds.height) break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2737 index--; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2738 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2739 if (index is -1 && lineIndex > 0) { |
103 | 2740 bottomOffset = content.getOffsetAtLine(lineIndex - 1) + content.getLine(lineIndex - 1).length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2741 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2742 bottomOffset = content.getOffsetAtLine(lineIndex) + Math.max(0, layout.getLineOffsets()[index + 1] - 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2743 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2744 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2745 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2746 int lineIndex = getBottomIndex(); |
103 | 2747 bottomOffset = content.getOffsetAtLine(lineIndex) + content.getLine(lineIndex).length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2748 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2749 if (caretOffset < bottomOffset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2750 caretOffset = bottomOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2751 caretAlignment = OFFSET_LEADING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2752 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2753 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2754 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2755 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2756 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2757 * Moves the cursor to the beginning of the first fully visible line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2758 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2759 void doPageStart() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2760 int topOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2761 if (wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2762 int y, lineIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2763 if (topIndexY > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2764 lineIndex = topIndex - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2765 y = renderer.getLineHeight(lineIndex) - topIndexY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2766 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2767 lineIndex = topIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2768 y = -topIndexY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2769 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2770 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2771 int index = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2772 int lineCount = layout.getLineCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2773 while (index < lineCount) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2774 Rectangle bounds = layout.getLineBounds(index); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2775 if (y <= bounds.y) break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2776 index++; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2777 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2778 if (index is lineCount) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2779 topOffset = content.getOffsetAtLine(lineIndex + 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2780 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2781 topOffset = content.getOffsetAtLine(lineIndex) + layout.getLineOffsets()[index]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2782 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2783 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2784 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2785 topOffset = content.getOffsetAtLine(topIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2786 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2787 if (caretOffset > topOffset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2788 caretOffset = topOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2789 caretAlignment = OFFSET_LEADING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2790 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2791 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2792 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2793 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2794 * Scrolls one page up so that the first line (truncated or whole) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2795 * of the current page becomes the fully visible last line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2796 * The caret is scrolled the same number of lines so that its location |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2797 * relative to the top line remains the same. The exception is the beginning |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2798 * of the text where a full page scroll is not possible. In this case the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2799 * caret is moved in front of the first character. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2800 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2801 void doPageUp(bool select, int height) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2802 if (isSingleLine()) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2803 int oldHScrollOffset = horizontalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2804 int oldColumnX = columnX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2805 if (isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2806 int caretLine = getCaretLine(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2807 if (caretLine > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2808 int lineHeight = renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2809 int lines = (height is -1 ? clientAreaHeight : height) / lineHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2810 int scrollLines = Math.max(1, Math.min(caretLine, lines)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2811 caretLine -= scrollLines; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2812 caretOffset = getOffsetAtPoint(columnX, getLinePixel(caretLine)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2813 if (select) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2814 doSelection(ST.COLUMN_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2815 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2816 int verticalScrollOffset = getVerticalScrollOffset(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2817 int scrollOffset = Math.max(0, verticalScrollOffset - scrollLines * getVerticalIncrement()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2818 if (scrollOffset < verticalScrollOffset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2819 scrollVertical(scrollOffset - verticalScrollOffset, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2820 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2821 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2822 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2823 int caretLine = getCaretLine(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2824 int lineHeight, lineIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2825 if (height is -1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2826 if (topIndexY is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2827 height = clientAreaHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2828 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2829 int y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2830 if (topIndex > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2831 lineIndex = topIndex - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2832 lineHeight = renderer.getLineHeight(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2833 height = clientAreaHeight - topIndexY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2834 y = lineHeight - topIndexY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2835 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2836 lineIndex = topIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2837 lineHeight = renderer.getLineHeight(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2838 height = clientAreaHeight - (lineHeight + topIndexY); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2839 y = -topIndexY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2840 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2841 if (wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2842 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2843 for (int i = 0; i < layout.getLineCount(); i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2844 Rectangle bounds = layout.getLineBounds(i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2845 if (bounds.contains(bounds.x, y)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2846 height += lineHeight - (bounds.y + bounds.height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2847 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2848 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2849 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2850 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2851 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2852 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2853 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2854 lineIndex = getLineIndex(clientAreaHeight - height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2855 int topLineY = getLinePixel(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2856 if (wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2857 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2858 int y = topLineY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2859 for (int i = 0; i < layout.getLineCount(); i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2860 Rectangle bounds = layout.getLineBounds(i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2861 if (bounds.contains(bounds.x, y)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2862 height = clientAreaHeight - (topLineY + bounds.y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2863 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2864 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2865 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2866 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2867 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2868 height = clientAreaHeight - topLineY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2869 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2870 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2871 int caretHeight = height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2872 if (wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2873 TextLayout layout = renderer.getTextLayout(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2874 int offsetInLine = caretOffset - content.getOffsetAtLine(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2875 lineIndex = getVisualLineIndex(layout, offsetInLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2876 caretHeight += layout.getBounds().height - layout.getLineBounds(lineIndex).y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2877 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2878 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2879 lineIndex = caretLine; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2880 lineHeight = renderer.getLineHeight(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2881 while (caretHeight - lineHeight >= 0 && lineIndex > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2882 caretHeight -= lineHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2883 lineHeight = renderer.getLineHeight(--lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2884 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2885 lineHeight = renderer.getLineHeight(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2886 caretOffset = getOffsetAtPoint(columnX, lineHeight - caretHeight, lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2887 if (select) doSelection(ST.COLUMN_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2888 height = getAvailableHeightAbove(height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2889 scrollVertical(-height, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2890 if (height is 0) setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2891 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2892 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2893 int hScrollChange = oldHScrollOffset - horizontalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2894 columnX = oldColumnX + hScrollChange; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2895 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2896 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2897 * Updates the selection to extend to the current caret position. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2898 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2899 void doSelection(int direction) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2900 int redrawStart = -1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2901 int redrawEnd = -1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2902 if (selectionAnchor is -1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2903 selectionAnchor = selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2904 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2905 if (direction is ST.COLUMN_PREVIOUS) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2906 if (caretOffset < selection.x) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2907 // grow selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2908 redrawEnd = selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2909 redrawStart = selection.x = caretOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2910 // check if selection has reversed direction |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2911 if (selection.y !is selectionAnchor) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2912 redrawEnd = selection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2913 selection.y = selectionAnchor; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2914 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2915 // test whether selection actually changed. Fixes 1G71EO1 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2916 } else if (selectionAnchor is selection.x && caretOffset < selection.y) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2917 // caret moved towards selection anchor (left side of selection). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2918 // shrink selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2919 redrawEnd = selection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2920 redrawStart = selection.y = caretOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2921 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2922 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2923 if (caretOffset > selection.y) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2924 // grow selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2925 redrawStart = selection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2926 redrawEnd = selection.y = caretOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2927 // check if selection has reversed direction |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2928 if (selection.x !is selectionAnchor) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2929 redrawStart = selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2930 selection.x = selectionAnchor; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2931 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2932 // test whether selection actually changed. Fixes 1G71EO1 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2933 } else if (selectionAnchor is selection.y && caretOffset > selection.x) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2934 // caret moved towards selection anchor (right side of selection). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2935 // shrink selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2936 redrawStart = selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2937 redrawEnd = selection.x = caretOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2938 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2939 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2940 if (redrawStart !is -1 && redrawEnd !is -1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2941 internalRedrawRange(redrawStart, redrawEnd - redrawStart); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2942 sendSelectionEvent(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2943 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2944 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2945 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2946 * Moves the caret to the next character or to the beginning of the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2947 * next line if the cursor is at the end of a line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2948 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2949 void doSelectionCursorNext() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2950 int caretLine = getCaretLine(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2951 int lineOffset = content.getOffsetAtLine(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2952 int offsetInLine = caretOffset - lineOffset; |
103 | 2953 if (offsetInLine < content.getLine(caretLine).length) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2954 TextLayout layout = renderer.getTextLayout(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2955 offsetInLine = layout.getNextOffset(offsetInLine, DWT.MOVEMENT_CLUSTER); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2956 int lineStart = layout.getLineOffsets()[layout.getLineIndex(offsetInLine)]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2957 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2958 caretOffset = offsetInLine + lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2959 caretAlignment = offsetInLine is lineStart ? OFFSET_LEADING : PREVIOUS_OFFSET_TRAILING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2960 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2961 } else if (caretLine < content.getLineCount() - 1 && !isSingleLine()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2962 caretLine++; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2963 caretOffset = content.getOffsetAtLine(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2964 caretAlignment = PREVIOUS_OFFSET_TRAILING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2965 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2966 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2967 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2968 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2969 * Moves the caret to the previous character or to the end of the previous |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2970 * line if the cursor is at the beginning of a line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2971 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2972 void doSelectionCursorPrevious() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2973 int caretLine = getCaretLine(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2974 int lineOffset = content.getOffsetAtLine(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2975 int offsetInLine = caretOffset - lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2976 caretAlignment = OFFSET_LEADING; |
182
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
2977 |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2978 if (offsetInLine > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2979 caretOffset = getClusterPrevious(caretOffset, caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2980 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2981 } else if (caretLine > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2982 caretLine--; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2983 lineOffset = content.getOffsetAtLine(caretLine); |
103 | 2984 caretOffset = lineOffset + content.getLine(caretLine).length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2985 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2986 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2987 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2988 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2989 * Moves the caret one line down and to the same character offset relative |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2990 * to the beginning of the line. Moves the caret to the end of the new line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2991 * if the new line is shorter than the character offset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2992 * Moves the caret to the end of the text if the caret already is on the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2993 * last line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2994 * Adjusts the selection according to the caret change. This can either add |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2995 * to or subtract from the old selection, depending on the previous selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2996 * direction. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2997 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2998 void doSelectionLineDown() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
2999 int oldColumnX = columnX = getPointAtOffset(caretOffset).x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3000 doLineDown(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3001 columnX = oldColumnX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3002 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3003 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3004 * Moves the caret one line up and to the same character offset relative |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3005 * to the beginning of the line. Moves the caret to the end of the new line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3006 * if the new line is shorter than the character offset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3007 * Moves the caret to the beginning of the document if it is already on the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3008 * first line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3009 * Adjusts the selection according to the caret change. This can either add |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3010 * to or subtract from the old selection, depending on the previous selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3011 * direction. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3012 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3013 void doSelectionLineUp() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3014 int oldColumnX = columnX = getPointAtOffset(caretOffset).x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3015 doLineUp(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3016 columnX = oldColumnX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3017 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3018 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3019 * Scrolls one page down so that the last line (truncated or whole) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3020 * of the current page becomes the fully visible top line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3021 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3022 * The caret is scrolled the same number of lines so that its location |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3023 * relative to the top line remains the same. The exception is the end |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3024 * of the text where a full page scroll is not possible. In this case |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3025 * the caret is moved after the last character. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3026 * <p></p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3027 * Adjusts the selection according to the caret change. This can either add |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3028 * to or subtract from the old selection, depending on the previous selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3029 * direction. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3030 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3031 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3032 void doSelectionPageDown(int pixels) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3033 int oldColumnX = columnX = getPointAtOffset(caretOffset).x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3034 doPageDown(true, pixels); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3035 columnX = oldColumnX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3036 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3037 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3038 * Scrolls one page up so that the first line (truncated or whole) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3039 * of the current page becomes the fully visible last line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3040 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3041 * The caret is scrolled the same number of lines so that its location |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3042 * relative to the top line remains the same. The exception is the beginning |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3043 * of the text where a full page scroll is not possible. In this case the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3044 * caret is moved in front of the first character. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3045 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3046 * Adjusts the selection according to the caret change. This can either add |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3047 * to or subtract from the old selection, depending on the previous selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3048 * direction. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3049 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3050 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3051 void doSelectionPageUp(int pixels) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3052 int oldColumnX = columnX = getPointAtOffset(caretOffset).x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3053 doPageUp(true, pixels); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3054 columnX = oldColumnX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3055 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3056 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3057 * Moves the caret to the end of the next word . |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3058 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3059 void doSelectionWordNext() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3060 int newCaretOffset = getWordNext(caretOffset, DWT.MOVEMENT_WORD); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3061 // Force symmetrical movement for word next and previous. Fixes 14536 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3062 caretAlignment = OFFSET_LEADING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3063 // don't change caret position if in single line mode and the cursor |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3064 // would be on a different line. fixes 5673 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3065 if (!isSingleLine() || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3066 content.getLineAtOffset(caretOffset) is content.getLineAtOffset(newCaretOffset)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3067 caretOffset = newCaretOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3068 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3069 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3070 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3071 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3072 * Moves the caret to the start of the previous word. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3073 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3074 void doSelectionWordPrevious() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3075 caretAlignment = OFFSET_LEADING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3076 caretOffset = getWordPrevious(caretOffset, DWT.MOVEMENT_WORD); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3077 int caretLine = content.getLineAtOffset(caretOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3078 // word previous always comes from bottom line. when |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3079 // wrapping lines, stay on bottom line when on line boundary |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3080 if (wordWrap && caretLine < content.getLineCount() - 1 && |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3081 caretOffset is content.getOffsetAtLine(caretLine + 1)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3082 caretLine++; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3083 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3084 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3085 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3086 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3087 * Moves the caret one character to the left. Do not go to the previous line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3088 * When in a bidi locale and at a R2L character the caret is moved to the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3089 * beginning of the R2L segment (visually right) and then one character to the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3090 * left (visually left because it's now in a L2R segment). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3091 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3092 void doVisualPrevious() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3093 caretOffset = getClusterPrevious(caretOffset, getCaretLine()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3094 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3095 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3096 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3097 * Moves the caret one character to the right. Do not go to the next line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3098 * When in a bidi locale and at a R2L character the caret is moved to the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3099 * end of the R2L segment (visually left) and then one character to the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3100 * right (visually right because it's now in a L2R segment). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3101 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3102 void doVisualNext() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3103 caretOffset = getClusterNext(caretOffset, getCaretLine()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3104 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3105 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3106 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3107 * Moves the caret to the end of the next word. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3108 * If a selection exists, move the caret to the end of the selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3109 * and remove the selection. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3110 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3111 void doWordNext() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3112 if (selection.y - selection.x > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3113 caretOffset = selection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3114 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3115 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3116 doSelectionWordNext(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3117 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3118 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3119 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3120 * Moves the caret to the start of the previous word. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3121 * If a selection exists, move the caret to the start of the selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3122 * and remove the selection. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3123 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3124 void doWordPrevious() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3125 if (selection.y - selection.x > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3126 caretOffset = selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3127 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3128 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3129 doSelectionWordPrevious(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3130 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3131 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3132 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3133 * Ends the autoscroll process. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3134 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3135 void endAutoScroll() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3136 autoScrollDirection = DWT.NULL; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3137 } |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
3138 public override Color getBackground() { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3139 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3140 if (background is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3141 return getDisplay().getSystemColor(DWT.COLOR_LIST_BACKGROUND); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3142 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3143 return background; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3144 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3145 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3146 * Returns the baseline, in pixels. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3147 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3148 * Note: this API should not be used if a StyleRange attribute causes lines to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3149 * have different heights (i.e. different fonts, rise, etc). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3150 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3151 * @return baseline the baseline |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3152 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3153 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3154 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3155 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3156 * @since 3.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3157 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3158 * @see #getBaseline(int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3159 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3160 public int getBaseline() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3161 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3162 return renderer.getBaseline(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3163 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3164 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3165 * Returns the baseline at the given offset, in pixels. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3166 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3167 * @param offset the offset |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3168 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3169 * @return baseline the baseline |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3170 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3171 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3172 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3173 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3174 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3175 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3176 * <li>ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3177 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3178 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3179 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3180 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3181 public int getBaseline(int offset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3182 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3183 if (!(0 <= offset && offset <= content.getCharCount())) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3184 DWT.error(DWT.ERROR_INVALID_RANGE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3185 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3186 if (isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3187 return renderer.getBaseline(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3188 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3189 int lineIndex = content.getLineAtOffset(offset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3190 int lineOffset = content.getOffsetAtLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3191 TextLayout layout = renderer.getTextLayout(lineIndex); |
103 | 3192 int lineInParagraph = layout.getLineIndex(Math.min(offset - lineOffset, layout.getText().length)); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3193 FontMetrics metrics = layout.getLineMetrics(lineInParagraph); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3194 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3195 return metrics.getAscent() + metrics.getLeading(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3196 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3197 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3198 * Gets the BIDI coloring mode. When true the BIDI text display |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3199 * algorithm is applied to segments of text that are the same |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3200 * color. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3201 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3202 * @return the current coloring mode |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3203 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3204 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3205 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3206 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3207 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3208 * @deprecated use BidiSegmentListener instead. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3209 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3210 public bool getBidiColoring() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3211 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3212 return bidiColoring; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3213 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3214 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3215 * Returns the index of the last fully visible line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3216 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3217 * @return index of the last fully visible line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3218 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3219 int getBottomIndex() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3220 int bottomIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3221 if (isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3222 int lineCount = 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3223 int lineHeight = renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3224 if (lineHeight !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3225 // calculate the number of lines that are fully visible |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3226 int partialTopLineHeight = topIndex * lineHeight - getVerticalScrollOffset(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3227 lineCount = (clientAreaHeight - partialTopLineHeight) / lineHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3228 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3229 bottomIndex = Math.min(content.getLineCount() - 1, topIndex + Math.max(0, lineCount - 1)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3230 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3231 int clientAreaHeight = this.clientAreaHeight - bottomMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3232 bottomIndex = getLineIndex(clientAreaHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3233 if (bottomIndex > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3234 int linePixel = getLinePixel(bottomIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3235 int lineHeight = renderer.getLineHeight(bottomIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3236 if (linePixel + lineHeight > clientAreaHeight) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3237 if (getLinePixel(bottomIndex - 1) >= topMargin) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3238 bottomIndex--; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3239 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3240 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3241 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3242 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3243 return bottomIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3244 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3245 Rectangle getBoundsAtOffset(int offset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3246 int lineIndex = content.getLineAtOffset(offset); |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
3247 String line = content.getLine(lineIndex); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3248 Rectangle bounds; |
103 | 3249 if (line.length !is 0) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3250 int offsetInLine = offset - content.getOffsetAtLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3251 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3252 bounds = layout.getBounds(offsetInLine, offsetInLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3253 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3254 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3255 bounds = new Rectangle (0, 0, 0, renderer.getLineHeight()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3256 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3257 bounds.x += leftMargin - horizontalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3258 bounds.y += getLinePixel(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3259 return bounds; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3260 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3261 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3262 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3263 * Returns the caret position relative to the start of the text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3264 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3265 * @return the caret position relative to the start of the text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3266 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3267 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3268 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3269 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3270 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3271 public int getCaretOffset() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3272 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3273 return caretOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3274 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3275 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3276 * Returns the caret width. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3277 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3278 * @return the caret width, 0 if caret is null. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3279 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3280 int getCaretWidth() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3281 Caret caret = getCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3282 if (caret is null) return 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3283 return caret.getSize().x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3284 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3285 Object getClipboardContent(int clipboardType) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3286 TextTransfer plainTextTransfer = TextTransfer.getInstance(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3287 return clipboard.getContents(plainTextTransfer, clipboardType); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3288 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3289 int getClusterNext(int offset, int lineIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3290 int lineOffset = content.getOffsetAtLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3291 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3292 offset -= lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3293 offset = layout.getNextOffset(offset, DWT.MOVEMENT_CLUSTER); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3294 offset += lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3295 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3296 return offset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3297 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3298 int getClusterPrevious(int offset, int lineIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3299 int lineOffset = content.getOffsetAtLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3300 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3301 offset -= lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3302 offset = layout.getPreviousOffset(offset, DWT.MOVEMENT_CLUSTER); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3303 offset += lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3304 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3305 return offset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3306 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3307 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3308 * Returns the content implementation that is used for text storage |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3309 * or null if no user defined content implementation has been set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3310 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3311 * @return content implementation that is used for text storage or null |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3312 * if no user defined content implementation has been set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3313 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3314 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3315 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3316 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3317 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3318 public StyledTextContent getContent() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3319 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3320 return content; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3321 } |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
3322 public override bool getDragDetect () { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3323 checkWidget (); |
103 | 3324 return dragDetect_; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3325 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3326 /** |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
3327 * Returns whether the widget implements double click mouse behavior. |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3328 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3329 * @return true if double clicking a word selects the word, false if double clicks |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3330 * have the same effect as regular mouse clicks |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3331 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3332 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3333 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3334 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3335 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3336 public bool getDoubleClickEnabled() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3337 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3338 return doubleClickEnabled; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3339 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3340 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3341 * Returns whether the widget content can be edited. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3342 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3343 * @return true if content can be edited, false otherwise |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3344 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3345 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3346 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3347 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3348 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3349 public bool getEditable() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3350 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3351 return editable; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3352 } |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
3353 public override Color getForeground() { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3354 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3355 if (foreground is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3356 return getDisplay().getSystemColor(DWT.COLOR_LIST_FOREGROUND); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3357 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3358 return foreground; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3359 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3360 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3361 * Returns the horizontal scroll increment. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3362 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3363 * @return horizontal scroll increment. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3364 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3365 int getHorizontalIncrement() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3366 return renderer.averageCharWidth; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3367 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3368 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3369 * Returns the horizontal scroll offset relative to the start of the line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3370 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3371 * @return horizontal scroll offset relative to the start of the line, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3372 * measured in character increments starting at 0, if > 0 the content is scrolled |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3373 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3374 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3375 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3376 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3377 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3378 public int getHorizontalIndex() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3379 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3380 return horizontalScrollOffset / getHorizontalIncrement(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3381 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3382 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3383 * Returns the horizontal scroll offset relative to the start of the line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3384 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3385 * @return the horizontal scroll offset relative to the start of the line, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3386 * measured in pixel starting at 0, if > 0 the content is scrolled. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3387 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3388 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3389 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3390 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3391 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3392 public int getHorizontalPixel() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3393 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3394 return horizontalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3395 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3396 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3397 * Returns the line indentation of the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3398 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3399 * @return the line indentation |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3400 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3401 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3402 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3403 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3404 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3405 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3406 * @see #getLineIndent(int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3407 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3408 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3409 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3410 public int getIndent() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3411 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3412 return indent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3413 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3414 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3415 * Returns whether the widget justifies lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3416 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3417 * @return whether lines are justified |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3418 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3419 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3420 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3421 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3422 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3423 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3424 * @see #getLineJustify(int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3425 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3426 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3427 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3428 public bool getJustify() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3429 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3430 return justify; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3431 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3432 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3433 * Returns the action assigned to the key. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3434 * Returns DWT.NULL if there is no action associated with the key. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3435 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3436 * @param key a key code defined in DWT.java or a character. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3437 * Optionally ORd with a state mask. Preferred state masks are one or more of |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3438 * DWT.MOD1, DWT.MOD2, DWT.MOD3, since these masks account for modifier platform |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3439 * differences. However, there may be cases where using the specific state masks |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3440 * (i.e., DWT.CTRL, DWT.SHIFT, DWT.ALT, DWT.COMMAND) makes sense. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3441 * @return one of the predefined actions defined in ST.java or DWT.NULL |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3442 * if there is no action associated with the key. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3443 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3444 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3445 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3446 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3447 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3448 public int getKeyBinding(int key) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3449 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3450 if( auto p = key in keyActionMap ){ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3451 return *p; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3452 } |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
3453 return DWT.NULL; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3454 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3455 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3456 * Gets the number of characters. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3457 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3458 * @return number of characters in the widget |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3459 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3460 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3461 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3462 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3463 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3464 public int getCharCount() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3465 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3466 return content.getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3467 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3468 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3469 * Returns the alignment of the line at the given index. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3470 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3471 * @param index the index of the line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3472 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3473 * @return the line alignment |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3474 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3475 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3476 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3477 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3478 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3479 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3480 * <li>ERROR_INVALID_ARGUMENT when the index is invalid</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3481 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3482 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3483 * @see #getAlignment() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3484 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3485 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3486 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3487 public int getLineAlignment(int index) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3488 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3489 if (index < 0 || index > content.getLineCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3490 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3491 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3492 return renderer.getLineAlignment(index, alignment); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3493 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3494 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3495 * Returns the line at the specified offset in the text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3496 * where 0 < offset < getCharCount() so that getLineAtOffset(getCharCount()) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3497 * returns the line of the insert location. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3498 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3499 * @param offset offset relative to the start of the content. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3500 * 0 <= offset <= getCharCount() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3501 * @return line at the specified offset in the text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3502 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3503 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3504 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3505 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3506 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3507 * <li>ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3508 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3509 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3510 public int getLineAtOffset(int offset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3511 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3512 if (offset < 0 || offset > getCharCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3513 DWT.error(DWT.ERROR_INVALID_RANGE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3514 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3515 return content.getLineAtOffset(offset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3516 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3517 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3518 * Returns the background color of the line at the given index. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3519 * Returns null if a LineBackgroundListener has been set or if no background |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3520 * color has been specified for the line. Should not be called if a |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3521 * LineBackgroundListener has been set since the listener maintains the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3522 * line background colors. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3523 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3524 * @param index the index of the line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3525 * @return the background color of the line at the given index. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3526 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3527 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3528 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3529 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3530 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3531 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3532 * <li>ERROR_INVALID_ARGUMENT when the index is invalid</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3533 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3534 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3535 public Color getLineBackground(int index) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3536 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3537 if (index < 0 || index > content.getLineCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3538 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3539 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3540 return isListening(LineGetBackground) ? null : renderer.getLineBackground(index, null); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3541 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3542 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3543 * Returns the bullet of the line at the given index. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3544 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3545 * @param index the index of the line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3546 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3547 * @return the line bullet |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3548 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3549 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3550 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3551 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3552 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3553 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3554 * <li>ERROR_INVALID_ARGUMENT when the index is invalid</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3555 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3556 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3557 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3558 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3559 public Bullet getLineBullet(int index) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3560 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3561 if (index < 0 || index > content.getLineCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3562 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3563 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3564 return isListening(LineGetStyle) ? null : renderer.getLineBullet(index, null); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3565 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3566 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3567 * Returns the line background data for the given line or null if |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3568 * there is none. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3569 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3570 * @param lineOffset offset of the line start relative to the start |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3571 * of the content. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3572 * @param line line to get line background data for |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3573 * @return line background data for the given line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3574 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
3575 StyledTextEvent getLineBackgroundData(int lineOffset, String line) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3576 return sendLineEvent(LineGetBackground, lineOffset, line); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3577 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3578 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3579 * Gets the number of text lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3580 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3581 * @return the number of lines in the widget |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3582 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3583 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3584 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3585 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3586 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3587 public int getLineCount() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3588 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3589 return content.getLineCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3590 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3591 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3592 * Returns the number of lines that can be completely displayed in the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3593 * widget client area. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3594 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3595 * @return number of lines that can be completely displayed in the widget |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3596 * client area. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3597 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3598 int getLineCountWhole() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3599 if (isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3600 int lineHeight = renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3601 return lineHeight !is 0 ? clientAreaHeight / lineHeight : 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3602 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3603 return getBottomIndex() - topIndex + 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3604 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3605 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3606 * Returns the line delimiter used for entering new lines by key down |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3607 * or paste operation. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3608 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3609 * @return line delimiter used for entering new lines by key down |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3610 * or paste operation. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3611 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3612 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3613 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3614 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3615 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
3616 public String getLineDelimiter() { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3617 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3618 return content.getLineDelimiter(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3619 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3620 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3621 * Returns the line height. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3622 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3623 * Note: this API should not be used if a StyleRange attribute causes lines to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3624 * have different heights (i.e. different fonts, rise, etc). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3625 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3626 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3627 * @return line height in pixel. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3628 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3629 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3630 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3631 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3632 * @see #getLineHeight(int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3633 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3634 public int getLineHeight() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3635 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3636 return renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3637 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3638 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3639 * Returns the line height at the given offset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3640 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3641 * @param offset the offset |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3642 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3643 * @return line height in pixels |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3644 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3645 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3646 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3647 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3648 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3649 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3650 * <li>ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3651 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3652 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3653 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3654 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3655 public int getLineHeight(int offset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3656 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3657 if (!(0 <= offset && offset <= content.getCharCount())) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3658 DWT.error(DWT.ERROR_INVALID_RANGE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3659 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3660 if (isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3661 return renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3662 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3663 int lineIndex = content.getLineAtOffset(offset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3664 int lineOffset = content.getOffsetAtLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3665 TextLayout layout = renderer.getTextLayout(lineIndex); |
103 | 3666 int lineInParagraph = layout.getLineIndex(Math.min(offset - lineOffset, layout.getText().length)); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3667 int height = layout.getLineBounds(lineInParagraph).height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3668 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3669 return height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3670 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3671 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3672 * Returns the indentation of the line at the given index. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3673 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3674 * @param index the index of the line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3675 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3676 * @return the line indentation |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3677 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3678 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3679 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3680 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3681 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3682 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3683 * <li>ERROR_INVALID_ARGUMENT when the index is invalid</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3684 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3685 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3686 * @see #getIndent() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3687 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3688 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3689 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3690 public int getLineIndent(int index) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3691 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3692 if (index < 0 || index > content.getLineCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3693 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3694 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3695 return isListening(LineGetStyle) ? 0 : renderer.getLineIndent(index, indent); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3696 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3697 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3698 * Returns whether the line at the given index is justified. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3699 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3700 * @param index the index of the line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3701 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3702 * @return whether the line is justified |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3703 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3704 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3705 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3706 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3707 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3708 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3709 * <li>ERROR_INVALID_ARGUMENT when the index is invalid</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3710 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3711 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3712 * @see #getJustify() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3713 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3714 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3715 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3716 public bool getLineJustify(int index) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3717 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3718 if (index < 0 || index > content.getLineCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3719 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3720 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3721 return isListening(LineGetStyle) ? false : renderer.getLineJustify(index, justify); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3722 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3723 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3724 * Returns the line spacing of the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3725 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3726 * @return the line spacing |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3727 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3728 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3729 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3730 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3731 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3732 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3733 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3734 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3735 public int getLineSpacing() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3736 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3737 return lineSpacing; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3738 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3739 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3740 * Returns the line style data for the given line or null if there is |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3741 * none. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3742 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3743 * If there is a LineStyleListener but it does not set any styles, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3744 * the StyledTextEvent.styles field will be initialized to an empty |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3745 * array. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3746 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3747 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3748 * @param lineOffset offset of the line start relative to the start of |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3749 * the content. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3750 * @param line line to get line styles for |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3751 * @return line style data for the given line. Styles may start before |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3752 * line start and end after line end |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3753 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
3754 StyledTextEvent getLineStyleData(int lineOffset, String line) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3755 return sendLineEvent(LineGetStyle, lineOffset, line); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3756 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3757 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3758 * Returns the top pixel, relative to the client area, of a given line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3759 * Clamps out of ranges index. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3760 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3761 * @param lineIndex the line index, the max value is lineCount. If |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3762 * lineIndex is lineCount it returns the bottom pixel of the last line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3763 * It means this function can be used to retrieve the bottom pixel of any line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3764 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3765 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3766 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3767 public int getLinePixel(int lineIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3768 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3769 int lineCount = content.getLineCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3770 lineIndex = Math.max(0, Math.min(lineCount, lineIndex)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3771 if (isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3772 int lineHeight = renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3773 return lineIndex * lineHeight - getVerticalScrollOffset() + topMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3774 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3775 if (lineIndex is topIndex) return topIndexY + topMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3776 int height = topIndexY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3777 if (lineIndex > topIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3778 for (int i = topIndex; i < lineIndex; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3779 height += renderer.getLineHeight(i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3780 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3781 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3782 for (int i = topIndex - 1; i >= lineIndex; i--) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3783 height -= renderer.getLineHeight(i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3784 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3785 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3786 return height + topMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3787 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3788 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3789 * Returns the line index for a y, relative to the client area. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3790 * The line index returned is always in the range 0..lineCount - 1. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3791 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3792 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3793 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3794 public int getLineIndex(int y) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3795 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3796 y -= topMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3797 if (isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3798 int lineHeight = renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3799 int lineIndex = (y + getVerticalScrollOffset()) / lineHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3800 int lineCount = content.getLineCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3801 lineIndex = Math.max(0, Math.min(lineCount - 1, lineIndex)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3802 return lineIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3803 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3804 if (y is topIndexY) return topIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3805 int line = topIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3806 if (y < topIndexY) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3807 while (y < topIndexY && line > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3808 y += renderer.getLineHeight(--line); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3809 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3810 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3811 int lineCount = content.getLineCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3812 int lineHeight = renderer.getLineHeight(line); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3813 while (y - lineHeight >= topIndexY && line < lineCount - 1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3814 y -= lineHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3815 lineHeight = renderer.getLineHeight(++line); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3816 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3817 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3818 return line; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3819 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3820 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3821 * Returns the x, y location of the upper left corner of the character |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3822 * bounding box at the specified offset in the text. The point is |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3823 * relative to the upper left corner of the widget client area. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3824 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3825 * @param offset offset relative to the start of the content. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3826 * 0 <= offset <= getCharCount() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3827 * @return x, y location of the upper left corner of the character |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3828 * bounding box at the specified offset in the text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3829 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3830 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3831 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3832 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3833 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3834 * <li>ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3835 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3836 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3837 public Point getLocationAtOffset(int offset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3838 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3839 if (offset < 0 || offset > getCharCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3840 DWT.error(DWT.ERROR_INVALID_RANGE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3841 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3842 return getPointAtOffset(offset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3843 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3844 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3845 * Returns the character offset of the first character of the given line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3846 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3847 * @param lineIndex index of the line, 0 based relative to the first |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3848 * line in the content. 0 <= lineIndex < getLineCount(), except |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3849 * lineIndex may always be 0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3850 * @return offset offset of the first character of the line, relative to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3851 * the beginning of the document. The first character of the document is |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3852 * at offset 0. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3853 * When there are not any lines, getOffsetAtLine(0) is a valid call that |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3854 * answers 0. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3855 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3856 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3857 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3858 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3859 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3860 * <li>ERROR_INVALID_RANGE when the offset is outside the valid range (< 0 or > getCharCount())</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3861 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3862 * @since 2.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3863 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3864 public int getOffsetAtLine(int lineIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3865 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3866 if (lineIndex < 0 || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3867 (lineIndex > 0 && lineIndex >= content.getLineCount())) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3868 DWT.error(DWT.ERROR_INVALID_RANGE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3869 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3870 return content.getOffsetAtLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3871 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3872 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3873 * Returns the offset of the character at the given location relative |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3874 * to the first character in the document. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3875 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3876 * The return value reflects the character offset that the caret will |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3877 * be placed at if a mouse click occurred at the specified location. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3878 * If the x coordinate of the location is beyond the center of a character |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3879 * the returned offset will be behind the character. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3880 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3881 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3882 * @param point the origin of character bounding box relative to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3883 * the origin of the widget client area. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3884 * @return offset of the character at the given location relative |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3885 * to the first character in the document. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3886 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3887 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3888 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3889 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3890 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3891 * <li>ERROR_NULL_ARGUMENT when point is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3892 * <li>ERROR_INVALID_ARGUMENT when there is no character at the specified location</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3893 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3894 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3895 public int getOffsetAtLocation(Point point) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3896 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3897 if (point is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3898 DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3899 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3900 // is y above first line or is x before first column? |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3901 if (point.y + getVerticalScrollOffset() < 0 || point.x + horizontalScrollOffset < 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3902 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3903 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3904 int bottomIndex = getLineIndex(clientAreaHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3905 int height = getLinePixel(bottomIndex) + renderer.getLineHeight(bottomIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3906 if (point.y > height) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3907 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3908 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3909 int lineIndex = getLineIndex(point.y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3910 int lineOffset = content.getOffsetAtLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3911 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3912 int[] trailing = new int[1]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3913 int x = point.x + horizontalScrollOffset - leftMargin ; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3914 int y = point.y - getLinePixel(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3915 int offsetInLine = layout.getOffset(x, y, trailing); |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
3916 String line = content.getLine(lineIndex); |
103 | 3917 if (offsetInLine !is line.length - 1) { |
3918 offsetInLine = Math.min(line.length, offsetInLine + trailing[0]); | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3919 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3920 Rectangle rect = layout.getLineBounds(layout.getLineIndex(offsetInLine)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3921 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3922 if (x > rect.x + rect.width) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3923 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3924 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3925 return lineOffset + offsetInLine; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3926 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3927 int getOffsetAtPoint(int x, int y) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3928 int lineIndex = getLineIndex(y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3929 y -= getLinePixel(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3930 return getOffsetAtPoint(x, y, lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3931 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3932 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3933 * Returns the offset at the specified x location in the specified line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3934 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3935 * @param x x location of the mouse location |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3936 * @param line line the mouse location is in |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3937 * @return the offset at the specified x location in the specified line, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3938 * relative to the beginning of the document |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3939 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3940 int getOffsetAtPoint(int x, int y, int lineIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3941 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3942 x += horizontalScrollOffset - leftMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3943 int[] trailing = new int[1]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3944 int offsetInLine = layout.getOffset(x, y, trailing); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3945 caretAlignment = OFFSET_LEADING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3946 if (trailing[0] !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3947 int lineInParagraph = layout.getLineIndex(offsetInLine + trailing[0]); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3948 //TODO handle bidi text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3949 int lineStart = layout.getLineOffsets()[lineInParagraph]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3950 if (offsetInLine + trailing[0] is lineStart) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3951 offsetInLine += trailing[0]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3952 caretAlignment = PREVIOUS_OFFSET_TRAILING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3953 } else { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
3954 String line = content.getLine(lineIndex); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3955 int level; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3956 int offset = offsetInLine; |
103 | 3957 while (offset > 0 && tango.text.Unicode.isDigit(line[offset])) offset--; |
3958 if (offset is 0 && tango.text.Unicode.isDigit(line[offset])) { | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3959 level = isMirrored() ? 1 : 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3960 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3961 level = layout.getLevel(offset) & 0x1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3962 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3963 offsetInLine += trailing[0]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3964 int trailingLevel = layout.getLevel(offsetInLine) & 0x1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3965 if ((level ^ trailingLevel) !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3966 caretAlignment = PREVIOUS_OFFSET_TRAILING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3967 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3968 caretAlignment = OFFSET_LEADING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3969 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3970 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3971 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3972 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3973 return offsetInLine + content.getOffsetAtLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3974 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3975 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3976 * Returns the orientation of the receiver. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3977 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3978 * @return the orientation style |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3979 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3980 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3981 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3982 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3983 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3984 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3985 * @since 2.1.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3986 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3987 public int getOrientation () { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3988 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3989 return isMirrored() ? DWT.RIGHT_TO_LEFT : DWT.LEFT_TO_RIGHT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3990 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3991 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3992 * Returns the index of the last partially visible line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3993 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3994 * @return index of the last partially visible line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3995 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3996 int getPartialBottomIndex() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3997 if (isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3998 int lineHeight = renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
3999 int partialLineCount = Compatibility.ceil(clientAreaHeight, lineHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4000 return Math.min(content.getLineCount(), topIndex + partialLineCount) - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4001 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4002 return getLineIndex(clientAreaHeight - bottomMargin); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4003 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4004 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4005 * Returns the index of the first partially visible line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4006 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4007 * @return index of the first partially visible line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4008 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4009 int getPartialTopIndex() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4010 if (isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4011 int lineHeight = renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4012 return getVerticalScrollOffset() / lineHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4013 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4014 return topIndexY <= 0 ? topIndex : topIndex - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4015 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4016 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4017 * Returns the content in the specified range using the platform line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4018 * delimiter to separate lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4019 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4020 * @param writer the TextWriter to write line text into |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4021 * @return the content in the specified range using the platform line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4022 * delimiter to separate lines as written by the specified TextWriter. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4023 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4024 String getPlatformDelimitedText(TextWriter writer) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4025 int end = writer.getStart() + writer.getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4026 int startLine = content.getLineAtOffset(writer.getStart()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4027 int endLine = content.getLineAtOffset(end); |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4028 String endLineText = content.getLine(endLine); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4029 int endLineOffset = content.getOffsetAtLine(endLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4030 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4031 for (int i = startLine; i <= endLine; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4032 writer.writeLine(content.getLine(i), content.getOffsetAtLine(i)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4033 if (i < endLine) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4034 writer.writeLineDelimiter(PlatformLineDelimiter); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4035 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4036 } |
103 | 4037 if (end > endLineOffset + endLineText.length) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4038 writer.writeLineDelimiter(PlatformLineDelimiter); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4039 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4040 writer.close(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4041 return writer.toString(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4042 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4043 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4044 * Returns all the ranges of text that have an associated StyleRange. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4045 * Returns an empty array if a LineStyleListener has been set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4046 * Should not be called if a LineStyleListener has been set since the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4047 * listener maintains the styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4048 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4049 * The ranges array contains start and length pairs. Each pair refers to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4050 * the corresponding style in the styles array. For example, the pair |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4051 * that starts at ranges[n] with length ranges[n+1] uses the style |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4052 * at styles[n/2] returned by <code>getStyleRanges(int, int, bool)</code>. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4053 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4054 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4055 * @return the ranges or an empty array if a LineStyleListener has been set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4056 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4057 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4058 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4059 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4060 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4061 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4062 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4063 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4064 * @see #getStyleRanges(bool) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4065 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4066 public int[] getRanges() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4067 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4068 if (!isListening(LineGetStyle)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4069 int[] ranges = renderer.getRanges(0, content.getCharCount()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4070 if (ranges !is null) return ranges; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4071 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4072 return new int[0]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4073 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4074 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4075 * Returns the ranges of text that have an associated StyleRange. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4076 * Returns an empty array if a LineStyleListener has been set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4077 * Should not be called if a LineStyleListener has been set since the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4078 * listener maintains the styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4079 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4080 * The ranges array contains start and length pairs. Each pair refers to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4081 * the corresponding style in the styles array. For example, the pair |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4082 * that starts at ranges[n] with length ranges[n+1] uses the style |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4083 * at styles[n/2] returned by <code>getStyleRanges(int, int, bool)</code>. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4084 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4085 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4086 * @param start the start offset of the style ranges to return |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4087 * @param length the number of style ranges to return |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4088 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4089 * @return the ranges or an empty array if a LineStyleListener has been set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4090 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4091 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4092 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4093 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4094 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4095 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4096 * <li>ERROR_INVALID_RANGE if start or length are outside the widget content</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4097 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4098 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4099 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4100 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4101 * @see #getStyleRanges(int, int, bool) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4102 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4103 public int[] getRanges(int start, int length) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4104 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4105 int contentLength = getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4106 int end = start + length; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4107 if (start > end || start < 0 || end > contentLength) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4108 DWT.error(DWT.ERROR_INVALID_RANGE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4109 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4110 if (!isListening(LineGetStyle)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4111 int[] ranges = renderer.getRanges(start, length); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4112 if (ranges !is null) return ranges; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4113 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4114 return new int[0]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4115 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4116 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4117 * Returns the selection. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4118 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4119 * Text selections are specified in terms of caret positions. In a text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4120 * widget that contains N characters, there are N+1 caret positions, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4121 * ranging from 0..N |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4122 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4123 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4124 * @return start and end of the selection, x is the offset of the first |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4125 * selected character, y is the offset after the last selected character. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4126 * The selection values returned are visual (i.e., x will always always be |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4127 * <= y). To determine if a selection is right-to-left (RtoL) vs. left-to-right |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4128 * (LtoR), compare the caretOffset to the start and end of the selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4129 * (e.g., caretOffset is start of selection implies that the selection is RtoL). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4130 * @see #getSelectionRange |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4131 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4132 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4133 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4134 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4135 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4136 public Point getSelection() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4137 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4138 return new Point(selection.x, selection.y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4139 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4140 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4141 * Returns the selection. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4142 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4143 * @return start and length of the selection, x is the offset of the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4144 * first selected character, relative to the first character of the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4145 * widget content. y is the length of the selection. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4146 * The selection values returned are visual (i.e., length will always always be |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4147 * positive). To determine if a selection is right-to-left (RtoL) vs. left-to-right |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4148 * (LtoR), compare the caretOffset to the start and end of the selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4149 * (e.g., caretOffset is start of selection implies that the selection is RtoL). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4150 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4151 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4152 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4153 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4154 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4155 public Point getSelectionRange() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4156 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4157 return new Point(selection.x, selection.y - selection.x); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4158 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4159 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4160 * Returns the receiver's selection background color. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4161 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4162 * @return the selection background color |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4163 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4164 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4165 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4166 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4167 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4168 * @since 2.1 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4169 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4170 public Color getSelectionBackground() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4171 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4172 if (selectionBackground is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4173 return getDisplay().getSystemColor(DWT.COLOR_LIST_SELECTION); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4174 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4175 return selectionBackground; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4176 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4177 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4178 * Gets the number of selected characters. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4179 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4180 * @return the number of selected characters. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4181 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4182 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4183 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4184 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4185 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4186 public int getSelectionCount() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4187 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4188 return getSelectionRange().y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4189 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4190 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4191 * Returns the receiver's selection foreground color. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4192 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4193 * @return the selection foreground color |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4194 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4195 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4196 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4197 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4198 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4199 * @since 2.1 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4200 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4201 public Color getSelectionForeground() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4202 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4203 if (selectionForeground is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4204 return getDisplay().getSystemColor(DWT.COLOR_LIST_SELECTION_TEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4205 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4206 return selectionForeground; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4207 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4208 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4209 * Returns the selected text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4210 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4211 * @return selected text, or an empty String if there is no selection. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4212 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4213 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4214 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4215 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4216 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4217 public String getSelectionText() { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4218 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4219 return content.getTextRange(selection.x, selection.y - selection.x); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4220 } |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
4221 public override int getStyle() { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4222 int style = super.getStyle(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4223 style &= ~(DWT.LEFT_TO_RIGHT | DWT.RIGHT_TO_LEFT | DWT.MIRRORED); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4224 if (isMirrored()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4225 style |= DWT.RIGHT_TO_LEFT | DWT.MIRRORED; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4226 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4227 style |= DWT.LEFT_TO_RIGHT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4228 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4229 return style; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4230 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4231 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4232 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4233 * Returns the text segments that should be treated as if they |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4234 * had a different direction than the surrounding text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4235 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4236 * @param lineOffset offset of the first character in the line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4237 * 0 based from the beginning of the document. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4238 * @param line text of the line to specify bidi segments for |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4239 * @return text segments that should be treated as if they had a |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4240 * different direction than the surrounding text. Only the start |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4241 * index of a segment is specified, relative to the start of the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4242 * line. Always starts with 0 and ends with the line length. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4243 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4244 * <li>ERROR_INVALID_ARGUMENT - if the segment indices returned |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4245 * by the listener do not start with 0, are not in ascending order, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4246 * exceed the line length or have duplicates</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4247 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4248 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4249 int [] getBidiSegments(int lineOffset, String line) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4250 if (!isBidi()) return null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4251 if (!isListening(LineGetSegments)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4252 return getBidiSegmentsCompatibility(line, lineOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4253 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4254 StyledTextEvent event = sendLineEvent(LineGetSegments, lineOffset, line); |
103 | 4255 int lineLength = line.length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4256 int[] segments; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4257 if (event is null || event.segments is null || event.segments.length is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4258 segments = [0, lineLength]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4259 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4260 int segmentCount = event.segments.length; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4261 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4262 // test segment index consistency |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4263 if (event.segments[0] !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4264 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4265 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4266 for (int i = 1; i < segmentCount; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4267 if (event.segments[i] <= event.segments[i - 1] || event.segments[i] > lineLength) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4268 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4269 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4270 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4271 // ensure that last segment index is line end offset |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4272 if (event.segments[segmentCount - 1] !is lineLength) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4273 segments = new int[segmentCount + 1]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4274 System.arraycopy(event.segments, 0, segments, 0, segmentCount); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4275 segments[segmentCount] = lineLength; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4276 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4277 segments = event.segments; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4278 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4279 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4280 return segments; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4281 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4282 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4283 * @see #getBidiSegments |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4284 * Supports deprecated setBidiColoring API. Remove when API is removed. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4285 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4286 int [] getBidiSegmentsCompatibility(String line, int lineOffset) { |
103 | 4287 int lineLength = line.length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4288 if (!bidiColoring) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4289 return [0, lineLength]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4290 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4291 StyleRange [] styles = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4292 StyledTextEvent event = getLineStyleData(lineOffset, line); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4293 if (event !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4294 styles = event.styles; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4295 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4296 styles = renderer.getStyleRanges(lineOffset, lineLength, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4297 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4298 if (styles is null || styles.length is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4299 return [0, lineLength]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4300 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4301 int k=0, count = 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4302 while (k < styles.length && styles[k].start is 0 && styles[k].length is lineLength) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4303 k++; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4304 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4305 int[] offsets = new int[(styles.length - k) * 2 + 2]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4306 for (int i = k; i < styles.length; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4307 StyleRange style = styles[i]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4308 int styleLineStart = Math.max(style.start - lineOffset, 0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4309 int styleLineEnd = Math.max(style.start + style.length - lineOffset, styleLineStart); |
103 | 4310 styleLineEnd = Math.min (styleLineEnd, line.length ); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4311 if (i > 0 && count > 1 && |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4312 ((styleLineStart >= offsets[count-2] && styleLineStart <= offsets[count-1]) || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4313 (styleLineEnd >= offsets[count-2] && styleLineEnd <= offsets[count-1])) && |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4314 style.similarTo(styles[i-1])) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4315 offsets[count-2] = Math.min(offsets[count-2], styleLineStart); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4316 offsets[count-1] = Math.max(offsets[count-1], styleLineEnd); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4317 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4318 if (styleLineStart > offsets[count - 1]) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4319 offsets[count] = styleLineStart; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4320 count++; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4321 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4322 offsets[count] = styleLineEnd; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4323 count++; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4324 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4325 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4326 // add offset for last non-colored segment in line, if any |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4327 if (lineLength > offsets[count-1]) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4328 offsets [count] = lineLength; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4329 count++; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4330 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4331 if (count is offsets.length) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4332 return offsets; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4333 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4334 int [] result = new int [count]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4335 System.arraycopy (offsets, 0, result, 0, count); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4336 return result; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4337 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4338 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4339 * Returns the style range at the given offset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4340 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4341 * Returns null if a LineStyleListener has been set or if a style is not set |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4342 * for the offset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4343 * Should not be called if a LineStyleListener has been set since the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4344 * listener maintains the styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4345 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4346 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4347 * @param offset the offset to return the style for. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4348 * 0 <= offset < getCharCount() must be true. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4349 * @return a StyleRange with start is offset and length is 1, indicating |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4350 * the style at the given offset. null if a LineStyleListener has been set |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4351 * or if a style is not set for the given offset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4352 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4353 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4354 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4355 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4356 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4357 * <li>ERROR_INVALID_ARGUMENT when the offset is invalid</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4358 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4359 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4360 public StyleRange getStyleRangeAtOffset(int offset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4361 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4362 if (offset < 0 || offset >= getCharCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4363 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4364 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4365 if (!isListening(LineGetStyle)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4366 StyleRange[] ranges = renderer.getStyleRanges(offset, 1, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4367 if (ranges !is null) return ranges[0]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4368 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4369 return null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4370 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4371 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4372 * Returns the styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4373 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4374 * Returns an empty array if a LineStyleListener has been set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4375 * Should not be called if a LineStyleListener has been set since the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4376 * listener maintains the styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4377 * <p></p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4378 * Note: Because a StyleRange includes the start and length, the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4379 * same instance cannot occur multiple times in the array of styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4380 * If the same style attributes, such as font and color, occur in |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4381 * multiple StyleRanges, <code>getStyleRanges(bool)</code> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4382 * can be used to get the styles without the ranges. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4383 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4384 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4385 * @return the styles or an empty array if a LineStyleListener has been set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4386 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4387 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4388 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4389 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4390 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4391 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4392 * @see #getStyleRanges(bool) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4393 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4394 public StyleRange[] getStyleRanges() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4395 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4396 return getStyleRanges(0, content.getCharCount(), true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4397 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4398 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4399 * Returns the styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4400 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4401 * Returns an empty array if a LineStyleListener has been set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4402 * Should not be called if a LineStyleListener has been set since the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4403 * listener maintains the styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4404 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4405 * Note: When <code>includeRanges</code> is true, the start and length |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4406 * fields of each StyleRange will be valid, however the StyleRange |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4407 * objects may need to be cloned. When <code>includeRanges</code> is |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4408 * false, <code>getRanges(int, int)</code> can be used to get the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4409 * associated ranges. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4410 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4411 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4412 * @param includeRanges whether the start and length field of the StyleRanges should be set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4413 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4414 * @return the styles or an empty array if a LineStyleListener has been set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4415 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4416 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4417 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4418 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4419 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4420 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4421 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4422 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4423 * @see #getRanges(int, int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4424 * @see #setStyleRanges(int[], StyleRange[]) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4425 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4426 public StyleRange[] getStyleRanges(bool includeRanges) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4427 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4428 return getStyleRanges(0, content.getCharCount(), includeRanges); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4429 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4430 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4431 * Returns the styles for the given text range. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4432 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4433 * Returns an empty array if a LineStyleListener has been set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4434 * Should not be called if a LineStyleListener has been set since the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4435 * listener maintains the styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4436 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4437 * Note: Because the StyleRange includes the start and length, the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4438 * same instance cannot occur multiple times in the array of styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4439 * If the same style attributes, such as font and color, occur in |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4440 * multiple StyleRanges, <code>getStyleRanges(int, int, bool)</code> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4441 * can be used to get the styles without the ranges. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4442 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4443 * @param start the start offset of the style ranges to return |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4444 * @param length the number of style ranges to return |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4445 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4446 * @return the styles or an empty array if a LineStyleListener has |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4447 * been set. The returned styles will reflect the given range. The first |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4448 * returned <code>StyleRange</code> will have a starting offset >= start |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4449 * and the last returned <code>StyleRange</code> will have an ending |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4450 * offset <= start + length - 1 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4451 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4452 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4453 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4454 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4455 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4456 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4457 * <li>ERROR_INVALID_RANGE when start and/or end are outside the widget content</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4458 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4459 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4460 * @see #getStyleRanges(int, int, bool) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4461 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4462 * @since 3.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4463 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4464 public StyleRange[] getStyleRanges(int start, int length) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4465 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4466 return getStyleRanges(start, length, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4467 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4468 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4469 * Returns the styles for the given text range. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4470 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4471 * Returns an empty array if a LineStyleListener has been set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4472 * Should not be called if a LineStyleListener has been set since the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4473 * listener maintains the styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4474 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4475 * Note: When <code>includeRanges</code> is true, the start and length |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4476 * fields of each StyleRange will be valid, however the StyleRange |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4477 * objects may need to be cloned. When <code>includeRanges</code> is |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4478 * false, <code>getRanges(int, int)</code> can be used to get the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4479 * associated ranges. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4480 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4481 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4482 * @param start the start offset of the style ranges to return |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4483 * @param length the number of style ranges to return |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4484 * @param includeRanges whether the start and length field of the StyleRanges should be set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4485 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4486 * @return the styles or an empty array if a LineStyleListener has |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4487 * been set. The returned styles will reflect the given range. The first |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4488 * returned <code>StyleRange</code> will have a starting offset >= start |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4489 * and the last returned <code>StyleRange</code> will have an ending |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4490 * offset <= start + length - 1 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4491 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4492 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4493 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4494 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4495 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4496 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4497 * <li>ERROR_INVALID_RANGE when start and/or end are outside the widget content</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4498 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4499 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4500 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4501 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4502 * @see #getRanges(int, int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4503 * @see #setStyleRanges(int[], StyleRange[]) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4504 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4505 public StyleRange[] getStyleRanges(int start, int length, bool includeRanges) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4506 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4507 int contentLength = getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4508 int end = start + length; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4509 if (start > end || start < 0 || end > contentLength) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4510 DWT.error(DWT.ERROR_INVALID_RANGE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4511 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4512 if (!isListening(LineGetStyle)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4513 StyleRange[] ranges = renderer.getStyleRanges(start, length, includeRanges); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4514 if (ranges !is null) return ranges; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4515 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4516 return new StyleRange[0]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4517 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4518 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4519 * Returns the tab width measured in characters. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4520 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4521 * @return tab width measured in characters |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4522 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4523 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4524 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4525 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4526 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4527 public int getTabs() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4528 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4529 return tabLength; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4530 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4531 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4532 * Returns a copy of the widget content. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4533 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4534 * @return copy of the widget content |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4535 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4536 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4537 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4538 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4539 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4540 public String getText() { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4541 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4542 return content.getTextRange(0, getCharCount()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4543 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4544 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4545 * Returns the widget content between the two offsets. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4546 * |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4547 * @param start offset of the first character in the returned String |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4548 * @param end offset of the last character in the returned String |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4549 * @return widget content starting at start and ending at end |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4550 * @see #getTextRange(int,int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4551 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4552 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4553 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4554 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4555 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4556 * <li>ERROR_INVALID_RANGE when start and/or end are outside the widget content</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4557 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4558 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4559 public String getText(int start, int end) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4560 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4561 int contentLength = getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4562 if (start < 0 || start >= contentLength || end < 0 || end >= contentLength || start > end) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4563 DWT.error(DWT.ERROR_INVALID_RANGE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4564 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4565 return content.getTextRange(start, end - start + 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4566 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4567 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4568 * Returns the smallest bounding rectangle that includes the characters between two offsets. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4569 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4570 * @param start offset of the first character included in the bounding box |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4571 * @param end offset of the last character included in the bounding box |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4572 * @return bounding box of the text between start and end |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4573 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4574 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4575 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4576 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4577 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4578 * <li>ERROR_INVALID_RANGE when start and/or end are outside the widget content</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4579 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4580 * @since 3.1 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4581 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4582 public Rectangle getTextBounds(int start, int end) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4583 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4584 int contentLength = getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4585 if (start < 0 || start >= contentLength || end < 0 || end >= contentLength || start > end) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4586 DWT.error(DWT.ERROR_INVALID_RANGE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4587 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4588 int lineStart = content.getLineAtOffset(start); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4589 int lineEnd = content.getLineAtOffset(end); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4590 Rectangle rect; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4591 int y = getLinePixel(lineStart); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4592 int height = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4593 int left = 0x7fffffff, right = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4594 for (int i = lineStart; i <= lineEnd; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4595 int lineOffset = content.getOffsetAtLine(i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4596 TextLayout layout = renderer.getTextLayout(i); |
103 | 4597 if (layout.getText().length > 0) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4598 if (i is lineStart && i is lineEnd) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4599 rect = layout.getBounds(start - lineOffset, end - lineOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4600 } else if (i is lineStart) { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4601 String line = content.getLine(i); |
103 | 4602 rect = layout.getBounds(start - lineOffset, line.length); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4603 } else if (i is lineEnd) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4604 rect = layout.getBounds(0, end - lineOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4605 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4606 rect = layout.getBounds(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4607 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4608 left = Math.min(left, rect.x); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4609 right = Math.max(right, rect.x + rect.width); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4610 height += rect.height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4611 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4612 height += renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4613 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4614 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4615 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4616 rect = new Rectangle (left, y, right-left, height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4617 rect.x += leftMargin - horizontalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4618 return rect; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4619 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4620 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4621 * Returns the widget content starting at start for length characters. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4622 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4623 * @param start offset of the first character in the returned String |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4624 * @param length number of characters to return |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4625 * @return widget content starting at start and extending length characters. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4626 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4627 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4628 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4629 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4630 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4631 * <li>ERROR_INVALID_RANGE when start and/or length are outside the widget content</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4632 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4633 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4634 public String getTextRange(int start, int length) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4635 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4636 int contentLength = getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4637 int end = start + length; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4638 if (start > end || start < 0 || end > contentLength) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4639 DWT.error(DWT.ERROR_INVALID_RANGE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4640 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4641 return content.getTextRange(start, length); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4642 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4643 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4644 * Returns the maximum number of characters that the receiver is capable of holding. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4645 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4646 * @return the text limit |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4647 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4648 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4649 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4650 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4651 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4652 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4653 public int getTextLimit() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4654 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4655 return textLimit; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4656 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4657 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4658 * Gets the top index. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4659 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4660 * The top index is the index of the fully visible line that is currently |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4661 * at the top of the widget or the topmost partially visible line if no line is fully visible. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4662 * The top index changes when the widget is scrolled. Indexing is zero based. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4663 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4664 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4665 * @return the index of the top line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4666 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4667 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4668 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4669 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4670 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4671 public int getTopIndex() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4672 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4673 return topIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4674 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4675 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4676 * Gets the top pixel. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4677 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4678 * The top pixel is the pixel position of the line that is |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4679 * currently at the top of the widget. The text widget can be scrolled by pixels |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4680 * by dragging the scroll thumb so that a partial line may be displayed at the top |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4681 * the widget. The top pixel changes when the widget is scrolled. The top pixel |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4682 * does not include the widget trimming. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4683 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4684 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4685 * @return pixel position of the top line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4686 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4687 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4688 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4689 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4690 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4691 public int getTopPixel() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4692 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4693 return getVerticalScrollOffset(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4694 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4695 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4696 * Returns the vertical scroll increment. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4697 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4698 * @return vertical scroll increment. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4699 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4700 int getVerticalIncrement() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4701 return renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4702 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4703 int getVerticalScrollOffset() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4704 if (verticalScrollOffset is -1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4705 renderer.calculate(0, topIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4706 int height = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4707 for (int i = 0; i < topIndex; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4708 height += renderer.getLineHeight(i); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4709 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4710 height -= topIndexY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4711 verticalScrollOffset = height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4712 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4713 return verticalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4714 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4715 int getVisualLineIndex(TextLayout layout, int offsetInLine) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4716 int lineIndex = layout.getLineIndex(offsetInLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4717 int[] offsets = layout.getLineOffsets(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4718 if (lineIndex !is 0 && offsetInLine is offsets[lineIndex]) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4719 int lineY = layout.getLineBounds(lineIndex).y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4720 int caretY = getCaret().getLocation().y - topMargin - getLinePixel(getCaretLine()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4721 if (lineY > caretY) lineIndex--; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4722 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4723 return lineIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4724 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4725 int getCaretDirection() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4726 if (!isBidiCaret()) return DWT.DEFAULT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4727 if (!updateCaretDirection && caretDirection !is DWT.NULL) return caretDirection; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4728 updateCaretDirection = false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4729 int caretLine = getCaretLine(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4730 int lineOffset = content.getOffsetAtLine(caretLine); |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4731 String line = content.getLine(caretLine); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4732 int offset = caretOffset - lineOffset; |
103 | 4733 int lineLength = line.length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4734 if (lineLength is 0) return isMirrored() ? DWT.RIGHT : DWT.LEFT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4735 if (caretAlignment is PREVIOUS_OFFSET_TRAILING && offset > 0) offset--; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4736 if (offset is lineLength && offset > 0) offset--; |
103 | 4737 while (offset > 0 && tango.text.Unicode.isDigit(line[offset])) offset--; |
4738 if (offset is 0 && tango.text.Unicode.isDigit(line[offset])) { | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4739 return isMirrored() ? DWT.RIGHT : DWT.LEFT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4740 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4741 TextLayout layout = renderer.getTextLayout(caretLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4742 int level = layout.getLevel(offset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4743 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4744 return ((level & 1) !is 0) ? DWT.RIGHT : DWT.LEFT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4745 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4746 /* |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4747 * Returns the index of the line the caret is on. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4748 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4749 int getCaretLine() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4750 return content.getLineAtOffset(caretOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4751 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4752 int getWrapWidth () { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4753 if (wordWrap && !isSingleLine()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4754 int width = clientAreaWidth - leftMargin - rightMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4755 return width > 0 ? width : 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4756 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4757 return -1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4758 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4759 int getWordNext (int offset, int movement) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4760 int newOffset, lineOffset; |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4761 String lineText; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4762 if (offset >= getCharCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4763 newOffset = offset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4764 int lineIndex = content.getLineCount() - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4765 lineOffset = content.getOffsetAtLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4766 lineText = content.getLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4767 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4768 int lineIndex = content.getLineAtOffset(offset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4769 lineOffset = content.getOffsetAtLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4770 lineText = content.getLine(lineIndex); |
103 | 4771 int lineLength = lineText.length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4772 if (offset is lineOffset + lineLength) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4773 newOffset = content.getOffsetAtLine(lineIndex + 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4774 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4775 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4776 newOffset = lineOffset + layout.getNextOffset(offset - lineOffset, movement); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4777 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4778 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4779 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4780 return sendWordBoundaryEvent(WordNext, movement, offset, newOffset, lineText, lineOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4781 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4782 int getWordPrevious(int offset, int movement) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4783 int newOffset, lineOffset; |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4784 String lineText; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4785 if (offset <= 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4786 newOffset = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4787 int lineIndex = content.getLineAtOffset(newOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4788 lineOffset = content.getOffsetAtLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4789 lineText = content.getLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4790 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4791 int lineIndex = content.getLineAtOffset(offset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4792 lineOffset = content.getOffsetAtLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4793 lineText = content.getLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4794 if (offset is lineOffset) { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4795 String nextLineText = content.getLine(lineIndex - 1); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4796 int nextLineOffset = content.getOffsetAtLine(lineIndex - 1); |
103 | 4797 newOffset = nextLineOffset + nextLineText.length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4798 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4799 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4800 newOffset = lineOffset + layout.getPreviousOffset(offset - lineOffset, movement); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4801 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4802 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4803 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4804 return sendWordBoundaryEvent(WordPrevious, movement, offset, newOffset, lineText, lineOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4805 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4806 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4807 * Returns whether the widget wraps lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4808 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4809 * @return true if widget wraps lines, false otherwise |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4810 * @since 2.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4811 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4812 public bool getWordWrap() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4813 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4814 return wordWrap; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4815 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4816 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4817 * Returns the location of the given offset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4818 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4819 * <b>NOTE:</b> Does not return correct values for true italic fonts (vs. slanted fonts). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4820 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4821 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4822 * @return location of the character at the given offset in the line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4823 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4824 Point getPointAtOffset(int offset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4825 int lineIndex = content.getLineAtOffset(offset); |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4826 String line = content.getLine(lineIndex); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4827 int lineOffset = content.getOffsetAtLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4828 int offsetInLine = offset - lineOffset; |
103 | 4829 int lineLength = line.length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4830 if (lineIndex < content.getLineCount() - 1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4831 int endLineOffset = content.getOffsetAtLine(lineIndex + 1) - 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4832 if (lineLength < offsetInLine && offsetInLine <= endLineOffset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4833 offsetInLine = lineLength; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4834 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4835 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4836 Point point; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4837 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4838 if (lineLength !is 0 && offsetInLine <= lineLength) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4839 if (offsetInLine is lineLength) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4840 point = layout.getLocation(offsetInLine - 1, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4841 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4842 switch (caretAlignment) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4843 case OFFSET_LEADING: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4844 point = layout.getLocation(offsetInLine, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4845 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4846 case PREVIOUS_OFFSET_TRAILING: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4847 default: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4848 if (offsetInLine is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4849 point = layout.getLocation(offsetInLine, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4850 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4851 point = layout.getLocation(offsetInLine - 1, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4852 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4853 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4854 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4855 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4856 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4857 point = new Point(layout.getIndent(), 0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4858 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4859 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4860 point.x += leftMargin - horizontalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4861 point.y += getLinePixel(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4862 return point; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4863 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4864 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4865 * Inserts a string. The old selection is replaced with the new text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4866 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4867 * @param string the string |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4868 * @see #replaceTextRange(int,int,String) |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4869 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4870 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4871 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4872 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4873 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4874 * <li>ERROR_NULL_ARGUMENT when string is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4875 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4876 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
4877 public void insert(String string) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4878 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4879 if (string is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4880 DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4881 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4882 Point sel = getSelectionRange(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4883 replaceTextRange(sel.x, sel.y, string); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4884 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4885 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4886 * Creates content change listeners and set the default content model. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4887 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4888 void installDefaultContent() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4889 textChangeListener = new class() TextChangeListener { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4890 public void textChanging(TextChangingEvent event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4891 handleTextChanging(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4892 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4893 public void textChanged(TextChangedEvent event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4894 handleTextChanged(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4895 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4896 public void textSet(TextChangedEvent event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4897 handleTextSet(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4898 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4899 }; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4900 content = new DefaultContent(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4901 content.addTextChangeListener(textChangeListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4902 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4903 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4904 * Adds event listeners |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4905 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4906 void installListeners() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4907 ScrollBar verticalBar = getVerticalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4908 ScrollBar horizontalBar = getHorizontalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4909 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4910 listener = new class() Listener { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4911 public void handleEvent(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4912 switch (event.type) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4913 case DWT.Dispose: handleDispose(event); break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4914 case DWT.KeyDown: handleKeyDown(event); break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4915 case DWT.KeyUp: handleKeyUp(event); break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4916 case DWT.MouseDown: handleMouseDown(event); break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4917 case DWT.MouseUp: handleMouseUp(event); break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4918 case DWT.MouseMove: handleMouseMove(event); break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4919 case DWT.Paint: handlePaint(event); break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4920 case DWT.Resize: handleResize(event); break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4921 case DWT.Traverse: handleTraverse(event); break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4922 default: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4923 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4924 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4925 }; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4926 addListener(DWT.Dispose, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4927 addListener(DWT.KeyDown, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4928 addListener(DWT.KeyUp, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4929 addListener(DWT.MouseDown, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4930 addListener(DWT.MouseUp, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4931 addListener(DWT.MouseMove, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4932 addListener(DWT.Paint, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4933 addListener(DWT.Resize, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4934 addListener(DWT.Traverse, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4935 if (verticalBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4936 verticalBar.addListener(DWT.Selection, new class() Listener { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4937 public void handleEvent(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4938 handleVerticalScroll(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4939 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4940 }); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4941 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4942 if (horizontalBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4943 horizontalBar.addListener(DWT.Selection, new class() Listener { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4944 public void handleEvent(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4945 handleHorizontalScroll(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4946 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4947 }); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4948 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4949 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4950 void internalRedrawRange(int start, int length) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4951 if (length <= 0) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4952 int end = start + length; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4953 int startLine = content.getLineAtOffset(start); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4954 int endLine = content.getLineAtOffset(end); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4955 int partialBottomIndex = getPartialBottomIndex(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4956 int partialTopIndex = getPartialTopIndex(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4957 if (startLine > partialBottomIndex || endLine < partialTopIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4958 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4959 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4960 if (partialTopIndex > startLine) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4961 startLine = partialTopIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4962 start = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4963 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4964 start -= content.getOffsetAtLine(startLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4965 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4966 if (partialBottomIndex < endLine) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4967 endLine = partialBottomIndex + 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4968 end = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4969 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4970 end -= content.getOffsetAtLine(endLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4971 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4972 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4973 TextLayout layout = renderer.getTextLayout(startLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4974 int lineX = leftMargin - horizontalScrollOffset, startLineY = getLinePixel(startLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4975 int[] offsets = layout.getLineOffsets(); |
103 | 4976 int startIndex = layout.getLineIndex(Math.min(start, layout.getText().length)); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4977 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4978 /* Redraw end of line before start line if wrapped and start offset is first char */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4979 if (wordWrap && startIndex > 0 && offsets[startIndex] is start) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4980 Rectangle rect = layout.getLineBounds(startIndex - 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4981 rect.x = rect.width; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4982 rect.width = clientAreaWidth - rightMargin - rect.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4983 rect.x += lineX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4984 rect.y += startLineY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4985 super.redraw(rect.x, rect.y, rect.width, rect.height, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4986 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4987 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4988 if (startLine is endLine) { |
103 | 4989 int endIndex = layout.getLineIndex(Math.min(end, layout.getText().length)); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4990 if (startIndex is endIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4991 /* Redraw rect between start and end offset if start and end offsets are in same wrapped line */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4992 Rectangle rect = layout.getBounds(start, end - 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4993 rect.x += lineX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4994 rect.y += startLineY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4995 super.redraw(rect.x, rect.y, rect.width, rect.height, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4996 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4997 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4998 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
4999 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5000 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5001 /* Redraw start line from the start offset to the end of client area */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5002 Rectangle startRect = layout.getBounds(start, offsets[startIndex + 1] - 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5003 if (startRect.height is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5004 Rectangle bounds = layout.getLineBounds(startIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5005 startRect.x = bounds.width; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5006 startRect.y = bounds.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5007 startRect.height = bounds.height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5008 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5009 startRect.x += lineX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5010 startRect.y += startLineY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5011 startRect.width = clientAreaWidth - rightMargin - startRect.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5012 super.redraw(startRect.x, startRect.y, startRect.width, startRect.height, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5013 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5014 /* Redraw end line from the beginning of the line to the end offset */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5015 if (startLine !is endLine) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5016 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5017 layout = renderer.getTextLayout(endLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5018 offsets = layout.getLineOffsets(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5019 } |
103 | 5020 int endIndex = layout.getLineIndex(Math.min(end, layout.getText().length)); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5021 Rectangle endRect = layout.getBounds(offsets[endIndex], end - 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5022 if (endRect.height is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5023 Rectangle bounds = layout.getLineBounds(endIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5024 endRect.y = bounds.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5025 endRect.height = bounds.height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5026 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5027 endRect.x += lineX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5028 endRect.y += getLinePixel(endLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5029 super.redraw(endRect.x, endRect.y, endRect.width, endRect.height, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5030 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5031 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5032 /* Redraw all lines in between start and end line */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5033 int y = startRect.y + startRect.height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5034 if (endRect.y > y) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5035 super.redraw(leftMargin, y, clientAreaWidth - rightMargin - leftMargin, endRect.y - y, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5036 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5037 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5038 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5039 * Frees resources. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5040 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5041 void handleDispose(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5042 removeListener(DWT.Dispose, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5043 notifyListeners(DWT.Dispose, event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5044 event.type = DWT.None; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5045 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5046 clipboard.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5047 if (renderer !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5048 renderer.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5049 renderer = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5050 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5051 if (content !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5052 content.removeTextChangeListener(textChangeListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5053 content = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5054 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5055 if (defaultCaret !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5056 defaultCaret.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5057 defaultCaret = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5058 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5059 if (leftCaretBitmap !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5060 leftCaretBitmap.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5061 leftCaretBitmap = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5062 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5063 if (rightCaretBitmap !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5064 rightCaretBitmap.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5065 rightCaretBitmap = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5066 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5067 if (isBidiCaret()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5068 BidiUtil.removeLanguageListener(handle); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5069 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5070 selectionBackground = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5071 selectionForeground = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5072 textChangeListener = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5073 selection = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5074 doubleClickSelection = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5075 keyActionMap = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5076 background = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5077 foreground = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5078 clipboard = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5079 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5080 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5081 * Scrolls the widget horizontally. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5082 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5083 void handleHorizontalScroll(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5084 int scrollPixel = getHorizontalBar().getSelection() - horizontalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5085 scrollHorizontal(scrollPixel, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5086 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5087 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5088 * If an action has been registered for the key stroke execute the action. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5089 * Otherwise, if a character has been entered treat it as new content. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5090 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5091 * @param event keyboard event |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5092 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5093 void handleKey(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5094 int action; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5095 caretAlignment = PREVIOUS_OFFSET_TRAILING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5096 if (event.keyCode !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5097 // special key pressed (e.g., F1) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5098 action = getKeyBinding(event.keyCode | event.stateMask); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5099 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5100 // character key pressed |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5101 action = getKeyBinding(event.character | event.stateMask); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5102 if (action is DWT.NULL) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5103 // see if we have a control character |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5104 if ((event.stateMask & DWT.CTRL) !is 0 && (event.character >= 0) && event.character <= 31) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5105 // get the character from the CTRL+char sequence, the control |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5106 // key subtracts 64 from the value of the key that it modifies |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5107 int c = event.character + 64; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5108 action = getKeyBinding(c | event.stateMask); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5109 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5110 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5111 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5112 if (action is DWT.NULL) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5113 bool ignore = false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5114 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5115 if (IS_CARBON) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5116 // Ignore accelerator key combinations (we do not want to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5117 // insert a character in the text in this instance). Do not |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5118 // ignore COMMAND+ALT combinations since that key sequence |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5119 // produces characters on the mac. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5120 ignore = (event.stateMask ^ DWT.COMMAND) is 0 || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5121 (event.stateMask ^ (DWT.COMMAND | DWT.SHIFT)) is 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5122 } else if (IS_MOTIF) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5123 // Ignore accelerator key combinations (we do not want to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5124 // insert a character in the text in this instance). Do not |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5125 // ignore ALT combinations since this key sequence |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5126 // produces characters on motif. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5127 ignore = (event.stateMask ^ DWT.CTRL) is 0 || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5128 (event.stateMask ^ (DWT.CTRL | DWT.SHIFT)) is 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5129 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5130 // Ignore accelerator key combinations (we do not want to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5131 // insert a character in the text in this instance). Don't |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5132 // ignore CTRL+ALT combinations since that is the Alt Gr |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5133 // key on some keyboards. See bug 20953. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5134 ignore = (event.stateMask ^ DWT.ALT) is 0 || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5135 (event.stateMask ^ DWT.CTRL) is 0 || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5136 (event.stateMask ^ (DWT.ALT | DWT.SHIFT)) is 0 || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5137 (event.stateMask ^ (DWT.CTRL | DWT.SHIFT)) is 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5138 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5139 // -ignore anything below SPACE except for line delimiter keys and tab. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5140 // -ignore DEL |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5141 if (!ignore && event.character > 31 && event.character !is DWT.DEL || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5142 event.character is DWT.CR || event.character is DWT.LF || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5143 event.character is TAB) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5144 doContent(event.character); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5145 update(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5146 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5147 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5148 invokeAction(action); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5149 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5150 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5151 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5152 * If a VerifyKey listener exists, verify that the key that was entered |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5153 * should be processed. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5154 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5155 * @param event keyboard event |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5156 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5157 void handleKeyDown(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5158 if (clipboardSelection is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5159 clipboardSelection = new Point(selection.x, selection.y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5160 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5161 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5162 Event verifyEvent = new Event(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5163 verifyEvent.character = event.character; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5164 verifyEvent.keyCode = event.keyCode; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5165 verifyEvent.stateMask = event.stateMask; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5166 verifyEvent.doit = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5167 notifyListeners(VerifyKey, verifyEvent); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5168 if (verifyEvent.doit) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5169 handleKey(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5170 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5171 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5172 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5173 * Update the Selection Clipboard. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5174 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5175 * @param event keyboard event |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5176 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5177 void handleKeyUp(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5178 if (clipboardSelection !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5179 if (clipboardSelection.x !is selection.x || clipboardSelection.y !is selection.y) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5180 try { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5181 if (selection.y - selection.x > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5182 setClipboardContent(selection.x, selection.y - selection.x, DND.SELECTION_CLIPBOARD); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5183 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5184 } catch (DWTError error) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5185 // Copy to clipboard failed. This happens when another application |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5186 // is accessing the clipboard while we copy. Ignore the error. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5187 // Fixes 1GDQAVN |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5188 // Rethrow all other errors. Fixes bug 17578. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5189 if (error.code !is DND.ERROR_CANNOT_SET_CLIPBOARD) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5190 throw error; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5191 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5192 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5193 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5194 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5195 clipboardSelection = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5196 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5197 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5198 * Updates the caret location and selection if mouse button 1 has been |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5199 * pressed. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5200 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5201 void handleMouseDown(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5202 //force focus (object support) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5203 forceFocus(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5204 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5205 //drag detect |
103 | 5206 if (dragDetect_ && checkDragDetect(event)) return; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5207 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5208 //paste clipboard selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5209 if (event.button is 2) { |
103 | 5210 auto o = cast(ArrayWrapperString)getClipboardContent(DND.SELECTION_CLIPBOARD); |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
5211 String text = o.array; |
103 | 5212 if (text !is null && text.length > 0) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5213 // position cursor |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5214 doMouseLocationChange(event.x, event.y, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5215 // insert text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5216 Event e = new Event(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5217 e.start = selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5218 e.end = selection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5219 e.text = getModelDelimitedText(text); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5220 sendKeyEvent(e); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5221 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5222 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5223 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5224 //set selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5225 if ((event.button !is 1) || (IS_CARBON && (event.stateMask & DWT.MOD4) !is 0)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5226 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5227 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5228 clickCount = event.count; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5229 if (clickCount is 1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5230 bool select = (event.stateMask & DWT.MOD2) !is 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5231 doMouseLocationChange(event.x, event.y, select); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5232 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5233 if (doubleClickEnabled) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5234 clearSelection(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5235 int offset = getOffsetAtPoint(event.x, event.y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5236 int lineIndex = content.getLineAtOffset(offset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5237 int lineOffset = content.getOffsetAtLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5238 int lineEnd = content.getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5239 if (lineIndex + 1 < content.getLineCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5240 lineEnd = content.getOffsetAtLine(lineIndex + 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5241 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5242 int start, end; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5243 if ((clickCount & 1) is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5244 start = Math.max(0, getWordPrevious(offset, DWT.MOVEMENT_WORD_START)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5245 end = Math.min(content.getCharCount(), getWordNext(start, DWT.MOVEMENT_WORD_END)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5246 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5247 start = lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5248 end = lineEnd; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5249 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5250 selection.x = selection.y = start; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5251 selectionAnchor = -1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5252 caretOffset = end; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5253 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5254 doMouseSelection(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5255 doubleClickSelection = new Point(selection.x, selection.y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5256 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5257 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5258 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5259 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5260 * Updates the caret location and selection if mouse button 1 is pressed |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5261 * during the mouse move. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5262 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5263 void handleMouseMove(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5264 if (clickCount is 0) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5265 doMouseLocationChange(event.x, event.y, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5266 update(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5267 doAutoScroll(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5268 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5269 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5270 * Autoscrolling ends when the mouse button is released. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5271 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5272 void handleMouseUp(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5273 clickCount = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5274 endAutoScroll(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5275 if (event.button is 1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5276 try { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5277 if (selection.y - selection.x > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5278 setClipboardContent(selection.x, selection.y - selection.x, DND.SELECTION_CLIPBOARD); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5279 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5280 } catch (DWTError error) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5281 // Copy to clipboard failed. This happens when another application |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5282 // is accessing the clipboard while we copy. Ignore the error. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5283 // Fixes 1GDQAVN |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5284 // Rethrow all other errors. Fixes bug 17578. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5285 if (error.code !is DND.ERROR_CANNOT_SET_CLIPBOARD) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5286 throw error; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5287 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5288 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5289 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5290 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5291 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5292 * Renders the invalidated area specified in the paint event. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5293 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5294 * @param event paint event |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5295 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5296 void handlePaint(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5297 if (event.width is 0 || event.height is 0) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5298 if (clientAreaWidth is 0 || clientAreaHeight is 0) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5299 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5300 int startLine = getLineIndex(event.y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5301 int y = getLinePixel(startLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5302 int endY = event.y + event.height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5303 GC gc = event.gc; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5304 Color background = getBackground(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5305 Color foreground = getForeground(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5306 if (endY > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5307 int lineCount = isSingleLine() ? 1 : content.getLineCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5308 int x = leftMargin - horizontalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5309 for (int i = startLine; y < endY && i < lineCount; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5310 y += renderer.drawLine(i, x, y, gc, background, foreground); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5311 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5312 if (y < endY) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5313 gc.setBackground(background); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5314 drawBackground(gc, 0, y, clientAreaWidth, endY - y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5315 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5316 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5317 // fill the margin background |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5318 gc.setBackground(background); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5319 if (topMargin > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5320 drawBackground(gc, 0, 0, clientAreaWidth, topMargin); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5321 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5322 if (bottomMargin > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5323 drawBackground(gc, 0, clientAreaHeight - bottomMargin, clientAreaWidth, bottomMargin); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5324 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5325 if (leftMargin > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5326 drawBackground(gc, 0, 0, leftMargin, clientAreaHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5327 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5328 if (rightMargin > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5329 drawBackground(gc, clientAreaWidth - rightMargin, 0, rightMargin, clientAreaHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5330 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5331 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5332 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5333 * Recalculates the scroll bars. Rewraps all lines when in word |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5334 * wrap mode. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5335 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5336 * @param event resize event |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5337 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5338 void handleResize(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5339 int oldHeight = clientAreaHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5340 int oldWidth = clientAreaWidth; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5341 Rectangle clientArea = getClientArea(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5342 clientAreaHeight = clientArea.height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5343 clientAreaWidth = clientArea.width; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5344 /* Redraw the old or new right/bottom margin if needed */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5345 if (oldWidth !is clientAreaWidth) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5346 if (rightMargin > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5347 int x = (oldWidth < clientAreaWidth ? oldWidth : clientAreaWidth) - rightMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5348 super.redraw(x, 0, rightMargin, oldHeight, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5349 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5350 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5351 if (oldHeight !is clientAreaHeight) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5352 if (bottomMargin > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5353 int y = (oldHeight < clientAreaHeight ? oldHeight : clientAreaHeight) - bottomMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5354 super.redraw(0, y, oldWidth, bottomMargin, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5355 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5356 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5357 if (wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5358 if (oldWidth !is clientAreaWidth) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5359 renderer.reset(0, content.getLineCount()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5360 verticalScrollOffset = -1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5361 renderer.calculateIdle(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5362 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5363 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5364 if (oldHeight !is clientAreaHeight) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5365 if (oldHeight is 0) topIndexY = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5366 setScrollBars(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5367 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5368 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5369 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5370 renderer.calculateClientArea(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5371 setScrollBars(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5372 claimRightFreeSpace(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5373 // StyledText allows any value for horizontalScrollOffset when clientArea is zero |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5374 // in setHorizontalPixel() and setHorisontalOffset(). Fixes bug 168429. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5375 if (clientAreaWidth !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5376 ScrollBar horizontalBar = getHorizontalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5377 if (horizontalBar !is null && horizontalBar.getVisible()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5378 if (horizontalScrollOffset !is horizontalBar.getSelection()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5379 horizontalBar.setSelection(horizontalScrollOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5380 horizontalScrollOffset = horizontalBar.getSelection(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5381 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5382 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5383 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5384 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5385 claimBottomFreeSpace(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5386 //TODO FIX TOP INDEX DURING RESIZE |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5387 // if (oldHeight !is clientAreaHeight || wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5388 // calculateTopIndex(0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5389 // } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5390 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5391 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5392 * Updates the caret position and selection and the scroll bars to reflect |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5393 * the content change. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5394 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5395 void handleTextChanged(TextChangedEvent event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5396 int firstLine = content.getLineAtOffset(lastTextChangeStart); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5397 resetCache(firstLine, 0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5398 if (!isFixedLineHeight() && topIndex > firstLine) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5399 topIndex = firstLine; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5400 topIndexY = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5401 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5402 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5403 int lastLine = firstLine + lastTextChangeNewLineCount; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5404 int firstLineTop = getLinePixel(firstLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5405 int newLastLineBottom = getLinePixel(lastLine + 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5406 if (lastLineBottom !is newLastLineBottom) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5407 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5408 if (wordWrap) setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5409 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5410 super.redraw(0, firstLineTop, clientAreaWidth, newLastLineBottom - firstLineTop, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5411 redrawLinesBullet(renderer.redrawLines); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5412 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5413 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5414 renderer.redrawLines = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5415 // update selection/caret location after styles have been changed. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5416 // otherwise any text measuring could be incorrect |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5417 // |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5418 // also, this needs to be done after all scrolling. Otherwise, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5419 // selection redraw would be flushed during scroll which is wrong. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5420 // in some cases new text would be drawn in scroll source area even |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5421 // though the intent is to scroll it. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5422 updateSelection(lastTextChangeStart, lastTextChangeReplaceCharCount, lastTextChangeNewCharCount); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5423 if (lastTextChangeReplaceLineCount > 0 || wordWrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5424 claimBottomFreeSpace(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5425 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5426 if (lastTextChangeReplaceCharCount > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5427 claimRightFreeSpace(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5428 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5429 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5430 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5431 * Updates the screen to reflect a pending content change. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5432 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5433 * @param event .start the start offset of the change |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5434 * @param event .newText text that is going to be inserted or empty String |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5435 * if no text will be inserted |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5436 * @param event .replaceCharCount length of text that is going to be replaced |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5437 * @param event .newCharCount length of text that is going to be inserted |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5438 * @param event .replaceLineCount number of lines that are going to be replaced |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5439 * @param event .newLineCount number of new lines that are going to be inserted |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5440 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5441 void handleTextChanging(TextChangingEvent event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5442 if (event.replaceCharCount < 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5443 event.start += event.replaceCharCount; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5444 event.replaceCharCount *= -1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5445 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5446 lastTextChangeStart = event.start; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5447 lastTextChangeNewLineCount = event.newLineCount; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5448 lastTextChangeNewCharCount = event.newCharCount; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5449 lastTextChangeReplaceLineCount = event.replaceLineCount; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5450 lastTextChangeReplaceCharCount = event.replaceCharCount; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5451 int lineIndex = content.getLineAtOffset(event.start); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5452 int srcY = getLinePixel(lineIndex + event.replaceLineCount + 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5453 int destY = getLinePixel(lineIndex + 1) + event.newLineCount * renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5454 lastLineBottom = destY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5455 if (srcY < 0 && destY < 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5456 lastLineBottom += srcY - destY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5457 verticalScrollOffset += destY - srcY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5458 calculateTopIndex(destY - srcY); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5459 setScrollBars(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5460 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5461 scrollText(srcY, destY); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5462 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5463 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5464 renderer.textChanging(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5465 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5466 // Update the caret offset if it is greater than the length of the content. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5467 // This is necessary since style range API may be called between the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5468 // handleTextChanging and handleTextChanged events and this API sets the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5469 // caretOffset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5470 int newEndOfText = content.getCharCount() - event.replaceCharCount + event.newCharCount; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5471 if (caretOffset > newEndOfText) caretOffset = newEndOfText; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5472 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5473 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5474 * Called when the widget content is set programmatically, overwriting |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5475 * the old content. Resets the caret position, selection and scroll offsets. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5476 * Recalculates the content width and scroll bars. Redraws the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5477 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5478 * @param event text change event. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5479 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5480 void handleTextSet(TextChangedEvent event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5481 reset(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5482 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5483 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5484 * Called when a traversal key is pressed. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5485 * Allow tab next traversal to occur when the widget is in single |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5486 * line mode or in multi line and non-editable mode . |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5487 * When in editable multi line mode we want to prevent the tab |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5488 * traversal and receive the tab key event instead. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5489 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5490 * @param event the event |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5491 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5492 void handleTraverse(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5493 switch (event.detail) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5494 case DWT.TRAVERSE_ESCAPE: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5495 case DWT.TRAVERSE_PAGE_NEXT: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5496 case DWT.TRAVERSE_PAGE_PREVIOUS: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5497 event.doit = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5498 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5499 case DWT.TRAVERSE_RETURN: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5500 case DWT.TRAVERSE_TAB_NEXT: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5501 case DWT.TRAVERSE_TAB_PREVIOUS: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5502 if ((getStyle() & DWT.SINGLE) !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5503 event.doit = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5504 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5505 if (!editable || (event.stateMask & DWT.MODIFIER_MASK) !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5506 event.doit = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5507 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5508 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5509 break; |
115
52b32f5cb1e0
many file checked for switch default
Frank Benoit <benoit@tionex.de>
parents:
108
diff
changeset
|
5510 default: |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5511 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5512 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5513 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5514 * Scrolls the widget vertically. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5515 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5516 void handleVerticalScroll(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5517 int scrollPixel = getVerticalBar().getSelection() - getVerticalScrollOffset(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5518 scrollVertical(scrollPixel, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5519 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5520 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5521 * Add accessibility support for the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5522 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5523 void initializeAccessible() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5524 final Accessible accessible = getAccessible(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5525 accessible.addAccessibleListener(new class() AccessibleAdapter { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5526 public void getName (AccessibleEvent e) { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
5527 String name = null; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5528 Label label = getAssociatedLabel (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5529 if (label !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5530 name = stripMnemonic (label.getText()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5531 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5532 e.result = name; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5533 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5534 public void getHelp(AccessibleEvent e) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5535 e.result = getToolTipText(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5536 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5537 public void getKeyboardShortcut(AccessibleEvent e) { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
5538 String shortcut = null; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5539 Label label = getAssociatedLabel (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5540 if (label !is null) { |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
5541 String text = label.getText (); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5542 if (text !is null) { |
103 | 5543 dchar mnemonic = _findMnemonic (text); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5544 if (mnemonic !is '\0') { |
103 | 5545 shortcut = "Alt+"~tango.text.convert.Utf.toString( [mnemonic] ); //$NON-NLS-1$ |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5546 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5547 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5548 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5549 e.result = shortcut; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5550 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5551 }); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5552 accessible.addAccessibleTextListener(new class() AccessibleTextAdapter { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5553 public void getCaretOffset(AccessibleTextEvent e) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5554 e.offset = this.outer.getCaretOffset(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5555 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5556 public void getSelectionRange(AccessibleTextEvent e) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5557 Point selection = this.outer.getSelectionRange(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5558 e.offset = selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5559 e.length = selection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5560 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5561 }); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5562 accessible.addAccessibleControlListener(new class() AccessibleControlAdapter { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5563 public void getRole(AccessibleControlEvent e) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5564 e.detail = ACC.ROLE_TEXT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5565 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5566 public void getState(AccessibleControlEvent e) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5567 int state = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5568 if (isEnabled()) state |= ACC.STATE_FOCUSABLE; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5569 if (isFocusControl()) state |= ACC.STATE_FOCUSED; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5570 if (!isVisible()) state |= ACC.STATE_INVISIBLE; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5571 if (!getEditable()) state |= ACC.STATE_READONLY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5572 e.detail = state; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5573 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5574 public void getValue(AccessibleControlEvent e) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5575 e.result = this.outer.getText(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5576 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5577 }); |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
5578 addListener(DWT.FocusIn, new class(accessible) Listener { |
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
5579 Accessible acc; |
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
5580 this( Accessible acc ){ this.acc = acc; } |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5581 public void handleEvent(Event event) { |
124
11b0a1324732
Fix various stack access from anon-class
Frank Benoit <benoit@tionex.de>
parents:
115
diff
changeset
|
5582 acc.setFocus(ACC.CHILDID_SELF); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5583 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5584 }); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5585 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5586 /* |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5587 * Return the Label immediately preceding the receiver in the z-order, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5588 * or null if none. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5589 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5590 Label getAssociatedLabel () { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5591 Control[] siblings = getParent ().getChildren (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5592 for (int i = 0; i < siblings.length; i++) { |
103 | 5593 if (siblings [i] is this) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5594 if (i > 0 && ( null !is cast(Label)siblings [i-1])) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5595 return cast(Label) siblings [i-1]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5596 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5597 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5598 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5599 return null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5600 } |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
5601 String stripMnemonic (String string) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5602 int index = 0; |
103 | 5603 int length_ = string.length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5604 do { |
103 | 5605 while ((index < length_) && (string[index] !is '&')) index++; |
5606 if (++index >= length_) return string; | |
5607 if (string[index] !is '&') { | |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
5608 return string.substring(0, index-1) ~ string.substring(index, length_); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5609 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5610 index++; |
103 | 5611 } while (index < length_); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5612 return string; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5613 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5614 /* |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5615 * Return the lowercase of the first non-'&' character following |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5616 * an '&' character in the given string. If there are no '&' |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5617 * characters in the given string, return '\0'. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5618 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
5619 dchar _findMnemonic (String string) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5620 if (string is null) return '\0'; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5621 int index = 0; |
103 | 5622 int length_ = string.length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5623 do { |
103 | 5624 while (index < length_ && string[index] !is '&') index++; |
5625 if (++index >= length_) return '\0'; | |
182
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
5626 if (string[index] !is '&') return CharacterFirstToLower(string[index .. $ ] ); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5627 index++; |
103 | 5628 } while (index < length_); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5629 return '\0'; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5630 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5631 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5632 * Executes the action. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5633 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5634 * @param action one of the actions defined in ST.java |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5635 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5636 public void invokeAction(int action) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5637 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5638 updateCaretDirection = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5639 switch (action) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5640 // Navigation |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5641 case ST.LINE_UP: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5642 doLineUp(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5643 clearSelection(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5644 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5645 case ST.LINE_DOWN: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5646 doLineDown(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5647 clearSelection(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5648 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5649 case ST.LINE_START: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5650 doLineStart(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5651 clearSelection(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5652 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5653 case ST.LINE_END: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5654 doLineEnd(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5655 clearSelection(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5656 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5657 case ST.COLUMN_PREVIOUS: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5658 doCursorPrevious(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5659 clearSelection(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5660 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5661 case ST.COLUMN_NEXT: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5662 doCursorNext(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5663 clearSelection(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5664 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5665 case ST.PAGE_UP: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5666 doPageUp(false, -1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5667 clearSelection(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5668 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5669 case ST.PAGE_DOWN: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5670 doPageDown(false, -1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5671 clearSelection(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5672 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5673 case ST.WORD_PREVIOUS: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5674 doWordPrevious(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5675 clearSelection(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5676 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5677 case ST.WORD_NEXT: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5678 doWordNext(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5679 clearSelection(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5680 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5681 case ST.TEXT_START: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5682 doContentStart(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5683 clearSelection(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5684 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5685 case ST.TEXT_END: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5686 doContentEnd(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5687 clearSelection(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5688 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5689 case ST.WINDOW_START: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5690 doPageStart(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5691 clearSelection(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5692 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5693 case ST.WINDOW_END: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5694 doPageEnd(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5695 clearSelection(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5696 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5697 // Selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5698 case ST.SELECT_LINE_UP: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5699 doSelectionLineUp(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5700 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5701 case ST.SELECT_ALL: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5702 selectAll(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5703 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5704 case ST.SELECT_LINE_DOWN: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5705 doSelectionLineDown(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5706 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5707 case ST.SELECT_LINE_START: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5708 doLineStart(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5709 doSelection(ST.COLUMN_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5710 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5711 case ST.SELECT_LINE_END: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5712 doLineEnd(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5713 doSelection(ST.COLUMN_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5714 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5715 case ST.SELECT_COLUMN_PREVIOUS: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5716 doSelectionCursorPrevious(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5717 doSelection(ST.COLUMN_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5718 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5719 case ST.SELECT_COLUMN_NEXT: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5720 doSelectionCursorNext(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5721 doSelection(ST.COLUMN_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5722 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5723 case ST.SELECT_PAGE_UP: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5724 doSelectionPageUp(-1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5725 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5726 case ST.SELECT_PAGE_DOWN: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5727 doSelectionPageDown(-1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5728 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5729 case ST.SELECT_WORD_PREVIOUS: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5730 doSelectionWordPrevious(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5731 doSelection(ST.COLUMN_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5732 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5733 case ST.SELECT_WORD_NEXT: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5734 doSelectionWordNext(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5735 doSelection(ST.COLUMN_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5736 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5737 case ST.SELECT_TEXT_START: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5738 doContentStart(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5739 doSelection(ST.COLUMN_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5740 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5741 case ST.SELECT_TEXT_END: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5742 doContentEnd(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5743 doSelection(ST.COLUMN_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5744 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5745 case ST.SELECT_WINDOW_START: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5746 doPageStart(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5747 doSelection(ST.COLUMN_PREVIOUS); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5748 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5749 case ST.SELECT_WINDOW_END: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5750 doPageEnd(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5751 doSelection(ST.COLUMN_NEXT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5752 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5753 // Modification |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5754 case ST.CUT: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5755 cut(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5756 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5757 case ST.COPY: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5758 copy(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5759 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5760 case ST.PASTE: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5761 paste(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5762 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5763 case ST.DELETE_PREVIOUS: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5764 doBackspace(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5765 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5766 case ST.DELETE_NEXT: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5767 doDelete(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5768 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5769 case ST.DELETE_WORD_PREVIOUS: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5770 doDeleteWordPrevious(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5771 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5772 case ST.DELETE_WORD_NEXT: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5773 doDeleteWordNext(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5774 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5775 // Miscellaneous |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5776 case ST.TOGGLE_OVERWRITE: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5777 overwrite = !overwrite; // toggle insert/overwrite mode |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5778 break; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5779 default: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5780 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5781 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5782 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5783 * Temporary until DWT provides this |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5784 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5785 bool isBidi() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5786 return IS_GTK || BidiUtil.isBidiPlatform() || isMirrored_; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5787 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5788 bool isBidiCaret() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5789 return BidiUtil.isBidiPlatform(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5790 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5791 bool isFixedLineHeight() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5792 return fixedLineHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5793 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5794 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5795 * Returns whether the given offset is inside a multi byte line delimiter. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5796 * Example: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5797 * "Line1\r\n" isLineDelimiter(5) is false but isLineDelimiter(6) is true |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5798 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5799 * @return true if the given offset is inside a multi byte line delimiter. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5800 * false if the given offset is before or after a line delimiter. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5801 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5802 bool isLineDelimiter(int offset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5803 int line = content.getLineAtOffset(offset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5804 int lineOffset = content.getOffsetAtLine(line); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5805 int offsetInLine = offset - lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5806 // offsetInLine will be greater than line length if the line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5807 // delimiter is longer than one character and the offset is set |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5808 // in between parts of the line delimiter. |
103 | 5809 return offsetInLine > content.getLine(line).length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5810 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5811 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5812 * Returns whether the widget is mirrored (right oriented/right to left |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5813 * writing order). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5814 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5815 * @return isMirrored true=the widget is right oriented, false=the widget |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5816 * is left oriented |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5817 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5818 bool isMirrored() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5819 return isMirrored_; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5820 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5821 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5822 * Returns whether the widget can have only one line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5823 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5824 * @return true if widget can have only one line, false if widget can have |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5825 * multiple lines |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5826 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5827 bool isSingleLine() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5828 return (getStyle() & DWT.SINGLE) !is 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5829 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5830 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5831 * Sends the specified verify event, replace/insert text as defined by |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5832 * the event and send a modify event. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5833 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5834 * @param event the text change event. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5835 * <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5836 * <li>event.start - the replace start offset</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5837 * <li>event.end - the replace end offset</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5838 * <li>event.text - the new text</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5839 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5840 * @param updateCaret whether or not he caret should be set behind |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5841 * the new text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5842 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5843 void modifyContent(Event event, bool updateCaret) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5844 event.doit = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5845 notifyListeners(DWT.Verify, event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5846 if (event.doit) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5847 StyledTextEvent styledTextEvent = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5848 int replacedLength = event.end - event.start; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5849 if (isListening(ExtendedModify)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5850 styledTextEvent = new StyledTextEvent(content); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5851 styledTextEvent.start = event.start; |
103 | 5852 styledTextEvent.end = event.start + event.text.length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5853 styledTextEvent.text = content.getTextRange(event.start, replacedLength); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5854 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5855 if (updateCaret) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5856 //Fix advancing flag for delete/backspace key on direction boundary |
103 | 5857 if (event.text.length is 0) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5858 int lineIndex = content.getLineAtOffset(event.start); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5859 int lineOffset = content.getOffsetAtLine(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5860 TextLayout layout = renderer.getTextLayout(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5861 int levelStart = layout.getLevel(event.start - lineOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5862 int lineIndexEnd = content.getLineAtOffset(event.end); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5863 if (lineIndex !is lineIndexEnd) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5864 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5865 lineOffset = content.getOffsetAtLine(lineIndexEnd); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5866 layout = renderer.getTextLayout(lineIndexEnd); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5867 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5868 int levelEnd = layout.getLevel(event.end - lineOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5869 renderer.disposeTextLayout(layout); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5870 if (levelStart !is levelEnd) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5871 caretAlignment = PREVIOUS_OFFSET_TRAILING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5872 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5873 caretAlignment = OFFSET_LEADING; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5874 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5875 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5876 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5877 content.replaceTextRange(event.start, replacedLength, event.text); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5878 // set the caret position prior to sending the modify event. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5879 // fixes 1GBB8NJ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5880 if (updateCaret) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5881 // always update the caret location. fixes 1G8FODP |
103 | 5882 setSelection(event.start + event.text.length, 0, true); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5883 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5884 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5885 sendModifyEvent(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5886 if (isListening(ExtendedModify)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5887 notifyListeners(ExtendedModify, styledTextEvent); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5888 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5889 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5890 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5891 void paintObject(GC gc, int x, int y, int ascent, int descent, StyleRange style, Bullet bullet, int bulletIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5892 if (isListening(PaintObject)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5893 StyledTextEvent event = new StyledTextEvent (content) ; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5894 event.gc = gc; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5895 event.x = x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5896 event.y = y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5897 event.ascent = ascent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5898 event.descent = descent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5899 event.style = style; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5900 event.bullet = bullet; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5901 event.bulletIndex = bulletIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5902 notifyListeners(PaintObject, event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5903 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5904 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5905 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5906 * Replaces the selection with the text on the <code>DND.CLIPBOARD</code> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5907 * clipboard or, if there is no selection, inserts the text at the current |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5908 * caret offset. If the widget has the DWT.SINGLE style and the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5909 * clipboard text contains more than one line, only the first line without |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5910 * line delimiters is inserted in the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5911 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5912 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5913 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5914 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5915 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5916 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5917 public void paste(){ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5918 checkWidget(); |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
5919 String text = (cast(ArrayWrapperString) getClipboardContent(DND.CLIPBOARD)).array; |
103 | 5920 if (text !is null && text.length > 0) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5921 Event event = new Event(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5922 event.start = selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5923 event.end = selection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5924 event.text = getModelDelimitedText(text); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5925 sendKeyEvent(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5926 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5927 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5928 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5929 * Prints the widget's text to the default printer. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5930 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5931 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5932 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5933 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5934 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5935 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5936 public void print() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5937 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5938 Printer printer = new Printer(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5939 StyledTextPrintOptions options = new StyledTextPrintOptions(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5940 options.printTextForeground = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5941 options.printTextBackground = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5942 options.printTextFontStyle = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5943 options.printLineBackground = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5944 (new Printing(this, printer, options)).run(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5945 printer.dispose(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5946 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5947 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5948 * Returns a runnable that will print the widget's text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5949 * to the specified printer. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5950 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5951 * The runnable may be run in a non-UI thread. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5952 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5953 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5954 * @param printer the printer to print to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5955 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5956 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5957 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5958 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5959 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5960 * <li>ERROR_NULL_ARGUMENT when printer is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5961 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5962 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5963 public Runnable print(Printer printer) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5964 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5965 if (printer is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5966 DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5967 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5968 StyledTextPrintOptions options = new StyledTextPrintOptions(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5969 options.printTextForeground = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5970 options.printTextBackground = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5971 options.printTextFontStyle = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5972 options.printLineBackground = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5973 return print(printer, options); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5974 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5975 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5976 * Returns a runnable that will print the widget's text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5977 * to the specified printer. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5978 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5979 * The runnable may be run in a non-UI thread. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5980 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5981 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5982 * @param printer the printer to print to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5983 * @param options print options to use during printing |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5984 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5985 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5986 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5987 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5988 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5989 * <li>ERROR_NULL_ARGUMENT when printer or options is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5990 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5991 * @since 2.1 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5992 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5993 public Runnable print(Printer printer, StyledTextPrintOptions options) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5994 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5995 if (printer is null || options is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5996 DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5997 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5998 return new Printing(this, printer, options); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
5999 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6000 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6001 * Causes the entire bounds of the receiver to be marked |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6002 * as needing to be redrawn. The next time a paint request |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6003 * is processed, the control will be completely painted. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6004 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6005 * Recalculates the content width for all lines in the bounds. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6006 * When a <code>LineStyleListener</code> is used a redraw call |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6007 * is the only notification to the widget that styles have changed |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6008 * and that the content width may have changed. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6009 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6010 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6011 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6012 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6013 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6014 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6015 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6016 * @see Control#update() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6017 */ |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
6018 public override void redraw() { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6019 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6020 int itemCount = getPartialBottomIndex() - topIndex + 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6021 renderer.reset(topIndex, itemCount); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6022 renderer.calculate(topIndex, itemCount); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6023 setScrollBars(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6024 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6025 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6026 * Causes the rectangular area of the receiver specified by |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6027 * the arguments to be marked as needing to be redrawn. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6028 * The next time a paint request is processed, that area of |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6029 * the receiver will be painted. If the <code>all</code> flag |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6030 * is <code>true</code>, any children of the receiver which |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6031 * intersect with the specified area will also paint their |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6032 * intersecting areas. If the <code>all</code> flag is |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6033 * <code>false</code>, the children will not be painted. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6034 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6035 * Marks the content width of all lines in the specified rectangle |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6036 * as unknown. Recalculates the content width of all visible lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6037 * When a <code>LineStyleListener</code> is used a redraw call |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6038 * is the only notification to the widget that styles have changed |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6039 * and that the content width may have changed. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6040 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6041 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6042 * @param x the x coordinate of the area to draw |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6043 * @param y the y coordinate of the area to draw |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6044 * @param width the width of the area to draw |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6045 * @param height the height of the area to draw |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6046 * @param all <code>true</code> if children should redraw, and <code>false</code> otherwise |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6047 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6048 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6049 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6050 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6051 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6052 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6053 * @see Control#update() |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6054 */ |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
6055 public override void redraw(int x, int y, int width, int height, bool all) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6056 super.redraw(x, y, width, height, all); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6057 if (height > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6058 int firstLine = getLineIndex(y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6059 int lastLine = getLineIndex(y + height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6060 resetCache(firstLine, lastLine - firstLine + 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6061 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6062 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6063 void redrawLines(int startLine, int lineCount) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6064 // do nothing if redraw range is completely invisible |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6065 int partialBottomIndex = getPartialBottomIndex(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6066 if (startLine > partialBottomIndex || startLine + lineCount - 1 < topIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6067 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6068 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6069 // only redraw visible lines |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6070 if (startLine < topIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6071 lineCount -= topIndex - startLine; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6072 startLine = topIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6073 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6074 if (startLine + lineCount - 1 > partialBottomIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6075 lineCount = partialBottomIndex - startLine + 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6076 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6077 startLine -= topIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6078 int redrawTop = getLinePixel(startLine); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6079 int redrawBottom = getLinePixel(startLine + lineCount); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6080 int redrawWidth = clientAreaWidth - leftMargin - rightMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6081 super.redraw(leftMargin, redrawTop, redrawWidth, redrawBottom - redrawTop, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6082 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6083 void redrawLinesBullet (int[] redrawLines) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6084 if (redrawLines is null) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6085 int topIndex = getPartialTopIndex(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6086 int bottomIndex = getPartialBottomIndex(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6087 for (int i = 0; i < redrawLines.length; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6088 int lineIndex = redrawLines[i]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6089 if (!(topIndex <= lineIndex && lineIndex <= bottomIndex)) continue; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6090 int width = -1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6091 Bullet bullet = renderer.getLineBullet(lineIndex, null); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6092 if (bullet !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6093 StyleRange style = bullet.style; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6094 GlyphMetrics metrics = style.metrics; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6095 width = metrics.width; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6096 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6097 if (width is -1) width = getClientArea().width; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6098 int height = renderer.getLineHeight(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6099 int y = getLinePixel(lineIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6100 super.redraw(0, y, width, height, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6101 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6102 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6103 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6104 * Redraws the specified text range. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6105 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6106 * @param start offset of the first character to redraw |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6107 * @param length number of characters to redraw |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6108 * @param clearBackground true if the background should be cleared as |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6109 * part of the redraw operation. If true, the entire redraw range will |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6110 * be cleared before anything is redrawn. If the redraw range includes |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6111 * the last character of a line (i.e., the entire line is redrawn) the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6112 * line is cleared all the way to the right border of the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6113 * The redraw operation will be faster and smoother if clearBackground |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6114 * is set to false. Whether or not the flag can be set to false depends |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6115 * on the type of change that has taken place. If font styles or |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6116 * background colors for the redraw range have changed, clearBackground |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6117 * should be set to true. If only foreground colors have changed for |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6118 * the redraw range, clearBackground can be set to false. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6119 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6120 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6121 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6122 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6123 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6124 * <li>ERROR_INVALID_RANGE when start and/or end are outside the widget content</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6125 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6126 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6127 public void redrawRange(int start, int length, bool clearBackground) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6128 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6129 int end = start + length; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6130 int contentLength = content.getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6131 if (start > end || start < 0 || end > contentLength) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6132 DWT.error(DWT.ERROR_INVALID_RANGE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6133 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6134 int firstLine = content.getLineAtOffset(start); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6135 int lastLine = content.getLineAtOffset(end); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6136 resetCache(firstLine, lastLine - firstLine + 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6137 internalRedrawRange(start, length); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6138 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6139 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6140 * Removes the specified bidirectional segment listener. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6141 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6142 * @param listener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6143 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6144 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6145 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6146 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6147 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6148 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6149 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6150 * @since 2.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6151 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6152 public void removeBidiSegmentListener(BidiSegmentListener listener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6153 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6154 if (listener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6155 removeListener(LineGetSegments, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6156 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6157 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6158 * Removes the specified extended modify listener. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6159 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6160 * @param extendedModifyListener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6161 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6162 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6163 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6164 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6165 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6166 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6167 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6168 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6169 public void removeExtendedModifyListener(ExtendedModifyListener extendedModifyListener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6170 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6171 if (extendedModifyListener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6172 removeListener(ExtendedModify, extendedModifyListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6173 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6174 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6175 * Removes the specified line background listener. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6176 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6177 * @param listener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6178 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6179 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6180 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6181 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6182 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6183 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6184 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6185 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6186 public void removeLineBackgroundListener(LineBackgroundListener listener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6187 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6188 if (listener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6189 removeListener(LineGetBackground, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6190 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6191 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6192 * Removes the specified line style listener. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6193 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6194 * @param listener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6195 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6196 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6197 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6198 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6199 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6200 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6201 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6202 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6203 public void removeLineStyleListener(LineStyleListener listener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6204 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6205 if (listener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6206 removeListener(LineGetStyle, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6207 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6208 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6209 * Removes the specified modify listener. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6210 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6211 * @param modifyListener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6212 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6213 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6214 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6215 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6216 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6217 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6218 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6219 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6220 public void removeModifyListener(ModifyListener modifyListener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6221 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6222 if (modifyListener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6223 removeListener(DWT.Modify, modifyListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6224 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6225 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6226 * Removes the specified listener. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6227 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6228 * @param listener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6229 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6230 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6231 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6232 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6233 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6234 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6235 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6236 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6237 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6238 public void removePaintObjectListener(PaintObjectListener listener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6239 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6240 if (listener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6241 removeListener(PaintObject, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6242 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6243 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6244 * Removes the listener from the collection of listeners who will |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6245 * be notified when the user changes the receiver's selection. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6246 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6247 * @param listener the listener which should no longer be notified |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6248 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6249 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6250 * <li>ERROR_NULL_ARGUMENT - if the listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6251 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6252 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6253 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6254 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6255 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6256 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6257 * @see SelectionListener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6258 * @see #addSelectionListener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6259 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6260 public void removeSelectionListener(SelectionListener listener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6261 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6262 if (listener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6263 removeListener(DWT.Selection, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6264 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6265 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6266 * Removes the specified verify listener. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6267 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6268 * @param verifyListener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6269 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6270 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6271 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6272 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6273 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6274 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6275 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6276 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6277 public void removeVerifyListener(VerifyListener verifyListener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6278 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6279 if (verifyListener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6280 removeListener(DWT.Verify, verifyListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6281 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6282 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6283 * Removes the specified key verify listener. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6284 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6285 * @param listener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6286 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6287 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6288 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6289 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6290 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6291 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6292 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6293 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6294 public void removeVerifyKeyListener(VerifyKeyListener listener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6295 if (listener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6296 removeListener(VerifyKey, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6297 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6298 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6299 * Removes the specified word movement listener. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6300 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6301 * @param listener the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6302 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6303 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6304 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6305 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6306 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6307 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6308 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6309 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6310 * @see MovementEvent |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6311 * @see MovementListener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6312 * @see #addWordMovementListener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6313 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6314 * @since 3.3 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6315 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6316 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6317 public void removeWordMovementListener(MovementListener listener) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6318 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6319 if (listener is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6320 removeListener(WordNext, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6321 removeListener(WordPrevious, listener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6322 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6323 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6324 * Replaces the styles in the given range with new styles. This method |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6325 * effectively deletes the styles in the given range and then adds the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6326 * the new styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6327 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6328 * Note: Because a StyleRange includes the start and length, the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6329 * same instance cannot occur multiple times in the array of styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6330 * If the same style attributes, such as font and color, occur in |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6331 * multiple StyleRanges, <code>setStyleRanges(int, int, int[], StyleRange[])</code> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6332 * can be used to share styles and reduce memory usage. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6333 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6334 * Should not be called if a LineStyleListener has been set since the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6335 * listener maintains the styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6336 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6337 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6338 * @param start offset of first character where styles will be deleted |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6339 * @param length length of the range to delete styles in |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6340 * @param ranges StyleRange objects containing the new style information. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6341 * The ranges should not overlap and should be within the specified start |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6342 * and length. The style rendering is undefined if the ranges do overlap |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6343 * or are ill-defined. Must not be null. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6344 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6345 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6346 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6347 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6348 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6349 * <li>ERROR_INVALID_RANGE when either start or end is outside the valid range (0 <= offset <= getCharCount())</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6350 * <li>ERROR_NULL_ARGUMENT when ranges is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6351 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6352 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6353 * @since 2.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6354 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6355 * @see #setStyleRanges(int, int, int[], StyleRange[]) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6356 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6357 public void replaceStyleRanges(int start, int length, StyleRange[] ranges) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6358 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6359 if (isListening(LineGetStyle)) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6360 if (ranges is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6361 setStyleRanges(start, length, null, ranges, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6362 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6363 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6364 * Replaces the given text range with new text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6365 * If the widget has the DWT.SINGLE style and "text" contains more than |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6366 * one line, only the first line is rendered but the text is stored |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6367 * unchanged. A subsequent call to getText will return the same text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6368 * that was set. Note that only a single line of text should be set when |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6369 * the DWT.SINGLE style is used. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6370 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6371 * <b>NOTE:</b> During the replace operation the current selection is |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6372 * changed as follows: |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6373 * <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6374 * <li>selection before replaced text: selection unchanged |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6375 * <li>selection after replaced text: adjust the selection so that same text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6376 * remains selected |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6377 * <li>selection intersects replaced text: selection is cleared and caret |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6378 * is placed after inserted text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6379 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6380 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6381 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6382 * @param start offset of first character to replace |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6383 * @param length number of characters to replace. Use 0 to insert text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6384 * @param text new text. May be empty to delete text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6385 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6386 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6387 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6388 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6389 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6390 * <li>ERROR_INVALID_RANGE when either start or end is outside the valid range (0 <= offset <= getCharCount())</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6391 * <li>ERROR_INVALID_ARGUMENT when either start or end is inside a multi byte line delimiter. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6392 * Splitting a line delimiter for example by inserting text in between the CR and LF and deleting part of a line delimiter is not supported</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6393 * <li>ERROR_NULL_ARGUMENT when string is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6394 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6395 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
6396 public void replaceTextRange(int start, int length, String text) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6397 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6398 if (text is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6399 DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6400 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6401 int contentLength = getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6402 int end = start + length; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6403 if (start > end || start < 0 || end > contentLength) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6404 DWT.error(DWT.ERROR_INVALID_RANGE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6405 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6406 Event event = new Event(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6407 event.start = start; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6408 event.end = end; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6409 event.text = text; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6410 modifyContent(event, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6411 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6412 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6413 * Resets the caret position, selection and scroll offsets. Recalculate |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6414 * the content width and scroll bars. Redraw the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6415 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6416 void reset() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6417 ScrollBar verticalBar = getVerticalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6418 ScrollBar horizontalBar = getHorizontalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6419 caretOffset = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6420 topIndex = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6421 topIndexY = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6422 verticalScrollOffset = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6423 horizontalScrollOffset = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6424 resetSelection(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6425 renderer.setContent(content); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6426 if (verticalBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6427 verticalBar.setSelection(0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6428 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6429 if (horizontalBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6430 horizontalBar.setSelection(0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6431 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6432 resetCache(0, 0); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6433 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6434 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6435 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6436 void resetCache(int firstLine, int count) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6437 int maxLineIndex = renderer.maxWidthLineIndex; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6438 renderer.reset(firstLine, count); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6439 renderer.calculateClientArea(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6440 if (0 <= maxLineIndex && maxLineIndex < content.getLineCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6441 renderer.calculate(maxLineIndex, 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6442 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6443 setScrollBars(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6444 if (!isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6445 if (topIndex > firstLine) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6446 verticalScrollOffset = -1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6447 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6448 renderer.calculateIdle(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6449 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6450 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6451 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6452 * Resets the selection. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6453 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6454 void resetSelection() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6455 selection.x = selection.y = caretOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6456 selectionAnchor = -1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6457 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6458 |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
6459 public override void scroll(int destX, int destY, int x, int y, int width, int height, bool all) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6460 super.scroll(destX, destY, x, y, width, height, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6461 if (all) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6462 int deltaX = destX - x, deltaY = destY - y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6463 Control[] children = getChildren(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6464 for (int i=0; i<children.length; i++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6465 Control child = children[i]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6466 Rectangle rect = child.getBounds(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6467 child.setLocation(rect.x + deltaX, rect.y + deltaY); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6468 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6469 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6470 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6471 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6472 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6473 * Scrolls the widget horizontally. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6474 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6475 * @param pixels number of pixels to scroll, > 0 = scroll left, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6476 * < 0 scroll right |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6477 * @param adjustScrollBar |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6478 * true= the scroll thumb will be moved to reflect the new scroll offset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6479 * false = the scroll thumb will not be moved |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6480 * @return |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6481 * true=the widget was scrolled |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6482 * false=the widget was not scrolled, the given offset is not valid. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6483 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6484 bool scrollHorizontal(int pixels, bool adjustScrollBar) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6485 if (pixels is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6486 return false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6487 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6488 ScrollBar horizontalBar = getHorizontalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6489 if (horizontalBar !is null && adjustScrollBar) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6490 horizontalBar.setSelection(horizontalScrollOffset + pixels); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6491 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6492 int scrollHeight = clientAreaHeight - topMargin - bottomMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6493 if (pixels > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6494 int sourceX = leftMargin + pixels; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6495 int scrollWidth = clientAreaWidth - sourceX - rightMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6496 if (scrollWidth > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6497 scroll(leftMargin, topMargin, sourceX, topMargin, scrollWidth, scrollHeight, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6498 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6499 if (sourceX > scrollWidth) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6500 super.redraw(leftMargin + scrollWidth, topMargin, pixels - scrollWidth, scrollHeight, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6501 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6502 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6503 int destinationX = leftMargin - pixels; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6504 int scrollWidth = clientAreaWidth - destinationX - rightMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6505 if (scrollWidth > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6506 scroll(destinationX, topMargin, leftMargin, topMargin, scrollWidth, scrollHeight, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6507 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6508 if (destinationX > scrollWidth) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6509 super.redraw(leftMargin + scrollWidth, topMargin, -pixels - scrollWidth, scrollHeight, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6510 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6511 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6512 horizontalScrollOffset += pixels; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6513 int oldColumnX = columnX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6514 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6515 columnX = oldColumnX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6516 return true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6517 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6518 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6519 * Scrolls the widget vertically. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6520 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6521 * @param pixel the new vertical scroll offset |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6522 * @param adjustScrollBar |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6523 * true= the scroll thumb will be moved to reflect the new scroll offset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6524 * false = the scroll thumb will not be moved |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6525 * @return |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6526 * true=the widget was scrolled |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6527 * false=the widget was not scrolled |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6528 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6529 bool scrollVertical(int pixels, bool adjustScrollBar) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6530 if (pixels is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6531 return false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6532 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6533 if (verticalScrollOffset !is -1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6534 ScrollBar verticalBar = getVerticalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6535 if (verticalBar !is null && adjustScrollBar) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6536 verticalBar.setSelection(verticalScrollOffset + pixels); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6537 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6538 int scrollWidth = clientAreaWidth - leftMargin - rightMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6539 if (pixels > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6540 int sourceY = topMargin + pixels; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6541 int scrollHeight = clientAreaHeight - sourceY - bottomMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6542 if (scrollHeight > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6543 scroll(leftMargin, topMargin, leftMargin, sourceY, scrollWidth, scrollHeight, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6544 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6545 if (sourceY > scrollHeight) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6546 int redrawY = Math.max(0, topMargin + scrollHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6547 int redrawHeight = Math.min(clientAreaHeight, pixels - scrollHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6548 super.redraw(leftMargin, redrawY, scrollWidth, redrawHeight, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6549 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6550 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6551 int destinationY = topMargin - pixels; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6552 int scrollHeight = clientAreaHeight - destinationY - bottomMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6553 if (scrollHeight > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6554 scroll(leftMargin, destinationY, leftMargin, topMargin, scrollWidth, scrollHeight, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6555 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6556 if (destinationY > scrollHeight) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6557 int redrawY = Math.max(0, topMargin + scrollHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6558 int redrawHeight = Math.min(clientAreaHeight, -pixels - scrollHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6559 super.redraw(leftMargin, redrawY, scrollWidth, redrawHeight, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6560 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6561 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6562 verticalScrollOffset += pixels; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6563 calculateTopIndex(pixels); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6564 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6565 calculateTopIndex(pixels); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6566 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6567 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6568 int oldColumnX = columnX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6569 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6570 columnX = oldColumnX; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6571 return true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6572 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6573 void scrollText(int srcY, int destY) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6574 if (srcY is destY) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6575 int deltaY = destY - srcY; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6576 int scrollWidth = clientAreaWidth - leftMargin - rightMargin, scrollHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6577 if (deltaY > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6578 scrollHeight = clientAreaHeight - srcY - bottomMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6579 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6580 scrollHeight = clientAreaHeight - destY - bottomMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6581 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6582 scroll(leftMargin, destY, leftMargin, srcY, scrollWidth, scrollHeight, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6583 if ((0 < srcY + scrollHeight) && (topMargin > srcY)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6584 super.redraw(leftMargin, deltaY, scrollWidth, topMargin, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6585 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6586 if ((0 < destY + scrollHeight) && (topMargin > destY)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6587 super.redraw(leftMargin, 0, scrollWidth, topMargin, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6588 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6589 if ((clientAreaHeight - bottomMargin < srcY + scrollHeight) && (clientAreaHeight > srcY)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6590 super.redraw(leftMargin, clientAreaHeight - bottomMargin + deltaY, scrollWidth, bottomMargin, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6591 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6592 if ((clientAreaHeight - bottomMargin < destY + scrollHeight) && (clientAreaHeight > destY)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6593 super.redraw(leftMargin, clientAreaHeight - bottomMargin, scrollWidth, bottomMargin, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6594 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6595 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6596 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6597 * Selects all the text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6598 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6599 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6600 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6601 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6602 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6603 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6604 public void selectAll() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6605 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6606 setSelection(0, Math.max(getCharCount(),0)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6607 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6608 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6609 * Replaces/inserts text as defined by the event. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6610 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6611 * @param event the text change event. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6612 * <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6613 * <li>event.start - the replace start offset</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6614 * <li>event.end - the replace end offset</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6615 * <li>event.text - the new text</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6616 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6617 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6618 void sendKeyEvent(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6619 if (editable) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6620 modifyContent(event, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6621 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6622 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6623 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6624 * Returns a StyledTextEvent that can be used to request data such |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6625 * as styles and background color for a line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6626 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6627 * The specified line may be a visual (wrapped) line if in word |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6628 * wrap mode. The returned object will always be for a logical |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6629 * (unwrapped) line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6630 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6631 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6632 * @param lineOffset offset of the line. This may be the offset of |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6633 * a visual line if the widget is in word wrap mode. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6634 * @param line line text. This may be the text of a visual line if |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6635 * the widget is in word wrap mode. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6636 * @return StyledTextEvent that can be used to request line data |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6637 * for the given line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6638 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
6639 StyledTextEvent sendLineEvent(int eventType, int lineOffset, String line) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6640 StyledTextEvent event = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6641 if (isListening(eventType)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6642 event = new StyledTextEvent(content); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6643 event.detail = lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6644 event.text = line; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6645 event.alignment = alignment; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6646 event.indent = indent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6647 event.justify = justify; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6648 notifyListeners(eventType, event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6649 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6650 return event; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6651 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6652 void sendModifyEvent(Event event) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6653 Accessible accessible = getAccessible(); |
103 | 6654 if (event.text.length is 0) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6655 accessible.textChanged(ACC.TEXT_DELETE, event.start, event.end - event.start); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6656 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6657 if (event.start is event.end) { |
103 | 6658 accessible.textChanged(ACC.TEXT_INSERT, event.start, event.text.length); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6659 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6660 accessible.textChanged(ACC.TEXT_DELETE, event.start, event.end - event.start); |
103 | 6661 accessible.textChanged(ACC.TEXT_INSERT, event.start, event.text.length); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6662 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6663 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6664 notifyListeners(DWT.Modify, event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6665 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6666 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6667 * Sends the specified selection event. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6668 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6669 void sendSelectionEvent() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6670 getAccessible().textSelectionChanged(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6671 Event event = new Event(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6672 event.x = selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6673 event.y = selection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6674 notifyListeners(DWT.Selection, event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6675 } |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
6676 int sendWordBoundaryEvent(int eventType, int movement, int offset, int newOffset, String lineText, int lineOffset) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6677 if (isListening(eventType)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6678 StyledTextEvent event = new StyledTextEvent(content); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6679 event.detail = lineOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6680 event.text = lineText; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6681 event.count = movement; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6682 event.start = offset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6683 event.end = newOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6684 notifyListeners(eventType, event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6685 offset = event.end; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6686 if (offset !is newOffset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6687 int length = getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6688 if (offset < 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6689 offset = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6690 } else if (offset > length) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6691 offset = length; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6692 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6693 if (isLineDelimiter(offset)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6694 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6695 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6696 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6697 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6698 return offset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6699 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6700 return newOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6701 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6702 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6703 * Sets the alignment of the widget. The argument should be one of <code>DWT.LEFT</code>, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6704 * <code>DWT.CENTER</code> or <code>DWT.RIGHT</code>. The alignment applies for all lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6705 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6706 * @param alignment the new alignment |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6707 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6708 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6709 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6710 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6711 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6712 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6713 * @see #setLineAlignment(int, int, int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6714 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6715 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6716 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6717 public void setAlignment(int alignment) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6718 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6719 alignment &= (DWT.LEFT | DWT.RIGHT | DWT.CENTER); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6720 if (alignment is 0 || this.alignment is alignment) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6721 this.alignment = alignment; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6722 resetCache(0, content.getLineCount()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6723 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6724 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6725 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6726 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6727 * @see Control#setBackground(Color) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6728 */ |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
6729 public override void setBackground(Color color) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6730 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6731 background = color; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6732 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6733 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6734 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6735 * Sets the receiver's caret. Set the caret's height and location. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6736 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6737 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6738 * @param caret the new caret for the receiver |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6739 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6740 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6741 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6742 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6743 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6744 */ |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
6745 public override void setCaret(Caret caret) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6746 checkWidget (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6747 super.setCaret(caret); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6748 caretDirection = DWT.NULL; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6749 if (caret !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6750 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6751 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6752 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6753 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6754 * Sets the BIDI coloring mode. When true the BIDI text display |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6755 * algorithm is applied to segments of text that are the same |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6756 * color. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6757 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6758 * @param mode the new coloring mode |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6759 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6760 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6761 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6762 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6763 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6764 * @deprecated use BidiSegmentListener instead. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6765 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6766 public void setBidiColoring(bool mode) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6767 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6768 bidiColoring = mode; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6769 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6770 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6771 * Moves the Caret to the current caret offset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6772 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6773 void setCaretLocation() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6774 Point newCaretPos = getPointAtOffset(caretOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6775 setCaretLocation(newCaretPos, getCaretDirection()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6776 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6777 void setCaretLocation(Point location, int direction) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6778 Caret caret = getCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6779 if (caret !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6780 bool isDefaultCaret = caret is defaultCaret; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6781 int lineHeight = renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6782 int caretHeight = lineHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6783 if (!isFixedLineHeight() && isDefaultCaret) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6784 caretHeight = getBoundsAtOffset(caretOffset).height; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6785 if (caretHeight !is lineHeight) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6786 direction = DWT.DEFAULT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6787 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6788 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6789 int imageDirection = direction; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6790 if (isMirrored()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6791 if (imageDirection is DWT.LEFT) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6792 imageDirection = DWT.RIGHT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6793 } else if (imageDirection is DWT.RIGHT) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6794 imageDirection = DWT.LEFT; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6795 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6796 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6797 if (isDefaultCaret && imageDirection is DWT.RIGHT) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6798 location.x -= (caret.getSize().x - 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6799 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6800 if (isDefaultCaret) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6801 caret.setBounds(location.x, location.y, 0, caretHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6802 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6803 caret.setLocation(location); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6804 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6805 getAccessible().textCaretMoved(getCaretOffset()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6806 if (direction !is caretDirection) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6807 caretDirection = direction; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6808 if (isDefaultCaret) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6809 if (imageDirection is DWT.DEFAULT) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6810 defaultCaret.setImage(null); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6811 } else if (imageDirection is DWT.LEFT) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6812 defaultCaret.setImage(leftCaretBitmap); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6813 } else if (imageDirection is DWT.RIGHT) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6814 defaultCaret.setImage(rightCaretBitmap); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6815 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6816 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6817 if (caretDirection is DWT.LEFT) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6818 BidiUtil.setKeyboardLanguage(BidiUtil.KEYBOARD_NON_BIDI); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6819 } else if (caretDirection is DWT.RIGHT) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6820 BidiUtil.setKeyboardLanguage(BidiUtil.KEYBOARD_BIDI); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6821 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6822 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6823 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6824 columnX = location.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6825 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6826 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6827 * Sets the caret offset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6828 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6829 * @param offset caret offset, relative to the first character in the text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6830 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6831 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6832 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6833 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6834 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6835 * <li>ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6836 * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6837 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6838 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6839 public void setCaretOffset(int offset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6840 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6841 int length = getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6842 if (length > 0 && offset !is caretOffset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6843 if (offset < 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6844 caretOffset = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6845 } else if (offset > length) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6846 caretOffset = length; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6847 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6848 if (isLineDelimiter(offset)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6849 // offset is inside a multi byte line delimiter. This is an |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6850 // illegal operation and an exception is thrown. Fixes 1GDKK3R |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6851 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6852 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6853 caretOffset = offset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6854 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6855 // clear the selection if the caret is moved. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6856 // don't notify listeners about the selection change. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6857 clearSelection(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6858 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6859 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6860 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6861 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6862 * Copies the specified text range to the clipboard. The text will be placed |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6863 * in the clipboard in plain text format and RTF format. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6864 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6865 * @param start start index of the text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6866 * @param length length of text to place in clipboard |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6867 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6868 * @exception DWTError, see Clipboard.setContents |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6869 * @see dwt.dnd.Clipboard#setContents |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6870 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6871 void setClipboardContent(int start, int length, int clipboardType) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6872 if (clipboardType is DND.SELECTION_CLIPBOARD && !(IS_MOTIF || IS_GTK)) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6873 TextTransfer plainTextTransfer = TextTransfer.getInstance(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6874 TextWriter plainTextWriter = new TextWriter(start, length); |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
6875 String plainText = getPlatformDelimitedText(plainTextWriter); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6876 Object[] data; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6877 Transfer[] types; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6878 if (clipboardType is DND.SELECTION_CLIPBOARD) { |
103 | 6879 data = [ cast(Object) new ArrayWrapperString(plainText) ]; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6880 types = [plainTextTransfer]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6881 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6882 RTFTransfer rtfTransfer = RTFTransfer.getInstance(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6883 RTFWriter rtfWriter = new RTFWriter(start, length); |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
6884 String rtfText = getPlatformDelimitedText(rtfWriter); |
103 | 6885 data = [ cast(Object) new ArrayWrapperString(rtfText), new ArrayWrapperString(plainText) ]; |
6886 types = [ cast(Transfer)rtfTransfer, plainTextTransfer]; | |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6887 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6888 clipboard.setContents(data, types, clipboardType); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6889 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6890 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6891 * Sets the content implementation to use for text storage. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6892 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6893 * @param newContent StyledTextContent implementation to use for text storage. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6894 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6895 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6896 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6897 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6898 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6899 * <li>ERROR_NULL_ARGUMENT when listener is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6900 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6901 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6902 public void setContent(StyledTextContent newContent) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6903 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6904 if (newContent is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6905 DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6906 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6907 if (content !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6908 content.removeTextChangeListener(textChangeListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6909 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6910 content = newContent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6911 content.addTextChangeListener(textChangeListener); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6912 reset(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6913 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6914 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6915 * Sets the receiver's cursor to the cursor specified by the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6916 * argument. Overridden to handle the null case since the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6917 * StyledText widget uses an ibeam as its default cursor. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6918 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6919 * @see Control#setCursor(Cursor) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6920 */ |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
6921 public override void setCursor (Cursor cursor) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6922 if (cursor is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6923 Display display = getDisplay(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6924 super.setCursor(display.getSystemCursor(DWT.CURSOR_IBEAM)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6925 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6926 super.setCursor(cursor); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6927 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6928 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6929 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6930 * Sets whether the widget : double click mouse behavior. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6931 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6932 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6933 * @param enable if true double clicking a word selects the word, if false |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6934 * double clicks have the same effect as regular mouse clicks. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6935 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6936 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6937 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6938 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6939 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6940 public void setDoubleClickEnabled(bool enable) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6941 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6942 doubleClickEnabled = enable; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6943 } |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
6944 public override void setDragDetect (bool dragDetect_) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6945 checkWidget (); |
103 | 6946 this.dragDetect_ = dragDetect_; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6947 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6948 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6949 * Sets whether the widget content can be edited. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6950 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6951 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6952 * @param editable if true content can be edited, if false content can not be |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6953 * edited |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6954 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6955 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6956 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6957 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6958 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6959 public void setEditable(bool editable) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6960 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6961 this.editable = editable; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6962 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6963 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6964 * Sets a new font to render text with. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6965 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6966 * <b>NOTE:</b> Italic fonts are not supported unless they have no overhang |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6967 * and the same baseline as regular fonts. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6968 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6969 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6970 * @param font new font |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6971 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6972 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6973 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6974 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6975 */ |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
6976 public override void setFont(Font font) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6977 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6978 int oldLineHeight = renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6979 super.setFont(font); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6980 renderer.setFont(getFont(), tabLength); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6981 // keep the same top line visible. fixes 5815 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6982 if (isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6983 int lineHeight = renderer.getLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6984 if (lineHeight !is oldLineHeight) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6985 int vscroll = (getVerticalScrollOffset() * lineHeight / oldLineHeight) - getVerticalScrollOffset(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6986 scrollVertical(vscroll, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6987 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6988 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6989 resetCache(0, content.getLineCount()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6990 claimBottomFreeSpace(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6991 calculateScrollBars(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6992 if (isBidiCaret()) createCaretBitmaps(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6993 caretDirection = DWT.NULL; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6994 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6995 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6996 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6997 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6998 * @see dwt.widgets.Control#setForeground |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
6999 */ |
150
f2e04420fd6c
reworked overrides and superclass aliases
Frank Benoit <benoit@tionex.de>
parents:
124
diff
changeset
|
7000 public override void setForeground(Color color) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7001 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7002 foreground = color; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7003 super.setForeground(getForeground()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7004 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7005 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7006 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7007 * Sets the horizontal scroll offset relative to the start of the line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7008 * Do nothing if there is no text set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7009 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7010 * <b>NOTE:</b> The horizontal index is reset to 0 when new text is set in the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7011 * widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7012 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7013 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7014 * @param offset horizontal scroll offset relative to the start |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7015 * of the line, measured in character increments starting at 0, if |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7016 * equal to 0 the content is not scrolled, if > 0 = the content is scrolled. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7017 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7018 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7019 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7020 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7021 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7022 public void setHorizontalIndex(int offset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7023 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7024 if (getCharCount() is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7025 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7026 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7027 if (offset < 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7028 offset = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7029 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7030 offset *= getHorizontalIncrement(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7031 // allow any value if client area width is unknown or 0. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7032 // offset will be checked in resize handler. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7033 // don't use isVisible since width is known even if widget |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7034 // is temporarily invisible |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7035 if (clientAreaWidth > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7036 int width = renderer.getWidth(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7037 // prevent scrolling if the content fits in the client area. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7038 // align end of longest line with right border of client area |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7039 // if offset is out of range. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7040 if (offset > width - clientAreaWidth) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7041 offset = Math.max(0, width - clientAreaWidth); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7042 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7043 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7044 scrollHorizontal(offset - horizontalScrollOffset, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7045 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7046 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7047 * Sets the horizontal pixel offset relative to the start of the line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7048 * Do nothing if there is no text set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7049 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7050 * <b>NOTE:</b> The horizontal pixel offset is reset to 0 when new text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7051 * is set in the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7052 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7053 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7054 * @param pixel horizontal pixel offset relative to the start |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7055 * of the line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7056 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7057 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7058 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7059 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7060 * @since 2.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7061 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7062 public void setHorizontalPixel(int pixel) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7063 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7064 if (getCharCount() is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7065 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7066 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7067 if (pixel < 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7068 pixel = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7069 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7070 // allow any value if client area width is unknown or 0. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7071 // offset will be checked in resize handler. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7072 // don't use isVisible since width is known even if widget |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7073 // is temporarily invisible |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7074 if (clientAreaWidth > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7075 int width = renderer.getWidth(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7076 // prevent scrolling if the content fits in the client area. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7077 // align end of longest line with right border of client area |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7078 // if offset is out of range. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7079 if (pixel > width - clientAreaWidth) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7080 pixel = Math.max(0, width - clientAreaWidth); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7081 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7082 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7083 scrollHorizontal(pixel - horizontalScrollOffset, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7084 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7085 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7086 * Sets the line indentation of the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7087 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7088 * It is the amount of blank space, in pixels, at the beginning of each line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7089 * When a line wraps in several lines only the first one is indented. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7090 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7091 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7092 * @param indent the new indent |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7093 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7094 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7095 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7096 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7097 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7098 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7099 * @see #setLineIndent(int, int, int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7100 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7101 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7102 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7103 public void setIndent(int indent) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7104 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7105 if (this.indent is indent || indent < 0) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7106 this.indent = indent; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7107 resetCache(0, content.getLineCount()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7108 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7109 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7110 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7111 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7112 * Sets whether the widget should justify lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7113 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7114 * @param justify whether lines should be justified |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7115 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7116 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7117 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7118 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7119 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7120 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7121 * @see #setLineJustify(int, int, bool) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7122 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7123 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7124 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7125 public void setJustify(bool justify) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7126 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7127 if (this.justify is justify) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7128 this.justify = justify; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7129 resetCache(0, content.getLineCount()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7130 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7131 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7132 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7133 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7134 * Maps a key to an action. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7135 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7136 * One action can be associated with N keys. However, each key can only |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7137 * have one action (key:action is N:1 relation). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7138 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7139 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7140 * @param key a key code defined in DWT.java or a character. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7141 * Optionally ORd with a state mask. Preferred state masks are one or more of |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7142 * DWT.MOD1, DWT.MOD2, DWT.MOD3, since these masks account for modifier platform |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7143 * differences. However, there may be cases where using the specific state masks |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7144 * (i.e., DWT.CTRL, DWT.SHIFT, DWT.ALT, DWT.COMMAND) makes sense. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7145 * @param action one of the predefined actions defined in ST.java. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7146 * Use DWT.NULL to remove a key binding. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7147 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7148 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7149 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7150 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7151 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7152 public void setKeyBinding(int key, int action) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7153 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7154 int modifierValue = key & DWT.MODIFIER_MASK; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7155 char keyChar = cast(char)(key & DWT.KEY_MASK); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7156 if (Compatibility.isLetter(keyChar)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7157 // make the keybinding case insensitive by adding it |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7158 // in its upper and lower case form |
103 | 7159 char ch = CharacterToUpper(keyChar); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7160 int newKey = ch | modifierValue; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7161 if (action is DWT.NULL) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7162 keyActionMap.remove(newKey); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7163 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7164 keyActionMap[newKey] = action; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7165 } |
103 | 7166 ch = CharacterToLower(keyChar); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7167 newKey = ch | modifierValue; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7168 if (action is DWT.NULL) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7169 keyActionMap.remove(newKey); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7170 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7171 keyActionMap[newKey] = action; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7172 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7173 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7174 if (action is DWT.NULL) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7175 keyActionMap.remove(key); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7176 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7177 keyActionMap[key]=action; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7178 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7179 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7180 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7181 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7182 * Sets the alignment of the specified lines. The argument should be one of <code>DWT.LEFT</code>, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7183 * <code>DWT.CENTER</code> or <code>DWT.RIGHT</code>. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7184 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7185 * Should not be called if a LineStyleListener has been set since the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7186 * maintains the line attributes. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7187 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7188 * All line attributes are maintained relative to the line text, not the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7189 * line index that is specified in this method call. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7190 * During text changes, when entire lines are inserted or removed, the line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7191 * attributes that are associated with the lines after the change |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7192 * will "move" with their respective text. An entire line is defined as |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7193 * extending from the first character on a line to the last and including the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7194 * line delimiter. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7195 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7196 * When two lines are joined by deleting a line delimiter, the top line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7197 * attributes take precedence and the attributes of the bottom line are deleted. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7198 * For all other text changes line attributes will remain unchanged. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7199 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7200 * @param startLine first line the alignment is applied to, 0 based |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7201 * @param lineCount number of lines the alignment applies to. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7202 * @param alignment line alignment |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7203 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7204 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7205 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7206 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7207 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7208 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7209 * <li>ERROR_INVALID_ARGUMENT when the specified line range is invalid</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7210 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7211 * @see #setAlignment(int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7212 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7213 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7214 public void setLineAlignment(int startLine, int lineCount, int alignment) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7215 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7216 if (isListening(LineGetStyle)) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7217 if (startLine < 0 || startLine + lineCount > content.getLineCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7218 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7219 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7220 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7221 renderer.setLineAlignment(startLine, lineCount, alignment); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7222 resetCache(startLine, lineCount); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7223 redrawLines(startLine, lineCount); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7224 int caretLine = getCaretLine(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7225 if (startLine <= caretLine && caretLine < startLine + lineCount) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7226 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7227 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7228 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7229 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7230 * Sets the background color of the specified lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7231 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7232 * The background color is drawn for the width of the widget. All |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7233 * line background colors are discarded when setText is called. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7234 * The text background color if defined in a StyleRange overlays the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7235 * line background color. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7236 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7237 * Should not be called if a LineBackgroundListener has been set since the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7238 * listener maintains the line backgrounds. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7239 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7240 * All line attributes are maintained relative to the line text, not the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7241 * line index that is specified in this method call. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7242 * During text changes, when entire lines are inserted or removed, the line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7243 * attributes that are associated with the lines after the change |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7244 * will "move" with their respective text. An entire line is defined as |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7245 * extending from the first character on a line to the last and including the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7246 * line delimiter. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7247 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7248 * When two lines are joined by deleting a line delimiter, the top line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7249 * attributes take precedence and the attributes of the bottom line are deleted. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7250 * For all other text changes line attributes will remain unchanged. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7251 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7252 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7253 * @param startLine first line the color is applied to, 0 based |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7254 * @param lineCount number of lines the color applies to. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7255 * @param background line background color |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7256 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7257 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7258 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7259 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7260 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7261 * <li>ERROR_INVALID_ARGUMENT when the specified line range is invalid</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7262 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7263 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7264 public void setLineBackground(int startLine, int lineCount, Color background) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7265 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7266 if (isListening(LineGetBackground)) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7267 if (startLine < 0 || startLine + lineCount > content.getLineCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7268 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7269 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7270 if (background !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7271 renderer.setLineBackground(startLine, lineCount, background); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7272 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7273 renderer.clearLineBackground(startLine, lineCount); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7274 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7275 redrawLines(startLine, lineCount); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7276 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7277 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7278 * Sets the bullet of the specified lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7279 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7280 * Should not be called if a LineStyleListener has been set since the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7281 * maintains the line attributes. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7282 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7283 * All line attributes are maintained relative to the line text, not the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7284 * line index that is specified in this method call. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7285 * During text changes, when entire lines are inserted or removed, the line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7286 * attributes that are associated with the lines after the change |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7287 * will "move" with their respective text. An entire line is defined as |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7288 * extending from the first character on a line to the last and including the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7289 * line delimiter. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7290 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7291 * When two lines are joined by deleting a line delimiter, the top line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7292 * attributes take precedence and the attributes of the bottom line are deleted. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7293 * For all other text changes line attributes will remain unchanged. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7294 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7295 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7296 * @param startLine first line the bullet is applied to, 0 based |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7297 * @param lineCount number of lines the bullet applies to. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7298 * @param bullet line bullet |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7299 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7300 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7301 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7302 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7303 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7304 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7305 * <li>ERROR_INVALID_ARGUMENT when the specified line range is invalid</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7306 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7307 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7308 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7309 public void setLineBullet(int startLine, int lineCount, Bullet bullet) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7310 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7311 if (isListening(LineGetStyle)) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7312 if (startLine < 0 || startLine + lineCount > content.getLineCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7313 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7314 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7315 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7316 renderer.setLineBullet(startLine, lineCount, bullet); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7317 resetCache(startLine, lineCount); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7318 redrawLines(startLine, lineCount); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7319 int caretLine = getCaretLine(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7320 if (startLine <= caretLine && caretLine < startLine + lineCount) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7321 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7322 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7323 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7324 void setVariableLineHeight () { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7325 if (!fixedLineHeight) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7326 fixedLineHeight = false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7327 renderer.calculateIdle(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7328 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7329 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7330 * Sets the indent of the specified lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7331 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7332 * Should not be called if a LineStyleListener has been set since the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7333 * maintains the line attributes. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7334 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7335 * All line attributes are maintained relative to the line text, not the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7336 * line index that is specified in this method call. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7337 * During text changes, when entire lines are inserted or removed, the line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7338 * attributes that are associated with the lines after the change |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7339 * will "move" with their respective text. An entire line is defined as |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7340 * extending from the first character on a line to the last and including the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7341 * line delimiter. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7342 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7343 * When two lines are joined by deleting a line delimiter, the top line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7344 * attributes take precedence and the attributes of the bottom line are deleted. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7345 * For all other text changes line attributes will remain unchanged. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7346 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7347 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7348 * @param startLine first line the indent is applied to, 0 based |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7349 * @param lineCount number of lines the indent applies to. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7350 * @param indent line indent |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7351 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7352 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7353 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7354 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7355 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7356 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7357 * <li>ERROR_INVALID_ARGUMENT when the specified line range is invalid</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7358 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7359 * @see #setIndent(int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7360 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7361 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7362 public void setLineIndent(int startLine, int lineCount, int indent) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7363 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7364 if (isListening(LineGetStyle)) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7365 if (startLine < 0 || startLine + lineCount > content.getLineCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7366 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7367 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7368 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7369 renderer.setLineIndent(startLine, lineCount, indent); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7370 resetCache(startLine, lineCount); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7371 redrawLines(startLine, lineCount); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7372 int caretLine = getCaretLine(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7373 if (startLine <= caretLine && caretLine < startLine + lineCount) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7374 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7375 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7376 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7377 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7378 * Sets the justify of the specified lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7379 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7380 * Should not be called if a LineStyleListener has been set since the listener |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7381 * maintains the line attributes. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7382 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7383 * All line attributes are maintained relative to the line text, not the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7384 * line index that is specified in this method call. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7385 * During text changes, when entire lines are inserted or removed, the line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7386 * attributes that are associated with the lines after the change |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7387 * will "move" with their respective text. An entire line is defined as |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7388 * extending from the first character on a line to the last and including the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7389 * line delimiter. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7390 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7391 * When two lines are joined by deleting a line delimiter, the top line |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7392 * attributes take precedence and the attributes of the bottom line are deleted. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7393 * For all other text changes line attributes will remain unchanged. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7394 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7395 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7396 * @param startLine first line the justify is applied to, 0 based |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7397 * @param lineCount number of lines the justify applies to. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7398 * @param justify true if lines should be justified |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7399 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7400 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7401 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7402 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7403 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7404 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7405 * <li>ERROR_INVALID_ARGUMENT when the specified line range is invalid</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7406 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7407 * @see #setJustify(bool) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7408 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7409 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7410 public void setLineJustify(int startLine, int lineCount, bool justify) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7411 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7412 if (isListening(LineGetStyle)) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7413 if (startLine < 0 || startLine + lineCount > content.getLineCount()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7414 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7415 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7416 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7417 renderer.setLineJustify(startLine, lineCount, justify); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7418 resetCache(startLine, lineCount); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7419 redrawLines(startLine, lineCount); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7420 int caretLine = getCaretLine(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7421 if (startLine <= caretLine && caretLine < startLine + lineCount) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7422 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7423 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7424 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7425 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7426 * Sets the line spacing of the widget. The line spacing applies for all lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7427 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7428 * @param lineSpacing the line spacing |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7429 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7430 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7431 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7432 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7433 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7434 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7435 public void setLineSpacing(int lineSpacing) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7436 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7437 if (this.lineSpacing is lineSpacing || lineSpacing < 0) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7438 this.lineSpacing = lineSpacing; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7439 setVariableLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7440 resetCache(0, content.getLineCount()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7441 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7442 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7443 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7444 void setMargins (int leftMargin, int topMargin, int rightMargin, int bottomMargin) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7445 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7446 this.leftMargin = leftMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7447 this.topMargin = topMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7448 this.rightMargin = rightMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7449 this.bottomMargin = bottomMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7450 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7451 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7452 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7453 * Flips selection anchor based on word selection direction. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7454 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7455 void setMouseWordSelectionAnchor() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7456 if (clickCount > 1) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7457 if (caretOffset < doubleClickSelection.x) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7458 selectionAnchor = doubleClickSelection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7459 } else if (caretOffset > doubleClickSelection.y) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7460 selectionAnchor = doubleClickSelection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7461 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7462 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7463 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7464 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7465 * Sets the orientation of the receiver, which must be one |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7466 * of the constants <code>DWT.LEFT_TO_RIGHT</code> or <code>DWT.RIGHT_TO_LEFT</code>. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7467 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7468 * @param orientation new orientation style |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7469 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7470 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7471 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7472 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7473 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7474 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7475 * @since 2.1.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7476 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7477 public void setOrientation(int orientation) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7478 if ((orientation & (DWT.RIGHT_TO_LEFT | DWT.LEFT_TO_RIGHT)) is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7479 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7480 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7481 if ((orientation & DWT.RIGHT_TO_LEFT) !is 0 && (orientation & DWT.LEFT_TO_RIGHT) !is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7482 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7483 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7484 if ((orientation & DWT.RIGHT_TO_LEFT) !is 0 && isMirrored()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7485 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7486 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7487 if ((orientation & DWT.LEFT_TO_RIGHT) !is 0 && !isMirrored()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7488 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7489 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7490 if (!BidiUtil.setOrientation(handle, orientation)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7491 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7492 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7493 isMirrored_ = (orientation & DWT.RIGHT_TO_LEFT) !is 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7494 caretDirection = DWT.NULL; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7495 resetCache(0, content.getLineCount()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7496 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7497 keyActionMap = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7498 createKeyBindings(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7499 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7500 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7501 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7502 * Adjusts the maximum and the page size of the scroll bars to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7503 * reflect content width/length changes. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7504 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7505 * @param vertical indicates if the vertical scrollbar also needs to be set |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7506 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7507 void setScrollBars(bool vertical) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7508 int inactive = 1; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7509 if (vertical || !isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7510 ScrollBar verticalBar = getVerticalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7511 if (verticalBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7512 int maximum = renderer.getHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7513 // only set the real values if the scroll bar can be used |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7514 // (ie. because the thumb size is less than the scroll maximum) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7515 // avoids flashing on Motif, fixes 1G7RE1J and 1G5SE92 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7516 if (clientAreaHeight < maximum) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7517 verticalBar.setMaximum(maximum); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7518 verticalBar.setThumb(clientAreaHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7519 verticalBar.setPageIncrement(clientAreaHeight); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7520 } else if (verticalBar.getThumb() !is inactive || verticalBar.getMaximum() !is inactive) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7521 verticalBar.setValues( |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7522 verticalBar.getSelection(), |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7523 verticalBar.getMinimum(), |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7524 inactive, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7525 inactive, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7526 verticalBar.getIncrement(), |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7527 inactive); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7528 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7529 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7530 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7531 ScrollBar horizontalBar = getHorizontalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7532 if (horizontalBar !is null && horizontalBar.getVisible()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7533 int maximum = renderer.getWidth(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7534 // only set the real values if the scroll bar can be used |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7535 // (ie. because the thumb size is less than the scroll maximum) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7536 // avoids flashing on Motif, fixes 1G7RE1J and 1G5SE92 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7537 if (clientAreaWidth < maximum) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7538 horizontalBar.setMaximum(maximum); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7539 horizontalBar.setThumb(clientAreaWidth - leftMargin - rightMargin); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7540 horizontalBar.setPageIncrement(clientAreaWidth - leftMargin - rightMargin); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7541 } else if (horizontalBar.getThumb() !is inactive || horizontalBar.getMaximum() !is inactive) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7542 horizontalBar.setValues( |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7543 horizontalBar.getSelection(), |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7544 horizontalBar.getMinimum(), |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7545 inactive, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7546 inactive, |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7547 horizontalBar.getIncrement(), |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7548 inactive); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7549 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7550 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7551 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7552 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7553 * Sets the selection to the given position and scrolls it into view. Equivalent to setSelection(start,start). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7554 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7555 * @param start new caret position |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7556 * @see #setSelection(int,int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7557 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7558 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7559 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7560 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7561 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7562 * <li>ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7563 * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7564 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7565 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7566 public void setSelection(int start) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7567 // checkWidget test done in setSelectionRange |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7568 setSelection(start, start); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7569 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7570 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7571 * Sets the selection and scrolls it into view. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7572 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7573 * Indexing is zero based. Text selections are specified in terms of |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7574 * caret positions. In a text widget that contains N characters, there are |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7575 * N+1 caret positions, ranging from 0..N |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7576 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7577 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7578 * @param point x=selection start offset, y=selection end offset |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7579 * The caret will be placed at the selection start when x > y. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7580 * @see #setSelection(int,int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7581 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7582 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7583 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7584 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7585 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7586 * <li>ERROR_NULL_ARGUMENT when point is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7587 * <li>ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7588 * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7589 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7590 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7591 public void setSelection(Point point) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7592 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7593 if (point is null) DWT.error (DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7594 setSelection(point.x, point.y); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7595 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7596 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7597 * Sets the receiver's selection background color to the color specified |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7598 * by the argument, or to the default system color for the control |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7599 * if the argument is null. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7600 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7601 * @param color the new color (or null) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7602 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7603 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7604 * <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7605 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7606 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7607 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7608 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7609 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7610 * @since 2.1 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7611 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7612 public void setSelectionBackground (Color color) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7613 checkWidget (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7614 if (color !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7615 if (color.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7616 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7617 selectionBackground = color; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7618 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7619 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7620 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7621 * Sets the receiver's selection foreground color to the color specified |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7622 * by the argument, or to the default system color for the control |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7623 * if the argument is null. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7624 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7625 * Note that this is a <em>HINT</em>. Some platforms do not allow the application |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7626 * to change the selection foreground color. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7627 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7628 * @param color the new color (or null) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7629 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7630 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7631 * <li>ERROR_INVALID_ARGUMENT - if the argument has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7632 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7633 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7634 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7635 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7636 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7637 * @since 2.1 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7638 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7639 public void setSelectionForeground (Color color) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7640 checkWidget (); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7641 if (color !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7642 if (color.isDisposed()) DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7643 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7644 selectionForeground = color; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7645 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7646 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7647 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7648 * Sets the selection and scrolls it into view. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7649 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7650 * Indexing is zero based. Text selections are specified in terms of |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7651 * caret positions. In a text widget that contains N characters, there are |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7652 * N+1 caret positions, ranging from 0..N |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7653 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7654 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7655 * @param start selection start offset. The caret will be placed at the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7656 * selection start when start > end. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7657 * @param end selection end offset |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7658 * @see #setSelectionRange(int,int) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7659 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7660 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7661 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7662 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7663 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7664 * <li>ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7665 * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7666 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7667 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7668 public void setSelection(int start, int end) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7669 setSelectionRange(start, end - start); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7670 showSelection(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7671 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7672 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7673 * Sets the selection. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7674 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7675 * The new selection may not be visible. Call showSelection to scroll |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7676 * the selection into view. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7677 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7678 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7679 * @param start offset of the first selected character, start >= 0 must be true. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7680 * @param length number of characters to select, 0 <= start + length |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7681 * <= getCharCount() must be true. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7682 * A negative length places the caret at the selection start. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7683 * @param sendEvent a Selection event is sent when set to true and when |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7684 * the selection is reset. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7685 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7686 void setSelection(int start, int length, bool sendEvent) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7687 int end = start + length; |
182
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
7688 start = content.utf8AdjustOffset(start); |
721afe91f448
Fix: several utf8 awareness problems
Frank Benoit <benoit@tionex.de>
parents:
170
diff
changeset
|
7689 end = content.utf8AdjustOffset(end); |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7690 if (start > end) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7691 int temp = end; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7692 end = start; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7693 start = temp; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7694 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7695 // is the selection range different or is the selection direction |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7696 // different? |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7697 if (selection.x !is start || selection.y !is end || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7698 (length > 0 && selectionAnchor !is selection.x) || |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7699 (length < 0 && selectionAnchor !is selection.y)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7700 clearSelection(sendEvent); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7701 if (length < 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7702 selectionAnchor = selection.y = end; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7703 caretOffset = selection.x = start; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7704 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7705 selectionAnchor = selection.x = start; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7706 caretOffset = selection.y = end; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7707 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7708 internalRedrawRange(selection.x, selection.y - selection.x); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7709 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7710 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7711 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7712 * Sets the selection. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7713 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7714 * The new selection may not be visible. Call showSelection to scroll the selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7715 * into view. A negative length places the caret at the visual start of the selection. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7716 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7717 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7718 * @param start offset of the first selected character |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7719 * @param length number of characters to select |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7720 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7721 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7722 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7723 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7724 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7725 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7726 * <li>ERROR_INVALID_ARGUMENT when either the start or the end of the selection range is inside a |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7727 * multi byte line delimiter (and thus neither clearly in front of or after the line delimiter) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7728 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7729 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7730 public void setSelectionRange(int start, int length) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7731 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7732 int contentLength = getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7733 start = Math.max(0, Math.min (start, contentLength)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7734 int end = start + length; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7735 if (end < 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7736 length = -start; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7737 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7738 if (end > contentLength) length = contentLength - start; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7739 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7740 if (isLineDelimiter(start) || isLineDelimiter(start + length)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7741 // the start offset or end offset of the selection range is inside a |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7742 // multi byte line delimiter. This is an illegal operation and an exception |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7743 // is thrown. Fixes 1GDKK3R |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7744 DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7745 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7746 setSelection(start, length, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7747 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7748 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7749 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7750 * Adds the specified style. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7751 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7752 * The new style overwrites existing styles for the specified range. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7753 * Existing style ranges are adjusted if they partially overlap with |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7754 * the new style. To clear an individual style, call setStyleRange |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7755 * with a StyleRange that has null attributes. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7756 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7757 * Should not be called if a LineStyleListener has been set since the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7758 * listener maintains the styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7759 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7760 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7761 * @param range StyleRange object containing the style information. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7762 * Overwrites the old style in the given range. May be null to delete |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7763 * all styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7764 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7765 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7766 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7767 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7768 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7769 * <li>ERROR_INVALID_RANGE when the style range is outside the valid range (> getCharCount())</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7770 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7771 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7772 public void setStyleRange(StyleRange range) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7773 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7774 if (isListening(LineGetStyle)) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7775 if (range !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7776 if (range.isUnstyled()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7777 setStyleRanges(range.start, range.length, null, null, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7778 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7779 setStyleRanges(range.start, 0, null, [range], false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7780 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7781 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7782 setStyleRanges(0, 0, null, null, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7783 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7784 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7785 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7786 * Clears the styles in the range specified by <code>start</code> and |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7787 * <code>length</code> and adds the new styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7788 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7789 * The ranges array contains start and length pairs. Each pair refers to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7790 * the corresponding style in the styles array. For example, the pair |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7791 * that starts at ranges[n] with length ranges[n+1] uses the style |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7792 * at styles[n/2]. The range fields within each StyleRange are ignored. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7793 * If ranges or styles is null, the specified range is cleared. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7794 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7795 * Note: It is expected that the same instance of a StyleRange will occur |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7796 * multiple times within the styles array, reducing memory usage. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7797 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7798 * Should not be called if a LineStyleListener has been set since the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7799 * listener maintains the styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7800 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7801 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7802 * @param start offset of first character where styles will be deleted |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7803 * @param length length of the range to delete styles in |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7804 * @param ranges the array of ranges. The ranges must not overlap and must be in order. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7805 * @param styles the array of StyleRanges. The range fields within the StyleRange are unused. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7806 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7807 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7808 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7809 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7810 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7811 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7812 * <li>ERROR_NULL_ARGUMENT when an element in the styles array is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7813 * <li>ERROR_INVALID_RANGE when the number of ranges and style do not match (ranges.length * 2 is styles.length)</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7814 * <li>ERROR_INVALID_RANGE when a range is outside the valid range (> getCharCount() or less than zero)</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7815 * <li>ERROR_INVALID_RANGE when a range overlaps</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7816 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7817 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7818 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7819 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7820 public void setStyleRanges(int start, int length, int[] ranges, StyleRange[] styles) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7821 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7822 if (isListening(LineGetStyle)) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7823 if (ranges is null || styles is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7824 setStyleRanges(start, length, null, null, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7825 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7826 setStyleRanges(start, length, ranges, styles, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7827 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7828 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7829 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7830 * Sets styles to be used for rendering the widget content. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7831 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7832 * All styles in the widget will be replaced with the given set of ranges and styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7833 * The ranges array contains start and length pairs. Each pair refers to |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7834 * the corresponding style in the styles array. For example, the pair |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7835 * that starts at ranges[n] with length ranges[n+1] uses the style |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7836 * at styles[n/2]. The range fields within each StyleRange are ignored. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7837 * If either argument is null, the styles are cleared. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7838 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7839 * Note: It is expected that the same instance of a StyleRange will occur |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7840 * multiple times within the styles array, reducing memory usage. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7841 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7842 * Should not be called if a LineStyleListener has been set since the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7843 * listener maintains the styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7844 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7845 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7846 * @param ranges the array of ranges. The ranges must not overlap and must be in order. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7847 * @param styles the array of StyleRanges. The range fields within the StyleRange are unused. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7848 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7849 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7850 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7851 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7852 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7853 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7854 * <li>ERROR_NULL_ARGUMENT when an element in the styles array is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7855 * <li>ERROR_INVALID_RANGE when the number of ranges and style do not match (ranges.length * 2 is styles.length)</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7856 * <li>ERROR_INVALID_RANGE when a range is outside the valid range (> getCharCount() or less than zero)</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7857 * <li>ERROR_INVALID_RANGE when a range overlaps</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7858 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7859 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7860 * @since 3.2 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7861 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7862 public void setStyleRanges(int[] ranges, StyleRange[] styles) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7863 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7864 if (isListening(LineGetStyle)) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7865 if (ranges is null || styles is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7866 setStyleRanges(0, 0, null, null, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7867 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7868 setStyleRanges(0, 0, ranges, styles, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7869 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7870 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7871 void setStyleRanges(int start, int length, int[] ranges, StyleRange[] styles, bool reset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7872 int charCount = content.getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7873 int end = start + length; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7874 if (start > end || start < 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7875 DWT.error(DWT.ERROR_INVALID_RANGE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7876 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7877 if (styles !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7878 if (end > charCount) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7879 DWT.error(DWT.ERROR_INVALID_RANGE); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7880 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7881 if (ranges !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7882 if (ranges.length !is styles.length << 1) DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7883 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7884 int lastOffset = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7885 bool variableHeight = false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7886 for (int i = 0; i < styles.length; i ++) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7887 if (styles[i] is null) DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7888 int rangeStart, rangeLength; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7889 if (ranges !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7890 rangeStart = ranges[i << 1]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7891 rangeLength = ranges[(i << 1) + 1]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7892 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7893 rangeStart = styles[i].start; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7894 rangeLength = styles[i].length; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7895 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7896 if (rangeLength < 0) DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7897 if (!(0 <= rangeStart && rangeStart + rangeLength <= charCount)) DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7898 if (lastOffset > rangeStart) DWT.error(DWT.ERROR_INVALID_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7899 variableHeight |= styles[i].isVariableHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7900 lastOffset = rangeStart + rangeLength; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7901 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7902 if (variableHeight) setVariableLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7903 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7904 int rangeStart = start, rangeEnd = end; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7905 if (styles !is null && styles.length > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7906 if (ranges !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7907 rangeStart = ranges[0]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7908 rangeEnd = ranges[ranges.length - 2] + ranges[ranges.length - 1]; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7909 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7910 rangeStart = styles[0].start; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7911 rangeEnd = styles[styles.length - 1].start + styles[styles.length - 1].length; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7912 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7913 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7914 int lastLineBottom = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7915 if (!isFixedLineHeight() && !reset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7916 int lineEnd = content.getLineAtOffset(Math.max(end, rangeEnd)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7917 int partialTopIndex = getPartialTopIndex(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7918 int partialBottomIndex = getPartialBottomIndex(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7919 if (partialTopIndex <= lineEnd && lineEnd <= partialBottomIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7920 lastLineBottom = getLinePixel(lineEnd + 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7921 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7922 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7923 if (reset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7924 renderer.setStyleRanges(null, null); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7925 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7926 renderer.updateRanges(start, length, length); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7927 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7928 if (styles !is null && styles.length > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7929 renderer.setStyleRanges(ranges, styles); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7930 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7931 if (reset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7932 resetCache(0, content.getLineCount()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7933 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7934 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7935 int lineStart = content.getLineAtOffset(Math.min(start, rangeStart)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7936 int lineEnd = content.getLineAtOffset(Math.max(end, rangeEnd)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7937 resetCache(lineStart, lineEnd - lineStart + 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7938 int partialTopIndex = getPartialTopIndex(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7939 int partialBottomIndex = getPartialBottomIndex(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7940 if (!(lineStart > partialBottomIndex || lineEnd < partialTopIndex)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7941 int y = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7942 int height = clientAreaHeight; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7943 if (partialTopIndex <= lineStart && lineStart <= partialBottomIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7944 int lineTop = Math.max(y, getLinePixel(lineStart)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7945 y = lineTop; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7946 height -= lineTop; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7947 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7948 if (partialTopIndex <= lineEnd && lineEnd <= partialBottomIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7949 int newLastLineBottom = getLinePixel(lineEnd + 1); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7950 if (!isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7951 scrollText(lastLineBottom, newLastLineBottom); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7952 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7953 height = newLastLineBottom - y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7954 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7955 super.redraw(0, y, clientAreaWidth, height, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7956 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7957 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7958 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7959 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7960 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7961 * Sets styles to be used for rendering the widget content. All styles |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7962 * in the widget will be replaced with the given set of styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7963 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7964 * Note: Because a StyleRange includes the start and length, the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7965 * same instance cannot occur multiple times in the array of styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7966 * If the same style attributes, such as font and color, occur in |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7967 * multiple StyleRanges, <code>setStyleRanges(int[], StyleRange[])</code> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7968 * can be used to share styles and reduce memory usage. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7969 * </p><p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7970 * Should not be called if a LineStyleListener has been set since the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7971 * listener maintains the styles. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7972 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7973 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7974 * @param ranges StyleRange objects containing the style information. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7975 * The ranges should not overlap. The style rendering is undefined if |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7976 * the ranges do overlap. Must not be null. The styles need to be in order. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7977 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7978 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7979 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7980 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7981 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7982 * <li>ERROR_NULL_ARGUMENT when the list of ranges is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7983 * <li>ERROR_INVALID_RANGE when the last of the style ranges is outside the valid range (> getCharCount())</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7984 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7985 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7986 * @see #setStyleRanges(int[], StyleRange[]) |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7987 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7988 public void setStyleRanges(StyleRange[] ranges) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7989 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7990 if (isListening(LineGetStyle)) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7991 if (ranges is null) DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7992 setStyleRanges(0, 0, null, ranges, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7993 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7994 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7995 * Sets the tab width. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7996 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7997 * @param tabs tab width measured in characters. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7998 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
7999 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8000 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8001 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8002 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8003 public void setTabs(int tabs) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8004 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8005 tabLength = tabs; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8006 renderer.setFont(null, tabs); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8007 if (caretOffset > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8008 caretOffset = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8009 showCaret(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8010 clearSelection(false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8011 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8012 resetCache(0, content.getLineCount()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8013 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8014 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8015 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8016 * Sets the widget content. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8017 * If the widget has the DWT.SINGLE style and "text" contains more than |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8018 * one line, only the first line is rendered but the text is stored |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8019 * unchanged. A subsequent call to getText will return the same text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8020 * that was set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8021 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8022 * <b>Note:</b> Only a single line of text should be set when the DWT.SINGLE |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8023 * style is used. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8024 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8025 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8026 * @param text new widget content. Replaces existing content. Line styles |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8027 * that were set using StyledText API are discarded. The |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8028 * current selection is also discarded. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8029 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8030 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8031 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8032 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8033 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8034 * <li>ERROR_NULL_ARGUMENT when string is null</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8035 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8036 */ |
170
dd156298d22f
tango -r3232, dmd 1.027, some reedits in StyledText
Frank Benoit <benoit@tionex.de>
parents:
150
diff
changeset
|
8037 public void setText(String text) { |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8038 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8039 if (text is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8040 DWT.error(DWT.ERROR_NULL_ARGUMENT); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8041 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8042 Event event = new Event(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8043 event.start = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8044 event.end = getCharCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8045 event.text = text; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8046 event.doit = true; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8047 notifyListeners(DWT.Verify, event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8048 if (event.doit) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8049 StyledTextEvent styledTextEvent = null; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8050 if (isListening(ExtendedModify)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8051 styledTextEvent = new StyledTextEvent(content); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8052 styledTextEvent.start = event.start; |
103 | 8053 styledTextEvent.end = event.start + event.text.length; |
102
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8054 styledTextEvent.text = content.getTextRange(event.start, event.end - event.start); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8055 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8056 content.setText(event.text); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8057 sendModifyEvent(event); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8058 if (styledTextEvent !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8059 notifyListeners(ExtendedModify, styledTextEvent); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8060 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8061 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8062 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8063 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8064 * Sets the text limit to the specified number of characters. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8065 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8066 * The text limit specifies the amount of text that |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8067 * the user can type into the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8068 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8069 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8070 * @param limit the new text limit. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8071 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8072 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8073 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8074 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8075 * @exception IllegalArgumentException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8076 * <li>ERROR_CANNOT_BE_ZERO when limit is 0</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8077 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8078 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8079 public void setTextLimit(int limit) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8080 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8081 if (limit is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8082 DWT.error(DWT.ERROR_CANNOT_BE_ZERO); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8083 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8084 textLimit = limit; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8085 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8086 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8087 * Sets the top index. Do nothing if there is no text set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8088 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8089 * The top index is the index of the line that is currently at the top |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8090 * of the widget. The top index changes when the widget is scrolled. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8091 * Indexing starts from zero. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8092 * Note: The top index is reset to 0 when new text is set in the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8093 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8094 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8095 * @param topIndex new top index. Must be between 0 and |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8096 * getLineCount() - fully visible lines per page. If no lines are fully |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8097 * visible the maximum value is getLineCount() - 1. An out of range |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8098 * index will be adjusted accordingly. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8099 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8100 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8101 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8102 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8103 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8104 public void setTopIndex(int topIndex) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8105 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8106 if (getCharCount() is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8107 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8108 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8109 int lineCount = content.getLineCount(), pixel; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8110 if (isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8111 int pageSize = Math.max(1, Math.min(lineCount, getLineCountWhole())); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8112 if (topIndex < 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8113 topIndex = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8114 } else if (topIndex > lineCount - pageSize) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8115 topIndex = lineCount - pageSize; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8116 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8117 pixel = getLinePixel(topIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8118 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8119 topIndex = Math.max(0, Math.min(lineCount - 1, topIndex)); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8120 pixel = getLinePixel(topIndex); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8121 if (pixel > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8122 pixel = getAvailableHeightBellow(pixel); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8123 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8124 pixel = getAvailableHeightAbove(pixel); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8125 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8126 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8127 scrollVertical(pixel, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8128 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8129 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8130 * Sets the top pixel offset. Do nothing if there is no text set. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8131 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8132 * The top pixel offset is the vertical pixel offset of the widget. The |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8133 * widget is scrolled so that the given pixel position is at the top. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8134 * The top index is adjusted to the corresponding top line. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8135 * Note: The top pixel is reset to 0 when new text is set in the widget. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8136 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8137 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8138 * @param pixel new top pixel offset. Must be between 0 and |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8139 * (getLineCount() - visible lines per page) / getLineHeight()). An out |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8140 * of range offset will be adjusted accordingly. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8141 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8142 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8143 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8144 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8145 * @since 2.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8146 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8147 public void setTopPixel(int pixel) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8148 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8149 if (getCharCount() is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8150 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8151 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8152 if (pixel < 0) pixel = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8153 int lineCount = content.getLineCount(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8154 int height = clientAreaHeight - topMargin - bottomMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8155 int verticalOffset = getVerticalScrollOffset(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8156 if (isFixedLineHeight()) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8157 int maxTopPixel = Math.max(0, lineCount * getVerticalIncrement() - height); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8158 if (pixel > maxTopPixel) pixel = maxTopPixel; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8159 pixel -= verticalOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8160 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8161 pixel -= verticalOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8162 if (pixel > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8163 pixel = getAvailableHeightBellow(pixel); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8164 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8165 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8166 scrollVertical(pixel, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8167 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8168 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8169 * Sets whether the widget wraps lines. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8170 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8171 * This overrides the creation style bit DWT.WRAP. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8172 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8173 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8174 * @param wrap true=widget wraps lines, false=widget does not wrap lines |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8175 * @since 2.0 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8176 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8177 public void setWordWrap(bool wrap) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8178 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8179 if ((getStyle() & DWT.SINGLE) !is 0) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8180 if (wordWrap is wrap) return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8181 wordWrap = wrap; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8182 setVariableLineHeight(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8183 resetCache(0, content.getLineCount()); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8184 horizontalScrollOffset = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8185 ScrollBar horizontalBar = getHorizontalBar(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8186 if (horizontalBar !is null) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8187 horizontalBar.setVisible(!wordWrap); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8188 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8189 setScrollBars(true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8190 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8191 super.redraw(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8192 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8193 bool showLocation(Rectangle rect, bool scrollPage) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8194 int clientAreaWidth = this.clientAreaWidth - leftMargin - rightMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8195 int clientAreaHeight = this.clientAreaHeight - topMargin - bottomMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8196 bool scrolled = false; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8197 if (rect.y <= topMargin) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8198 scrolled = scrollVertical(rect.y - topMargin, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8199 } else if (rect.y + rect.height > clientAreaHeight) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8200 if (clientAreaHeight is 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8201 scrolled = scrollVertical(rect.y, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8202 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8203 scrolled = scrollVertical(rect.y + rect.height - clientAreaHeight, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8204 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8205 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8206 if (clientAreaWidth > 0) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8207 int minScroll = scrollPage ? clientAreaWidth / 4 : 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8208 if (rect.x < leftMargin) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8209 int scrollWidth = Math.max(leftMargin - rect.x, minScroll); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8210 int maxScroll = horizontalScrollOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8211 scrolled = scrollHorizontal(-Math.min(maxScroll, scrollWidth), true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8212 } else if (rect.x + rect.width > clientAreaWidth) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8213 int scrollWidth = Math.max(rect.x + rect.width - clientAreaWidth, minScroll); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8214 int maxScroll = renderer.getWidth() - horizontalScrollOffset - this.clientAreaWidth; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8215 scrolled = scrollHorizontal(Math.min(maxScroll, scrollWidth), true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8216 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8217 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8218 return scrolled; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8219 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8220 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8221 * Sets the caret location and scrolls the caret offset into view. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8222 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8223 void showCaret() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8224 Rectangle bounds = getBoundsAtOffset(caretOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8225 if (!showLocation(bounds, true)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8226 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8227 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8228 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8229 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8230 * Scrolls the selection into view. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8231 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8232 * The end of the selection will be scrolled into view. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8233 * Note that if a right-to-left selection exists, the end of the selection is |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8234 * the visual beginning of the selection (i.e., where the caret is located). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8235 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8236 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8237 * @exception DWTException <ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8238 * <li>ERROR_WIDGET_DISPOSED - if the receiver has been disposed</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8239 * <li>ERROR_THREAD_INVALID_ACCESS - if not called from the thread that created the receiver</li> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8240 * </ul> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8241 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8242 public void showSelection() { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8243 checkWidget(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8244 // is selection from right-to-left? |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8245 bool rightToLeft = caretOffset is selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8246 int startOffset, endOffset; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8247 if (rightToLeft) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8248 startOffset = selection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8249 endOffset = selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8250 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8251 startOffset = selection.x; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8252 endOffset = selection.y; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8253 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8254 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8255 Rectangle startBounds = getBoundsAtOffset(startOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8256 Rectangle endBounds = getBoundsAtOffset(endOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8257 |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8258 // can the selection be fully displayed within the widget's visible width? |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8259 int w = clientAreaWidth - leftMargin - rightMargin; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8260 bool selectionFits = rightToLeft ? startBounds.x - endBounds.x <= w : endBounds.x - startBounds.x <= w; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8261 if (selectionFits) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8262 // show as much of the selection as possible by first showing |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8263 // the start of the selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8264 if (showLocation(startBounds, false)) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8265 // endX value could change if showing startX caused a scroll to occur |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8266 endBounds = getBoundsAtOffset(endOffset); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8267 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8268 // the character at endOffset is not part of the selection |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8269 endBounds.width = 0; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8270 showLocation(endBounds, false); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8271 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8272 // just show the end of the selection since the selection start |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8273 // will not be visible |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8274 showLocation(endBounds, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8275 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8276 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8277 /** |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8278 * Updates the selection and caret position depending on the text change. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8279 * <p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8280 * If the selection intersects with the replaced text, the selection is |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8281 * reset and the caret moved to the end of the new text. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8282 * If the selection is behind the replaced text it is moved so that the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8283 * same text remains selected. If the selection is before the replaced text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8284 * it is left unchanged. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8285 * </p> |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8286 * |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8287 * @param startOffset offset of the text change |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8288 * @param replacedLength length of text being replaced |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8289 * @param newLength length of new text |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8290 */ |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8291 void updateSelection(int startOffset, int replacedLength, int newLength) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8292 if (selection.y <= startOffset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8293 // selection ends before text change |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8294 return; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8295 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8296 if (selection.x < startOffset) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8297 // clear selection fragment before text change |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8298 internalRedrawRange(selection.x, startOffset - selection.x); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8299 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8300 if (selection.y > startOffset + replacedLength && selection.x < startOffset + replacedLength) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8301 // clear selection fragment after text change. |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8302 // do this only when the selection is actually affected by the |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8303 // change. Selection is only affected if it intersects the change (1GDY217). |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8304 int netNewLength = newLength - replacedLength; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8305 int redrawStart = startOffset + newLength; |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8306 internalRedrawRange(redrawStart, selection.y + netNewLength - redrawStart); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8307 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8308 if (selection.y > startOffset && selection.x < startOffset + replacedLength) { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8309 // selection intersects replaced text. set caret behind text change |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8310 setSelection(startOffset + newLength, 0, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8311 } else { |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8312 // move selection to keep same text selected |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8313 setSelection(selection.x + newLength - replacedLength, selection.y - selection.x, true); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8314 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8315 setCaretLocation(); |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8316 } |
12e3e0e477cd
package custom, module and imports ok
Frank Benoit <benoit@tionex.de>
parents:
diff
changeset
|
8317 } |