Mercurial > projects > dwt-samples
annotate snippets/styledtext/Snippet244.d @ 155:04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
author | yidabu <yidabu@gmail.com> |
---|---|
date | Fri, 22 Aug 2008 07:27:56 +0800 |
parents | |
children |
rev | line source |
---|---|
155
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
1 /******************************************************************************* |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
2 * Copyright (c) 2000, 2004 IBM Corporation and others. |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
3 * All rights reserved. This program and the accompanying materials |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
4 * are made available under the terms of the Eclipse Public License v1.0 |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
5 * which accompanies this distribution, and is available at |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
6 * http://www.eclipse.org/legal/epl-v10.html |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
7 * |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
8 * Contributors: |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
9 * IBM Corporation - initial API and implementation |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
10 * Port to the D programming language: |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
11 * yidabu at gmail dot com ( D China http://www.d-programming-language-china.org/ ) |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
12 *******************************************************************************/ |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
13 |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
14 module styledtext.Snippet244; |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
15 /* |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
16 * StyledText snippet: Draw a box around text. |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
17 * |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
18 * For a list of all SWT example snippets see |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
19 * http://www.eclipse.org/swt/snippets/ |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
20 */ |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
21 |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
22 import dwt.DWT; |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
23 import dwt.custom.StyledText; |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
24 import dwt.custom.StyleRange; |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
25 import dwt.layout.FillLayout; |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
26 import dwt.widgets.Display; |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
27 import dwt.widgets.Shell; |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
28 import dwt.widgets.Listener; |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
29 import dwt.widgets.Event; |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
30 import dwt.graphics.Color; |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
31 import dwt.graphics.Point; |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
32 |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
33 import dwt.dwthelper.utils; |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
34 version(JIVE){ |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
35 import jive.stacktrace; |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
36 } |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
37 |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
38 void main() { |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
39 static String SEARCH_STRING = "box"; |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
40 Display display = new Display(); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
41 Color RED = display.getSystemColor(DWT.COLOR_RED); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
42 Shell shell = new Shell(display); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
43 shell.setBounds(10,10,250,250); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
44 StyledText text = new StyledText(shell, DWT.NONE); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
45 text.setBounds(10,10,200,200); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
46 |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
47 void onPaint(Event event) { |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
48 String contents = text.getText(); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
49 int stringWidth = event.gc.stringExtent(SEARCH_STRING).x; |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
50 int lineHeight = text.getLineHeight(); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
51 event.gc.setForeground(RED); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
52 int index = contents.indexOf(SEARCH_STRING); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
53 while (index != -1) { |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
54 Point topLeft = text.getLocationAtOffset(index); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
55 event.gc.drawRectangle(topLeft.x - 1, topLeft.y, stringWidth + 1, lineHeight - 1); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
56 index = contents.indexOf(SEARCH_STRING, index + 1); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
57 } |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
58 } |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
59 |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
60 text.addListener(DWT.Paint, dgListener(&onPaint)); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
61 |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
62 text.setText("This demonstrates drawing a box\naround every occurrence of the word\nbox in the StyledText"); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
63 shell.open(); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
64 while (!shell.isDisposed()) { |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
65 if (!display.readAndDispatch()) display.sleep(); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
66 } |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
67 display.dispose(); |
04d05db6dca4
styledtext: Snippet211, Snippet213, Snippet217, Snippet218, Snippet222, Snippet244
yidabu <yidabu@gmail.com>
parents:
diff
changeset
|
68 } |