annotate dwtx/jface/text/TextUtilities.d @ 161:f8d52b926852

...
author Frank Benoit <benoit@tionex.de>
date Wed, 27 Aug 2008 14:49:30 +0200
parents f70d9508c95c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
1 /*******************************************************************************
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
2 * Copyright (c) 2000, 2008 IBM Corporation and others.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
3 * All rights reserved. This program and the accompanying materials
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
4 * are made available under the terms of the Eclipse Public License v1.0
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
5 * which accompanies this distribution, and is available at
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
6 * http://www.eclipse.org/legal/epl-v10.html
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
7 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
8 * Contributors:
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
9 * IBM Corporation - initial API and implementation
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
10 * Port to the D programming language:
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
11 * Frank Benoit <benoit@tionex.de>
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
12 *******************************************************************************/
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
13 module dwtx.jface.text.TextUtilities;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
14
131
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
15 import dwtx.jface.text.IDocumentPartitioningListener; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
16 import dwtx.jface.text.DefaultTextHover; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
17 import dwtx.jface.text.AbstractInformationControl; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
18 import dwtx.jface.text.IInformationControlCreatorExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
19 import dwtx.jface.text.AbstractInformationControlManager; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
20 import dwtx.jface.text.ITextViewerExtension2; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
21 import dwtx.jface.text.IDocumentPartitioner; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
22 import dwtx.jface.text.DefaultIndentLineAutoEditStrategy; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
23 import dwtx.jface.text.ITextSelection; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
24 import dwtx.jface.text.Document; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
25 import dwtx.jface.text.FindReplaceDocumentAdapterContentProposalProvider; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
26 import dwtx.jface.text.ITextListener; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
27 import dwtx.jface.text.BadPartitioningException; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
28 import dwtx.jface.text.ITextViewerExtension5; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
29 import dwtx.jface.text.IDocumentPartitionerExtension3; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
30 import dwtx.jface.text.IUndoManager; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
31 import dwtx.jface.text.ITextHoverExtension2; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
32 import dwtx.jface.text.IRepairableDocument; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
33 import dwtx.jface.text.IRewriteTarget; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
34 import dwtx.jface.text.DefaultPositionUpdater; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
35 import dwtx.jface.text.RewriteSessionEditProcessor; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
36 import dwtx.jface.text.TextViewerHoverManager; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
37 import dwtx.jface.text.DocumentRewriteSession; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
38 import dwtx.jface.text.TextViewer; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
39 import dwtx.jface.text.ITextViewerExtension8; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
40 import dwtx.jface.text.RegExMessages; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
41 import dwtx.jface.text.IDelayedInputChangeProvider; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
42 import dwtx.jface.text.ITextOperationTargetExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
43 import dwtx.jface.text.IWidgetTokenOwner; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
44 import dwtx.jface.text.IViewportListener; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
45 import dwtx.jface.text.GapTextStore; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
46 import dwtx.jface.text.MarkSelection; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
47 import dwtx.jface.text.IDocumentPartitioningListenerExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
48 import dwtx.jface.text.IDocumentAdapterExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
49 import dwtx.jface.text.IInformationControlExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
50 import dwtx.jface.text.IDocumentPartitioningListenerExtension2; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
51 import dwtx.jface.text.DefaultDocumentAdapter; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
52 import dwtx.jface.text.ITextViewerExtension3; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
53 import dwtx.jface.text.IInformationControlCreator; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
54 import dwtx.jface.text.TypedRegion; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
55 import dwtx.jface.text.ISynchronizable; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
56 import dwtx.jface.text.IMarkRegionTarget; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
57 import dwtx.jface.text.TextViewerUndoManager; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
58 import dwtx.jface.text.IRegion; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
59 import dwtx.jface.text.IInformationControlExtension2; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
60 import dwtx.jface.text.IDocumentExtension4; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
61 import dwtx.jface.text.IDocumentExtension2; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
62 import dwtx.jface.text.IDocumentPartitionerExtension2; // packageimport
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
63 // import dwtx.jface.text.Assert; // packageimport
131
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
64 import dwtx.jface.text.DefaultInformationControl; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
65 import dwtx.jface.text.IWidgetTokenOwnerExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
66 import dwtx.jface.text.DocumentClone; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
67 import dwtx.jface.text.DefaultUndoManager; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
68 import dwtx.jface.text.IFindReplaceTarget; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
69 import dwtx.jface.text.IAutoEditStrategy; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
70 import dwtx.jface.text.ILineTrackerExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
71 import dwtx.jface.text.IUndoManagerExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
72 import dwtx.jface.text.TextSelection; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
73 import dwtx.jface.text.DefaultAutoIndentStrategy; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
74 import dwtx.jface.text.IAutoIndentStrategy; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
75 import dwtx.jface.text.IPainter; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
76 import dwtx.jface.text.IInformationControl; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
77 import dwtx.jface.text.IInformationControlExtension3; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
78 import dwtx.jface.text.ITextViewerExtension6; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
79 import dwtx.jface.text.IInformationControlExtension4; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
80 import dwtx.jface.text.DefaultLineTracker; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
81 import dwtx.jface.text.IDocumentInformationMappingExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
82 import dwtx.jface.text.IRepairableDocumentExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
83 import dwtx.jface.text.ITextHover; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
84 import dwtx.jface.text.FindReplaceDocumentAdapter; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
85 import dwtx.jface.text.ILineTracker; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
86 import dwtx.jface.text.Line; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
87 import dwtx.jface.text.ITextViewerExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
88 import dwtx.jface.text.IDocumentAdapter; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
89 import dwtx.jface.text.TextEvent; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
90 import dwtx.jface.text.BadLocationException; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
91 import dwtx.jface.text.AbstractDocument; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
92 import dwtx.jface.text.AbstractLineTracker; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
93 import dwtx.jface.text.TreeLineTracker; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
94 import dwtx.jface.text.ITextPresentationListener; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
95 import dwtx.jface.text.Region; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
96 import dwtx.jface.text.ITextViewer; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
97 import dwtx.jface.text.IDocumentInformationMapping; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
98 import dwtx.jface.text.MarginPainter; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
99 import dwtx.jface.text.IPaintPositionManager; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
100 import dwtx.jface.text.TextPresentation; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
101 import dwtx.jface.text.IFindReplaceTargetExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
102 import dwtx.jface.text.ISlaveDocumentManagerExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
103 import dwtx.jface.text.ISelectionValidator; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
104 import dwtx.jface.text.IDocumentExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
105 import dwtx.jface.text.PropagatingFontFieldEditor; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
106 import dwtx.jface.text.ConfigurableLineTracker; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
107 import dwtx.jface.text.SlaveDocumentEvent; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
108 import dwtx.jface.text.IDocumentListener; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
109 import dwtx.jface.text.PaintManager; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
110 import dwtx.jface.text.IFindReplaceTargetExtension3; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
111 import dwtx.jface.text.ITextDoubleClickStrategy; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
112 import dwtx.jface.text.IDocumentExtension3; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
113 import dwtx.jface.text.Position; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
114 import dwtx.jface.text.TextMessages; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
115 import dwtx.jface.text.CopyOnWriteTextStore; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
116 import dwtx.jface.text.WhitespaceCharacterPainter; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
117 import dwtx.jface.text.IPositionUpdater; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
118 import dwtx.jface.text.DefaultTextDoubleClickStrategy; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
119 import dwtx.jface.text.ListLineTracker; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
120 import dwtx.jface.text.ITextInputListener; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
121 import dwtx.jface.text.BadPositionCategoryException; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
122 import dwtx.jface.text.IWidgetTokenKeeperExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
123 import dwtx.jface.text.IInputChangedListener; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
124 import dwtx.jface.text.ITextOperationTarget; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
125 import dwtx.jface.text.IDocumentInformationMappingExtension2; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
126 import dwtx.jface.text.ITextViewerExtension7; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
127 import dwtx.jface.text.IInformationControlExtension5; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
128 import dwtx.jface.text.IDocumentRewriteSessionListener; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
129 import dwtx.jface.text.JFaceTextUtil; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
130 import dwtx.jface.text.AbstractReusableInformationControlCreator; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
131 import dwtx.jface.text.TabsToSpacesConverter; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
132 import dwtx.jface.text.CursorLinePainter; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
133 import dwtx.jface.text.ITextHoverExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
134 import dwtx.jface.text.IEventConsumer; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
135 import dwtx.jface.text.IDocument; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
136 import dwtx.jface.text.IWidgetTokenKeeper; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
137 import dwtx.jface.text.DocumentCommand; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
138 import dwtx.jface.text.TypedPosition; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
139 import dwtx.jface.text.IEditingSupportRegistry; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
140 import dwtx.jface.text.IDocumentPartitionerExtension; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
141 import dwtx.jface.text.AbstractHoverInformationControlManager; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
142 import dwtx.jface.text.IEditingSupport; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
143 import dwtx.jface.text.IMarkSelection; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
144 import dwtx.jface.text.ISlaveDocumentManager; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
145 import dwtx.jface.text.DocumentEvent; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
146 import dwtx.jface.text.DocumentPartitioningChangedEvent; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
147 import dwtx.jface.text.ITextStore; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
148 import dwtx.jface.text.JFaceTextMessages; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
149 import dwtx.jface.text.DocumentRewriteSessionEvent; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
150 import dwtx.jface.text.SequentialRewriteTextStore; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
151 import dwtx.jface.text.DocumentRewriteSessionType; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
152 import dwtx.jface.text.TextAttribute; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
153 import dwtx.jface.text.ITextViewerExtension4; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
154 import dwtx.jface.text.ITypedRegion; // packageimport
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
155
c4fb132a086c Add package imports
Frank Benoit <benoit@tionex.de>
parents: 129
diff changeset
156
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
157 import dwt.dwthelper.utils;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
158
153
f70d9508c95c Fix java Collection imports
Frank Benoit <benoit@tionex.de>
parents: 146
diff changeset
159 import dwtx.dwtxhelper.Collection;
f70d9508c95c Fix java Collection imports
Frank Benoit <benoit@tionex.de>
parents: 146
diff changeset
160
f70d9508c95c Fix java Collection imports
Frank Benoit <benoit@tionex.de>
parents: 146
diff changeset
161
f70d9508c95c Fix java Collection imports
Frank Benoit <benoit@tionex.de>
parents: 146
diff changeset
162
f70d9508c95c Fix java Collection imports
Frank Benoit <benoit@tionex.de>
parents: 146
diff changeset
163
f70d9508c95c Fix java Collection imports
Frank Benoit <benoit@tionex.de>
parents: 146
diff changeset
164
f70d9508c95c Fix java Collection imports
Frank Benoit <benoit@tionex.de>
parents: 146
diff changeset
165
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
166
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
167 import dwtx.core.runtime.Assert;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
168
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
169
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
170 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
171 * A collection of text functions.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
172 * <p>
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
173 * This class is neither intended to be instantiated nor subclassed.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
174 * </p>
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
175 * @noinstantiate This class is not intended to be instantiated by clients.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
176 * @noextend This class is not intended to be subclassed by clients.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
177 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
178 public class TextUtilities {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
179
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
180 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
181 * Default line delimiters used by the text functions of this class.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
182 */
146
Frank Benoit <benoit@tionex.de>
parents: 136
diff changeset
183 public const static String[] DELIMITERS= [ "\n", "\r", "\r\n" ]; //$NON-NLS-3$ //$NON-NLS-2$ //$NON-NLS-1$
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
184
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
185 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
186 * Default line delimiters used by these text functions.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
187 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
188 * @deprecated use DELIMITERS instead
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
189 */
146
Frank Benoit <benoit@tionex.de>
parents: 136
diff changeset
190 public const static String[] fgDelimiters= DELIMITERS;
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
191
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
192
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
193
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
194 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
195 * Determines which one of default line delimiters appears first in the list. If none of them the
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
196 * hint is returned.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
197 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
198 * @param text the text to be checked
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
199 * @param hint the line delimiter hint
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
200 * @return the line delimiter
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
201 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
202 public static String determineLineDelimiter(String text, String hint) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
203 try {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
204 int[] info= indexOf(DELIMITERS, text, 0);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
205 return DELIMITERS[info[1]];
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
206 } catch (ArrayIndexOutOfBoundsException x) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
207 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
208 return hint;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
209 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
210
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
211 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
212 * Returns the starting position and the index of the first matching search string
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
213 * in the given text that is greater than the given offset. If more than one search
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
214 * string matches with the same starting position then the longest one is returned.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
215 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
216 * @param searchStrings the strings to search for
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
217 * @param text the text to be searched
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
218 * @param offset the offset at which to start the search
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
219 * @return an <code>int[]</code> with two elements where the first is the starting offset, the second the index of the found
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
220 * search string in the given <code>searchStrings</code> array, returns <code>[-1, -1]</code> if no match exists
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
221 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
222 public static int[] indexOf(String[] searchStrings, String text, int offset) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
223
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
224 int[] result= [ -1, -1 ];
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
225 int zeroIndex= -1;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
226
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
227 for (int i= 0; i < searchStrings.length; i++) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
228
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
229 int length= searchStrings[i].length();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
230
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
231 if (length is 0) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
232 zeroIndex= i;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
233 continue;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
234 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
235
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
236 int index= .indexOf( text, searchStrings[i], offset);
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
237 if (index >= 0) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
238
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
239 if (result[0] is -1) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
240 result[0]= index;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
241 result[1]= i;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
242 } else if (index < result[0]) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
243 result[0]= index;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
244 result[1]= i;
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
245 } else if (index is result[0] && length > searchStrings[result[1]].length) {
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
246 result[0]= index;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
247 result[1]= i;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
248 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
249 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
250 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
251
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
252 if (zeroIndex > -1 && result[0] is -1) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
253 result[0]= 0;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
254 result[1]= zeroIndex;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
255 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
256
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
257 return result;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
258 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
259
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
260 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
261 * Returns the index of the longest search string with which the given text ends or
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
262 * <code>-1</code> if none matches.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
263 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
264 * @param searchStrings the strings to search for
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
265 * @param text the text to search
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
266 * @return the index in <code>searchStrings</code> of the longest string with which <code>text</code> ends or <code>-1</code>
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
267 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
268 public static int endsWith(String[] searchStrings, String text) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
269
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
270 int index= -1;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
271
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
272 for (int i= 0; i < searchStrings.length; i++) {
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
273 if (.endsWith(text, searchStrings[i])) {
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
274 if (index is -1 || searchStrings[i].length() > searchStrings[index].length())
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
275 index= i;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
276 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
277 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
278
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
279 return index;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
280 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
281
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
282 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
283 * Returns the index of the longest search string with which the given text starts or <code>-1</code>
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
284 * if none matches.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
285 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
286 * @param searchStrings the strings to search for
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
287 * @param text the text to search
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
288 * @return the index in <code>searchStrings</code> of the longest string with which <code>text</code> starts or <code>-1</code>
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
289 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
290 public static int startsWith(String[] searchStrings, String text) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
291
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
292 int index= -1;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
293
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
294 for (int i= 0; i < searchStrings.length; i++) {
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
295 if (.startsWith(text, searchStrings[i])) {
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
296 if (index is -1 || searchStrings[i].length() > searchStrings[index].length())
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
297 index= i;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
298 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
299 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
300
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
301 return index;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
302 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
303
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
304 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
305 * Returns the index of the first compare string that equals the given text or <code>-1</code>
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
306 * if none is equal.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
307 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
308 * @param compareStrings the strings to compare with
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
309 * @param text the text to check
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
310 * @return the index of the first equal compare string or <code>-1</code>
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
311 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
312 public static int equals(String[] compareStrings, String text) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
313 for (int i= 0; i < compareStrings.length; i++) {
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
314 if (.equals(text,compareStrings[i]))
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
315 return i;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
316 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
317 return -1;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
318 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
319
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
320 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
321 * Returns a document event which is an accumulation of a list of document events,
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
322 * <code>null</code> if the list of documentEvents is empty.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
323 * The document of the document events are ignored.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
324 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
325 * @param unprocessedDocument the document to which the document events would be applied
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
326 * @param documentEvents the list of document events to merge
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
327 * @return returns the merged document event
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
328 * @throws BadLocationException might be thrown if document is not in the correct state with respect to document events
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
329 */
136
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
330 public static DocumentEvent mergeUnprocessedDocumentEvents(IDocument unprocessedDocument, List documentEvents) {
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
331
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
332 if (documentEvents.size() is 0)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
333 return null;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
334
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
335 final Iterator iterator= documentEvents.iterator();
134
51e6e63f930e Regex fix for casts
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
336 final DocumentEvent firstEvent= cast(DocumentEvent) iterator.next();
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
337
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
338 // current merged event
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
339 final IDocument document= unprocessedDocument;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
340 int offset= firstEvent.getOffset();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
341 int length= firstEvent.getLength();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
342 final StringBuffer text= new StringBuffer(firstEvent.getText() is null ? "" : firstEvent.getText()); //$NON-NLS-1$
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
343
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
344 while (iterator.hasNext()) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
345
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
346 final int delta= text.length() - length;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
347
134
51e6e63f930e Regex fix for casts
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
348 final DocumentEvent event= cast(DocumentEvent) iterator.next();
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
349 final int eventOffset= event.getOffset();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
350 final int eventLength= event.getLength();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
351 final String eventText= event.getText() is null ? "" : event.getText(); //$NON-NLS-1$
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
352
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
353 // event is right from merged event
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
354 if (eventOffset > offset + length + delta) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
355 final String string= document.get(offset + length, (eventOffset - delta) - (offset + length));
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
356 text.append(string);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
357 text.append(eventText);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
358
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
359 length= (eventOffset - delta) + eventLength - offset;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
360
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
361 // event is left from merged event
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
362 } else if (eventOffset + eventLength < offset) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
363 final String string= document.get(eventOffset + eventLength, offset - (eventOffset + eventLength));
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
364 text.select(0,0);
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
365 text.replace(string);
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
366 text.select(0,0);
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
367 text.replace(eventText);
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
368
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
369 length= offset + length - eventOffset;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
370 offset= eventOffset;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
371
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
372 // events overlap each other
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
373 } else {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
374 final int start= Math.max(0, eventOffset - offset);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
375 final int end= Math.min(text.length(), eventLength + eventOffset - offset);
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
376 text.select(start, end);
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
377 text.replace(eventText);
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
378
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
379 offset= Math.min(offset, eventOffset);
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
380 final int totalDelta= delta + eventText.length - eventLength;
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
381 length= text.length() - totalDelta;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
382 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
383 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
384
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
385 return new DocumentEvent(document, offset, length, text.toString());
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
386 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
387
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
388 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
389 * Returns a document event which is an accumulation of a list of document events,
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
390 * <code>null</code> if the list of document events is empty.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
391 * The document events being merged must all refer to the same document, to which
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
392 * the document changes have been already applied.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
393 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
394 * @param documentEvents the list of document events to merge
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
395 * @return returns the merged document event
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
396 * @throws BadLocationException might be thrown if document is not in the correct state with respect to document events
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
397 */
136
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
398 public static DocumentEvent mergeProcessedDocumentEvents(List documentEvents) {
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
399
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
400 if (documentEvents.size() is 0)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
401 return null;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
402
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
403 final ListIterator iterator= documentEvents.listIterator(documentEvents.size());
134
51e6e63f930e Regex fix for casts
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
404 final DocumentEvent firstEvent= cast(DocumentEvent) iterator.previous();
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
405
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
406 // current merged event
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
407 final IDocument document= firstEvent.getDocument();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
408 int offset= firstEvent.getOffset();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
409 int length= firstEvent.getLength();
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
410 int textLength= firstEvent.getText() is null ? 0 : firstEvent.getText().length;
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
411
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
412 while (iterator.hasPrevious()) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
413
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
414 final int delta= length - textLength;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
415
134
51e6e63f930e Regex fix for casts
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
416 final DocumentEvent event= cast(DocumentEvent) iterator.previous();
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
417 final int eventOffset= event.getOffset();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
418 final int eventLength= event.getLength();
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
419 final int eventTextLength= event.getText() is null ? 0 : event.getText().length;
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
420
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
421 // event is right from merged event
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
422 if (eventOffset > offset + textLength + delta) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
423 length= (eventOffset - delta) - (offset + textLength) + length + eventLength;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
424 textLength= (eventOffset - delta) + eventTextLength - offset;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
425
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
426 // event is left from merged event
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
427 } else if (eventOffset + eventTextLength < offset) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
428 length= offset - (eventOffset + eventTextLength) + length + eventLength;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
429 textLength= offset + textLength - eventOffset;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
430 offset= eventOffset;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
431
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
432 // events overlap each other
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
433 } else {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
434 final int start= Math.max(0, eventOffset - offset);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
435 final int end= Math.min(length, eventTextLength + eventOffset - offset);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
436 length += eventLength - (end - start);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
437
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
438 offset= Math.min(offset, eventOffset);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
439 final int totalDelta= delta + eventLength - eventTextLength;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
440 textLength= length - totalDelta;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
441 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
442 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
443
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
444 final String text= document.get(offset, textLength);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
445 return new DocumentEvent(document, offset, length, text);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
446 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
447
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
448 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
449 * Removes all connected document partitioners from the given document and stores them
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
450 * under their partitioning name in a map. This map is returned. After this method has been called
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
451 * the given document is no longer connected to any document partitioner.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
452 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
453 * @param document the document
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
454 * @return the map containing the removed partitioners
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
455 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
456 public static Map removeDocumentPartitioners(IDocument document) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
457 Map partitioners= new HashMap();
136
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
458 if (cast(IDocumentExtension3)document ) {
134
51e6e63f930e Regex fix for casts
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
459 IDocumentExtension3 extension3= cast(IDocumentExtension3) document;
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
460 String[] partitionings= extension3.getPartitionings();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
461 for (int i= 0; i < partitionings.length; i++) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
462 IDocumentPartitioner partitioner= extension3.getDocumentPartitioner(partitionings[i]);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
463 if (partitioner !is null) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
464 extension3.setDocumentPartitioner(partitionings[i], null);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
465 partitioner.disconnect();
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
466 partitioners.put(stringcast(partitionings[i]), cast(Object)partitioner);
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
467 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
468 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
469 } else {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
470 IDocumentPartitioner partitioner= document.getDocumentPartitioner();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
471 if (partitioner !is null) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
472 document.setDocumentPartitioner(null);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
473 partitioner.disconnect();
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
474 partitioners.put(stringcast(IDocumentExtension3.DEFAULT_PARTITIONING), cast(Object)partitioner);
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
475 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
476 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
477 return partitioners;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
478 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
479
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
480 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
481 * Connects the given document with all document partitioners stored in the given map under
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
482 * their partitioning name. This method cleans the given map.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
483 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
484 * @param document the document
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
485 * @param partitioners the map containing the partitioners to be connected
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
486 * @since 3.0
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
487 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
488 public static void addDocumentPartitioners(IDocument document, Map partitioners) {
136
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
489 if (cast(IDocumentExtension3)document ) {
134
51e6e63f930e Regex fix for casts
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
490 IDocumentExtension3 extension3= cast(IDocumentExtension3) document;
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
491 Iterator e= partitioners.keySet().iterator();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
492 while (e.hasNext()) {
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
493 String partitioning= stringcast( e.next() );
134
51e6e63f930e Regex fix for casts
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
494 IDocumentPartitioner partitioner= cast(IDocumentPartitioner) partitioners.get(partitioning);
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
495 partitioner.connect(document);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
496 extension3.setDocumentPartitioner(partitioning, partitioner);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
497 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
498 partitioners.clear();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
499 } else {
134
51e6e63f930e Regex fix for casts
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
500 IDocumentPartitioner partitioner= cast(IDocumentPartitioner) partitioners.get(IDocumentExtension3.DEFAULT_PARTITIONING);
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
501 partitioner.connect(document);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
502 document.setDocumentPartitioner(partitioner);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
503 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
504 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
505
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
506 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
507 * Returns the content type at the given offset of the given document.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
508 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
509 * @param document the document
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
510 * @param partitioning the partitioning to be used
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
511 * @param offset the offset
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
512 * @param preferOpenPartitions <code>true</code> if precedence should be
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
513 * given to a open partition ending at <code>offset</code> over a
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
514 * closed partition starting at <code>offset</code>
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
515 * @return the content type at the given offset of the document
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
516 * @throws BadLocationException if offset is invalid in the document
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
517 * @since 3.0
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
518 */
136
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
519 public static String getContentType(IDocument document, String partitioning, int offset, bool preferOpenPartitions) {
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
520 if (cast(IDocumentExtension3)document ) {
134
51e6e63f930e Regex fix for casts
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
521 IDocumentExtension3 extension3= cast(IDocumentExtension3) document;
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
522 try {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
523 return extension3.getContentType(partitioning, offset, preferOpenPartitions);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
524 } catch (BadPartitioningException x) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
525 return IDocument.DEFAULT_CONTENT_TYPE;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
526 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
527 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
528
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
529 return document.getContentType(offset);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
530 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
531
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
532 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
533 * Returns the partition of the given offset of the given document.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
534 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
535 * @param document the document
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
536 * @param partitioning the partitioning to be used
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
537 * @param offset the offset
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
538 * @param preferOpenPartitions <code>true</code> if precedence should be
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
539 * given to a open partition ending at <code>offset</code> over a
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
540 * closed partition starting at <code>offset</code>
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
541 * @return the content type at the given offset of this viewer's input
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
542 * document
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
543 * @throws BadLocationException if offset is invalid in the given document
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
544 * @since 3.0
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
545 */
136
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
546 public static ITypedRegion getPartition(IDocument document, String partitioning, int offset, bool preferOpenPartitions) {
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
547 if (cast(IDocumentExtension3)document ) {
134
51e6e63f930e Regex fix for casts
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
548 IDocumentExtension3 extension3= cast(IDocumentExtension3) document;
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
549 try {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
550 return extension3.getPartition(partitioning, offset, preferOpenPartitions);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
551 } catch (BadPartitioningException x) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
552 return new TypedRegion(0, document.getLength(), IDocument.DEFAULT_CONTENT_TYPE);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
553 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
554 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
555
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
556 return document.getPartition(offset);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
557 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
558
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
559 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
560 * Computes and returns the partitioning for the given region of the given
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
561 * document for the given partitioning name.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
562 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
563 * @param document the document
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
564 * @param partitioning the partitioning name
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
565 * @param offset the region offset
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
566 * @param length the region length
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
567 * @param includeZeroLengthPartitions whether to include zero-length partitions
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
568 * @return the partitioning for the given region of the given document for
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
569 * the given partitioning name
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
570 * @throws BadLocationException if the given region is invalid for the given
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
571 * document
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
572 * @since 3.0
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
573 */
136
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
574 public static ITypedRegion[] computePartitioning(IDocument document, String partitioning, int offset, int length, bool includeZeroLengthPartitions) {
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
575 if (cast(IDocumentExtension3)document ) {
134
51e6e63f930e Regex fix for casts
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
576 IDocumentExtension3 extension3= cast(IDocumentExtension3) document;
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
577 try {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
578 return extension3.computePartitioning(partitioning, offset, length, includeZeroLengthPartitions);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
579 } catch (BadPartitioningException x) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
580 return new ITypedRegion[0];
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
581 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
582 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
583
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
584 return document.computePartitioning(offset, length);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
585 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
586
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
587 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
588 * Computes and returns the partition managing position categories for the
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
589 * given document or <code>null</code> if this was impossible.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
590 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
591 * @param document the document
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
592 * @return the partition managing position categories or <code>null</code>
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
593 * @since 3.0
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
594 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
595 public static String[] computePartitionManagingCategories(IDocument document) {
136
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
596 if (cast(IDocumentExtension3)document ) {
134
51e6e63f930e Regex fix for casts
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
597 IDocumentExtension3 extension3= cast(IDocumentExtension3) document;
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
598 String[] partitionings= extension3.getPartitionings();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
599 if (partitionings !is null) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
600 Set categories= new HashSet();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
601 for (int i= 0; i < partitionings.length; i++) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
602 IDocumentPartitioner p= extension3.getDocumentPartitioner(partitionings[i]);
136
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
603 if (cast(IDocumentPartitionerExtension2)p ) {
134
51e6e63f930e Regex fix for casts
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
604 IDocumentPartitionerExtension2 extension2= cast(IDocumentPartitionerExtension2) p;
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
605 String[] c= extension2.getManagingPositionCategories();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
606 if (c !is null) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
607 for (int j= 0; j < c.length; j++)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
608 categories.add(c[j]);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
609 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
610 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
611 }
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
612 return stringcast(categories.toArray());
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
613 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
614 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
615 return null;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
616 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
617
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
618 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
619 * 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
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
620 * a legal line delimiter or the first one of the legal line delimiters. The default line delimiter should be used when performing document
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
621 * manipulations that span multiple lines.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
622 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
623 * @param document the document
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
624 * @return the document's default line delimiter
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
625 * @since 3.0
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
626 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
627 public static String getDefaultLineDelimiter(IDocument document) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
628
136
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
629 if (cast(IDocumentExtension4)document )
134
51e6e63f930e Regex fix for casts
Frank Benoit <benoit@tionex.de>
parents: 131
diff changeset
630 return (cast(IDocumentExtension4)document).getDefaultLineDelimiter();
136
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
631
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
632 String lineDelimiter= null;
136
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
633
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
634 try {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
635 lineDelimiter= document.getLineDelimiter(0);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
636 } catch (BadLocationException x) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
637 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
638
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
639 if (lineDelimiter !is null)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
640 return lineDelimiter;
136
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
641
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
642 String sysLineDelimiter= System.getProperty("line.separator"); //$NON-NLS-1$
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
643 String[] delimiters= document.getLegalLineDelimiters();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
644 Assert.isTrue(delimiters.length > 0);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
645 for (int i= 0; i < delimiters.length; i++) {
161
Frank Benoit <benoit@tionex.de>
parents: 153
diff changeset
646 if (.equals(delimiters[i], sysLineDelimiter)) {
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
647 lineDelimiter= sysLineDelimiter;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
648 break;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
649 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
650 }
136
6dcb0baaa031 Regex removal of throws decls, some instanceof
Frank Benoit <benoit@tionex.de>
parents: 134
diff changeset
651
129
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
652 if (lineDelimiter is null)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
653 lineDelimiter= delimiters[0];
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
654
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
655 return lineDelimiter;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
656 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
657
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
658 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
659 * Returns <code>true</code> if the two regions overlap. Returns <code>false</code> if one of the
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
660 * arguments is <code>null</code>.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
661 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
662 * @param left the left region
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
663 * @param right the right region
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
664 * @return <code>true</code> if the two regions overlap, <code>false</code> otherwise
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
665 * @since 3.0
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
666 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
667 public static bool overlaps(IRegion left, IRegion right) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
668
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
669 if (left is null || right is null)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
670 return false;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
671
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
672 int rightEnd= right.getOffset() + right.getLength();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
673 int leftEnd= left.getOffset()+ left.getLength();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
674
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
675 if (right.getLength() > 0) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
676 if (left.getLength() > 0)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
677 return left.getOffset() < rightEnd && right.getOffset() < leftEnd;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
678 return right.getOffset() <= left.getOffset() && left.getOffset() < rightEnd;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
679 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
680
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
681 if (left.getLength() > 0)
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
682 return left.getOffset() <= right.getOffset() && right.getOffset() < leftEnd;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
683
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
684 return left.getOffset() is right.getOffset();
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
685 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
686
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
687 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
688 * Returns a copy of the given string array.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
689 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
690 * @param array the string array to be copied
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
691 * @return a copy of the given string array or <code>null</code> when <code>array</code> is <code>null</code>
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
692 * @since 3.1
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
693 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
694 public static String[] copy(String[] array) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
695 if (array !is null) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
696 String[] copy= new String[array.length];
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
697 System.arraycopy(array, 0, copy, 0, array.length);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
698 return copy;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
699 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
700 return null;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
701 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
702
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
703 /**
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
704 * Returns a copy of the given integer array.
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
705 *
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
706 * @param array the integer array to be copied
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
707 * @return a copy of the given integer array or <code>null</code> when <code>array</code> is <code>null</code>
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
708 * @since 3.1
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
709 */
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
710 public static int[] copy(int[] array) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
711 if (array !is null) {
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
712 int[] copy= new int[array.length];
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
713 System.arraycopy(array, 0, copy, 0, array.length);
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
714 return copy;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
715 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
716 return null;
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
717 }
eb30df5ca28b Added JFace Text sources
Frank Benoit <benoit@tionex.de>
parents:
diff changeset
718 }