1 /*******************************************************************************
2  * Copyright (c) 2000, 2011 IBM Corporation and others.
3  *
4  * This program and the accompanying materials
5  * are made available under the terms of the Eclipse Public License 2.0
6  * which accompanies this distribution, and is available at
7  * https://www.eclipse.org/legal/epl-2.0/
8  *
9  * SPDX-License-Identifier: EPL-2.0
10  *
11  * Contributors:
12  *     IBM Corporation - initial API and implementation
13  *******************************************************************************/
14 package org.eclipse.swt.custom;
15 
16 import org.eclipse.swt.events.*;
17 import org.eclipse.swt.internal.*;
18 import org.eclipse.swt.widgets.*;
19 
20 class StyledTextListener extends TypedListener {
21 /**
22  */
StyledTextListener(SWTEventListener listener)23 StyledTextListener(SWTEventListener listener) {
24 	super(listener);
25 }
26 /**
27  * Process StyledText events by invoking the event's handler.
28  *
29  * @param e the event to handle
30  */
31 @Override
handleEvent(Event e)32 public void handleEvent(Event e) {
33 
34 	switch (e.type) {
35 		case ST.ExtendedModify:
36 			ExtendedModifyEvent extendedModifyEvent = new ExtendedModifyEvent((StyledTextEvent) e);
37 			((ExtendedModifyListener) eventListener).modifyText(extendedModifyEvent);
38 			break;
39 		case ST.LineGetBackground:
40 			LineBackgroundEvent lineBgEvent = new LineBackgroundEvent((StyledTextEvent) e);
41 			((LineBackgroundListener) eventListener).lineGetBackground(lineBgEvent);
42 			((StyledTextEvent) e).lineBackground = lineBgEvent.lineBackground;
43 			break;
44 		case ST.LineGetSegments:
45 			BidiSegmentEvent segmentEvent = new BidiSegmentEvent((StyledTextEvent) e);
46 			((BidiSegmentListener) eventListener).lineGetSegments(segmentEvent);
47 			((StyledTextEvent) e).segments = segmentEvent.segments;
48 			((StyledTextEvent) e).segmentsChars = segmentEvent.segmentsChars;
49 			break;
50 		case ST.LineGetStyle:
51 			LineStyleEvent lineStyleEvent = new LineStyleEvent((StyledTextEvent) e);
52 			((LineStyleListener) eventListener).lineGetStyle(lineStyleEvent);
53 			((StyledTextEvent) e).ranges = lineStyleEvent.ranges;
54 			((StyledTextEvent) e).styles = lineStyleEvent.styles;
55 			((StyledTextEvent) e).alignment = lineStyleEvent.alignment;
56 			((StyledTextEvent) e).indent = lineStyleEvent.indent;
57 			((StyledTextEvent) e).verticalIndent = lineStyleEvent.verticalIndent;
58 			((StyledTextEvent) e).wrapIndent = lineStyleEvent.wrapIndent;
59 			((StyledTextEvent) e).justify = lineStyleEvent.justify;
60 			((StyledTextEvent) e).bullet = lineStyleEvent.bullet;
61 			((StyledTextEvent) e).bulletIndex = lineStyleEvent.bulletIndex;
62 			((StyledTextEvent) e).tabStops = lineStyleEvent.tabStops;
63 			break;
64 		case ST.PaintObject:
65 			PaintObjectEvent paintObjectEvent = new PaintObjectEvent((StyledTextEvent) e);
66 			((PaintObjectListener) eventListener).paintObject(paintObjectEvent);
67 			break;
68 		case ST.VerifyKey:
69 			VerifyEvent verifyEvent = new VerifyEvent(e);
70 			((VerifyKeyListener) eventListener).verifyKey(verifyEvent);
71 			e.doit = verifyEvent.doit;
72 			break;
73 		case ST.TextChanged: {
74 			TextChangedEvent textChangedEvent = new TextChangedEvent((StyledTextContent) e.data);
75 			((TextChangeListener) eventListener).textChanged(textChangedEvent);
76 			break;
77 		}
78 		case ST.TextChanging:
79 			TextChangingEvent textChangingEvent = new TextChangingEvent((StyledTextContent) e.data, (StyledTextEvent) e);
80 			((TextChangeListener) eventListener).textChanging(textChangingEvent);
81 			break;
82 		case ST.TextSet: {
83 			TextChangedEvent textChangedEvent = new TextChangedEvent((StyledTextContent) e.data);
84 			((TextChangeListener) eventListener).textSet(textChangedEvent);
85 			break;
86 		}
87 		case ST.WordNext: {
88 			MovementEvent wordBoundaryEvent = new MovementEvent((StyledTextEvent) e);
89 			((MovementListener) eventListener).getNextOffset(wordBoundaryEvent);
90 			((StyledTextEvent) e).end = wordBoundaryEvent.newOffset;
91 			break;
92 		}
93 		case ST.WordPrevious: {
94 			MovementEvent wordBoundaryEvent = new MovementEvent((StyledTextEvent) e);
95 			((MovementListener) eventListener).getPreviousOffset(wordBoundaryEvent);
96 			((StyledTextEvent) e).end = wordBoundaryEvent.newOffset;
97 			break;
98 		}
99 		case ST.CaretMoved: {
100 			CaretEvent caretEvent = new CaretEvent((StyledTextEvent) e);
101 			((CaretListener) eventListener).caretMoved(caretEvent);
102 			((StyledTextEvent) e).end = caretEvent.caretOffset;
103 			break;
104 		}
105 	}
106 }
107 }
108 
109 
110