下面列出了怎么用org.eclipse.jface.text.TextEvent的API类实例代码及写法,或者点击链接到github查看源代码。
/**
* Informs all registered text listeners about the change specified by the
* widget command. This method does not use a robust iterator.
*
* @param cmd
* the widget command translated into a text event sent to all text listeners
*/
@Override
protected void updateTextListeners(final WidgetCommand cmd) {
List<ITextListener> textListeners = fTextListeners;
if (textListeners != null) {
textListeners = new ArrayList<ITextListener>(textListeners);
DocumentEvent event = cmd.event;
if (event instanceof SlaveDocumentEvent) {
event = ((SlaveDocumentEvent) event).getMasterEvent();
}
TextEvent e = new TextEvent(cmd.start, cmd.length, cmd.text, cmd.preservedText, event, redraws()) {};
for (int i = 0; i < textListeners.size(); i++) {
ITextListener l = textListeners.get(i);
l.textChanged(e);
}
}
}
public void textChanged(TextEvent event) {
fCachedRedrawState= event.getViewerRedrawState();
if (!fCachedRedrawState)
return;
if (updateNumberOfDigits()) {
computeIndentations();
layout(event.getViewerRedrawState());
return;
}
boolean viewerCompletelyShown= isViewerEntirelyShown();
if (viewerCompletelyShown || fSensitiveToTextChanges || event.getDocumentEvent() == null)
doPostRedraw();
fSensitiveToTextChanges= viewerCompletelyShown;
}
/**
* Computes the change abstraction given a text event.
*
* @param event the text event to analyze
* @return a change object describing the event
*/
private Change computeChange(TextEvent event) {
DocumentEvent e= event.getDocumentEvent();
if (e == null)
return new Change(TypingRun.NO_CHANGE, -1);
int start= e.getOffset();
int end= e.getOffset() + e.getLength();
String newText= e.getText();
if (newText == null)
newText= new String();
if (start == end) {
// no replace / delete / overwrite
if (newText.length() == 1)
return new Change(TypingRun.INSERT, end + 1);
} else if (start == end - 1) {
if (newText.length() == 1)
return new Change(TypingRun.OVERTYPE, end);
if (newText.length() == 0)
return new Change(TypingRun.DELETE, start);
}
return new Change(TypingRun.UNKNOWN, -1);
}
private void configureSourceViewer(SourceViewer viewer) {
viewer.setEditable(false);
viewer.addTextListener(new ITextListener() {
@Override
public void textChanged(TextEvent event) {
updateHighlighting();
sourceViewer.getTextWidget().setFont(editorFont);
}
});
}
/**
* Translates the given text event into the corresponding range of the viewer's
* document.
*
* @param e
* the text event
* @return the widget region corresponding the region of the given event or
* <code>null</code> if none
* @since 2.1
*/
private IRegion widgetRegion2ModelRegion(TextEvent e) {
String text = e.getText();
int length = text == null ? 0 : text.length();
if (viewer instanceof ITextViewerExtension5) {
ITextViewerExtension5 extension = (ITextViewerExtension5) viewer;
return extension.widgetRange2ModelRange(new Region(e.getOffset(), length));
}
IRegion visible = viewer.getVisibleRegion();
return new Region(e.getOffset() + visible.getOffset(), length);
}
@Override
public void textChanged(TextEvent event) {
if (event.getDocumentEvent() != null) {
return;
}
String command = "viewer.invalidateTextPresentation(" + event.getOffset() + ", " + event.getLength() + ");";
write("\t\t" + command, true);
//commands.add(new Command(command));
}
public void textChanged(TextEvent event) {
fCachedRedrawState= event.getViewerRedrawState();
if (!fCachedRedrawState)
return;
postRedraw();
}
@Override
public void textChanged(TextEvent event) {
if (!event.getViewerRedrawState())
return;
updatePopupLocation(false);
updateVisibility(); //only for hiding outside editor area
}
@Override
public void textChanged(TextEvent e) {
if (fTextViewer != null && e.getDocumentEvent() == null && e.getViewerRedrawState()) {
// handle only changes of visible document
redraw();
}
}
@Override
public void textChanged(TextEvent event) {
String text = event.getText();
String replaced = event.getReplacedText();
if ((text != null && text.indexOf('\n') != -1)
|| (replaced != null && replaced.indexOf('\n') != -1)) {
generateViewport();
}
}
protected void createTextViewer() {
viewer = createViewer(mc);
viewer.getControl().setLayoutData(GridDataFactory.fillDefaults().grab(true, true).create());
configureTextViewer();
addLineStyleListener();
helpDecoration = new ControlDecoration(viewer.getControl(), SWT.TOP | SWT.RIGHT, this);
helpDecoration.setImage(JFaceResources.getImage(Dialog.DLG_IMG_HELP));
helpDecoration.setDescriptionText(Messages.patternViewerHint);
helpDecoration.setMarginWidth(2);
helpDecoration.hide();
hintDecoration = new ControlDecoration(viewer.getControl(), SWT.TOP | SWT.LEFT, this);
hintDecoration.setImage(Pics.getImage(PicsConstants.hint));
hintDecoration.setMarginWidth(2);
hintDecoration.setShowHover(true);
hintDecoration.setShowOnlyOnFocus(true);
hintDecoration.hide();
viewer.addTextListener(new ITextListener() {
@Override
public void textChanged(final TextEvent event) {
viewer.getTextWidget().notifyListeners(SWT.Modify, new Event());
}
});
helpDecoration.show();
}
@Override
public void textChanged(TextEvent event) {
if (!m_bIgnoreTextEvent) {
editor.sourceChanged = true;
editor.setFileDirty();
}
}
@Override
public void textChanged(TextEvent e) {
if (!e.getViewerRedrawState()) {
return;
}
// changed text: propagate previous style, which will be overridden
// later asynchronously by TM
if (e.getDocumentEvent() != null) {
int diff = e.getText().length() - e.getLength();
if (diff == 0 || e.getOffset() <= 0) {
return;
}
StyleRange range = viewer.getTextWidget().getStyleRangeAtOffset(e.getOffset() - 1);
if (range == null) {
return;
}
range.length = Math.max(0, range.length + diff);
viewer.getTextWidget().setStyleRange(range);
return;
}
// TextViewer#invalidateTextPresentation is called (because
// of validation, folding, etc)
// case 2), do the colorization.
IDocument document = viewer.getDocument();
if (document == null) {
return;
}
IRegion region = computeRegionToRedraw(e, document);
if (enabled) {
// case where there is grammar & theme -> update text presentation with the
// grammar tokens
ITMModel model = getTMModelManager().connect(document);
if (model == null) {
return;
}
try {
TMPresentationReconciler.this.colorize(region, (TMDocumentModel) model);
} catch (BadLocationException e1) {
TMUIPlugin.getDefault().getLog().log(new Status(IStatus.ERROR, TMUIPlugin.PLUGIN_ID, e1.getMessage(), e1));
}
} else {
// case where there is no grammar & theme -> update text presentation with the
// default styles (ex: to support highlighting with GenericEditor)
TextPresentation presentation = new TextPresentation(region, 100);
presentation.setDefaultStyleRange(
new StyleRange(region.getOffset(), region.getLength(), null, null));
applyTextRegionCollection(presentation);
}
}
public void textChanged(TextEvent e){
}
public void textChanged(TextEvent event)
{
perform();
}
public void textChanged(TextEvent event) {
if (!event.getViewerRedrawState())
return;
updatePopupLocation(false);
updateVisibility(); //only for hiding outside editor area
}
public void textChanged(TextEvent event) {
handleTextChanged(event);
}
public void createPartControl( Composite parent )
{
reportXMLEditor.createPartControl( parent );
Control[] children = parent.getChildren( );
control = children[children.length - 1];
ModuleHandle model = getModel( );
// suport the mediator
SessionHandleAdapter.getInstance( )
.getMediator( model )
.addColleague( this );
// Add Command Stack Listener
if ( model != null && model.getCommandStack( ) != null )
{
getCommandStack( model ).addCommandStackListener( getCommandStackListener( ) );
hookModelEventManager( model );
}
reportXMLEditor.getTextViewer( ).addTextListener( new ITextListener( ) {
public void textChanged( TextEvent event )
{
if ( !isTextModified( ) && event.getOffset( ) != 0 )
{
markDirty( );
}
}
} );
reportXMLEditor.getTextViewer( )
.getTextWidget( )
.addModifyListener( new ModifyListener( ) {
public void modifyText( ModifyEvent e )
{
markDirty( );
}
} );
}
public void textChanged(TextEvent event) {
if (event.getDocumentEvent() != null)
leave(true);
}
public void textChanged(TextEvent event) {
// During execution of sub-command, text can change
if (!isExecuting()) {
super.textChanged(event);
}
}
public void textChanged(TextEvent event) {
if (event.getDocumentEvent() != null) {
// leave();
}
}
@Override
public void textChanged(TextEvent event) {
if (event.getDocumentEvent() != null)
leave();
}
/**
* Handles an incoming text event.
*
* @param event the text event that describes the text modification
*/
void handleTextChanged(TextEvent event) {
Change type= computeChange(event);
handleChange(type);
}