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)23StyledTextListener(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)32public 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