Mercurial > projects > dwt2
diff org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension.d @ 12:bc29606a740c
Added dwt-addons in original directory structure of eclipse.org
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sat, 14 Mar 2009 18:23:29 +0100 |
parents | |
children | 5feec68b4556 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension.d Sat Mar 14 18:23:29 2009 +0100 @@ -0,0 +1,236 @@ +/******************************************************************************* + * Copyright (c) 2000, 2006 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + * Port to the D programming language: + * Frank Benoit <benoit@tionex.de> + *******************************************************************************/ + + +module org.eclipse.jface.text.IDocumentExtension; + +import org.eclipse.jface.text.IDocumentPartitioningListener; // packageimport +import org.eclipse.jface.text.DefaultTextHover; // packageimport +import org.eclipse.jface.text.AbstractInformationControl; // packageimport +import org.eclipse.jface.text.TextUtilities; // packageimport +import org.eclipse.jface.text.IInformationControlCreatorExtension; // packageimport +import org.eclipse.jface.text.AbstractInformationControlManager; // packageimport +import org.eclipse.jface.text.ITextViewerExtension2; // packageimport +import org.eclipse.jface.text.IDocumentPartitioner; // packageimport +import org.eclipse.jface.text.DefaultIndentLineAutoEditStrategy; // packageimport +import org.eclipse.jface.text.ITextSelection; // packageimport +import org.eclipse.jface.text.Document; // packageimport +import org.eclipse.jface.text.FindReplaceDocumentAdapterContentProposalProvider; // packageimport +import org.eclipse.jface.text.ITextListener; // packageimport +import org.eclipse.jface.text.BadPartitioningException; // packageimport +import org.eclipse.jface.text.ITextViewerExtension5; // packageimport +import org.eclipse.jface.text.IDocumentPartitionerExtension3; // packageimport +import org.eclipse.jface.text.IUndoManager; // packageimport +import org.eclipse.jface.text.ITextHoverExtension2; // packageimport +import org.eclipse.jface.text.IRepairableDocument; // packageimport +import org.eclipse.jface.text.IRewriteTarget; // packageimport +import org.eclipse.jface.text.DefaultPositionUpdater; // packageimport +import org.eclipse.jface.text.RewriteSessionEditProcessor; // packageimport +import org.eclipse.jface.text.TextViewerHoverManager; // packageimport +import org.eclipse.jface.text.DocumentRewriteSession; // packageimport +import org.eclipse.jface.text.TextViewer; // packageimport +import org.eclipse.jface.text.ITextViewerExtension8; // packageimport +import org.eclipse.jface.text.RegExMessages; // packageimport +import org.eclipse.jface.text.IDelayedInputChangeProvider; // packageimport +import org.eclipse.jface.text.ITextOperationTargetExtension; // packageimport +import org.eclipse.jface.text.IWidgetTokenOwner; // packageimport +import org.eclipse.jface.text.IViewportListener; // packageimport +import org.eclipse.jface.text.GapTextStore; // packageimport +import org.eclipse.jface.text.MarkSelection; // packageimport +import org.eclipse.jface.text.IDocumentPartitioningListenerExtension; // packageimport +import org.eclipse.jface.text.IDocumentAdapterExtension; // packageimport +import org.eclipse.jface.text.IInformationControlExtension; // packageimport +import org.eclipse.jface.text.IDocumentPartitioningListenerExtension2; // packageimport +import org.eclipse.jface.text.DefaultDocumentAdapter; // packageimport +import org.eclipse.jface.text.ITextViewerExtension3; // packageimport +import org.eclipse.jface.text.IInformationControlCreator; // packageimport +import org.eclipse.jface.text.TypedRegion; // packageimport +import org.eclipse.jface.text.ISynchronizable; // packageimport +import org.eclipse.jface.text.IMarkRegionTarget; // packageimport +import org.eclipse.jface.text.TextViewerUndoManager; // packageimport +import org.eclipse.jface.text.IRegion; // packageimport +import org.eclipse.jface.text.IInformationControlExtension2; // packageimport +import org.eclipse.jface.text.IDocumentExtension4; // packageimport +import org.eclipse.jface.text.IDocumentExtension2; // packageimport +import org.eclipse.jface.text.IDocumentPartitionerExtension2; // packageimport +import org.eclipse.jface.text.Assert; // packageimport +import org.eclipse.jface.text.DefaultInformationControl; // packageimport +import org.eclipse.jface.text.IWidgetTokenOwnerExtension; // packageimport +import org.eclipse.jface.text.DocumentClone; // packageimport +import org.eclipse.jface.text.DefaultUndoManager; // packageimport +import org.eclipse.jface.text.IFindReplaceTarget; // packageimport +import org.eclipse.jface.text.IAutoEditStrategy; // packageimport +import org.eclipse.jface.text.ILineTrackerExtension; // packageimport +import org.eclipse.jface.text.IUndoManagerExtension; // packageimport +import org.eclipse.jface.text.TextSelection; // packageimport +import org.eclipse.jface.text.DefaultAutoIndentStrategy; // packageimport +import org.eclipse.jface.text.IAutoIndentStrategy; // packageimport +import org.eclipse.jface.text.IPainter; // packageimport +import org.eclipse.jface.text.IInformationControl; // packageimport +import org.eclipse.jface.text.IInformationControlExtension3; // packageimport +import org.eclipse.jface.text.ITextViewerExtension6; // packageimport +import org.eclipse.jface.text.IInformationControlExtension4; // packageimport +import org.eclipse.jface.text.DefaultLineTracker; // packageimport +import org.eclipse.jface.text.IDocumentInformationMappingExtension; // packageimport +import org.eclipse.jface.text.IRepairableDocumentExtension; // packageimport +import org.eclipse.jface.text.ITextHover; // packageimport +import org.eclipse.jface.text.FindReplaceDocumentAdapter; // packageimport +import org.eclipse.jface.text.ILineTracker; // packageimport +import org.eclipse.jface.text.Line; // packageimport +import org.eclipse.jface.text.ITextViewerExtension; // packageimport +import org.eclipse.jface.text.IDocumentAdapter; // packageimport +import org.eclipse.jface.text.TextEvent; // packageimport +import org.eclipse.jface.text.BadLocationException; // packageimport +import org.eclipse.jface.text.AbstractDocument; // packageimport +import org.eclipse.jface.text.AbstractLineTracker; // packageimport +import org.eclipse.jface.text.TreeLineTracker; // packageimport +import org.eclipse.jface.text.ITextPresentationListener; // packageimport +import org.eclipse.jface.text.Region; // packageimport +import org.eclipse.jface.text.ITextViewer; // packageimport +import org.eclipse.jface.text.IDocumentInformationMapping; // packageimport +import org.eclipse.jface.text.MarginPainter; // packageimport +import org.eclipse.jface.text.IPaintPositionManager; // packageimport +import org.eclipse.jface.text.TextPresentation; // packageimport +import org.eclipse.jface.text.ISlaveDocumentManagerExtension; // packageimport +import org.eclipse.jface.text.ISelectionValidator; // packageimport +import org.eclipse.jface.text.PropagatingFontFieldEditor; // packageimport +import org.eclipse.jface.text.ConfigurableLineTracker; // packageimport +import org.eclipse.jface.text.SlaveDocumentEvent; // packageimport +import org.eclipse.jface.text.IDocumentListener; // packageimport +import org.eclipse.jface.text.PaintManager; // packageimport +import org.eclipse.jface.text.IFindReplaceTargetExtension3; // packageimport +import org.eclipse.jface.text.ITextDoubleClickStrategy; // packageimport +import org.eclipse.jface.text.IDocumentExtension3; // packageimport +import org.eclipse.jface.text.Position; // packageimport +import org.eclipse.jface.text.TextMessages; // packageimport +import org.eclipse.jface.text.CopyOnWriteTextStore; // packageimport +import org.eclipse.jface.text.WhitespaceCharacterPainter; // packageimport +import org.eclipse.jface.text.IPositionUpdater; // packageimport +import org.eclipse.jface.text.DefaultTextDoubleClickStrategy; // packageimport +import org.eclipse.jface.text.ListLineTracker; // packageimport +import org.eclipse.jface.text.ITextInputListener; // packageimport +import org.eclipse.jface.text.BadPositionCategoryException; // packageimport +import org.eclipse.jface.text.IWidgetTokenKeeperExtension; // packageimport +import org.eclipse.jface.text.IInputChangedListener; // packageimport +import org.eclipse.jface.text.ITextOperationTarget; // packageimport +import org.eclipse.jface.text.IDocumentInformationMappingExtension2; // packageimport +import org.eclipse.jface.text.ITextViewerExtension7; // packageimport +import org.eclipse.jface.text.IInformationControlExtension5; // packageimport +import org.eclipse.jface.text.IDocumentRewriteSessionListener; // packageimport +import org.eclipse.jface.text.JFaceTextUtil; // packageimport +import org.eclipse.jface.text.AbstractReusableInformationControlCreator; // packageimport +import org.eclipse.jface.text.TabsToSpacesConverter; // packageimport +import org.eclipse.jface.text.CursorLinePainter; // packageimport +import org.eclipse.jface.text.ITextHoverExtension; // packageimport +import org.eclipse.jface.text.IEventConsumer; // packageimport +import org.eclipse.jface.text.IDocument; // packageimport +import org.eclipse.jface.text.IWidgetTokenKeeper; // packageimport +import org.eclipse.jface.text.DocumentCommand; // packageimport +import org.eclipse.jface.text.TypedPosition; // packageimport +import org.eclipse.jface.text.IEditingSupportRegistry; // packageimport +import org.eclipse.jface.text.IDocumentPartitionerExtension; // packageimport +import org.eclipse.jface.text.AbstractHoverInformationControlManager; // packageimport +import org.eclipse.jface.text.IEditingSupport; // packageimport +import org.eclipse.jface.text.IMarkSelection; // packageimport +import org.eclipse.jface.text.ISlaveDocumentManager; // packageimport +import org.eclipse.jface.text.DocumentEvent; // packageimport +import org.eclipse.jface.text.DocumentPartitioningChangedEvent; // packageimport +import org.eclipse.jface.text.ITextStore; // packageimport +import org.eclipse.jface.text.JFaceTextMessages; // packageimport +import org.eclipse.jface.text.DocumentRewriteSessionEvent; // packageimport +import org.eclipse.jface.text.SequentialRewriteTextStore; // packageimport +import org.eclipse.jface.text.DocumentRewriteSessionType; // packageimport +import org.eclipse.jface.text.TextAttribute; // packageimport +import org.eclipse.jface.text.ITextViewerExtension4; // packageimport +import org.eclipse.jface.text.ITypedRegion; // packageimport + +import java.lang.all; +import java.util.Set; + +/** + * Extension interface for {@link org.eclipse.jface.text.IDocument}.<p> + * + * It introduces the notion of sequentially rewriting a document. This is to tell a + * document that a sequence of non-overlapping replace operation is about to be + * performed. Implementers can use this knowledge for internal optimization.<p> + * + * Is also introduces the concept of post notification replaces. This is, a document + * listener who is informed about a document change can cause a derived document + * change. As the listener is not allowed to directly modify the document, it can + * register a replace operation that is performed directly after all document listeners + * have been notified. + * + * @since 2.0 + */ +public interface IDocumentExtension { + + /** + * Interface for a post notification replace operation. + */ + public interface IReplace { + + /** + * Executes the replace operation on the given document. + * + * @param document the document to be changed + * @param owner the owner of this replace operation + */ + void perform(IDocument document, IDocumentListener owner); + } + + /** + * Callback for document listeners to be used inside <code>documentChanged</code> + * to register a post notification replace operation on the document notifying them. + * + * @param owner the owner of the replace operation + * @param replace the replace operation to be executed + * @exception UnsupportedOperationException if <code>registerPostNotificationReplace</code> + * is not supported by this document + */ + void registerPostNotificationReplace(IDocumentListener owner, IReplace replace) ; + + /** + * Stops the processing of registered post notification replace operations until + * <code>resumePostNotificationProcessing</code> is called. + */ + void stopPostNotificationProcessing(); + + /** + * Resumes the processing of post notification replace operations. If the queue of registered + * <code>IDocumentExtension.IReplace</code> objects is not empty, they are immediately processed if the + * document is not inside a replace operation. If the document is inside a replace operation, + * they are processed directly after the replace operation has finished. + */ + void resumePostNotificationProcessing(); + + /** + * Tells the document that it is about to be sequentially rewritten. That is a + * sequence of non-overlapping replace operations will be performed on it. The + * <code>normalize</code> flag indicates whether the rewrite is performed from + * the start of the document to its end or from an arbitrary start offset. <p> + * + * The document is considered being in sequential rewrite mode as long as + * <code>stopSequentialRewrite</code> has not been called. + * + * @param normalize <code>true</code> if performed from the start to the end of the document + * @deprecated since 3.1. Use {@link IDocumentExtension4#startRewriteSession(DocumentRewriteSessionType)} instead. + */ + void startSequentialRewrite(bool normalize); + + /** + * Tells the document that the sequential rewrite has been finished. This method + * has only any effect if <code>startSequentialRewrite</code> has been called before. + * @deprecated since 3.1. Use {@link IDocumentExtension4#stopRewriteSession(DocumentRewriteSession)} instead. + */ + void stopSequentialRewrite(); +}