Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorcvs2svn2004-09-07 08:58:49 +0000
committercvs2svn2004-09-07 08:58:49 +0000
commit7c16254a32d3e5ef62c9d7835f9cd0301e7d3b09 (patch)
tree10a63a8e0c9b6a168a72547dc065c2535b714172 /org.eclipse.text
parentd6e189e884be8b74de32491a4638780c2b44e73f (diff)
downloadeclipse.platform.text-7c16254a32d3e5ef62c9d7835f9cd0301e7d3b09.tar.gz
eclipse.platform.text-7c16254a32d3e5ef62c9d7835f9cd0301e7d3b09.tar.xz
eclipse.platform.text-7c16254a32d3e5ef62c9d7835f9cd0301e7d3b09.zip
This commit was manufactured by cvs2svn to create branch 'perf_30'.
Sprout from master 2004-06-23 19:42:46 UTC Dani Megert <dmegert> 'Copyright fix - automated changes with releng tool' Cherrypick from master 2004-09-07 08:58:47 UTC Dani Megert <dmegert> 'Settting org.eclipse.jdt.core.compiler.problem.specialParameterHidingField to "disabled"': org.eclipse.core.filebuffers.tests/.settings/org.eclipse.jdt.core.prefs org.eclipse.text.tests/src/org/eclipse/text/tests/Accessor.java org.eclipse.ui.editors.tests/.settings/org.eclipse.jdt.core.prefs org.eclipse.ui.editors.tests/test.xml org.eclipse.ui.workbench.texteditor.tests/.settings/org.eclipse.jdt.core.prefs org.eclipse.ui.workbench.texteditor.tests/test.xml Cherrypick from master 2004-04-14 15:46:14 UTC Dani Megert <dmegert> 'Initial Release - work in progress': org.eclipse.ui.editors.tests/.classpath org.eclipse.ui.editors.tests/build.properties org.eclipse.ui.workbench.texteditor.tests/.classpath org.eclipse.ui.workbench.texteditor.tests/build.properties Delete: org.eclipse.core.filebuffers/.classpath org.eclipse.core.filebuffers/.cvsignore org.eclipse.core.filebuffers/.project org.eclipse.core.filebuffers/about.html org.eclipse.core.filebuffers/build.properties org.eclipse.core.filebuffers/hglegal2003.htm org.eclipse.core.filebuffers/ngibmcpy2003.gif org.eclipse.core.filebuffers/plugin.properties org.eclipse.core.filebuffers/plugin.xml org.eclipse.core.filebuffers/schema/annotationModelCreation.exsd org.eclipse.core.filebuffers/schema/documentCreation.exsd org.eclipse.core.filebuffers/schema/documentSetup.exsd org.eclipse.core.filebuffers/scripts/exportplugin.xml org.eclipse.core.filebuffers/src/org/eclipse/core/filebuffers/FileBuffers.java org.eclipse.core.filebuffers/src/org/eclipse/core/filebuffers/IAnnotationModelFactory.java org.eclipse.core.filebuffers/src/org/eclipse/core/filebuffers/IDocumentFactory.java org.eclipse.core.filebuffers/src/org/eclipse/core/filebuffers/IDocumentSetupParticipant.java org.eclipse.core.filebuffers/src/org/eclipse/core/filebuffers/IFileBuffer.java org.eclipse.core.filebuffers/src/org/eclipse/core/filebuffers/IFileBufferListener.java org.eclipse.core.filebuffers/src/org/eclipse/core/filebuffers/IFileBufferManager.java org.eclipse.core.filebuffers/src/org/eclipse/core/filebuffers/IPersistableAnnotationModel.java org.eclipse.core.filebuffers/src/org/eclipse/core/filebuffers/ISynchronizationContext.java org.eclipse.core.filebuffers/src/org/eclipse/core/filebuffers/ITextFileBuffer.java org.eclipse.core.filebuffers/src/org/eclipse/core/filebuffers/ITextFileBufferManager.java org.eclipse.core.filebuffers/src/org/eclipse/core/filebuffers/package.html org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/AbstractFileBuffer.java org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/ContainerGenerator.java org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/DefaultDocumentFactory.java org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/ExtensionsRegistry.java org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/FileBuffersMessages.java org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/FileBuffersMessages.properties org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/FileBuffersPlugin.java org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/JavaFileBuffer.java org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/JavaTextFileBuffer.java org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/ResourceFileBuffer.java org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/ResourceTextFileBuffer.java org.eclipse.core.filebuffers/src/org/eclipse/core/internal/filebuffers/TextFileBufferManager.java org.eclipse.jface.text/.classpath org.eclipse.jface.text/.cvsignore org.eclipse.jface.text/.options org.eclipse.jface.text/.project org.eclipse.jface.text/about.html org.eclipse.jface.text/build.properties org.eclipse.jface.text/plugin.properties org.eclipse.jface.text/plugin.xml org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/AnnotationBag.java org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/IProjectionListener.java org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/ProjectionAnnotation.java org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/ProjectionAnnotationHover.java org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/ProjectionAnnotationModel.java org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/ProjectionRulerColumn.java org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/ProjectionSummary.java org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/ProjectionSupport.java org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/ProjectionViewer.java org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/SourceViewerInformationControl.java org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/images/collapsed.gif org.eclipse.jface.text/projection/org/eclipse/jface/text/source/projection/images/expanded.gif org.eclipse.jface.text/scripts/exportplugin.xml org.eclipse.jface.text/src/org/eclipse/jface/contentassist/AbstractControlContentAssistSubjectAdapter.java org.eclipse.jface.text/src/org/eclipse/jface/contentassist/ComboContentAssistSubjectAdapter.java org.eclipse.jface.text/src/org/eclipse/jface/contentassist/IContentAssistSubjectControl.java org.eclipse.jface.text/src/org/eclipse/jface/contentassist/ISubjectControlContentAssistProcessor.java org.eclipse.jface.text/src/org/eclipse/jface/contentassist/ISubjectControlContentAssistant.java org.eclipse.jface.text/src/org/eclipse/jface/contentassist/ISubjectControlContextInformationPresenter.java org.eclipse.jface.text/src/org/eclipse/jface/contentassist/ISubjectControlContextInformationValidator.java org.eclipse.jface.text/src/org/eclipse/jface/contentassist/SubjectControlContentAssistant.java org.eclipse.jface.text/src/org/eclipse/jface/contentassist/SubjectControlContextInformationValidator.java org.eclipse.jface.text/src/org/eclipse/jface/contentassist/TextContentAssistSubjectAdapter.java org.eclipse.jface.text/src/org/eclipse/jface/contentassist/images/content_assist_cue.gif org.eclipse.jface.text/src/org/eclipse/jface/contentassist/package.html org.eclipse.jface.text/src/org/eclipse/jface/internal/text/link/contentassist/AdditionalInfoController2.java org.eclipse.jface.text/src/org/eclipse/jface/internal/text/link/contentassist/CompletionProposalPopup2.java org.eclipse.jface.text/src/org/eclipse/jface/internal/text/link/contentassist/ContentAssistMessages.java org.eclipse.jface.text/src/org/eclipse/jface/internal/text/link/contentassist/ContentAssistMessages.properties org.eclipse.jface.text/src/org/eclipse/jface/internal/text/link/contentassist/ContentAssistant2.java org.eclipse.jface.text/src/org/eclipse/jface/internal/text/link/contentassist/ContextInformationPopup2.java org.eclipse.jface.text/src/org/eclipse/jface/internal/text/link/contentassist/HTML2TextReader.java org.eclipse.jface.text/src/org/eclipse/jface/internal/text/link/contentassist/HTMLTextPresenter.java org.eclipse.jface.text/src/org/eclipse/jface/internal/text/link/contentassist/Helper2.java org.eclipse.jface.text/src/org/eclipse/jface/internal/text/link/contentassist/IContentAssistListener2.java org.eclipse.jface.text/src/org/eclipse/jface/internal/text/link/contentassist/IProposalListener.java org.eclipse.jface.text/src/org/eclipse/jface/internal/text/link/contentassist/LineBreakingReader.java org.eclipse.jface.text/src/org/eclipse/jface/internal/text/link/contentassist/PopupCloser2.java org.eclipse.jface.text/src/org/eclipse/jface/internal/text/link/contentassist/SingleCharReader.java org.eclipse.jface.text/src/org/eclipse/jface/internal/text/link/contentassist/SubstitutionTextReader.java org.eclipse.jface.text/src/org/eclipse/jface/internal/text/link/contentassist/package.html org.eclipse.jface.text/src/org/eclipse/jface/text/AbstractHoverInformationControlManager.java org.eclipse.jface.text/src/org/eclipse/jface/text/AbstractInformationControlManager.java org.eclipse.jface.text/src/org/eclipse/jface/text/CursorLinePainter.java org.eclipse.jface.text/src/org/eclipse/jface/text/DefaultAutoIndentStrategy.java org.eclipse.jface.text/src/org/eclipse/jface/text/DefaultDocumentAdapter.java org.eclipse.jface.text/src/org/eclipse/jface/text/DefaultInformationControl.java org.eclipse.jface.text/src/org/eclipse/jface/text/DefaultTextDoubleClickStrategy.java org.eclipse.jface.text/src/org/eclipse/jface/text/DefaultUndoManager.java org.eclipse.jface.text/src/org/eclipse/jface/text/DocumentClone.java org.eclipse.jface.text/src/org/eclipse/jface/text/DocumentCommand.java org.eclipse.jface.text/src/org/eclipse/jface/text/IAutoEditStrategy.java org.eclipse.jface.text/src/org/eclipse/jface/text/IAutoIndentStrategy.java org.eclipse.jface.text/src/org/eclipse/jface/text/IDocumentAdapter.java org.eclipse.jface.text/src/org/eclipse/jface/text/IDocumentAdapterExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/IEventConsumer.java org.eclipse.jface.text/src/org/eclipse/jface/text/IFindReplaceTarget.java org.eclipse.jface.text/src/org/eclipse/jface/text/IFindReplaceTargetExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/IFindReplaceTargetExtension3.java org.eclipse.jface.text/src/org/eclipse/jface/text/IInformationControl.java org.eclipse.jface.text/src/org/eclipse/jface/text/IInformationControlCreator.java org.eclipse.jface.text/src/org/eclipse/jface/text/IInformationControlCreatorExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/IInformationControlExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/IInformationControlExtension2.java org.eclipse.jface.text/src/org/eclipse/jface/text/IInformationControlExtension3.java org.eclipse.jface.text/src/org/eclipse/jface/text/IMarkRegionTarget.java org.eclipse.jface.text/src/org/eclipse/jface/text/IMarkSelection.java org.eclipse.jface.text/src/org/eclipse/jface/text/IPaintPositionManager.java org.eclipse.jface.text/src/org/eclipse/jface/text/IPainter.java org.eclipse.jface.text/src/org/eclipse/jface/text/IRewriteTarget.java org.eclipse.jface.text/src/org/eclipse/jface/text/ISelectionValidator.java org.eclipse.jface.text/src/org/eclipse/jface/text/ITextDoubleClickStrategy.java org.eclipse.jface.text/src/org/eclipse/jface/text/ITextHover.java org.eclipse.jface.text/src/org/eclipse/jface/text/ITextHoverExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/ITextInputListener.java org.eclipse.jface.text/src/org/eclipse/jface/text/ITextListener.java org.eclipse.jface.text/src/org/eclipse/jface/text/ITextOperationTarget.java org.eclipse.jface.text/src/org/eclipse/jface/text/ITextOperationTargetExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/ITextPresentationListener.java org.eclipse.jface.text/src/org/eclipse/jface/text/ITextSelection.java org.eclipse.jface.text/src/org/eclipse/jface/text/ITextViewer.java org.eclipse.jface.text/src/org/eclipse/jface/text/ITextViewerExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/ITextViewerExtension2.java org.eclipse.jface.text/src/org/eclipse/jface/text/ITextViewerExtension3.java org.eclipse.jface.text/src/org/eclipse/jface/text/ITextViewerExtension4.java org.eclipse.jface.text/src/org/eclipse/jface/text/ITextViewerExtension5.java org.eclipse.jface.text/src/org/eclipse/jface/text/IUndoManager.java org.eclipse.jface.text/src/org/eclipse/jface/text/IViewportListener.java org.eclipse.jface.text/src/org/eclipse/jface/text/IWidgetTokenKeeper.java org.eclipse.jface.text/src/org/eclipse/jface/text/IWidgetTokenKeeperExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/IWidgetTokenOwner.java org.eclipse.jface.text/src/org/eclipse/jface/text/IWidgetTokenOwnerExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/JFaceTextMessages.java org.eclipse.jface.text/src/org/eclipse/jface/text/JFaceTextMessages.properties org.eclipse.jface.text/src/org/eclipse/jface/text/MarginPainter.java org.eclipse.jface.text/src/org/eclipse/jface/text/MarkSelection.java org.eclipse.jface.text/src/org/eclipse/jface/text/PaintManager.java org.eclipse.jface.text/src/org/eclipse/jface/text/PropagatingFontFieldEditor.java org.eclipse.jface.text/src/org/eclipse/jface/text/TextAttribute.java org.eclipse.jface.text/src/org/eclipse/jface/text/TextEvent.java org.eclipse.jface.text/src/org/eclipse/jface/text/TextPresentation.java org.eclipse.jface.text/src/org/eclipse/jface/text/TextSelection.java org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewer.java org.eclipse.jface.text/src/org/eclipse/jface/text/TextViewerHoverManager.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/AdditionalInfoController.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/CompletionProposal.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/CompletionProposalPopup.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/ContentAssistSubjectControlAdapter.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/ContentAssistant.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/ContextInformation.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/ContextInformationPopup.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/ContextInformationValidator.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/Helper.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/ICompletionProposal.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/ICompletionProposalExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/ICompletionProposalExtension2.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/ICompletionProposalExtension3.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/IContentAssistListener.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/IContentAssistProcessor.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/IContentAssistant.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/IContentAssistantExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/IContextInformation.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/IContextInformationExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/IContextInformationPresenter.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/IContextInformationValidator.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/JFaceTextMessages.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/PopupCloser.java org.eclipse.jface.text/src/org/eclipse/jface/text/contentassist/package.html org.eclipse.jface.text/src/org/eclipse/jface/text/formatter/ContentFormatter.java org.eclipse.jface.text/src/org/eclipse/jface/text/formatter/ContextBasedFormattingStrategy.java org.eclipse.jface.text/src/org/eclipse/jface/text/formatter/FormattingContext.java org.eclipse.jface.text/src/org/eclipse/jface/text/formatter/FormattingContextProperties.java org.eclipse.jface.text/src/org/eclipse/jface/text/formatter/IContentFormatter.java org.eclipse.jface.text/src/org/eclipse/jface/text/formatter/IContentFormatterExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/formatter/IFormattingContext.java org.eclipse.jface.text/src/org/eclipse/jface/text/formatter/IFormattingStrategy.java org.eclipse.jface.text/src/org/eclipse/jface/text/formatter/IFormattingStrategyExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/formatter/MultiPassContentFormatter.java org.eclipse.jface.text/src/org/eclipse/jface/text/formatter/package.html org.eclipse.jface.text/src/org/eclipse/jface/text/information/IInformationPresenter.java org.eclipse.jface.text/src/org/eclipse/jface/text/information/IInformationPresenterExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/information/IInformationProvider.java org.eclipse.jface.text/src/org/eclipse/jface/text/information/IInformationProviderExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/information/IInformationProviderExtension2.java org.eclipse.jface.text/src/org/eclipse/jface/text/information/InformationPresenter.java org.eclipse.jface.text/src/org/eclipse/jface/text/information/package.html org.eclipse.jface.text/src/org/eclipse/jface/text/link/LinkedModeUI.java org.eclipse.jface.text/src/org/eclipse/jface/text/link/LinkedPositionAnnotations.java org.eclipse.jface.text/src/org/eclipse/jface/text/link/ProposalPosition.java org.eclipse.jface.text/src/org/eclipse/jface/text/link/TabStopIterator.java org.eclipse.jface.text/src/org/eclipse/jface/text/link/package.html org.eclipse.jface.text/src/org/eclipse/jface/text/package.html org.eclipse.jface.text/src/org/eclipse/jface/text/presentation/IPresentationDamager.java org.eclipse.jface.text/src/org/eclipse/jface/text/presentation/IPresentationReconciler.java org.eclipse.jface.text/src/org/eclipse/jface/text/presentation/IPresentationReconcilerExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/presentation/IPresentationRepairer.java org.eclipse.jface.text/src/org/eclipse/jface/text/presentation/PresentationReconciler.java org.eclipse.jface.text/src/org/eclipse/jface/text/presentation/package.html org.eclipse.jface.text/src/org/eclipse/jface/text/reconciler/AbstractReconcileStep.java org.eclipse.jface.text/src/org/eclipse/jface/text/reconciler/AbstractReconciler.java org.eclipse.jface.text/src/org/eclipse/jface/text/reconciler/DirtyRegion.java org.eclipse.jface.text/src/org/eclipse/jface/text/reconciler/DirtyRegionQueue.java org.eclipse.jface.text/src/org/eclipse/jface/text/reconciler/IReconcilableModel.java org.eclipse.jface.text/src/org/eclipse/jface/text/reconciler/IReconcileResult.java org.eclipse.jface.text/src/org/eclipse/jface/text/reconciler/IReconcileStep.java org.eclipse.jface.text/src/org/eclipse/jface/text/reconciler/IReconciler.java org.eclipse.jface.text/src/org/eclipse/jface/text/reconciler/IReconcilerExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/reconciler/IReconcilingStrategy.java org.eclipse.jface.text/src/org/eclipse/jface/text/reconciler/IReconcilingStrategyExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/reconciler/MonoReconciler.java org.eclipse.jface.text/src/org/eclipse/jface/text/reconciler/Reconciler.java org.eclipse.jface.text/src/org/eclipse/jface/text/reconciler/package.html org.eclipse.jface.text/src/org/eclipse/jface/text/rules/BufferedRuleBasedScanner.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/DefaultDamagerRepairer.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/DefaultPartitioner.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/EndOfLineRule.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/ICharacterScanner.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/IPartitionTokenScanner.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/IPredicateRule.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/IRule.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/IToken.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/ITokenScanner.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/IWhitespaceDetector.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/IWordDetector.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/MultiLineRule.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/NumberRule.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/PatternRule.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/RuleBasedDamagerRepairer.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/RuleBasedPartitionScanner.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/RuleBasedPartitioner.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/RuleBasedScanner.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/SingleLineRule.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/Token.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/WhitespaceRule.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/WordPatternRule.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/WordRule.java org.eclipse.jface.text/src/org/eclipse/jface/text/rules/package.html org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationBarHoverManager.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationColumn.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationPainter.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/AnnotationRulerColumn.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/ChangeRulerColumn.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/CompositeRuler.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/IAnnotationAccess.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/IAnnotationAccessExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/IAnnotationHover.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/IAnnotationHoverExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/IAnnotationPresentation.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/IChangeRulerColumn.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/ICharacterPairMatcher.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/ILineDiffInfo.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/ILineDiffer.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/ILineRange.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/IOverviewRuler.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/ISharedTextColors.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/ISourceViewer.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/ISourceViewerExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/ISourceViewerExtension2.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/IVerticalRuler.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/IVerticalRulerColumn.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/IVerticalRulerExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/IVerticalRulerInfo.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/IVerticalRulerInfoExtension.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/IVerticalRulerListener.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/ImageUtilities.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/JFaceTextMessages.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineChangeHover.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberChangeRulerColumn.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineNumberRulerColumn.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/LineRange.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/MatchingCharacterPainter.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/OverviewRuler.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/OverviewRulerHoverManager.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/SourceViewer.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/SourceViewerConfiguration.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/VerticalRuler.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/VerticalRulerEvent.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/VisualAnnotationModel.java org.eclipse.jface.text/src/org/eclipse/jface/text/source/package.html org.eclipse.jface.text/src/org/eclipse/jface/text/templates/ContextTypeRegistry.java org.eclipse.jface.text/src/org/eclipse/jface/text/templates/InclusivePositionUpdater.java org.eclipse.jface.text/src/org/eclipse/jface/text/templates/JFaceTextTemplateMessages.java org.eclipse.jface.text/src/org/eclipse/jface/text/templates/JFaceTextTemplateMessages.properties org.eclipse.jface.text/src/org/eclipse/jface/text/templates/PositionBasedCompletionProposal.java org.eclipse.jface.text/src/org/eclipse/jface/text/templates/TemplateCompletionProcessor.java org.eclipse.jface.text/src/org/eclipse/jface/text/templates/TemplateProposal.java org.eclipse.jface.text/src/org/eclipse/jface/text/templates/package.html org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceData.java org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceMessages.java org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplatePersistenceMessages.properties org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplateReaderWriter.java org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/TemplateStore.java org.eclipse.jface.text/src/org/eclipse/jface/text/templates/persistence/package.html org.eclipse.search.tests/.classpath org.eclipse.search.tests/.cvsignore org.eclipse.search.tests/.project org.eclipse.search.tests/.template org.eclipse.search.tests/build.properties org.eclipse.search.tests/plugin.xml org.eclipse.search.tests/src/org/eclipse/search/core/tests/AllSearchModelTests.java org.eclipse.search.tests/src/org/eclipse/search/core/tests/LineConversionTest.java org.eclipse.search.tests/src/org/eclipse/search/core/tests/LongQuery.java org.eclipse.search.tests/src/org/eclipse/search/core/tests/NullQuery.java org.eclipse.search.tests/src/org/eclipse/search/core/tests/NullSearchResult.java org.eclipse.search.tests/src/org/eclipse/search/core/tests/QueryManagerTest.java org.eclipse.search.tests/src/org/eclipse/search/core/tests/TestSearchResult.java org.eclipse.search.tests/src/org/eclipse/search/tests/AllSearchTests.java org.eclipse.search.tests/src/org/eclipse/search/tests/SearchTestPlugin.java org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/AllFileSearchTests.java org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/AnnotationManagerSetup.java org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/AnnotationManagerTest.java org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/JUnitSetup.java org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/LineAnnotationManagerTest.java org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/LineBasedFileSearch.java org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/PositionTrackerTest.java org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/ResultUpdaterTest.java org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/SearchResultPageTest.java org.eclipse.search.tests/src/org/eclipse/search/tests/filesearch/SortingTest.java org.eclipse.search.tests/testresources/junit37-noUI-src.zip org.eclipse.search/.classpath org.eclipse.search/.cvsignore org.eclipse.search/.project org.eclipse.search/about.html org.eclipse.search/build.properties org.eclipse.search/buildnotes_search.html org.eclipse.search/hglegal2003.htm org.eclipse.search/icons/full/dlcl16/collapseall.gif org.eclipse.search/icons/full/dlcl16/expandall.gif org.eclipse.search/icons/full/dlcl16/flatLayout.gif org.eclipse.search/icons/full/dlcl16/hierarchicalLayout.gif org.eclipse.search/icons/full/dlcl16/search_goto.gif org.eclipse.search/icons/full/dlcl16/search_history.gif org.eclipse.search/icons/full/dlcl16/search_next.gif org.eclipse.search/icons/full/dlcl16/search_prev.gif org.eclipse.search/icons/full/dlcl16/search_rem.gif org.eclipse.search/icons/full/dlcl16/search_remall.gif org.eclipse.search/icons/full/dlcl16/search_sortmatch.gif org.eclipse.search/icons/full/dlcl16/stop.gif org.eclipse.search/icons/full/dlcl16/tsearch_obj.gif org.eclipse.search/icons/full/dtool16/group_by_file.gif org.eclipse.search/icons/full/dtool16/group_by_folder.gif org.eclipse.search/icons/full/dtool16/group_by_project.gif org.eclipse.search/icons/full/dtool16/search.gif org.eclipse.search/icons/full/elcl16/collapseall.gif org.eclipse.search/icons/full/elcl16/expandall.gif org.eclipse.search/icons/full/elcl16/flatLayout.gif org.eclipse.search/icons/full/elcl16/hierarchicalLayout.gif org.eclipse.search/icons/full/elcl16/search_goto.gif org.eclipse.search/icons/full/elcl16/search_history.gif org.eclipse.search/icons/full/elcl16/search_next.gif org.eclipse.search/icons/full/elcl16/search_prev.gif org.eclipse.search/icons/full/elcl16/search_rem.gif org.eclipse.search/icons/full/elcl16/search_remall.gif org.eclipse.search/icons/full/elcl16/search_sortmatch.gif org.eclipse.search/icons/full/elcl16/stop.gif org.eclipse.search/icons/full/elcl16/tsearch_obj.gif org.eclipse.search/icons/full/etool16/group_by_file.gif org.eclipse.search/icons/full/etool16/group_by_folder.gif org.eclipse.search/icons/full/etool16/group_by_project.gif org.eclipse.search/icons/full/etool16/search.gif org.eclipse.search/icons/full/eview16/searchres.gif org.eclipse.search/icons/full/obj16/searchm_obj.gif org.eclipse.search/icons/full/obj16/tsearch_dpdn_obj.gif org.eclipse.search/new search/org/eclipse/search/ui/IQueryListener.java org.eclipse.search/new search/org/eclipse/search/ui/ISearchQuery.java org.eclipse.search/new search/org/eclipse/search/ui/ISearchResult.java org.eclipse.search/new search/org/eclipse/search/ui/ISearchResultListener.java org.eclipse.search/new search/org/eclipse/search/ui/ISearchResultPage.java org.eclipse.search/new search/org/eclipse/search/ui/ISearchResultViewPart.java org.eclipse.search/new search/org/eclipse/search/ui/NewSearchUI.java org.eclipse.search/new search/org/eclipse/search/ui/SearchResultEvent.java org.eclipse.search/new search/org/eclipse/search/ui/package.html org.eclipse.search/new search/org/eclipse/search/ui/text/AbstractTextSearchResult.java org.eclipse.search/new search/org/eclipse/search/ui/text/AbstractTextSearchViewPage.java org.eclipse.search/new search/org/eclipse/search/ui/text/IEditorMatchAdapter.java org.eclipse.search/new search/org/eclipse/search/ui/text/IFileMatchAdapter.java org.eclipse.search/new search/org/eclipse/search/ui/text/ISearchEditorAccess.java org.eclipse.search/new search/org/eclipse/search/ui/text/Match.java org.eclipse.search/new search/org/eclipse/search/ui/text/MatchEvent.java org.eclipse.search/new search/org/eclipse/search/ui/text/RemoveAllEvent.java org.eclipse.search/new search/org/eclipse/search/ui/text/package.html org.eclipse.search/new search/org/eclipse/search2/internal/ui/CancelSearchAction.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/InternalSearchUI.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/QueryManager.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/RemoveAllSearchesAction.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/SearchAgainAction.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/SearchDropDownAction.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/SearchMessages.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/SearchMessages.properties org.eclipse.search/new search/org/eclipse/search2/internal/ui/SearchPageRegistry.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/SearchView.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/SearchesDialog.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/ShowSearchAction.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/ShowSearchesAction.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/ThrottlingProgressMonitor.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/basic/views/CollapseAllAction.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/basic/views/ExpandAllAction.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/basic/views/INavigate.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/basic/views/RemoveAllMatchesAction.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/basic/views/RemoveMatchAction.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/basic/views/RemoveSelectedMatchesAction.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/basic/views/SetLayoutAction.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/basic/views/ShowNextResultAction.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/basic/views/ShowPreviousResultAction.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/basic/views/TableViewerNavigator.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/basic/views/TreeViewerNavigator.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/text/AnnotationHighlighter.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/text/AnnotationManagers.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/text/EditorAccessHighlighter.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/text/EditorAnnotationManager.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/text/Highlighter.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/text/MarkerHighlighter.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/text/PositionTracker.java org.eclipse.search/new search/org/eclipse/search2/internal/ui/text/WindowAnnotationManager.java org.eclipse.search/ngibmcpy2003.gif org.eclipse.search/old_buildnotes_search_2.1.html org.eclipse.search/old_buildnotes_search_2_0.html org.eclipse.search/plugin.properties org.eclipse.search/plugin.xml org.eclipse.search/schema/searchPages.exsd org.eclipse.search/schema/searchResultSorters.exsd org.eclipse.search/schema/searchResultViewPages.exsd org.eclipse.search/scripts/exportplugin.xml org.eclipse.search/search/org/eclipse/search/internal/core/ISearchScope.java org.eclipse.search/search/org/eclipse/search/internal/core/SearchScope.java org.eclipse.search/search/org/eclipse/search/internal/core/text/AmountOfWorkCalculator.java org.eclipse.search/search/org/eclipse/search/internal/core/text/FileMatchCollector.java org.eclipse.search/search/org/eclipse/search/internal/core/text/IMatchCollector.java org.eclipse.search/search/org/eclipse/search/internal/core/text/ITextSearchResultCollector.java org.eclipse.search/search/org/eclipse/search/internal/core/text/MatchLocator.java org.eclipse.search/search/org/eclipse/search/internal/core/text/TextSearchEngine.java org.eclipse.search/search/org/eclipse/search/internal/core/text/TextSearchScope.java org.eclipse.search/search/org/eclipse/search/internal/core/text/TextSearchVisitor.java org.eclipse.search/search/org/eclipse/search/internal/core/text/TypedResourceVisitor.java org.eclipse.search/search/org/eclipse/search/internal/ui/CopyToClipboardAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/GotoMarkerAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/ISearchHelpContextIds.java org.eclipse.search/search/org/eclipse/search/internal/ui/OpenFileSearchPageAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/OpenSearchDialogAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/RemoveAllResultsAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/RemoveAllSearchesAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/RemoveMatchAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/RemovePotentialMatchesAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/RemoveResultAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/ResourceToItemsMapper.java org.eclipse.search/search/org/eclipse/search/internal/ui/ScopePart.java org.eclipse.search/search/org/eclipse/search/internal/ui/Search.java org.eclipse.search/search/org/eclipse/search/internal/ui/SearchAgainAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/SearchDialog.java org.eclipse.search/search/org/eclipse/search/internal/ui/SearchDropDownAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/SearchManager.java org.eclipse.search/search/org/eclipse/search/internal/ui/SearchMessages.java org.eclipse.search/search/org/eclipse/search/internal/ui/SearchMessages.properties org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPageDescriptor.java org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPlugin.java org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPluginImages.java org.eclipse.search/search/org/eclipse/search/internal/ui/SearchPreferencePage.java org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultContentProvider.java org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultLabelProvider.java org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultView.java org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultViewEntry.java org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultViewEntryAdapterFactory.java org.eclipse.search/search/org/eclipse/search/internal/ui/SearchResultViewer.java org.eclipse.search/search/org/eclipse/search/internal/ui/SelectAllAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/ShowNextResultAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/ShowPreviousResultAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/ShowSearchAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/ShowSearchesAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/SortDropDownAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/SorterDescriptor.java org.eclipse.search/search/org/eclipse/search/internal/ui/WorkingSetComparator.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/EditorOpener.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/FileContentProvider.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/FileLabelProvider.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/FileMatch.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/FileSearchDescription.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/FileSearchPage.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/FileSearchQuery.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/FileSearchResult.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/FileTableContentProvider.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/FileTreeContentProvider.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/GotoMarkerAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/GroupByKeyComputer.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/NameSorter.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/NewTextSearchActionGroup.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/PathSorter.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/RegExContentAssistProcessor.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/ReplaceAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/ReplaceAction2.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/ReplaceDialog.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/ReplaceDialog2.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/ResourcePathSorter.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/ResourcenameSorter.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/SearchAgainConfirmationDialog.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/SearchResultUpdater.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/SortAction.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/TextSearchActionGroup.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/TextSearchOperation.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/TextSearchPage.java org.eclipse.search/search/org/eclipse/search/internal/ui/text/TextSearchResultCollector.java org.eclipse.search/search/org/eclipse/search/internal/ui/util/ComboFieldEditor.java org.eclipse.search/search/org/eclipse/search/internal/ui/util/ExceptionHandler.java org.eclipse.search/search/org/eclipse/search/internal/ui/util/ExtendedDialogWindow.java org.eclipse.search/search/org/eclipse/search/internal/ui/util/FileLabelProvider.java org.eclipse.search/search/org/eclipse/search/internal/ui/util/FileTypeEditor.java org.eclipse.search/search/org/eclipse/search/internal/ui/util/ListContentProvider.java org.eclipse.search/search/org/eclipse/search/internal/ui/util/ListDialog.java org.eclipse.search/search/org/eclipse/search/internal/ui/util/MessageLine.java org.eclipse.search/search/org/eclipse/search/internal/ui/util/PixelConverter.java org.eclipse.search/search/org/eclipse/search/internal/ui/util/RowLayouter.java org.eclipse.search/search/org/eclipse/search/internal/ui/util/SWTUtil.java org.eclipse.search/search/org/eclipse/search/internal/ui/util/TypeFilteringDialog.java org.eclipse.search/search/org/eclipse/search/ui/IActionGroupFactory.java org.eclipse.search/search/org/eclipse/search/ui/IContextMenuConstants.java org.eclipse.search/search/org/eclipse/search/ui/IContextMenuContributor.java org.eclipse.search/search/org/eclipse/search/ui/IGroupByKeyComputer.java org.eclipse.search/search/org/eclipse/search/ui/IReplacePage.java org.eclipse.search/search/org/eclipse/search/ui/ISearchPage.java org.eclipse.search/search/org/eclipse/search/ui/ISearchPageContainer.java org.eclipse.search/search/org/eclipse/search/ui/ISearchPageScoreComputer.java org.eclipse.search/search/org/eclipse/search/ui/ISearchResultView.java org.eclipse.search/search/org/eclipse/search/ui/ISearchResultViewEntry.java org.eclipse.search/search/org/eclipse/search/ui/SearchUI.java org.eclipse.search/search/org/eclipse/search/ui/package.html org.eclipse.text/.classpath org.eclipse.text/.cvsignore org.eclipse.text/.project org.eclipse.text/about.html org.eclipse.text/build.properties org.eclipse.text/plugin.properties org.eclipse.text/plugin.xml org.eclipse.text/projection/org/eclipse/jface/text/projection/ChildDocument.java org.eclipse.text/projection/org/eclipse/jface/text/projection/ChildDocumentManager.java org.eclipse.text/projection/org/eclipse/jface/text/projection/Fragment.java org.eclipse.text/projection/org/eclipse/jface/text/projection/FragmentUpdater.java org.eclipse.text/projection/org/eclipse/jface/text/projection/IMinimalMapping.java org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocument.java org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocumentEvent.java org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocumentManager.java org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionMapping.java org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionTextStore.java org.eclipse.text/projection/org/eclipse/jface/text/projection/Segment.java org.eclipse.text/projection/org/eclipse/jface/text/projection/SegmentUpdater.java org.eclipse.text/projection/org/eclipse/jface/text/projection/package.html org.eclipse.text/scripts/exportplugin.xml org.eclipse.text/src/org/eclipse/jface/text/AbstractDocument.java org.eclipse.text/src/org/eclipse/jface/text/AbstractLineTracker.java org.eclipse.text/src/org/eclipse/jface/text/Assert.java org.eclipse.text/src/org/eclipse/jface/text/BadLocationException.java org.eclipse.text/src/org/eclipse/jface/text/BadPartitioningException.java org.eclipse.text/src/org/eclipse/jface/text/BadPositionCategoryException.java org.eclipse.text/src/org/eclipse/jface/text/ConfigurableLineTracker.java org.eclipse.text/src/org/eclipse/jface/text/DefaultLineTracker.java org.eclipse.text/src/org/eclipse/jface/text/DefaultPositionUpdater.java org.eclipse.text/src/org/eclipse/jface/text/Document.java org.eclipse.text/src/org/eclipse/jface/text/DocumentEvent.java org.eclipse.text/src/org/eclipse/jface/text/DocumentPartitioningChangedEvent.java org.eclipse.text/src/org/eclipse/jface/text/FindReplaceDocumentAdapter.java org.eclipse.text/src/org/eclipse/jface/text/GapTextStore.java org.eclipse.text/src/org/eclipse/jface/text/IDocument.java org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension.java org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension2.java org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension3.java org.eclipse.text/src/org/eclipse/jface/text/IDocumentInformationMapping.java org.eclipse.text/src/org/eclipse/jface/text/IDocumentInformationMappingExtension.java org.eclipse.text/src/org/eclipse/jface/text/IDocumentListener.java org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioner.java org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitionerExtension.java org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitionerExtension2.java org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioningListener.java org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioningListenerExtension.java org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioningListenerExtension2.java org.eclipse.text/src/org/eclipse/jface/text/ILineTracker.java org.eclipse.text/src/org/eclipse/jface/text/IPositionUpdater.java org.eclipse.text/src/org/eclipse/jface/text/IRegion.java org.eclipse.text/src/org/eclipse/jface/text/IRepairableDocument.java org.eclipse.text/src/org/eclipse/jface/text/ISlaveDocumentManager.java org.eclipse.text/src/org/eclipse/jface/text/ISlaveDocumentManagerExtension.java org.eclipse.text/src/org/eclipse/jface/text/ISynchronizable.java org.eclipse.text/src/org/eclipse/jface/text/ITextStore.java org.eclipse.text/src/org/eclipse/jface/text/ITypedRegion.java org.eclipse.text/src/org/eclipse/jface/text/Line.java org.eclipse.text/src/org/eclipse/jface/text/Position.java org.eclipse.text/src/org/eclipse/jface/text/Region.java org.eclipse.text/src/org/eclipse/jface/text/SequentialRewriteTextStore.java org.eclipse.text/src/org/eclipse/jface/text/SlaveDocumentEvent.java org.eclipse.text/src/org/eclipse/jface/text/TextUtilities.java org.eclipse.text/src/org/eclipse/jface/text/TypedPosition.java org.eclipse.text/src/org/eclipse/jface/text/TypedRegion.java org.eclipse.text/src/org/eclipse/jface/text/link/ILinkedModeListener.java org.eclipse.text/src/org/eclipse/jface/text/link/InclusivePositionUpdater.java org.eclipse.text/src/org/eclipse/jface/text/link/LinkedModeManager.java org.eclipse.text/src/org/eclipse/jface/text/link/LinkedModeModel.java org.eclipse.text/src/org/eclipse/jface/text/link/LinkedPosition.java org.eclipse.text/src/org/eclipse/jface/text/link/LinkedPositionGroup.java org.eclipse.text/src/org/eclipse/jface/text/link/package.html org.eclipse.text/src/org/eclipse/jface/text/package.html org.eclipse.text/src/org/eclipse/jface/text/source/Annotation.java org.eclipse.text/src/org/eclipse/jface/text/source/AnnotationMap.java org.eclipse.text/src/org/eclipse/jface/text/source/AnnotationModel.java org.eclipse.text/src/org/eclipse/jface/text/source/AnnotationModelEvent.java org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationMap.java org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModel.java org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModelExtension.java org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModelListener.java org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModelListenerExtension.java org.eclipse.text/src/org/eclipse/jface/text/source/package.html org.eclipse.text/src/org/eclipse/jface/text/templates/DocumentTemplateContext.java org.eclipse.text/src/org/eclipse/jface/text/templates/GlobalTemplateVariables.java org.eclipse.text/src/org/eclipse/jface/text/templates/SimpleTemplateVariableResolver.java org.eclipse.text/src/org/eclipse/jface/text/templates/Template.java org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateBuffer.java org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateContext.java org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateContextType.java org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateException.java org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateTranslator.java org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateVariable.java org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateVariableResolver.java org.eclipse.text/src/org/eclipse/jface/text/templates/TextTemplateMessages.java org.eclipse.text/src/org/eclipse/jface/text/templates/TextTemplateMessages.properties org.eclipse.text/src/org/eclipse/jface/text/templates/package.html org.eclipse.text/src/org/eclipse/text/edits/CopySourceEdit.java org.eclipse.text/src/org/eclipse/text/edits/CopyTargetEdit.java org.eclipse.text/src/org/eclipse/text/edits/CopyingRangeMarker.java org.eclipse.text/src/org/eclipse/text/edits/DeleteEdit.java org.eclipse.text/src/org/eclipse/text/edits/EditDocument.java org.eclipse.text/src/org/eclipse/text/edits/ISourceModifier.java org.eclipse.text/src/org/eclipse/text/edits/InsertEdit.java org.eclipse.text/src/org/eclipse/text/edits/MalformedTreeException.java org.eclipse.text/src/org/eclipse/text/edits/Messages.properties org.eclipse.text/src/org/eclipse/text/edits/MoveSourceEdit.java org.eclipse.text/src/org/eclipse/text/edits/MoveTargetEdit.java org.eclipse.text/src/org/eclipse/text/edits/MultiTextEdit.java org.eclipse.text/src/org/eclipse/text/edits/RangeMarker.java org.eclipse.text/src/org/eclipse/text/edits/ReplaceEdit.java org.eclipse.text/src/org/eclipse/text/edits/TextEdit.java org.eclipse.text/src/org/eclipse/text/edits/TextEditCopier.java org.eclipse.text/src/org/eclipse/text/edits/TextEditGroup.java org.eclipse.text/src/org/eclipse/text/edits/TextEditMessages.java org.eclipse.text/src/org/eclipse/text/edits/TextEditProcessor.java org.eclipse.text/src/org/eclipse/text/edits/TextEditVisitor.java org.eclipse.text/src/org/eclipse/text/edits/TreeIterationInfo.java org.eclipse.text/src/org/eclipse/text/edits/UndoCollector.java org.eclipse.text/src/org/eclipse/text/edits/UndoEdit.java org.eclipse.ui.editors.tests/src/org/eclipse/ui/editors/tests/EditorsTestSuite.java org.eclipse.ui.editors/.classpath org.eclipse.ui.editors/.cvsignore org.eclipse.ui.editors/.project org.eclipse.ui.editors/_buildnotes_text_2_0.html org.eclipse.ui.editors/_buildnotes_text_2_1.html org.eclipse.ui.editors/about.html org.eclipse.ui.editors/build.properties org.eclipse.ui.editors/buildnotes_text.html org.eclipse.ui.editors/icons/full/ctool16/last_edit_pos.gif org.eclipse.ui.editors/icons/full/ctool16/next_nav.gif org.eclipse.ui.editors/icons/full/ctool16/prev_nav.gif org.eclipse.ui.editors/icons/full/dtool16/last_edit_pos.gif org.eclipse.ui.editors/icons/full/dtool16/next_nav.gif org.eclipse.ui.editors/icons/full/dtool16/prev_nav.gif org.eclipse.ui.editors/icons/full/etool16/last_edit_pos.gif org.eclipse.ui.editors/icons/full/etool16/next_nav.gif org.eclipse.ui.editors/icons/full/etool16/prev_nav.gif org.eclipse.ui.editors/icons/full/obj16/file_obj.gif org.eclipse.ui.editors/migration_guidelines.html org.eclipse.ui.editors/plugin.properties org.eclipse.ui.editors/plugin.xml org.eclipse.ui.editors/schema/annotationTypes.exsd org.eclipse.ui.editors/schema/documentProviders.exsd org.eclipse.ui.editors/schema/markerAnnotationSpecification.exsd org.eclipse.ui.editors/schema/markerUpdaters.exsd org.eclipse.ui.editors/schema/templates.exsd org.eclipse.ui.editors/scripts/exportplugin.xml org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/DefaultEncodingSupport.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/EditorsUI.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/EncodingActionGroup.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/FileDocumentProvider.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/ForwardingDocumentProvider.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/IEncodingActionsConstants.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/IEncodingActionsDefinitionIds.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/IEncodingActionsHelpContextIds.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/IEncodingSupport.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/IFoldingCommandIds.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/ILocationProvider.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/IStorageDocumentProvider.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/ITextEditorHelpContextIds.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/StorageDocumentProvider.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/TextEditor.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/TextEditorActionContributor.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/TextEditorMessages.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/TextEditorMessages.properties org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/TextEditorPreferenceConstants.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/TextEditorPreferencePage.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/TextFileDocumentProvider.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/TextSourceViewerConfiguration.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/package.html org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/templates/ContributionContextTypeRegistry.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/templates/ContributionTemplateMessages.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/templates/ContributionTemplateMessages.properties org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/templates/ContributionTemplateStore.java org.eclipse.ui.editors/src/org/eclipse/ui/editors/text/templates/package.html org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/quickdiff/LastSaveReferenceProvider.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/quickdiff/QuickDiffMessages.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/quickdiff/QuickDiffMessages.properties org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/AbstractConfigurationBlockPreferencePage.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/AnnotationsConfigurationBlock.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/AnnotationsPreferencePage.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/ColorEditor.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/EditorsPlugin.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/FileEditorInputAdapterFactory.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/IEditorsStatusConstants.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/IPreferenceConfigurationBlock.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/JavaFileEditorInput.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/NextPreviousPulldownActionDelegate.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/NextPulldownActionDelegate.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/OpenExternalFileAction.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/OverlayPreferenceStore.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/PixelConverter.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/PreviousPulldownActionDelegate.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/QuickDiffConfigurationBlock.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/QuickDiffPreferencePage.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/SharedTextColors.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/StatusInfo.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/TabFolderLayout.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/TextEditorMessages.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/TextEditorMessages.properties org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/TextEditorPreferencePage2.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/UISynchronizationContext.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/editors/text/WorkspaceOperationRunner.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/AnnotationType.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/AnnotationTypeHierarchy.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/DelegatingAnnotationPreference.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/SourceViewerInformationControl.java org.eclipse.ui.editors/src/org/eclipse/ui/internal/texteditor/TextChangeHover.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AbstractDecoratedTextEditor.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AbstractDecoratedTextEditorPreferenceConstants.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AbstractMarkerAnnotationModel.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AddMarkerAction.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AddTaskAction.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AnnotationPreferenceLookup.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/AnnotationTypeLookup.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/BasicMarkerUpdater.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/BookmarkRulerAction.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/ChainedPreferenceStore.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/DefaultMarkerAnnotationAccess.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/DocumentProviderRegistry.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/IMarkerUpdater.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/ImageUtilities.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/MarkerAnnotation.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/MarkerAnnotationPreferences.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/MarkerRulerAction.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/MarkerRulerInfoAction.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/MarkerUpdater.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/MarkerUtilities.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/ResourceMarkerAnnotationModel.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/ResourceMarkerAnnotationModelFactory.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/SelectMarkerRulerAction.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/SelectMarkerRulerInfoAction.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/SelectRulerAction.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/SimpleMarkerAnnotation.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/TaskRulerAction.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/TextEditorMessages.java org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/TextEditorMessages.properties org.eclipse.ui.editors/src/org/eclipse/ui/texteditor/package.html org.eclipse.ui.examples.javaeditor/.classpath org.eclipse.ui.examples.javaeditor/.cvsignore org.eclipse.ui.examples.javaeditor/.project org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/JavaActionContributor.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/JavaAnnotationHover.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/JavaContentOutlinePage.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/JavaDocumentSetupParticipant.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/JavaEditor.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/JavaEditorExamplePlugin.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/JavaEditorMessages.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/JavaEditorMessages.properties org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/JavaPartitionScanner.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/JavaSourceViewerConfiguration.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/JavaTextHover.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/PresentationAction.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/java/JavaAutoIndentStrategy.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/java/JavaCodeScanner.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/java/JavaCompletionProcessor.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/java/JavaDoubleClickSelector.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/java/JavaEditorMessages.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/javadoc/JavaDocCompletionProcessor.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/javadoc/JavaDocScanner.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/togglepresentation.gif org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/util/JavaColorProvider.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/util/JavaWhitespaceDetector.java org.eclipse.ui.examples.javaeditor/Eclipse Java Editor Example/org/eclipse/ui/examples/javaeditor/util/JavaWordDetector.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/editors/ColorManager.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/editors/IXMLColorConstants.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/editors/NonRuleBasedDamagerRepairer.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/editors/TagRule.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/editors/TemplateEditor.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/editors/TemplateEditorUI.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/editors/TemplateMessages.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/editors/TemplateMessages.properties org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/editors/XMLConfiguration.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/editors/XMLDocumentProvider.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/editors/XMLDoubleClickStrategy.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/editors/XMLPartitionScanner.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/editors/XMLScanner.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/editors/XMLTagScanner.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/editors/XMLWhitespaceDetector.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/preferences/TemplatesPreferencePage.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/template/AntVariableResolver.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/template/XMLCompletionProcessor.java org.eclipse.ui.examples.javaeditor/Template Editor Example/org/eclipse/ui/examples/templateeditor/template/XMLContextType.java org.eclipse.ui.examples.javaeditor/about.html org.eclipse.ui.examples.javaeditor/build.properties org.eclipse.ui.examples.javaeditor/doc-html/hglegal.htm org.eclipse.ui.examples.javaeditor/doc-html/hglegal2002.htm org.eclipse.ui.examples.javaeditor/doc-html/hglegal2003.htm org.eclipse.ui.examples.javaeditor/doc-html/ngibmcpy.gif org.eclipse.ui.examples.javaeditor/doc-html/ngibmcpy2002.gif org.eclipse.ui.examples.javaeditor/doc-html/ngibmcpy2003.gif org.eclipse.ui.examples.javaeditor/doc-html/ui_javaeditor_ex.html org.eclipse.ui.examples.javaeditor/doc-html/ui_templateeditor_ex.html org.eclipse.ui.examples.javaeditor/icons/obj16/java.gif org.eclipse.ui.examples.javaeditor/icons/resolver.gif org.eclipse.ui.examples.javaeditor/icons/sample.gif org.eclipse.ui.examples.javaeditor/icons/template.gif org.eclipse.ui.examples.javaeditor/plugin.properties org.eclipse.ui.examples.javaeditor/plugin.xml org.eclipse.ui.examples.javaeditor/templates/ant.properties org.eclipse.ui.examples.javaeditor/templates/ant.xml org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/WorkbenchTextEditorTestSuite.java org.eclipse.ui.workbench.texteditor/.classpath org.eclipse.ui.workbench.texteditor/.cvsignore org.eclipse.ui.workbench.texteditor/.project org.eclipse.ui.workbench.texteditor/about.html org.eclipse.ui.workbench.texteditor/build.properties org.eclipse.ui.workbench.texteditor/icons/full/ctool16/segment_edit.gif org.eclipse.ui.workbench.texteditor/icons/full/dtool16/segment_edit.gif org.eclipse.ui.workbench.texteditor/icons/full/etool16/segment_edit.gif org.eclipse.ui.workbench.texteditor/plugin.properties org.eclipse.ui.workbench.texteditor/plugin.xml org.eclipse.ui.workbench.texteditor/schema/quickDiffReferenceProvider.exsd org.eclipse.ui.workbench.texteditor/scripts/exportplugin.xml org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/contentassist/ContentAssistHandler.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/contentassist/ContentAssistMessages.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/contentassist/ContentAssistMessages.properties org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/AnnotationExpandHover.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/AnnotationExpansionControl.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/EditPosition.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/EditorMessages.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/EditorMessages.properties org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/GotoLastEditPositionAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/LinearLayouter.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/TextEditorPlugin.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/DiffRegion.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/DocumentLineDiffer.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/QuickDiffExtensionsRegistry.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/QuickDiffMessages.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/QuickDiffMessages.properties org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/QuickDiffRestoreAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/ReferenceSelectionAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/RestoreAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/RevertBlockAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/RevertLineAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/RevertSelectionAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/compare/rangedifferencer/DifferencesIterator.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/compare/rangedifferencer/DocLineComparator.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/compare/rangedifferencer/IRangeComparator.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/compare/rangedifferencer/ITokenComparator.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/compare/rangedifferencer/LinkedRangeDifference.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/compare/rangedifferencer/LinkedRangeFactory.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/compare/rangedifferencer/RangeDifference.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/compare/rangedifferencer/RangeDifferencer.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/compare/rangedifferencer/package.html org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/internal/texteditor/quickdiff/package.html org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractDocumentProvider.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractRulerActionDelegate.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AbstractTextEditor.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/AnnotationPreference.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/BasicTextEditorActionContributor.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/CaseAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/ConfigurationElementSorter.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/ContentAssistAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/ConvertLineDelimitersAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/DefaultRangeIndicator.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/DeleteLineAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/DeleteLineTarget.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/EditorMessages.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/EditorMessages.properties org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/EditorStatusLine.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindNextAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceDialog.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/FindReplaceTarget.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/GotoLineAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IAbstractTextEditorHelpContextIds.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IAnnotationImageProvider.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IDocumentProvider.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IDocumentProviderExtension.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IDocumentProviderExtension2.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IDocumentProviderExtension3.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IEditorStatusLine.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IElementStateListener.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IElementStateListenerExtension.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IFindReplaceTargetExtension2.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IReadOnlyDependent.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/ISchedulingRuleProvider.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IStatusField.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IStatusFieldExtension.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/ITextEditor.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/ITextEditorActionConstants.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/ITextEditorActionDefinitionIds.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/ITextEditorDropTargetListener.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/ITextEditorExtension.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/ITextEditorExtension2.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/ITextEditorExtension3.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IUpdate.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IWorkbenchActionDefinitionIds.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IncrementalFindAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/IncrementalFindTarget.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/InfoForm.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/InsertLineAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/MarkAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/MarkRegionTarget.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/MoveLinesAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/PropagatingFontFieldEditor.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/RegExContentAssistProcessor.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/ResourceAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/RetargetTextEditorAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/RevertToSavedAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/SaveAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/SelectAnnotationRulerAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/ShiftAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/SourceViewerDecorationSupport.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/StatusLineContributionItem.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/StatusTextEditor.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/TextEditorAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/TextNavigationAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/TextOperationAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/TextSelectionNavigationLocation.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/ValidateStateException.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/WorkbenchChainedTextFontFieldEditor.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/link/EditorLinkedModeUI.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/package.html org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/quickdiff/IQuickDiffReferenceProvider.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/quickdiff/QuickDiff.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/quickdiff/QuickDiffToggleAction.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/quickdiff/ReferenceProviderDescriptor.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/quickdiff/package.html org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/EditTemplateDialog.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/MessageLine.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/StatusDialog.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/StatusInfo.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/TemplateContentProvider.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/TemplatePreferencePage.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/TemplateVariableProcessor.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/TemplateVariableProposal.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/TextEditorTemplateMessages.java org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/TextEditorTemplateMessages.properties org.eclipse.ui.workbench.texteditor/src/org/eclipse/ui/texteditor/templates/package.html
Diffstat (limited to 'org.eclipse.text')
-rw-r--r--org.eclipse.text/.classpath8
-rw-r--r--org.eclipse.text/.cvsignore1
-rw-r--r--org.eclipse.text/.project28
-rw-r--r--org.eclipse.text/about.html30
-rw-r--r--org.eclipse.text/build.properties16
-rw-r--r--org.eclipse.text/plugin.properties12
-rw-r--r--org.eclipse.text/plugin.xml15
-rw-r--r--org.eclipse.text/projection/org/eclipse/jface/text/projection/ChildDocument.java97
-rw-r--r--org.eclipse.text/projection/org/eclipse/jface/text/projection/ChildDocumentManager.java34
-rw-r--r--org.eclipse.text/projection/org/eclipse/jface/text/projection/Fragment.java41
-rw-r--r--org.eclipse.text/projection/org/eclipse/jface/text/projection/FragmentUpdater.java136
-rw-r--r--org.eclipse.text/projection/org/eclipse/jface/text/projection/IMinimalMapping.java52
-rw-r--r--org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocument.java889
-rw-r--r--org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocumentEvent.java137
-rw-r--r--org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocumentManager.java223
-rw-r--r--org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionMapping.java626
-rw-r--r--org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionTextStore.java158
-rw-r--r--org.eclipse.text/projection/org/eclipse/jface/text/projection/Segment.java81
-rw-r--r--org.eclipse.text/projection/org/eclipse/jface/text/projection/SegmentUpdater.java128
-rw-r--r--org.eclipse.text/projection/org/eclipse/jface/text/projection/package.html23
-rw-r--r--org.eclipse.text/scripts/exportplugin.xml29
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/AbstractDocument.java1309
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/AbstractLineTracker.java554
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/Assert.java180
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/BadLocationException.java36
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/BadPartitioningException.java36
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/BadPositionCategoryException.java38
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/ConfigurableLineTracker.java65
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/DefaultLineTracker.java80
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/DefaultPositionUpdater.java238
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/Document.java78
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/DocumentEvent.java95
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/DocumentPartitioningChangedEvent.java120
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/FindReplaceDocumentAdapter.java317
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/GapTextStore.java258
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/IDocument.java637
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension.java88
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension2.java54
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension3.java156
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/IDocumentInformationMapping.java121
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/IDocumentInformationMappingExtension.java79
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/IDocumentListener.java41
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioner.java152
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitionerExtension.java44
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitionerExtension2.java119
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioningListener.java54
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioningListenerExtension.java39
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioningListenerExtension2.java38
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/ILineTracker.java136
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/IPositionUpdater.java40
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/IRegion.java40
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/IRepairableDocument.java27
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/ISlaveDocumentManager.java103
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/ISlaveDocumentManagerExtension.java31
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/ISynchronizable.java47
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/ITextStore.java65
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/ITypedRegion.java32
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/Line.java68
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/Position.java194
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/Region.java66
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/SequentialRewriteTextStore.java273
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/SlaveDocumentEvent.java45
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/TextUtilities.java529
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/TypedPosition.java79
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/TypedRegion.java61
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/link/ILinkedModeListener.java73
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/link/InclusivePositionUpdater.java107
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/link/LinkedModeManager.java232
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/link/LinkedModeModel.java760
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/link/LinkedPosition.java177
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/link/LinkedPositionGroup.java353
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/link/package.html55
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/package.html30
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/source/Annotation.java158
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/source/AnnotationMap.java187
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/source/AnnotationModel.java767
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/source/AnnotationModelEvent.java259
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationMap.java75
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModel.java135
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModelExtension.java105
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModelListener.java38
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModelListenerExtension.java30
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/source/package.html16
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/templates/DocumentTemplateContext.java154
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/templates/GlobalTemplateVariables.java176
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/templates/SimpleTemplateVariableResolver.java60
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/templates/Template.java176
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateBuffer.java74
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateContext.java118
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateContextType.java296
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateException.java59
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateTranslator.java260
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateVariable.java201
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateVariableResolver.java172
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/templates/TextTemplateMessages.java61
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/templates/TextTemplateMessages.properties24
-rw-r--r--org.eclipse.text/src/org/eclipse/jface/text/templates/package.html113
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/CopySourceEdit.java309
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/CopyTargetEdit.java161
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/CopyingRangeMarker.java78
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/DeleteEdit.java75
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/EditDocument.java209
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/ISourceModifier.java49
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/InsertEdit.java96
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/MalformedTreeException.java62
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/Messages.properties33
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/MoveSourceEdit.java419
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/MoveTargetEdit.java192
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/MultiTextEdit.java150
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/RangeMarker.java72
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/ReplaceEdit.java99
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/TextEdit.java849
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/TextEditCopier.java99
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/TextEditGroup.java137
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/TextEditMessages.java41
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/TextEditProcessor.java206
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/TextEditVisitor.java225
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/TreeIterationInfo.java59
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/UndoCollector.java65
-rw-r--r--org.eclipse.text/src/org/eclipse/text/edits/UndoEdit.java105
120 files changed, 0 insertions, 18917 deletions
diff --git a/org.eclipse.text/.classpath b/org.eclipse.text/.classpath
deleted file mode 100644
index f2a7ad8ee..000000000
--- a/org.eclipse.text/.classpath
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="projection"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
diff --git a/org.eclipse.text/.cvsignore b/org.eclipse.text/.cvsignore
deleted file mode 100644
index c5e82d745..000000000
--- a/org.eclipse.text/.cvsignore
+++ /dev/null
@@ -1 +0,0 @@
-bin \ No newline at end of file
diff --git a/org.eclipse.text/.project b/org.eclipse.text/.project
deleted file mode 100644
index 1481146e9..000000000
--- a/org.eclipse.text/.project
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.text</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- <nature>org.eclipse.pde.PluginNature</nature>
- </natures>
-</projectDescription>
diff --git a/org.eclipse.text/about.html b/org.eclipse.text/about.html
deleted file mode 100644
index 9db411aab..000000000
--- a/org.eclipse.text/about.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
-<html>
-<head>
-<title>About</title>
-<meta http-equiv=Content-Type content="text/html; charset=ISO-8859-1">
-</head>
-<body lang="EN-US">
-<h2>About This Content</h2>
-
-<p>20th June, 2002</p>
-<h3>License</h3>
-<p>Eclipse.org makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise indicated below, the Content is provided to you under the terms and conditions of the
-Common Public License Version 1.0 (&quot;CPL&quot;). A copy of the CPL is available at <a href="http://www.eclipse.org/legal/cpl-v10.html">http://www.eclipse.org/legal/cpl-v10.html</a>.
-For purposes of the CPL, &quot;Program&quot; will mean the Content.</p>
-
-<h3>Contributions</h3>
-
-<p>If this Content is licensed to you under the terms and conditions of the CPL, any Contributions, as defined in the CPL, uploaded, submitted, or otherwise
-made available to Eclipse.org, members of Eclipse.org and/or the host of Eclipse.org web site, by you that relate to such
-Content are provided under the terms and conditions of the CPL and can be made available to others under the terms of the CPL.</p>
-
-<p>If this Content is licensed to you under license terms and conditions other than the CPL (&quot;Other License&quot;), any modifications, enhancements and/or
-other code and/or documentation (&quot;Modifications&quot;) uploaded, submitted, or otherwise made available to Eclipse.org, members of Eclipse.org and/or the
-host of Eclipse.org, by you that relate to such Content are provided under terms and conditions of the Other License and can be made available
-to others under the terms of the Other License. In addition, with regard to Modifications for which you are the copyright holder, you are also
-providing the Modifications under the terms and conditions of the CPL and such Modifications can be made available to others under the terms of
-the CPL.</p>
-
-</body>
-</html> \ No newline at end of file
diff --git a/org.eclipse.text/build.properties b/org.eclipse.text/build.properties
deleted file mode 100644
index ed4e3de64..000000000
--- a/org.eclipse.text/build.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2004 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Common Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/cpl-v10.html
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-bin.includes = plugin.properties,\
- plugin.xml,\
- *.jar,\
- about.html
-source.text.jar = src/,\
- projection/
diff --git a/org.eclipse.text/plugin.properties b/org.eclipse.text/plugin.properties
deleted file mode 100644
index 1f2409cad..000000000
--- a/org.eclipse.text/plugin.properties
+++ /dev/null
@@ -1,12 +0,0 @@
-###############################################################################
-# Copyright (c) 2000, 2004 IBM Corporation and others.
-# All rights reserved. This program and the accompanying materials
-# are made available under the terms of the Common Public License v1.0
-# which accompanies this distribution, and is available at
-# http://www.eclipse.org/legal/cpl-v10.html
-#
-# Contributors:
-# IBM Corporation - initial API and implementation
-###############################################################################
-pluginName= Text
-providerName= Eclipse.org
diff --git a/org.eclipse.text/plugin.xml b/org.eclipse.text/plugin.xml
deleted file mode 100644
index 1a3abe7e5..000000000
--- a/org.eclipse.text/plugin.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.0"?>
-<plugin
- id="org.eclipse.text"
- name="%pluginName"
- version="3.0.0"
- provider-name="%providerName">
-
- <runtime>
- <library name="text.jar">
- <export name="*"/>
- </library>
- </runtime>
-
-</plugin>
diff --git a/org.eclipse.text/projection/org/eclipse/jface/text/projection/ChildDocument.java b/org.eclipse.text/projection/org/eclipse/jface/text/projection/ChildDocument.java
deleted file mode 100644
index dfd775d32..000000000
--- a/org.eclipse.text/projection/org/eclipse/jface/text/projection/ChildDocument.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.projection;
-
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.Position;
-
-/**
- * Implementation of a child document based on
- * {@link org.eclipse.jface.text.projection.ProjectionDocument}. This class
- * exists for compatibility reasons.
- * <p>
- * Internal class. This class is not intended to be used by clients.
- *
- * @since 3.0
- */
-public class ChildDocument extends ProjectionDocument {
-
- /**
- * Position reflecting a visible region. The exclusive end offset of the position
- * is considered being overlapping with the visible region.
- */
- static private class VisibleRegion extends Position {
-
- /**
- * Creates a new visible region.
- *
- * @param offset the offset of the region
- * @param length the length of the region
- */
- public VisibleRegion(int offset, int length) {
- super(offset, length);
- }
-
- /**
- * If offset is the end of the visible region and the length is 0,
- * the offset is considered overlapping with the visible region.
- *
- * @see org.eclipse.jface.text.Position#overlapsWith(int, int)
- */
- public boolean overlapsWith(int offset, int length) {
- boolean appending= (offset == this.offset + this.length) && length == 0;
- return appending || super.overlapsWith(offset, length);
- }
- }
-
- /**
- * Creates a new child document.
- *
- * @param masterDocument @inheritDoc
- */
- public ChildDocument(IDocument masterDocument) {
- super(masterDocument);
- }
-
- /**
- * Returns the parent document of this child document.
- *
- * @return the parent document of this child document
- * @see ProjectionDocument#getMasterDocument()
- */
- public IDocument getParentDocument() {
- return getMasterDocument();
- }
-
- /**
- * Sets the parent document range covered by this child document to the
- * given range.
- *
- * @param offset the offset of the range
- * @param length the length of the range
- * @throws BadLocationException if the given range is not valid
- */
- public void setParentDocumentRange(int offset, int length) throws BadLocationException {
- replaceMasterDocumentRanges(offset, length);
- }
-
- /**
- * Returns the parent document range of this child document.
- *
- * @return the parent document range of this child document
- */
- public Position getParentDocumentRange() {
- IRegion coverage= getProjectionMapping().getCoverage();
- return new VisibleRegion(coverage.getOffset(), coverage.getLength());
- }
-}
diff --git a/org.eclipse.text/projection/org/eclipse/jface/text/projection/ChildDocumentManager.java b/org.eclipse.text/projection/org/eclipse/jface/text/projection/ChildDocumentManager.java
deleted file mode 100644
index 8109b76e2..000000000
--- a/org.eclipse.text/projection/org/eclipse/jface/text/projection/ChildDocumentManager.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.projection;
-
-
-import org.eclipse.jface.text.IDocument;
-
-
-/**
- * Implementation of a child document manager based on
- * {@link org.eclipse.jface.text.projection.ProjectionDocumentManager}. This
- * class exists for compatibility reasons.
- * <p>
- * Internal class. This class is not intended to be used by clients.
- *
- * @since 3.0
- */
-public class ChildDocumentManager extends ProjectionDocumentManager {
-
- /*
- * @see org.eclipse.jface.text.projection.ProjectionDocumentManager#createProjectionDocument(org.eclipse.jface.text.IDocument)
- */
- protected ProjectionDocument createProjectionDocument(IDocument master) {
- return new ChildDocument(master);
- }
-}
diff --git a/org.eclipse.text/projection/org/eclipse/jface/text/projection/Fragment.java b/org.eclipse.text/projection/org/eclipse/jface/text/projection/Fragment.java
deleted file mode 100644
index fcdb8c6e8..000000000
--- a/org.eclipse.text/projection/org/eclipse/jface/text/projection/Fragment.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.projection;
-
-
-import org.eclipse.jface.text.Position;
-
-
-/**
- * Internal class. Do not use. Only public for testing purposes.
- * <p>
- * A fragment is a range of the master document that has an image, the so called
- * segment, in a projection document.
- *
- * @since 3.0
- */
-public class Fragment extends Position {
-
- /**
- * The corresponding segment of this fragment.
- */
- public Segment segment;
-
- /**
- * Creates a new fragment covering the given range.
- *
- * @param offset the offset of the fragment
- * @param length the length of the fragment
- */
- public Fragment(int offset, int length) {
- super(offset, length);
- }
-}
diff --git a/org.eclipse.text/projection/org/eclipse/jface/text/projection/FragmentUpdater.java b/org.eclipse.text/projection/org/eclipse/jface/text/projection/FragmentUpdater.java
deleted file mode 100644
index c357f3638..000000000
--- a/org.eclipse.text/projection/org/eclipse/jface/text/projection/FragmentUpdater.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.projection;
-
-
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.BadPositionCategoryException;
-import org.eclipse.jface.text.DefaultPositionUpdater;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.Position;
-
-
-/**
- * The position updater used to adapt the fragments of a master document. If an
- * insertion happens at a fragment's offset, the fragment is extended rather
- * than shifted. Also, the last fragment is extended if an insert operation
- * happens at the end of the fragment.
- *
- * @since 3.0
- */
-class FragmentUpdater extends DefaultPositionUpdater {
-
- /** Indicates whether the position being updated represents the last fragment. */
- private boolean fIsLast= false;
-
- /**
- * Creates the fragment updater for the given category.
- *
- * @param fragmentCategory the position category used for managing the fragments of a document
- */
- protected FragmentUpdater(String fragmentCategory) {
- super(fragmentCategory);
- }
-
- /*
- * @see org.eclipse.jface.text.IPositionUpdater#update(org.eclipse.jface.text.DocumentEvent)
- */
- public void update(DocumentEvent event) {
-
- try {
-
- Position[] category= event.getDocument().getPositions(getCategory());
-
- fOffset= event.getOffset();
- fLength= event.getLength();
- fReplaceLength= (event.getText() == null ? 0 : event.getText().length());
- fDocument= event.getDocument();
-
- for (int i= 0; i < category.length; i++) {
-
- fPosition= category[i];
- fIsLast= (i == category.length -1);
-
- fOriginalPosition.offset= fPosition.offset;
- fOriginalPosition.length= fPosition.length;
-
- if (notDeleted())
- adaptToReplace();
- }
-
- } catch (BadPositionCategoryException x) {
- // do nothing
- }
- }
-
- /*
- * @see org.eclipse.jface.text.DefaultPositionUpdater#adaptToInsert()
- */
- protected void adaptToInsert() {
- int myStart= fPosition.offset;
- int myEnd= Math.max(myStart, fPosition.offset + fPosition.length - (fIsLast || isAffectingReplace() ? 0 : 1));
-
- if (myEnd < fOffset)
- return;
-
- if (fLength <= 0) {
-
- if (myStart <= fOffset)
- fPosition.length += fReplaceLength;
- else
- fPosition.offset += fReplaceLength;
-
- } else {
-
- if (myStart <= fOffset && fOriginalPosition.offset <= fOffset)
- fPosition.length += fReplaceLength;
- else
- fPosition.offset += fReplaceLength;
- }
- }
-
- /**
- * Returns whether this updater considers any position affected by the given
- * document event. A position is affected if either the offset or the length
- * of the position is modified but the position is not just shifted.
- *
- * @param event the event
- * @return <code>true</code> if there is any affected position,
- * <code>false</code> otherwise
- */
- public boolean affectsPositions(DocumentEvent event) {
- IDocument document= event.getDocument();
- try {
-
- int index= document.computeIndexInCategory(getCategory(), event.getOffset());
- Position[] fragments= document.getPositions(getCategory());
-
- if (0 < index) {
- Position fragment= fragments[index - 1];
- if (fragment.overlapsWith(event.getOffset(), event.getLength()))
- return true;
- if (fragment.offset + fragment.length == event.getOffset())
- return index == fragments.length;
- }
-
- if (index < fragments.length) {
- Position fragment= fragments[index];
- return fragment.overlapsWith(event.getOffset(), event.getLength());
- }
-
- } catch (BadLocationException x) {
- } catch (BadPositionCategoryException x) {
- }
-
- return false;
- }
-}
diff --git a/org.eclipse.text/projection/org/eclipse/jface/text/projection/IMinimalMapping.java b/org.eclipse.text/projection/org/eclipse/jface/text/projection/IMinimalMapping.java
deleted file mode 100644
index a0a898319..000000000
--- a/org.eclipse.text/projection/org/eclipse/jface/text/projection/IMinimalMapping.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.projection;
-
-
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IRegion;
-
-
-/**
- * Internal interface for defining the exact subset of
- * {@link org.eclipse.jface.text.projection.ProjectionMapping}that the
- * {@link org.eclipse.jface.text.projection.ProjectionTextStore}is allowed to
- * access.
- *
- * @since 3.0
- */
-interface IMinimalMapping {
-
- /**
- * @see org.eclipse.jface.text.IDocumentInformationMapping#getCoverage()
- */
- IRegion getCoverage();
-
- /**
- * @see org.eclipse.jface.text.IDocumentInformationMapping#toOriginRegion(IRegion)
- */
- IRegion toOriginRegion(IRegion region) throws BadLocationException;
-
- /**
- * @see org.eclipse.jface.text.IDocumentInformationMapping#toOriginOffset(int)
- */
- int toOriginOffset(int offset) throws BadLocationException;
-
- /**
- * @see org.eclipse.jface.text.IDocumentInformationMappingExtension#toExactOriginRegions(IRegion)
- */
- IRegion[] toExactOriginRegions(IRegion region)throws BadLocationException;
-
- /**
- * @see org.eclipse.jface.text.IDocumentInformationMappingExtension#getImageLength()
- */
- int getImageLength();
-}
diff --git a/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocument.java b/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocument.java
deleted file mode 100644
index 3f1641c36..000000000
--- a/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocument.java
+++ /dev/null
@@ -1,889 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.projection;
-
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.jface.text.AbstractDocument;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.BadPositionCategoryException;
-import org.eclipse.jface.text.DefaultLineTracker;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IDocumentExtension;
-import org.eclipse.jface.text.IDocumentListener;
-import org.eclipse.jface.text.ILineTracker;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITextStore;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.Region;
-
-
-/**
- * A <code>ProjectionDocument</code> represents a projection of its master
- * document. The contents of a projection document is a sequence of fragments of
- * the master document, i.e. the projection document can be thought as being
- * constructed from the master document by not copying the whole master document
- * but omitting several ranges of the master document.
- * <p>
- * The projection document indirectly utilizes its master document as
- * <code>ITextStore</code> by means of a <code>ProjectionTextStore</code>.
- * <p>
- * The content of a projection document can be changed in two ways. Either by a
- * text replace applied to the master document or the projection document. Or by
- * changing the projection between the master document and the projection
- * document. For the latter the two methods <code>addMasterDocumentRange</code>
- * and <code>removeMasterDocumentRange</code> are provided. For any
- * manipulation, the projection document sends out a
- * {@link org.eclipse.jface.text.projection.ProjectionDocumentEvent} describing
- * the change.
- * <p>
- * Clients are not supposed to directly instantiate this class. In order to
- * obtain a projection document, a
- * {@link org.eclipse.jface.text.projection.ProjectionDocumentManager}should be
- * used. This class is not intended to be subclassed outside of its origin
- * package.
- *
- * @since 3.0
- */
-public class ProjectionDocument extends AbstractDocument {
-
-
- /**
- * Prefix of the name of the position category used to keep track of the master
- * document's fragments that correspond to the segments of the projection
- * document.
- */
- private final static String FRAGMENTS_CATEGORY_PREFIX= "__fragmentsCategory"; //$NON-NLS-1$
-
- /**
- * Name of the position category used to keep track of the project
- * document's segments that correspond to the fragments of the master
- * document.
- */
- private final static String SEGMENTS_CATEGORY= "__segmentsCategory"; //$NON-NLS-1$
-
-
- /** The master document */
- private IDocument fMasterDocument;
- /** The master document as document extension */
- private IDocumentExtension fMasterDocumentExtension;
- /** The fragments' position category */
- private String fFragmentsCategory;
- /** The segment's position category */
- private String fSegmentsCategory;
- /** The document event issued by the master document */
- private DocumentEvent fMasterEvent;
- /** The document event to be issued by the projection document */
- private ProjectionDocumentEvent fSlaveEvent;
- /** The original document event generated by a direct manipulation of this projection document */
- private DocumentEvent fOriginalEvent;
- /** Indicates whether the projection document initiated a master document update or not */
- private boolean fIsUpdating= false;
- /** Indicated whether the projection document is in auto expand mode nor not */
- private boolean fIsAutoExpanding= false;
- /** The position updater for the segments */
- private SegmentUpdater fSegmentUpdater;
- /** The position updater for the fragments */
- private FragmentUpdater fFragmentsUpdater;
- /** The projection mapping */
- private ProjectionMapping fMapping;
-
- /**
- * Creates a projection document for the given master document.
- *
- * @param masterDocument the master document
- */
- public ProjectionDocument(IDocument masterDocument) {
- super();
-
- fMasterDocument= masterDocument;
- if (fMasterDocument instanceof IDocumentExtension)
- fMasterDocumentExtension= (IDocumentExtension) fMasterDocument;
-
- fSegmentsCategory= SEGMENTS_CATEGORY;
- fFragmentsCategory= FRAGMENTS_CATEGORY_PREFIX + hashCode();
- fMasterDocument.addPositionCategory(fFragmentsCategory);
- fFragmentsUpdater= new FragmentUpdater(fFragmentsCategory);
- fMasterDocument.addPositionUpdater(fFragmentsUpdater);
-
- fMapping= new ProjectionMapping(masterDocument, fFragmentsCategory, this, fSegmentsCategory);
-
- ITextStore s= new ProjectionTextStore(masterDocument, fMapping);
- ILineTracker tracker= new DefaultLineTracker();
-
- setTextStore(s);
- setLineTracker(tracker);
-
- completeInitialization();
-
- initializeProjection();
- tracker.set(s.get(0, s.getLength()));
- }
-
- /**
- * Disposes this projection document.
- */
- public void dispose() {
- fMasterDocument.removePositionUpdater(fFragmentsUpdater);
- try {
- fMasterDocument.removePositionCategory(fFragmentsCategory);
- } catch (BadPositionCategoryException x) {
- // allow multiple dispose calls
- }
- }
-
- private void internalError() {
- throw new IllegalStateException();
- }
-
- /**
- * Returns the fragments of the master documents.
- *
- * @return the fragment of the master document
- */
- protected final Position[] getFragments() {
- try {
- return fMasterDocument.getPositions(fFragmentsCategory);
- } catch (BadPositionCategoryException e) {
- internalError();
- }
- // unreachable
- return null;
- }
-
- /**
- * Returns the segments of this projection document.
- *
- * @return the segments of this projection document
- */
- protected final Position[] getSegments() {
- try {
- return getPositions(fSegmentsCategory);
- } catch (BadPositionCategoryException e) {
- internalError();
- }
- // unreachable
- return null;
- }
-
- /**
- * Returns the projection mapping used by this document.
- *
- * @return the projection mapping used by this document
- */
- public ProjectionMapping getProjectionMapping(){
- return fMapping;
- }
-
- /**
- * Returns the master document of this projection document.
- *
- * @return the master document of this projection document
- */
- public IDocument getMasterDocument() {
- return fMasterDocument;
- }
-
- /**
- * Initializes the projection document from the master document based on
- * the master's fragments.
- */
- private void initializeProjection() {
-
- try {
-
- addPositionCategory(fSegmentsCategory);
- fSegmentUpdater= new SegmentUpdater(fSegmentsCategory);
- addPositionUpdater(fSegmentUpdater);
-
- int offset= 0;
- Position[] fragments= getFragments();
- for (int i= 0; i < fragments.length; i++) {
- Fragment fragment= (Fragment) fragments[i];
- Segment segment= new Segment(offset, fragment.getLength());
- segment.fragment= fragment;
- addPosition(fSegmentsCategory, segment);
- offset += fragment.length;
- }
-
- } catch (BadPositionCategoryException x) {
- internalError();
- } catch (BadLocationException x) {
- internalError();
- }
- }
-
- /**
- * Creates a segment for the given fragment at the given position inside the list of segments.
- *
- * @param fragment the corresponding fragment
- * @param index the index in the list of segments
- * @return the created segment
- * @throws BadLocationException in case the fragment is invalid
- * @throws BadPositionCategoryException in case the segment category is invalid
- */
- private Segment createSegmentFor(Fragment fragment, int index) throws BadLocationException, BadPositionCategoryException {
-
- int offset= 0;
- if (index > 0) {
- Position[] segments= getSegments();
- Segment segment= (Segment) segments[index - 1];
- offset= segment.getOffset() + segment.getLength();
- }
-
- Segment segment= new Segment(offset, 0);
- segment.fragment= fragment;
- fragment.segment= segment;
- addPosition(fSegmentsCategory, segment);
- return segment;
- }
-
- /**
- * Adds the given range of the master document to this projection document.
- *
- * @param offsetInMaster offset of the master document range
- * @param lengthInMaster length of the master document range
- * @param masterDocumentEvent the master document event that causes this
- * projection change or <code>null</code> if none
- * @throws BadLocationException if the given range is invalid in the master
- * document
- */
- private void internalAddMasterDocumentRange(int offsetInMaster, int lengthInMaster, DocumentEvent masterDocumentEvent) throws BadLocationException {
-
- if (lengthInMaster == 0)
- return;
-
- try {
-
- Position[] fragments= getFragments();
- int index= fMasterDocument.computeIndexInCategory(fFragmentsCategory, offsetInMaster);
-
- Fragment left= null;
- Fragment right= null;
-
- if (index < fragments.length) {
- if (offsetInMaster == fragments[index].offset)
- throw new IllegalArgumentException("overlaps with existing fragment"); //$NON-NLS-1$
- if (offsetInMaster + lengthInMaster == fragments[index].offset)
- right= (Fragment) fragments[index];
- }
-
- if (0 < index && index <= fragments.length) {
- Fragment fragment= (Fragment) fragments[index - 1];
- if (fragment.includes(offsetInMaster))
- throw new IllegalArgumentException("overlaps with existing fragment"); //$NON-NLS-1$
- if (fragment.getOffset() + fragment.getLength() == offsetInMaster)
- left= fragment;
- }
-
- int offsetInSlave= 0;
- if (index > 0) {
- Fragment fragment= (Fragment) fragments[index - 1];
- Segment segment= fragment.segment;
- offsetInSlave= segment.getOffset() + segment.getLength();
- }
-
- ProjectionDocumentEvent event= new ProjectionDocumentEvent(this, offsetInSlave, 0, fMasterDocument.get(offsetInMaster, lengthInMaster), offsetInMaster, lengthInMaster, masterDocumentEvent);
- super.fireDocumentAboutToBeChanged(event);
-
- // check for neighboring fragment
- if (left != null && right != null) {
-
- int endOffset= right.getOffset() + right.getLength();
- left.setLength(endOffset - left.getOffset());
- left.segment.setLength(left.segment.getLength() + right.segment.getLength());
-
- removePosition(fSegmentsCategory, right.segment);
- fMasterDocument.removePosition(fFragmentsCategory, right);
-
- } else if (left != null) {
- int endOffset= offsetInMaster +lengthInMaster;
- left.setLength(endOffset - left.getOffset());
- left.segment.markForStretch();
-
- } else if (right != null) {
- right.setOffset(right.getOffset() - lengthInMaster);
- right.setLength(right.getLength() + lengthInMaster);
- right.segment.markForStretch();
-
- } else {
- // create a new segment
- Fragment fragment= new Fragment(offsetInMaster, lengthInMaster);
- fMasterDocument.addPosition(fFragmentsCategory, fragment);
- Segment segment= createSegmentFor(fragment, index);
- segment.markForStretch();
- }
-
- getTracker().replace(event.getOffset(), event.getLength(), event.getText());
- super.fireDocumentChanged(event);
-
- } catch (BadPositionCategoryException x) {
- internalError();
- }
- }
-
- /**
- * Finds the fragment of the master document that represents the given range.
- *
- * @param offsetInMaster the offset of the range in the master document
- * @param lengthInMaster the length of the range in the master document
- * @return the fragment representing the given master document range
- */
- private Fragment findFragment(int offsetInMaster, int lengthInMaster) {
- Position[] fragments= getFragments();
- for (int i= 0; i < fragments.length; i++) {
- Fragment f= (Fragment) fragments[i];
- if (f.getOffset() <= offsetInMaster && offsetInMaster + lengthInMaster <= f.getOffset() + f.getLength())
- return f;
- }
- return null;
- }
-
- /**
- * Removes the given range of the master document from this projection
- * document.
- *
- * @param offsetInMaster the offset of the range in the master document
- * @param lengthInMaster the length of the range in the master document
- *
- * @throws BadLocationException if the given range is not valid in the
- * master document
- * @throws IllegalArgumentException if the given range is not projected in
- * this projection document or is not completely comprised by
- * an existing fragment
- */
- private void internalRemoveMasterDocumentRange(int offsetInMaster, int lengthInMaster) throws BadLocationException {
- try {
-
- IRegion imageRegion= fMapping.toExactImageRegion(new Region(offsetInMaster, lengthInMaster));
- if (imageRegion == null)
- throw new IllegalArgumentException();
-
- Fragment fragment= findFragment(offsetInMaster, lengthInMaster);
- if (fragment == null)
- throw new IllegalArgumentException();
-
- ProjectionDocumentEvent event= new ProjectionDocumentEvent(this, imageRegion.getOffset(), imageRegion.getLength(), null, offsetInMaster, lengthInMaster);
- super.fireDocumentAboutToBeChanged(event);
-
- if (fragment.getOffset() == offsetInMaster) {
- fragment.setOffset(offsetInMaster + lengthInMaster);
- fragment.setLength(fragment.getLength() - lengthInMaster);
- } else if (fragment.getOffset() + fragment.getLength() == offsetInMaster + lengthInMaster) {
- fragment.setLength(fragment.getLength() - lengthInMaster);
- } else {
- // split fragment into three fragments, let position updater remove it
-
- // add fragment for the region to be removed
- Fragment newFragment= new Fragment(offsetInMaster, lengthInMaster);
- Segment segment= new Segment(imageRegion.getOffset(), imageRegion.getLength());
- newFragment.segment= segment;
- segment.fragment= newFragment;
- fMasterDocument.addPosition(fFragmentsCategory, newFragment);
- addPosition(fSegmentsCategory, segment);
-
- // add fragment for the remainder right of the deleted range in the original fragment
- int offset= offsetInMaster + lengthInMaster;
- newFragment= new Fragment(offset, fragment.getOffset() + fragment.getLength() - offset);
- offset= imageRegion.getOffset() + imageRegion.getLength();
- segment= new Segment(offset, fragment.segment.getOffset() + fragment.segment.getLength() - offset);
- newFragment.segment= segment;
- segment.fragment= newFragment;
- fMasterDocument.addPosition(fFragmentsCategory, newFragment);
- addPosition(fSegmentsCategory, segment);
-
- // adjust length of initial fragment (the left one)
- fragment.setLength(offsetInMaster - fragment.getOffset());
- fragment.segment.setLength(imageRegion.getOffset() - fragment.segment.getOffset());
- }
-
- getTracker().replace(event.getOffset(), event.getLength(), event.getText());
- super.fireDocumentChanged(event);
-
- } catch (BadPositionCategoryException x) {
- internalError();
- }
- }
-
- /**
- * Returns the sequence of all master document regions with are contained in the given master document
- * range and which are not yet part of this projection document.
- *
- * @param offsetInMaster the range offset in the master document
- * @param lengthInMaster the range length in the master document
- * @return the sequence of regions which are not yet part of the projection document
- * @throws BadLocationException in case the given range is invalid in the master document
- */
- public final IRegion[] computeUnprojectedMasterRegions(int offsetInMaster, int lengthInMaster) throws BadLocationException {
-
- IRegion[] fragments= null;
- IRegion imageRegion= fMapping.toImageRegion(new Region(offsetInMaster, lengthInMaster));
- if (imageRegion != null)
- fragments= fMapping.toExactOriginRegions(imageRegion);
-
- if (fragments == null || fragments.length == 0)
- return new IRegion[] { new Region(offsetInMaster, lengthInMaster) };
-
- List gaps= new ArrayList();
-
- IRegion region= fragments[0];
- if (offsetInMaster < region.getOffset())
- gaps.add(new Region(offsetInMaster, region.getOffset() - offsetInMaster));
-
- for (int i= 0; i < fragments.length - 1; i++) {
- IRegion left= fragments[i];
- IRegion right= fragments[i + 1];
- int leftEnd= left.getOffset() + left.getLength();
- if (leftEnd < right.getOffset())
- gaps.add(new Region(leftEnd, right.getOffset() - leftEnd));
- }
-
- region= fragments[fragments.length - 1];
- int leftEnd= region.getOffset() + region.getLength();
- int rightEnd= offsetInMaster + lengthInMaster;
- if (leftEnd < rightEnd)
- gaps.add(new Region(leftEnd, rightEnd - leftEnd));
-
- IRegion[] result= new IRegion[gaps.size()];
- gaps.toArray(result);
- return result;
- }
-
- /**
- * Ensures that the given range of the master document is part of this
- * projection document.
- *
- * @param offsetInMaster the offset of the master document range
- * @param lengthInMaster the length of the master document range
- * @throws BadLocationException in case the master event is not valid
- */
- public void addMasterDocumentRange(int offsetInMaster, int lengthInMaster) throws BadLocationException {
- addMasterDocumentRange(offsetInMaster, lengthInMaster, null);
- }
-
- /**
- * Ensures that the given range of the master document is part of this
- * projection document.
- *
- * @param offsetInMaster the offset of the master document range
- * @param lengthInMaster the length of the master document range
- * @param masterDocumentEvent the master document event which causes this
- * projection change, or <code>null</code> if none
- * @throws BadLocationException in case the master event is not valid
- */
- private void addMasterDocumentRange(int offsetInMaster, int lengthInMaster, DocumentEvent masterDocumentEvent) throws BadLocationException {
-
- IRegion[] gaps= computeUnprojectedMasterRegions(offsetInMaster, lengthInMaster);
- if (gaps == null)
- return;
-
- for (int i= 0; i < gaps.length; i++) {
- IRegion gap= gaps[i];
- internalAddMasterDocumentRange(gap.getOffset(), gap.getLength(), masterDocumentEvent);
- }
- }
-
- /**
- * Ensures that the given range of the master document is not part of this
- * projection document.
- *
- * @param offsetInMaster the offset of the master document range
- * @param lengthInMaster the length of the master document range
- * @throws BadLocationException in case the master event is not valid
- */
- public void removeMasterDocumentRange(int offsetInMaster, int lengthInMaster) throws BadLocationException {
- IRegion[] fragments= computeProjectedMasterRegions(offsetInMaster, lengthInMaster);
- if (fragments == null || fragments.length == 0)
- return;
-
- for (int i= 0; i < fragments.length; i++) {
- IRegion fragment= fragments[i];
- internalRemoveMasterDocumentRange(fragment.getOffset(), fragment.getLength());
- }
- }
-
- /**
- * Returns the sequence of all master document regions with are contained in the given master document
- * range and which are part of this projection document. May return <code>null</code> if no such
- * regions exist.
- *
- * @param offsetInMaster the range offset in the master document
- * @param lengthInMaster the range length in the master document
- * @return the sequence of regions which are part of the projection document or <code>null</code>
- * @throws BadLocationException in case the given range is invalid in the master document
- */
- final public IRegion[] computeProjectedMasterRegions(int offsetInMaster, int lengthInMaster) throws BadLocationException {
- IRegion imageRegion= fMapping.toImageRegion(new Region(offsetInMaster, lengthInMaster));
- if (imageRegion != null)
- return fMapping.toExactOriginRegions(imageRegion);
- return null;
- }
-
- /**
- * Returns whether this project is being updated.
- *
- * @return <code>true</code> if the document is updating
- */
- protected boolean isUpdating() {
- return fIsUpdating;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#replace(int, int, java.lang.String)
- */
- public void replace(int offset, int length, String text) throws BadLocationException {
- try {
- fIsUpdating= true;
- if (fMasterDocumentExtension != null)
- fMasterDocumentExtension.stopPostNotificationProcessing();
-
- super.replace(offset, length, text);
-
- } finally {
- fIsUpdating= false;
- if (fMasterDocumentExtension != null)
- fMasterDocumentExtension.resumePostNotificationProcessing();
- }
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#set(java.lang.String)
- */
- public void set(String text) {
- try {
- fIsUpdating= true;
- if (fMasterDocumentExtension != null)
- fMasterDocumentExtension.stopPostNotificationProcessing();
-
- super.set(text);
-
- } finally {
- fIsUpdating= false;
- if (fMasterDocumentExtension != null)
- fMasterDocumentExtension.resumePostNotificationProcessing();
- }
- }
-
- /**
- * Transforms a document event of the master document into a projection
- * document based document event.
- *
- * @param masterEvent the master document event
- * @return the slave document event
- * @throws BadLocationException in case the master event is not valid
- */
- private ProjectionDocumentEvent normalize(DocumentEvent masterEvent) throws BadLocationException {
- if (!isUpdating()) {
- IRegion imageRegion= fMapping.toExactImageRegion(new Region(masterEvent.getOffset(), masterEvent.getLength()));
- if (imageRegion != null)
- return new ProjectionDocumentEvent(this, imageRegion.getOffset(), imageRegion.getLength(), masterEvent.getText(), masterEvent);
- return null;
- } else {
- ProjectionDocumentEvent event= new ProjectionDocumentEvent(this, fOriginalEvent.getOffset(), fOriginalEvent.getLength(), fOriginalEvent.getText(), masterEvent);
- fOriginalEvent= null;
- return event;
- }
- }
-
- private boolean includes(IRegion region, int offset) {
- if (region == null)
- return false;
- return region.getOffset() <= offset && offset <= region.getOffset() + region.getLength();
- }
-
- private boolean includes(IRegion region1, int offset, int length) {
- if (region1 == null)
- return false;
- return region1.getOffset() <= offset && (offset + length <= region1.getOffset() + region1.getLength());
- }
-
- /**
- * Compute the gaps that must be covered in order to ensure that the range affected
- * by the given document event is completely projected.
- *
- * @param event the master document event
- * @return the gaps to be covered
- */
- private IRegion[] computeCoverageGap(DocumentEvent event) {
-
- IRegion left= null;
- List gaps= new ArrayList();
-
- try {
- // deal with the beginning of the event region
- int imageOffset= fMapping.toImageOffset(event.getOffset());
- if (imageOffset == -1) {
- Position[] fragments= getFragments();
- int index= fMasterDocument.computeIndexInCategory(fFragmentsCategory, event.getOffset());
- if (index < fragments.length) {
- Fragment fragment= (Fragment) fragments[index];
- left= new Region(event.getOffset(), fragment.getOffset() - event.getOffset());
- gaps.add(left);
- }
- }
-
- // the event itself
- if (!includes(left, event.getOffset(), event.getLength()))
- gaps.add(new Region(event.getOffset(), event.getLength()));
-
- // deal with the end of the event region
- int inclusiveOriginEndOffset= event.getOffset() + Math.max(0, event.getLength() - 1);
- int inclusiveImageEndOffset= fMapping.toImageOffset(inclusiveOriginEndOffset);
- if (inclusiveImageEndOffset == -1 && !includes(left, inclusiveOriginEndOffset)) {
- int index= fMasterDocument.computeIndexInCategory(fFragmentsCategory, inclusiveOriginEndOffset);
- if (0 < index) {
- Position[] fragments= getFragments();
- Fragment fragment= (Fragment) fragments[index - 1];
- gaps.add(new Region(fragment.getOffset(), inclusiveOriginEndOffset + 1 - fragment.getOffset()));
- }
- }
-
- } catch (BadLocationException e) {
- internalError();
- } catch (BadPositionCategoryException e) {
- internalError();
- }
-
- IRegion[] result= new IRegion[gaps.size()];
- gaps.toArray(result);
- return result;
- }
-
- /**
- * Ensures that when the master event effects this projection document, that the whole region described by the
- * event is part of this projection document.
- *
- * @param masterEvent the master document event
- * @return <code>true</code> if masterEvent affects this projection document
- * @throws BadLocationException in case the master event is not valid
- */
- protected final boolean adaptProjectionToMasterChange(DocumentEvent masterEvent) throws BadLocationException {
- if (!isUpdating() && fFragmentsUpdater.affectsPositions(masterEvent) || fIsAutoExpanding) {
-
- IRegion[] gaps= computeCoverageGap(masterEvent);
- for (int i= 0; i < gaps.length; i++) {
- IRegion gap= gaps[i];
- addMasterDocumentRange(gap.getOffset(), gap.getLength(), masterEvent);
- }
- return true;
-
- } else if (fMapping.getImageLength() == 0 && masterEvent.getLength() == 0) {
-
- Position[] fragments= getFragments();
- if (fragments.length == 0) {
- // there is no segment in this projection document, thus one must be created
- // need to bypass the usual infrastructure as the new segment/fragment would be of length 0 and thus the segmentation be not well formed
- try {
- Fragment fragment= new Fragment(0, 0);
- fMasterDocument.addPosition(fFragmentsCategory, fragment);
- createSegmentFor(fragment, 0);
- } catch (BadPositionCategoryException x) {
- internalError();
- }
- }
- }
-
- return isUpdating();
- }
-
- /**
- * When called, this projection document is informed about a forthcoming
- * change of its master document. This projection document checks whether
- * the master document change affects it and if so informs all document
- * listeners.
- *
- * @param masterEvent the master document event
- */
- public void masterDocumentAboutToBeChanged(DocumentEvent masterEvent) {
- try {
-
- boolean assertNotNull= adaptProjectionToMasterChange(masterEvent);
- fSlaveEvent= normalize(masterEvent);
- if (assertNotNull && fSlaveEvent == null)
- internalError();
-
- fMasterEvent= masterEvent;
- if (fSlaveEvent != null)
- delayedFireDocumentAboutToBeChanged();
-
- } catch (BadLocationException e) {
- internalError();
- }
- }
-
- /**
- * When called, this projection document is informed about a change of its
- * master document. If this projection document is affected it informs all
- * of its document listeners.
- *
- * @param masterEvent the master document event
- */
- public void masterDocumentChanged(DocumentEvent masterEvent) {
- if ( !isUpdating() && masterEvent == fMasterEvent) {
- if (fSlaveEvent != null) {
- try {
- getTracker().replace(fSlaveEvent.getOffset(), fSlaveEvent.getLength(), fSlaveEvent.getText());
- fireDocumentChanged(fSlaveEvent);
- } catch (BadLocationException e) {
- internalError();
- }
- } else if (ensureWellFormedSegmentation(masterEvent.getOffset()))
- fMapping.projectionChanged();
- }
- }
-
- /*
- * @see org.eclipse.jface.text.AbstractDocument#fireDocumentAboutToBeChanged(org.eclipse.jface.text.DocumentEvent)
- */
- protected void fireDocumentAboutToBeChanged(DocumentEvent event) {
- fOriginalEvent= event;
- // delay it until there is a notification from the master document
- // at this point, it is expensive to construct the master document information
- }
-
- /**
- * Fires the slave document event as about-to-be-changed event to all registered listeners.
- */
- private void delayedFireDocumentAboutToBeChanged() {
- super.fireDocumentAboutToBeChanged(fSlaveEvent);
- }
-
- /**
- * Ignores the given event and sends the semantically equal slave document event instead.
- *
- * @param event the event to be ignored
- */
- protected void fireDocumentChanged(DocumentEvent event) {
- super.fireDocumentChanged(fSlaveEvent);
- }
-
- /*
- * @see org.eclipse.jface.text.AbstractDocument#updateDocumentStructures(org.eclipse.jface.text.DocumentEvent)
- */
- protected void updateDocumentStructures(DocumentEvent event) {
- super.updateDocumentStructures(event);
- ensureWellFormedSegmentation(computeAnchor(event));
- fMapping.projectionChanged();
- }
-
- private int computeAnchor(DocumentEvent event) {
- if (event instanceof ProjectionDocumentEvent) {
- ProjectionDocumentEvent slave= (ProjectionDocumentEvent) event;
- if (ProjectionDocumentEvent.CONTENT_CHANGE == slave.getChangeType()) {
- DocumentEvent master= slave.getMasterEvent();
- if (master != null)
- return master.getOffset();
- }
- }
- return -1;
- }
-
- private boolean ensureWellFormedSegmentation(int anchorOffset) {
- boolean changed= false;
- Position[] segments= getSegments();
- for (int i= 0; i < segments.length; i++) {
- Segment segment= (Segment) segments[i];
- if (segment.isDeleted() || segment.getLength() == 0) {
- try {
- removePosition(fSegmentsCategory, segment);
- fMasterDocument.removePosition(fFragmentsCategory, segment.fragment);
- changed= true;
- } catch (BadPositionCategoryException e) {
- internalError();
- }
- } else if (i < segments.length - 1) {
- Segment next= (Segment) segments[i + 1];
- if (next.isDeleted() || next.getLength() == 0)
- continue;
- Fragment fragment= segment.fragment;
- if (fragment.getOffset() + fragment.getLength() == next.fragment.getOffset()) {
- // join fragments and their corresponding segments
- segment.setLength(segment.getLength() + next.getLength());
- fragment.setLength(fragment.getLength() + next.fragment.getLength());
- next.delete();
- }
- }
- }
-
- if (changed && anchorOffset != -1) {
- Position[] changedSegments= getSegments();
- if (changedSegments == null || changedSegments.length == 0) {
- Fragment fragment= new Fragment(anchorOffset, 0);
- try {
- fMasterDocument.addPosition(fFragmentsCategory, fragment);
- createSegmentFor(fragment, 0);
- } catch (BadLocationException e) {
- internalError();
- } catch (BadPositionCategoryException e) {
- internalError();
- }
- }
- }
-
- return changed;
- }
-
- /*
- * @see IDocumentExtension#registerPostNotificationReplace(IDocumentListener, IDocumentExtension.IReplace)
- */
- public void registerPostNotificationReplace(IDocumentListener owner, IDocumentExtension.IReplace replace) {
- if (!isUpdating())
- throw new UnsupportedOperationException();
- super.registerPostNotificationReplace(owner, replace);
- }
-
- /**
- * Sets the auto expand mode for this document.
- *
- * @param autoExpandMode <code>true</code> if auto-expanding
- */
- public void setAutoExpandMode(boolean autoExpandMode) {
- fIsAutoExpanding= autoExpandMode;
- }
-
- /**
- * Replaces all master document ranges with the given master document range.
- *
- * @param offsetInMaster the offset in the master document
- * @param lengthInMaster the length in the master document
- * @throws BadLocationException if the given range of the master document is not valid
- */
- public void replaceMasterDocumentRanges(int offsetInMaster, int lengthInMaster) throws BadLocationException {
- try {
-
- ProjectionDocumentEvent event= new ProjectionDocumentEvent(this, 0, fMapping.getImageLength(), fMasterDocument.get(offsetInMaster, lengthInMaster), offsetInMaster, lengthInMaster);
- super.fireDocumentAboutToBeChanged(event);
-
- Position[] fragments= getFragments();
- for (int i= 0; i < fragments.length; i++) {
- Fragment fragment= (Fragment) fragments[i];
- fMasterDocument.removePosition(fFragmentsCategory, fragment);
- removePosition(fSegmentsCategory, fragment.segment);
- }
-
- Fragment fragment= new Fragment(offsetInMaster, lengthInMaster);
- Segment segment= new Segment(0, 0);
- segment.fragment= fragment;
- fragment.segment= segment;
- fMasterDocument.addPosition(fFragmentsCategory, fragment);
- addPosition(fSegmentsCategory, segment);
-
- getTracker().set(fMasterDocument.get(offsetInMaster, lengthInMaster));
- super.fireDocumentChanged(event);
-
- } catch (BadPositionCategoryException x) {
- internalError();
- }
- }
-}
diff --git a/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocumentEvent.java b/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocumentEvent.java
deleted file mode 100644
index 79125c982..000000000
--- a/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocumentEvent.java
+++ /dev/null
@@ -1,137 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.projection;
-
-
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.SlaveDocumentEvent;
-
-
-/**
- * This event is sent out by an
- * {@link org.eclipse.jface.text.projection.ProjectionDocument}when it is
- * manipulated. The manipulation is either a content manipulation or a change of
- * the projection between the master and the slave. Clients can determine the
- * type of change by asking the projection document event for its change type
- * (see {@link #getChangeType()}) and comparing it with the predefined types
- * {@link #PROJECTION_CHANGE}and {@link #CONTENT_CHANGE}.
- * <p>
- * Clients are not supposed to create instances of this class. Instances are
- * created by {@link org.eclipse.jface.text.projection.ProjectionDocument}
- * instances. This class is not intended to be subclassed.
- *
- * @since 3.0
- */
-public class ProjectionDocumentEvent extends SlaveDocumentEvent {
-
- /** The change type indicating a projection change */
- public final static Object PROJECTION_CHANGE= new Object();
- /** The change type indicating a content change */
- public final static Object CONTENT_CHANGE= new Object();
-
- /** The change type */
- private Object fChangeType;
- /** The offset of the change in the master document */
- private int fMasterOffset= -1;
- /** The length of the change in the master document */
- private int fMasterLength= -1;
-
- /**
- * Creates a new content change event caused by the given master document
- * change. Instances created using this constructor return <code>-1</code>
- * when calling <code>getMasterOffset</code> or
- * <code>getMasterLength</code>. This information can be obtained by
- * accessing the master event.
- *
- * @param doc the changed projection document
- * @param offset the offset in the projection document
- * @param length the length in the projection document
- * @param text the replacement text
- * @param masterEvent the original master event
- */
- public ProjectionDocumentEvent(IDocument doc, int offset, int length, String text, DocumentEvent masterEvent) {
- super(doc, offset, length, text, masterEvent);
- fChangeType= CONTENT_CHANGE;
- }
-
- /**
- * Creates a new projection change event for the given properties. Instances
- * created with this constructor return the given master document offset and
- * length but do not have an associated master document event.
- *
- * @param doc the projection document
- * @param offset the offset in the projection document
- * @param length the length in the projection document
- * @param text the replacement text
- * @param masterOffset the offset in the master document
- * @param masterLength the length in the master document
- */
- public ProjectionDocumentEvent(IDocument doc, int offset, int length, String text, int masterOffset, int masterLength) {
- super(doc, offset, length, text, null);
- fChangeType= PROJECTION_CHANGE;
- fMasterOffset= masterOffset;
- fMasterLength= masterLength;
- }
-
- /**
- * Creates a new projection document event for the given properties. The
- * projection change is caused by a manipulation of the master document. In
- * order to accommodate the master document change, the projection document
- * had to change the projection. Instances created with this constructor
- * return the given master document offset and length and also have an
- * associated master document event.
- *
- * @param doc the projection document
- * @param offset the offset in the projection document
- * @param length the length in the projection document
- * @param text the replacement text
- * @param masterOffset the offset in the master document
- * @param masterLength the length in the master document
- * @param masterEvent the master document event
- */
- public ProjectionDocumentEvent(IDocument doc, int offset, int length, String text, int masterOffset, int masterLength, DocumentEvent masterEvent) {
- super(doc, offset, length, text, masterEvent);
- fChangeType= PROJECTION_CHANGE;
- fMasterOffset= masterOffset;
- fMasterLength= masterLength;
- }
-
- /**
- * Returns the change type of this event. This is either {@link #PROJECTION_CHANGE} or
- * {@link #CONTENT_CHANGE}.
- *
- * @return the change type of this event
- */
- public Object getChangeType() {
- return fChangeType;
- }
-
- /**
- * Returns the offset of the master document range that has been added or removed in case this
- * event describes a projection change, otherwise it returns <code>-1</code>.
- *
- * @return the master document offset of the projection change or <code>-1</code>
- */
- public int getMasterOffset() {
- return fMasterOffset;
- }
-
- /**
- * Returns the length of the master document range that has been added or removed in case this event
- * describes a projection changed, otherwise <code>-1</code>.
- *
- * @return the master document length of the projection change or <code>-1</code>
- */
- public int getMasterLength() {
- return fMasterLength;
- }
-}
diff --git a/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocumentManager.java b/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocumentManager.java
deleted file mode 100644
index 4fe4c6a2c..000000000
--- a/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionDocumentManager.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.projection;
-
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IDocumentInformationMapping;
-import org.eclipse.jface.text.IDocumentListener;
-import org.eclipse.jface.text.ISlaveDocumentManager;
-import org.eclipse.jface.text.ISlaveDocumentManagerExtension;
-
-
-/**
- * A <code>ProjectionDocumentManager</code> is one particular implementation
- * of {@link org.eclipse.jface.text.ISlaveDocumentManager}. This manager
- * creates so called projection documents (see
- * {@link org.eclipse.jface.text.projection.ProjectionDocument}as slave
- * documents for given master documents.
- * <p>
- * A projection document represents a particular projection of the master
- * document and is accordingly adapted to changes of the master document. Vice
- * versa, the master document is accordingly adapted to changes of its slave
- * documents. The manager does not maintain any particular management structure
- * but utilizes mechanisms given by {@link org.eclipse.jface.text.IDocument}
- * such as position categories and position updaters.
- * <p>
- * Clients can instantiate this class. This class is not intended to be
- * subclassed.
- *
- * @since 3.0
- */
-public class ProjectionDocumentManager implements IDocumentListener, ISlaveDocumentManager, ISlaveDocumentManagerExtension {
-
- /** Registry for master documents and their projection documents. */
- private Map fProjectionRegistry= new HashMap();
-
- /**
- * Registers the given projection document for the given master document.
- *
- * @param master the master document
- * @param projection the projection document
- */
- private void add(IDocument master, ProjectionDocument projection) {
- List list= (List) fProjectionRegistry.get(master);
- if (list == null) {
- list= new ArrayList(1);
- fProjectionRegistry.put(master, list);
- }
- list.add(projection);
- }
-
- /**
- * Unregisters the given projection document from its master.
- *
- * @param master the master document
- * @param projection the projection document
- */
- private void remove(IDocument master, ProjectionDocument projection) {
- List list= (List) fProjectionRegistry.get(master);
- if (list != null) {
- list.remove(projection);
- if (list.size() == 0)
- fProjectionRegistry.remove(master);
- }
- }
-
- /**
- * Returns whether the given document is a master document.
- *
- * @param master the document
- * @return <code>true</code> if the given document is a master document known to this manager
- */
- private boolean hasProjection(IDocument master) {
- return (fProjectionRegistry.get(master) instanceof List);
- }
-
- /**
- * Returns an iterator enumerating all projection documents registered for the given document or
- * <code>null</code> if the document is not a known master document.
- *
- * @param master the document
- * @return an iterator for all registered projection documents or <code>null</code>
- */
- private Iterator getProjectionsIterator(IDocument master) {
- List list= (List) fProjectionRegistry.get(master);
- if (list != null)
- return list.iterator();
- return null;
- }
-
- /**
- * Informs all projection documents of the master document that issued the given document event.
- *
- * @param about indicates whether the change is about to happen or happened already
- * @param masterEvent the document event which will be processed to inform the projection documents
- */
- protected void fireDocumentEvent(boolean about, DocumentEvent masterEvent) {
- IDocument master= masterEvent.getDocument();
- Iterator e= getProjectionsIterator(master);
- if (e == null)
- return;
-
- while (e.hasNext()) {
- ProjectionDocument document= (ProjectionDocument) e.next();
- if (about)
- document.masterDocumentAboutToBeChanged(masterEvent);
- else
- document.masterDocumentChanged(masterEvent);
- }
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentListener#documentChanged(org.eclipse.jface.text.DocumentEvent)
- */
- public void documentChanged(DocumentEvent event) {
- fireDocumentEvent(false, event);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentListener#documentAboutToBeChanged(org.eclipse.jface.text.DocumentEvent)
- */
- public void documentAboutToBeChanged(DocumentEvent event) {
- fireDocumentEvent(true, event);
- }
-
- /*
- * @see org.eclipse.jface.text.ISlaveDocumentManager#createMasterSlaveMapping(org.eclipse.jface.text.IDocument)
- */
- public IDocumentInformationMapping createMasterSlaveMapping(IDocument slave) {
- if (slave instanceof ProjectionDocument) {
- ProjectionDocument projectionDocument= (ProjectionDocument) slave;
- return projectionDocument.getProjectionMapping();
- }
- return null;
- }
-
- /*
- * @see org.eclipse.jface.text.ISlaveDocumentManager#createSlaveDocument(org.eclipse.jface.text.IDocument)
- */
- public IDocument createSlaveDocument(IDocument master) {
- if (!hasProjection(master))
- master.addDocumentListener(this);
- ProjectionDocument slave= createProjectionDocument(master);
- add(master, slave);
- return slave;
- }
-
- /**
- * Factory method for projection documents.
- *
- * @param master the master document
- * @return the newly created projection document
- */
- protected ProjectionDocument createProjectionDocument(IDocument master) {
- return new ProjectionDocument(master);
- }
-
- /*
- * @see org.eclipse.jface.text.ISlaveDocumentManager#freeSlaveDocument(org.eclipse.jface.text.IDocument)
- */
- public void freeSlaveDocument(IDocument slave) {
- if (slave instanceof ProjectionDocument) {
- ProjectionDocument projectionDocument= (ProjectionDocument) slave;
- IDocument master= projectionDocument.getMasterDocument();
- remove(master, projectionDocument);
- projectionDocument.dispose();
- if (!hasProjection(master))
- master.removeDocumentListener(this);
- }
- }
-
- /*
- * @see org.eclipse.jface.text.ISlaveDocumentManager#getMasterDocument(org.eclipse.jface.text.IDocument)
- */
- public IDocument getMasterDocument(IDocument slave) {
- if (slave instanceof ProjectionDocument)
- return ((ProjectionDocument) slave).getMasterDocument();
- return null;
- }
-
- /*
- * @see org.eclipse.jface.text.ISlaveDocumentManager#isSlaveDocument(org.eclipse.jface.text.IDocument)
- */
- public boolean isSlaveDocument(IDocument document) {
- return (document instanceof ProjectionDocument);
- }
-
- /*
- * @see org.eclipse.jface.text.ISlaveDocumentManager#setAutoExpandMode(org.eclipse.jface.text.IDocument, boolean)
- */
- public void setAutoExpandMode(IDocument slave, boolean autoExpanding) {
- if (slave instanceof ProjectionDocument)
- ((ProjectionDocument) slave).setAutoExpandMode(autoExpanding);
- }
-
- /*
- * @see org.eclipse.jface.text.ISlaveDocumentManagerExtension#getSlaveDocuments(org.eclipse.jface.text.IDocument)
- */
- public IDocument[] getSlaveDocuments(IDocument master) {
- List list= (List) fProjectionRegistry.get(master);
- if (list != null) {
- IDocument[] result= new IDocument[list.size()];
- list.toArray(result);
- return result;
- }
- return null;
- }
-}
diff --git a/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionMapping.java b/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionMapping.java
deleted file mode 100644
index ede2945c6..000000000
--- a/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionMapping.java
+++ /dev/null
@@ -1,626 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.projection;
-
-
-import org.eclipse.jface.text.Assert;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.BadPositionCategoryException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IDocumentInformationMapping;
-import org.eclipse.jface.text.IDocumentInformationMappingExtension;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.Region;
-
-
-/**
- * Internal class. Do not use. Only public for testing purposes.
- * <p>
- * Implementation of {@link org.eclipse.jface.text.IDocumentInformationMapping}
- * for the projection mapping between a master and a slave document.
- *
- * @since 3.0
- */
-public class ProjectionMapping implements IDocumentInformationMapping , IDocumentInformationMappingExtension, IMinimalMapping {
-
- private static final int LEFT= -1;
- private static final int NONE= 0;
- private static final int RIGHT= +1;
-
- /** The master document */
- private IDocument fMasterDocument;
- /** The position category used to manage the projection fragments inside the master document */
- private String fFragmentsCategory;
- /** The projection document */
- private IDocument fSlaveDocument;
- /** The position category to manage the projection segments inside the slave document. */
- private String fSegmentsCategory;
- /** Cached segments */
- private Position[] fCachedSegments;
- /** Cached fragments */
- private Position[] fCachedFragments;
- /** Thread local indices */
- private static ThreadLocal sfIndices= new ThreadLocal() {
- protected Object initialValue() {
- return new int[2];
- }
- };
-
-
- /**
- * Creates a new mapping between the given parent document and the given projection document.
- *
- * @param masterDocument the master document
- * @param fragmentsCategory the position category of the parent document used to manage the projected regions
- * @param slaveDocument the slave document
- * @param segmentsCategory the position category of the projection document used to manage the fragments
- */
- public ProjectionMapping(IDocument masterDocument, String fragmentsCategory, IDocument slaveDocument, String segmentsCategory) {
- fMasterDocument= masterDocument;
- fFragmentsCategory= fragmentsCategory;
- fSlaveDocument= slaveDocument;
- fSegmentsCategory= segmentsCategory;
- }
-
- /**
- * Notifies this projection mapping that there was a projection change.
- */
- public void projectionChanged() {
- fCachedSegments= null;
- fCachedFragments= null;
- }
-
- private Position[] getSegments() {
- if (fCachedSegments == null) {
- try {
- fCachedSegments= fSlaveDocument.getPositions(fSegmentsCategory);
- } catch (BadPositionCategoryException e) {
- return new Position[0];
- }
- }
- return fCachedSegments;
- }
-
- private Position[] getFragments() {
- if (fCachedFragments == null) {
- try {
- fCachedFragments= fMasterDocument.getPositions(fFragmentsCategory);
- } catch (BadPositionCategoryException e) {
- return new Position[0];
- }
- }
- return fCachedFragments;
- }
-
- private int findSegmentIndex(int offset) throws BadLocationException {
- Position[] segments= getSegments();
- if (segments.length == 0) {
- if (offset > 0)
- throw new BadLocationException();
- return -1;
- }
-
- try {
- int index= fSlaveDocument.computeIndexInCategory(fSegmentsCategory, offset);
- if (index == segments.length && offset > (segments[index-1].offset + segments[index-1].length))
- throw new BadLocationException();
-
- if (index < segments.length && offset == segments[index].offset)
- return index;
-
- if (index > 0)
- index--;
-
- return index;
-
- } catch (BadPositionCategoryException e) {
- throw new IllegalStateException();
- }
- }
-
- private Segment findSegment(int offset) throws BadLocationException {
-
- if (offset < 0 || getImageLength() < offset)
- throw new BadLocationException();
-
- int index= findSegmentIndex(offset);
- if (index == -1) {
-
- Segment s= new Segment(0, 0);
- Fragment f= new Fragment(0, 0);
- s.fragment= f;
- f.segment= s;
- return s;
- }
-
- Position[] segments= getSegments();
- return (Segment) segments[index];
- }
-
- private int findFragmentIndex(int offset, int extensionDirection) throws BadLocationException {
- try {
-
- Position[] fragments= getFragments();
- if (fragments.length == 0)
- return -1;
-
- int index= fMasterDocument.computeIndexInCategory(fFragmentsCategory, offset);
-
- if (index < fragments.length && offset == fragments[index].offset)
- return index;
-
- if (0 < index && index <= fragments.length && fragments[index - 1].includes(offset))
- return index - 1;
-
- switch(extensionDirection) {
- case LEFT:
- return Math.max(index - 1, 0);
- case RIGHT:
- return Math.min(index, fragments.length - 1);
- }
-
- return -1;
-
- } catch (BadPositionCategoryException e) {
- throw new IllegalStateException();
- }
- }
-
- private Fragment findFragment(int offset) throws BadLocationException {
-
- int length= fMasterDocument.getLength();
- if (offset < 0 || length < offset)
- throw new BadLocationException();
-
- int index= findFragmentIndex(offset, NONE);
- Position[] fragments= getFragments();
- if (index == -1) {
- if (fragments.length > 0) {
- Fragment last= (Fragment) fragments[fragments.length - 1];
- if (last.getOffset() + last.getLength() == offset)
- return last;
- }
- return null;
- }
- return (Fragment) fragments[index];
- }
-
- private void findFragmentIndices(IRegion region, boolean exact, int[] result) throws BadLocationException {
- int offset= region.getOffset();
- if (offset < 0 || fMasterDocument.getLength() < offset)
- throw new BadLocationException();
-
- int inclusiveEndOffset= region.getOffset() + region.getLength() - 1;
- if (inclusiveEndOffset < 0 || fMasterDocument.getLength() < inclusiveEndOffset)
- throw new BadLocationException();
-
- int startIndex= findFragmentIndex(offset, exact ? NONE : LEFT);
- if (startIndex == -1) {
- result[0]= -1;
- return;
- }
-
- int endIndex= findFragmentIndex(inclusiveEndOffset, exact ? NONE : RIGHT);
- if (endIndex == -1) {
- result[0]= -1;
- return;
- }
-
- Position[] fragments= getFragments();
- while (startIndex <= endIndex && !fragments[startIndex].overlapsWith(region.getOffset(), region.getLength()))
- ++startIndex;
-
- while (endIndex >= startIndex && !fragments[endIndex].overlapsWith(region.getOffset(), region.getLength()))
- --endIndex;
-
- if (startIndex > endIndex) {
- result[0]= -1;
- return;
- }
-
- result[0]= startIndex;
- result[1]= endIndex;
- }
-
- private IRegion toImageRegion(IRegion originRegion, boolean exact) throws BadLocationException {
- if (originRegion.getLength() == 0) {
- int imageOffset= toImageOffset(originRegion.getOffset());
- return imageOffset == -1 ? null : new Region(imageOffset, 0);
- }
-
- int[] indices= (int[]) sfIndices.get();
- findFragmentIndices(originRegion, exact, indices);
- if (indices[0] >= 0) {
-
- Position[] fragments= getFragments();
-
- // translate start offset
- Fragment fragment= (Fragment) fragments[indices[0]];
- int originOffset= originRegion.getOffset();
- int relative= originOffset - fragment.getOffset();
- if (relative < 0) {
- Assert.isTrue(!exact);
- relative= 0;
- }
- int imageOffset= fragment.segment.getOffset() + relative;
-
- // translate end offset
- fragment= (Fragment) fragments[indices[1]];
- int exclusiveOriginEndOffset= originRegion.getOffset() + originRegion.getLength();
- relative= exclusiveOriginEndOffset - fragment.getOffset();
- if (relative > fragment.getLength()) {
- Assert.isTrue(!exact);
- int delta= relative - fragment.getLength();
- relative -= delta;
- }
- int exclusiveImageEndOffset= fragment.segment.getOffset() + relative;
-
- return new Region(imageOffset, exclusiveImageEndOffset - imageOffset);
- }
-
- return null;
- }
-
- private IRegion createOriginStartRegion(Segment image, int offsetShift) {
- return new Region(image.fragment.getOffset() + offsetShift, image.fragment.getLength() - offsetShift);
- }
-
- private IRegion createOriginRegion(Segment image) {
- return new Region(image.fragment.getOffset(), image.fragment.getLength());
- }
-
- private IRegion createOriginEndRegion(Segment image, int lengthReduction) {
- return new Region(image.fragment.getOffset(), image.fragment.getLength() - lengthReduction);
- }
-
- private IRegion createImageStartRegion(Fragment origin, int offsetShift) {
- int shift= offsetShift > 0 ? offsetShift : 0;
- return new Region(origin.segment.getOffset() + shift, origin.segment.getLength() - shift);
- }
-
- private IRegion createImageRegion(Fragment origin) {
- return new Region(origin.segment.getOffset(), origin.segment.getLength());
- }
-
- private IRegion createImageEndRegion(Fragment origin, int lengthReduction) {
- int reduction= lengthReduction > 0 ? lengthReduction : 0;
- return new Region(origin.segment.getOffset(), origin.segment.getLength() - reduction);
- }
-
- private IRegion createOriginStartRegion(Fragment origin, int offsetShift) {
- int shift= offsetShift > 0 ? offsetShift : 0;
- return new Region(origin.getOffset() + shift, origin.getLength() - shift);
- }
-
- private IRegion createOriginRegion(Fragment origin) {
- return new Region(origin.getOffset(), origin.getLength());
- }
-
- private IRegion createOriginEndRegion(Fragment origin, int lengthReduction) {
- int reduction= lengthReduction > 0 ? lengthReduction : 0;
- return new Region(origin.getOffset(), origin.getLength() - reduction);
- }
-
- private IRegion getIntersectingRegion(IRegion left, IRegion right) {
- int offset= Math.max(left.getOffset(), right.getOffset());
- int exclusiveEndOffset= Math.min(left.getOffset() + left.getLength(), right.getOffset() + right.getLength());
- if (exclusiveEndOffset < offset)
- return null;
- return new Region(offset, exclusiveEndOffset - offset);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentInformationMapping#getCoverage()
- */
- public IRegion getCoverage() {
- Position[] fragments= getFragments();
- if (fragments != null && fragments.length > 0) {
- Position first=fragments[0];
- Position last= fragments[fragments.length -1];
- return new Region(first.offset, (last.offset + last.length) - first.offset);
- }
- return new Region(0, 0);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentInformationMapping#toOriginOffset(int)
- */
- public int toOriginOffset(int imageOffset) throws BadLocationException {
- Segment segment= findSegment(imageOffset);
- int relative= imageOffset - segment.offset;
- return segment.fragment.offset + relative;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentInformationMapping#toOriginRegion(org.eclipse.jface.text.IRegion)
- */
- public IRegion toOriginRegion(IRegion imageRegion) throws BadLocationException {
- int imageOffset= imageRegion.getOffset();
- int imageLength= imageRegion.getLength();
-
- if (imageLength == 0) {
- if (imageOffset == 0) {
- Position[] fragments= getFragments();
- if (fragments.length == 0 || (fragments.length == 1 && fragments[0].getOffset() == 0 && fragments[0].getLength() == 0))
- return new Region(0, fMasterDocument.getLength());
- }
- return new Region(toOriginOffset(imageOffset), 0);
- }
-
- int originOffset= toOriginOffset(imageOffset);
- int inclusiveImageEndOffset= imageOffset + imageLength -1;
- int inclusiveOriginEndOffset= toOriginOffset(inclusiveImageEndOffset);
-
- return new Region(originOffset, (inclusiveOriginEndOffset + 1) - originOffset);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentInformationMapping#toOriginLines(int)
- */
- public IRegion toOriginLines(int imageLine) throws BadLocationException {
- IRegion imageRegion= fSlaveDocument.getLineInformation(imageLine);
- IRegion originRegion= toOriginRegion(imageRegion);
-
- int originStartLine= fMasterDocument.getLineOfOffset(originRegion.getOffset());
- if (originRegion.getLength() == 0)
- return new Region(originStartLine, 1);
-
- int inclusiveOriginEndOffset= originRegion.getOffset() + originRegion.getLength() -1;
- int originEndLine= fMasterDocument.getLineOfOffset(inclusiveOriginEndOffset);
- return new Region(originStartLine, (originEndLine + 1) - originStartLine);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentInformationMapping#toOriginLine(int)
- */
- public int toOriginLine(int imageLine) throws BadLocationException {
- IRegion lines= toOriginLines(imageLine);
- return (lines.getLength() > 1 ? -1 : lines.getOffset());
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentInformationMapping#toImageOffset(int)
- */
- public int toImageOffset(int originOffset) throws BadLocationException {
- Fragment fragment= findFragment(originOffset);
- if (fragment != null) {
- int relative= originOffset - fragment.offset;
- return fragment.segment.offset + relative;
- }
- return -1;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentInformationMappingExtension#toExactImageRegion(org.eclipse.jface.text.IRegion)
- */
- public IRegion toExactImageRegion(IRegion originRegion) throws BadLocationException {
- return toImageRegion(originRegion, true);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentInformationMapping#toImageRegion(org.eclipse.jface.text.IRegion)
- */
- public IRegion toImageRegion(IRegion originRegion) throws BadLocationException {
- return toImageRegion(originRegion, false);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentInformationMapping#toImageLine(int)
- */
- public int toImageLine(int originLine) throws BadLocationException {
- IRegion originRegion= fMasterDocument.getLineInformation(originLine);
- IRegion imageRegion= toImageRegion(originRegion);
- if (imageRegion == null) {
- int imageOffset= toImageOffset(originRegion.getOffset());
- if (imageOffset > -1)
- imageRegion= new Region(imageOffset, 0);
- else
- return -1;
- }
-
- int startLine= fSlaveDocument.getLineOfOffset(imageRegion.getOffset());
- if (imageRegion.getLength() == 0)
- return startLine;
-
- int endLine= fSlaveDocument.getLineOfOffset(imageRegion.getOffset() + imageRegion.getLength());
- if (endLine != startLine)
- throw new IllegalStateException();
-
- return startLine;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentInformationMapping#toClosestImageLine(int)
- */
- public int toClosestImageLine(int originLine) throws BadLocationException {
- try {
-
- int imageLine= toImageLine(originLine);
- if (imageLine > -1)
- return imageLine;
-
- Position[] fragments= getFragments();
- if (fragments.length == 0)
- return -1;
-
- IRegion originLineRegion= fMasterDocument.getLineInformation(originLine);
- int index= fMasterDocument.computeIndexInCategory(fFragmentsCategory, originLineRegion.getOffset());
-
- if (0 < index && index < fragments.length) {
- Fragment left= (Fragment) fragments[index - 1];
- int leftDistance= originLineRegion.getOffset() - (left.getOffset() + left.getLength());
- Fragment right= (Fragment) fragments[index];
- int rightDistance= right.getOffset() - (originLineRegion.getOffset() + originLineRegion.getLength());
-
- if (leftDistance <= rightDistance)
- originLine= fMasterDocument.getLineOfOffset(left.getOffset() + Math.max(left.getLength() - 1, 0));
- else
- originLine= fMasterDocument.getLineOfOffset(right.getOffset());
-
- } else if (index == 0) {
- Fragment right= (Fragment) fragments[index];
- originLine= fMasterDocument.getLineOfOffset(right.getOffset());
- } else if (index == fragments.length) {
- Fragment left= (Fragment) fragments[index - 1];
- originLine= fMasterDocument.getLineOfOffset(left.getOffset() + left.getLength());
- }
-
- return toImageLine(originLine);
-
- } catch (BadPositionCategoryException x) {
- }
-
- return -1;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentInformationMappingExtension#toExactOriginRegions(org.eclipse.jface.text.IRegion)
- */
- public IRegion[] toExactOriginRegions(IRegion imageRegion) throws BadLocationException {
-
- if (imageRegion.getLength() == 0)
- return new IRegion[] { new Region(toOriginOffset(imageRegion.getOffset()), 0) };
-
- int endOffset= imageRegion.getOffset() + imageRegion.getLength();
- Position[] segments= getSegments();
- int firstIndex= findSegmentIndex(imageRegion.getOffset());
- int lastIndex= findSegmentIndex(endOffset - 1);
-
- int resultLength= lastIndex - firstIndex + 1;
- IRegion[] result= new IRegion[resultLength];
-
- // first
- result[0]= createOriginStartRegion((Segment) segments[firstIndex], imageRegion.getOffset() - segments[firstIndex].getOffset());
- // middles
- for (int i= 1; i < resultLength - 1; i++)
- result[i]= createOriginRegion((Segment) segments[firstIndex + i]);
- // last
- Segment last= (Segment) segments[lastIndex];
- int segmentEndOffset= last.getOffset() + last.getLength();
- IRegion lastRegion= createOriginEndRegion(last, segmentEndOffset - endOffset);
- if (resultLength > 1) {
- // first != last
- result[resultLength - 1]= lastRegion;
- } else {
- // merge first and last
- IRegion intersection= getIntersectingRegion(result[0], lastRegion);
- if (intersection == null)
- result= new IRegion[0];
- else
- result[0]= intersection;
- }
-
- return result;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentInformationMappingExtension#getImageLength()
- */
- public int getImageLength() {
- Position[] segments= getSegments();
- int length= 0;
- for (int i= 0; i < segments.length; i++)
- length += segments[i].length;
- return length;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentInformationMappingExtension#toExactImageRegions(org.eclipse.jface.text.IRegion)
- */
- public IRegion[] toExactImageRegions(IRegion originRegion) throws BadLocationException {
-
- if (originRegion.getLength() == 0) {
- int imageOffset= toImageOffset(originRegion.getOffset());
- return imageOffset > -1 ? new IRegion[] { new Region(imageOffset, 0) } : null;
- }
-
- int endOffset= originRegion.getOffset() + originRegion.getLength();
- Position[] fragments= getFragments();
- int firstIndex= findFragmentIndex(originRegion.getOffset(), RIGHT);
- int lastIndex= findFragmentIndex(endOffset - 1, LEFT);
-
- if (firstIndex == -1 || lastIndex == -1 || firstIndex > lastIndex)
- return null;
-
- int resultLength= lastIndex - firstIndex + 1;
- IRegion[] result= new IRegion[resultLength];
-
- // first
- result[0]= createImageStartRegion((Fragment) fragments[firstIndex], originRegion.getOffset() - fragments[firstIndex].getOffset());
- // middles
- for (int i= 1; i < resultLength - 1; i++)
- result[i]= createImageRegion((Fragment) fragments[firstIndex + i]);
- // last
- Fragment last= (Fragment) fragments[lastIndex];
- int fragmentEndOffset= last.getOffset() + last.getLength();
- IRegion lastRegion= createImageEndRegion(last, fragmentEndOffset - endOffset);
- if (resultLength > 1) {
- // first != last
- result[resultLength - 1]= lastRegion;
- } else {
- // merge first and last
- IRegion intersection= getIntersectingRegion(result[0], lastRegion);
- if (intersection == null)
- return null;
- result[0]= intersection;
- }
-
- return result;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentInformationMappingExtension#getExactCoverage(org.eclipse.jface.text.IRegion)
- */
- public IRegion[] getExactCoverage(IRegion originRegion) throws BadLocationException {
-
- int originOffset= originRegion.getOffset();
- int originLength= originRegion.getLength();
-
- if (originLength == 0) {
- int imageOffset= toImageOffset(originOffset);
- return imageOffset > -1 ? new IRegion[] { new Region(originOffset, 0) } : null;
- }
-
- int endOffset= originOffset + originLength;
- Position[] fragments= getFragments();
- int firstIndex= findFragmentIndex(originOffset, RIGHT);
- int lastIndex= findFragmentIndex(endOffset - 1, LEFT);
-
- if (firstIndex == -1 || lastIndex == -1 || firstIndex > lastIndex)
- return null;
-
- int resultLength= lastIndex - firstIndex + 1;
- IRegion[] result= new IRegion[resultLength];
-
- // first
- result[0]= createOriginStartRegion((Fragment) fragments[firstIndex], originOffset - fragments[firstIndex].getOffset());
- // middles
- for (int i= 1; i < resultLength - 1; i++)
- result[i]= createOriginRegion((Fragment) fragments[firstIndex + i]);
- // last
- Fragment last= (Fragment) fragments[lastIndex];
- int fragmentEndOffset= last.getOffset() + last.getLength();
- IRegion lastRegion= createOriginEndRegion(last, fragmentEndOffset - endOffset);
- if (resultLength > 1) {
- // first != last
- result[resultLength - 1]= lastRegion;
- } else {
- // merge first and last
- IRegion intersection= getIntersectingRegion(result[0], lastRegion);
- if (intersection == null)
- return null;
- result[0]= intersection;
- }
-
- return result;
- }
-}
diff --git a/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionTextStore.java b/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionTextStore.java
deleted file mode 100644
index 40219ce4c..000000000
--- a/org.eclipse.text/projection/org/eclipse/jface/text/projection/ProjectionTextStore.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.projection;
-
-
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.ITextStore;
-import org.eclipse.jface.text.Region;
-
-
-/**
- * A text store representing the projection defined by the given document
- * information mapping.
- *
- * @since 3.0
- */
-class ProjectionTextStore implements ITextStore {
-
- /**
- * Implementation of {@link IRegion} that can be reused
- * by setting the offset and the length.
- */
- private static class ReusableRegion implements IRegion {
-
- private int fOffset;
- private int fLength;
-
- /*
- * @see org.eclipse.jface.text.IRegion#getLength()
- */
- public int getLength() {
- return fLength;
- }
-
- /*
- * @see org.eclipse.jface.text.IRegion#getOffset()
- */
- public int getOffset() {
- return fOffset;
- }
-
- /**
- * Updates this region.
- *
- * @param offset the new offset
- * @param length the new length
- */
- public void update(int offset, int length) {
- fOffset= offset;
- fLength= length;
- }
- }
-
- /** The master document */
- private IDocument fMasterDocument;
- /** The document information mapping */
- private IMinimalMapping fMapping;
- /** Internal region used for querying the mapping. */
- private ReusableRegion fReusableRegion= new ReusableRegion();
-
-
- /**
- * Creates a new projection text store for the given master document and
- * the given document information mapping.
- *
- * @param masterDocument the master document
- * @param mapping the document information mapping
- */
- public ProjectionTextStore(IDocument masterDocument, IMinimalMapping mapping) {
- fMasterDocument= masterDocument;
- fMapping= mapping;
- }
-
- private void internalError() {
- throw new IllegalStateException();
- }
-
- /*
- * @see org.eclipse.jface.text.ITextStore#set(java.lang.String)
- */
- public void set(String contents) {
-
- IRegion masterRegion= fMapping.getCoverage();
- if (masterRegion == null)
- internalError();
-
- try {
- fMasterDocument.replace(masterRegion.getOffset(), masterRegion.getLength(), contents);
- } catch (BadLocationException e) {
- internalError();
- }
- }
-
- /*
- * @see org.eclipse.jface.text.ITextStore#replace(int, int, java.lang.String)
- */
- public void replace(int offset, int length, String text) {
- fReusableRegion.update(offset, length);
- try {
- IRegion masterRegion= fMapping.toOriginRegion(fReusableRegion);
- fMasterDocument.replace(masterRegion.getOffset(), masterRegion.getLength(), text);
- } catch (BadLocationException e) {
- internalError();
- }
- }
-
- /*
- * @see org.eclipse.jface.text.ITextStore#getLength()
- */
- public int getLength() {
- return fMapping.getImageLength();
- }
-
- /*
- * @see org.eclipse.jface.text.ITextStore#get(int)
- */
- public char get(int offset) {
- try {
- int originOffset= fMapping.toOriginOffset(offset);
- return fMasterDocument.getChar(originOffset);
- } catch (BadLocationException e) {
- internalError();
- }
-
- // unreachable
- return (char) 0;
- }
-
- /*
- * @see ITextStore#get(int, int)
- */
- public String get(int offset, int length) {
- try {
- IRegion[] fragments= fMapping.toExactOriginRegions(new Region(offset, length));
- StringBuffer buffer= new StringBuffer();
- for (int i= 0; i < fragments.length; i++) {
- IRegion fragment= fragments[i];
- buffer.append(fMasterDocument.get(fragment.getOffset(), fragment.getLength()));
- }
- return buffer.toString();
- } catch (BadLocationException e) {
- internalError();
- }
-
- // unreachable
- return null;
- }
-}
diff --git a/org.eclipse.text/projection/org/eclipse/jface/text/projection/Segment.java b/org.eclipse.text/projection/org/eclipse/jface/text/projection/Segment.java
deleted file mode 100644
index 4915c32f6..000000000
--- a/org.eclipse.text/projection/org/eclipse/jface/text/projection/Segment.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.projection;
-
-
-import org.eclipse.jface.text.Position;
-
-
-/**
- * Internal class. Do not use. Only public for testing purposes.
- * <p>
- * A segment is the image of a master document fragment in a projection
- * document.
- *
- * @since 3.0
- */
-public class Segment extends Position {
-
- /** The corresponding fragment for this segment. */
- public Fragment fragment;
- /** A flag indicating that the segment updater should stretch this segment when a change happens at its boundaries. */
- public boolean isMarkedForStretch;
- /** A flag indicating that the segment updater should shift this segment when a change happends at its boundaries. */
- public boolean isMarkedForShift;
-
- /**
- * Creates a new segment covering the given range.
- *
- * @param offset the offset of the segment
- * @param length the length of the segment
- */
- public Segment(int offset, int length) {
- super(offset, length);
- }
-
- /**
- * Sets the stretching flag.
- */
- public void markForStretch() {
- isMarkedForStretch= true;
- }
-
- /**
- * Returns <code>true</code> if the stretching flag is set, <code>false</code> otherwise.
- * @return <code>true</code> if the stretching flag is set, <code>false</code> otherwise
- */
- public boolean isMarkedForStretch() {
- return isMarkedForStretch;
- }
-
- /**
- * Sets the shifting flag.
- */
- public void markForShift() {
- isMarkedForShift= true;
- }
-
- /**
- * Returns <code>true</code> if the shifting flag is set, <code>false</code> otherwise.
- * @return <code>true</code> if the shifting flag is set, <code>false</code> otherwise
- */
- public boolean isMarkedForShift() {
- return isMarkedForShift;
- }
-
- /**
- * Clears the shifting and the streching flag.
- */
- public void clearMark() {
- isMarkedForStretch= false;
- isMarkedForShift= false;
- }
-}
diff --git a/org.eclipse.text/projection/org/eclipse/jface/text/projection/SegmentUpdater.java b/org.eclipse.text/projection/org/eclipse/jface/text/projection/SegmentUpdater.java
deleted file mode 100644
index f4c415b7e..000000000
--- a/org.eclipse.text/projection/org/eclipse/jface/text/projection/SegmentUpdater.java
+++ /dev/null
@@ -1,128 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.projection;
-
-
-import org.eclipse.jface.text.Assert;
-import org.eclipse.jface.text.BadPositionCategoryException;
-import org.eclipse.jface.text.DefaultPositionUpdater;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.Position;
-
-
-/**
- * The position updater used to adapt the segments of a projection document to
- * changes of the master document. Depending on the flags set on a segment, a
- * segment is either extended to shifted if an insertion happens at a segment's
- * offset. The last segment is extended if an insert operation happens at the
- * end of the segment.
- *
- * @since 3.0
- */
-class SegmentUpdater extends DefaultPositionUpdater {
-
- private Segment fNextSegment= null;
- private boolean fIsProjectionChange= false;
-
- /**
- * Creates the segment updater for the given category.
- *
- * @param segmentCategory the position category used for managing the segments of a projection document
- */
- protected SegmentUpdater(String segmentCategory) {
- super(segmentCategory);
- }
-
- /*
- * @see org.eclipse.jface.text.IPositionUpdater#update(org.eclipse.jface.text.DocumentEvent)
- */
- public void update(DocumentEvent event) {
-
- Assert.isTrue(event instanceof ProjectionDocumentEvent);
- fIsProjectionChange= ((ProjectionDocumentEvent) event).getChangeType() == ProjectionDocumentEvent.PROJECTION_CHANGE;
-
- try {
-
- Position[] category= event.getDocument().getPositions(getCategory());
-
- fOffset= event.getOffset();
- fLength= event.getLength();
- fReplaceLength= (event.getText() == null ? 0 : event.getText().length());
- fDocument= event.getDocument();
-
- for (int i= 0; i < category.length; i++) {
-
- fPosition= category[i];
- Assert.isTrue(fPosition instanceof Segment);
-
- if (i < category.length - 1)
- fNextSegment= (Segment) category[i + 1];
- else
- fNextSegment= null;
-
- fOriginalPosition.offset= fPosition.offset;
- fOriginalPosition.length= fPosition.length;
-
- if (notDeleted())
- adaptToReplace();
-
- }
-
- } catch (BadPositionCategoryException x) {
- // do nothing
- }
- }
-
- /*
- * @see org.eclipse.jface.text.DefaultPositionUpdater#adaptToInsert()
- */
- protected void adaptToInsert() {
-
- Segment segment= (Segment) fPosition;
- int myStart= segment.offset;
- int myEnd= segment.offset + segment.length - (segment.isMarkedForStretch || fNextSegment == null || isAffectingReplace() ? 0 : 1);
- myEnd= Math.max(myStart, myEnd);
- int yoursStart= fOffset;
-
- try {
-
- if (myEnd < yoursStart)
- return;
-
- if (segment.isMarkedForStretch) {
- Assert.isTrue(fIsProjectionChange);
- segment.isMarkedForShift= false;
- if (fNextSegment != null) {
- fNextSegment.isMarkedForShift= true;
- fNextSegment.isMarkedForStretch= false;
- }
- }
-
- if (fLength <= 0) {
-
- if (myStart < (yoursStart + (segment.isMarkedForShift ? 0 : 1)))
- fPosition.length += fReplaceLength;
- else
- fPosition.offset += fReplaceLength;
-
- } else {
-
- if (myStart <= yoursStart && fOriginalPosition.offset <= yoursStart)
- fPosition.length += fReplaceLength;
- else
- fPosition.offset += fReplaceLength;
- }
-
- } finally {
- segment.clearMark();
- }
- }
-}
diff --git a/org.eclipse.text/projection/org/eclipse/jface/text/projection/package.html b/org.eclipse.text/projection/org/eclipse/jface/text/projection/package.html
deleted file mode 100644
index 1d60a7a2a..000000000
--- a/org.eclipse.text/projection/org/eclipse/jface/text/projection/package.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
-<html><head>
- <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
- <meta content="IBM" name="Author">
- <meta content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]" name="GENERATOR"><title>projections</title></head>
-
-<body>
-<p>This package provides an implementation of projection documents. Projection
- is a specific master/slave mapping. Non-overlapping fragments if a master document
- form the segments of a slave document. The slave document is completely built
- out of segments, i.e. there are no gaps between two neighboring segments. The
- segments have exactly the same sequence in which they apprear as fragments in
- the master document.</p>
-<h3>Package Specification</h3>
-<p><tt>ProjectionDocument</tt> is custom
- <tt>IDocument</tt> implementation that
- uses a <tt>ProjectionTextStore. </tt>The
- content of the <tt>ProjectionDocument</tt>
- is defined by the <tt>ProjectionMapping.
- </tt>The<tt> ProjectionDocumentManager</tt>
- manages the life cycle of <tt>ProjectionDocuments</tt>
- and their relation to their master documents.</p>
-</body></html> \ No newline at end of file
diff --git a/org.eclipse.text/scripts/exportplugin.xml b/org.eclipse.text/scripts/exportplugin.xml
deleted file mode 100644
index 335b97039..000000000
--- a/org.eclipse.text/scripts/exportplugin.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<project name="Export Text" default="export" basedir="..">
- <target name="init">
- <tstamp/>
- <property name="destdir" value="../../plugin-export" />
- <property name="plugin" value="org.eclipse.text" />
- <property name="version" value="_3.0.0" />
- <property name="dest" value="${destdir}/${plugin}${version}" />
- </target>
-
- <target name="build" depends="init">
- <eclipse.incrementalBuild project="${plugin}" kind="incr"/>
- </target>
-
- <target name="export" depends="build">
- <mkdir dir="${destdir}" />
- <delete dir="${dest}" />
- <mkdir dir="${dest}" />
- <jar
- jarfile="${dest}/text.jar"
- basedir="bin"
- />
- <copy file="plugin.xml" todir="${dest}"/>
- <copy file="plugin.properties" todir="${dest}"/>
- <zip zipfile="${dest}/textsrc.zip">
- <fileset dir="src" />
- <fileset dir="projection"/>
- </zip>
- </target>
-</project>
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/AbstractDocument.java b/org.eclipse.text/src/org/eclipse/jface/text/AbstractDocument.java
deleted file mode 100644
index 9e3bf7863..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/AbstractDocument.java
+++ /dev/null
@@ -1,1309 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.text;
-
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.PatternSyntaxException;
-
-
-/**
- * Abstract default implementation of <code>IDocument</code> and its extension
- * interfaces {@link org.eclipse.jface.text.IDocumentExtension},
- * {@link org.eclipse.jface.text.IDocumentExtension2},
- * {@link org.eclipse.jface.text.IDocumentExtension3}, as well as
- * {@link org.eclipse.jface.text.IRepairableDocument}.
- * <p>
- *
- * An <code>AbstractDocument</code> supports the following implementation
- * plug-ins:
- * <ul>
- * <li>a text store implementing {@link org.eclipse.jface.text.ITextStore} for
- * storing and managing the document's content,</li>
- * <li>a line tracker implementing {@link org.eclipse.jface.text.ILineTracker}
- * to map character positions to line numbers and vice versa</li>
- * </ul>
- * The document can dynamically change the text store when switching between
- * sequential rewrite mode and normal mode.
- * <p>
- *
- * This class must be subclassed. Subclasses must configure which implementation
- * plug-ins the document instance should use. Subclasses are not intended to
- * overwrite existing methods.
- *
- * @see org.eclipse.jface.text.ITextStore
- * @see org.eclipse.jface.text.ILineTracker
- */
-public abstract class AbstractDocument implements IDocument, IDocumentExtension, IDocumentExtension2, IDocumentExtension3, IRepairableDocument {
-
- /**
- * Inner class to bundle a registered post notification replace operation together with its
- * owner.
- *
- * @since 2.0
- */
- static private class RegisteredReplace {
- /** The owner of this replace operation. */
- IDocumentListener fOwner;
- /** The replace operation */
- IDocumentExtension.IReplace fReplace;
-
- /**
- * Creates a new bundle object.
- * @param owner the document listener owning the replace operation
- * @param replace the replace operation
- */
- RegisteredReplace(IDocumentListener owner, IDocumentExtension.IReplace replace) {
- fOwner= owner;
- fReplace= replace;
- }
- }
-
-
- /** The document's text store */
- private ITextStore fStore;
- /** The document's line tracker */
- private ILineTracker fTracker;
- /** The registered document listeners */
- private List fDocumentListeners;
- /** The registered pre-notified document listeners */
- private List fPrenotifiedDocumentListeners;
- /** The registered document partitioning listeners */
- private List fDocumentPartitioningListeners;
- /** All positions managed by the document */
- private Map fPositions;
- /** All registered document position updaters */
- private List fPositionUpdaters;
- /**
- * The list of post notification changes
- * @since 2.0
- */
- private List fPostNotificationChanges;
- /**
- * The reentrance count for post notification changes.
- * @since 2.0
- */
- private int fReentranceCount= 0;
- /**
- * Indicates whether post notification change processing has been stopped.
- * @since 2.0
- */
- private int fStoppedCount= 0;
- /**
- * Indicates whether the registration of post notification changes should be ignored.
- * @since 2.1
- */
- private boolean fAcceptPostNotificationReplaces= true;
- /**
- * Indicates whether the notification of listeners has been stopped.
- * @since 2.1
- */
- private int fStoppedListenerNotification= 0;
- /**
- * The document event to be sent after listener notification has been resumed.
- * @since 2.1
- */
- private DocumentEvent fDeferredDocumentEvent;
- /**
- * The registered document partitioners.
- * @since 3.0
- */
- private Map fDocumentPartitioners;
- /**
- * The partitioning changed event.
- * @since 3.0
- */
- private DocumentPartitioningChangedEvent fDocumentPartitioningChangedEvent;
- /**
- * The find/replace document adapter.
- * @since 3.0
- */
- private FindReplaceDocumentAdapter fFindReplaceDocumentAdapter;
-
-
- /**
- * The default constructor does not perform any configuration
- * but leaves it to the clients who must first initialize the
- * implementation plug-ins and then call <code>completeInitialization</code>.
- * Results in the construction of an empty document.
- */
- protected AbstractDocument() {
- }
-
-
- /**
- * Returns the document's text store. Assumes that the
- * document has been initialized with a text store.
- *
- * @return the document's text store
- */
- protected ITextStore getStore() {
- Assert.isNotNull(fStore);
- return fStore;
- }
-
- /**
- * Returns the document's line tracker. Assumes that the
- * document has been initialized with a line tracker.
- *
- * @return the document's line tracker
- */
- protected ILineTracker getTracker() {
- Assert.isNotNull(fTracker);
- return fTracker;
- }
-
- /**
- * Returns the document's document listeners.
- *
- * @return the document's document listeners
- */
- protected List getDocumentListeners() {
- return fDocumentListeners;
- }
-
- /**
- * Returns the document's partitioning listeners .
- *
- * @return the document's partitioning listeners
- */
- protected List getDocumentPartitioningListeners() {
- return fDocumentPartitioningListeners;
- }
-
- /**
- * Returns all positions managed by the document grouped by category.
- *
- * @return the document's positions
- */
- protected Map getDocumentManagedPositions() {
- return fPositions;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getDocumentPartitioner()
- */
- public IDocumentPartitioner getDocumentPartitioner() {
- return getDocumentPartitioner(DEFAULT_PARTITIONING);
- }
-
-
-
- //--- implementation configuration interface ------------
-
- /**
- * Sets the document's text store.
- * Must be called at the beginning of the constructor.
- *
- * @param store the document's text store
- */
- protected void setTextStore(ITextStore store) {
- fStore= store;
- }
-
- /**
- * Sets the document's line tracker.
- * Must be called at the beginning of the constructor.
- *
- * @param tracker the document's line tracker
- */
- protected void setLineTracker(ILineTracker tracker) {
- fTracker= tracker;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#setDocumentPartitioner(org.eclipse.jface.text.IDocumentPartitioner)
- */
- public void setDocumentPartitioner(IDocumentPartitioner partitioner) {
- setDocumentPartitioner(DEFAULT_PARTITIONING, partitioner);
- }
-
- /**
- * Initializes document listeners, positions, and position updaters.
- * Must be called inside the constructor after the implementation plug-ins
- * have been set.
- */
- protected void completeInitialization() {
-
- fPositions= new HashMap();
- fPositionUpdaters= new ArrayList();
- fDocumentListeners= new ArrayList();
- fPrenotifiedDocumentListeners= new ArrayList();
- fDocumentPartitioningListeners= new ArrayList();
-
- addPositionCategory(DEFAULT_CATEGORY);
- addPositionUpdater(new DefaultPositionUpdater(DEFAULT_CATEGORY));
- }
-
-
- //-------------------------------------------------------
-
- /*
- * @see org.eclipse.jface.text.IDocument#addDocumentListener(org.eclipse.jface.text.IDocumentListener)
- */
- public void addDocumentListener(IDocumentListener listener) {
- Assert.isNotNull(listener);
- if (! fDocumentListeners.contains(listener))
- fDocumentListeners.add(listener);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#removeDocumentListener(org.eclipse.jface.text.IDocumentListener)
- */
- public void removeDocumentListener(IDocumentListener listener) {
- Assert.isNotNull(listener);
- fDocumentListeners.remove(listener);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#addPrenotifiedDocumentListener(org.eclipse.jface.text.IDocumentListener)
- */
- public void addPrenotifiedDocumentListener(IDocumentListener listener) {
- Assert.isNotNull(listener);
- if (! fPrenotifiedDocumentListeners.contains(listener))
- fPrenotifiedDocumentListeners.add(listener);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#removePrenotifiedDocumentListener(org.eclipse.jface.text.IDocumentListener)
- */
- public void removePrenotifiedDocumentListener(IDocumentListener listener) {
- Assert.isNotNull(listener);
- fPrenotifiedDocumentListeners.remove(listener);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#addDocumentPartitioningListener(org.eclipse.jface.text.IDocumentPartitioningListener)
- */
- public void addDocumentPartitioningListener(IDocumentPartitioningListener listener) {
- Assert.isNotNull(listener);
- if (! fDocumentPartitioningListeners.contains(listener))
- fDocumentPartitioningListeners.add(listener);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#removeDocumentPartitioningListener(org.eclipse.jface.text.IDocumentPartitioningListener)
- */
- public void removeDocumentPartitioningListener(IDocumentPartitioningListener listener) {
- Assert.isNotNull(listener);
- fDocumentPartitioningListeners.remove(listener);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#addPosition(java.lang.String, org.eclipse.jface.text.Position)
- */
- public void addPosition(String category, Position position) throws BadLocationException, BadPositionCategoryException {
-
- if ((0 > position.offset) || (0 > position.length) || (position.offset + position.length > getLength()))
- throw new BadLocationException();
-
- if (category == null)
- throw new BadPositionCategoryException();
-
- List list= (List) fPositions.get(category);
- if (list == null)
- throw new BadPositionCategoryException();
-
- list.add(computeIndexInPositionList(list, position.offset), position);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#addPosition(org.eclipse.jface.text.Position)
- */
- public void addPosition(Position position) throws BadLocationException {
- try {
- addPosition(DEFAULT_CATEGORY, position);
- } catch (BadPositionCategoryException e) {
- }
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#addPositionCategory(java.lang.String)
- */
- public void addPositionCategory(String category) {
-
- if (category == null)
- return;
-
- if (!containsPositionCategory(category))
- fPositions.put(category, new ArrayList());
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#addPositionUpdater(org.eclipse.jface.text.IPositionUpdater)
- */
- public void addPositionUpdater(IPositionUpdater updater) {
- insertPositionUpdater(updater, fPositionUpdaters.size());
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#containsPosition(java.lang.String, int, int)
- */
- public boolean containsPosition(String category, int offset, int length) {
-
- if (category == null)
- return false;
-
- List list= (List) fPositions.get(category);
- if (list == null)
- return false;
-
- int size= list.size();
- if (size == 0)
- return false;
-
- int index= computeIndexInPositionList(list, offset);
- if (index < size) {
- Position p= (Position) list.get(index);
- while (p != null && p.offset == offset) {
- if (p.length == length)
- return true;
- ++ index;
- p= (index < size) ? (Position) list.get(index) : null;
- }
- }
-
- return false;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#containsPositionCategory(java.lang.String)
- */
- public boolean containsPositionCategory(String category) {
- if (category != null)
- return fPositions.containsKey(category);
- return false;
- }
-
-
- /**
- * Computes the index in the list of positions at which a position with the given
- * offset would be inserted. The position is supposed to become the first in this list
- * of all positions with the same offset.
- *
- * @param positions the list in which the index is computed
- * @param offset the offset for which the index is computed
- * @return the computed index
- *
- * @see IDocument#computeIndexInCategory(String, int)
- */
- protected int computeIndexInPositionList(List positions, int offset) {
-
- if (positions.size() == 0)
- return 0;
-
- int left= 0;
- int right= positions.size() -1;
- int mid= 0;
- Position p= null;
-
- while (left < right) {
-
- mid= (left + right) / 2;
-
- p= (Position) positions.get(mid);
- if (offset < p.getOffset()) {
- if (left == mid)
- right= left;
- else
- right= mid -1;
- } else if (offset > p.getOffset()) {
- if (right == mid)
- left= right;
- else
- left= mid +1;
- } else if (offset == p.getOffset()) {
- left= right= mid;
- }
-
- }
-
- int pos= left;
- p= (Position) positions.get(pos);
- if (offset > p.getOffset()) {
- // append to the end
- pos++;
- } else {
- // entry will became the first of all entries with the same offset
- do {
- --pos;
- if (pos < 0)
- break;
- p= (Position) positions.get(pos);
- } while (offset == p.getOffset());
- ++pos;
- }
-
- Assert.isTrue(0 <= pos && pos <= positions.size());
-
- return pos;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#computeIndexInCategory(java.lang.String, int)
- */
- public int computeIndexInCategory(String category, int offset) throws BadLocationException, BadPositionCategoryException {
-
- if (0 > offset || offset > getLength())
- throw new BadLocationException();
-
- List c= (List) fPositions.get(category);
- if (c == null)
- throw new BadPositionCategoryException();
-
- return computeIndexInPositionList(c, offset);
- }
-
- /**
- * Fires the document partitioning changed notification to all registered
- * document partitioning listeners. Uses a robust iterator.
- *
- * @deprecated as of 2.0. Use <code>fireDocumentPartitioningChanged(IRegion)</code> instead.
- */
- protected void fireDocumentPartitioningChanged() {
-
- if (fDocumentPartitioningListeners != null && fDocumentPartitioningListeners.size() > 0) {
-
- List list= new ArrayList(fDocumentPartitioningListeners);
- Iterator e= list.iterator();
- while (e.hasNext()) {
- IDocumentPartitioningListener l= (IDocumentPartitioningListener) e.next();
- l.documentPartitioningChanged(this);
- }
- }
- }
-
- /**
- * Fires the document partitioning changed notification to all registered
- * document partitioning listeners. Uses a robust iterator.
- *
- * @param region the region in which partitioning has changed
- *
- * @see IDocumentPartitioningListenerExtension
- * @since 2.0
- * @deprecated as of 3.0. Use
- * <code>fireDocumentPartitioningChanged(DocumentPartitioningChangedEvent)</code>
- * instead.
- */
- protected void fireDocumentPartitioningChanged(IRegion region) {
-
- if (fDocumentPartitioningListeners != null && fDocumentPartitioningListeners.size() > 0) {
-
- List list= new ArrayList(fDocumentPartitioningListeners);
- Iterator e= list.iterator();
- while (e.hasNext()) {
- IDocumentPartitioningListener l= (IDocumentPartitioningListener) e.next();
- if (l instanceof IDocumentPartitioningListenerExtension)
- ((IDocumentPartitioningListenerExtension) l).documentPartitioningChanged(this, region);
- else
- l.documentPartitioningChanged(this);
- }
- }
- }
-
- /**
- * Fires the document partitioning changed notification to all registered
- * document partitioning listeners. Uses a robust iterator.
- *
- * @param event the document partitioning changed event
- *
- * @see IDocumentPartitioningListenerExtension2
- * @since 3.0
- */
- protected void fireDocumentPartitioningChanged(DocumentPartitioningChangedEvent event) {
- if (fDocumentPartitioningListeners == null || fDocumentPartitioningListeners.size() == 0)
- return;
-
- List list= new ArrayList(fDocumentPartitioningListeners);
- Iterator e= list.iterator();
- while (e.hasNext()) {
- IDocumentPartitioningListener l= (IDocumentPartitioningListener) e.next();
- if (l instanceof IDocumentPartitioningListenerExtension2) {
- IDocumentPartitioningListenerExtension2 extension2= (IDocumentPartitioningListenerExtension2) l;
- extension2.documentPartitioningChanged(event);
- } else if (l instanceof IDocumentPartitioningListenerExtension) {
- IDocumentPartitioningListenerExtension extension= (IDocumentPartitioningListenerExtension) l;
- extension.documentPartitioningChanged(this, event.getCoverage());
- } else {
- l.documentPartitioningChanged(this);
- }
- }
-
- }
-
- /**
- * Fires the given document event to all registers document listeners informing them
- * about the forthcoming document manipulation. Uses a robust iterator.
- *
- * @param event the event to be sent out
- */
- protected void fireDocumentAboutToBeChanged(DocumentEvent event) {
-
- // IDocumentExtension
- if (fReentranceCount == 0)
- flushPostNotificationChanges();
-
- if (fDocumentPartitioners != null) {
- Iterator e= fDocumentPartitioners.values().iterator();
- while (e.hasNext()) {
- IDocumentPartitioner p= (IDocumentPartitioner) e.next();
- p.documentAboutToBeChanged(event);
- }
- }
-
- if (fPrenotifiedDocumentListeners.size() > 0) {
-
- List list= new ArrayList(fPrenotifiedDocumentListeners);
- Iterator e= list.iterator();
- while (e.hasNext()) {
- IDocumentListener l= (IDocumentListener) e.next();
- l.documentAboutToBeChanged(event);
- }
- }
-
- if (fDocumentListeners.size() > 0) {
-
- List list= new ArrayList(fDocumentListeners);
- Iterator e= list.iterator();
- while (e.hasNext()) {
- IDocumentListener l= (IDocumentListener) e.next();
- l.documentAboutToBeChanged(event);
- }
- }
- }
-
-
- /**
- * Updates document partitioning and document positions according to the
- * specification given by the document event.
- *
- * @param event the document event describing the change to which structures must be adapted
- */
- protected void updateDocumentStructures(DocumentEvent event) {
-
- if (fDocumentPartitioners != null) {
- fDocumentPartitioningChangedEvent= new DocumentPartitioningChangedEvent(this);
- Iterator e= fDocumentPartitioners.keySet().iterator();
- while (e.hasNext()) {
- String partitioning= (String) e.next();
- IDocumentPartitioner partitioner= (IDocumentPartitioner) fDocumentPartitioners.get(partitioning);
- if (partitioner instanceof IDocumentPartitionerExtension) {
- IDocumentPartitionerExtension extension= (IDocumentPartitionerExtension) partitioner;
- IRegion r= extension.documentChanged2(event);
- if (r != null)
- fDocumentPartitioningChangedEvent.setPartitionChange(partitioning, r.getOffset(), r.getLength());
- } else {
- if (partitioner.documentChanged(event))
- fDocumentPartitioningChangedEvent.setPartitionChange(partitioning, 0, event.getDocument().getLength());
- }
- }
- }
-
- if (fPositions.size() > 0)
- updatePositions(event);
- }
-
- /**
- * Notifies all listeners about the given document change. Uses a robust
- * iterator.
- * <p>
- * Executes all registered post notification replace operation.
- *
- * @param event the event to be sent out.
- */
- protected void doFireDocumentChanged(DocumentEvent event) {
- boolean changed= fDocumentPartitioningChangedEvent != null && !fDocumentPartitioningChangedEvent.isEmpty();
- IRegion change= changed ? fDocumentPartitioningChangedEvent.getCoverage() : null;
- doFireDocumentChanged(event, changed, change);
- }
-
- /**
- * Notifies all listeners about the given document change.
- * Uses a robust iterator. <p>
- * Executes all registered post notification replace operation.
- *
- * @param event the event to be sent out
- * @param firePartitionChange <code>true</code> if a partition change notification should be sent
- * @param partitionChange the region whose partitioning changed
- * @since 2.0
- * @deprecated as of 3.0. Use <code>doFireDocumentChanged2(DocumentEvent)</code> instead; this method will be removed.
- */
- protected void doFireDocumentChanged(DocumentEvent event, boolean firePartitionChange, IRegion partitionChange) {
- doFireDocumentChanged2(event);
- }
-
- /**
- * Notifies all listeners about the given document change. Uses a robust
- * iterator.
- * <p>
- * Executes all registered post notification replace operation.
- * <p>
- * This method will be renamed to <code>doFireDocumentChanged</code>.
- *
- * @param event the event to be sent out
- * @since 3.0
- */
- protected void doFireDocumentChanged2(DocumentEvent event) {
-
- DocumentPartitioningChangedEvent p= fDocumentPartitioningChangedEvent;
- fDocumentPartitioningChangedEvent= null;
- if (p != null && !p.isEmpty())
- fireDocumentPartitioningChanged(p);
-
- if (fPrenotifiedDocumentListeners.size() > 0) {
-
- List list= new ArrayList(fPrenotifiedDocumentListeners);
- Iterator e= list.iterator();
- while (e.hasNext()) {
- IDocumentListener l= (IDocumentListener) e.next();
- l.documentChanged(event);
- }
- }
-
- if (fDocumentListeners.size() > 0) {
-
- List list= new ArrayList(fDocumentListeners);
- Iterator e= list.iterator();
- while (e.hasNext()) {
- IDocumentListener l= (IDocumentListener) e.next();
- l.documentChanged(event);
- }
- }
-
- // IDocumentExtension
- ++ fReentranceCount;
- try {
- if (fReentranceCount == 1)
- executePostNotificationChanges();
- } finally {
- -- fReentranceCount;
- }
- }
-
- /**
- * Updates the internal document structures and informs all document listeners
- * if listener notification has been enabled. Otherwise it remembers the event
- * to be sent to the listeners on resume.
- *
- * @param event the document event to be sent out
- */
- protected void fireDocumentChanged(DocumentEvent event) {
- updateDocumentStructures(event);
-
- if (fStoppedListenerNotification == 0)
- doFireDocumentChanged(event);
- else
- fDeferredDocumentEvent= event;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getChar(int)
- */
- public char getChar(int pos) throws BadLocationException {
- if ((0 > pos) || (pos >= getLength()))
- throw new BadLocationException();
- return getStore().get(pos);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getContentType(int)
- */
- public String getContentType(int offset) throws BadLocationException {
- String contentType= null;
- try {
- contentType= getContentType(DEFAULT_PARTITIONING, offset, false);
- Assert.isNotNull(contentType);
- } catch (BadPartitioningException e) {
- Assert.isTrue(false);
- }
- return contentType;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getLegalContentTypes()
- */
- public String[] getLegalContentTypes() {
- String[] contentTypes= null;
- try {
- contentTypes= getLegalContentTypes(DEFAULT_PARTITIONING);
- Assert.isNotNull(contentTypes);
- } catch (BadPartitioningException e) {
- Assert.isTrue(false);
- }
- return contentTypes;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getLength()
- */
- public int getLength() {
- return getStore().getLength();
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getLineDelimiter(int)
- */
- public String getLineDelimiter(int line) throws BadLocationException {
- return getTracker().getLineDelimiter(line);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getLegalLineDelimiters()
- */
- public String[] getLegalLineDelimiters() {
- return getTracker().getLegalLineDelimiters();
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getLineLength(int)
- */
- public int getLineLength(int line) throws BadLocationException {
- return getTracker().getLineLength(line);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getLineOfOffset(int)
- */
- public int getLineOfOffset(int pos) throws BadLocationException {
- return getTracker().getLineNumberOfOffset(pos);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getLineOffset(int)
- */
- public int getLineOffset(int line) throws BadLocationException {
- return getTracker().getLineOffset(line);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getLineInformation(int)
- */
- public IRegion getLineInformation(int line) throws BadLocationException {
- return getTracker().getLineInformation(line);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getLineInformationOfOffset(int)
- */
- public IRegion getLineInformationOfOffset(int offset) throws BadLocationException {
- return getTracker().getLineInformationOfOffset(offset);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getNumberOfLines()
- */
- public int getNumberOfLines() {
- return getTracker().getNumberOfLines();
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getNumberOfLines(int, int)
- */
- public int getNumberOfLines(int offset, int length) throws BadLocationException {
- return getTracker().getNumberOfLines(offset, length);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#computeNumberOfLines(java.lang.String)
- */
- public int computeNumberOfLines(String text) {
- return getTracker().computeNumberOfLines(text);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getPartition(int)
- */
- public ITypedRegion getPartition(int offset) throws BadLocationException {
- ITypedRegion partition= null;
- try {
- partition= getPartition(DEFAULT_PARTITIONING, offset, false);
- Assert.isNotNull(partition);
- } catch (BadPartitioningException e) {
- Assert.isTrue(false);
- }
- return partition;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#computePartitioning(int, int)
- */
- public ITypedRegion[] computePartitioning(int offset, int length) throws BadLocationException {
- ITypedRegion[] partitioning= null;
- try {
- partitioning= computePartitioning(DEFAULT_PARTITIONING, offset, length, false);
- Assert.isNotNull(partitioning);
- } catch (BadPartitioningException e) {
- Assert.isTrue(false);
- }
- return partitioning;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getPositions(java.lang.String)
- */
- public Position[] getPositions(String category) throws BadPositionCategoryException {
-
- if (category == null)
- throw new BadPositionCategoryException();
-
- List c= (List) fPositions.get(category);
- if (c == null)
- throw new BadPositionCategoryException();
-
- Position[] positions= new Position[c.size()];
- c.toArray(positions);
- return positions;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getPositionCategories()
- */
- public String[] getPositionCategories() {
- String[] categories= new String[fPositions.size()];
- Iterator keys= fPositions.keySet().iterator();
- for (int i= 0; i < categories.length; i++)
- categories[i]= (String) keys.next();
- return categories;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#getPositionUpdaters()
- */
- public IPositionUpdater[] getPositionUpdaters() {
- IPositionUpdater[] updaters= new IPositionUpdater[fPositionUpdaters.size()];
- fPositionUpdaters.toArray(updaters);
- return updaters;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#get()
- */
- public String get() {
- return getStore().get(0, getLength());
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#get(int, int)
- */
- public String get(int pos, int length) throws BadLocationException {
- int myLength= getLength();
- if ((0 > pos) || (0 > length) || (pos + length > myLength))
- throw new BadLocationException();
- return getStore().get(pos, length);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#insertPositionUpdater(org.eclipse.jface.text.IPositionUpdater, int)
- */
- public void insertPositionUpdater(IPositionUpdater updater, int index) {
-
- for (int i= fPositionUpdaters.size() - 1; i >= 0; i--) {
- if (fPositionUpdaters.get(i) == updater)
- return;
- }
-
- if (index == fPositionUpdaters.size())
- fPositionUpdaters.add(updater);
- else
- fPositionUpdaters.add(index, updater);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#removePosition(java.lang.String, org.eclipse.jface.text.Position)
- */
- public void removePosition(String category, Position position) throws BadPositionCategoryException {
-
- if (position == null)
- return;
-
- if (category == null)
- throw new BadPositionCategoryException();
-
- List c= (List) fPositions.get(category);
- if (c == null)
- throw new BadPositionCategoryException();
-
- // remove based on identity not equality
- int size= c.size();
- for (int i= 0; i < size; i++) {
- if (position == c.get(i)) {
- c.remove(i);
- return;
- }
- }
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#removePosition(org.eclipse.jface.text.Position)
- */
- public void removePosition(Position position) {
- try {
- removePosition(DEFAULT_CATEGORY, position);
- } catch (BadPositionCategoryException e) {
- }
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#removePositionCategory(java.lang.String)
- */
- public void removePositionCategory(String category) throws BadPositionCategoryException {
-
- if (category == null)
- return;
-
- if ( !containsPositionCategory(category))
- throw new BadPositionCategoryException();
-
- fPositions.remove(category);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#removePositionUpdater(org.eclipse.jface.text.IPositionUpdater)
- */
- public void removePositionUpdater(IPositionUpdater updater) {
- for (int i= fPositionUpdaters.size() - 1; i >= 0; i--) {
- if (fPositionUpdaters.get(i) == updater) {
- fPositionUpdaters.remove(i);
- return;
- }
- }
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#replace(int, int, java.lang.String)
- */
- public void replace(int pos, int length, String text) throws BadLocationException {
- if ((0 > pos) || (0 > length) || (pos + length > getLength()))
- throw new BadLocationException();
-
- DocumentEvent e= new DocumentEvent(this, pos, length, text);
- fireDocumentAboutToBeChanged(e);
-
- getStore().replace(pos, length, text);
- getTracker().replace(pos, length, text);
-
- fireDocumentChanged(e);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#set(java.lang.String)
- */
- public void set(String text) {
- int length= getStore().getLength();
- DocumentEvent e= new DocumentEvent(this, 0, length, text);
- fireDocumentAboutToBeChanged(e);
-
- getStore().set(text);
- getTracker().set(text);
-
- fireDocumentChanged(e);
- }
-
- /**
- * Updates all positions of all categories to the change described by the
- * document event. All registered document updaters are called in the
- * sequence they have been arranged. Uses a robust iterator.
- *
- * @param event the document event describing the change to which to adapt
- * the positions
- */
- protected void updatePositions(DocumentEvent event) {
- List list= new ArrayList(fPositionUpdaters);
- Iterator e= list.iterator();
- while (e.hasNext()) {
- IPositionUpdater u= (IPositionUpdater) e.next();
- u.update(event);
- }
- }
-
- /*
- * @see org.eclipse.jface.text.IDocument#search(int, java.lang.String, boolean, boolean, boolean)
- */
- public int search(int startPosition, String findString, boolean forwardSearch, boolean caseSensitive, boolean wholeWord) throws BadLocationException {
- try {
- IRegion region= getFindReplaceDocumentAdapter().find(startPosition, findString, forwardSearch, caseSensitive, wholeWord, false);
- if (region == null)
- return -1;
- else
- return region.getOffset();
- } catch (IllegalStateException ex) {
- return -1;
- } catch (PatternSyntaxException ex) {
- return -1;
- }
- }
-
- /**
- * Returns the find/replace adapter for this document.
- *
- * @return this document's find/replace document adapter
- * @since 3.0
- */
- private FindReplaceDocumentAdapter getFindReplaceDocumentAdapter() {
- if (fFindReplaceDocumentAdapter == null)
- fFindReplaceDocumentAdapter= new FindReplaceDocumentAdapter(this);
-
- return fFindReplaceDocumentAdapter;
- }
-
- /**
- * Flushes all registered post notification changes.
- *
- * @since 2.0
- */
- private void flushPostNotificationChanges() {
- if (fPostNotificationChanges != null)
- fPostNotificationChanges.clear();
- }
-
- /**
- * Executes all registered post notification changes. The process is
- * repeated until no new post notification changes are added.
- *
- * @since 2.0
- */
- private void executePostNotificationChanges() {
-
- if (fStoppedCount > 0)
- return;
-
- while (fPostNotificationChanges != null) {
- List changes= fPostNotificationChanges;
- fPostNotificationChanges= null;
-
- Iterator e= changes.iterator();
- while (e.hasNext()) {
- RegisteredReplace replace = (RegisteredReplace) e.next();
- replace.fReplace.perform(this, replace.fOwner);
- }
- }
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension2#acceptPostNotificationReplaces()
- * @since 2.1
- */
- public void acceptPostNotificationReplaces() {
- fAcceptPostNotificationReplaces= true;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension2#ignorePostNotificationReplaces()
- * @since 2.1
- */
- public void ignorePostNotificationReplaces() {
- fAcceptPostNotificationReplaces= false;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension#registerPostNotificationReplace(org.eclipse.jface.text.IDocumentListener, org.eclipse.jface.text.IDocumentExtension.IReplace)
- * @since 2.0
- */
- public void registerPostNotificationReplace(IDocumentListener owner, IDocumentExtension.IReplace replace) {
- if (fAcceptPostNotificationReplaces) {
- if (fPostNotificationChanges == null)
- fPostNotificationChanges= new ArrayList(1);
- fPostNotificationChanges.add(new RegisteredReplace(owner, replace));
- }
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension#stopPostNotificationProcessing()
- * @since 2.0
- */
- public void stopPostNotificationProcessing() {
- ++ fStoppedCount;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension#resumePostNotificationProcessing()
- * @since 2.0
- */
- public void resumePostNotificationProcessing() {
- -- fStoppedCount;
- if (fStoppedCount == 0 && fReentranceCount == 0)
- executePostNotificationChanges();
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension#startSequentialRewrite(boolean)
- * @since 2.0
- */
- public void startSequentialRewrite(boolean normalized) {
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension#stopSequentialRewrite()
- * @since 2.0
- */
- public void stopSequentialRewrite() {
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension2#resumeListenerNotification()
- * @since 2.1
- */
- public void resumeListenerNotification() {
- -- fStoppedListenerNotification;
- if (fStoppedListenerNotification == 0) {
- resumeDocumentListenerNotification();
- }
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension2#stopListenerNotification()
- * @since 2.1
- */
- public void stopListenerNotification() {
- ++ fStoppedListenerNotification;
- }
-
- /**
- * Resumes the document listener notification by sending out the remembered
- * partition changed and document event.
- *
- * @since 2.1
- */
- private void resumeDocumentListenerNotification() {
- if (fDeferredDocumentEvent != null) {
- DocumentEvent event= fDeferredDocumentEvent;
- fDeferredDocumentEvent= null;
- doFireDocumentChanged(event);
- }
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension3#computeZeroLengthPartitioning(java.lang.String, int, int)
- * @since 3.0
- */
- public ITypedRegion[] computePartitioning(String partitioning, int offset, int length, boolean includeZeroLengthPartitions) throws BadLocationException, BadPartitioningException {
- if ((0 > offset) || (0 > length) || (offset + length > getLength()))
- throw new BadLocationException();
-
- IDocumentPartitioner partitioner= getDocumentPartitioner(partitioning);
-
- if (partitioner instanceof IDocumentPartitionerExtension2)
- return ((IDocumentPartitionerExtension2) partitioner).computePartitioning(offset, length, includeZeroLengthPartitions);
- else if (partitioner != null)
- return partitioner.computePartitioning(offset, length);
- else if (DEFAULT_PARTITIONING.equals(partitioning))
- return new TypedRegion[] { new TypedRegion(offset, length, DEFAULT_CONTENT_TYPE) };
- else
- throw new BadPartitioningException();
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension3#getZeroLengthContentType(java.lang.String, int)
- * @since 3.0
- */
- public String getContentType(String partitioning, int offset, boolean preferOpenPartitions) throws BadLocationException, BadPartitioningException {
- if ((0 > offset) || (offset > getLength()))
- throw new BadLocationException();
-
- IDocumentPartitioner partitioner= getDocumentPartitioner(partitioning);
-
- if (partitioner instanceof IDocumentPartitionerExtension2)
- return ((IDocumentPartitionerExtension2) partitioner).getContentType(offset, preferOpenPartitions);
- else if (partitioner != null)
- return partitioner.getContentType(offset);
- else if (DEFAULT_PARTITIONING.equals(partitioning))
- return DEFAULT_CONTENT_TYPE;
- else
- throw new BadPartitioningException();
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension3#getDocumentPartitioner(java.lang.String)
- * @since 3.0
- */
- public IDocumentPartitioner getDocumentPartitioner(String partitioning) {
- return fDocumentPartitioners != null ? (IDocumentPartitioner) fDocumentPartitioners.get(partitioning) : null;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension3#getLegalContentTypes(java.lang.String)
- * @since 3.0
- */
- public String[] getLegalContentTypes(String partitioning) throws BadPartitioningException {
- IDocumentPartitioner partitioner= getDocumentPartitioner(partitioning);
- if (partitioner != null)
- return partitioner.getLegalContentTypes();
- if (DEFAULT_PARTITIONING.equals(partitioning))
- return new String[] { DEFAULT_CONTENT_TYPE };
- throw new BadPartitioningException();
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension3#getZeroLengthPartition(java.lang.String, int)
- * @since 3.0
- */
- public ITypedRegion getPartition(String partitioning, int offset, boolean preferOpenPartitions) throws BadLocationException, BadPartitioningException {
- if ((0 > offset) || (offset > getLength()))
- throw new BadLocationException();
-
- IDocumentPartitioner partitioner= getDocumentPartitioner(partitioning);
-
- if (partitioner instanceof IDocumentPartitionerExtension2)
- return ((IDocumentPartitionerExtension2) partitioner).getPartition(offset, preferOpenPartitions);
- else if (partitioner != null)
- return partitioner.getPartition(offset);
- else if (DEFAULT_PARTITIONING.equals(partitioning))
- return new TypedRegion(0, getLength(), DEFAULT_CONTENT_TYPE);
- else
- throw new BadPartitioningException();
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension3#getPartitionings()
- * @since 3.0
- */
- public String[] getPartitionings() {
- if (fDocumentPartitioners == null)
- return new String[0];
- String[] partitionings= new String[fDocumentPartitioners.size()];
- fDocumentPartitioners.keySet().toArray(partitionings);
- return partitionings;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension3#setDocumentPartitioner(java.lang.String, org.eclipse.jface.text.IDocumentPartitioner)
- * @since 3.0
- */
- public void setDocumentPartitioner(String partitioning, IDocumentPartitioner partitioner) {
- if (partitioner == null) {
- if (fDocumentPartitioners != null) {
- fDocumentPartitioners.remove(partitioning);
- if (fDocumentPartitioners.size() == 0)
- fDocumentPartitioners= null;
- }
- } else {
- if (fDocumentPartitioners == null)
- fDocumentPartitioners= new HashMap();
- fDocumentPartitioners.put(partitioning, partitioner);
- }
- DocumentPartitioningChangedEvent event= new DocumentPartitioningChangedEvent(this);
- event.setPartitionChange(partitioning, 0, getLength());
- fireDocumentPartitioningChanged(event);
- }
-
- /*
- * @see org.eclipse.jface.text.IRepairableDocument#repairLineInformation()
- * @since 3.0
- */
- public void repairLineInformation() {
- getTracker().set(get());
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/AbstractLineTracker.java b/org.eclipse.text/src/org/eclipse/jface/text/AbstractLineTracker.java
deleted file mode 100644
index 89e993671..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/AbstractLineTracker.java
+++ /dev/null
@@ -1,554 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-import java.util.ArrayList;
-import java.util.List;
-
-
-/**
- * Abstract implementation of <code>ILineTracker</code>. It lets the
- * definition of line delimiters to subclasses. Assuming that '\n' is
- * the only line delimiter, this abstract implementation defines the
- * following line scheme:
- * <ul>
- * <li> "" -> [0,0]
- * <li> "a" -> [0,1]
- * <li> "\n" -> [0,1], [1,0]
- * <li> "a\n" -> [0,2], [2,0]
- * <li> "a\nb" -> [0,2], [2,1]
- * <li> "a\nbc\n" -> [0,2], [2,3], [5,0]
- * </ul>
- * This class must be subclassed.
- */
-public abstract class AbstractLineTracker implements ILineTracker {
-
-
- /**
- * Combines the information of the occurrence of a line delimiter.
- * <code>delimiterIndex</code> is the index where a line delimiter
- * starts, whereas <code>delimiterLength</code>, indicates the length
- * of the delimiter.
- */
- protected static class DelimiterInfo {
- public int delimiterIndex;
- public int delimiterLength;
- public String delimiter;
- }
-
-
- /** The line information */
- private List fLines= new ArrayList();
- /** The length of the tracked text */
- private int fTextLength;
-
-
- /**
- * Creates a new line tracker.
- */
- protected AbstractLineTracker() {
- }
-
- /**
- * Binary search for the line at a given offset.
- *
- * @param offset the offset whose line should be found
- * @return the line of the offset
- */
- private int findLine(int offset) {
-
- if (fLines.size() == 0)
- return -1;
-
- int left= 0;
- int right= fLines.size() -1;
- int mid= 0;
- Line line= null;
-
- while (left < right) {
-
- mid= (left + right) / 2;
-
- line= (Line) fLines.get(mid);
- if (offset < line.offset) {
- if (left == mid)
- right= left;
- else
- right= mid -1;
- } else if (offset > line.offset) {
- if (right == mid)
- left= right;
- else
- left= mid +1;
- } else if (offset == line.offset) {
- left= right= mid;
- }
- }
-
- line= (Line) fLines.get(left);
- if (line.offset > offset)
- -- left;
- return left;
- }
-
- /**
- * Returns the number of lines covered by the specified text range.
- *
- * @param startLine the line where the text range starts
- * @param offset the start offset of the text range
- * @param length the length of the text range
- * @return the number of lines covered by this text range
- * @exception BadLocationException if range is undefined in this tracker
- */
- private int getNumberOfLines(int startLine, int offset, int length) throws BadLocationException {
-
- if (length == 0)
- return 1;
-
- int target= offset + length;
-
- Line l= (Line) fLines.get(startLine);
-
- if (l.delimiter == null)
- return 1;
-
- if (l.offset + l.length > target)
- return 1;
-
- if (l.offset + l.length == target)
- return 2;
-
- return getLineNumberOfOffset(target) - startLine + 1;
- }
-
- /*
- * @see org.eclipse.jface.text.ILineTracker#getLineLength(int)
- */
- public int getLineLength(int line) throws BadLocationException {
-
- int lines= fLines.size();
-
- if (line < 0 || line > lines)
- throw new BadLocationException();
-
- if (lines == 0 || lines == line)
- return 0;
-
- Line l= (Line) fLines.get(line);
- return l.length;
- }
-
- /*
- * @see org.eclipse.jface.text.ILineTracker#getLineNumberOfOffset(int)
- */
- public int getLineNumberOfOffset(int position) throws BadLocationException {
-
- if (position > fTextLength)
- throw new BadLocationException();
-
- if (position == fTextLength) {
-
- int lastLine= fLines.size() - 1;
- if (lastLine < 0)
- return 0;
-
- Line l= (Line) fLines.get(lastLine);
- return (l.delimiter != null ? lastLine + 1 : lastLine);
- }
-
- return findLine(position);
- }
-
- /*
- * @see org.eclipse.jface.text.ILineTracker#getLineInformationOfOffset(int)
- */
- public IRegion getLineInformationOfOffset(int position) throws BadLocationException {
- if (position > fTextLength)
- throw new BadLocationException();
-
- if (position == fTextLength) {
- int size= fLines.size();
- if (size == 0)
- return new Region(0, 0);
- Line l= (Line) fLines.get(size - 1);
- return (l.delimiter != null ? new Line(fTextLength, 0) : new Line(fTextLength - l.length, l.length));
- }
-
- return getLineInformation(findLine(position));
- }
-
- /*
- * @see org.eclipse.jface.text.ILineTracker#getLineInformation(int)
- */
- public IRegion getLineInformation(int line) throws BadLocationException {
-
- int lines= fLines.size();
-
- if (line < 0 || line > lines)
- throw new BadLocationException();
-
- if (lines == 0)
- return new Line(0, 0);
-
- if (line == lines) {
- Line l= (Line) fLines.get(line - 1);
- return new Line(l.offset + l.length, 0);
- }
-
- Line l= (Line) fLines.get(line);
- return (l.delimiter != null ? new Line(l.offset, l.length - l.delimiter.length()) : l);
- }
-
- /*
- * @see org.eclipse.jface.text.ILineTracker#getLineOffset(int)
- */
- public int getLineOffset(int line) throws BadLocationException {
-
- int lines= fLines.size();
-
- if (line < 0 || line > lines)
- throw new BadLocationException();
-
- if (lines == 0)
- return 0;
-
- if (line == lines) {
- Line l= (Line) fLines.get(line - 1);
- return l.offset + l.length;
- }
-
- Line l= (Line) fLines.get(line);
- return l.offset;
- }
-
- /*
- * @see org.eclipse.jface.text.ILineTracker#getNumberOfLines()
- */
- public int getNumberOfLines() {
-
- int lines= fLines.size();
-
- if (lines == 0)
- return 1;
-
- Line l= (Line) fLines.get(lines - 1);
- return (l.delimiter != null ? lines + 1 : lines);
- }
-
- /*
- * @see org.eclipse.jface.text.ILineTracker#getNumberOfLines(int, int)
- */
- public int getNumberOfLines(int position, int length) throws BadLocationException {
-
- if (position < 0 || position + length > fTextLength)
- throw new BadLocationException();
-
- if (length == 0) // optimization
- return 1;
-
- return getNumberOfLines(getLineNumberOfOffset(position), position, length);
- }
-
- /*
- * @see org.eclipse.jface.text.ILineTracker#computeNumberOfLines(java.lang.String)
- */
- public int computeNumberOfLines(String text) {
- int count= 0;
- int start= 0;
- DelimiterInfo delimiterInfo= nextDelimiterInfo(text, start);
- while (delimiterInfo != null && delimiterInfo.delimiterIndex > -1) {
- ++count;
- start= delimiterInfo.delimiterIndex + delimiterInfo.delimiterLength;
- delimiterInfo= nextDelimiterInfo(text, start);
- }
- return count;
- }
-
-
- /* ----------------- manipulation ------------------------------ */
-
-
- /**
- * Returns the information about the first delimiter found in the given
- * text starting at the given offset.
- *
- * @param text the text to be searched
- * @param offset the offset in the given text
- * @return the information of the first found delimiter or <code>null</code>
- */
- protected abstract DelimiterInfo nextDelimiterInfo(String text, int offset);
-
-
- /**
- * Creates the line structure for the given text. Newly created lines
- * are inserted into the line structure starting at the given
- * position. Returns the number of newly created lines.
- *
- * @param text the text for which to create a line structure
- * @param insertPosition the position at which the newly created lines are inserted
- * into the tracker's line structure
- * @param offset the offset of all newly created lines
- * @return the number of newly created lines
- */
- private int createLines(String text, int insertPosition, int offset) {
-
- int count= 0;
- int start= 0;
- DelimiterInfo delimiterInfo= nextDelimiterInfo(text, 0);
-
-
- while (delimiterInfo != null && delimiterInfo.delimiterIndex > -1) {
-
- int index= delimiterInfo.delimiterIndex + (delimiterInfo.delimiterLength - 1);
-
- if (insertPosition + count >= fLines.size())
- fLines.add(new Line(offset + start, offset + index, delimiterInfo.delimiter));
- else
- fLines.add(insertPosition + count, new Line(offset + start, offset + index, delimiterInfo.delimiter));
-
- ++count;
- start= index + 1;
- delimiterInfo= nextDelimiterInfo(text, start);
- }
-
- if (start < text.length()) {
- if (insertPosition + count < fLines.size()) {
- // there is a line below the current
- Line l= (Line) fLines.get(insertPosition + count);
- int delta= text.length() - start;
- l.offset -= delta;
- l.length += delta;
- } else {
- fLines.add(new Line(offset + start, offset + text.length() - 1, null));
- ++count;
- }
- }
-
- return count;
- }
-
- /**
- * Keeps track of the line information when text is inserted.
- * Returns the number of inserted lines.
- *
- * @param lineNumber the line at which the insert happens
- * @param offset at which the insert happens
- * @param text the inserted text
- * @return the number of inserted lines
- * @exception BadLocationException if offset is invalid in this tracker
- */
- private int insert(int lineNumber, int offset, String text) throws BadLocationException {
-
- if (text == null || text.length() == 0)
- return 0;
-
- fTextLength += text.length();
-
- int size= fLines.size();
-
- if (size == 0 || lineNumber >= size)
- return createLines(text, size, offset);
-
- Line line= (Line) fLines.get(lineNumber);
- DelimiterInfo delimiterInfo= nextDelimiterInfo(text, 0);
- if (delimiterInfo == null || delimiterInfo.delimiterIndex == -1) {
- line.length += text.length();
- return 0;
- }
-
-
- // as there is a line break, split line but do so only if rest of line is not of length 0
- int restLength= line.offset + line.length - offset;
- if (restLength > 0) {
- // determine start and end of the second half of the splitted line
- Line lineRest= new Line(offset, restLength);
- lineRest.delimiter= line.delimiter;
- // shift it by the inserted text
- lineRest.offset += text.length();
- // and insert in line structure
- fLines.add(lineNumber + 1, lineRest);
- }
-
- // adapt the beginning of the splitted line
- line.delimiter= delimiterInfo.delimiter;
- int nextStart= offset + delimiterInfo.delimiterIndex + delimiterInfo.delimiterLength;
- line.length= nextStart - line.offset;
-
- // insert lines for the remaining text
- text= text.substring(delimiterInfo.delimiterIndex + delimiterInfo.delimiterLength);
- return createLines(text, lineNumber + 1, nextStart) + 1;
- }
-
- /**
- * Keeps track of the line information when text is removed. Returns
- * whether the line at which the deletion start will thereby be deleted.
- *
- * @param lineNumber the lineNumber at which the deletion starts
- * @param offset the offset of the first deleted character
- * @param length the number of deleted characters
- * @return <code>true</code> if the start line has been deleted, <code>false</code> otherwise
- * @exception BadLocationException if position is unknown to the tracker
- */
- private boolean remove(int lineNumber, int offset, int length) throws BadLocationException {
-
- if (length == 0)
- return false;
-
- int removedLineEnds= getNumberOfLines(lineNumber, offset, length) - 1;
- Line line= (Line) fLines.get(lineNumber);
-
- if ((lineNumber == fLines.size() - 1) && removedLineEnds > 0) {
- line.length -= length;
- line.delimiter= null;
- } else {
-
- ++ lineNumber;
- for (int i= 1; i <= removedLineEnds; i++) {
-
- if (lineNumber == fLines.size()) {
- line.delimiter= null;
- break;
- }
-
- Line line2= (Line) fLines.get(lineNumber);
- line.length += line2.length;
- line.delimiter= line2.delimiter;
- fLines.remove(lineNumber);
- }
- line.length -= length;
- }
-
- fTextLength -= length;
-
- if (line.length == 0) {
- fLines.remove(line);
- return true;
- }
-
- return false;
- }
-
- /**
- * Adapts the offset of all lines with line numbers greater than the specified
- * one to the given delta.
- *
- * @param lineNumber the line number after which to start
- * @param delta the offset delta to be applied
- */
- private void adaptLineOffsets(int lineNumber, int delta) {
- int size= fLines.size();
- for (int i= lineNumber + 1; i < size; i++) {
- Line l= (Line) fLines.get(i);
- l.offset += delta;
- }
- }
-
- /*
- * @see org.eclipse.jface.text.ILineTracker#replace(int, int, java.lang.String)
- */
- public void replace(int position, int length, String text) throws BadLocationException {
-
- int firstLine= getLineNumberOfOffset(position);
- int insertLineNumber= firstLine;
-
- if (remove(firstLine, position, length))
- -- firstLine;
-
- int lastLine= firstLine + insert(insertLineNumber, position, text);
-
-// int lines= fLines.size();
-// if (lines > 0) {
-//
-// // try to collapse the first and the second line if second line is empty
-// if (0 <= firstLine && firstLine + 1 < lines) {
-// Line l2= (Line) fLines.get(firstLine + 1);
-// if (l2.delimiter != null && l2.length == l2.delimiter.length()) {
-// // line is empty
-//
-// // append empty line to precessor
-// Line l1= (Line) fLines.get(firstLine);
-// StringBuffer buffer= new StringBuffer();
-// buffer.append(l1.delimiter);
-// buffer.append(l2.delimiter);
-//
-// // test whether this yields just one line rather then two
-// DelimiterInfo info= nextDelimiterInfo(buffer.toString(), 0);
-// if (info != null && info.delimiterIndex == 0 && info.delimiterLength == buffer.length()) {
-// l1.length += l2.length;
-// l1.delimiter += l2.delimiter;
-// fLines.remove(firstLine + 1);
-// -- lastLine;
-// }
-// }
-// }
-//
-// // try to collapse the last inserted line with the following line
-// if (lastLine < lines) {
-// Line l2= (Line) fLines.get(lastLine);
-// if (l2.delimiter != null && l2.length == l2.delimiter.length()) {
-// // line is empty
-//
-// // append empty line to precessor
-// Line l1= (Line) fLines.get(lastLine -1);
-// StringBuffer buffer= new StringBuffer();
-// buffer.append(l1.delimiter);
-// buffer.append(l2.delimiter);
-//
-// // test whether this yields just one line rather then two
-// DelimiterInfo info= nextDelimiterInfo(buffer.toString(), 0);
-// if (info != null && info.delimiterIndex == 0 && info.delimiterLength == buffer.length()) {
-// l1.length += l2.length;
-// l1.delimiter += l2.delimiter;
-// fLines.remove(lastLine);
-// }
-// }
-// }
-// }
-
- int delta= -length;
- if (text != null)
- delta= text.length() + delta;
-
- if (delta != 0)
- adaptLineOffsets(lastLine, delta);
- }
-
- /*
- * @see org.eclipse.jface.text.ILineTracker#set(java.lang.String)
- */
- public void set(String text) {
- fLines.clear();
- if (text != null) {
- fTextLength= text.length();
- createLines(text, 0, 0);
- }
- }
-
- /*
- * @see org.eclipse.jface.text.ILineTracker#getLineDelimiter(int)
- */
- public String getLineDelimiter(int line) throws BadLocationException {
-
- int lines= fLines.size();
-
- if (line < 0 || line > lines)
- throw new BadLocationException();
-
- if (lines == 0)
- return null;
-
- if (line == lines)
- return null;
-
- Line l= (Line) fLines.get(line);
- return l.delimiter;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/Assert.java b/org.eclipse.text/src/org/eclipse/jface/text/Assert.java
deleted file mode 100644
index 611d36853..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/Assert.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-/**
- * <code>Assert</code> is useful for for embedding runtime sanity checks
- * in code. The static predicate methods all test a condition and throw some
- * type of unchecked exception if the condition does not hold.
- * <p>
- * Assertion failure exceptions, like most runtime exceptions, are
- * thrown when something is misbehaving. Assertion failures are invariably
- * unspecified behavior; consequently, clients should never rely on
- * these being thrown (or not thrown). <b>If you find yourself in the
- * position where you need to catch an assertion failure, you have most
- * certainly written your program incorrectly.</b>
- * </p>
- * <p>
- * Note that an <code>assert</code> statement is slated to be added to the
- * Java language in JDK 1.4, rending this class obsolete.
- * </p>
- */
-public final class Assert {
-
- /**
- * <code>AssertionFailedException</code> is a runtime exception thrown
- * by some of the methods in <code>Assert</code>.
- * <p>
- * This class is not declared public to prevent some misuses; programs that catch
- * or otherwise depend on assertion failures are susceptible to unexpected
- * breakage when assertions in the code are added or removed.
- * </p>
- */
- private static class AssertionFailedException extends RuntimeException {
-
- /**
- * Constructs a new exception.
- */
- public AssertionFailedException() {
- }
-
- /**
- * Constructs a new exception with the given message.
- *
- * @param detail the detailed message
- */
- public AssertionFailedException(String detail) {
- super(detail);
- }
- }
-
- /* This class is not intended to be instantiated. */
- private Assert() {
- }
-
- /**
- * Asserts that an argument is legal. If the given boolean is
- * not <code>true</code>, an <code>IllegalArgumentException</code>
- * is thrown.
- *
- * @param expression the outcome of the check
- * @return <code>true</code> if the check passes (does not return
- * if the check fails)
- * @exception IllegalArgumentException if the legality test failed
- */
- public static boolean isLegal(boolean expression) {
- // succeed as quickly as possible
- if (expression) {
- return true;
- }
- return isLegal(expression, "");//$NON-NLS-1$
- }
-
- /**
- * Asserts that an argument is legal. If the given boolean is
- * not <code>true</code>, an <code>IllegalArgumentException</code>
- * is thrown.
- * The given message is included in that exception, to aid debugging.
- *
- * @param expression the outcome of the check
- * @param message the message to include in the exception
- * @return <code>true</code> if the check passes (does not return
- * if the check fails)
- * @exception IllegalArgumentException if the legality test failed
- */
- public static boolean isLegal(boolean expression, String message) {
- if (!expression)
- throw new IllegalArgumentException("assertion failed; " + message); //$NON-NLS-1$
- return expression;
- }
-
- /**
- * Asserts that the given object is not <code>null</code>. If this
- * is not the case, some kind of unchecked exception is thrown.
- * <p>
- * As a general rule, parameters passed to API methods must not be
- * <code>null</code> unless <b>explicitly</b> allowed in the method's
- * specification. Similarly, results returned from API methods are never
- * <code>null</code> unless <b>explicitly</b> allowed in the method's
- * specification. Implementations are encouraged to make regular use of
- * <code>Assert.isNotNull</code> to ensure that <code>null</code>
- * parameters are detected as early as possible.
- * </p>
- *
- * @param object the value to test
- * @exception Throwable an unspecified unchecked exception if the object
- * is <code>null</code>
- */
- public static void isNotNull(Object object) {
- // succeed as quickly as possible
- if (object != null) {
- return;
- }
- isNotNull(object, "");//$NON-NLS-1$
- }
-
- /**
- * Asserts that the given object is not <code>null</code>. If this
- * is not the case, some kind of unchecked exception is thrown.
- * The given message is included in that exception, to aid debugging.
- * <p>
- * As a general rule, parameters passed to API methods must not be
- * <code>null</code> unless <b>explicitly</b> allowed in the method's
- * specification. Similarly, results returned from API methods are never
- * <code>null</code> unless <b>explicitly</b> allowed in the method's
- * specification. Implementations are encouraged to make regular use of
- * <code>Assert.isNotNull</code> to ensure that <code>null</code>
- * parameters are detected as early as possible.
- * </p>
- *
- * @param object the value to test
- * @param message the message to include in the exception
- * @exception Throwable an unspecified unchecked exception if the object
- * is <code>null</code>
- */
- public static void isNotNull(Object object, String message) {
- if (object == null)
- throw new AssertionFailedException("null argument;" + message);//$NON-NLS-1$
- }
-
- /**
- * Asserts that the given boolean is <code>true</code>. If this
- * is not the case, some kind of unchecked exception is thrown.
- *
- * @param expression the outcome of the check
- * @return <code>true</code> if the check passes (does not return
- * if the check fails)
- */
- public static boolean isTrue(boolean expression) {
- // succeed as quickly as possible
- if (expression) {
- return true;
- }
- return isTrue(expression, "");//$NON-NLS-1$
- }
-
- /**
- * Asserts that the given boolean is <code>true</code>. If this
- * is not the case, some kind of unchecked exception is thrown.
- * The given message is included in that exception, to aid debugging.
- *
- * @param expression the outcome of the check
- * @param message the message to include in the exception
- * @return <code>true</code> if the check passes (does not return
- * if the check fails)
- */
- public static boolean isTrue(boolean expression, String message) {
- if (!expression)
- throw new AssertionFailedException("Assertion failed: "+message);//$NON-NLS-1$
- return expression;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/BadLocationException.java b/org.eclipse.text/src/org/eclipse/jface/text/BadLocationException.java
deleted file mode 100644
index 2ad447845..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/BadLocationException.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-
-/**
- * Indicates the attempt to access a non-existing position. The attempt has been
- * performed on a text store such as a document or string.
- */
-public class BadLocationException extends Exception {
-
- /**
- * Creates a new bad location exception.
- */
- public BadLocationException() {
- super();
- }
-
- /**
- * Creates a new bad location exception.
- *
- * @param message the exception message
- */
- public BadLocationException(String message) {
- super(message);
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/BadPartitioningException.java b/org.eclipse.text/src/org/eclipse/jface/text/BadPartitioningException.java
deleted file mode 100644
index 95a87ded3..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/BadPartitioningException.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-/**
- * Represents the attempt to refer to a non-existing document partitioning.
- *
- * @see org.eclipse.jface.text.IDocument
- * @see org.eclipse.jface.text.IDocumentExtension3
- * @since 3.0
- */
-public class BadPartitioningException extends Exception {
-
- /**
- * Creates a new bad partitioning exception.
- */
- public BadPartitioningException() {
- }
-
- /**
- * Creates a new bad partitioning exception.
- *
- * @param message message describing the exception
- */
- public BadPartitioningException(String message) {
- super(message);
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/BadPositionCategoryException.java b/org.eclipse.text/src/org/eclipse/jface/text/BadPositionCategoryException.java
deleted file mode 100644
index 379f2fc35..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/BadPositionCategoryException.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-
-/**
- * Indicates the attempt to access a non-existing position
- * category in a document.
- *
- * @see org.eclipse.jface.text.IDocument
- */
-public class BadPositionCategoryException extends Exception {
-
- /**
- * Creates a new bad position category exception.
- */
- public BadPositionCategoryException() {
- super();
- }
-
- /**
- * Creates a new bad position category exception.
- *
- * @param message the exception's message
- */
- public BadPositionCategoryException(String message) {
- super(message);
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/ConfigurableLineTracker.java b/org.eclipse.text/src/org/eclipse/jface/text/ConfigurableLineTracker.java
deleted file mode 100644
index 5db6b66b9..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/ConfigurableLineTracker.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-/**
- * Standard implementation of a generic
- * {@link org.eclipse.jface.text.ILineTracker}.
- * <p>
- * The line tracker can be configured with the set of legal line delimiters.
- * Line delimiters are unconstrained. The line delimiters are used to compute
- * the tracker's line structure. In the case of overlapping line delimiters, the
- * longest line delimiter is given precedence of the shorter ones.
- * <p>
- * This class is not intended to be subclassed.
- */
-public class ConfigurableLineTracker extends AbstractLineTracker {
-
-
- /** The strings which are considered being the line delimiter */
- private String[] fDelimiters;
- /** A predefined delimiter information which is always reused as return value */
- private DelimiterInfo fDelimiterInfo= new DelimiterInfo();
-
-
- /**
- * Creates a standard line tracker for the given line delimiters.
- *
- * @param legalLineDelimiters the tracker's legal line delimiters,
- * may not be <code>null</code> and must be longer than 0
- */
- public ConfigurableLineTracker(String[] legalLineDelimiters) {
- Assert.isTrue(legalLineDelimiters != null && legalLineDelimiters.length > 0);
- fDelimiters= legalLineDelimiters;
- }
-
- /*
- * @see org.eclipse.jface.text.ILineTracker#getLegalLineDelimiters()
- */
- public String[] getLegalLineDelimiters() {
- return fDelimiters;
- }
-
- /*
- * @see org.eclipse.jface.text.AbstractLineTracker#nextDelimiterInfo(java.lang.String, int)
- */
- protected DelimiterInfo nextDelimiterInfo(String text, int offset) {
- int[] info= TextUtilities.indexOf(fDelimiters, text, offset);
- if (info[0] == -1)
- return null;
-
- fDelimiterInfo.delimiterIndex= info[0];
- fDelimiterInfo.delimiter= fDelimiters[info[1]];
- fDelimiterInfo.delimiterLength= fDelimiterInfo.delimiter.length();
- return fDelimiterInfo;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/DefaultLineTracker.java b/org.eclipse.text/src/org/eclipse/jface/text/DefaultLineTracker.java
deleted file mode 100644
index 291003e98..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/DefaultLineTracker.java
+++ /dev/null
@@ -1,80 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-/**
- * Standard implementation of {@link org.eclipse.jface.text.ILineTracker}.
- * <p>
- * The line tracker considers the three common line delimiters which are '\n',
- * '\r', '\r\n'.
- * <p>
- * This class is not intended to be subclassed.
- */
-public class DefaultLineTracker extends AbstractLineTracker {
-
- /** The predefined delimiters of this tracker */
- public final static String[] DELIMITERS= { "\r", "\n", "\r\n" }; //$NON-NLS-3$ //$NON-NLS-1$ //$NON-NLS-2$
- /** A predefined delimiter information which is always reused as return value */
- private DelimiterInfo fDelimiterInfo= new DelimiterInfo();
-
-
- /**
- * Creates a standard line tracker.
- */
- public DefaultLineTracker() {
- }
-
- /*
- * @see org.eclipse.jface.text.ILineTracker#getLegalLineDelimiters()
- */
- public String[] getLegalLineDelimiters() {
- return DELIMITERS;
- }
-
- /*
- * @see org.eclipse.jface.text.AbstractLineTracker#nextDelimiterInfo(java.lang.String, int)
- */
- protected DelimiterInfo nextDelimiterInfo(String text, int offset) {
-
- char ch;
- int length= text.length();
- for (int i= offset; i < length; i++) {
-
- ch= text.charAt(i);
- if (ch == '\r') {
-
- if (i + 1 < length) {
- if (text.charAt(i + 1) == '\n') {
- fDelimiterInfo.delimiter= DELIMITERS[2];
- fDelimiterInfo.delimiterIndex= i;
- fDelimiterInfo.delimiterLength= 2;
- return fDelimiterInfo;
- }
- }
-
- fDelimiterInfo.delimiter= DELIMITERS[0];
- fDelimiterInfo.delimiterIndex= i;
- fDelimiterInfo.delimiterLength= 1;
- return fDelimiterInfo;
-
- } else if (ch == '\n') {
-
- fDelimiterInfo.delimiter= DELIMITERS[1];
- fDelimiterInfo.delimiterIndex= i;
- fDelimiterInfo.delimiterLength= 1;
- return fDelimiterInfo;
- }
- }
-
- return null;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/DefaultPositionUpdater.java b/org.eclipse.text/src/org/eclipse/jface/text/DefaultPositionUpdater.java
deleted file mode 100644
index b8c72476f..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/DefaultPositionUpdater.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-/**
- * Default implementation of {@link org.eclipse.jface.text.IPositionUpdater}.<p>
- * A default position updater must be configured with the position category
- * whose positions it will update. Other position categories are not affected
- * by this updater.<p>
- * This implementation follows the following specification:
- * <ul>
- * <li> Inserting or deleting text before the position shifts the position accordingly.
- * <li> Inserting text at the position offset shifts the position accordingly.
- * <li> Inserting or deleting text completely surrounded by the position shrinks or stretches the position.
- * <li> Inserting or deleting text after a position does not affect the position.
- * <li> Deleting text which completely contains the position deletes the position.
- * <li> Replacing text overlapping with the position considered as a sequence of first
- * deleting the replaced text and afterwards inserting the new text. Thus, a
- * position might first be shifted and shrink and then be stretched.
- * </ul>
- * This class can be used as is or be adapted by subclasses. Fields are protected to
- * allow subclasses direct access. Because of the frequency with which position updaters
- * are used this is a performance decision.
- */
-public class DefaultPositionUpdater implements IPositionUpdater {
-
- /** The position category the updater draws responsible for */
- private String fCategory;
-
- /** Caches the currently investigated position */
- protected Position fPosition;
- /**
- * Remembers the original state of the investigated position
- * @since 2.1
- */
- protected Position fOriginalPosition= new Position(0, 0);
- /** Caches the offset of the replaced text */
- protected int fOffset;
- /** Caches the length of the replaced text */
- protected int fLength;
- /** Caches the length of the newly inserted text */
- protected int fReplaceLength;
- /** Catches the document */
- protected IDocument fDocument;
-
-
- /**
- * Creates a new default position updater for the given category.
- *
- * @param category the category the updater is responsible for
- */
- public DefaultPositionUpdater(String category) {
- fCategory= category;
- }
-
- /**
- * Returns the category this updater is responsible for.
- *
- * @return the category this updater is responsible for
- */
- protected String getCategory() {
- return fCategory;
- }
-
- /**
- * Returns whether the current event describes a well formed replace
- * by which the current position is directly affected.
- *
- * @return <code>true</code> the current position is directly affected
- * @since 3.0
- */
- protected boolean isAffectingReplace() {
- return fLength > 0 && fReplaceLength > 0 && fPosition.length < fOriginalPosition.length;
- }
-
- /**
- * Adapts the currently investigated position to an insertion.
- */
- protected void adaptToInsert() {
-
- int myStart= fPosition.offset;
- int myEnd= fPosition.offset + fPosition.length - (isAffectingReplace() ? 0 : 1);
- myEnd= Math.max(myStart, myEnd);
-
- int yoursStart= fOffset;
- int yoursEnd= fOffset + fReplaceLength -1;
- yoursEnd= Math.max(yoursStart, yoursEnd);
-
- if (myEnd < yoursStart)
- return;
-
- if (fLength <= 0) {
-
- if (myStart < yoursStart)
- fPosition.length += fReplaceLength;
- else
- fPosition.offset += fReplaceLength;
-
- } else {
-
- if (myStart <= yoursStart && fOriginalPosition.offset <= yoursStart)
- fPosition.length += fReplaceLength;
- else
- fPosition.offset += fReplaceLength;
- }
- }
-
- /**
- * Adapts the currently investigated position to a deletion.
- */
- protected void adaptToRemove() {
-
- int myStart= fPosition.offset;
- int myEnd= fPosition.offset + fPosition.length -1;
- myEnd= Math.max(myStart, myEnd);
-
- int yoursStart= fOffset;
- int yoursEnd= fOffset + fLength -1;
- yoursEnd= Math.max(yoursStart, yoursEnd);
-
- if (myEnd < yoursStart)
- return;
-
- if (myStart <= yoursStart) {
-
- if (yoursEnd <= myEnd)
- fPosition.length -= fLength;
- else
- fPosition.length -= (myEnd - yoursStart +1);
-
- } else if (yoursStart < myStart) {
-
- if (yoursEnd < myStart)
- fPosition.offset -= fLength;
- else {
- fPosition.offset -= (myStart - yoursStart);
- fPosition.length -= (yoursEnd - myStart +1);
- }
-
- }
-
- // validate position to allowed values
- if (fPosition.offset < 0)
- fPosition.offset= 0;
-
- if (fPosition.length < 0)
- fPosition.length= 0;
- }
-
- /**
- * Adapts the currently investigated position to the replace operation.
- * First it checks whether the change replaces the whole range of the position.
- * If not, it performs first the deletion of the previous text and afterwards
- * the insertion of the new text.
- */
- protected void adaptToReplace() {
-
- if (fPosition.offset == fOffset && fPosition.length == fLength && fPosition.length > 0) {
-
- // replace the whole range of the position
- fPosition.length += (fReplaceLength - fLength);
- if (fPosition.length < 0) {
- fPosition.offset += fPosition.length;
- fPosition.length= 0;
- }
-
- } else {
-
- if (fLength > 0)
- adaptToRemove();
-
- if (fReplaceLength > 0)
- adaptToInsert();
- }
- }
-
- /**
- * Determines whether the currently investigated position has been deleted by
- * the replace operation specified in the current event. If so, it deletes
- * the position and removes it from the document's position category.
- *
- * @return <code>true</code> if position has been deleted
- */
- protected boolean notDeleted() {
-
- if (fOffset < fPosition.offset && (fPosition.offset + fPosition.length < fOffset + fLength)) {
-
- fPosition.delete();
-
- try {
- fDocument.removePosition(fCategory, fPosition);
- } catch (BadPositionCategoryException x) {
- }
-
- return false;
- }
-
- return true;
- }
-
- /*
- * @see org.eclipse.jface.text.IPositionUpdater#update(org.eclipse.jface.text.DocumentEvent)
- */
- public void update(DocumentEvent event) {
-
- try {
-
-
- fOffset= event.getOffset();
- fLength= event.getLength();
- fReplaceLength= (event.getText() == null ? 0 : event.getText().length());
- fDocument= event.getDocument();
-
- Position[] category= fDocument.getPositions(fCategory);
- for (int i= 0; i < category.length; i++) {
-
- fPosition= category[i];
- fOriginalPosition.offset= fPosition.offset;
- fOriginalPosition.length= fPosition.length;
-
- if (notDeleted())
- adaptToReplace();
- }
-
- } catch (BadPositionCategoryException x) {
- // do nothing
- }
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/Document.java b/org.eclipse.text/src/org/eclipse/jface/text/Document.java
deleted file mode 100644
index 5d8254b31..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/Document.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.text;
-
-
-/**
- * Default document implementation. Uses a
- * {@link org.eclipse.jface.text.GapTextStore}as default text store and a
- * {@link org.eclipse.jface.text.SequentialRewriteTextStore}when in sequential
- * rewrite mode.
- * <p>
- * The used line tracker considers the following strings as line delimiters
- * "\n", "\r", "\r\n".
- * <p>
- * The document is ready to use. It has a default position category for which a
- * default position updater is installed.
- *
- * @see org.eclipse.jface.text.GapTextStore
- * @see org.eclipse.jface.text.SequentialRewriteTextStore
- */
-public class Document extends AbstractDocument {
-
-
- /**
- * Creates a new empty document.
- */
- public Document() {
- super();
- setTextStore(new GapTextStore(50, 300));
- setLineTracker(new DefaultLineTracker());
- completeInitialization();
- }
-
- /**
- * Creates a new document with the given initial content.
- *
- * @param initialContent the document's initial content
- */
- public Document(String initialContent) {
- super();
- setTextStore(new GapTextStore(50, 300));
- setLineTracker(new DefaultLineTracker());
- getStore().set(initialContent);
- getTracker().set(initialContent);
- completeInitialization();
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension#startSequentialRewrite(boolean)
- * @since 2.0
- */
- public void startSequentialRewrite(boolean normalized) {
- ITextStore store= new SequentialRewriteTextStore(getStore());
- setTextStore(store);
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension#stopSequentialRewrite()
- * @since 2.0
- */
- public void stopSequentialRewrite() {
- if (getStore() instanceof SequentialRewriteTextStore) {
- SequentialRewriteTextStore srws= (SequentialRewriteTextStore) getStore();
- ITextStore source= srws.getSourceStore();
- setTextStore(source);
- srws.dispose();
- }
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/DocumentEvent.java b/org.eclipse.text/src/org/eclipse/jface/text/DocumentEvent.java
deleted file mode 100644
index d47b29e12..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/DocumentEvent.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.text;
-
-
-/**
- * Specification of changes applied to documents. All changes are represented as
- * replace commands, i.e. specifying a document range whose text gets replaced
- * with different text. In addition to this information, the event also contains
- * the changed document.
- *
- * @see org.eclipse.jface.text.IDocument
- */
-public class DocumentEvent {
-
- /** The changed document */
- public IDocument fDocument;
- /** The document offset */
- public int fOffset;
- /** Length of the replaced document text */
- public int fLength;
- /** Text inserted into the document */
- public String fText;
-
- /**
- * Creates a new document event.
- *
- * @param doc the changed document
- * @param offset the offset of the replaced text
- * @param length the length of the replaced text
- * @param text the substitution text
- */
- public DocumentEvent(IDocument doc, int offset, int length, String text) {
-
- Assert.isNotNull(doc);
- Assert.isTrue(offset >= 0);
- Assert.isTrue(length >= 0);
-
- fDocument= doc;
- fOffset= offset;
- fLength= length;
- fText= text;
- }
-
- /**
- * Creates a new, not initialized document event.
- */
- public DocumentEvent() {
- }
-
- /**
- * Returns the changed document.
- *
- * @return the changed document
- */
- public IDocument getDocument() {
- return fDocument;
- }
-
- /**
- * Returns the offset of the change.
- *
- * @return the offset of the change
- */
- public int getOffset() {
- return fOffset;
- }
-
- /**
- * Returns the length of the replaced text.
- *
- * @return the length of the replaced text
- */
- public int getLength() {
- return fLength;
- }
-
- /**
- * Returns the text that has been inserted.
- *
- * @return the text that has been inserted
- */
- public String getText() {
- return fText;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/DocumentPartitioningChangedEvent.java b/org.eclipse.text/src/org/eclipse/jface/text/DocumentPartitioningChangedEvent.java
deleted file mode 100644
index 986da9d9c..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/DocumentPartitioningChangedEvent.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-
-/**
- * Event describing the change of document partitionings.
- *
- * @see org.eclipse.jface.text.IDocumentExtension3
- * @since 3.0
- */
-public class DocumentPartitioningChangedEvent {
-
- /** The document whose partitionings changed */
- private final IDocument fDocument;
- /** The map of partitionings to changed regions. */
- private final Map fMap= new HashMap();
-
-
- /**
- * Creates a new document partitioning changed event for the given document.
- * Initially this event is empty, i.e. does not describe any change.
- *
- * @param document the changed document
- */
- public DocumentPartitioningChangedEvent(IDocument document) {
- fDocument= document;
- }
-
- /**
- * Returns the changed document.
- *
- * @return the changed document
- */
- public IDocument getDocument() {
- return fDocument;
- }
-
- /**
- * Returns the changed region of the given partitioning or <code>null</code>
- * if the given partitioning did not change.
- *
- * @param partitioning the partitioning
- * @return the changed region of the given partitioning or <code>null</code>
- */
- public IRegion getChangedRegion(String partitioning) {
- return (IRegion) fMap.get(partitioning);
- }
-
- /**
- * Returns the set of changed partitionings.
- *
- * @return the set of changed partitionings
- */
- public String[] getChangedPartitionings() {
- String[] partitionings= new String[fMap.size()];
- fMap.keySet().toArray(partitionings);
- return partitionings;
- }
-
- /**
- * Sets the specified range as changed region for the given partitioning.
- *
- * @param partitioning the partitioning
- * @param offset the region offset
- * @param length the region length
- */
- public void setPartitionChange(String partitioning, int offset, int length) {
- Assert.isNotNull(partitioning);
- fMap.put(partitioning, new Region(offset, length));
- }
-
- /**
- * Returns <code>true</code> if the set of changed partitionings is empty,
- * <code>false</code> otherwise.
- *
- * @return <code>true</code> if the set of changed partitionings is empty
- */
- public boolean isEmpty() {
- return fMap.isEmpty();
- }
-
- /**
- * Returns the coverage of this event. This is the minimal region that
- * contains all changed regions of all changed partitionings.
- *
- * @return the coverage of this event
- */
- public IRegion getCoverage() {
- if (fMap.isEmpty())
- return new Region(0, 0);
-
- int offset= -1;
- int endOffset= -1;
- Iterator e= fMap.values().iterator();
- while (e.hasNext()) {
- IRegion r= (IRegion) e.next();
-
- if (offset < 0 || r.getOffset() < offset)
- offset= r.getOffset();
-
- int end= r.getOffset() + r.getLength();
- if (end > endOffset)
- endOffset= end;
- }
-
- return new Region(offset, endOffset - offset);
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/FindReplaceDocumentAdapter.java b/org.eclipse.text/src/org/eclipse/jface/text/FindReplaceDocumentAdapter.java
deleted file mode 100644
index 8b82bfba8..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/FindReplaceDocumentAdapter.java
+++ /dev/null
@@ -1,317 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.text;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.regex.PatternSyntaxException;
-
-
-/**
- * Provides search and replace operations on
- * {@link org.eclipse.jface.text.IDocument}.
- * <p>
- * Replaces
- * {@link org.eclipse.jface.text.IDocument#search(int, String, boolean, boolean, boolean)}.
- *
- * @since 3.0
- */
-public class FindReplaceDocumentAdapter implements CharSequence {
-
- /**
- * Internal type for operation codes.
- */
- private static class FindReplaceOperationCode {
- }
-
- // Find/replace operation codes.
- private static final FindReplaceOperationCode FIND_FIRST= new FindReplaceOperationCode();
- private static final FindReplaceOperationCode FIND_NEXT= new FindReplaceOperationCode();
- private static final FindReplaceOperationCode REPLACE= new FindReplaceOperationCode();
- private static final FindReplaceOperationCode REPLACE_FIND_NEXT= new FindReplaceOperationCode();
-
- /**
- * The adapted document.
- */
- private IDocument fDocument;
-
- /**
- * State for findReplace.
- */
- private FindReplaceOperationCode fFindReplaceState= null;
-
- /**
- * The matcher used in findReplace.
- */
- private Matcher fFindReplaceMatcher;
-
- /**
- * The match offset from the last findReplace call.
- */
- private int fFindReplaceMatchOffset;
-
- /**
- * Constructs a new find replace document adapter.
- *
- * @param document the adapted document
- */
- public FindReplaceDocumentAdapter(IDocument document) {
- Assert.isNotNull(document);
- fDocument= document;
- }
-
- /**
- * Returns the location of a given string in this adapter's document based on a set of search criteria.
- *
- * @param startOffset document offset at which search starts
- * @param findString the string to find
- * @param forwardSearch the search direction
- * @param caseSensitive indicates whether lower and upper case should be distinguished
- * @param wholeWord indicates whether the findString should be limited by white spaces as
- * defined by Character.isWhiteSpace. Must not be used in combination with <code>regExSearch</code>.
- * @param regExSearch if <code>true</code> findString represents a regular expression
- * Must not be used in combination with <code>wholeWord</code>.
- * @return the find or replace region or <code>null</code> if there was no match
- * @throws BadLocationException if startOffset is an invalid document offset
- * @throws PatternSyntaxException if a regular expression has invalid syntax
- */
- public IRegion find(int startOffset, String findString, boolean forwardSearch, boolean caseSensitive, boolean wholeWord, boolean regExSearch) throws BadLocationException {
- Assert.isTrue(!(regExSearch && wholeWord));
-
- // Adjust offset to special meaning of -1
- if (startOffset == -1 && forwardSearch)
- startOffset= 0;
- if (startOffset == -1 && !forwardSearch)
- startOffset= length() - 1;
-
- return findReplace(FIND_FIRST, startOffset, findString, null, forwardSearch, caseSensitive, wholeWord, regExSearch);
- }
-
- /**
- * Stateful findReplace executes a FIND, REPLACE, REPLACE_FIND or FIND_FIRST operation.
- * In case of REPLACE and REPLACE_FIND it sends a <code>DocumentEvent</code> to all
- * registered <code>IDocumentListener</code>.
- *
- * @param startOffset document offset at which search starts
- * this value is only used in the FIND_FIRST operation and otherwise ignored
- * @param findString the string to find
- * this value is only used in the FIND_FIRST operation and otherwise ignored
- * @param replaceText the string to replace the current match
- * this value is only used in the REPLACE and REPLACE_FIND operations and otherwise ignored
- * @param forwardSearch the search direction
- * @param caseSensitive indicates whether lower and upper case should be distinguished
- * @param wholeWord indicates whether the findString should be limited by white spaces as
- * defined by Character.isWhiteSpace. Must not be used in combination with <code>regExSearch</code>.
- * @param regExSearch if <code>true</code> this operation represents a regular expression
- * Must not be used in combination with <code>wholeWord</code>.
- * @param operationCode specifies what kind of operation is executed
- * @return the find or replace region or <code>null</code> if there was no match
- * @throws BadLocationException if startOffset is an invalid document offset
- * @throws IllegalStateException if a REPLACE or REPLACE_FIND operation is not preceded by a successful FIND operation
- * @throws PatternSyntaxException if a regular expression has invalid syntax
- */
- private IRegion findReplace(final FindReplaceOperationCode operationCode, int startOffset, String findString, String replaceText, boolean forwardSearch, boolean caseSensitive, boolean wholeWord, boolean regExSearch) throws BadLocationException {
-
- // Validate option combinations
- Assert.isTrue(!(regExSearch && wholeWord));
-
- // Validate state
- if ((operationCode == REPLACE || operationCode == REPLACE_FIND_NEXT) && (fFindReplaceState != FIND_FIRST && fFindReplaceState != FIND_NEXT))
- throw new IllegalStateException("illegal findReplace state: cannot replace without preceding find"); //$NON-NLS-1$
-
- if (operationCode == FIND_FIRST) {
- // Reset
-
- if (findString == null || findString.length() == 0)
- return null;
-
- // Validate start offset
- if (startOffset < 0 || startOffset >= length())
- throw new BadLocationException();
-
- int patternFlags= 0;
-
- if (regExSearch)
- patternFlags |= Pattern.MULTILINE;
-
- if (!caseSensitive)
- patternFlags |= Pattern.CASE_INSENSITIVE;
-
- if (wholeWord)
- findString= "\\b" + findString + "\\b"; //$NON-NLS-1$ //$NON-NLS-2$
-
- if (!regExSearch && !wholeWord)
- findString= asRegPattern(findString);
-
- fFindReplaceMatchOffset= startOffset;
- if (fFindReplaceMatcher != null && fFindReplaceMatcher.pattern().pattern().equals(findString) && fFindReplaceMatcher.pattern().flags() == patternFlags) {
- /*
- * Commented out for optimization:
- * The call is not needed since FIND_FIRST uses find(int) which resets the matcher
- */
- // fFindReplaceMatcher.reset();
- } else {
- Pattern pattern= Pattern.compile(findString, patternFlags);
- fFindReplaceMatcher= pattern.matcher(this);
- }
- }
-
- // Set state
- fFindReplaceState= operationCode;
-
- if (operationCode == REPLACE || operationCode == REPLACE_FIND_NEXT) {
- if (regExSearch) {
- Pattern pattern= fFindReplaceMatcher.pattern();
- Matcher replaceTextMatcher= pattern.matcher(fFindReplaceMatcher.group());
- try {
- replaceText= replaceTextMatcher.replaceFirst(replaceText);
- } catch (IndexOutOfBoundsException ex) {
- throw new PatternSyntaxException(ex.getLocalizedMessage(), replaceText, -1);
- }
- }
-
- int offset= fFindReplaceMatcher.start();
- fDocument.replace(offset, fFindReplaceMatcher.group().length(), replaceText);
-
- if (operationCode == REPLACE) {
- return new Region(offset, replaceText.length());
- }
- }
-
- if (operationCode != REPLACE) {
- if (forwardSearch) {
-
- boolean found= false;
- if (operationCode == FIND_FIRST)
- found= fFindReplaceMatcher.find(startOffset);
- else
- found= fFindReplaceMatcher.find();
-
- if (operationCode == REPLACE_FIND_NEXT)
- fFindReplaceState= FIND_NEXT;
-
- if (found && fFindReplaceMatcher.group().length() > 0) {
- return new Region(fFindReplaceMatcher.start(), fFindReplaceMatcher.group().length());
- } else {
- return null;
- }
- } else { // backward search
-
- boolean found= fFindReplaceMatcher.find(0);
- int index= -1;
- int length= -1;
- while (found && fFindReplaceMatcher.start() <= fFindReplaceMatchOffset) {
- index= fFindReplaceMatcher.start();
- length= fFindReplaceMatcher.group().length();
- found= fFindReplaceMatcher.find(index + 1);
- }
- fFindReplaceMatchOffset= index;
- if (index > -1) {
- // must set matcher to correct position
- fFindReplaceMatcher.find(index);
- return new Region(index, length);
- } else
- return null;
- }
- }
- return null;
- }
-
- /**
- * Converts a non-regex string to a pattern
- * that can be used with the regex search engine.
- *
- * @param string the non-regex pattern
- * @return the string converted to a regex pattern
- */
- private String asRegPattern(String string) {
- StringBuffer out= new StringBuffer(string.length());
- boolean quoting= false;
-
- for (int i= 0, length= string.length(); i < length; i++) {
- char ch= string.charAt(i);
- if (ch == '\\') {
- if (quoting) {
- out.append("\\E"); //$NON-NLS-1$
- quoting= false;
- }
- out.append("\\\\"); //$NON-NLS-1$
- continue;
- }
- if (!quoting) {
- out.append("\\Q"); //$NON-NLS-1$
- quoting= true;
- }
- out.append(ch);
- }
- if (quoting)
- out.append("\\E"); //$NON-NLS-1$
-
- return out.toString();
- }
-
- /**
- * Substitutes the previous match with the given text.
- * Sends a <code>DocumentEvent</code> to all registered <code>IDocumentListener</code>.
- *
- * @param text the substitution text
- * @param regExReplace if <code>true</code> <code>text</code> represents a regular expression
- * @return the replace region or <code>null</code> if there was no match
- * @throws BadLocationException if startOffset is an invalid document offset
- * @throws IllegalStateException if a REPLACE or REPLACE_FIND operation is not preceded by a successful FIND operation
- * @throws PatternSyntaxException if a regular expression has invalid syntax
- *
- * @see DocumentEvent
- * @see IDocumentListener
- */
- public IRegion replace(String text, boolean regExReplace) throws BadLocationException {
- return findReplace(REPLACE, -1, null, text, false, false, false, regExReplace);
- }
-
- // ---------- CharSequence implementation ----------
-
- /*
- * @see java.lang.CharSequence#length()
- */
- public int length() {
- return fDocument.getLength();
- }
-
- /*
- * @see java.lang.CharSequence#charAt(int)
- */
- public char charAt(int index) {
- try {
- return fDocument.getChar(index);
- } catch (BadLocationException e) {
- throw new IndexOutOfBoundsException();
- }
- }
-
- /*
- * @see java.lang.CharSequence#subSequence(int, int)
- */
- public CharSequence subSequence(int start, int end) {
- try {
- return fDocument.get(start, end - start);
- } catch (BadLocationException e) {
- throw new IndexOutOfBoundsException();
- }
- }
-
- /*
- * @see java.lang.Object#toString()
- */
- public String toString() {
- return fDocument.get();
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/GapTextStore.java b/org.eclipse.text/src/org/eclipse/jface/text/GapTextStore.java
deleted file mode 100644
index d6a8c4e36..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/GapTextStore.java
+++ /dev/null
@@ -1,258 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-
-/**
- * Implements a gap managing text store. The gap text store
- * relies on the assumption that subsequent changes of a document are co-located.
- * The start of the gap is always moved to the location of the last change. The
- * size of the gap varies between the low water mark and the high water mark. <p>
- * This class is not intended to be subclassed.
- */
-public class GapTextStore implements ITextStore {
-
- /** The store's content */
- private char[] fContent= new char[0];
- /** Starting index of the gap */
- private int fGapStart= -1;
- /** End index of the gap */
- private int fGapEnd= -1;
-
- /** The high water mark. If the gap is larger than this, it will be shrunken */
- private int fHighWatermark;
- /** The low water mark, If this gap is smaller than this, it will be extended */
- private int fLowWatermark;
-
- /**
- * Creates a new empty text store using the specified low and high watermarks.
- *
- * @param lowWatermark if this gap is ever smaller than this, it will automatically be extended
- * @param highWatermark if the gap is ever larger than this, it will automatically be shrunken
- */
- public GapTextStore(int lowWatermark, int highWatermark) {
- Assert.isTrue(lowWatermark < highWatermark);
- fLowWatermark= lowWatermark;
- fHighWatermark= highWatermark;
- }
-
- /**
- * Adjusts the gap so that is at the right offset and capable of handling
- * the addition of a specified number of characters without having to be shifted.
- * The <code>sizeHint</code> represents the range that will be filled afterwards.
- * If the gap is already at the right offset, it must only be
- * resized if it will be no longer between the low and high watermark. However,
- * on delete (sizeHint &lt; 0) at the edges of the gap, the gap is only enlarged.
- *
- * @param offset the offset at which the change happens
- * @param sizeHint the number of character which will be inserted
- */
- private void adjustGap(int offset, int sizeHint) {
-
- if (offset == fGapStart) {
- int size= (fGapEnd - fGapStart) - sizeHint;
- if (fLowWatermark <= size && size <= fHighWatermark)
- return;
- }
-
- moveAndResizeGap(offset, sizeHint);
- }
-
- /**
- * Moves the gap to the specified offset and adjust its size to the
- * anticipated change size. The given size represents the expected
- * range of the gap that will be filled after the gap has been moved.
- * Thus the gap is resized to actual size + the specified size and
- * moved to the given offset.
- *
- * @param offset the offset where the gap is moved to
- * @param size the anticipated size of the change
- */
- private void moveAndResizeGap(int offset, int size) {
-
- char[] content= null;
- int oldSize= fGapEnd - fGapStart;
- int newSize= fHighWatermark + size;
-
-
- if (newSize < 0) {
-
- if (oldSize > 0) {
- content= new char[fContent.length - oldSize];
- System.arraycopy(fContent, 0, content, 0, fGapStart);
- System.arraycopy(fContent, fGapEnd, content, fGapStart, content.length - fGapStart);
- fContent= content;
- }
- fGapStart= fGapEnd= offset;
- return;
- }
-
-
- content= new char[fContent.length + (newSize - oldSize)];
-
- int newGapStart= offset;
- int newGapEnd= newGapStart + newSize;
-
- if (oldSize == 0) {
-
- System.arraycopy(fContent, 0, content, 0, newGapStart);
- System.arraycopy(fContent, newGapStart, content, newGapEnd, content.length - newGapEnd);
-
- } else if (newGapStart < fGapStart) {
-
- int delta= fGapStart - newGapStart;
- System.arraycopy(fContent, 0, content, 0, newGapStart);
- System.arraycopy(fContent, newGapStart, content, newGapEnd, delta);
- System.arraycopy(fContent, fGapEnd, content, newGapEnd + delta, fContent.length - fGapEnd);
-
- } else {
-
- int delta= newGapStart - fGapStart;
- System.arraycopy(fContent, 0, content, 0, fGapStart);
- System.arraycopy(fContent, fGapEnd, content, fGapStart, delta);
- System.arraycopy(fContent, fGapEnd + delta, content, newGapEnd, content.length - newGapEnd);
- }
-
-
- fContent= content;
- fGapStart= newGapStart;
- fGapEnd= newGapEnd;
- }
-
- /*
- * @see org.eclipse.jface.text.ITextStore#get(int)
- */
- public char get(int offset) {
-
- if (offset < fGapStart)
- return fContent[offset];
-
- int gapLength= fGapEnd - fGapStart;
- return fContent[offset + gapLength];
- }
-
- /*
- * @see org.eclipse.jface.text.ITextStore#get(int, int)
- */
- public String get(int offset, int length) {
-
- int end= offset + length;
-
- if (fContent == null)
- return ""; //$NON-NLS-1$
-
- if (end <= fGapStart)
- return new String(fContent, offset, length);
-
- if (fGapStart < offset) {
- int gapLength= fGapEnd - fGapStart;
- return new String(fContent, offset + gapLength , length);
- }
-
- StringBuffer buf= new StringBuffer();
- buf.append(fContent, offset, fGapStart - offset);
- buf.append(fContent, fGapEnd, end - fGapStart);
- return buf.toString();
- }
-
- /*
- * @see org.eclipse.jface.text.ITextStore#getLength()
- */
- public int getLength() {
- int length= fGapEnd - fGapStart;
- return (fContent.length - length);
- }
-
- /*
- * @see org.eclipse.jface.text.ITextStore#replace(int, int, java.lang.String)
- */
- public void replace(int offset, int length, String text) {
-
- int textLength= (text == null ? 0 : text.length());
-
- // handle delete at the edges of the gap
- if (textLength == 0) {
- if (offset <= fGapStart && offset + length >= fGapStart && fGapStart > -1 && fGapEnd > -1) {
- length -= fGapStart - offset;
- fGapStart= offset;
- fGapEnd += length;
- return;
- }
- }
-
- // move gap
- adjustGap(offset + length, textLength - length);
-
- // overwrite
- int min= Math.min(textLength, length);
- for (int i= offset, j= 0; i < offset + min; i++, j++)
- fContent[i]= text.charAt(j);
-
- if (length > textLength) {
- // enlarge the gap
- fGapStart -= (length - textLength);
- } else if (textLength > length) {
- // shrink gap
- fGapStart += (textLength - length);
- for (int i= length; i < textLength; i++)
- fContent[offset + i]= text.charAt(i);
- }
- }
-
- /**
- * Sets the content to <code>text</code> and removes the gap
- * since there are no sensible predictions about
- * where the next change will occur.
- *
- * @see ITextStore#set(String)
- */
- public void set(String text) {
-
- if (text == null)
- text= ""; //$NON-NLS-1$
-
- fContent= text.toCharArray();
-
- fGapStart= -1;
- fGapEnd= -1;
- }
-
- /**
- * Returns a copy of the content of this text store.
- * For internal use only.
- *
- * @return a copy of the content of this text store
- */
- protected String getContentAsString() {
- return new String(fContent);
- }
-
- /**
- * Returns the start index of the gap managed by this text store.
- * For internal use only.
- *
- * @return the start index of the gap managed by this text store
- */
- protected int getGapStartIndex() {
- return fGapStart;
- }
-
- /**
- * Returns the end index of the gap managed by this text store.
- * For internal use only.
- *
- * @return the end index of the gap managed by this text store
- */
- protected int getGapEndIndex() {
- return fGapEnd;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/IDocument.java b/org.eclipse.text/src/org/eclipse/jface/text/IDocument.java
deleted file mode 100644
index eff3df750..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/IDocument.java
+++ /dev/null
@@ -1,637 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.text;
-
-
-/**
- * An <code>IDocument</code> represents text providing support for
- * <ul>
- * <li> text manipulation
- * <li> positions
- * <li> partitions
- * <li> line information
- * <li> document change listeners
- * <li> document partition change listeners
- * </ul>
- *
- * A document allows to set its content and to manipulate it. For manipulation
- * a document provides the <code>replace</code> method which substitutes a given
- * string for a specified text range in the document. On each document change, all
- * registered document listeners are informed exactly once.
- *
- * Positions are stickers to the document's text that are updated when the
- * document is changed. Positions are updated by {@link org.eclipse.jface.text.IPositionUpdater}s. Position
- * updaters are managed as a list. The list defines the sequence in which position
- * updaters are invoked. This way, position updaters may rely on each other.
- * Positions are grouped into categories. A category is a ordered list of positions.
- * the document defines the order of position in a category based on the position's offset
- * based on the implementation of the method <code>computeIndexInCategory</code>.
- * Each document must support a default position category whose name is specified by this
- * interface.<p>
- *
- * A document can be considered consisting of a sequence of not overlapping partitions.
- * A partition is defined by its offset, its length, and its type. Partitions are
- * updated on every document manipulation and ensured to be up-to-date when the document
- * listeners are informed. A document uses an <code>IDocumentPartitioner</code> to
- * manage its partitions. A document may be unpartitioned which happens when there is no
- * partitioner. In this case, the document is considered as one single partition of a
- * default type. The default type is specified by this interface. If a document change
- * changes the document's partitioning all registered partitioning listeners are
- * informed exactly once. The extension interface {@link org.eclipse.jface.text.IDocumentExtension3}
- * introduced in version 3.0 extends the concept of partitions and allows a document to
- * not only manage one but multiple partitioning. Each partitioning has an id which must
- * be used to refer to a particular partitioning.<p>
- *
- * An <code>IDocument</code> provides methods to map line numbers and character
- * positions onto each other based on the document's line delimiters. When moving text
- * between documents using different line delimiters, the text must be converted to
- * use the target document's line delimiters.<p>
- *
- * <code>IDocument</code> throws <code>BadLocationException</code> if the parameters of
- * queries or manipulation requests are not inside the bounds of the document. The purpose
- * of this style of exception handling is
- * <ul>
- * <li> prepare document for multi-thread access
- * <li> allow clients to implement backtracking recovery methods
- * <li> prevent clients from up-front contract checking when dealing with documents.
- * </ul>
- *
- * A document support for searching has deprecated since version 3.0. The recommended way
- * for searching is to use a {@link org.eclipse.jface.text.FindReplaceDocumentAdapter}.<p>
- *
- * In order to provide backward compatibility for clients of <code>IDocument</code>, extension
- * interfaces are used to provide a means of evolution. The following extension interfaces
- * exist:
- * <ul>
- * <li> {@link org.eclipse.jface.text.IDocumentExtension} since version 2.0 introducing the concept
- * of post notification replaces in order to allow document listeners to manipulate the document
- * while receiving a document change notification </li>
- * <li> {@link org.eclipse.jface.text.IDocumentExtension2} since version 2.1 introducing configuration
- * methods for post notification replaces and document change notification. </li>
- * <li> {@link org.eclipse.jface.text.IDocumentExtension3} since version 3.0 replacing the original
- * partitioning concept by allowing multiple partitionings at the same time and introducing zero-
- * length partitions in conjunction with the distinction between open and closed partitions. </li>
- * </ul>
- *
- * Clients may implement this interface and its extension interfaces or use the default
- * implementation provided by <code>AbstractDocument</code> and <code>Document</code>.
- *
- * @see org.eclipse.jface.text.IDocumentExtension
- * @see org.eclipse.jface.text.IDocumentExtension2
- * @see org.eclipse.jface.text.IDocumentExtension3
- * @see org.eclipse.jface.text.Position
- * @see org.eclipse.jface.text.IPositionUpdater
- * @see org.eclipse.jface.text.IDocumentPartitioner
- * @see org.eclipse.jface.text.ILineTracker
- * @see org.eclipse.jface.text.IDocumentListener
- * @see org.eclipse.jface.text.IDocumentPartitioningListener
- */
-public interface IDocument {
-
-
- /**
- * The identifier of the default position category.
- */
- final static String DEFAULT_CATEGORY= "__dflt_position_category"; //$NON-NLS-1$
-
- /**
- * The identifier of the default partition content type.
- */
- final static String DEFAULT_CONTENT_TYPE= "__dftl_partition_content_type"; //$NON-NLS-1$
-
-
-
-
- /* --------------- text access and manipulation --------------------------- */
-
- /**
- * Returns the character at the given document offset in this document.
- *
- * @param offset a document offset
- * @return the character at the offset
- * @exception BadLocationException if the offset is invalid in this document
- */
- char getChar(int offset) throws BadLocationException;
-
- /**
- * Returns the number of characters in this document.
- *
- * @return the number of characters in this document
- */
- int getLength();
-
- /**
- * Returns this document's complete text.
- *
- * @return the document's complete text
- */
- String get();
-
- /**
- * Returns this document's text for the specified range.
- *
- * @param offset the document offset
- * @param length the length of the specified range
- * @return the document's text for the specified range
- * @exception BadLocationException if the range is invalid in this document
- */
- String get(int offset, int length) throws BadLocationException;
-
- /**
- * Replaces the content of the document with the given text.
- * Sends a <code>DocumentEvent</code> to all registered <code>IDocumentListener</code>.
- * This method is a convenience method for <code>replace(0, getLength(), text)</code>.
- *
- * @param text the new content of the document
- *
- * @see DocumentEvent
- * @see IDocumentListener
- */
- void set(String text);
-
- /**
- * Substitutes the given text for the specified document range.
- * Sends a <code>DocumentEvent</code> to all registered <code>IDocumentListener</code>.
- *
- * @param offset the document offset
- * @param length the length of the specified range
- * @param text the substitution text
- * @exception BadLocationException if the offset is invalid in this document
- *
- * @see DocumentEvent
- * @see IDocumentListener
- */
- void replace(int offset, int length, String text) throws BadLocationException;
-
- /**
- * Registers the document listener with the document. After registration
- * the IDocumentListener is informed about each change of this document.
- * If the listener is already registered nothing happens.<p>
- * An <code>IDocumentListener</code> may call back to this method
- * when being inside a document notification.
- *
- * @param listener the listener to be registered
- */
- void addDocumentListener(IDocumentListener listener);
-
- /**
- * Removes the listener from the document's list of document listeners.
- * If the listener is not registered with the document nothing happens.<p>
- * An <code>IDocumentListener</code> may call back to this method
- * when being inside a document notification.
- *
- * @param listener the listener to be removed
- */
- void removeDocumentListener(IDocumentListener listener);
-
- /**
- * Adds the given document listener as one which is notified before
- * those document listeners added with <code>addDocumentListener</code>
- * are notified. If the given listener is also registered using
- * <code>addDocumentListener</code> it will be notified twice.
- * If the listener is already registered nothing happens.<p>
- *
- * This method is not for public use.
- *
- * @param documentAdapter the listener to be added as pre-notified document listener
- *
- * @see #removePrenotifiedDocumentListener(IDocumentListener)
- */
- void addPrenotifiedDocumentListener(IDocumentListener documentAdapter);
-
- /**
- * Removes the given document listener from the document's list of
- * pre-notified document listeners. If the listener is not registered
- * with the document nothing happens. <p>
- *
- * This method is not for public use.
- *
- * @param documentAdapter the listener to be removed
- *
- * @see #addPrenotifiedDocumentListener(IDocumentListener)
- */
- void removePrenotifiedDocumentListener(IDocumentListener documentAdapter);
-
-
-
- /* -------------------------- positions ----------------------------------- */
-
- /**
- * Adds a new position category to the document. If the position category
- * already exists nothing happens.
- *
- * @param category the category to be added
- */
- void addPositionCategory(String category);
-
- /**
- * Deletes the position category from the document. All positions
- * in this category are thus deleted as well.
- *
- * @param category the category to be removed
- * @exception BadPositionCategoryException if category is undefined in this document
- */
- void removePositionCategory(String category) throws BadPositionCategoryException;
-
- /**
- * Returns all position categories of this document. This
- * includes the default position category.
- *
- * @return the document's position categories
- */
- String[] getPositionCategories();
-
- /**
- * Checks the presence of the specified position category.
- *
- * @param category the category to check
- * @return <code>true</code> if category is defined
- */
- boolean containsPositionCategory(String category);
-
- /**
- * Adds the position to the document's default position category.
- * This is a convenience method for <code>addPosition(DEFAULT_CATEGORY, position)</code>.
- *
- * @param position the position to be added
- * @exception BadLocationException if position describes an invalid range in this document
- */
- void addPosition(Position position) throws BadLocationException;
-
- /**
- * Removes the given position from the document's default position category.
- * This is a convenience method for <code>removePosition(DEFAULT_CATEGORY, position)</code>.
- *
- * @param position the position to be removed
- */
- void removePosition(Position position);
-
- /**
- * Adds the position to the specified position category of the document.
- * A position that has been added to a position category is updated on each
- * change applied to the document. Positions may be added multiple times.
- * The order of the category is maintained.
- *
- * @param category the category to which to add
- * @param position the position to be added
- * @exception BadLocationException if position describes an invalid range in this document
- * @exception BadPositionCategoryException if the category is undefined in this document
- */
- void addPosition(String category, Position position) throws BadLocationException, BadPositionCategoryException;
-
- /**
- * Removes the given position from the specified position category.
- * If the position is not part of the specified category nothing happens.
- * If the position has been added multiple times, only the first occurrence is deleted.
- *
- * @param category the category from which to delete
- * @param position the position to be deleted
- * @exception BadPositionCategoryException if category is undefined in this document
- */
- void removePosition(String category, Position position) throws BadPositionCategoryException;
-
- /**
- * Returns all positions of the given position category.
- * The positions are ordered according to the category's order.
- * Manipulating this list does not affect the document, but manipulating the
- * position does affect the document.
- *
- * @param category the category
- * @return the list of all positions
- * @exception BadPositionCategoryException if category is undefined in this document
- */
- Position[] getPositions(String category) throws BadPositionCategoryException;
-
- /**
- * Determines whether a position described by the parameters is managed by this document.
- *
- * @param category the category to check
- * @param offset the offset of the position to find
- * @param length the length of the position to find
- * @return <code>true</code> if position is found
- */
- boolean containsPosition(String category, int offset, int length);
-
- /**
- * Computes the index at which a <code>Position</code> with the
- * specified offset would be inserted into the given category. As the
- * ordering inside a category only depends on the offset, the index must be
- * chosen to be the first of all positions with the same offset.
- *
- * @param category the category in which would be added
- * @param offset the position offset to be considered
- * @return the index into the category
- * @exception BadLocationException if offset is invalid in this document
- * @exception BadPositionCategoryException if category is undefined in this document
- */
- int computeIndexInCategory(String category, int offset) throws BadLocationException, BadPositionCategoryException;
-
- /**
- * Appends a new position updater to the document's list of position updaters.
- * Position updaters may be added multiple times.<p>
- * An <code>IPositionUpdater</code> may call back to this method
- * when being inside a document notification.
- *
- * @param updater the updater to be added
- */
- void addPositionUpdater(IPositionUpdater updater);
-
- /**
- * Removes the position updater from the document's list of position updaters.
- * If the position updater has multiple occurrences only the first occurrence is
- * removed. If the position updater is not registered with this document, nothing
- * happens.<p>
- * An <code>IPositionUpdater</code> may call back to this method
- * when being inside a document notification.
- *
- * @param updater the updater to be removed
- */
- void removePositionUpdater(IPositionUpdater updater);
-
- /**
- * Inserts the position updater at the specified index in the document's
- * list of position updaters. Positions updaters may be inserted multiple times.<p>
- * An <code>IPositionUpdater</code> may call back to this method
- * when being inside a document notification.
- *
- * @param updater the updater to be inserted
- * @param index the index in the document's updater list
- */
- void insertPositionUpdater(IPositionUpdater updater, int index);
-
- /**
- * Returns the list of position updaters attached to the document.
- *
- * @return the list of position updaters
- */
- IPositionUpdater[] getPositionUpdaters();
-
-
-
-
- /* -------------------------- partitions ---------------------------------- */
-
- /**
- * Returns the set of legal content types of document partitions.
- * This set can be empty. The set can contain more content types than
- * contained by the result of <code>getPartitioning(0, getLength())</code>.
- * <p>
- * Use {@link IDocumentExtension3#getLegalContentTypes(String)} when the document
- * supports multiple partitionings. In that case this method is equivalent to:
- * <pre>
- * IDocumentExtension3 extension= (IDocumentExtension3) document;
- * return extension.getLegalContentTypes(IDocumentExtension3.DEFAULT_PARTITIONING);
- * </pre>
- *
- * @return the set of legal content types
- */
- String[] getLegalContentTypes();
-
- /**
- * Returns the type of the document partition containing the given offset.
- * This is a convenience method for <code>getPartition(offset).getType()</code>.
- * <p>
- * Use {@link IDocumentExtension3#getContentType(String, int, boolean)} when
- * the document supports multiple partitionings. In that case this method is
- * equivalent to:
- * <pre>
- * IDocumentExtension3 extension= (IDocumentExtension3) document;
- * return extension.getContentTypes(IDocumentExtension3.DEFAULT_PARTITIONING, offset, false);
- * </pre>
- *
- * @param offset the document offset
- * @return the partition type
- * @exception BadLocationException if offset is invalid in this document
- */
- String getContentType(int offset) throws BadLocationException;
-
- /**
- * Returns the document partition in which the position is located.
- * <p>
- * Use {@link IDocumentExtension3#getPartition(String, int, boolean)} when
- * the document supports multiple partitionings. In that case this method is
- * equivalent:
- * <pre>
- * IDocumentExtension3 extension= (IDocumentExtension3) document;
- * return extension.getPartition(IDocumentExtension3.DEFAULT_PARTITIONING, offset, false);
- * </pre>
- *
- * @param offset the document offset
- * @return a specification of the partition
- * @exception BadLocationException if offset is invalid in this document
- */
- ITypedRegion getPartition(int offset) throws BadLocationException;
-
- /**
- * Computes the partitioning of the given document range using the
- * document's partitioner.
- * <p>
- * Use {@link IDocumentExtension3#computePartitioning(String, int, int, boolean)} when
- * the document supports multiple partitionings. In that case this method is
- * equivalent:
- * <pre>
- * IDocumentExtension3 extension= (IDocumentExtension3) document;
- * return extension.computePartitioning(IDocumentExtension3.DEFAULT_PARTITIONING, offset, length, false);
- * </pre>
- *
- * @param offset the document offset at which the range starts
- * @param length the length of the document range
- * @return a specification of the range's partitioning
- * @exception BadLocationException if the range is invalid in this document
- */
- ITypedRegion[] computePartitioning(int offset, int length) throws BadLocationException;
-
- /**
- * Registers the document partitioning listener with the document. After registration
- * the document partitioning listener is informed about each partition change
- * cause by a document manipulation or by changing the document's partitioner.
- * If a document partitioning listener is also
- * a document listener, the following notification sequence is guaranteed if a
- * document manipulation changes the document partitioning:
- * <ul>
- * <li>listener.documentAboutToBeChanged(DocumentEvent);
- * <li>listener.documentPartitioningChanged();
- * <li>listener.documentChanged(DocumentEvent);
- * </ul>
- * If the listener is already registered nothing happens.<p>
- * An <code>IDocumentPartitioningListener</code> may call back to this method
- * when being inside a document notification.
- *
- * @param listener the listener to be added
- */
- void addDocumentPartitioningListener(IDocumentPartitioningListener listener);
-
- /**
- * Removes the listener from this document's list of document partitioning
- * listeners. If the listener is not registered with the document nothing
- * happens.<p>
- * An <code>IDocumentPartitioningListener</code> may call back to this method
- * when being inside a document notification.
- *
- * @param listener the listener to be removed
- */
- void removeDocumentPartitioningListener(IDocumentPartitioningListener listener);
-
- /**
- * Sets this document's partitioner. The caller of this method is responsible for
- * disconnecting the document's old partitioner from the document and to
- * connect the new partitioner to the document. Informs all document partitioning
- * listeners about this change.
- * <p>
- * Use {@link IDocumentExtension3#setDocumentPartitioner(String, IDocumentPartitioner)} when
- * the document supports multiple partitionings. In that case this method is equivalent to:
- * <pre>
- * IDocumentExtension3 extension= (IDocumentExtension3) document;
- * return extension.setDocumentPartitioner(IDocumentExtension3.DEFAULT_PARTITIONING, partitioner);
- * </pre>
- *
- * @param partitioner the document's new partitioner
- *
- * @see IDocumentPartitioningListener
- */
- void setDocumentPartitioner(IDocumentPartitioner partitioner);
-
- /**
- * Returns this document's partitioner.
- * <p>
- * Use {@link IDocumentExtension3#getDocumentPartitioner(String)} when
- * the document supports multiple partitionings. In that case this method is
- * equivalent to:
- * <pre>
- * IDocumentExtension3 extension= (IDocumentExtension3) document;
- * return extension.getDocumentPartitioner(IDocumentExtension3.DEFAULT_PARTITIONING);
- * </pre>
- *
- * @return this document's partitioner
- */
- IDocumentPartitioner getDocumentPartitioner();
-
-
-
- /* ---------------------- line information -------------------------------- */
-
- /**
- * Returns the length of the given line including the line's delimiter.
- *
- * @param line the line of interest
- * @return the length of the line
- * @exception BadLocationException if the line number is invalid in this document
- */
- int getLineLength(int line) throws BadLocationException;
-
- /**
- * Returns the number of the line at which the character of the specified position is located.
- * The first line has the line number 0. A new line starts directly after a line
- * delimiter. <code>(offset == document length)</code> is a valid argument although there is no
- * corresponding character.
- *
- * @param offset the document offset
- * @return the number of the line
- * @exception BadLocationException if the offset is invalid in this document
- */
- int getLineOfOffset(int offset) throws BadLocationException;
-
- /**
- * Determines the offset of the first character of the given line.
- *
- * @param line the line of interest
- * @return the document offset
- * @exception BadLocationException if the line number is invalid in this document
- */
- int getLineOffset(int line) throws BadLocationException;
-
- /**
- * Returns a description of the specified line. The line is described by its
- * offset and its length excluding the line's delimiter.
- *
- * @param line the line of interest
- * @return a line description
- * @exception BadLocationException if the line number is invalid in this document
- */
- IRegion getLineInformation(int line) throws BadLocationException;
-
- /**
- * Returns a description of the line at the given offset.
- * The description contains the offset and the length of the line
- * excluding the line's delimiter.
- *
- * @param offset the offset whose line should be described
- * @return a region describing the line
- * @exception BadLocationException if offset is invalid in this document
- */
- IRegion getLineInformationOfOffset(int offset) throws BadLocationException;
-
- /**
- * Returns the number of lines in this document
- *
- * @return the number of lines in this document
- */
- int getNumberOfLines();
-
- /**
- * Returns the number of lines which are occupied by a given text range.
- *
- * @param offset the offset of the specified text range
- * @param length the length of the specified text range
- * @return the number of lines occupied by the specified range
- * @exception BadLocationException if specified range is invalid in this tracker
- */
- int getNumberOfLines(int offset, int length) throws BadLocationException;
-
- /**
- * Computes the number of lines in the given text. For a given
- * implementer of this interface this method returns the same
- * result as <code>set(text); getNumberOfLines()</code>.
- *
- * @param text the text whose number of lines should be computed
- * @return the number of lines in the given text
- */
- int computeNumberOfLines(String text);
-
-
- /* ------------------ line delimiter conversion --------------------------- */
-
- /**
- * Returns the document's legal line delimiters.
- *
- * @return the document's legal line delimiters
- */
- String[] getLegalLineDelimiters();
-
- /**
- * Returns the line delimiter of that line or <code>null</code> if the
- * line is not closed with a line delimiter.
- *
- * @param line the line of interest
- * @return the line's delimiter or <code>null</code> if line does not have a delimiter
- * @exception BadLocationException if the line number is invalid in this document
- */
- String getLineDelimiter(int line) throws BadLocationException;
-
-
- /* ---------------------------- search ------------------------------------ */
-
- /**
- * Returns the offset of a given search string in the document based on a set of search criteria.
- *
- * @param startOffset document offset at which search starts
- * @param findString the string to find
- * @param forwardSearch the search direction
- * @param caseSensitive indicates whether lower and upper case should be distinguished
- * @param wholeWord indicates whether the findString should be limited by white spaces as
- * defined by Character.isWhiteSpace
- * @return the offset of the first occurrence of findString based on the parameters or -1 if no match is found
- * @exception BadLocationException if startOffset is an invalid document offset
- * @deprecated as of 3.0 search is provided by {@link FindReplaceDocumentAdapter}
- */
- int search(int startOffset, String findString, boolean forwardSearch, boolean caseSensitive, boolean wholeWord) throws BadLocationException;
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension.java b/org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension.java
deleted file mode 100644
index 09be52cca..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.text;
-
-/**
- * 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) throws UnsupportedOperationException;
-
- /**
- * 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
- */
- void startSequentialRewrite(boolean 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.
- */
- void stopSequentialRewrite();
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension2.java b/org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension2.java
deleted file mode 100644
index 1b83dcd85..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension2.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.text;
-
-/**
- * Extension interface for {@link org.eclipse.jface.text.IDocument}.<p>
- *
- * It adds configuration methods to post notification replaces and document
- * listener notification.
- *
- * @since 2.1
- */
-public interface IDocumentExtension2 {
-
- /**
- * Tells the receiver to ignore calls to
- * <code>registerPostNotificationReplace</code> until
- * <code>acceptPostNotificationReplaces</code> is called.
- */
- void ignorePostNotificationReplaces();
-
- /**
- * Tells the receiver to accept calls to
- * <code>registerPostNotificationReplace</code> until
- * <code>ignorePostNotificationReplaces</code> is called.
- */
- void acceptPostNotificationReplaces();
-
- /**
- * Can be called prior to a <code>replace</code> operation. After the
- * <code>replace</code> <code>resumeListenerNotification</code> must be
- * called. The affect of these calls is that no document listener is notified
- * until <code>resumeListenerNotification</code> is called. This allows clients
- * to update structure before any listener is informed about the change.<p>
- * Listener notification can only be stopped for a single <code>replace</code> operation.
- * Otherwise, document change notifications will be lost.
- */
- void stopListenerNotification();
-
- /**
- * Resumes the notification of document listeners which must previously
- * have been stopped by a call to <code>stopListenerNotification</code>.
- */
- void resumeListenerNotification();
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension3.java b/org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension3.java
deleted file mode 100644
index 518ecea6e..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentExtension3.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-/**
- * Extension interface for {@link org.eclipse.jface.text.IDocument}.
- * <p>
- * Adds the concept of multiple partitionings and the concept of zero-length
- * partitions in conjunction with open and delimited partitions. A delimited
- * partition has a well defined start delimiter and a well defined end
- * delimiter. Between two delimited partitions there may be an open partition of
- * length zero.
- * <p>
- *
- * In order to fulfill the contract of this interface, the document must be
- * configured with a document partitioner implementing
- * {@link org.eclipse.jface.text.IDocumentPartitionerExtension2}.
- *
- * @see org.eclipse.jface.text.IDocumentPartitionerExtension2
- * @since 3.0
- */
-public interface IDocumentExtension3 {
-
- /**
- * The identifier of the default partitioning.
- */
- final static String DEFAULT_PARTITIONING= "__dftl_partitioning"; //$NON-NLS-1$
-
-
- /**
- * Returns the existing partitionings for this document. This includes
- * the default partitioning.
- *
- * @return the existing partitionings for this document
- */
- String[] getPartitionings();
-
- /**
- * Returns the set of legal content types of document partitions for the given partitioning
- * This set can be empty. The set can contain more content types than contained by the
- * result of <code>getPartitioning(partitioning, 0, getLength())</code>.
- *
- * @param partitioning the partitioning for which to return the legal content types
- * @return the set of legal content types
- * @exception BadPartitioningException if partitioning is invalid for this document
- */
- String[] getLegalContentTypes(String partitioning) throws BadPartitioningException;
-
-
- /**
- * Returns the type of the document partition containing the given offset
- * for the given partitioning. This is a convenience method for
- * <code>getPartition(partitioning, offset, boolean).getType()</code>.
- * <p>
- * If <code>preferOpenPartitions</code> is <code>true</code>,
- * precedence is given to an open partition ending at <code>offset</code>
- * over a delimited partition starting at <code>offset</code>. If it is
- * <code>false</code>, precedence is given to the partition that does not
- * end at <code>offset</code>.
- * </p>
- * This is only supported if the connected <code>IDocumentPartitioner</code>
- * supports it, i.e. implements <code>IDocumentPartitionerExtension2</code>.
- * Otherwise, <code>preferOpenPartitions</code> is ignored.
- * </p>
- *
- * @param partitioning the partitioning
- * @param offset the document offset
- * @param preferOpenPartitions <code>true</code> if precedence should be
- * given to a open partition ending at <code>offset</code> over a
- * closed partition starting at <code>offset</code>
- * @return the partition type
- * @exception BadLocationException if offset is invalid in this document
- * @exception BadPartitioningException if partitioning is invalid for this document
- */
- String getContentType(String partitioning, int offset, boolean preferOpenPartitions) throws BadLocationException, BadPartitioningException;
-
- /**
- * Returns the document partition of the given partitioning in which the
- * given offset is located.
- * <p>
- * If <code>preferOpenPartitions</code> is <code>true</code>,
- * precedence is given to an open partition ending at <code>offset</code>
- * over a delimited partition starting at <code>offset</code>. If it is
- * <code>false</code>, precedence is given to the partition that does not
- * end at <code>offset</code>.
- * </p>
- * This is only supported if the connected <code>IDocumentPartitioner</code>
- * supports it, i.e. implements <code>IDocumentPartitionerExtension2</code>.
- * Otherwise, <code>preferOpenPartitions</code> is ignored.
- * </p>
- *
- * @param partitioning the partitioning
- * @param offset the document offset
- * @param preferOpenPartitions <code>true</code> if precedence should be
- * given to a open partition ending at <code>offset</code> over a
- * closed partition starting at <code>offset</code>
- * @return a specification of the partition
- * @exception BadLocationException if offset is invalid in this document
- * @exception BadPartitioningException if partitioning is invalid for this document
- */
- ITypedRegion getPartition(String partitioning, int offset, boolean preferOpenPartitions) throws BadLocationException, BadPartitioningException;
-
- /**
- * Computes the partitioning of the given document range based on the given
- * partitioning type.
- * <p>
- * If <code>includeZeroLengthPartitions</code> is <code>true</code>, a
- * zero-length partition of an open partition type (usually the default
- * partition) is included between two closed partitions. If it is
- * <code>false</code>, no zero-length partitions are included.
- * </p>
- * This is only supported if the connected <code>IDocumentPartitioner</code>
- * supports it, i.e. implements <code>IDocumentPartitionerExtension2</code>.
- * Otherwise, <code>includeZeroLengthPartitions</code> is ignored.
- * </p>
- *
- * @param partitioning the document's partitioning type
- * @param offset the document offset at which the range starts
- * @param length the length of the document range
- * @param includeZeroLengthPartitions <code>true</code> if zero-length
- * partitions should be returned as part of the computed partitioning
- * @return a specification of the range's partitioning
- * @exception BadLocationException if the range is invalid in this document$
- * @exception BadPartitioningException if partitioning is invalid for this document
- */
- ITypedRegion[] computePartitioning(String partitioning, int offset, int length, boolean includeZeroLengthPartitions) throws BadLocationException, BadPartitioningException;
-
- /**
- * Sets this document's partitioner. The caller of this method is responsible for
- * disconnecting the document's old partitioner from the document and to
- * connect the new partitioner to the document. Informs all document partitioning
- * listeners about this change.
- *
- * @param partitioning the partitioning for which to set the partitioner
- * @param partitioner the document's new partitioner
- * @see IDocumentPartitioningListener
- */
- void setDocumentPartitioner(String partitioning, IDocumentPartitioner partitioner);
-
- /**
- * Returns the partitioner for the given partitioning or <code>null</code> if
- * no partitioner is registered.
- *
- * @param partitioning the partitioning for which to set the partitioner
- * @return the partitioner for the given partitioning
- */
- IDocumentPartitioner getDocumentPartitioner(String partitioning);
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentInformationMapping.java b/org.eclipse.text/src/org/eclipse/jface/text/IDocumentInformationMapping.java
deleted file mode 100644
index e70ac12fe..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentInformationMapping.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-/**
- * A <code>IDocumentInformationMapping</code> represents a mapping between the coordinates of two
- * <code>IDocument</code> objects: the original and the image. The document information mapping
- * can translate document information such as line numbers or character ranges given for the original into
- * the corresponding information of the image and vice versa.
- *
- * In order to provided backward compatibility for clients of <code>IDocumentInformationMapping</code>, extension
- * interfaces are used to provide a means of evolution. The following extension interfaces
- * exist:
- * <ul>
- * <li> {@link org.eclipse.jface.text.IDocumentInformationMappingExtension} since version 3.0 extending the
- * degree of detail of the mapping information.</li>
- * </ul>
- *
- * @since 2.1
- */
-public interface IDocumentInformationMapping {
-
- /**
- * Returns the minimal region of the original document that completely comprises all of the image document
- * or <code>null</code> if there is no such region.
- *
- * @return the minimal region of the original document comprising the image document or <code>null</code>
- */
- IRegion getCoverage();
-
- /**
- * Returns the offset in the original document that corresponds to the given offset in the image document
- * or <code>-1</code> if there is no such offset
- *
- * @param imageOffset the offset in the image document
- * @return the corresponding offset in the original document or <code>-1</code>
- * @throws BadLocationException if <code>imageOffset</code> is not a valid offset in the image document
- */
- int toOriginOffset(int imageOffset) throws BadLocationException;
-
- /**
- * Returns the minimal region of the original document that completely comprises the given region of the
- * image document or <code>null</code> if there is no such region.
- *
- * @param imageRegion the region of the image document
- * @return the minimal region of the original document comprising the given region of the image document or <code>null</code>
- * @throws BadLocationException if <code>imageRegion</code> is not a valid region of the image document
- */
- IRegion toOriginRegion(IRegion imageRegion) throws BadLocationException;
-
- /**
- * Returns the range of lines of the original document that corresponds to the given line of the image document or
- * <code>null</code> if there are no such lines.
- *
- * @param imageLine the line of the image document
- * @return the corresponding lines of the original document or <code>null</code>
- * @throws BadLocationException if <code>imageLine</code> is not a valid line number in the image document
- */
- IRegion toOriginLines(int imageLine) throws BadLocationException;
-
- /**
- * Returns the line of the original document that corresponds to the given line of the image document or
- * <code>-1</code> if there is no such line.
- *
- * @param imageLine the line of the image document
- * @return the corresponding line of the original document or <code>-1</code>
- * @throws BadLocationException if <code>imageLine</code> is not a valid line number in the image document
- */
- int toOriginLine(int imageLine) throws BadLocationException;
-
-
-
- /**
- * Returns the offset in the image document that corresponds to the given offset in the original document
- * or <code>-1</code> if there is no such offset
- *
- * @param originOffset the offset in the original document
- * @return the corresponding offset in the image document or <code>-1</code>
- * @throws BadLocationException if <code>originOffset</code> is not a valid offset in the original document
- */
- int toImageOffset(int originOffset) throws BadLocationException;
-
- /**
- * Returns the minimal region of the image document that completely comprises the given region of the
- * original document or <code>null</code> if there is no such region.
- *
- * @param originRegion the region of the original document
- * @return the minimal region of the image document comprising the given region of the original document or <code>null</code>
- * @throws BadLocationException if <code>originRegion</code> is not a valid region of the original document
- */
- IRegion toImageRegion(IRegion originRegion) throws BadLocationException;
-
- /**
- * Returns the line of the image document that corresponds to the given line of the original document or
- * <code>-1</code> if there is no such line.
- *
- * @param originLine the line of the original document
- * @return the corresponding line of the image document or <code>-1</code>
- * @throws BadLocationException if <code>originLine</code> is not a valid line number in the original document
- */
- int toImageLine(int originLine) throws BadLocationException;
-
- /**
- * Returns the line of the image document whose corresponding line in the original document
- * is closest to the given line in the original document.
- *
- * @param originLine the line in the original document
- * @return the line in the image document that corresponds best to the given line in the original document
- * @throws BadLocationException if <code>originLine</code>is not a valid line in the original document
- */
- int toClosestImageLine(int originLine) throws BadLocationException;
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentInformationMappingExtension.java b/org.eclipse.text/src/org/eclipse/jface/text/IDocumentInformationMappingExtension.java
deleted file mode 100644
index 6981b3267..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentInformationMappingExtension.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-/**
- * Extension to {@link org.eclipse.jface.text.IDocumentInformationMapping}.
- * <p>
- * Extends the information available in the mapping by providing explicit access
- * to the isomorphic portion of the basically homomorphic information mapping.
- *
- * @see org.eclipse.jface.text.IDocumentInformationMapping
- * @since 3.0
- */
-public interface IDocumentInformationMappingExtension {
-
- /**
- * Adheres to
- * <code>originRegion=toOriginRegion(toExactImageRegion(originRegion))</code>,
- * if <code>toExactImageRegion(originRegion) != null</code>. Returns
- * <code>null</code> if there is no image for the given origin region.
- *
- * @param originRegion the origin region
- * @return the exact image region or <code>null</code>
- * @throws BadLocationException if origin region is not a valid region in
- * the origin document
- */
- IRegion toExactImageRegion(IRegion originRegion) throws BadLocationException;
-
- /**
- * Returns the segments of the image document that exactly correspond to the
- * given region of the original document. Returns <code>null</code> if
- * there are no such image regions.
- *
- * @param originRegion the region in the origin document
- * @return the segments in the image document or <code>null</code>
- * @throws BadLocationException in case the given origin region is not valid
- * in the original document
- */
- IRegion[] toExactImageRegions(IRegion originRegion) throws BadLocationException;
-
- /**
- * Returns the fragments of the original document that exactly correspond to
- * the given region of the image document.
- *
- * @param imageRegion the region in the image document
- * @return the fragments in the origin document
- * @throws BadLocationException in case the given image region is not valid
- * in the image document
- */
- IRegion[] toExactOriginRegions(IRegion imageRegion) throws BadLocationException;
-
- /**
- * Returns the length of the image document.
- *
- * @return the length of the image document
- */
- int getImageLength();
-
- /**
- * Returns the maximal sub-regions of the given origin region which are
- * completely covered. I.e. each offset in a sub-region has a corresponding
- * image offset. Returns <code>null</code> if there are no such
- * sub-regions.
- *
- * @param originRegion the region in the origin document
- * @return the sub-regions with complete coverage or <code>null</code>
- * @throws BadLocationException in case the given origin region is not valid
- * in the original document
- */
- IRegion[] getExactCoverage(IRegion originRegion) throws BadLocationException;
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentListener.java b/org.eclipse.text/src/org/eclipse/jface/text/IDocumentListener.java
deleted file mode 100644
index 28e7f6027..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentListener.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-
-/**
- * Interface for objects which are interested in getting informed about
- * document changes. A listener is informed about document changes before
- * they are applied and after they have been applied. It is ensured that
- * the document event passed into the listener is the same for the two
- * notifications, i.e. the two document events can be checked using object identity.
- * Clients may implement this interface.
- *
- * @see org.eclipse.jface.text.IDocument
- */
-public interface IDocumentListener {
-
-
- /**
- * The manipulation described by the document event will be performed.
- *
- * @param event the document event describing the document change
- */
- void documentAboutToBeChanged(DocumentEvent event);
-
- /**
- * The manipulation described by the document event has been performed.
- *
- * @param event the document event describing the document change
- */
- void documentChanged(DocumentEvent event);
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioner.java b/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioner.java
deleted file mode 100644
index c6a713dde..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioner.java
+++ /dev/null
@@ -1,152 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-
-/**
- * A document partitioner divides a document into a set
- * of disjoint text partitions. Each partition has a content type, an
- * offset, and a length. The document partitioner is connected to one document
- * and informed about all changes of this document before any of the
- * document's document listeners. A document partitioner can thus
- * incrementally update on the receipt of a document change event.<p>
- *
- * In order to provided backward compatibility for clients of <code>IDocumentPartitioner</code>, extension
- * interfaces are used to provide a means of evolution. The following extension interfaces
- * exist:
- * <ul>
- * <li> {@link org.eclipse.jface.text.IDocumentPartitionerExtension} since version 2.0 replacing
- * the <code>documentChanged</code> method with a new one returning the minimal document region
- * comprising all partition changes. </li>
- * <li> {@link org.eclipse.jface.text.IDocumentPartitionerExtension2} since version 3.0
- * introducing zero-length partitions in conjunction with the distinction between
- * open and closed partitions. Also provides inside in the implementation of the partitioner
- * by exposing the position category used for managing the partitioning information.</li>
- * </ul>
- *
- * Clients may implement this interface and its extension interfaces or use the standard
- * implementation <code>DefaultPartitioner</code>.
- *
- * @see org.eclipse.jface.text.IDocumentPartitionerExtension
- * @see org.eclipse.jface.text.IDocumentPartitionerExtension2
- * @see org.eclipse.jface.text.IDocument
- */
-public interface IDocumentPartitioner {
-
- /**
- * Connects the partitioner to a document.
- * Connect indicates the begin of the usage of the receiver
- * as partitioner of the given document. Thus, resources the partitioner
- * needs to be operational for this document should be allocated.<p>
- * The caller of this method must ensure that this partitioner is
- * also set as the document's document partitioner.
- *
- * @param document the document to be connected to
- */
- void connect(IDocument document);
-
- /**
- * Disconnects the partitioner from the document it is connected to.
- * Disconnect indicates the end of the usage of the receiver as
- * partitioner of the connected document. Thus, resources the partitioner
- * needed to be operation for its connected document should be deallocated.<p>
- * The caller of this method should also must ensure that this partitioner is
- * no longer the document's partitioner.
- */
- void disconnect();
-
- /**
- * Informs about a forthcoming document change. Will be called by the
- * connected document and is not intended to be used by clients
- * other than the connected document.
- *
- * @param event the event describing the forthcoming change
- */
- void documentAboutToBeChanged(DocumentEvent event);
-
- /**
- * The document has been changed. The partitioner updates
- * the document's partitioning and returns whether the structure of the
- * document partitioning has been changed, i.e. whether partitions
- * have been added or removed. Will be called by the connected document and
- * is not intended to be used by clients other than the connected document.<p>
- *
- * This method has been replaced by {@link IDocumentPartitionerExtension#documentChanged2(DocumentEvent)}.
- *
- * @param event the event describing the document change
- * @return <code>true</code> if partitioning changed
- */
- boolean documentChanged(DocumentEvent event);
-
- /**
- * Returns the set of all legal content types of this partitioner.
- * I.e. any result delivered by this partitioner may not contain a content type
- * which would not be included in this method's result.
- *
- * @return the set of legal content types
- */
- String[] getLegalContentTypes();
-
- /**
- * Returns the content type of the partition containing the
- * given offset in the connected document. There must be a
- * document connected to this partitioner.<p>
- *
- * Use {@link IDocumentPartitionerExtension2#getContentType(int, boolean)} when
- * zero-length partitions are supported. In that case this method is
- * equivalent:
- * <pre>
- * IDocumentPartitionerExtension2 extension= (IDocumentPartitionerExtension2) partitioner;
- * return extension.getContentType(offset, false);
- * </pre>
- *
- * @param offset the offset in the connected document
- * @return the content type of the offset's partition
- */
- String getContentType(int offset);
-
- /**
- * Returns the partitioning of the given range of the connected
- * document. There must be a document connected to this partitioner.<p>
- *
- * Use {@link IDocumentPartitionerExtension2#computePartitioning(int, int, boolean)} when
- * zero-length partitions are supported. In that case this method is
- * equivalent:
- * <pre>
- * IDocumentPartitionerExtension2 extension= (IDocumentPartitionerExtension2) partitioner;
- * return extension.computePartitioning(offset, length, false);
- * </pre>
- *
- * @param offset the offset of the range of interest
- * @param length the length of the range of interest
- * @return the partitioning of the range
- */
- ITypedRegion[] computePartitioning(int offset, int length);
-
- /**
- * Returns the partition containing the given offset of
- * the connected document. There must be a document connected to this
- * partitioner.<p>
- *
- * Use {@link IDocumentPartitionerExtension2#getPartition(int, boolean)} when
- * zero-length partitions are supported. In that case this method is
- * equivalent:
- * <pre>
- * IDocumentPartitionerExtension2 extension= (IDocumentPartitionerExtension2) partitioner;
- * return extension.getPartition(offset, false);
- * </pre>
- *
- * @param offset the offset for which to determine the partition
- * @return the partition containing the offset
- */
- ITypedRegion getPartition(int offset);
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitionerExtension.java b/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitionerExtension.java
deleted file mode 100644
index 2c37fcb54..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitionerExtension.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.text;
-
-
-/**
- * Extension interface for {@link org.eclipse.jface.text.IDocumentPartitioner}.
- * <p>
- * Replaces the original concept of the document partitioner by returning the
- * minimal region that includes all partition changes caused by the invocation
- * of the document partitioner.
- * The method <code>documentChanged2</code> is considered the replacement of
- * {@link org.eclipse.jface.text.IDocumentPartitioner#documentChanged(DocumentEvent)}.
- *
- * @since 2.0
- */
-public interface IDocumentPartitionerExtension {
-
- /**
- * The document has been changed. The partitioner updates the document's
- * partitioning and returns the minimal region that comprises all partition
- * changes caused in response to the given document event. This method
- * returns <code>null</code> if the partitioning did not change.
- * <p>
- *
- * Will be called by the connected document and is not intended to be used
- * by clients other than the connected document.
- * <p>
- * Replaces {@link IDocumentPartitioner#documentChanged(DocumentEvent)}.
- *
- * @param event the event describing the document change
- * @return the region of the document in which the partition type changed
- */
- IRegion documentChanged2(DocumentEvent event);
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitionerExtension2.java b/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitionerExtension2.java
deleted file mode 100644
index c9e3298a0..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitionerExtension2.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.text;
-
-
-/**
- * Extension interface for {@link org.eclipse.jface.text.IDocumentPartitioner}.
- * <p>
- * Extends the original concept of a document partitioner to answer the position
- * categories that are used to manage the partitioning information.
- * <p>
- * This extension also introduces the concept of open and delimited partitions.
- * A delimited partition has a predefined textual token delimiting its start and
- * end, while an open partition can fill any space between two delimited
- * partitions.
- * </p>
- * <p>
- * An open partition of length zero can occur between two delimited partitions,
- * thus having the same offset as the following delimited partition. The
- * document start and end are considered to be delimiters of open partitions,
- * i.e. there may be a zero-length partition between the document start and a
- * delimited partition starting at offset 0.
- * </p>
- *
- * @since 3.0
- */
-public interface IDocumentPartitionerExtension2 {
-
- /**
- * Returns the position categories that this partitioners uses in order to manage
- * the partitioning information of the documents. Returns <code>null</code> if
- * no position category is used.
- *
- * @return the position categories used to manage partitioning information or <code>null</code>
- */
- String[] getManagingPositionCategories();
-
-
- /* zero-length partition support */
-
- /**
- * Returns the content type of the partition containing the given offset in
- * the connected document. There must be a document connected to this
- * partitioner.
- * <p>
- * If <code>preferOpenPartitions</code> is <code>true</code>,
- * precedence is given to an open partition ending at <code>offset</code>
- * over a delimited partition starting at <code>offset</code>.
- * <p>
- * This method replaces {@link IDocumentPartitioner#getContentType(int)}and
- * behaves like it when <code>prepreferOpenPartitions</code> is
- * <code>false</code>, i.e. precedence is always given to the partition
- * that does not end at <code>offset</code>.
- * </p>
- *
- * @param offset the offset in the connected document
- * @param preferOpenPartitions <code>true</code> if precedence should be
- * given to a open partition ending at <code>offset</code> over
- * a delimited partition starting at <code>offset</code>
- * @return the content type of the offset's partition
- */
- String getContentType(int offset, boolean preferOpenPartitions);
-
- /**
- * Returns the partition containing the given offset of the connected
- * document. There must be a document connected to this partitioner.
- * <p>
- * If <code>preferOpenPartitions</code> is <code>true</code>,
- * precedence is given to an open partition ending at <code>offset</code>
- * over a delimited partition starting at <code>offset</code>.
- * <p>
- * This method replaces {@link IDocumentPartitioner#getPartition(int)}and
- * behaves like it when <preferOpenPartitions</code> is <code>false
- * </code>, i.e. precedence is always given to the partition that does not
- * end at <code>offset</code>.
- * </p>
- *
- * @param offset the offset for which to determine the partition
- * @param preferOpenPartitions <code>true</code> if precedence should be
- * given to a open partition ending at <code>offset</code> over
- * a delimited partition starting at <code>offset</code>
- * @return the partition containing the offset
- */
- ITypedRegion getPartition(int offset, boolean preferOpenPartitions);
-
- /**
- * Returns the partitioning of the given range of the connected document.
- * There must be a document connected to this partitioner.
- * <p>
- * If <code>includeZeroLengthPartitions</code> is <code>true</code>, a
- * zero-length partition of an open partition type (usually the default
- * partition) is included between two delimited partitions. If it is
- * <code>false</code>, no zero-length partitions are included.
- * </p>
- * <p>
- * This method replaces
- * {@link IDocumentPartitioner#computePartitioning(int, int)}and behaves
- * like it when <code>includeZeroLengthPartitions</code> is
- * <code>false</code>.
- * </p>
- *
- * @param offset the offset of the range of interest
- * @param length the length of the range of interest
- * @param includeZeroLengthPartitions <code>true</code> if zero-length
- * partitions should be returned as part of the computed
- * partitioning
- * @return the partitioning of the range
- */
- ITypedRegion[] computePartitioning(int offset, int length, boolean includeZeroLengthPartitions);
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioningListener.java b/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioningListener.java
deleted file mode 100644
index e7b202db8..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioningListener.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-
-/**
- * Interface of objects which are interested in getting informed
- * about changes of a document's partitioning. Clients may
- * implement this interface.<p>
- *
- * In order to provided backward compatibility for clients of <code>IDocumentPartitioningListener</code>, extension
- * interfaces are used to provide a means of evolution. The following extension interfaces
- * exist:
- * <ul>
- * <li> {@link org.eclipse.jface.text.IDocumentPartitioningListenerExtension} since version 2.0 replacing the original
- * notification mechanism.</li>
- * <li> {@link org.eclipse.jface.text.IDocumentPartitioningListenerExtension2} since version 3.0 replacing all previous
- * notification mechanisms. Thus, implementers up-to-date with version 3.0 do not have to implement
- * {@link org.eclipse.jface.text.IDocumentPartitioningListenerExtension}.</li>
- * </ul>
- *
- * @see org.eclipse.jface.text.IDocumentPartitioningListenerExtension
- * @see org.eclipse.jface.text.IDocumentPartitioningListenerExtension2
- * @see org.eclipse.jface.text.IDocument
- * @see org.eclipse.jface.text.IDocumentPartitioner
- */
-public interface IDocumentPartitioningListener {
-
- /**
- * The partitioning of the given document changed.
- * <p>
- * In version 2.0 this method has been replaces by
- * {@link IDocumentPartitioningListenerExtension#documentPartitioningChanged(IDocument, IRegion)}.
- * <p>
- * In version 3.0 this method has been replaces by
- * {@link IDocumentPartitioningListenerExtension2#documentPartitioningChanged(DocumentPartitioningChangedEvent)}<p>
- *
- * @param document the document whose partitioning changed
- *
- * @see IDocumentPartitioningListenerExtension#documentPartitioningChanged(IDocument, IRegion)
- * @see IDocumentPartitioningListenerExtension2#documentPartitioningChanged(DocumentPartitioningChangedEvent)
- * @see IDocument#addDocumentPartitioningListener(IDocumentPartitioningListener)
- */
- void documentPartitioningChanged(IDocument document);
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioningListenerExtension.java b/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioningListenerExtension.java
deleted file mode 100644
index a0b68e9b4..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioningListenerExtension.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.text;
-
-
-/**
- * Extension interface for
- * {@link org.eclipse.jface.text.IDocumentPartitioningListener}.
- * <p>
- * Replaces the original notification mechanism by telling the listener the
- * minimal region that comprises all partitioning changes.
- *
- * @see org.eclipse.jface.text.IDocumentPartitionerExtension
- * @since 2.0
- */
-public interface IDocumentPartitioningListenerExtension {
-
- /**
- * The partitioning of the given document changed in the given region.
- * <p>
- * In version 3.0, this method has been replaced with
- * {@link IDocumentPartitioningListenerExtension2#documentPartitioningChanged(DocumentPartitioningChangedEvent)}.
- *
- * @param document the document whose partitioning changed
- * @param region the region in which the partitioning changed
- * @see IDocumentPartitioningListenerExtension2#documentPartitioningChanged(DocumentPartitioningChangedEvent)
- * @see IDocument#addDocumentPartitioningListener(IDocumentPartitioningListener)
- */
- void documentPartitioningChanged(IDocument document, IRegion region);
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioningListenerExtension2.java b/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioningListenerExtension2.java
deleted file mode 100644
index 9aa30b30f..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/IDocumentPartitioningListenerExtension2.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-/**
- * Extension interface to
- * {@link org.eclipse.jface.text.IDocumentPartitioningListener}.
- * <p>
- *
- * Replaces the previous notification mechanisms by introducing an explicit
- * document partitioning changed event.
- *
- * @see org.eclipse.jface.text.DocumentPartitioningChangedEvent
- * @since 3.0
- */
-public interface IDocumentPartitioningListenerExtension2 {
-
- /**
- * Signals the change of document partitionings.
- * <p>
- * This method replaces
- * {@link IDocumentPartitioningListener#documentPartitioningChanged(IDocument)}
- * and
- * {@link IDocumentPartitioningListenerExtension2#documentPartitioningChanged(DocumentPartitioningChangedEvent)}.
- *
- * @param event the event describing the change
- * @see IDocument#addDocumentPartitioningListener(IDocumentPartitioningListener)
- */
- void documentPartitioningChanged(DocumentPartitioningChangedEvent event);
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/ILineTracker.java b/org.eclipse.text/src/org/eclipse/jface/text/ILineTracker.java
deleted file mode 100644
index edfb66cb5..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/ILineTracker.java
+++ /dev/null
@@ -1,136 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-/**
- * A line tracker maps character positions to line numbers and vice versa.
- * Initially the line tracker is informed about its underlying text in order to
- * initialize the mapping information. After that, the line tracker is informed
- * about all changes of the underlying text allowing for incremental updates of
- * the mapping information. It is the client's responsibility to actively inform
- * the line tacker about text changes. For example, when using a line tracker in
- * combination with a document the document controls the line tracker.
- * <p>
- * Clients may implement this interface or use the standard implementation
- * {@link org.eclipse.jface.text.DefaultLineTracker}or
- * {@link org.eclipse.jface.text.ConfigurableLineTracker}.
- */
-public interface ILineTracker {
-
- /**
- * Returns the strings this tracker considers as legal line delimiters.
- *
- * @return the legal line delimiters
- */
- String[] getLegalLineDelimiters();
-
- /**
- * Returns the line delimiter of the specified line. Returns <code>null</code> if the
- * line is not closed with a line delimiter.
- *
- * @param line the line whose line delimiter is queried
- * @return the line's delimiter or <code>null</code> if line does not have a delimiter
- * @exception BadLocationException if the line number is invalid in this tracker's line structure
- */
- String getLineDelimiter(int line) throws BadLocationException;
-
- /**
- * Computes the number of lines in the given text.
- *
- * @param text the text whose number of lines should be computed
- * @return the number of lines in the given text
- */
- int computeNumberOfLines(String text);
-
- /**
- * Returns the number of lines.
- *
- * @return the number of lines in this tracker's line structure
- */
- int getNumberOfLines();
-
- /**
- * Returns the number of lines which are occupied by a given text range.
- *
- * @param offset the offset of the specified text range
- * @param length the length of the specified text range
- * @return the number of lines occupied by the specified range
- * @exception BadLocationException if specified range is unknown to this tracker
- */
- int getNumberOfLines(int offset, int length) throws BadLocationException;
-
- /**
- * Returns the position of the first character of the specified line.
- *
- * @param line the line of interest
- * @return offset of the first character of the line
- * @exception BadLocationException if the line is unknown to this tracker
- */
- int getLineOffset(int line) throws BadLocationException;
-
- /**
- * Returns length of the specified line including the line's delimiter.
- *
- * @param line the line of interest
- * @return the length of the line
- * @exception BadLocationException if line is unknown to this tracker
- */
- int getLineLength(int line) throws BadLocationException;
-
- /**
- * Returns the line number the character at the given offset belongs to.
- *
- * @param offset the offset whose line number to be determined
- * @return the number of the line the offset is on
- * @exception BadLocationException if the offset is invalid in this tracker
- */
- int getLineNumberOfOffset(int offset) throws BadLocationException;
-
- /**
- * Returns a line description of the line at the given offset.
- * The description contains the start offset and the length of the line
- * excluding the line's delimiter.
- *
- * @param offset the offset whose line should be described
- * @return a region describing the line
- * @exception BadLocationException if offset is invalid in this tracker
- */
- IRegion getLineInformationOfOffset(int offset) throws BadLocationException;
-
- /**
- * Returns a line description of the given line. The description
- * contains the start offset and the length of the line excluding the line's
- * delimiter.
- *
- * @param line the line that should be described
- * @return a region describing the line
- * @exception BadLocationException if line is unknown to this tracker
- */
- IRegion getLineInformation(int line) throws BadLocationException;
-
- /**
- * Informs the line tracker about the specified change in the tracked text.
- *
- * @param offset the offset of the replaced text
- * @param length the length of the replaced text
- * @param text the substitution text
- * @exception BadLocationException if specified range is unknown to this tracker
- */
- void replace(int offset, int length, String text) throws BadLocationException;
-
- /**
- * Sets the tracked text to the specified text.
- *
- * @param text the new tracked text
- */
- void set(String text);
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/IPositionUpdater.java b/org.eclipse.text/src/org/eclipse/jface/text/IPositionUpdater.java
deleted file mode 100644
index 63361f6b5..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/IPositionUpdater.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-/**
- * A position updater is responsible for adapting document positions. When
- * installed on a document, the position updater updates the document's
- * positions to changes applied to this document. Document updaters can be
- * selective, i.e. they might only update positions of a certain category.
- * <p>
- * Position updaters are of primary importance for the definition of the
- * semantics of positions.
- * <p>
- * Clients may implement this interface or use the standard implementation
- * {@link org.eclipse.jface.text.DefaultPositionUpdater}.
- *
- * @see org.eclipse.jface.text.IDocument
- * @see org.eclipse.jface.text.Position
- */
-public interface IPositionUpdater {
-
- /**
- * Adapts positions to the change specified by the document event.
- * It is ensured that the document's partitioning has been adapted to
- * this document change and that all the position updaters which have
- * a smaller index in the document's position updater list have been called.
- *
- * @param event the document event describing the document change
- */
- void update(DocumentEvent event);
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/IRegion.java b/org.eclipse.text/src/org/eclipse/jface/text/IRegion.java
deleted file mode 100644
index 2c63ddd15..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/IRegion.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-/**
- * A region describes a certain range in an indexed text store. Text stores are
- * for example documents or strings. A region is defined by its offset into the
- * text store and its length.
- * <p>
- * A region is considered a value object. Its offset and length do not change
- * over time.
- * <p>
- * Clients may implement this interface or use the standard implementation
- * {@link org.eclipse.jface.text.Region}.
- */
-public interface IRegion {
-
- /**
- * Returns the length of the region.
- *
- * @return the length of the region
- */
- int getLength();
-
- /**
- * Returns the offset of the region.
- *
- * @return the offset of the region
- */
- int getOffset();
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/IRepairableDocument.java b/org.eclipse.text/src/org/eclipse/jface/text/IRepairableDocument.java
deleted file mode 100644
index 1d6c7a00c..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/IRepairableDocument.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-/**
- * Tagging interface to be implemented by
- * {@link org.eclipse.jface.text.IDocument}implementers that offer a line
- * repair method on the documents.
- *
- * @see org.eclipse.jface.text.IDocument
- * @since 3.0
- */
-public interface IRepairableDocument {
-
- /**
- * Repairs the line information of the document implementing this interface.
- */
- void repairLineInformation();
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/ISlaveDocumentManager.java b/org.eclipse.text/src/org/eclipse/jface/text/ISlaveDocumentManager.java
deleted file mode 100644
index 6349aaa1b..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/ISlaveDocumentManager.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.text;
-
-/**
- * Slave documents are documents whose contents is defined in terms of a master
- * document. Thus, slave documents usually reflect a projection of the master document.
- * Slave documents are causally connected to the master document. This means, changes
- * of the master document have immediate effect on the slave document and vice versa.<p>
- *
- * A slave document manager creates slave documents for given master documents, manages the
- * life cycle of the slave documents, and keeps track of the information flow between
- * master and slave documents. The slave document manager defines the construction rules of the
- * slave documents in terms of the master document.<p>
- *
-* In order to provided backward compatibility for clients of <code>ISlaveDocumentManager</code>, extension
- * interfaces are used to provide a means of evolution. The following extension interfaces
- * exist:
- * <ul>
- * <li> {@link org.eclipse.jface.text.ISlaveDocumentManagerExtension} since version 3.0 extending the protocol
- * with an access to all managed slave document for a given master document. </li>
- * </ul>
- *
- *
- * @see org.eclipse.jface.text.IDocument
- * @since 2.1
- */
-public interface ISlaveDocumentManager {
-
- /**
- * Creates a new slave document for the given master document. The slave document
- * is causally connected to its master document until <code>freeSlaveDocument</code>
- * is called. The connection between the newly created slave document and the master
- * document is managed by this slave document manager.
- *
- * @param master the master document
- * @return the newly created slave document
- * @see #freeSlaveDocument(IDocument)
- */
- IDocument createSlaveDocument(IDocument master);
-
- /**
- * Frees the given slave document. If the given document is not a slave document known
- * to this slave document manager, this call does not have any effect. A slave
- * document is known to this slave document manager if it has been created by
- * this manager using <code>createSlaveDocument</code>.
- *
- * @param slave the slave document to be freed
- * @see #createSlaveDocument(IDocument)
- */
- void freeSlaveDocument(IDocument slave);
-
- /**
- * Creates a new document information mapping between the given slave document and
- * its master document. Returns <code>null</code> if the given document is unknown
- * to this slave document manager.
- *
- * @param slave the slave document
- * @return a document information mapping between the slave document and its master document or
- * <code>null</code>
- */
- IDocumentInformationMapping createMasterSlaveMapping(IDocument slave);
-
- /**
- * Returns the master document of the given slave document or <code>null</code> if the
- * given document is unknown to this slave document manager.
- *
- * @param slave the slave document
- * @return the master document of the given slave document or <code>null</code>
- */
- IDocument getMasterDocument(IDocument slave);
-
- /**
- * Returns whether the given document is a slave document known to this slave document manager. A slave document
- * is known to this slave document manager, if the document has been created by this manager.
- *
- * @param document the document to be checked whether it is a slave document known to this manager
- * @return <code>true</code> if the document is a slave document, <code>false</code> otherwise
- */
- boolean isSlaveDocument(IDocument document);
-
- /**
- * Sets the given slave document's auto expand mode. In auto expand mode, a
- * slave document is automatically adapted to reflect all changes applied to it's master document.
- * Assume a master document contains 30 lines and the slave is defined to contain the lines 11-20.
- * In auto expand mode, when the master document is changed at line 8, the slave document is expanded
- * to contain the lines 8-20.<p>
- * This call is without effect if the given document is unknown to this slave document manager.
- *
- * @param slave the slave whose auto expand mode should be set
- * @param autoExpand <code>true</code> for auto expand, <code>false</code> otherwise
- */
- void setAutoExpandMode(IDocument slave, boolean autoExpand);
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/ISlaveDocumentManagerExtension.java b/org.eclipse.text/src/org/eclipse/jface/text/ISlaveDocumentManagerExtension.java
deleted file mode 100644
index af1485af3..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/ISlaveDocumentManagerExtension.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-/**
- * Extension interface for {@link org.eclipse.jface.text.ISlaveDocumentManager}.
- * <p>
- * Adds access to the list of all slave documents for a given master document.
- *
- * @see org.eclipse.jface.text.ISlaveDocumentManager
- * @since 3.0
- */
-public interface ISlaveDocumentManagerExtension {
-
- /**
- * Returns the list of slave documents for the given master document or
- * <code>null</code> if there are no such slave document.
- *
- * @param master the master document
- * @return the list of slave documents or <code>null</code>
- */
- IDocument[] getSlaveDocuments(IDocument master);
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/ISynchronizable.java b/org.eclipse.text/src/org/eclipse/jface/text/ISynchronizable.java
deleted file mode 100644
index d82c10475..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/ISynchronizable.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-/**
- * Interface for text related objects which may be used in the multi-threaded
- * context and thus must provide a way to prevent concurrent access and
- * manipulation.
- * <p>
- * In order to reduce the probability of dead locks clients should synchronize
- * their access to these objects by using the provided lock object rather than
- * the object itself.
- * <p>
- * Managing objects can use the <code>setLockObject</code> method in order to
- * synchronize whole sets of objects.
- *
- * @since 3.0
- */
-public interface ISynchronizable {
-
- /**
- * Sets the lock object for this object. If the lock object is not
- * <code>null</code> subsequent calls to specified methods of this object
- * are synchronized on this lock object. Which methods are synchronized is
- * specified by the implementer.
- *
- * @param lockObject the lock object. May be <code>null</code>.
- */
- void setLockObject(Object lockObject);
-
- /**
- * Returns the lock object or <code>null</code> if there is none. Clients
- * should use the lock object in order to synchronize concurrent access to
- * the implementer.
- *
- * @return the lock object or <code>null</code>
- */
- Object getLockObject();
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/ITextStore.java b/org.eclipse.text/src/org/eclipse/jface/text/ITextStore.java
deleted file mode 100644
index 87a4a7795..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/ITextStore.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-/**
- * Interface for storing and managing text.
- * <p>
- * Provides access to the stored text and allows to manipulate it. Clients may
- * implement this interface or use {@link org.eclipse.jface.text.GapTextStore} and
- * {@link org.eclipse.jface.text.SequentialRewriteTextStore}.
- */
-public interface ITextStore {
-
- /**
- * Returns the character at the specified offset.
- *
- * @param offset the offset in this text store
- * @return the character at this offset
- */
- char get(int offset);
-
- /**
- * Returns the text of the specified character range.
- *
- * @param offset the offset of the range
- * @param length the length of the range
- * @return the text of the range
- */
- String get(int offset, int length);
-
- /**
- * Returns number of characters stored in this text store.
- *
- * @return the number of characters stored in this text store
- */
- int getLength();
-
- /**
- * Replaces the specified character range with the given text.
- * <code>replace(getLength(), 0, "some text")</code> is a valid
- * call and appends text to the end of the text store.
- *
- * @param offset the offset of the range to be replaced
- * @param length the number of characters to be replaced
- * @param text the substitution text
- */
- void replace(int offset, int length, String text);
-
- /**
- * Replace the content of the text store with the given text.
- * Convenience method for <code>replace(0, getLength(), text</code>.
- *
- * @param text the new content of the text store
- */
- void set(String text);
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/ITypedRegion.java b/org.eclipse.text/src/org/eclipse/jface/text/ITypedRegion.java
deleted file mode 100644
index 66c335afd..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/ITypedRegion.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-
-/**
- * Describes a region of an indexed text store such as a document or a string.
- * The region consists of offset, length, and type. The region type is defined
- * as a string.
- * <p>
- * A typed region can, e.g., be used to described document partitions. Clients
- * may implement this interface or use the standard implementation
- * {@link org.eclipse.jface.text.TypedRegion}.
- */
-public interface ITypedRegion extends IRegion {
-
- /**
- * Returns the content type of the region.
- *
- * @return the content type of the region
- */
- String getType();
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/Line.java b/org.eclipse.text/src/org/eclipse/jface/text/Line.java
deleted file mode 100644
index c843cab00..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/Line.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-/**
- * Describes a line as a particular number of characters beginning at
- * a particular offset, consisting of a particular number of characters,
- * and being closed with a particular line delimiter.
- */
-class Line implements IRegion {
-
- /** The offset of the line */
- public int offset;
- /** The length of the line */
- public int length;
- /** The delimiter of this line */
- public String delimiter;
-
- /**
- * Creates a new Line.
- *
- * @param offset the offset of the line
- * @param end the last including character offset of the line
- * @param delimiter the line's delimiter
- */
- public Line(int offset, int end, String delimiter) {
- this.offset= offset;
- this.length= (end - offset) +1;
- this.delimiter= delimiter;
- }
-
- /**
- * Creates a new Line.
- *
- * @param offset the offset of the line
- * @param length the length of the line
- */
- public Line(int offset, int length) {
- this.offset= offset;
- this.length= length;
- this.delimiter= null;
- }
-
- /*
- * @see org.eclipse.jface.text.IRegion#getOffset()
- */
- public int getOffset() {
- return offset;
- }
-
- /*
- * @see org.eclipse.jface.text.IRegion#getLength()
- */
- public int getLength() {
- return length;
- }
-}
-
-
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/Position.java b/org.eclipse.text/src/org/eclipse/jface/text/Position.java
deleted file mode 100644
index 09127fdc0..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/Position.java
+++ /dev/null
@@ -1,194 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-/**
- * Positions describe text ranges of a document. Positions are adapted to
- * changes applied to that document. The text range is specified by an offset
- * and a length. Positions can be marked as deleted. Deleted positions are
- * considered to no longer represent a valid text range in the managing
- * document.
- * <p>
- * Positions attached to documents are usually updated by position updaters.
- * Because position updaters are freely definable and because of the frequency
- * in which they are used, the fields of a position are made publicly
- * accessible. Clients other than position updaters are not allowed to access
- * these public fields.
- * <p>
- * Position can not be used as keys in hash tables as they override
- * <code>equals</code> and <code>hashCode</code> as they would be value
- * objects.
- *
- * @see org.eclipse.jface.text.IDocument
- */
-public class Position {
-
- /** The offset of the position */
- public int offset;
- /** The length of the position */
- public int length;
- /** Indicates whether the position has been deleted */
- public boolean isDeleted;
-
- /**
- * Creates a new position with the given offset and length 0.
- *
- * @param offset the position offset, must be >= 0
- */
- public Position(int offset) {
- this(offset, 0);
- }
-
- /**
- * Creates a new position with the given offset and length.
- *
- * @param offset the position offset, must be >= 0
- * @param length the position length, must be >= 0
- */
- public Position(int offset, int length) {
- Assert.isTrue(offset >= 0);
- Assert.isTrue(length >= 0);
- this.offset= offset;
- this.length= length;
- }
-
- /**
- * Creates a new, not initialized position.
- */
- protected Position() {
- }
-
- /*
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- int deleted= isDeleted ? 0 : 1;
- return (offset << 24) | (length << 16) | deleted;
- }
-
- /**
- * Marks this position as deleted.
- */
- public void delete() {
- isDeleted= true;
- }
-
- /**
- * Marks this position as not deleted.
- *
- * @since 2.0
- */
- public void undelete() {
- isDeleted= false;
- }
-
- /*
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object other) {
- if (other instanceof Position) {
- Position rp= (Position) other;
- return (rp.offset == offset) && (rp.length == length);
- }
- return super.equals(other);
- }
-
- /**
- * Returns the length of this position.
- *
- * @return the length of this position
- */
- public int getLength() {
- return length;
- }
-
- /**
- * Returns the offset of this position.
- *
- * @return the length of this position
- */
- public int getOffset() {
- return offset;
- }
-
- /**
- * Checks whether the given offset is inside
- * of this position's text range.
- *
- * @param offset the offset to check
- * @return <code>true</code> if offset is inside of this position
- */
- public boolean includes(int offset) {
-
- if (isDeleted)
- return false;
-
- return (this.offset <= offset) && (offset < this.offset + length);
- }
-
- /**
- * Checks whether the intersection of the given text range
- * and the text range represented by this position is empty
- * or not.
- *
- * @param offset the offset of the range to check
- * @param length the length of the range to check
- * @return <code>true</code> if intersection is not empty
- */
- public boolean overlapsWith(int offset, int length) {
-
- if (isDeleted)
- return false;
-
- int end= offset + length;
- int thisEnd= this.offset + this.length;
-
- if (length > 0) {
- if (this.length > 0)
- return this.offset < end && offset < thisEnd;
- return offset <= this.offset && this.offset < end;
- }
-
- if (this.length > 0)
- return this.offset <= offset && offset < thisEnd;
- return this.offset == offset;
- }
-
- /**
- * Returns whether this position has been deleted or not.
- *
- * @return <code>true</code> if position has been deleted
- */
- public boolean isDeleted() {
- return isDeleted;
- }
-
- /**
- * Changes the length of this position to the given length.
- *
- * @param length the new length of this position
- */
- public void setLength(int length) {
- Assert.isTrue(length >= 0);
- this.length= length;
- }
-
- /**
- * Changes the offset of this position to the given offset.
- *
- * @param offset the new offset of this position
- */
- public void setOffset(int offset) {
- Assert.isTrue(offset >= 0);
- this.offset= offset;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/Region.java b/org.eclipse.text/src/org/eclipse/jface/text/Region.java
deleted file mode 100644
index c6fd326de..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/Region.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-/**
- * The default implementation of the {@link org.eclipse.jface.text.IRegion} interface.
- */
-public class Region implements IRegion {
-
- /** The region offset */
- private int fOffset;
- /** The region length */
- private int fLength;
-
- /**
- * Create a new region.
- *
- * @param offset the offset of the region
- * @param length the length of the region
- */
- public Region(int offset, int length) {
- fOffset= offset;
- fLength= length;
- }
-
- /*
- * @see org.eclipse.jface.text.IRegion#getLength()
- */
- public int getLength() {
- return fLength;
- }
-
- /*
- * @see org.eclipse.jface.text.IRegion#getOffset()
- */
- public int getOffset() {
- return fOffset;
- }
-
- /*
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object o) {
- if (o instanceof IRegion) {
- IRegion r= (IRegion) o;
- return r.getOffset() == fOffset && r.getLength() == fLength;
- }
- return false;
- }
-
- /*
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- return (fOffset << 24) | (fLength << 16);
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/SequentialRewriteTextStore.java b/org.eclipse.text/src/org/eclipse/jface/text/SequentialRewriteTextStore.java
deleted file mode 100644
index 7313b684e..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/SequentialRewriteTextStore.java
+++ /dev/null
@@ -1,273 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-
-/**
- * A text store that optimizes a given source text store for sequential rewriting.
- * While rewritten it keeps a list of replace command that serve as patches for
- * the source store. Only on request, the source store is indeed manipulated
- * by applying the patch commands to the source text store.
- *
- * @since 2.0
- */
-public class SequentialRewriteTextStore implements ITextStore {
-
- /**
- * A buffered replace command.
- */
- private static class Replace {
- public int newOffset;
- public final int offset;
- public final int length;
- public final String text;
-
- public Replace(int offset, int newOffset, int length, String text) {
- this.newOffset= newOffset;
- this.offset= offset;
- this.length= length;
- this.text= text;
- }
- }
-
- /** The list of buffered replacements. */
- private List fReplaceList;
- /** The source text store */
- private ITextStore fSource;
- /** A flag to enforce sequential access. */
- private static final boolean ASSERT_SEQUENTIALITY= false;
-
-
- /**
- * Creates a new sequential rewrite store for the given source store.
- *
- * @param source the source text store
- */
- public SequentialRewriteTextStore(ITextStore source) {
- fReplaceList= new LinkedList();
- fSource= source;
- }
-
- /**
- * Returns the source store of this rewrite store.
- *
- * @return the source store of this rewrite store
- */
- public ITextStore getSourceStore() {
- commit();
- return fSource;
- }
-
- /*
- * @see org.eclipse.jface.text.ITextStore#replace(int, int, java.lang.String)
- */
- public void replace(int offset, int length, String text) {
-
- if (fReplaceList.size() == 0) {
- fReplaceList.add(new Replace(offset, offset, length, text));
-
- } else {
- Replace firstReplace= (Replace) fReplaceList.get(0);
- Replace lastReplace= (Replace) fReplaceList.get(fReplaceList.size() - 1);
-
- // backward
- if (offset + length <= firstReplace.newOffset) {
- int delta= text.length() - length;
- if (delta != 0) {
- for (Iterator i= fReplaceList.iterator(); i.hasNext(); ) {
- Replace replace= (Replace) i.next();
- replace.newOffset += delta;
- }
- }
-
- fReplaceList.add(0, new Replace(offset, offset, length, text));
-
- // forward
- } else if (offset >= lastReplace.newOffset + lastReplace.text.length()) {
- int delta= getDelta(lastReplace);
- fReplaceList.add(new Replace(offset - delta, offset, length, text));
-
- } else if (ASSERT_SEQUENTIALITY) {
- throw new IllegalArgumentException();
-
- } else {
- commit();
- fSource.replace(offset, length, text);
- }
- }
- }
-
- /*
- * @see org.eclipse.jface.text.ITextStore#set(java.lang.String)
- */
- public void set(String text) {
- fSource.set(text);
- fReplaceList.clear();
- }
-
- /*
- * @see org.eclipse.jface.text.ITextStore#get(int, int)
- */
- public String get(int offset, int length) {
-
- if (fReplaceList.size() == 0) {
- return fSource.get(offset, length);
-
- } else {
- Replace firstReplace= (Replace) fReplaceList.get(0);
- Replace lastReplace= (Replace) fReplaceList.get(fReplaceList.size() - 1);
-
- // before
- if (offset + length <= firstReplace.newOffset) {
- return fSource.get(offset, length);
-
- // after
- } else if (offset >= lastReplace.newOffset + lastReplace.text.length()) {
- int delta= getDelta(lastReplace);
- return fSource.get(offset - delta, length);
-
- } else if (ASSERT_SEQUENTIALITY) {
- throw new IllegalArgumentException();
-
- } else {
-
- int delta= 0;
- for (Iterator i= fReplaceList.iterator(); i.hasNext(); ) {
- Replace replace= (Replace) i.next();
-
- if (offset + length < replace.newOffset) {
- return fSource.get(offset - delta, length);
-
- } else if (offset >= replace.newOffset && offset + length <= replace.newOffset + replace.text.length()) {
- return replace.text.substring(offset - replace.newOffset, offset - replace.newOffset + length);
-
- } else if (offset >= replace.newOffset + replace.text.length()) {
- delta= getDelta(replace);
- continue;
-
- } else {
- commit();
- return fSource.get(offset, length);
- }
- }
-
- return fSource.get(offset - delta, length);
- }
- }
- }
-
- /**
- * Returns the difference between the offset in the source store and the "same" offset in the
- * rewrite store after the replace operation.
- *
- * @param replace the replace command
- * @return the difference
- */
- private static final int getDelta(Replace replace) {
- return replace.newOffset - replace.offset + replace.text.length() - replace.length;
- }
-
- /*
- * @see org.eclipse.jface.text.ITextStore#get(int)
- */
- public char get(int offset) {
- if (fReplaceList.size() == 0) {
- return fSource.get(offset);
-
- } else {
- Replace firstReplace= (Replace) fReplaceList.get(0);
- Replace lastReplace= (Replace) fReplaceList.get(fReplaceList.size() - 1);
-
- // before
- if (offset < firstReplace.newOffset) {
- return fSource.get(offset);
-
- // after
- } else if (offset >= lastReplace.newOffset + lastReplace.text.length()) {
- int delta= getDelta(lastReplace);
- return fSource.get(offset - delta);
-
- } else if (ASSERT_SEQUENTIALITY) {
- throw new IllegalArgumentException();
-
- } else {
-
- int delta= 0;
- for (Iterator i= fReplaceList.iterator(); i.hasNext(); ) {
- Replace replace= (Replace) i.next();
-
- if (offset < replace.newOffset)
- return fSource.get(offset - delta);
-
- else if (offset < replace.newOffset + replace.text.length())
- return replace.text.charAt(offset - replace.newOffset);
-
- delta= getDelta(replace);
- }
-
- return fSource.get(offset - delta);
- }
- }
- }
-
- /*
- * @see org.eclipse.jface.text.ITextStore#getLength()
- */
- public int getLength() {
- if (fReplaceList.size() == 0) {
- return fSource.getLength();
-
- } else {
- Replace lastReplace= (Replace) fReplaceList.get(fReplaceList.size() - 1);
- return fSource.getLength() + getDelta(lastReplace);
- }
- }
-
- /**
- * Disposes this rewrite store.
- */
- public void dispose() {
- fReplaceList= null;
- fSource= null;
- }
-
- /**
- * Commits all buffered replace commands.
- */
- private void commit() {
-
- if (fReplaceList.size() == 0)
- return;
-
- StringBuffer buffer= new StringBuffer();
-
- int delta= 0;
- for (Iterator i= fReplaceList.iterator(); i.hasNext(); ) {
- Replace replace= (Replace) i.next();
-
- int offset= buffer.length() - delta;
- buffer.append(fSource.get(offset, replace.offset - offset));
- buffer.append(replace.text);
- delta= getDelta(replace);
- }
-
- int offset= buffer.length() - delta;
- buffer.append(fSource.get(offset, fSource.getLength() - offset));
-
- fSource.set(buffer.toString());
- fReplaceList.clear();
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/SlaveDocumentEvent.java b/org.eclipse.text/src/org/eclipse/jface/text/SlaveDocumentEvent.java
deleted file mode 100644
index 8161c8e41..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/SlaveDocumentEvent.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-/**
- * A slave document event represents a master document event as a slave-relative
- * document event. It also carries the master document event.
- */
-public class SlaveDocumentEvent extends DocumentEvent {
-
- /** The master document event */
- private DocumentEvent fMasterEvent;
-
- /**
- * Creates a new slave document event.
- *
- * @param doc the slave document
- * @param offset the offset in the slave document
- * @param length the length in the slave document
- * @param text the substitution text
- * @param masterEvent the master document event
- */
- public SlaveDocumentEvent(IDocument doc, int offset, int length, String text, DocumentEvent masterEvent) {
- super(doc, offset, length, text);
- fMasterEvent= masterEvent;
- }
-
- /**
- * Returns this event's master event.
- *
- * @return this event's master event
- */
- public DocumentEvent getMasterEvent() {
- return fMasterEvent;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/TextUtilities.java b/org.eclipse.text/src/org/eclipse/jface/text/TextUtilities.java
deleted file mode 100644
index b8ea5e057..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/TextUtilities.java
+++ /dev/null
@@ -1,529 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.Set;
-
-
-/**
- * A collection of text functions.
- */
-public class TextUtilities {
-
- /**
- * Default line delimiters used by the text functions of this class.
- */
- public final static String[] DELIMITERS= new String[] { "\n", "\r", "\r\n" }; //$NON-NLS-3$ //$NON-NLS-2$ //$NON-NLS-1$
-
- /**
- * Default line delimiters used by these text functions.
- *
- * @deprecated use DELIMITERS instead
- */
- public final static String[] fgDelimiters= DELIMITERS;
-
-
-
- /**
- * Determines which one of default line delimiters appears first in the list. If none of them the
- * hint is returned.
- *
- * @param text the text to be checked
- * @param hint the line delimiter hint
- * @return the line delimiter
- */
- public static String determineLineDelimiter(String text, String hint) {
- try {
- int[] info= indexOf(DELIMITERS, text, 0);
- return DELIMITERS[info[1]];
- } catch (ArrayIndexOutOfBoundsException x) {
- }
- return hint;
- }
-
- /**
- * Returns the starting position and the index of the longest matching search string
- * in the given text that is greater than the given offset. Returns <code>[-1, -1]</code>
- * if no match can be found.
- *
- * @param searchStrings the strings to search for
- * @param text the text to be searched
- * @param offset the offset at which to start the search
- * @return an <code>int[]</code> with two elements" the first is the starting offset, the second the index of the found
- * search string in the given <code>searchStrings</code> array, returns <code>[-1, -1]</code> if no match exists
- */
- public static int[] indexOf(String[] searchStrings, String text, int offset) {
-
- int[] result= { -1, -1 };
- int zeroIndex= -1;
-
- for (int i= 0; i < searchStrings.length; i++) {
-
- int length= searchStrings[i].length();
-
- if (length == 0) {
- zeroIndex= i;
- continue;
- }
-
- int index= text.indexOf(searchStrings[i], offset);
- if (index >= 0) {
-
- if (result[0] == -1) {
- result[0]= index;
- result[1]= i;
- } else if (index < result[0]) {
- result[0]= index;
- result[1]= i;
- } else if (index == result[0] && length > searchStrings[result[1]].length()) {
- result[0]= index;
- result[1]= i;
- }
- }
- }
-
- if (zeroIndex > -1 && result[0] == -1) {
- result[0]= 0;
- result[1]= zeroIndex;
- }
-
- return result;
- }
-
- /**
- * Returns the index of the longest search string with which the given text ends or
- * <code>-1</code> if none matches.
- *
- * @param searchStrings the strings to search for
- * @param text the text to search
- * @return the index in <code>searchStrings</code> of the longest string with which <code>text</code> ends or <code>-1</code>
- */
- public static int endsWith(String[] searchStrings, String text) {
-
- int index= -1;
-
- for (int i= 0; i < searchStrings.length; i++) {
- if (text.endsWith(searchStrings[i])) {
- if (index == -1 || searchStrings[i].length() > searchStrings[index].length())
- index= i;
- }
- }
-
- return index;
- }
-
- /**
- * Returns the index of the longest search string with which the given text starts or <code>-1</code>
- * if none matches.
- *
- * @param searchStrings the strings to search for
- * @param text the text to search
- * @return the index in <code>searchStrings</code> of the longest string with which <code>text</code> starts or <code>-1</code>
- */
- public static int startsWith(String[] searchStrings, String text) {
-
- int index= -1;
-
- for (int i= 0; i < searchStrings.length; i++) {
- if (text.startsWith(searchStrings[i])) {
- if (index == -1 || searchStrings[i].length() > searchStrings[index].length())
- index= i;
- }
- }
-
- return index;
- }
-
- /**
- * Returns the index of the first compare string that equals the given text or <code>-1</code>
- * if none is equal.
- *
- * @param compareStrings the strings to compare with
- * @param text the text to check
- * @return the index of the first equal compare string or <code>-1</code>
- */
- public static int equals(String[] compareStrings, String text) {
- for (int i= 0; i < compareStrings.length; i++) {
- if (text.equals(compareStrings[i]))
- return i;
- }
- return -1;
- }
-
- /**
- * Returns a document event which is an accumulation of a list of document events,
- * <code>null</code> if the list of documentEvents is empty.
- * The document of the document events are ignored.
- *
- * @param unprocessedDocument the document to which the document events would be applied
- * @param documentEvents the list of document events to merge
- * @return returns the merged document event
- * @throws BadLocationException might be thrown if document is not in the correct state with respect to document events
- */
- public static DocumentEvent mergeUnprocessedDocumentEvents(IDocument unprocessedDocument, List documentEvents) throws BadLocationException {
-
- if (documentEvents.size() == 0)
- return null;
-
- final Iterator iterator= documentEvents.iterator();
- final DocumentEvent firstEvent= (DocumentEvent) iterator.next();
-
- // current merged event
- final IDocument document= unprocessedDocument;
- int offset= firstEvent.getOffset();
- int length= firstEvent.getLength();
- final StringBuffer text= new StringBuffer(firstEvent.getText() == null ? "" : firstEvent.getText()); //$NON-NLS-1$
-
- while (iterator.hasNext()) {
-
- final int delta= text.length() - length;
-
- final DocumentEvent event= (DocumentEvent) iterator.next();
- final int eventOffset= event.getOffset();
- final int eventLength= event.getLength();
- final String eventText= event.getText() == null ? "" : event.getText(); //$NON-NLS-1$
-
- // event is right from merged event
- if (eventOffset > offset + length + delta) {
- final String string= document.get(offset + length, (eventOffset - delta) - (offset + length));
- text.append(string);
- text.append(eventText);
-
- length= (eventOffset - delta) + eventLength - offset;
-
- // event is left from merged event
- } else if (eventOffset + eventLength < offset) {
- final String string= document.get(eventOffset + eventLength, offset - (eventOffset + eventLength));
- text.insert(0, string);
- text.insert(0, eventText);
-
- length= offset + length - eventOffset;
- offset= eventOffset;
-
- // events overlap each other
- } else {
- final int start= Math.max(0, eventOffset - offset);
- final int end= Math.min(text.length(), eventLength + eventOffset - offset);
- text.replace(start, end, eventText);
-
- offset= Math.min(offset, eventOffset);
- final int totalDelta= delta + eventText.length() - eventLength;
- length= text.length() - totalDelta;
- }
- }
-
- return new DocumentEvent(document, offset, length, text.toString());
- }
-
- /**
- * Returns a document event which is an accumulation of a list of document events,
- * <code>null</code> if the list of document events is empty.
- * The document events being merged must all refer to the same document, to which
- * the document changes have been already applied.
- *
- * @param documentEvents the list of document events to merge
- * @return returns the merged document event
- * @throws BadLocationException might be thrown if document is not in the correct state with respect to document events
- */
- public static DocumentEvent mergeProcessedDocumentEvents(List documentEvents) throws BadLocationException {
-
- if (documentEvents.size() == 0)
- return null;
-
- final ListIterator iterator= documentEvents.listIterator(documentEvents.size());
- final DocumentEvent firstEvent= (DocumentEvent) iterator.previous();
-
- // current merged event
- final IDocument document= firstEvent.getDocument();
- int offset= firstEvent.getOffset();
- int length= firstEvent.getLength();
- int textLength= firstEvent.getText() == null ? 0 : firstEvent.getText().length();
-
- while (iterator.hasPrevious()) {
-
- final int delta= length - textLength;
-
- final DocumentEvent event= (DocumentEvent) iterator.previous();
- final int eventOffset= event.getOffset();
- final int eventLength= event.getLength();
- final int eventTextLength= event.getText() == null ? 0 : event.getText().length();
-
- // event is right from merged event
- if (eventOffset > offset + textLength + delta) {
- length= (eventOffset - delta) - (offset + textLength) + length + eventLength;
- textLength= (eventOffset - delta) + eventTextLength - offset;
-
- // event is left from merged event
- } else if (eventOffset + eventTextLength < offset) {
- length= offset - (eventOffset + eventTextLength) + length + eventLength;
- textLength= offset + textLength - eventOffset;
- offset= eventOffset;
-
- // events overlap each other
- } else {
- final int start= Math.max(0, eventOffset - offset);
- final int end= Math.min(length, eventTextLength + eventOffset - offset);
- length += eventLength - (end - start);
-
- offset= Math.min(offset, eventOffset);
- final int totalDelta= delta + eventLength - eventTextLength;
- textLength= length - totalDelta;
- }
- }
-
- final String text= document.get(offset, textLength);
- return new DocumentEvent(document, offset, length, text);
- }
-
- /**
- * Removes all connected document partitioners from the given document and stores them
- * under their partitioning name in a map. This map is returned. After this method has been called
- * the given document is no longer connected to any document partitioner.
- *
- * @param document the document
- * @return the map containing the removed partitioners
- */
- public static Map removeDocumentPartitioners(IDocument document) {
- Map partitioners= new HashMap();
- if (document instanceof IDocumentExtension3) {
- IDocumentExtension3 extension3= (IDocumentExtension3) document;
- String[] partitionings= extension3.getPartitionings();
- for (int i= 0; i < partitionings.length; i++) {
- IDocumentPartitioner partitioner= extension3.getDocumentPartitioner(partitionings[i]);
- if (partitioner != null) {
- extension3.setDocumentPartitioner(partitionings[i], null);
- partitioner.disconnect();
- partitioners.put(partitionings[i], partitioner);
- }
- }
- } else {
- IDocumentPartitioner partitioner= document.getDocumentPartitioner();
- if (partitioner != null) {
- document.setDocumentPartitioner(null);
- partitioner.disconnect();
- partitioners.put(IDocumentExtension3.DEFAULT_PARTITIONING, partitioner);
- }
- }
- return partitioners;
- }
-
- /**
- * Connects the given document with all document partitioners stored in the given map under
- * their partitioning name. This method cleans the given map.
- *
- * @param document the document
- * @param partitioners the map containing the partitioners to be connected
- * @since 3.0
- */
- public static void addDocumentPartitioners(IDocument document, Map partitioners) {
- if (document instanceof IDocumentExtension3) {
- IDocumentExtension3 extension3= (IDocumentExtension3) document;
- Iterator e= partitioners.keySet().iterator();
- while (e.hasNext()) {
- String partitioning= (String) e.next();
- IDocumentPartitioner partitioner= (IDocumentPartitioner) partitioners.get(partitioning);
- partitioner.connect(document);
- extension3.setDocumentPartitioner(partitioning, partitioner);
- }
- partitioners.clear();
- } else {
- IDocumentPartitioner partitioner= (IDocumentPartitioner) partitioners.get(IDocumentExtension3.DEFAULT_PARTITIONING);
- partitioner.connect(document);
- document.setDocumentPartitioner(partitioner);
- }
- }
-
- /**
- * Returns the content type at the given offset of the given document.
- *
- * @param document the document
- * @param partitioning the partitioning to be used
- * @param offset the offset
- * @param preferOpenPartitions <code>true</code> if precedence should be
- * given to a open partition ending at <code>offset</code> over a
- * closed partition starting at <code>offset</code>
- * @return the content type at the given offset of the document
- * @throws BadLocationException if offset is invalid in the document
- * @since 3.0
- */
- public static String getContentType(IDocument document, String partitioning, int offset, boolean preferOpenPartitions) throws BadLocationException {
- if (document instanceof IDocumentExtension3) {
- IDocumentExtension3 extension3= (IDocumentExtension3) document;
- try {
- return extension3.getContentType(partitioning, offset, preferOpenPartitions);
- } catch (BadPartitioningException x) {
- return IDocument.DEFAULT_CONTENT_TYPE;
- }
- } else {
- return document.getContentType(offset);
- }
- }
-
- /**
- * Returns the partition of the given offset of the given document.
- *
- * @param document the document
- * @param partitioning the partitioning to be used
- * @param offset the offset
- * @param preferOpenPartitions <code>true</code> if precedence should be
- * given to a open partition ending at <code>offset</code> over a
- * closed partition starting at <code>offset</code>
- * @return the content type at the given offset of this viewer's input
- * document
- * @throws BadLocationException if offset is invalid in the given document
- * @since 3.0
- */
- public static ITypedRegion getPartition(IDocument document, String partitioning, int offset, boolean preferOpenPartitions) throws BadLocationException {
- if (document instanceof IDocumentExtension3) {
- IDocumentExtension3 extension3= (IDocumentExtension3) document;
- try {
- return extension3.getPartition(partitioning, offset, preferOpenPartitions);
- } catch (BadPartitioningException x) {
- return new TypedRegion(0, document.getLength(), IDocument.DEFAULT_CONTENT_TYPE);
- }
- } else {
- return document.getPartition(offset);
- }
- }
-
- /**
- * Computes and returns the partitioning for the given region of the given
- * document for the given partitioning name.
- *
- * @param document the document
- * @param partitioning the partitioning name
- * @param offset the region offset
- * @param length the region length
- * @param includeZeroLengthPartitions whether to include zero-length partitions
- * @return the partitioning for the given region of the given document for
- * the given partitioning name
- * @throws BadLocationException if the given region is invalid for the given
- * document
- * @since 3.0
- */
- public static ITypedRegion[] computePartitioning(IDocument document, String partitioning, int offset, int length, boolean includeZeroLengthPartitions) throws BadLocationException {
- if (document instanceof IDocumentExtension3) {
- IDocumentExtension3 extension3= (IDocumentExtension3) document;
- try {
- return extension3.computePartitioning(partitioning, offset, length, includeZeroLengthPartitions);
- } catch (BadPartitioningException x) {
- return new ITypedRegion[0];
- }
- } else {
- return document.computePartitioning(offset, length);
- }
- }
-
- /**
- * Computes and returns the partition managing position categories for the
- * given document or <code>null</code> if this was impossible.
- *
- * @param document the document
- * @return the partition managing position categories
- * @since 3.0
- */
- public static String[] computePartitionManagingCategories(IDocument document) {
- if (document instanceof IDocumentExtension3) {
- IDocumentExtension3 extension3= (IDocumentExtension3) document;
- String[] partitionings= extension3.getPartitionings();
- if (partitionings != null) {
- Set categories= new HashSet();
- for (int i= 0; i < partitionings.length; i++) {
- IDocumentPartitioner p= extension3.getDocumentPartitioner(partitionings[i]);
- if (p instanceof IDocumentPartitionerExtension2) {
- IDocumentPartitionerExtension2 extension2= (IDocumentPartitionerExtension2) p;
- String[] c= extension2.getManagingPositionCategories();
- if (c != null) {
- for (int j= 0; j < c.length; j++)
- categories.add(c[j]);
- }
- }
- }
- String[] result= new String[categories.size()];
- categories.toArray(result);
- return result;
- }
- }
- return null;
- }
-
- /**
- * Returns the default line delimiter for the given document. This is either the delimiter of the first line, or the platform line delimiter if it is
- * a legal line delimiter or the first one of the legal line delimiters. The default line delimiter should be used when performing document
- * manipulations that span multiple lines.
- *
- * @param document the document
- * @return the document's default line delimiter
- * @since 3.0
- */
- public static String getDefaultLineDelimiter(IDocument document) {
-
- String lineDelimiter= null;
-
- try {
- lineDelimiter= document.getLineDelimiter(0);
- } catch (BadLocationException x) {
- }
-
- if (lineDelimiter == null) {
- String sysLineDelimiter= System.getProperty("line.separator"); //$NON-NLS-1$
- String[] delimiters= document.getLegalLineDelimiters();
- Assert.isTrue(delimiters.length > 0);
- for (int i= 0; i < delimiters.length; i++) {
- if (delimiters[i].equals(sysLineDelimiter)) {
- lineDelimiter= sysLineDelimiter;
- break;
- }
- }
-
- if (lineDelimiter == null)
- lineDelimiter= delimiters[0];
- }
-
- return lineDelimiter;
- }
-
- /**
- * Returns <code>true</code> if the two regions overlap. Returns <code>false</code> if one of the
- * arguments is <code>null</code>.
- *
- * @param left the left region
- * @param right the right region
- * @return <code>true</code> if the two regions overlap, <code>false</code> otherwise
- * @since 3.0
- */
- public static boolean overlaps(IRegion left, IRegion right) {
-
- if (left == null || right == null)
- return false;
-
- int rightEnd= right.getOffset() + right.getLength();
- int leftEnd= left.getOffset()+ left.getLength();
-
- if (right.getLength() > 0) {
- if (left.getLength() > 0)
- return left.getOffset() < rightEnd && right.getOffset() < leftEnd;
- return right.getOffset() <= left.getOffset() && left.getOffset() < rightEnd;
- }
-
- if (left.getLength() > 0)
- return left.getOffset() <= right.getOffset() && right.getOffset() < leftEnd;
-
- return left.getOffset() == right.getOffset();
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/TypedPosition.java b/org.eclipse.text/src/org/eclipse/jface/text/TypedPosition.java
deleted file mode 100644
index d0b089bb1..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/TypedPosition.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-
-/**
- * Convenience class for positions that have a type, similar to
- * {@link org.eclipse.jface.text.ITypedRegion}.
- * <p>
- * As {@link org.eclipse.jface.text.Position},<code>TypedPosition</code> can
- * not be used as key in hash tables as it overrides <code>equals</code> and
- * <code>hashCode</code> as it would be a value object.
- */
-public class TypedPosition extends Position {
-
- /** The type of the region described by this position */
- private String fType;
-
- /**
- * Creates a position along the given specification.
- *
- * @param offset the offset of this position
- * @param length the length of this position
- * @param type the type of this position
- */
- public TypedPosition(int offset, int length, String type) {
- super(offset, length);
- fType= type;
- }
-
- /**
- * Creates a position based on the typed region.
- *
- * @param region the typed region
- */
- public TypedPosition(ITypedRegion region) {
- super(region.getOffset(), region.getLength());
- fType= region.getType();
- }
-
- /**
- * Returns the type of the position
- *
- * @return the type of this position
- */
- public String getType() {
- return fType;
- }
-
- /*
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object o) {
- if (o instanceof TypedPosition) {
- if (super.equals(o)) {
- TypedPosition p= (TypedPosition) o;
- return (fType == null && p.getType() == null) || fType.equals(p.getType());
- }
- }
- return false;
- }
-
- /*
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- int type= fType == null ? 0 : fType.hashCode();
- return super.hashCode() | type;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/TypedRegion.java b/org.eclipse.text/src/org/eclipse/jface/text/TypedRegion.java
deleted file mode 100644
index 42fe410f3..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/TypedRegion.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text;
-
-
-
-/**
- * Default implementation of {@link org.eclipse.jface.text.ITypedRegion}. A
- * <code>TypedRegion</code> is a value object.
- */
-public class TypedRegion extends Region implements ITypedRegion {
-
- /** The region's type */
- private String fType;
-
- /**
- * Creates a typed region based on the given specification.
- *
- * @param offset the region's offset
- * @param length the region's length
- * @param type the region's type
- */
- public TypedRegion(int offset, int length, String type) {
- super(offset, length);
- fType= type;
- }
-
- /*
- * @see org.eclipse.jface.text.ITypedRegion#getType()
- */
- public String getType() {
- return fType;
- }
-
- /*
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object o) {
- if (o instanceof TypedRegion) {
- TypedRegion r= (TypedRegion) o;
- return super.equals(r) && ((fType == null && r.getType() == null) || fType.equals(r.getType()));
- }
- return false;
- }
-
- /*
- * @see java.lang.Object#hashCode()
- */
- public int hashCode() {
- int type= fType == null ? 0 : fType.hashCode();
- return super.hashCode() | type;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/link/ILinkedModeListener.java b/org.eclipse.text/src/org/eclipse/jface/text/link/ILinkedModeListener.java
deleted file mode 100644
index 7fa43152d..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/link/ILinkedModeListener.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.link;
-
-/**
- * Protocol used by {@link LinkedModeModel}s to communicate state changes, such
- * as leaving linked mode, suspending it due to a child mode coming up, and
- * resuming after a child mode has left.
- * <p>
- * This interface may implemented by clients.
- * </p>
- *
- * @since 3.0
- */
-public interface ILinkedModeListener {
-
- /** Flag to <code>leave</code> specifying no special action. */
- int NONE= 0;
- /**
- * Flag to <code>leave</code> specifying that all nested modes should
- * exit.
- */
- int EXIT_ALL= 1 << 0;
- /**
- * Flag to <code>leave</code> specifying that the caret should be moved to
- * the exit position.
- */
- int UPDATE_CARET= 1 << 1;
- /**
- * Flag to <code>leave</code> specifying that a UI of a parent mode should
- * select the current position.
- */
- int SELECT= 1 << 2;
- /**
- * Flag to <code>leave</code> specifying that document content outside of
- * a linked position was modified.
- */
- int EXTERNAL_MODIFICATION= 1 << 3;
-
- /**
- * The leave event occurs when linked is left.
- *
- * @param model the model being left
- * @param flags the reason and commands for leaving linked mode
- */
- void left(LinkedModeModel model, int flags);
-
- /**
- * The suspend event occurs when a nested linked mode is installed within
- * <code>model</code>.
- *
- * @param model the model being suspended due to a nested model being
- * installed
- */
- void suspend(LinkedModeModel model);
-
- /**
- * The resume event occurs when a nested linked mode exits.
- *
- * @param model the linked mode model being resumed due to a nested mode
- * exiting
- * @param flags the commands to execute when resuming after suspend
- */
- void resume(LinkedModeModel model, int flags);
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/link/InclusivePositionUpdater.java b/org.eclipse.text/src/org/eclipse/jface/text/link/InclusivePositionUpdater.java
deleted file mode 100644
index 5003a7942..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/link/InclusivePositionUpdater.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.link;
-
-import org.eclipse.jface.text.BadPositionCategoryException;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IPositionUpdater;
-import org.eclipse.jface.text.Position;
-
-/**
- * Position updater that takes any change in
- * <code>[position.offset, position.offset + position.length]</code> as
- * belonging to the position.
- * <p>
- * Internal class. Do not use. Public for testing purposes only.
- * </p>
- *
- * @since 3.0
- */
-public class InclusivePositionUpdater implements IPositionUpdater {
-
- /** The position category. */
- private final String fCategory;
-
- /**
- * Creates a new updater for the given <code>category</code>.
- *
- * @param category the new category.
- */
- public InclusivePositionUpdater(String category) {
- fCategory= category;
- }
-
- /*
- * @see org.eclipse.jface.text.IPositionUpdater#update(org.eclipse.jface.text.DocumentEvent)
- */
- public void update(DocumentEvent event) {
-
- int eventOffset= event.getOffset();
- int eventOldLength= event.getLength();
- int eventNewLength= event.getText() == null ? 0 : event.getText().length();
- int deltaLength= eventNewLength - eventOldLength;
-
- try {
- Position[] positions= event.getDocument().getPositions(fCategory);
-
- for (int i= 0; i != positions.length; i++) {
-
- Position position= positions[i];
-
- if (position.isDeleted())
- continue;
-
- int offset= position.getOffset();
- int length= position.getLength();
- int end= offset + length;
-
- if (offset > eventOffset + eventOldLength)
- // position comes way
- // after change - shift
- position.setOffset(offset + deltaLength);
- else if (end < eventOffset) {
- // position comes way before change -
- // leave alone
- } else if (offset <= eventOffset && end >= eventOffset + eventOldLength) {
- // event completely internal to the position - adjust length
- position.setLength(length + deltaLength);
- } else if (offset < eventOffset) {
- // event extends over end of position - adjust length
- int newEnd= eventOffset + eventNewLength;
- position.setLength(newEnd - offset);
- } else if (end > eventOffset + eventOldLength) {
- // event extends from before position into it - adjust offset
- // and length
- // offset becomes end of event, length adjusted accordingly
- // we want to recycle the overlapping part
- position.setOffset(eventOffset);
- int deleted= eventOffset + eventOldLength - offset;
- position.setLength(length - deleted + eventNewLength);
- } else {
- // event consumes the position - delete it
- position.delete();
- }
- }
- } catch (BadPositionCategoryException e) {
- // ignore and return
- }
- }
-
- /**
- * Returns the position category.
- *
- * @return the position category
- */
- public String getCategory() {
- return fCategory;
- }
-
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/link/LinkedModeManager.java b/org.eclipse.text/src/org/eclipse/jface/text/link/LinkedModeManager.java
deleted file mode 100644
index 6172996da..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/link/LinkedModeManager.java
+++ /dev/null
@@ -1,232 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.link;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.Stack;
-
-import org.eclipse.jface.text.Assert;
-import org.eclipse.jface.text.IDocument;
-
-
-/**
- * A linked mode manager ensures exclusive access of linked position infrastructures to documents. There
- * is at most one <code>LinkedModeManager</code> installed on the same document. The <code>getManager</code>
- * methods will return the existing instance if any of the specified documents already have an installed
- * manager.
- *
- * @since 3.0
- */
-class LinkedModeManager {
-
- /**
- * Our implementation of <code>ILinkedModeListener</code>.
- */
- private class Listener implements ILinkedModeListener {
-
- /*
- * @see org.eclipse.jdt.internal.ui.text.link2.LinkedModeModel.ILinkedModeListener#left(org.eclipse.jdt.internal.ui.text.link2.LinkedModeModel, int)
- */
- public void left(LinkedModeModel model, int flags) {
- LinkedModeManager.this.left(model, flags);
- }
-
- /*
- * @see org.eclipse.jdt.internal.ui.text.link2.LinkedModeModel.ILinkedModeListener#suspend(org.eclipse.jdt.internal.ui.text.link2.LinkedModeModel)
- */
- public void suspend(LinkedModeModel model) {
- // not interested
- }
-
- /*
- * @see org.eclipse.jdt.internal.ui.text.link2.LinkedModeModel.ILinkedModeListener#resume(org.eclipse.jdt.internal.ui.text.link2.LinkedModeModel, int)
- */
- public void resume(LinkedModeModel model, int flags) {
- // not interested
- }
-
- }
-
- /** Global map from documents to managers. */
- private static Map fManagers= new HashMap();
-
- /**
- * Returns whether there exists a <code>LinkedModeManager</code> on <code>document</code>.
- *
- * @param document the document of interest
- * @return <code>true</code> if there exists a <code>LinkedModeManager</code> on <code>document</code>, <code>false</code> otherwise
- */
- public static boolean hasManager(IDocument document) {
- return fManagers.get(document) != null;
- }
-
- /**
- * Returns whether there exists a <code>LinkedModeManager</code> on any of the <code>documents</code>.
- *
- * @param documents the documents of interest
- * @return <code>true</code> if there exists a <code>LinkedModeManager</code> on any of the <code>documents</code>, <code>false</code> otherwise
- */
- public static boolean hasManager(IDocument[] documents) {
- for (int i= 0; i < documents.length; i++) {
- if (hasManager(documents[i]))
- return true;
- }
- return false;
- }
-
- /**
- * Returns the manager for the given documents. If <code>force</code> is
- * <code>true</code>, any existing conflicting managers are canceled, otherwise,
- * the method may return <code>null</code> if there are conflicts.
- *
- * @param documents the documents of interest
- * @param force whether to kill any conflicting managers
- * @return a manager able to cover the requested documents, or <code>null</code> if there is a conflict and <code>force</code> was set to <code>false</code>
- */
- public static LinkedModeManager getLinkedManager(IDocument[] documents, boolean force) {
- if (documents == null || documents.length == 0)
- return null;
-
- Set mgrs= new HashSet();
- LinkedModeManager mgr= null;
- for (int i= 0; i < documents.length; i++) {
- mgr= (LinkedModeManager) fManagers.get(documents[i]);
- if (mgr != null)
- mgrs.add(mgr);
- }
- if (mgrs.size() > 1)
- if (force) {
- for (Iterator it= mgrs.iterator(); it.hasNext(); ) {
- LinkedModeManager m= (LinkedModeManager) it.next();
- m.closeAllEnvironments();
- }
- } else {
- return null;
- }
-
- if (mgrs.size() == 0)
- mgr= new LinkedModeManager();
-
- for (int i= 0; i < documents.length; i++)
- fManagers.put(documents[i], mgr);
-
- return mgr;
- }
-
- /**
- * Cancels any linked mode manager for the specified document.
- *
- * @param document the document whose <code>LinkedModeManager</code> should be cancelled
- */
- public static void cancelManager(IDocument document) {
- LinkedModeManager mgr= (LinkedModeManager) fManagers.get(document);
- if (mgr != null)
- mgr.closeAllEnvironments();
- }
-
- /** The hierarchy of environments managed by this manager. */
- private Stack fEnvironments= new Stack();
- private Listener fListener= new Listener();
-
- /**
- * Notify the manager about a leaving model.
- *
- * @param model
- * @param flags
- */
- private void left(LinkedModeModel model, int flags) {
- if (!fEnvironments.contains(model))
- return;
-
- while (!fEnvironments.isEmpty()) {
- LinkedModeModel env= (LinkedModeModel) fEnvironments.pop();
- if (env == model)
- break;
- else
- env.exit(ILinkedModeListener.NONE);
- }
-
- if (fEnvironments.isEmpty()) {
- removeManager();
- }
- }
-
- private void closeAllEnvironments() {
- while (!fEnvironments.isEmpty()) {
- LinkedModeModel env= (LinkedModeModel) fEnvironments.pop();
- env.exit(ILinkedModeListener.NONE);
- }
-
- removeManager();
- }
-
- private void removeManager() {
- for (Iterator it= fManagers.keySet().iterator(); it.hasNext();) {
- IDocument doc= (IDocument) it.next();
- if (fManagers.get(doc) == this)
- it.remove();
- }
- }
-
- /**
- * Tries to nest the given <code>LinkedModeModel</code> onto the top of
- * the stack of environments managed by the receiver. If <code>force</code>
- * is <code>true</code>, any environments on the stack that create a conflict
- * are killed.
- *
- * @param model the model to nest
- * @param force whether to force the addition of the model
- * @return <code>true</code> if nesting was successful, <code>false</code> otherwise (only possible if <code>force</code> is <code>false</code>
- */
- public boolean nestEnvironment(LinkedModeModel model, boolean force) {
- Assert.isNotNull(model);
-
- try {
- while (true) {
- if (fEnvironments.isEmpty()) {
- model.addLinkingListener(fListener);
- fEnvironments.push(model);
- return true;
- }
-
- LinkedModeModel top= (LinkedModeModel) fEnvironments.peek();
- if (model.canNestInto(top)) {
- model.addLinkingListener(fListener);
- fEnvironments.push(model);
- return true;
- } else if (!force) {
- return false;
- } else { // force
- fEnvironments.pop();
- top.exit(ILinkedModeListener.NONE);
- // continue;
- }
- }
- } finally {
- // if we remove any, make sure the new one got inserted
- Assert.isTrue(fEnvironments.size() > 0);
- }
- }
-
- /**
- * @return
- */
- public LinkedModeModel getTopEnvironment() {
- if (fEnvironments.isEmpty())
- return null;
- else
- return (LinkedModeModel) fEnvironments.peek();
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/link/LinkedModeModel.java b/org.eclipse.text/src/org/eclipse/jface/text/link/LinkedModeModel.java
deleted file mode 100644
index 98bd06160..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/link/LinkedModeModel.java
+++ /dev/null
@@ -1,760 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.link;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.text.edits.MalformedTreeException;
-import org.eclipse.text.edits.TextEdit;
-
-import org.eclipse.jface.text.Assert;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.BadPositionCategoryException;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IDocumentExtension;
-import org.eclipse.jface.text.IDocumentListener;
-import org.eclipse.jface.text.IPositionUpdater;
-import org.eclipse.jface.text.Position;
-import org.eclipse.jface.text.IDocumentExtension.IReplace;
-
-/**
- * A <code>LinkedModeModel</code> umbrellas several
- * <code>LinkedPositionGroup</code>s. Once installed, the model
- * propagates any changes to a position to all its siblings in the same position
- * group.
- * <p>
- * Setting up a model consists of first adding
- * <code>LinkedPositionGroup</code> s to it, and then installing the
- * model by either calling {@link #forceInstall()} or
- * {@link #tryInstall()}. After installing the model, it becomes
- * <em>sealed</em> and no more groups may be added.
- * </p>
- * <p>
- * If the document is changed outside any linked position, the model is
- * torn down and all positions are deleted. The same happens upon calling
- * {@link #exit(int)}.
- * </p>
- * <h4>Nesting</h4>
- * <p>
- * A <code>LinkedModeModel</code> may be nested into another model. This
- * happens when installing a model the positions of which all fit into a
- * single position in a parent model that has previously been installed on
- * the same document(s).
- * </p>
- * <p>
- * Clients may instantiate instances of this class.
- * </p>
- *
- * @since 3.0
- */
-public class LinkedModeModel {
-
- /**
- * Checks whether there is already a model installed on <code>document</code>.
- *
- * @param document the <code>IDocument</code> of interest
- * @return <code>true</code> if there is an existing model, <code>false</code>
- * otherwise
- */
- public static boolean hasInstalledModel(IDocument document) {
- // if there is a manager, there also is a model
- return LinkedModeManager.hasManager(document);
- }
-
- /**
- * Checks whether there is already a linked mode model installed on any of
- * the <code>documents</code>.
- *
- * @param documents the <code>IDocument</code>s of interest
- * @return <code>true</code> if there is an existing model, <code>false</code>
- * otherwise
- */
- public static boolean hasInstalledModel(IDocument[] documents) {
- // if there is a manager, there also is a model
- return LinkedModeManager.hasManager(documents);
- }
-
- /**
- * Cancels any linked mode model on the specified document. If there is no
- * model, nothing happens.
- *
- * @param document the document whose <code>LinkedModeModel</code> should
- * be cancelled
- */
- public static void closeAllModels(IDocument document) {
- LinkedModeManager.cancelManager(document);
- }
-
- /**
- * Returns the model currently active on <code>document</code> at
- * <code>offset</code>, or <code>null</code> if there is none.
- *
- * @param document the document for which the caller asks for a
- * model
- * @param offset the offset into <code>document</code>, as there may be
- * several models on a document
- * @return the model currently active on <code>document</code>, or
- * <code>null</code>
- */
- public static LinkedModeModel getModel(IDocument document, int offset) {
- LinkedModeManager mgr= LinkedModeManager.getLinkedManager(new IDocument[] {document}, false);
- if (mgr != null)
- return mgr.getTopEnvironment();
- else
- return null;
- }
-
- /**
- * Encapsulates the edition triggered by a change to a linking position. Can
- * be applied to a document as a whole.
- */
- private class Replace implements IReplace {
-
- /** The edition to apply on a document. */
- private TextEdit fEdit;
-
- /**
- * Creates a new instance.
- *
- * @param edit the edition to apply to a document.
- */
- public Replace(TextEdit edit) {
- fEdit= edit;
- }
-
- /*
- * @see org.eclipse.jface.text.IDocumentExtension.IReplace#perform(org.eclipse.jface.text.IDocument, org.eclipse.jface.text.IDocumentListener)
- */
- public void perform(IDocument document, IDocumentListener owner) throws RuntimeException, MalformedTreeException {
- document.removeDocumentListener(owner);
- fIsChanging= true;
- try {
- fEdit.apply(document, TextEdit.UPDATE_REGIONS | TextEdit.CREATE_UNDO);
- } catch (BadLocationException e) {
- /* perform should really throw a BadLocationException
- * TODO see https://bugs.eclipse.org/bugs/show_bug.cgi?id=52950
- */
- throw new RuntimeException(e);
- } finally {
- document.addDocumentListener(owner);
- fIsChanging= false;
- }
- }
-
- }
-
- /**
- * The document listener triggering the linked updating of positions
- * managed by this model.
- */
- private class DocumentListener implements IDocumentListener {
-
- private DocumentEvent fLastEvent;
- private boolean fExit= false;
-
- /**
- * Checks whether <code>event</code> occurs within any of the positions
- * managed by this model. If not, the linked mode is left.
- *
- * @param event {@inheritDoc}
- */
- public void documentAboutToBeChanged(DocumentEvent event) {
- // don't react on changes executed by the parent model
- if (fParentEnvironment != null && fParentEnvironment.isChanging())
- return;
-
- fExit= false;
- fLastEvent= event;
-
- for (Iterator it= fGroups.iterator(); it.hasNext(); ) {
- LinkedPositionGroup group= (LinkedPositionGroup) it.next();
- if (group.isLegalEvent(event))
- // take the first hit - exlusion is guaranteed by enforcing
- // disjointness when adding positions
- return;
- }
-
- // the event describes a change that lies outside of any managed
- // position -> signal to exit
- // don't exit here already, since we want to make sure that the positions
- // are updated to the document event.
- // TODO we might not always want to exit, e.g. we want to stay
- // linked if code completion has inserted import statements
- fExit= true;
- }
-
- /**
- * Propagates a change to a linked position to all its sibling positions.
- *
- * @param event {@inheritDoc}
- */
- public void documentChanged(DocumentEvent event) {
- // don't react on changes executed by the parent model
- if (fParentEnvironment != null && fParentEnvironment.isChanging())
- return;
-
- if (event.equals(fLastEvent) && fExit)
- LinkedModeModel.this.exit(ILinkedModeListener.EXTERNAL_MODIFICATION);
-
- for (Iterator it= fGroups.iterator(); it.hasNext(); ) {
- LinkedPositionGroup group= (LinkedPositionGroup) it.next();
-
- Map result= group.handleEvent(event);
- if (result == null)
- continue;
-
- // edit all documents
- for (Iterator it2= result.keySet().iterator(); it2.hasNext(); ) {
- IDocument doc= (IDocument) it2.next();
- TextEdit edit= (TextEdit) result.get(doc);
- Replace replace= new Replace(edit);
-
- // apply the edition, either as post notification replace
- // on the calling document or directly on any other
- // document
- if (doc == event.getDocument()) {
- if (doc instanceof IDocumentExtension) {
- ((IDocumentExtension) doc).registerPostNotificationReplace(this, replace);
- } else {
- // ignore - there is no way we can log from jface text...
- }
- } else {
- replace.perform(doc, this);
- }
- }
-
- // take the first hit - exlusion is guaranteed by enforcing
- // disjointness when adding positions
- return;
- }
- }
-
- }
-
- /** The set of linked position groups. */
- private final List fGroups= new ArrayList();
- /** The set of documents spanned by this group. */
- private final Set fDocuments= new HashSet();
- /** The position updater for linked positions. */
- private final IPositionUpdater fUpdater= new InclusivePositionUpdater(getCategory());
- /** The document listener on the documents affected by this model. */
- private final IDocumentListener fDocumentListener= new DocumentListener();
- /** The parent model for a hierarchical set up, or <code>null</code>. */
- private LinkedModeModel fParentEnvironment;
- /**
- * The position in <code>fParentEnvironment</code> that includes all
- * positions in this object, or <code>null</code> if there is no parent
- * model.
- */
- private LinkedPosition fParentPosition= null;
- /**
- * A model is sealed once it has children - no more positions can be
- * added.
- */
- private boolean fIsSealed= false;
- /** <code>true</code> when this model is changing documents. */
- private boolean fIsChanging= false;
- /** The linked listeners. */
- private final List fListeners= new ArrayList();
- /** Flag telling whether we have exited: */
- private boolean fIsActive= true;
- /**
- * The sequence of document positions as we are going to iterate through
- * them.
- */
- private List fPositionSequence= new ArrayList();
-
- /**
- * Whether we are in the process of editing documents (set by <code>Replace</code>,
- * read by <code>DocumentListener</code>.
- *
- * @return <code>true</code> if we are in the process of editing a
- * document, <code>false</code> otherwise
- */
- private boolean isChanging() {
- return fIsChanging || fParentEnvironment != null && fParentEnvironment.isChanging();
- }
-
- /**
- * Throws a <code>BadLocationException</code> if <code>group</code>
- * conflicts with this model's groups.
- *
- * @param group the group being checked
- * @throws BadLocationException if <code>group</code> conflicts with this
- * model's groups
- */
- private void enforceDisjoint(LinkedPositionGroup group) throws BadLocationException {
- for (Iterator it= fGroups.iterator(); it.hasNext(); ) {
- LinkedPositionGroup g= (LinkedPositionGroup) it.next();
- g.enforceDisjoint(group);
- }
- }
-
- /**
- * Causes this model to exit. Called either if a document change
- * outside this model is detected, or by the UI.
- *
- * <p>
- * This method part of the private protocol between
- * <code>LinkedUIControl</code> and <code>LinkedModeModel</code>.
- * </p>
- *
- * @param flags the exit flags.
- */
- public void exit(int flags) {
- if (!fIsActive)
- return;
- fIsActive= false;
-
- for (Iterator it= fDocuments.iterator(); it.hasNext(); ) {
- IDocument doc= (IDocument) it.next();
- try {
- doc.removePositionCategory(getCategory());
- } catch (BadPositionCategoryException e) {
- // won't happen
- Assert.isTrue(false);
- }
- doc.removePositionUpdater(fUpdater);
- doc.removeDocumentListener(fDocumentListener);
- }
-
- fDocuments.clear();
- fGroups.clear();
-
- List listeners= new ArrayList(fListeners);
- fListeners.clear();
- for (Iterator it= listeners.iterator(); it.hasNext(); ) {
- ILinkedModeListener listener= (ILinkedModeListener) it.next();
- listener.left(this, flags);
- }
-
-
- if (fParentEnvironment != null)
- fParentEnvironment.resume(flags);
- }
-
- /**
- * Puts <code>document</code> into the set of managed documents. This
- * involves registering the document listener and adding our position
- * category.
- *
- * @param document the new document
- */
- private void manageDocument(IDocument document) {
- if (!fDocuments.contains(document)) {
- fDocuments.add(document);
- document.addPositionCategory(getCategory());
- document.addPositionUpdater(fUpdater);
- document.addDocumentListener(fDocumentListener);
- }
-
- }
-
- /**
- * Returns the position category used by this model.
- *
- * @return the position category used by this model
- */
- private String getCategory() {
- return toString();
- }
-
- /**
- * Adds a position group to this <code>LinkedModeModel</code>. This
- * method may not be called if the model has been installed. Also, if
- * a UI has been set up for this model, it may not pick up groups
- * added afterwards.
- * <p>
- * If the positions in <code>group</code> conflict with any other group in
- * this model, a <code>BadLocationException</code> is thrown. Also,
- * if this model is nested inside another one, all positions in all
- * groups of the child model have to reside within a single position in the
- * parent model, otherwise a <code>BadLocationException</code> is thrown.
- * </p>
- * <p>
- * If <code>group</code> already exists, nothing happens.
- * </p>
- *
- * @param group the group to be added to this model
- * @throws BadLocationException if the group conflicts with the other groups
- * in this model or violates the nesting requirements.
- * @throws IllegalStateException if the method is called when the
- * model is already sealed
- */
- public void addGroup(LinkedPositionGroup group) throws BadLocationException {
- if (group == null)
- throw new IllegalArgumentException("group may not be null"); //$NON-NLS-1$
- if (fIsSealed)
- throw new IllegalStateException("model is already installed"); //$NON-NLS-1$
- if (fGroups.contains(group))
- // nothing happens
- return;
-
- enforceDisjoint(group);
- group.seal();
- fGroups.add(group);
- }
-
- /**
- * Installs this model, which includes registering as document
- * listener on all involved documents and storing global information about
- * this model. Any conflicting model already present will be
- * closed.
- * <p>
- * If an exception is thrown, the installation failed and
- * the model is unusable.
- * </p>
- *
- * @throws BadLocationException if some of the positions of this model
- * were not valid positions on their respective documents
- */
- public void forceInstall() throws BadLocationException {
- if (!install(true))
- Assert.isTrue(false);
- }
-
- /**
- * Installs this model, which includes registering as document
- * listener on all involved documents and storing global information about
- * this model. If there is another model installed on the
- * document(s) targeted by the receiver that conflicts with it, installation
- * may fail.
- * <p>
- * The return value states whether installation was
- * successful; if not, the model is not installed and will not work.
- * </p>
- *
- * @return <code>true</code> if installation was successful,
- * <code>false</code> otherwise
- * @throws BadLocationException if some of the positions of this model
- * were not valid positions on their respective documents
- */
- public boolean tryInstall() throws BadLocationException {
- return install(false);
- }
-
- /**
- * Installs this model, which includes registering as document
- * listener on all involved documents and storing global information about
- * this model. The return value states whether installation was
- * successful; if not, the model is not installed and will not work.
- * The return value can only then become <code>false</code> if
- * <code>force</code> was set to <code>false</code> as well.
- *
- * @param force if <code>true</code>, any other model that cannot
- * coexist with this one is canceled; if <code>false</code>,
- * install will fail when conflicts occur and return false
- * @return <code>true</code> if installation was successful,
- * <code>false</code> otherwise
- * @throws BadLocationException if some of the positions of this model
- * were not valid positions on their respective documents
- */
- private boolean install(boolean force) throws BadLocationException {
- if (fIsSealed)
- throw new IllegalStateException("model is already installed"); //$NON-NLS-1$
- enforceNotEmpty();
-
- IDocument[] documents= getDocuments();
- LinkedModeManager manager= LinkedModeManager.getLinkedManager(documents, force);
- // if we force creation, we require a valid manager
- Assert.isTrue(!(force && manager == null));
- if (manager == null)
- return false;
-
- if (!manager.nestEnvironment(this, force))
- if (force)
- Assert.isTrue(false);
- else
- return false;
-
- // we set up successfully. After this point, exit has to be called to
- // remove registered listeners...
- fIsSealed= true;
- if (fParentEnvironment != null)
- fParentEnvironment.suspend();
-
- // register positions
- try {
- for (Iterator it= fGroups.iterator(); it.hasNext(); ) {
- LinkedPositionGroup group= (LinkedPositionGroup) it.next();
- group.register(this);
- }
- return true;
- } catch (BadLocationException e){
- // if we fail to add, make sure to release all listeners again
- exit(ILinkedModeListener.NONE);
- throw e;
- }
- }
-
- /**
- * Asserts that there is at least one linked position in this linked mode
- * model, throws an IllegalStateException otherwise.
- */
- private void enforceNotEmpty() {
- boolean hasPosition= false;
- for (Iterator it= fGroups.iterator(); it.hasNext(); )
- if (!((LinkedPositionGroup) it.next()).isEmtpy()) {
- hasPosition= true;
- break;
- }
- if (!hasPosition)
- throw new IllegalStateException("must specify at least one linked position"); //$NON-NLS-1$
-
- }
-
- /**
- * Collects all the documents that contained positions are set upon.
- * @return the set of documents affected by this model
- */
- private IDocument[] getDocuments() {
- Set docs= new HashSet();
- for (Iterator it= fGroups.iterator(); it.hasNext(); ) {
- LinkedPositionGroup group= (LinkedPositionGroup) it.next();
- docs.addAll(Arrays.asList(group.getDocuments()));
- }
- return (IDocument[]) docs.toArray(new IDocument[docs.size()]);
- }
-
- /**
- * Returns whether the receiver can be nested into the given <code>parent</code>
- * model. If yes, the parent model and its position that the receiver
- * fits in are remembered.
- *
- * @param parent the parent model candidate
- * @return <code>true</code> if the receiver can be nested into <code>parent</code>, <code>false</code> otherwise
- */
- boolean canNestInto(LinkedModeModel parent) {
- for (Iterator it= fGroups.iterator(); it.hasNext(); ) {
- LinkedPositionGroup group= (LinkedPositionGroup) it.next();
- if (!enforceNestability(group, parent)) {
- fParentPosition= null;
- return false;
- }
- }
-
- Assert.isNotNull(fParentPosition);
- fParentEnvironment= parent;
- return true;
- }
-
- /**
- * Called by nested models when a group is added to them. All
- * positions in all groups of a nested model have to fit inside a
- * single position in the parent model.
- *
- * @param group the group of the nested model to be adopted.
- * @param model the model to check against
- * @return <code>false</code> if it failed to enforce nestability
- */
- private boolean enforceNestability(LinkedPositionGroup group, LinkedModeModel model) {
- Assert.isNotNull(model);
- Assert.isNotNull(group);
-
- try {
- for (Iterator it= model.fGroups.iterator(); it.hasNext(); ) {
- LinkedPositionGroup pg= (LinkedPositionGroup) it.next();
- LinkedPosition pos;
- pos= pg.adopt(group);
- if (pos != null && fParentPosition != null && fParentPosition != pos)
- return false; // group does not fit into one parent position, which is illegal
- else if (fParentPosition == null && pos != null)
- fParentPosition= pos;
- }
- } catch (BadLocationException e) {
- return false;
- }
-
- // group must fit into exactly one of the parent's positions
- return fParentPosition != null;
- }
-
- /**
- * Returns whether this model is nested.
- *
- * <p>
- * This method is part of the private protocol between
- * <code>LinkedUIControl</code> and <code>LinkedModeModel</code>.
- * </p>
- *
- * @return <code>true</code> if this model is nested,
- * <code>false</code> otherwise
- */
- public boolean isNested() {
- return fParentEnvironment != null;
- }
-
- /**
- * Returns the positions in this model that have a tab stop, in the
- * order they were added.
- *
- * <p>
- * This method is part of the private protocol between
- * <code>LinkedUIControl</code> and <code>LinkedModeModel</code>.
- * </p>
- *
- * @return the positions in this model that have a tab stop, in the
- * order they were added
- */
- public List getTabStopSequence() {
- return fPositionSequence;
- }
-
- /**
- * Adds <code>listener</code> to the set of listeners that are informed
- * upon state changes.
- *
- * @param listener the new listener
- */
- public void addLinkingListener(ILinkedModeListener listener) {
- Assert.isNotNull(listener);
- if (!fListeners.contains(listener))
- fListeners.add(listener);
- }
-
- /**
- * Removes <code>listener</code> from the set of listeners that are
- * informed upon state changes.
- *
- * @param listener the new listener
- */
- public void removeLinkingListener(ILinkedModeListener listener) {
- fListeners.remove(listener);
- }
-
- /**
- * Finds the position in this model that is closest after
- * <code>toFind</code>. <code>toFind</code> needs not be a position in
- * this model and serves merely as an offset.
- *
- * <p>
- * This method part of the private protocol between
- * <code>LinkedUIControl</code> and <code>LinkedModeModel</code>.
- * </p>
- *
- * @param toFind the position to search from
- * @return the closest position in the same document as <code>toFind</code>
- * after the offset of <code>toFind</code>, or <code>null</code>
- */
- public LinkedPosition findPosition(LinkedPosition toFind) {
- LinkedPosition position= null;
- for (Iterator it= fGroups.iterator(); it.hasNext(); ) {
- LinkedPositionGroup group= (LinkedPositionGroup) it.next();
- position= group.getPosition(toFind);
- if (position != null)
- break;
- }
- return position;
- }
-
- /**
- * Registers a <code>LinkedPosition</code> with this model. Called
- * by <code>PositionGroup</code>.
- *
- * @param position the position to register
- * @throws BadLocationException if the position cannot be added to its
- * document
- */
- void register(LinkedPosition position) throws BadLocationException {
- Assert.isNotNull(position);
-
- IDocument document= position.getDocument();
- manageDocument(document);
- try {
- document.addPosition(getCategory(), position);
- } catch (BadPositionCategoryException e) {
- // won't happen as the category has been added by manageDocument()
- Assert.isTrue(false);
- }
- int seqNr= position.getSequenceNumber();
- if (seqNr != LinkedPositionGroup.NO_STOP) {
- fPositionSequence.add(position);
- }
- }
-
- /**
- * Suspends this model.
- */
- private void suspend() {
- List l= new ArrayList(fListeners);
- for (Iterator it= l.iterator(); it.hasNext(); ) {
- ILinkedModeListener listener= (ILinkedModeListener) it.next();
- listener.suspend(this);
- }
- }
-
- /**
- * Resumes this model. <code>flags</code> can be <code>NONE</code>
- * or <code>SELECT</code>.
- *
- * @param flags <code>NONE</code> or <code>SELECT</code>
- */
- private void resume(int flags) {
- List l= new ArrayList(fListeners);
- for (Iterator it= l.iterator(); it.hasNext(); ) {
- ILinkedModeListener listener= (ILinkedModeListener) it.next();
- listener.resume(this, flags);
- }
- }
-
- /**
- * Returns whether an offset is contained by any position in this
- * model.
- *
- * @param offset the offset to check
- * @return <code>true</code> if <code>offset</code> is included by any
- * position (see {@link LinkedPosition#includes(int)}) in this
- * model, <code>false</code> otherwise
- */
- public boolean anyPositionContains(int offset) {
- for (Iterator it= fGroups.iterator(); it.hasNext(); ) {
- LinkedPositionGroup group= (LinkedPositionGroup) it.next();
- if (group.contains(offset))
- // take the first hit - exlusion is guaranteed by enforcing
- // disjointness when adding positions
- return true;
- }
- return false;
- }
-
- /**
- * Returns the linked position group that contains <code>position</code>,
- * or <code>null</code> if <code>position</code> is not contained in any
- * group within this model. Group containment is tested by calling
- * <code>group.contains(position)</code> for every <code>group</code> in
- * this model.
- *
- * <p>
- * This method part of the private protocol between
- * <code>LinkedUIControl</code> and <code>LinkedModeModel</code>.
- * </p>
- *
- * @param position the position the group of which is requested
- * @return the first group in this model for which
- * <code>group.contains(position)</code> returns <code>true</code>,
- * or <code>null</code> if no group contains <code>position</code>
- */
- public LinkedPositionGroup getGroupForPosition(Position position) {
- for (Iterator it= fGroups.iterator(); it.hasNext(); ) {
- LinkedPositionGroup group= (LinkedPositionGroup) it.next();
- if (group.contains(position))
- return group;
- }
- return null;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/link/LinkedPosition.java b/org.eclipse.text/src/org/eclipse/jface/text/link/LinkedPosition.java
deleted file mode 100644
index ad6ac92de..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/link/LinkedPosition.java
+++ /dev/null
@@ -1,177 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.link;
-
-import org.eclipse.jface.text.Assert;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.Position;
-
-/**
- * A <code>Position</code> on a document that knows which document it is
- * registered with and has a sequence number for tab stops.
- * <p>
- * Clients may extend this class.
- * </p>
- * @since 3.0
- */
-public class LinkedPosition extends Position {
-
- /** The document this position belongs to. */
- private IDocument fDocument;
- private int fSequenceNumber;
-
- /**
- * Creates a new instance.
- *
- * @param document the document
- * @param offset the offset of the position
- * @param length the length of the position
- * @param sequence the iteration sequence rank
- */
- public LinkedPosition(IDocument document, int offset, int length, int sequence) {
- super(offset, length);
- Assert.isNotNull(document);
- fDocument= document;
- fSequenceNumber= sequence;
- }
-
- /**
- * Creates a new instance. Equivalent to calling
- * <code>LinkedPosition(document, offset, length, LinkedPositionGroup.NO_STOP)</code>
- *
- * @param document the document
- * @param offset the offset of the position
- * @param length the length of the position
- */
- public LinkedPosition(IDocument document, int offset, int length) {
- this(document, offset, length, LinkedPositionGroup.NO_STOP);
- }
-
- /**
- * @return Returns the document.
- */
- public IDocument getDocument() {
- return fDocument;
- }
-
- /*
- * @see org.eclipse.jface.text.Position#equals(java.lang.Object)
- */
- public boolean equals(Object other) {
- if (other instanceof LinkedPosition) {
- LinkedPosition p= (LinkedPosition) other;
- return p.offset == offset && p.length == length && p.fDocument == fDocument;
- }
- return false;
- }
-
- /**
- * Returns whether this position overlaps with <code>position</code>.
- *
- * @param position the position to check.
- * @return <code>true</code> if this position overlaps with
- * <code>position</code>,<code>false</code> otherwise
- */
- public boolean overlapsWith(LinkedPosition position) {
- return position.getDocument() == fDocument && overlapsWith(position.getOffset(), position.getLength());
- }
-
- /**
- * Returns whether this position includes <code>event</code>.
- *
- * @param event the event to check.
- * @return <code>true</code> if this position includes <code>event</code>,
- * <code>false</code> otherwise
- */
- public boolean includes(DocumentEvent event) {
- return includes(event.getDocument(), event.getOffset(), event.getLength());
- }
-
- /**
- * Returns whether this position includes <code>position</code>.
- *
- * @param position the position to check.
- * @return <code>true</code> if this position includes
- * <code>position</code>,<code>false</code> otherwise
- */
- public boolean includes(LinkedPosition position) {
- return includes(position.getDocument(), position.getOffset(), position.getLength());
- }
-
- /**
- * Overrides {@link Position#includes(int)}so every offset is considered
- * included that lies in between the first and last offset of this position,
- * and offsets that are right at the end of the position.
- *
- * @param pOffset the offset to check
- * @return <code>true</code> if <code>pOffset</code> is in
- * <code>[offset, offset + length]</code>
- */
- public boolean includes(int pOffset) {
- return this.offset <= pOffset && pOffset <= this.offset + this.length;
- }
-
- /**
- * Returns whether this position includes the range given by
- * <code>offset</code> and <code>length</code>. A range is included by
- * a <code>LinkedPosition</code> if {@link #includes(int) includes(offset)}
- * returns true for every offset in the range, including the borders of the
- * range.
- *
- * @param doc the document that the given range refers to, may be <code>null</code>
- * @param off the offset of the range, referring to <code>document</code>
- * @param len the length of the range
- * @return <code>true</code> if <code>doc</code> is the same document as
- * this position refers to, and if the entire range is included in
- * this position
- */
- protected boolean includes(IDocument doc, int off, int len) {
- return doc == fDocument && off >= offset && len + off <= offset + length;
-
- }
-
- /**
- * Returns the content of this position on the referenced document.
- *
- * @return the content of the document at this position
- * @throws BadLocationException if the position is not valid
- */
- public String getContent() throws BadLocationException {
- return fDocument.get(offset, length);
- }
-
- /**
- * Returns the sequence number of this position.
- *
- * @return the sequence number of this position
- */
- public int getSequenceNumber() {
- return fSequenceNumber;
- }
-
- /**
- * Sets the sequence number of this position.
- *
- * @param sequence the new sequence number
- */
- public void setSequenceNumber(int sequence) {
- fSequenceNumber= sequence;
- }
-
- /*
- * @see org.eclipse.jface.text.Position#hashCode()
- */
- public int hashCode() {
- return fDocument.hashCode() | super.hashCode() | fSequenceNumber;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/link/LinkedPositionGroup.java b/org.eclipse.text/src/org/eclipse/jface/text/link/LinkedPositionGroup.java
deleted file mode 100644
index 9ef37eb0b..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/link/LinkedPositionGroup.java
+++ /dev/null
@@ -1,353 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.link;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.text.edits.MultiTextEdit;
-import org.eclipse.text.edits.ReplaceEdit;
-import org.eclipse.text.edits.TextEdit;
-
-import org.eclipse.jface.text.Assert;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.Position;
-
-/**
- * A group of positions in multiple documents that are simultaneously modified -
- * if one gets edited, all other positions in a <code>PositionGroup</code>
- * are edited the same way. All linked positions in a group have the same
- * content.
- * <p>
- * Normally, new positions are given a tab stop weight which can be used by
- * clients, e.g. the UI. If no weight is given, a position will not be visited.
- * If no weights are used at all, the first position in a document is taken as
- * the only stop as to comply with the behavior of the old linked position
- * infrastructure.
- * </p>
- * <p>
- * Clients may instantiate this class.
- * </p>
- *
- * @since 3.0
- */
-public class LinkedPositionGroup {
-
- /** Sequence constant declaring that a position should not be stopped by. */
- public static final int NO_STOP= -1;
-
- /* members */
-
- /** The linked positions of this group. */
- private final List fPositions= new LinkedList();
- /** Whether we are sealed or not. */
- private boolean fIsSealed= false;
- /**
- * <code>true</code> if there are custom iteration weights. For backward
- * compatibility.
- */
- private boolean fHasCustomIteration= false;
-
- /*
- * iteration variables, set to communicate state between isLegalEvent and
- * handleEvent
- */
- /** The position including the most recent <code>DocumentEvent</code>. */
- private LinkedPosition fLastPosition;
- /** The offset of <code>fLastPosition</code>. */
- private int fLastPositionOffset;
-
- /**
- * Adds a position to this group. The document region defined by the
- * position must contain the same content (and thus have the same length) as
- * any of the other positions already in this group. Additionally, all
- * positions added must be disjoint; otherwise a
- * <code>BadLocationException</code> is thrown.
- * <p>
- * Positions added using this method are owned by this group afterwards and
- * may not be updated or modified thereafter.
- * </p>
- * <p>
- * Once a group has been added to a <code>LinkedModeModel</code>, it
- * becomes <em>sealed</em> and no positions may be added any more.
- * </p>
- *
- * @param position the position to add
- * @throws BadLocationException if the position is invalid or conflicts with
- * other positions in the group
- * @throws IllegalStateException if the group has already been added to a
- * model
- */
- public void addPosition(LinkedPosition position) throws BadLocationException {
- /*
- * Enforces constraints and sets the custom iteration flag. If the
- * position is already in this group, nothing happens.
- */
- Assert.isNotNull(position);
- if (fIsSealed)
- throw new IllegalStateException("cannot add positions after the group is added to an model"); //$NON-NLS-1$
-
- if (!fPositions.contains(position)) {
- enforceDisjoint(position);
- enforceEqualContent(position);
- fPositions.add(position);
- fHasCustomIteration |= position.getSequenceNumber() != LinkedPositionGroup.NO_STOP;
- } else
- return; // nothing happens
- }
-
- /**
- * Enforces the invariant that all positions must contain the same string.
- *
- * @param position the position to check
- * @throws BadLocationException if the equal content check fails
- */
- private void enforceEqualContent(LinkedPosition position) throws BadLocationException {
- if (fPositions.size() > 0) {
- String groupContent= ((LinkedPosition) fPositions.get(0)).getContent();
- String positionContent= position.getContent();
- if (!groupContent.equals(positionContent))
- throw new BadLocationException();
- }
- }
-
- /**
- * Enforces the invariant that all positions must be disjoint.
- *
- * @param position the position to check
- * @throws BadLocationException if the disjointness check fails
- */
- private void enforceDisjoint(LinkedPosition position) throws BadLocationException {
- for (Iterator it= fPositions.iterator(); it.hasNext(); ) {
- LinkedPosition p= (LinkedPosition) it.next();
- if (p.overlapsWith(position))
- throw new BadLocationException();
- }
- }
-
- /**
- * Enforces the disjointness for another group
- *
- * @param group the group to check
- * @throws BadLocationException if the disjointness check fails
- */
- void enforceDisjoint(LinkedPositionGroup group) throws BadLocationException {
- Assert.isNotNull(group);
- for (Iterator it= group.fPositions.iterator(); it.hasNext(); ) {
- LinkedPosition p= (LinkedPosition) it.next();
- enforceDisjoint(p);
- }
- }
-
- /**
- * Checks whether <code>event</code> fits in any of the positions of this
- * group.
- *
- * @param event the document event to check
- * @return <code>true</code> if <code>event</code> fits in any position
- */
- boolean isLegalEvent(DocumentEvent event) {
- for (Iterator it= fPositions.iterator(); it.hasNext(); ) {
- LinkedPosition pos= (LinkedPosition) it.next();
- if (pos.includes(event)) {
- fLastPosition= pos;
- fLastPositionOffset= pos.getOffset();
- return true;
- }
- }
- fLastPosition= null;
- fLastPositionOffset= -1;
- return false;
- }
-
- /**
- * Creates an edition of a document change that will forward any
- * modification in one position to all linked siblings. The return value is
- * a map from <code>IDocument</code> to <code>TextEdit</code>.
- *
- * @param event the document event to check
- * @return a map of edits, grouped by edited document
- */
- Map handleEvent(DocumentEvent event) {
-
- if (fLastPosition != null) {
-
- Map map= new HashMap();
-
- int relOffset= event.getOffset() - fLastPositionOffset;
- int length= event.getLength();
- String text= event.getText();
-
- for (Iterator it2= fPositions.iterator(); it2.hasNext(); ) {
- LinkedPosition p= (LinkedPosition) it2.next();
- if (p == fLastPosition)
- continue; // don't re-update the origin of the change
-
- List edits= (List) map.get(p.getDocument());
- if (edits == null) {
- edits= new ArrayList();
- map.put(p.getDocument(), edits);
- }
-
- edits.add(new ReplaceEdit(p.getOffset() + relOffset, length, text));
- }
-
- for (Iterator it2= map.keySet().iterator(); it2.hasNext(); ) {
- IDocument d= (IDocument) it2.next();
- TextEdit edit= new MultiTextEdit(0, d.getLength());
- edit.addChildren((TextEdit[]) ((List) map.get(d)).toArray(new TextEdit[0]));
- map.put(d, edit);
- }
-
- return map;
-
- }
-
- return null;
- }
-
- /**
- * Sets the model of this group. Once a model has been set, no
- * more positions can be added and the model cannot be changed.
- */
- void seal() {
- Assert.isTrue(!fIsSealed);
- fIsSealed= true;
-
- if (fHasCustomIteration == false && fPositions.size() > 0) {
- ((LinkedPosition) fPositions.get(0)).setSequenceNumber(0);
- }
- }
-
- IDocument[] getDocuments() {
- IDocument[] docs= new IDocument[fPositions.size()];
- int i= 0;
- for (Iterator it= fPositions.iterator(); it.hasNext(); i++) {
- LinkedPosition pos= (LinkedPosition) it.next();
- docs[i]= pos.getDocument();
- }
- return docs;
- }
-
- void register(LinkedModeModel model) throws BadLocationException {
- for (Iterator it= fPositions.iterator(); it.hasNext(); ) {
- LinkedPosition pos= (LinkedPosition) it.next();
- model.register(pos);
- }
- }
-
- /**
- * Returns the position in this group that encompasses all positions in
- * <code>group</code>.
- *
- * @param group the group to be adopted
- * @return a position in the receiver that contains all positions in <code>group</code>,
- * or <code>null</code> if none can be found
- * @throws BadLocationException if more than one position are affected by
- * <code>group</code>
- */
- LinkedPosition adopt(LinkedPositionGroup group) throws BadLocationException {
- LinkedPosition found= null;
- for (Iterator it= group.fPositions.iterator(); it.hasNext(); ) {
- LinkedPosition pos= (LinkedPosition) it.next();
- LinkedPosition localFound= null;
- for (Iterator it2= fPositions.iterator(); it2.hasNext(); ) {
- LinkedPosition myPos= (LinkedPosition) it2.next();
- if (myPos.includes(pos)) {
- if (found == null)
- found= myPos;
- else if (found != myPos)
- throw new BadLocationException();
- if (localFound == null)
- localFound= myPos;
- }
- }
-
- if (localFound != found)
- throw new BadLocationException();
- }
- return found;
- }
-
- /**
- * Finds the closest position to <code>toFind</code>.
- *
- * @param toFind the linked position for which to find the closest position
- * @return the closest position to <code>toFind</code>.
- */
- LinkedPosition getPosition(LinkedPosition toFind) {
- for (Iterator it= fPositions.iterator(); it.hasNext(); ) {
- LinkedPosition p= (LinkedPosition) it.next();
- if (p.includes(toFind))
- return p;
- }
- return null;
- }
-
- /**
- * Returns <code>true</code> if <code>offset</code> is contained in any
- * position in this group.
- *
- * @param offset the offset to check
- * @return <code>true</code> if offset is contained by this group
- */
- boolean contains(int offset) {
- for (Iterator it= fPositions.iterator(); it.hasNext(); ) {
- LinkedPosition pos= (LinkedPosition) it.next();
- if (pos.includes(offset)) {
- return true;
- }
- }
- return false;
- }
-
- /**
- * Returns whether this group contains any positions.
- *
- * @return <code>true</code> if this group is empty, <code>false</code>
- * if it is not
- */
- public boolean isEmtpy() {
- return fPositions.size() == 0;
- }
-
- /**
- * Returns the positions contained in the receiver as an array. The
- * positions are the actual positions and must not be modified; the array
- * is a copy of internal structures.
- *
- * @return the positions of this group in no particular order
- */
- public LinkedPosition[] getPositions() {
- return (LinkedPosition[]) fPositions.toArray(new LinkedPosition[0]);
- }
-
- /**
- * Returns <code>true</code> if the receiver contains <code>position</code>.
- *
- * @param position the position to check
- * @return <code>true</code> if the receiver contains <code>position</code>
- */
- boolean contains(Position position) {
- for (Iterator it= fPositions.iterator(); it.hasNext(); ) {
- LinkedPosition p= (LinkedPosition) it.next();
- if (position.equals(p))
- return true;
- }
- return false;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/link/package.html b/org.eclipse.text/src/org/eclipse/jface/text/link/package.html
deleted file mode 100644
index bc5804001..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/link/package.html
+++ /dev/null
@@ -1,55 +0,0 @@
-<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
-<html><head>
- <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
- <meta content="IBM" name="Author">
- <meta content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]" name="GENERATOR"><title>Linked Position Infrastructure</title></head>
-
-<body>
-Application programming interfaces for interaction
-with the Eclipse Java User Interface text support.
-<h2>Linked Position Infrastructure</h2>
-<h3>package <span style="font-family: monospace;">org.eclipse.jface.text.link
-</span><span style="font-family: monospace;"></span></h3>
-<h3><code></code></h3>
-The Linked Position Infrastructure lets one set up a mode in an editor
-in which regions in a document (or several documents) are <em>linked</em>,
-i.e. editions
-of one linked position will be reflected in the others.
-<h4>Classes</h4>
-<ul>
- <li><code>LinkedPositionGroup</code>: a set of linked positions. Add
-positions to a group using the <code>addPosition</code> method. See <span style="font-family: monospace;">LinkedPosition</span><code><span style="font-family: helvetica,arial,sans-serif;"> and</span></code> <span style="font-family: monospace;">ProposalPosition</span><code><span style="font-family: helvetica,arial,sans-serif;"> </span></code><span style="font-family: helvetica,arial,sans-serif;">for a position type
-that lets one attach </span><span style="font-family: monospace;">ICompletionProposals</span><span style="font-family: monospace;"></span><span style="font-family: helvetica,arial,sans-serif;"> </span><span style="font-family: helvetica,arial,sans-serif;">to</span>
-be shown when the position is hit.</li>
- <li><code>LinkedModeModel</code>: umbrellas several <code>LinkedPositionGroup</code>s,
-e.g. in a template that has several groups of linked positions. Handles
-the forwarding of updates received via an IDocumentListener. Add <code>LinkedPositionGroup</code>s
-to
-an model using the <code>addGroup</code> method. Existence of a <span style="font-family: monospace;">LinkedModeModel </span>can be
-tested by one of the static methods.<br>
- </li>
- <li><code>LinkedModeUI</code>: The UI for linked mode (for one
-model, to be precise). Monitors key etc. activity, monitors exit
-conditions, creates a painter etc. <br>
-Properties:
- <ul>
- <li><b>cycling mode</b> (whether to jump to the first position
-after the last): either of <code>CYCLE_ALWAYS</code>, <code>CYCLE_NEVER</code>
-and <code>CYCLE_WHEN_NO_PARENT</code> (default).</li>
- <li><b>exit position</b>: where to jump upon leaving the linked
-mode (e.g. using Enter, or Tab from the last position when not
-cycling). Set <code>isTabStop</code> to <code>true</code> if tabbing
-should stop over when cycling.</li>
- <li><span style="font-weight: bold;">position listener</span>:
-extending classes may register a position listener which will get
-notified whenever
-the focus position changes. An example is <span style="font-family: monospace;">org.eclipse.ui.texteditor.link.EditorLinkedModeUI.EditorHistoryUpdater</span>
-which will store the edit location in the editor navigation history.<br>
- </li>
- </ul>
- </li>
-.
-</ul>
-<h4>Example</h4>
-<pre> IDocument doc1, doc2;<br> ITextViewer viewer1, viewer2;<br> <br> /* create groups - this step is independent of the linked mode */<br> LinkedPositionGroup group1= new LinkedPositionGroup();<br> group1.addPosition(new LinkedPosition(doc1, 3, 4));<br> group1.addPosition(new LinkedPosition(doc1, 7, 8));<br> <br> LinkedPositionGroup group2= new LinkedPositionGroup();<br> group2.addPosition(new LinkedPosition(doc1, 15, 25));<br> group2.addPosition(new LinkedPosition(doc2, 0, 10));<br> <br> /* set up linked mode */<br> LinkedModeModel model= new LinkedModeModel();<br> model.addGroup(group1);<br> model.addGroup(group2);<br> model.forceInstall();<br> <br> /* create UI */<br> LinkedModeUI ui= new LinkedModeUI(model, new ITextViewer[] { viewer1, viewer2 });<br> ui.enter();<span style="font-family: sans-serif;"><br><br></span></pre>
-</body></html> \ No newline at end of file
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/package.html b/org.eclipse.text/src/org/eclipse/jface/text/package.html
deleted file mode 100644
index 81dc7fb04..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/package.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
-<html><head>
- <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
- <meta content="IBM" name="Author">
- <meta content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]" name="GENERATOR"><title>text infrastructure</title></head>
-
-<body>
-<p>Provides a framework for creating and manipulating text documents.</p>
-<h3>Package Specification</h3>
-<p><tt>IDocument</tt> is the major text
- model abstraction. It provides content management, position management using
- position categories, document partition management, and change notification.
- In order to be notified about document changes, an object must implements <tt>IDocumentListener
- </tt>and must be registered with the document. <tt>Position</tt>
- updating in responds to a document change is performed by implementers of <tt>IDocumentPositionUpdater</tt>.
- Partition updating in responds to a document change is performed by implements
- of <tt>IDocumentPartitioner</tt>. In order
- to be notified about document partition changes, objects must implement <tt>IDocumentParititoningListener</tt>
- and must be registered with the document.</p>
-<p>The package contains default implementations for document position updaters
- and for documents. <tt>AbstractDocument</tt>
- uses <tt>ITextStorage</tt> for storing
- and managing its content and <tt>ILineTracker</tt>
- to maintain a line structure of its content. As defaults a gap text implementation
- of <tt>ITextStore</tt> is provided, together
- with a line tracker understanding the three standard line delimiters (&quot;\r&quot;,
- &quot;\n&quot;, &quot;\r\n&quot;) and a line tracker which can be freely configured
- to consider any given set of strings as valid line delimiters. </p>
-<p></p>
-</body></html> \ No newline at end of file
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/source/Annotation.java b/org.eclipse.text/src/org/eclipse/jface/text/source/Annotation.java
deleted file mode 100644
index 6cdd3ecf8..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/source/Annotation.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.source;
-
-
-/**
- * Annotation managed by an
- * {@link org.eclipse.jface.text.source.IAnnotationModel}.
- * <p>
- * Annotations are types, associated text, and can be marked as persistent and
- * deleted. Annotations which are not explicitly initialized with an annotation
- * type are of type <code>"org.eclipse.text.annotation.unknown"</code>.
- */
-public class Annotation {
-
- /**
- * Constant for unknown annotation types.<p>
- * Value: <code>"org.eclipse.text.annotation.unknown"</code>
- * @since 3.0
- */
- public final static String TYPE_UNKNOWN= "org.eclipse.text.annotation.unknown"; //$NON-NLS-1$
-
-
- /**
- * The type of this annotation.
- * @since 3.0
- */
- private String fType;
- /**
- * Indicates whether this annotation is persistent or not.
- * @since 3.0
- */
- private boolean fIsPersistent= false;
- /**
- * Indicates whether this annotation is marked as deleted or not.
- * @since 3.0
- */
- private boolean fMarkedAsDeleted= false;
- /**
- * The text associated with this annotation.
- * @since 3.0
- */
- private String fText;
-
-
- /**
- * Creates a new annotation that is not persistent and type less.
- */
- protected Annotation() {
- this(null, false, null);
- }
-
- /**
- * Creates a new annotation with the given properties.
- *
- * @param type the type of this annotation
- * @param isPersistent <code>true</code> if this annotation is
- * persistent, <code>false</code> otherwise
- * @param text the text associated with this annotation
- * @since 3.0
- */
- public Annotation(String type, boolean isPersistent, String text) {
- fType= type;
- fIsPersistent= isPersistent;
- fText= text;
- }
-
- /**
- * Creates a new annotation with the given persistence state.
- *
- * @param isPersistent <code>true</code> if persistent, <code>false</code> otherwise
- * @since 3.0
- */
- public Annotation(boolean isPersistent) {
- this(null, isPersistent, null);
- }
-
- /**
- * Returns whether this annotation is persistent.
- *
- * @return <code>true</code> if this annotation is persistent, <code>false</code>
- * otherwise
- * @since 3.0
- */
- public boolean isPersistent() {
- return fIsPersistent;
- }
-
- /**
- * Sets the type of this annotation.
- *
- * @param type the annotation type
- * @since 3.0
- */
- public void setType(String type) {
- fType= type;
- }
-
- /**
- * Returns the type of the annotation.
- *
- * @return the type of the annotation
- * @since 3.0
- */
- public String getType() {
- return fType == null? TYPE_UNKNOWN : fType;
- }
-
- /**
- * Marks this annotation deleted according to the value of the
- * <code>deleted</code> parameter.
- *
- * @param deleted <code>true</code> if annotation should be marked as deleted
- * @since 3.0
- */
- public void markDeleted(boolean deleted) {
- fMarkedAsDeleted= deleted;
- }
-
- /**
- * Returns whether this annotation is marked as deleted.
- *
- * @return <code>true</code> if annotation is marked as deleted, <code>false</code>
- * otherwise
- * @since 3.0
- */
- public boolean isMarkedDeleted() {
- return fMarkedAsDeleted;
- }
-
- /**
- * Sets the text associated with this annotation.
- *
- * @param text the text associated with this annotation
- * @since 3.0
- */
- public void setText(String text) {
- fText= text;
- }
-
- /**
- * Returns the text associated with this annotation.
- *
- * @return the text associated with this annotation or <code>null</code>
- * @since 3.0
- */
- public String getText() {
- return fText;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/source/AnnotationMap.java b/org.eclipse.text/src/org/eclipse/jface/text/source/AnnotationMap.java
deleted file mode 100644
index b99a1e51b..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/source/AnnotationMap.java
+++ /dev/null
@@ -1,187 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.source;
-
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-
-/**
- * Internal implementation of {@link org.eclipse.jface.text.source.IAnnotationMap}.
- *
- * @since 3.0
- */
-class AnnotationMap implements IAnnotationMap {
-
- /**
- * The lock object used to synchronize the operations explicitly defined by
- * <code>IAnnotationMap</code>
- */
- private Object fLockObject;
-
- /** The map holding the annotations */
- private Map fInternalMap;
-
- /**
- * Creates a new annotation map with the given capacity.
- *
- * @param capacity the capacity
- */
- public AnnotationMap(int capacity) {
- fInternalMap = new HashMap(capacity);
- }
-
- /*
- * @see org.eclipse.jface.text.source.ISynchronizable#setLockObject(java.lang.Object)
- */
- public void setLockObject(Object lockObject) {
- fLockObject = lockObject;
- }
-
- /*
- * @see org.eclipse.jface.text.source.ISynchronizable#getLockObject()
- */
- public Object getLockObject() {
- if (fLockObject == null) return this;
- return fLockObject;
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationMap#valuesIterator()
- */
- public Iterator valuesIterator() {
- synchronized (getLockObject()) {
- return new ArrayList(fInternalMap.values()).iterator();
- }
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationMap#keySetIterator()
- */
- public Iterator keySetIterator() {
- synchronized (getLockObject()) {
- return new ArrayList(fInternalMap.keySet()).iterator();
- }
- }
-
- /*
- * @see java.util.Map#containsKey(java.lang.Object)
- */
- public boolean containsKey(Object annotation) {
- synchronized (getLockObject()) {
- return fInternalMap.containsKey(annotation);
- }
- }
-
- /*
- * @see java.util.Map#put(java.lang.Object, java.lang.Object)
- */
- public Object put(Object annotation, Object position) {
- synchronized (getLockObject()) {
- return fInternalMap.put(annotation, position);
- }
- }
-
- /*
- * @see java.util.Map#get(java.lang.Object)
- */
- public Object get(Object annotation) {
- synchronized (getLockObject()) {
- return fInternalMap.get(annotation);
- }
- }
-
- /*
- * @see java.util.Map#clear()
- */
- public void clear() {
- synchronized (getLockObject()) {
- fInternalMap.clear();
- }
- }
-
- /*
- * @see java.util.Map#remove(java.lang.Object)
- */
- public Object remove(Object annotation) {
- synchronized (getLockObject()) {
- return fInternalMap.remove(annotation);
- }
- }
-
- /*
- * @see java.util.Map#size()
- */
- public int size() {
- synchronized (getLockObject()) {
- return fInternalMap.size();
- }
- }
-
- /*
- * @see java.util.Map#isEmpty()
- */
- public boolean isEmpty() {
- synchronized (getLockObject()) {
- return fInternalMap.isEmpty();
- }
- }
-
- /*
- * @see java.util.Map#containsValue(java.lang.Object)
- */
- public boolean containsValue(Object value) {
- synchronized(getLockObject()) {
- return fInternalMap.containsValue(value);
- }
- }
-
- /*
- * @see java.util.Map#putAll(java.util.Map)
- */
- public void putAll(Map map) {
- synchronized (getLockObject()) {
- fInternalMap.putAll(map);
- }
- }
-
- /*
- * @see IAnnotationMap#entrySet()
- */
- public Set entrySet() {
- synchronized (getLockObject()) {
- return fInternalMap.entrySet();
- }
- }
-
- /*
- * @see IAnnotationMap#keySet()
- */
- public Set keySet() {
- synchronized (getLockObject()) {
- return fInternalMap.keySet();
- }
- }
-
- /*
- * @see IAnnotationMap#values()
- */
- public Collection values() {
- synchronized (getLockObject()) {
- return fInternalMap.values();
- }
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/source/AnnotationModel.java b/org.eclipse.text/src/org/eclipse/jface/text/source/AnnotationModel.java
deleted file mode 100644
index 2e5958442..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/source/AnnotationModel.java
+++ /dev/null
@@ -1,767 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.source;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-import org.eclipse.jface.text.Assert;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.DocumentEvent;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IDocumentListener;
-import org.eclipse.jface.text.ISynchronizable;
-import org.eclipse.jface.text.Position;
-
-
-/**
- * Standard implementation of {@link IAnnotationModel}and its extension
- * interfaces. This class can directly be used by clients. Subclasses may adapt
- * this annotation model to other existing annotation mechanisms. This class
- * also implements {@link org.eclipse.jface.text.ISynchronizable}. All
- * modifications of the model's internal annotation map are synchronized using
- * the model's lock object.
- */
-public class AnnotationModel implements IAnnotationModel, IAnnotationModelExtension, ISynchronizable {
-
- /**
- * Internal annotation model listener for forwarding annotation model changes from the attached models to the
- * registered listeners of the outer most annotation model.
- *
- * @since 3.0
- */
- private class InternalModelListener implements IAnnotationModelListener, IAnnotationModelListenerExtension {
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationModelListener#modelChanged(org.eclipse.jface.text.source.IAnnotationModel)
- */
- public void modelChanged(IAnnotationModel model) {
- AnnotationModel.this.fireModelChanged(new AnnotationModelEvent(model, true));
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationModelListenerExtension#modelChanged(org.eclipse.jface.text.source.AnnotationModelEvent)
- */
- public void modelChanged(AnnotationModelEvent event) {
- AnnotationModel.this.fireModelChanged(event);
- }
- }
-
- /**
- * The list of managed annotations
- * @deprecated since 3.0 use <code>getAnnotationMap</code> instead
- */
- protected Map fAnnotations;
- /** The list of annotation model listeners */
- protected ArrayList fAnnotationModelListeners;
- /** The document connected with this model */
- protected IDocument fDocument;
- /** The number of open connections to the same document */
- private int fOpenConnections= 0;
- /** The document listener for tracking whether document positions might have been changed. */
- private IDocumentListener fDocumentListener;
- /** The flag indicating whether the document positions might have been changed. */
- private boolean fDocumentChanged= true;
- /**
- * The model's attachment.
- * @since 3.0
- */
- private Map fAttachments= new HashMap();
- /**
- * The annotation model listener on attached sub-models.
- * @since 3.0
- */
- private IAnnotationModelListener fModelListener= new InternalModelListener();
- /**
- * The current annotation model event.
- * @since 3.0
- */
- private AnnotationModelEvent fModelEvent;
- /**
- * The modification stamp.
- * @since 3.0
- */
- private Object fModificationStamp= new Object();
-
- /**
- * Creates a new annotation model. The annotation is empty, i.e. does not
- * manage any annotations and is not connected to any document.
- */
- public AnnotationModel() {
- fAnnotations= new AnnotationMap(10);
- fAnnotationModelListeners= new ArrayList(2);
-
- fDocumentListener= new IDocumentListener() {
-
- public void documentAboutToBeChanged(DocumentEvent event) {
- }
-
- public void documentChanged(DocumentEvent event) {
- fDocumentChanged= true;
- }
- };
- }
-
- /**
- * Returns the annotation map internally used by this annotation model.
- *
- * @return the annotation map internally used by this annotation model
- * @since 3.0
- */
- protected IAnnotationMap getAnnotationMap() {
- return (IAnnotationMap) fAnnotations;
- }
-
- /*
- * @see org.eclipse.jface.text.ISynchronizable#getLockObject()
- * @since 3.0
- */
- public Object getLockObject() {
- return getAnnotationMap().getLockObject();
- }
-
- /*
- * @see org.eclipse.jface.text.ISynchronizable#setLockObject(java.lang.Object)
- * @since 3.0
- */
- public void setLockObject(Object lockObject) {
- getAnnotationMap().setLockObject(lockObject);
- }
-
- /**
- * Returns the current annotation model event. This is the event that will be sent out
- * when calling <code>fireModelChanged</code>.
- *
- * @return the current annotation model event
- * @since 3.0
- */
- protected final AnnotationModelEvent getAnnotationModelEvent() {
- synchronized (getLockObject()) {
- if (fModelEvent == null) {
- fModelEvent= createAnnotationModelEvent();
- fModelEvent.markWorldChange(false);
- fModificationStamp= fModelEvent;
- }
- return fModelEvent;
- }
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationModel#addAnnotation(org.eclipse.jface.text.source.Annotation, org.eclipse.jface.text.Position)
- */
- public void addAnnotation(Annotation annotation, Position position) {
- try {
- addAnnotation(annotation, position, true);
- } catch (BadLocationException e) {
- // ignore invalid position
- }
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationModelExtension#replaceAnnotations(org.eclipse.jface.text.source.Annotation[], java.util.Map)
- * @since 3.0
- */
- public void replaceAnnotations(Annotation[] annotationsToRemove, Map annotationsToAdd) {
- try {
- replaceAnnotations(annotationsToRemove, annotationsToAdd, true);
- } catch (BadLocationException x) {
- }
- }
-
- /**
- * Replaces the given annotations in this model and if advised fires a
- * model change event.
- *
- * @param annotationsToRemove the annotations to be removed
- * @param annotationsToAdd the annotations to be added
- * @param fireModelChanged <code>true</code> if a model change event
- * should be fired, <code>false</code> otherwise
- * @throws BadLocationException in case an annotation should be added at an
- * invalid position
- * @since 3.0
- */
- protected void replaceAnnotations(Annotation[] annotationsToRemove, Map annotationsToAdd, boolean fireModelChanged) throws BadLocationException {
-
- if (annotationsToRemove != null) {
- for (int i= 0, length= annotationsToRemove.length; i < length; i++)
- removeAnnotation(annotationsToRemove[i], false);
- }
-
- if (annotationsToAdd != null) {
- Iterator iter= annotationsToAdd.entrySet().iterator();
- while (iter.hasNext()) {
- Map.Entry mapEntry= (Map.Entry) iter.next();
- Annotation annotation= (Annotation) mapEntry.getKey();
- Position position= (Position) mapEntry.getValue();
- addAnnotation(annotation, position, false);
- }
- }
-
- if (fireModelChanged)
- fireModelChanged();
- }
-
- /**
- * Adds the given annotation to this model. Associates the
- * annotation with the given position. If requested, all annotation
- * model listeners are informed about this model change. If the annotation
- * is already managed by this model nothing happens.
- *
- * @param annotation the annotation to add
- * @param position the associate position
- * @param fireModelChanged indicates whether to notify all model listeners
- * @throws BadLocationException if the position is not a valid document position
- */
- protected void addAnnotation(Annotation annotation, Position position, boolean fireModelChanged) throws BadLocationException {
- if (!fAnnotations.containsKey(annotation)) {
-
- addPosition(fDocument, position);
- fAnnotations.put(annotation, position);
- synchronized (getLockObject()) {
- getAnnotationModelEvent().annotationAdded(annotation);
- }
-
- if (fireModelChanged)
- fireModelChanged();
- }
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationModel#addAnnotationModelListener(org.eclipse.jface.text.source.IAnnotationModelListener)
- */
- public void addAnnotationModelListener(IAnnotationModelListener listener) {
- if (!fAnnotationModelListeners.contains(listener)) {
- fAnnotationModelListeners.add(listener);
- if (listener instanceof IAnnotationModelListenerExtension) {
- IAnnotationModelListenerExtension extension= (IAnnotationModelListenerExtension) listener;
- AnnotationModelEvent event= createAnnotationModelEvent();
- event.markSealed();
- extension.modelChanged(event);
- } else
- listener.modelChanged(this);
- }
- }
-
- /**
- * Adds the given position to the default position category of the
- * given document.
- *
- * @param document the document to which to add the position
- * @param position the position to add
- * @throws BadLocationException if the position is not a valid document position
- */
- protected void addPosition(IDocument document, Position position) throws BadLocationException {
- if (document != null)
- document.addPosition(position);
- }
-
- /**
- * Removes the given position from the default position category of the
- * given document.
- *
- * @param document the document to which to add the position
- * @param position the position to add
- *
- * @since 3.0
- */
- protected void removePosition(IDocument document, Position position) {
- if (document != null)
- document.removePosition(position);
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationModel#connect(org.eclipse.jface.text.IDocument)
- */
- public void connect(IDocument document) {
- Assert.isTrue(fDocument == null || fDocument == document);
-
- if (fDocument == null) {
- fDocument= document;
- Iterator e= getAnnotationMap().valuesIterator();
- while (e.hasNext())
- try {
- addPosition(fDocument, (Position) e.next());
- } catch (BadLocationException x) {
- // ignore invalid position
- }
- }
-
- ++ fOpenConnections;
- if (fOpenConnections == 1) {
- fDocument.addDocumentListener(fDocumentListener);
- connected();
- }
-
- for (Iterator it= fAttachments.keySet().iterator(); it.hasNext();) {
- IAnnotationModel model= (IAnnotationModel) fAttachments.get(it.next());
- model.connect(document);
- }
- }
-
- /**
- * Hook method. Is called as soon as this model becomes connected to a document.
- * Subclasses may re-implement.
- */
- protected void connected() {
- }
-
- /**
- * Hook method. Is called as soon as this model becomes disconnected from its document.
- * Subclasses may re-implement.
- */
- protected void disconnected() {
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationModel#disconnect(org.eclipse.jface.text.IDocument)
- */
- public void disconnect(IDocument document) {
-
- Assert.isTrue(fDocument == document);
-
- for (Iterator it= fAttachments.keySet().iterator(); it.hasNext();) {
- IAnnotationModel model= (IAnnotationModel) fAttachments.get(it.next());
- model.disconnect(document);
- }
-
- -- fOpenConnections;
- if (fOpenConnections == 0) {
-
- disconnected();
- fDocument.removeDocumentListener(fDocumentListener);
-
- if (fDocument != null) {
- Iterator e= getAnnotationMap().valuesIterator();
- while (e.hasNext()) {
- Position p= (Position) e.next();
- removePosition(fDocument, p);
- }
- fDocument= null;
- }
- }
- }
-
- /**
- * Informs all annotation model listeners that this model has been changed.
- */
- protected void fireModelChanged() {
- AnnotationModelEvent modelEvent= null;
-
- synchronized(getLockObject()) {
- if (fModelEvent != null) {
- modelEvent= fModelEvent;
- fModelEvent= null;
- }
- }
-
- if (modelEvent != null)
- fireModelChanged(modelEvent);
- }
-
- /**
- * Creates and returns a new annotation model event. Subclasses may override.
- *
- * @return a new and empty annotation model event
- * @since 3.0
- */
- protected AnnotationModelEvent createAnnotationModelEvent() {
- return new AnnotationModelEvent(this);
- }
-
- /**
- * Informs all annotation model listeners that this model has been changed
- * as described in the annotation model event. The event is sent out
- * to all listeners implementing <code>IAnnotationModelListenerExtension</code>.
- * All other listeners are notified by just calling <code>modelChanged(IAnnotationModel)</code>.
- *
- * @param event the event to be sent out to the listeners
- * @since 2.0
- */
- protected void fireModelChanged(AnnotationModelEvent event) {
-
- event.markSealed();
-
- if (event.isEmpty())
- return;
-
- ArrayList v= new ArrayList(fAnnotationModelListeners);
- Iterator e= v.iterator();
- while (e.hasNext()) {
- IAnnotationModelListener l= (IAnnotationModelListener) e.next();
- if (l instanceof IAnnotationModelListenerExtension)
- ((IAnnotationModelListenerExtension) l).modelChanged(event);
- else
- l.modelChanged(this);
- }
- }
-
- /**
- * Removes the given annotations from this model. If requested all
- * annotation model listeners will be informed about this change.
- * <code>modelInitiated</code> indicates whether the deletion has
- * been initiated by this model or by one of its clients.
- *
- * @param annotations the annotations to be removed
- * @param fireModelChanged indicates whether to notify all model listeners
- * @param modelInitiated indicates whether this changes has been initiated by this model
- */
- protected void removeAnnotations(List annotations, boolean fireModelChanged, boolean modelInitiated) {
- if (annotations.size() > 0) {
- Iterator e= annotations.iterator();
- while (e.hasNext())
- removeAnnotation((Annotation) e.next(), false);
-
- if (fireModelChanged)
- fireModelChanged();
- }
- }
-
- /**
- * Removes all annotations from the model whose associated positions have been
- * deleted. If requested inform all model listeners about the change.
- *
- * @param fireModelChanged indicates whether to notify all model listeners
- */
- protected void cleanup(boolean fireModelChanged) {
- cleanup(fireModelChanged, true);
- }
-
- /**
- * Removes all annotations from the model whose associated positions have been
- * deleted. If requested inform all model listeners about the change. If requested
- * a new thread is created for the notification of the model listeners.
- *
- * @param fireModelChanged indicates whether to notify all model listeners
- * @param forkNotification <code>true</code> iff notification should be done in a new thread
- * @since 3.0
- */
- private void cleanup(boolean fireModelChanged, boolean forkNotification) {
- if (fDocumentChanged) {
- fDocumentChanged= false;
-
- ArrayList deleted= new ArrayList();
- Iterator e= getAnnotationMap().keySetIterator();
- while (e.hasNext()) {
- Annotation a= (Annotation) e.next();
- Position p= (Position) fAnnotations.get(a);
- if (p == null || p.isDeleted())
- deleted.add(a);
- }
-
- if (fireModelChanged && forkNotification) {
- removeAnnotations(deleted, false, false);
- synchronized (getLockObject()) {
- if (fModelEvent != null)
- new Thread() {
- public void run() {
- fireModelChanged();
- }
- }.start();
- }
- } else
- removeAnnotations(deleted, fireModelChanged, false);
- }
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationModel#getAnnotationIterator()
- */
- public Iterator getAnnotationIterator() {
- return getAnnotationIterator(true, true);
- }
-
- /**
- * Returns all annotations managed by this model. <code>cleanup</code>
- * indicates whether all annotations whose associated positions are
- * deleted should previously be removed from the model. <code>recurse</code> indicates
- * whether annotations of attached sub-models should also be returned.
- *
- * @param cleanup indicates whether annotations with deleted associated positions are removed
- * @param recurse whether to return annotations managed by sub-models.
- * @return all annotations managed by this model
- * @since 3.0
- */
- private Iterator getAnnotationIterator(boolean cleanup, boolean recurse) {
-
- if (!recurse)
- return getAnnotationIterator(cleanup);
-
- List iterators= new ArrayList(fAttachments.size() + 1);
- iterators.add(getAnnotationIterator(cleanup));
- for (Iterator it= fAttachments.keySet().iterator(); it.hasNext();) {
- iterators.add(((IAnnotationModel) fAttachments.get(it.next())).getAnnotationIterator());
- }
-
- final Iterator iter= iterators.iterator();
-
- // Meta iterator...
- return new Iterator() {
-
- /** The current iterator. */
- private Iterator fCurrent= (Iterator) iter.next(); // there is at least one.
- /** The current element. */
- private Object fCurrentElement;
-
- public void remove() {
- throw new UnsupportedOperationException();
- }
-
- public boolean hasNext() {
- if (fCurrentElement != null)
- return true;
-
- if (fCurrent.hasNext()) {
- fCurrentElement= fCurrent.next();
- return true;
- } else if (iter.hasNext()) {
- fCurrent= (Iterator) iter.next();
- return hasNext();
- } else
- return false;
- }
-
- public Object next() {
- if (!hasNext())
- throw new NoSuchElementException();
-
- Object element= fCurrentElement;
- fCurrentElement= null;
- return element;
- }
-
- };
- }
-
- /**
- * Returns all annotations managed by this model. <code>cleanup</code>
- * indicates whether all annotations whose associated positions are
- * deleted should previously be removed from the model.
- *
- * @param cleanup indicates whether annotations with deleted associated positions are removed
- * @return all annotations managed by this model
- */
- protected Iterator getAnnotationIterator(boolean cleanup) {
- if (cleanup)
- cleanup(true);
-
- return getAnnotationMap().keySetIterator();
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationModel#getPosition(org.eclipse.jface.text.source.Annotation)
- */
- public Position getPosition(Annotation annotation) {
- Position position= (Position) fAnnotations.get(annotation);
- if (position != null)
- return position;
-
- Iterator it= fAttachments.values().iterator();
- while (position == null && it.hasNext())
- position= ((IAnnotationModel) it.next()).getPosition(annotation);
- return position;
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationModelExtension#removeAllAnnotations()
- * @since 3.0
- */
- public void removeAllAnnotations() {
- removeAllAnnotations(true);
- }
-
- /**
- * Removes all annotations from the annotation model. If requested
- * inform all model change listeners about this change.
- *
- * @param fireModelChanged indicates whether to notify all model listeners
- */
- protected void removeAllAnnotations(boolean fireModelChanged) {
-
- if (fDocument != null) {
- Iterator e= getAnnotationMap().keySetIterator();
- while (e.hasNext()) {
- Annotation a= (Annotation) e.next();
- Position p= (Position) fAnnotations.get(a);
- removePosition(fDocument, p);
-// p.delete();
- synchronized (getLockObject()) {
- getAnnotationModelEvent().annotationRemoved(a, p);
- }
- }
- }
-
- fAnnotations.clear();
-
- if (fireModelChanged)
- fireModelChanged();
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationModel#removeAnnotation(org.eclipse.jface.text.source.Annotation)
- */
- public void removeAnnotation(Annotation annotation) {
- removeAnnotation(annotation, true);
- }
-
- /**
- * Removes the given annotation from the annotation model.
- * If requested inform all model change listeners about this change.
- *
- * @param annotation the annotation to be removed
- * @param fireModelChanged indicates whether to notify all model listeners
- */
- protected void removeAnnotation(Annotation annotation, boolean fireModelChanged) {
- if (fAnnotations.containsKey(annotation)) {
-
- Position p= null;
- if (fDocument != null) {
- p= (Position) fAnnotations.get(annotation);
- removePosition(fDocument, p);
-// p.delete();
- }
-
- fAnnotations.remove(annotation);
- synchronized (getLockObject()) {
- getAnnotationModelEvent().annotationRemoved(annotation, p);
- }
-
- if (fireModelChanged)
- fireModelChanged();
- }
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationModelExtension#modifyAnnotationPosition(org.eclipse.jface.text.source.Annotation, org.eclipse.jface.text.Position)
- * @since 3.0
- */
- public void modifyAnnotationPosition(Annotation annotation, Position position) {
- modifyAnnotationPosition(annotation, position, true);
- }
-
- /**
- * Modifies the associated position of the given annotation to the given
- * position. If the annotation is not yet managed by this annotation model,
- * the annotation is added. When the position is <code>null</code>, the
- * annotation is removed from the model.
- * <p>
- * If requested, all annotation model change listeners will be informed
- * about the change.
- *
- * @param annotation the annotation whose associated position should be
- * modified
- * @param position the position to whose values the associated position
- * should be changed
- * @param fireModelChanged indicates whether to notify all model listeners
- * @since 3.0
- */
- protected void modifyAnnotationPosition(Annotation annotation, Position position, boolean fireModelChanged) {
- if (position == null) {
- removeAnnotation(annotation, fireModelChanged);
- } else {
- Position p= (Position) fAnnotations.get(annotation);
- if (p != null) {
-
- if (position.getOffset() != p.getOffset() || position.getLength() != p.getLength()) {
- p.setOffset(position.getOffset());
- p.setLength(position.getLength());
- }
- synchronized (getLockObject()) {
- getAnnotationModelEvent().annotationChanged(annotation);
- }
- if (fireModelChanged)
- fireModelChanged();
-
- } else {
- try {
- addAnnotation(annotation, position, fireModelChanged);
- } catch (BadLocationException x) {
- // ignore invalid position
- }
- }
- }
- }
-
- /**
- * Modifies the given annotation if the annotation is managed by this
- * annotation model.
- * <p>
- * If requested, all annotation model change listeners will be informed
- * about the change.
- *
- * @param annotation the annotation to be modified
- * @param fireModelChanged indicates whether to notify all model listeners
- * @since 3.0
- */
- protected void modifyAnnotation(Annotation annotation, boolean fireModelChanged) {
- if (fAnnotations.containsKey(annotation)) {
- synchronized (getLockObject()) {
- getAnnotationModelEvent().annotationChanged(annotation);
- }
- if (fireModelChanged)
- fireModelChanged();
- }
- }
-
- /*
- * @see IAnnotationModel#removeAnnotationModelListener(IAnnotationModelListener)
- */
- public void removeAnnotationModelListener(IAnnotationModelListener listener) {
- fAnnotationModelListeners.remove(listener);
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationModelExtension#attach(java.lang.Object, java.lang.Object)
- * @since 3.0
- */
- public void addAnnotationModel(Object key, IAnnotationModel attachment) {
- Assert.isNotNull(attachment);
- if (!fAttachments.containsValue(attachment)) {
- fAttachments.put(key, attachment);
- for (int i= 0; i < fOpenConnections; i++)
- attachment.connect(fDocument);
- attachment.addAnnotationModelListener(fModelListener);
- }
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationModelExtension#get(java.lang.Object)
- * @since 3.0
- */
- public IAnnotationModel getAnnotationModel(Object key) {
- return (IAnnotationModel) fAttachments.get(key);
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationModelExtension#detach(java.lang.Object)
- * @since 3.0
- */
- public IAnnotationModel removeAnnotationModel(Object key) {
- IAnnotationModel ret= (IAnnotationModel) fAttachments.remove(key);
- if (ret != null) {
- for (int i= 0; i < fOpenConnections; i++)
- ret.disconnect(fDocument);
- ret.removeAnnotationModelListener(fModelListener);
- }
- return ret;
- }
-
- /*
- * @see org.eclipse.jface.text.source.IAnnotationModelExtension#getModificationStamp()
- * @since 3.0
- */
- public Object getModificationStamp() {
- return fModificationStamp;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/source/AnnotationModelEvent.java b/org.eclipse.text/src/org/eclipse/jface/text/source/AnnotationModelEvent.java
deleted file mode 100644
index f188b0921..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/source/AnnotationModelEvent.java
+++ /dev/null
@@ -1,259 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.source;
-
-
-import org.eclipse.jface.text.Position;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-
-/**
- * Specification of changes applied to annotation models. The event carries the
- * changed annotation model as well as added, removed, and modified annotations.
- * <p>
- * An event can be sealed. Afterwards it can not be modified. Thus, the normal
- * process is that an empty event is created, filled with the changed
- * information, and before it is sent to the listeners, the event is sealed.
- *
- * @see org.eclipse.jface.text.source.IAnnotationModel
- * @see org.eclipse.jface.text.source.IAnnotationModelListenerExtension
- * @since 2.0
- */
-public class AnnotationModelEvent {
-
- /** The model this event refers to. */
- private IAnnotationModel fAnnotationModel;
- /**
- * The added annotations.
- * @since 3.0
- */
- private Set fAddedAnnotations= new HashSet();
- /**
- * The removed annotations.
- * @since 3.0
- */
- private Map fRemovedAnnotations= new HashMap();
- /**
- * The changed annotations.
- * @since 3.0
- */
- private Set fChangedAnnotations= new HashSet();
- /**
- * Indicates that this event does not contain detailed information.
- * @since 3.0
- */
- private boolean fIsWorldChange;
- /**
- * The modification stamp.
- * @since 3.0
- */
- private Object fModificationStamp;
-
- /**
- * Creates a new annotation model event for the given model.
- *
- * @param model the model
- */
- public AnnotationModelEvent(IAnnotationModel model) {
- this(model, true);
- }
-
- /**
- * Creates a new annotation model event for the given model.
- *
- * @param model the model
- * @param isWorldChange <code>true</code> if world change
- * @since 3.0
- */
- public AnnotationModelEvent(IAnnotationModel model, boolean isWorldChange) {
- fAnnotationModel= model;
- fIsWorldChange= isWorldChange;
- }
-
- /**
- * Returns the model this event refers to.
- *
- * @return the model this events belongs to
- */
- public IAnnotationModel getAnnotationModel() {
- return fAnnotationModel;
- }
-
- /**
- * Adds the given annotation to the set of annotations that are reported as
- * being added from the model. If this event is considered a world change,
- * it is no longer so after this method has successfully finished.
- *
- * @param annotation the added annotation
- * @since 3.0
- */
- public void annotationAdded(Annotation annotation) {
- fAddedAnnotations.add(annotation);
- fIsWorldChange= false;
- }
-
- /**
- * Returns the added annotations.
- *
- * @return the added annotations
- * @since 3.0
- */
- public Annotation[] getAddedAnnotations() {
- int size= fAddedAnnotations.size();
- Annotation[] added= new Annotation[size];
- fAddedAnnotations.toArray(added);
- return added;
- }
-
- /**
- * Adds the given annotation to the set of annotations that are reported as
- * being removed from the model. If this event is considered a world
- * change, it is no longer so after this method has successfully finished.
- *
- * @param annotation the removed annotation
- * @since 3.0
- */
- public void annotationRemoved(Annotation annotation) {
- annotationRemoved(annotation, null);
- }
-
- /**
- * Adds the given annotation to the set of annotations that are reported as
- * being removed from the model. If this event is considered a world
- * change, it is no longer so after this method has successfully finished.
- *
- * @param annotation the removed annotation
- * @param position the position of the removed annotation
- * @since 3.0
- */
- public void annotationRemoved(Annotation annotation, Position position) {
- fRemovedAnnotations.put(annotation, position);
- fIsWorldChange= false;
- }
-
- /**
- * Returns the removed annotations.
- *
- * @return the removed annotations
- * @since 3.0
- */
- public Annotation[] getRemovedAnnotations() {
- int size= fRemovedAnnotations.size();
- Annotation[] removed= new Annotation[size];
- fRemovedAnnotations.keySet().toArray(removed);
- return removed;
- }
-
- /**
- * Returns the position of the removed annotation at that point in time
- * when the annotation has been removed.
- *
- * @param annotation the removed annotation
- * @return the position of the removed annotation or <code>null</code>
- * @since 3.0
- */
- public Position getPositionOfRemovedAnnotation(Annotation annotation) {
- return (Position) fRemovedAnnotations.get(annotation);
- }
-
- /**
- * Adds the given annotation to the set of annotations that are reported as
- * being changed from the model. If this event is considered a world
- * change, it is no longer so after this method has successfully finished.
- *
- * @param annotation the changed annotation
- * @since 3.0
- */
- public void annotationChanged(Annotation annotation) {
- fChangedAnnotations.add(annotation);
- fIsWorldChange= false;
- }
-
- /**
- * Returns the changed annotations.
- *
- * @return the changed annotations
- * @since 3.0
- */
- public Annotation[] getChangedAnnotations() {
- int size= fChangedAnnotations.size();
- Annotation[] changed= new Annotation[size];
- fChangedAnnotations.toArray(changed);
- return changed;
- }
-
- /**
- * Returns whether this annotation model event is empty or not. If this
- * event represents a world change, this method returns <code>false</code>
- * although the event does not carry any added, removed, or changed
- * annotations.
- *
- * @return <code>true</code> if this event is empty
- * @since 3.0
- */
- public boolean isEmpty() {
- return !fIsWorldChange && fAddedAnnotations.isEmpty() && fRemovedAnnotations.isEmpty() && fChangedAnnotations.isEmpty();
- }
-
- /**
- * Returns whether this annotation model events contains detailed
- * information about the modifications applied to the event annotation
- * model or whether it represents a world change. I.e. everything in the
- * model might have changed.
- *
- * @return <code>true</code> if world change, <code>false</code> otherwise
- * @since 3.0
- */
- public boolean isWorldChange() {
- return fIsWorldChange;
- }
-
- /**
- * Marks this event as world change according to the given flag.
- *
- * @param isWorldChange <code>true</code> if this event is a world change, <code>false</code> otherwise
- * @since 3.0
- */
- void markWorldChange(boolean isWorldChange) {
- fIsWorldChange= isWorldChange;
- }
-
- /**
- * Returns whether this annotation model event is still valid.
- *
- * @return <code>true</code> if this event is still valid, <code>false</code> otherwise
- * @since 3.0
- */
- public boolean isValid() {
- if (fModificationStamp != null && fAnnotationModel instanceof IAnnotationModelExtension) {
- IAnnotationModelExtension extension= (IAnnotationModelExtension) fAnnotationModel;
- return fModificationStamp == extension.getModificationStamp();
- }
- return true;
- }
-
- /**
- * Seals this event. Any direct modification to the annotation model after the event has been sealed
- * invalidates this event.
- *
- * @since 3.0
- */
- public void markSealed() {
- if (fAnnotationModel instanceof IAnnotationModelExtension) {
- IAnnotationModelExtension extension= (IAnnotationModelExtension) fAnnotationModel;
- fModificationStamp= extension.getModificationStamp();
- }
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationMap.java b/org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationMap.java
deleted file mode 100644
index 3aa9ba6b3..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationMap.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.source;
-
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.eclipse.jface.text.ISynchronizable;
-
-
-/**
- * An annotation map is a map specialized for the requirements of an annotation
- * model. The annotation map supports a customizable lock object which is used
- * to synchronize concurrent operations on the map (see
- * {@link org.eclipse.jface.text.ISynchronizable}. The map supports two
- * iterator methods, one for the values and one for the keys of the map. The
- * returned iterators are robust, i.e. they work on a copy of the values and
- * keys set that is made at the point in time the iterator methods are called.
- * <p>
- * The returned collections of the methods <code>values</code>,
- * <code>entrySet</code>, and <code>keySet</code> are not synchronized on
- * the annotation map's lock object.
- * <p>
- *
- * @see org.eclipse.jface.text.source.IAnnotationModel
- * @since 3.0
- */
-public interface IAnnotationMap extends Map, ISynchronizable {
-
- /**
- * Returns an iterator for a copy of this annotation map's values.
- *
- * @return an iterator for a copy of this map's values
- */
- Iterator valuesIterator();
-
- /**
- * Returns an iterator for a copy of this map's key set.
- *
- * @return an iterator for a copy of this map's key set
- */
- Iterator keySetIterator();
-
- /**
- * {@inheritDoc}
- *
- * The returned set is not synchronized on this annotation map's lock object.
- */
- Set entrySet();
-
- /**
- * {@inheritDoc}
- *
- * The returned set is not synchronized on this annotation map's lock object.
- */
- Set keySet();
-
- /**
- * {@inheritDoc}
- *
- * The returned collection is not synchronized on this annotation map's lock object.
- */
- Collection values();
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModel.java b/org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModel.java
deleted file mode 100644
index 385f463ed..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModel.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.source;
-
-
-import java.util.Iterator;
-
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.Position;
-
-
-/**
- * This interface defines the model for managing annotations attached to a document.
- * The model maintains a set of annotations for a given document and notifies registered annotation
- * model listeners about annotation model changes. It also provides methods
- * for querying the current position of an annotation managed
- * by this model.
- * <p>
- * In order to provide backward compatibility for clients of <code>IAnnotationModel</code>, extension
- * interfaces are used to provide a means of evolution. The following extension interfaces
- * exist:
- * <ul>
- * <li> {@link org.eclipse.jface.text.source.IAnnotationModelExtension} since version 3.0 introducing the concept
- * of model piggybacking annotation models, modification time stamps, and enhanced manipulation methods.
- * </li>
- * </ul>
- * </p>
- *
- * Clients may implement this interface or use the default implementation provided
- * by <code>AnnotationModel</code>.
- *
- * @see org.eclipse.jface.text.source.IAnnotationModelExtension
- * @see org.eclipse.jface.text.source.Annotation
- * @see org.eclipse.jface.text.source.IAnnotationModelListener
- */
-public interface IAnnotationModel {
-
- /**
- * Registers the annotation model listener with this annotation model.
- * After registration listener is informed about each change of this model.
- * If the listener is already registered nothing happens.
- *
- * @param listener the listener to be registered, may not be <code>null</code>
- */
- void addAnnotationModelListener(IAnnotationModelListener listener);
-
- /**
- * Removes the listener from the model's list of annotation model listeners.
- * If the listener is not registered with the model nothing happens.
- *
- * @param listener the listener to be removed, may not be <code>null</code>
- */
- void removeAnnotationModelListener(IAnnotationModelListener listener);
-
- /**
- * Connects the annotation model to a document. The annotations managed
- * by this model must subsequently update according to the changes applied
- * to the document. Once an annotation model is connected to a document,
- * all further <code>connect</code> calls must mention the document the
- * model is already connected to. An annotation model primarily uses
- * <code>connect</code> and <code>disconnect</code> for reference counting
- * the document. Reference counting frees the clients from keeping tracker
- * whether a model has already been connected to a document.
- *
- * @param document the document the model gets connected to,
- * may not be <code>null</code>
- *
- * @see #disconnect(IDocument)
- */
- void connect(IDocument document);
-
- /**
- * Disconnects this model from a document. After that, document changes no longer matter.
- * An annotation model may only be disconnected from a document to which it has been
- * connected before. If the model reference counts the connections to a document,
- * the connection to the document may only be terminated if the reference count does
- * down to 0.
- *
- * @param document the document the model gets disconnected from,
- * may not be <code>null</code>
- *
- * @see #connect(IDocument) for further specification details
- */
- void disconnect(IDocument document);
-
- /**
- * Adds a annotation to this annotation model. The annotation is associated with
- * with the given position which describes the range covered by the annotation.
- * All registered annotation model listeners are informed about the change.
- * If the model is connected to a document, the position is automatically
- * updated on document changes. If the annotation is already managed by
- * this annotation model or is not a valid position in the connected nothing happens.
- *
- * @param annotation the annotation to add, may not be <code>null</code>
- * @param position the position describing the range covered by this annotation,
- * may not be <code>null</code>
- */
- void addAnnotation(Annotation annotation, Position position);
-
- /**
- * Removes the given annotation from the model. I.e. the annotation is no
- * longer managed by this model. The position associated with the annotation
- * is no longer updated on document changes. If the annotation is not
- * managed by this model, nothing happens.
- *
- * @param annotation the annotation to be removed from this model,
- * may not be <code>null</code>
- */
- void removeAnnotation(Annotation annotation);
-
- /**
- * Returns all annotations managed by this model.
- *
- * @return all annotations managed by this model
- */
- Iterator getAnnotationIterator();
-
- /**
- * Returns the position associated with the given annotation.
- *
- * @param annotation the annotation whose position should be returned
- * @return the position of the given annotation or <code>null</code> if no
- * associated annotation exists
- */
- Position getPosition(Annotation annotation);
-}
-
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModelExtension.java b/org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModelExtension.java
deleted file mode 100644
index dd33fd4f4..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModelExtension.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.source;
-
-
-import java.util.Map;
-
-import org.eclipse.jface.text.Position;
-
-
-/**
- * Extends {@link org.eclipse.jface.text.source.IAnnotationModel}with the
- * ability piggyback other annotation models. It also introduces the concept of
- * modification time stamps and adds methods for richer manipulation methods.
- *
- * @since 3.0
- */
-public interface IAnnotationModelExtension {
-
- /**
- * Attaches <code>attachment</code> to the receiver. Connects
- * <code>attachment</code> to the currently connected document. If
- * <code>attachment</code> is already attached (even) under a different
- * key), it is not attached again.
- *
- * @param key the key through which the attachment is identified.
- * @param attachment the attached <code>IAnnotationModel</code>
- */
- void addAnnotationModel(Object key, IAnnotationModel attachment);
-
- /**
- * Returns the attached <code>IAnnotationModel</code> for <code>key</code>,
- * or <code>null</code> if none is attached for <code>key</code>.
- *
- * @param key the key through which the attachment is identified.
- * @return an <code>IAnnotationModel</code> attached under
- * <code>key</code>, or <code>null</code>
- */
- IAnnotationModel getAnnotationModel(Object key);
-
- /**
- * Removes and returns the attached <code>IAnnotationModel</code> for
- * <code>key</code>.
- *
- * @param key the key through which the attachment is identified.
- * @return an <code>IAnnotationModel</code> attached under
- * <code>key</code>, or <code>null</code>
- */
- IAnnotationModel removeAnnotationModel(Object key);
-
- /**
- * Adds and removes annotations to/from this annotation model in a single
- * step. The annotations to remove are given in an array. The annotations to
- * add are provided in a map associating the annotations with the positions
- * at which they should be added. All registered annotation model listeners
- * are informed about the change. If the model is connected to a document,
- * the positions are automatically updated on document changes. Annotations
- * that are already managed by this annotation model or are not associated
- * with a valid position in the connected document have no effect.
- *
- * @param annotationsToRemove the annotations to be removed, may be
- * <code>null</code>
- * @param annotationsToAdd the annotations which will be added, may be
- * <code>null</code> each map entry has an
- * <code>Annotation</code> as key and a <code>Position</code>
- * as value
- * @throws ClassCastException if one of the map key or values has a wrong
- * type
- */
- void replaceAnnotations(Annotation[] annotationsToRemove, Map annotationsToAdd) throws ClassCastException;
-
- /**
- * Modifies the position associated with the given annotation to equal the
- * given position. If the annotation is not yet managed by this annotation
- * model, the annotation is added. If the given position is
- * <code>null</code> the annotation is removed from the model. All
- * annotation model change listeners will be informed about the change.
- *
- * @param annotation the annotation whose associated position should be
- * modified
- * @param position the position to whose values the associated position
- * should be changed
- */
- void modifyAnnotationPosition(Annotation annotation, Position position);
-
- /**
- * Removes all annotations from this annotation model.
- */
- void removeAllAnnotations();
-
- /**
- * Returns the modification stamp of this annotation model.
- *
- * @return the modification stamp of this annotation model
- */
- Object getModificationStamp();
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModelListener.java b/org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModelListener.java
deleted file mode 100644
index 9cadfe039..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModelListener.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.source;
-
-
-/**
- * Interface for objects interested in getting informed about annotation model
- * changes. Changes are the addition or removal of annotations managed by the
- * model. Clients may implement this interface.
- *
- * In order to provided backward compatibility for clients of
- * <code>IAnnotationModelListener</code>, extension interfaces are used to
- * provide a means of evolution. The following extension interfaces exist:
- * <ul>
- * <li>{@link org.eclipse.jface.text.source.IAnnotationModelListenerExtension}
- * since version 2.0 replacing the change notification mechanisms.</li>
- * </ul>
- *
- * @see org.eclipse.jface.text.source.IAnnotationModel
- */
-public interface IAnnotationModelListener {
-
- /**
- * Called if a model change occurred on the given model.<p>
- * Replaced by {@link IAnnotationModelListenerExtension#modelChanged(AnnotationModelEvent)}.
- *
- * @param model the changed annotation model
- */
- void modelChanged(IAnnotationModel model);
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModelListenerExtension.java b/org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModelListenerExtension.java
deleted file mode 100644
index ed4802503..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/source/IAnnotationModelListenerExtension.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.source;
-
-
-/**
- * Extension interface for {@link IAnnotationModelListener}. Introduces a
- * notification mechanism that notifies the user by means of <code>AnnotationModelEvent</code>s.
- * Thus, more detailed information can be sent to the listener. This mechanism replaces the original notification
- * mechanism of <code>IAnnotationModelListener</code>.
- *
- * @since 2.0
- */
-public interface IAnnotationModelListenerExtension {
-
- /**
- * Called if a model change occurred on the given model.
- *
- * @param event the event to be sent out
- */
- void modelChanged(AnnotationModelEvent event);
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/source/package.html b/org.eclipse.text/src/org/eclipse/jface/text/source/package.html
deleted file mode 100644
index 3d0a9718a..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/source/package.html
+++ /dev/null
@@ -1,16 +0,0 @@
-<!DOCTYPE html PUBLIC "-//w3c//dtd html 4.0 transitional//en">
-<html><head>
- <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type">
- <meta content="IBM" name="Author">
- <meta content="Mozilla/4.75 [en] (Windows NT 5.0; U) [Netscape]" name="GENERATOR"><title>annotation models</title></head>
-
-<body>
-<p>Provides a support for managing annotations attached to a document.</p>
-<h3>Package Specification</h3>
-<p><tt>IAnnotationModels</tt> manage <tt>Annotations</tt>.
- When an annotation model is connected to an <tt>IDocument</tt>,
- any change to the document is reflected in the position of the managed annotations.
- Implementers of <tt>IAnnotationModelListener</tt>
- registered with an <tt>IAnnotationModel</tt>
- object get informed about changes of the model in respect to annotations.</p>
-</body></html> \ No newline at end of file
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/templates/DocumentTemplateContext.java b/org.eclipse.text/src/org/eclipse/jface/text/templates/DocumentTemplateContext.java
deleted file mode 100644
index 54c127306..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/templates/DocumentTemplateContext.java
+++ /dev/null
@@ -1,154 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.templates;
-
-import org.eclipse.jface.text.Assert;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.IDocument;
-
-/**
- * A typical text based document template context.
- * <p>
- * Clients may instantiate and extend this class.
- * </p>
- *
- * @since 3.0
- */
-public class DocumentTemplateContext extends TemplateContext {
-
- /** The text of the document. */
- private final IDocument fDocument;
- /** The completion offset. */
- private int fCompletionOffset;
- /** The completion length. */
- private int fCompletionLength;
-
- /**
- * Creates a document template context.
- *
- * @param type the context type
- * @param document the document this context applies to
- * @param completionOffset the completion offset (for usage in content
- * assist)
- * @param completionLength the completion length
- */
- public DocumentTemplateContext(TemplateContextType type, IDocument document, int completionOffset, int completionLength) {
- super(type);
-
- Assert.isNotNull(document);
- Assert.isTrue(completionOffset >= 0 && completionOffset <= document.getLength());
- Assert.isTrue(completionLength >= 0);
-
- fDocument= document;
- fCompletionOffset= completionOffset;
- fCompletionLength= completionLength;
- }
-
- /**
- * Returns the document.
- *
- * @return the document
- */
- public IDocument getDocument() {
- return fDocument;
- }
-
- /**
- * Returns the completion offset within the string of the context.
- *
- * @return the completion offset within the string of the context
- */
- public int getCompletionOffset() {
- return fCompletionOffset;
- }
-
- /**
- * Sets the completion offset.
- *
- * @param newOffset the new completion offset
- */
- protected void setCompletionOffset(int newOffset) {
- fCompletionOffset= newOffset;
- }
-
- /**
- * Returns the completion length within the string of the context.
- *
- * @return the completion length within the string of the context
- */
- public int getCompletionLength() {
- return fCompletionLength;
- }
-
- /**
- * Sets the completion length.
- *
- * @param newLength the new completion length
- */
- protected void setCompletionLength(int newLength) {
- fCompletionLength= newLength;
- }
-
- /**
- * Returns the keyword which triggered template insertion.
- *
- * @return the keyword which triggered template insertion
- */
- public String getKey() {
- int offset= getStart();
- int length= getEnd() - offset;
- try {
- return fDocument.get(offset, length);
- } catch (BadLocationException e) {
- return ""; //$NON-NLS-1$
- }
- }
-
- /**
- * Returns the beginning offset of the keyword.
- *
- * @return the beginning offset of the keyword
- */
- public int getStart() {
- return fCompletionOffset;
- }
-
- /**
- * Returns the end offset of the keyword.
- *
- * @return the end offset of the keyword
- */
- public int getEnd() {
- return fCompletionOffset + fCompletionLength;
- }
-
- /*
- * @see org.eclipse.jface.text.templates.TemplateContext#canEvaluate(org.eclipse.jface.text.templates.Template)
- */
- public boolean canEvaluate(Template template) {
- return true;
- }
-
- /*
- * @see org.eclipse.jface.text.templates.TemplateContext#evaluate(org.eclipse.jface.text.templates.Template)
- */
- public TemplateBuffer evaluate(Template template) throws BadLocationException, TemplateException {
- if (!canEvaluate(template))
- return null;
-
- TemplateTranslator translator= new TemplateTranslator();
- TemplateBuffer buffer= translator.translate(template);
-
- getContextType().resolve(buffer, this);
-
- return buffer;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/templates/GlobalTemplateVariables.java b/org.eclipse.text/src/org/eclipse/jface/text/templates/GlobalTemplateVariables.java
deleted file mode 100644
index b35a02aef..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/templates/GlobalTemplateVariables.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Sebastian Davids: sdavids@gmx.de - see bug 25376
- *******************************************************************************/
-package org.eclipse.jface.text.templates;
-
-import java.text.DateFormat;
-import java.util.Calendar;
-
-
-/**
- * Global variables which are available in any context.
- * <p>
- * Clients may instantiate the classes contained within this class.
- * </p>
- *
- * @since 3.0
- */
-public class GlobalTemplateVariables {
-
- /** The type of the selection variables. */
- public static final String SELECTION= "selection"; //$NON-NLS-1$
-
- /**
- * The cursor variable determines the cursor placement after template edition.
- */
- public static class Cursor extends SimpleTemplateVariableResolver {
-
- /** Name of the cursor variable, value= {@value} */
- public static final String NAME= "cursor"; //$NON-NLS-1$
-
- /**
- * Creates a new cursor variable
- */
- public Cursor() {
- super(NAME, TextTemplateMessages.getString("GlobalVariables.variable.description.cursor")); //$NON-NLS-1$
- setEvaluationString(""); //$NON-NLS-1$
- }
- }
-
- /**
- * The word selection variable determines templates that work on a full
- * lines selection.
- */
- public static class WordSelection extends SimpleTemplateVariableResolver {
-
- /** Name of the word selection variable, value= {@value} */
- public static final String NAME= "word_selection"; //$NON-NLS-1$
-
- /**
- * Creates a new word selection variable
- */
- public WordSelection() {
- super(NAME, TextTemplateMessages.getString("GlobalVariables.variable.description.selectedWord")); //$NON-NLS-1$
- }
- protected String resolve(TemplateContext context) {
- String selection= context.getVariable(SELECTION); //$NON-NLS-1$
- if (selection == null)
- return ""; //$NON-NLS-1$
- else
- return selection;
- }
- }
-
- /**
- * The line selection variable determines templates that work on selected
- * lines.
- */
- public static class LineSelection extends SimpleTemplateVariableResolver {
-
- /** Name of the line selection variable, value= {@value} */
- public static final String NAME= "line_selection"; //$NON-NLS-1$
-
- /**
- * Creates a new line selection variable
- */
- public LineSelection() {
- super(NAME, TextTemplateMessages.getString("GlobalVariables.variable.description.selectedLines")); //$NON-NLS-1$
- }
- protected String resolve(TemplateContext context) {
- String selection= context.getVariable(SELECTION); //$NON-NLS-1$
- if (selection == null)
- return ""; //$NON-NLS-1$
- else
- return selection;
- }
- }
-
- /**
- * The dollar variable inserts an escaped dollar symbol.
- */
- public static class Dollar extends SimpleTemplateVariableResolver {
- /**
- * Creates a new dollar variable
- */
- public Dollar() {
- super("dollar", TextTemplateMessages.getString("GlobalVariables.variable.description.dollar")); //$NON-NLS-1$ //$NON-NLS-2$
- setEvaluationString("$"); //$NON-NLS-1$
- }
- }
-
- /**
- * The date variable evaluates to the current date.
- */
- public static class Date extends SimpleTemplateVariableResolver {
- /**
- * Creates a new date variable
- */
- public Date() {
- super("date", TextTemplateMessages.getString("GlobalVariables.variable.description.date")); //$NON-NLS-1$ //$NON-NLS-2$
- }
- protected String resolve(TemplateContext context) {
- return DateFormat.getDateInstance().format(new java.util.Date());
- }
- }
-
- /**
- * The year variable evaluates to the current year.
- */
- public static class Year extends SimpleTemplateVariableResolver {
- /**
- * Creates a new year variable
- */
- public Year() {
- super("year", TextTemplateMessages.getString("GlobalVariables.variable.description.year")); //$NON-NLS-1$ //$NON-NLS-2$
- }
- protected String resolve(TemplateContext context) {
- return Integer.toString(Calendar.getInstance().get(Calendar.YEAR));
- }
- }
-
- /**
- * The time variable evaluates to the current time.
- */
- public static class Time extends SimpleTemplateVariableResolver {
- /**
- * Creates a new time variable
- */
- public Time() {
- super("time", TextTemplateMessages.getString("GlobalVariables.variable.description.time")); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- /**
- * {@inheritDoc}
- */
- protected String resolve(TemplateContext context) {
- return DateFormat.getTimeInstance().format(new java.util.Date());
- }
- }
-
- /**
- * The user variable evaluates to the current user.
- */
- public static class User extends SimpleTemplateVariableResolver {
- /**
- * Creates a new user name variable
- */
- public User() {
- super("user", TextTemplateMessages.getString("GlobalVariables.variable.description.user")); //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- /**
- * {@inheritDoc}
- */
- protected String resolve(TemplateContext context) {
- return System.getProperty("user.name"); //$NON-NLS-1$
- }
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/templates/SimpleTemplateVariableResolver.java b/org.eclipse.text/src/org/eclipse/jface/text/templates/SimpleTemplateVariableResolver.java
deleted file mode 100644
index 87324983c..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/templates/SimpleTemplateVariableResolver.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.templates;
-
-
-/**
- * A simple template variable resolver, which always evaluates to a defined string.
- * <p>
- * Clients may instantiate and extend this class.
- * </p>
- *
- * @since 3.0
- */
-public class SimpleTemplateVariableResolver extends TemplateVariableResolver {
-
- /** The string to which this variable evaluates. */
- private String fEvaluationString;
-
- /*
- * @see TemplateVariableResolver#TemplateVariableResolver(String, String)
- */
- protected SimpleTemplateVariableResolver(String type, String description) {
- super(type, description);
- }
-
- /**
- * Sets the string to which this variable evaluates.
- *
- * @param evaluationString the evaluation string, may be <code>null</code>.
- */
- public final void setEvaluationString(String evaluationString) {
- fEvaluationString= evaluationString;
- }
-
- /*
- * @see TemplateVariableResolver#evaluate(TemplateContext)
- */
- protected String resolve(TemplateContext context) {
- return fEvaluationString;
- }
-
- /**
- * Returns always <code>true</code>, since simple variables are normally
- * unambiguous.
- *
- * @param context {@inheritDoc}
- * @return <code>true</code>
- */
- protected boolean isUnambiguous(TemplateContext context) {
- return true;
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/templates/Template.java b/org.eclipse.text/src/org/eclipse/jface/text/templates/Template.java
deleted file mode 100644
index 7058ca6d7..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/templates/Template.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.templates;
-
-import org.eclipse.jface.text.Assert;
-
-/**
- * A template consisting of a name and a pattern.
- * <p>
- * Clients may instantiate this class. May become final in the future.
- * </p>
- * @since 3.0
- */
-public class Template {
- /* XXX this class should be final or implement Cloneable, or both. */
-
- /** The name of this template */
- private String fName;
- /** A description of this template */
- private String fDescription;
- /** The name of the context type of this template */
- private String fContextTypeId;
- /** The template pattern. */
- private String fPattern;
-
- /**
- * Creates an empty template.
- */
- public Template() {
- this("", "", "", ""); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
- }
-
- /**
- * Creates a copy of a template.
- *
- * @param template the template to copy
- */
- public Template(Template template) {
- this(template.getName(), template.getDescription(), template.getContextTypeId(), template.getPattern());
- }
-
- /**
- * Creates a template.
- *
- * @param name the name of the template
- * @param description the description of the template
- * @param contextTypeId the id of the context type in which the template can be applied
- * @param pattern the template pattern
- */
- public Template(String name, String description, String contextTypeId, String pattern) {
- setDescription(description);
- setName(name);
- setContextTypeId(contextTypeId);
- setPattern(pattern);
- }
-
- /*
- * @see Object#hashCode()
- */
- public int hashCode() {
- return fName.hashCode() ^ fPattern.hashCode() ^ fContextTypeId.hashCode();
- }
-
- /**
- * Sets the description of the template.
- *
- * @param description the new description
- */
- public void setDescription(String description) {
- Assert.isNotNull(description);
- fDescription= description;
- }
-
- /**
- * Returns the description of the template.
- *
- * @return the description of the template
- */
- public String getDescription() {
- return fDescription;
- }
-
- /**
- * Sets the name of the context type in which the template can be applied.
- *
- * @param contextTypeId the new context type name
- */
- public void setContextTypeId(String contextTypeId) {
- Assert.isNotNull(contextTypeId);
- fContextTypeId= contextTypeId;
- }
-
- /**
- * Returns the id of the context type in which the template can be applied.
- *
- * @return the id of the context type in which the template can be applied
- */
- public String getContextTypeId() {
- return fContextTypeId;
- }
-
- /**
- * Sets the name of the template.
- *
- * @param name the name of the template
- */
- public void setName(String name) {
- fName= name;
- }
-
- /**
- * Returns the name of the template.
- *
- * @return the name of the template
- */
- public String getName() {
- return fName;
- }
-
- /**
- * Sets the pattern of the template.
- *
- * @param pattern the new pattern of the template
- */
- public void setPattern(String pattern) {
- fPattern= pattern;
- }
-
- /**
- * Returns the template pattern.
- *
- * @return the template pattern
- */
- public String getPattern() {
- return fPattern;
- }
-
- /**
- * Returns <code>true</code> if template is enabled and matches the context,
- * <code>false</code> otherwise.
- *
- * @param prefix the prefix (e.g. inside a document) to match
- * @param contextTypeName the context type name to match
- * @return <code>true</code> if template is enabled and matches the context,
- * <code>false</code> otherwise
- */
- public boolean matches(String prefix, String contextTypeName) {
- return fContextTypeId.equals(contextTypeName);
- }
-
- /*
- * @see java.lang.Object#equals(java.lang.Object)
- */
- public boolean equals(Object o) {
- if (!(o instanceof Template))
- return false;
-
- Template t= (Template) o;
- if (t == this)
- return true;
-
- return t.fName.equals(fName)
- && t.fPattern.equals(fPattern)
- && t.fContextTypeId.equals(fContextTypeId)
- && t.fDescription.equals(fDescription);
- }
-
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateBuffer.java b/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateBuffer.java
deleted file mode 100644
index cbd00db62..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateBuffer.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.templates;
-
-import org.eclipse.jface.text.Assert;
-
-/**
- * A template buffer is a container for a string and variables.
- * <p>
- * Clients may instantiate this class.
- * </p>
- *
- * @since 3.0
- */
-public final class TemplateBuffer {
-
- /** The string of the template buffer */
- private String fString;
- /** The variable positions of the template buffer */
- private TemplateVariable[] fVariables;
-
- /**
- * Creates a template buffer.
- *
- * @param string the string
- * @param variables the variable positions
- */
- public TemplateBuffer(String string, TemplateVariable[] variables) {
- setContent(string, variables);
- }
-
- /**
- * Sets the content of the template buffer.
- *
- * @param string the string
- * @param variables the variable positions
- */
- public final void setContent(String string, TemplateVariable[] variables) {
- Assert.isNotNull(string);
- Assert.isNotNull(variables);
-
- // XXX assert non-overlapping variable properties
-
- fString= string;
- fVariables= variables;
- }
-
- /**
- * Returns the string of the template buffer.
- *
- * @return the string representation of the template buffer
- */
- public final String getString() {
- return fString;
- }
-
- /**
- * Returns the variable positions of the template buffer.
- *
- * @return the variable positions of the template buffer
- */
- public final TemplateVariable[] getVariables() {
- return fVariables;
- }
-
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateContext.java b/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateContext.java
deleted file mode 100644
index cad34a918..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateContext.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.templates;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.jface.text.BadLocationException;
-
-/**
- * Provides the context for a <code>Template</code> being resolved. Keeps track
- * of resolved variables.
- * <p>
- * Clients may extend this class.
- * </p>
- *
- * @since 3.0
- */
-public abstract class TemplateContext {
-
- /** The context type of this context */
- private final TemplateContextType fContextType;
- /** Additional variables. */
- private final Map fVariables= new HashMap();
- /** A flag to indicate that the context should not be modified. */
- private boolean fReadOnly;
-
- /**
- * Creates a template context of a particular context type.
- *
- * @param contextType the context type of this context
- */
- protected TemplateContext(TemplateContextType contextType) {
- fContextType= contextType;
- fReadOnly= true;
- }
-
- /**
- * Returns the context type of this context.
- *
- * @return the context type of this context
- */
- public TemplateContextType getContextType() {
- return fContextType;
- }
-
- /**
- * Sets or clears the read-only flag.
- *
- * @param readOnly the new read-only state
- */
- public void setReadOnly(boolean readOnly) {
- fReadOnly= readOnly;
- }
-
- /**
- * Returns <code>true</code> if the receiver is read-only, <code>false</code> otherwise.
- *
- * @return <code>true</code> if the receiver is read-only, <code>false</code> otherwise
- */
- public boolean isReadOnly() {
- return fReadOnly;
- }
-
- /**
- * Defines the value of a variable.
- *
- * @param name the name of the variable
- * @param value the value of the variable, <code>null</code> to undefine a variable
- */
- public void setVariable(String name, String value) {
- fVariables.put(name, value);
- }
-
- /**
- * Returns the value of a defined variable.
- *
- * @param name the name of the variable
- * @return returns the value of the variable, <code>null</code> if the variable was not defined
- */
- public String getVariable(String name) {
- return (String) fVariables.get(name);
- }
-
- /**
- * Evaluates the template in this context and returns a template buffer.
- * <p>
- * Evaluation means translating the template into a <code>TemplateBuffer</code>,
- * resolving the defined variables in this context and possibly formatting
- * the resolved buffer.</p>
- *
- * @param template the template to evaluate
- * @return returns the buffer with the evaluated template or <code>null</code> if the buffer could not be created
- * @throws BadLocationException if evaluation fails due to concurrently changed documents etc.
- * @throws TemplateException if the template specification is not valid
- */
- public abstract TemplateBuffer evaluate(Template template) throws BadLocationException, TemplateException;
-
- /**
- * Tests if the specified template can be evaluated in this context.
- * <p>Examples are templates defined for a different context (e.g. a javadoc
- * template cannot be evaluated in Java context).</p>
- *
- * @param template the <code>Template</code> to check
- * @return <code>true</code> if <code>template</code> can be evaluated
- * in this context, <code>false</code> otherwise
- */
- public abstract boolean canEvaluate(Template template);
-
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateContextType.java b/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateContextType.java
deleted file mode 100644
index b480a39d5..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateContextType.java
+++ /dev/null
@@ -1,296 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.templates;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.text.edits.MalformedTreeException;
-import org.eclipse.text.edits.MultiTextEdit;
-import org.eclipse.text.edits.RangeMarker;
-import org.eclipse.text.edits.ReplaceEdit;
-import org.eclipse.text.edits.TextEdit;
-
-import org.eclipse.jface.text.Assert;
-import org.eclipse.jface.text.BadLocationException;
-import org.eclipse.jface.text.Document;
-import org.eclipse.jface.text.IDocument;
-
-
-/**
- * A context type defines a context within which templates are resolved. It
- * stores a number of <code>TemplateVariableResolver</code>s. A
- * <code>TemplateBuffer</code> can be resolved in a
- * <code>TemplateContext</code> using the
- * {@link #resolve(TemplateBuffer, TemplateContext)} method.
- * <p>
- * Clients may extend this class.
- * </p>
- *
- * @since 3.0
- */
-public class TemplateContextType {
-
- /** Name of the context type. */
- private /* final */ String fId= null;
-
- /** Variable resolvers used by this content type. */
- private final Map fResolvers= new HashMap();
-
- /** The name of the context type. */
- private String fName= null;
-
- /**
- * Creates a context type with an identifier. The identifier must be unique,
- * a qualified name is suggested. The id is also used as name.
- *
- * @param id the unique identifier of the context type
- */
- public TemplateContextType(String id) {
- this(id, id);
- }
-
- /**
- * Creates a context type with an identifier. The identifier must be unique, a qualified name is suggested.
- *
- * @param id the unique identifier of the context type
- * @param name the name of the context type
- */
- public TemplateContextType(String id, String name) {
- Assert.isNotNull(id);
- Assert.isNotNull(name);
- fId= id;
- fName= name;
- }
-
- /**
- * Returns the name of the context type.
- *
- * @return the name of the receiver
- */
- public String getId() {
- return fId;
- }
-
-
- /**
- * Returns the name of the context type.
- *
- * @return the name of the context type
- */
- public String getName() {
- return fName;
- }
-
- /**
- * Creates a context type with a <code>null</code> identifier.
- * <p>
- * This is a framework-only constructor that exists only so that context
- * types can be contributed via an extension point and that should not be
- * called in client code except for subclass constructors; use
- * {@link #TemplateContextType(String)} instead.
- * </p>
- */
- public TemplateContextType() {
- }
-
- /**
- * Sets the id of this context.
- * <p>
- * This is a framework-only method that exists solely so that context types
- * can be contributed via an extension point and that should not be called
- * in client code; use {@link #TemplateContextType(String)} instead.
- * </p>
- *
- * @param id the identifier of this context
- * @throws RuntimeException an unspecified exception if the id has already
- * been set on this context type
- */
- public final void setId(String id) throws RuntimeException {
- Assert.isNotNull(id);
- Assert.isTrue(fId == null); // may only be called once when the context is instantiated
- fId= id;
- }
-
- /**
- * Sets the name of the context type.
- *
- * <p>
- * This is a framework-only method that exists solely so that context types
- * can be contributed via an extension point and that should not be called
- * in client code; use {@link #TemplateContextType(String, String)} instead.
- * </p>
- *
- * @param name the name of the context type
- */
- public final void setName(String name) {
- Assert.isTrue(fName == null); // only initialized by extension code
- fName= name;
- }
-
- /**
- * Adds a variable resolver to the context type. If there already is a resolver
- * for the same type, the previous one gets replaced by <code>resolver</code>.
- *
- * @param resolver the resolver to be added under its name
- */
- public void addResolver(TemplateVariableResolver resolver) {
- Assert.isNotNull(resolver);
- fResolvers.put(resolver.getType(), resolver);
- }
-
- /**
- * Removes a template variable from the context type.
- *
- * @param resolver the variable to be removed
- */
- public void removeResolver(TemplateVariableResolver resolver) {
- Assert.isNotNull(resolver);
- fResolvers.remove(resolver.getType());
- }
-
- /**
- * Removes all template variables from the context type.
- */
- public void removeAllResolvers() {
- fResolvers.clear();
- }
-
- /**
- * Returns an iterator for the variables known to the context type.
- *
- * @return an iterator over the variables in this context type
- */
- public Iterator resolvers() {
- return Collections.unmodifiableMap(fResolvers).values().iterator();
- }
-
- /**
- * Returns the resolver for the given type.
- *
- * @param type the type for which a resolver is needed
- * @return a resolver for the given type, or <code>null</code> if none is registered
- */
- protected TemplateVariableResolver getResolver(String type) {
- return (TemplateVariableResolver) fResolvers.get(type);
- }
-
- /**
- * Validates a pattern, a <code>TemplateException</code> is thrown if
- * validation fails.
- *
- * @param pattern the template pattern to validate
- * @throws TemplateException if the pattern is invalid
- */
- public void validate(String pattern) throws TemplateException {
- TemplateTranslator translator= new TemplateTranslator();
- TemplateBuffer buffer= translator.translate(pattern);
- validateVariables(buffer.getVariables());
- }
-
- /**
- * Validates the variables in this context type. If a variable is not valid,
- * e.g. if its type is not known in this context type, a
- * <code>TemplateException</code> is thrown.
- * <p>
- * The default implementation does nothing.
- * </p>
- *
- * @param variables the variables to validate
- * @throws TemplateException if one of the variables is not valid in this
- * context type
- */
- protected void validateVariables(TemplateVariable[] variables) throws TemplateException {
- }
-
- /**
- * Resolves the variables in <code>buffer</code> within <code>context</code>
- * and edits the template buffer to reflect the resolved variables.
- *
- * @param buffer the template buffer
- * @param context the template context
- * @throws MalformedTreeException if the positions in the buffer overlap
- * @throws BadLocationException if the buffer cannot be successfully modified
- */
- public void resolve(TemplateBuffer buffer, TemplateContext context) throws MalformedTreeException, BadLocationException {
- Assert.isNotNull(context);
- TemplateVariable[] variables= buffer.getVariables();
-
- List positions= variablesToPositions(variables);
- List edits= new ArrayList(5);
-
- // iterate over all variables and try to resolve them
- for (int i= 0; i != variables.length; i++) {
- TemplateVariable variable= variables[i];
-
- if (variable.isUnambiguous())
- continue;
-
- // remember old values
- int[] oldOffsets= variable.getOffsets();
- int oldLength= variable.getLength();
- String oldValue= variable.getDefaultValue();
-
- String type= variable.getType();
- TemplateVariableResolver resolver= (TemplateVariableResolver) fResolvers.get(type);
- if (resolver == null)
- resolver= new TemplateVariableResolver(type, ""); //$NON-NLS-1$
- resolver.resolve(variable, context);
-
- String value= variable.getDefaultValue();
-
- if (!oldValue.equals(value))
- // update buffer to reflect new value
- for (int k= 0; k != oldOffsets.length; k++)
- edits.add(new ReplaceEdit(oldOffsets[k], oldLength, value));
-
- }
-
- IDocument document= new Document(buffer.getString());
- MultiTextEdit edit= new MultiTextEdit(0, document.getLength());
- edit.addChildren((TextEdit[]) positions.toArray(new TextEdit[positions.size()]));
- edit.addChildren((TextEdit[]) edits.toArray(new TextEdit[edits.size()]));
- edit.apply(document, TextEdit.UPDATE_REGIONS);
-
- positionsToVariables(positions, variables);
-
- buffer.setContent(document.get(), variables);
- }
-
- private static List variablesToPositions(TemplateVariable[] variables) {
- List positions= new ArrayList(5);
- for (int i= 0; i != variables.length; i++) {
- int[] offsets= variables[i].getOffsets();
- for (int j= 0; j != offsets.length; j++)
- positions.add(new RangeMarker(offsets[j], 0));
- }
-
- return positions;
- }
-
- private static void positionsToVariables(List positions, TemplateVariable[] variables) {
- Iterator iterator= positions.iterator();
-
- for (int i= 0; i != variables.length; i++) {
- TemplateVariable variable= variables[i];
-
- int[] offsets= new int[variable.getOffsets().length];
- for (int j= 0; j != offsets.length; j++)
- offsets[j]= ((TextEdit) iterator.next()).getOffset();
-
- variable.setOffsets(offsets);
- }
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateException.java b/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateException.java
deleted file mode 100644
index dda57ddeb..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateException.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.jface.text.templates;
-
-
-/**
- * Thrown when a template cannot be validated.
- * <p>
- * Clients may instantiate this class.
- * </p>
- *
- * @since 3.0
- */
-public class TemplateException extends Exception {
-
- /**
- * Creates a new template exception.
- */
- public TemplateException() {
- super();
- }
-
- /**
- * Creates a new template exception.
- *
- * @param message the message describing the problem that arised
- */
- public TemplateException(String message) {
- super(message);
- }
-
- /**
- * Creates a new template exception.
- *
- * @param message the message describing the problem that arised
- * @param cause the original exception
- */
- public TemplateException(String message, Throwable cause) {
- super(message, cause);
- }
-
- /**
- * Creates a new template exception.
- *
- * @param cause the original exception
- */
- public TemplateException(Throwable cause) {
- super(cause);
- }
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateTranslator.java b/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateTranslator.java
deleted file mode 100644
index 2703b7671..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateTranslator.java
+++ /dev/null
@@ -1,260 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.jface.text.templates;
-
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.Vector;
-
-/**
- * The template translator translates a string into a template buffer. Regions
- * marked as variables are translated into <code>TemplateVariable</code>s.
- * <p>
- * The EBNF grammar of a valid string is as follows:</p>
- * <p>
- * template := (text | escape)*. <br />
- * text := character - dollar. <br />
- * escape := dollar ('{' identifier '}' | dollar). <br />
- * dollar := '$'. <br />
- * </p>
- * <p>
- * Clients may extend the <code>createVariable</code> method of this class.
- * </p>
- *
- * @since 3.0
- */
-public class TemplateTranslator {
-
- // states
- private static final int TEXT= 0;
- private static final int ESCAPE= 1;
- private static final int IDENTIFIER= 2;
-
- // tokens
- private static final char ESCAPE_CHARACTER= '$';
- private static final char IDENTIFIER_BEGIN= '{';
- private static final char IDENTIFIER_END= '}';
-
- /** a buffer for the translation result string */
- private final StringBuffer fBuffer= new StringBuffer();
- /** position offsets of variables */
- private final Vector fOffsets= new Vector();
- /** position lengths of variables */
- private final Vector fLengths= new Vector();
-
- /** the current parsing state */
- private int fState;
- /** the last translation error */
- private String fErrorMessage;
-
- /**
- * Returns an error message if an error occurred for the last translation,
- * <code>null</code> otherwise.
- *
- * @return the error message if an error occurred during the most recent
- * translation, <code>null</code> otherwise
- */
- public String getErrorMessage() {
- return fErrorMessage;
- }
-
- /**
- * Translates a template to a <code>TemplateBuffer</code>. <code>null</code>
- * is returned if there was an error. <code>getErrorMessage()</code> retrieves the
- * associated error message.
- *
- * @param template the template to translate.
- * @return returns the template buffer corresponding to the string, <code>null</code>
- * if there was an error.
- * @see #getErrorMessage()
- * @throws TemplateException if translation failed
- */
- public TemplateBuffer translate(Template template) throws TemplateException {
- return translate(template.getPattern());
- }
-
- /**
- * Translates a template string to <code>TemplateBuffer</code>. <code>null</code>
- * is returned if there was an error. <code>getErrorMessage()</code> retrieves the
- * associated error message.
- *
- * @param string the string to translate.
- * @return returns the template buffer corresponding to the string, <code>null</code>
- * if there was an error.
- * @see #getErrorMessage()
- * @throws TemplateException if translation failed
- */
- public TemplateBuffer translate(String string) throws TemplateException {
-
- fBuffer.setLength(0);
- fOffsets.clear();
- fLengths.clear();
- fState= TEXT;
- fErrorMessage= null;
-
- if (!parse(string))
- throw new TemplateException(fErrorMessage);
-
- switch (fState) {
- case TEXT:
- break;
-
- // illegal
- case ESCAPE:
- throw new TemplateException(TextTemplateMessages.getString("TemplateTranslator.error.incomplete.variable")); //$NON-NLS-1$
-
- // illegal
- case IDENTIFIER:
- throw new TemplateException(TextTemplateMessages.getString("TemplateTranslator.error.incomplete.variable")); //$NON-NLS-1$
- }
-
- int[] offsets= new int[fOffsets.size()];
- int[] lengths= new int[fLengths.size()];
-
- for (int i= 0; i < fOffsets.size(); i++) {
- offsets[i]= ((Integer) fOffsets.get(i)).intValue();
- lengths[i]= ((Integer) fLengths.get(i)).intValue();
- }
-
- String translatedString= fBuffer.toString();
- TemplateVariable[] variables= findVariables(translatedString, offsets, lengths);
-
- return new TemplateBuffer(translatedString, variables);
- }
-
- private TemplateVariable[] findVariables(String string, int[] offsets, int[] lengths) {
-
- Map map= new HashMap();
-
- for (int i= 0; i != offsets.length; i++) {
- int offset= offsets[i];
- int length= lengths[i];
-
- String content= string.substring(offset, offset + length);
- Vector vector= (Vector) map.get(content);
- if (vector == null) {
- vector= new Vector();
- map.put(content, vector);
- }
- vector.add(new Integer(offset));
- }
-
- TemplateVariable[] variables= new TemplateVariable[map.size()];
- int k= 0;
-
- Set keys= map.keySet();
- for (Iterator i= keys.iterator(); i.hasNext(); ) {
- String name= (String) i.next();
- Vector vector= (Vector) map.get(name);
-
- int[] offsets_= new int[vector.size()];
- for (int j= 0; j != offsets_.length; j++)
- offsets_[j]= ((Integer) vector.get(j)).intValue();
-
- variables[k]= createVariable(name, name, offsets_);
- k++;
- }
-
- return variables;
- }
-
- /**
- * Hook method to create new variables. Subclasses may override to supply their
- * custom variable type.
- * <p>
- * Clients may replace this method.
- * </p>
- *
- * @param type the type of the new variable.
- * @param name the name of the new variable.
- * @param offsets the offsets where the variable occurs in the template
- * @return a new instance of <code>TemplateVariable</code>
- */
- protected TemplateVariable createVariable(String type, String name, int[] offsets) {
- return new TemplateVariable(type, name, offsets);
- }
-
- /**
- * Internal parser.
- *
- * @param string the string to parse
- * @return <code>true</code> if parsing was successful
- */
- private boolean parse(String string) {
-
- for (int i= 0; i != string.length(); i++) {
- char ch= string.charAt(i);
-
- switch (fState) {
- case TEXT:
- switch (ch) {
- case ESCAPE_CHARACTER:
- fState= ESCAPE;
- break;
-
- default:
- fBuffer.append(ch);
- break;
- }
- break;
-
- case ESCAPE:
- switch (ch) {
- case ESCAPE_CHARACTER:
- fBuffer.append(ch);
- fState= TEXT;
- break;
-
- case IDENTIFIER_BEGIN:
- fOffsets.add(new Integer(fBuffer.length()));
- fState= IDENTIFIER;
- break;
-
- default:
- // illegal single escape character, but be tolerant
- fErrorMessage= TextTemplateMessages.getString("TemplateTranslator.error.incomplete.variable"); //$NON-NLS-1$
- fBuffer.append(ESCAPE_CHARACTER);
- fBuffer.append(ch);
- fState= TEXT;
- return false;
- }
- break;
-
- case IDENTIFIER:
- switch (ch) {
- case IDENTIFIER_END:
- int offset = ((Integer) fOffsets.get(fOffsets.size() - 1)).intValue();
- fLengths.add(new Integer(fBuffer.length() - offset));
- fState= TEXT;
- break;
-
- default:
- if (!Character.isUnicodeIdentifierStart(ch) &&
- !Character.isUnicodeIdentifierPart(ch))
- {
- // illegal identifier character
- fErrorMessage= TextTemplateMessages.getString("TemplateTranslator.error.invalid.identifier"); //$NON-NLS-1$
- return false;
- }
-
- fBuffer.append(ch);
- break;
- }
- break;
- }
- }
-
- return true;
- }
-
-}
diff --git a/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateVariable.java b/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateVariable.java
deleted file mode 100644
index 8d47a2b43..000000000
--- a/org.eclipse.text/src/org/eclipse/jface/text/templates/TemplateVariable.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation