Mercurial > projects > dwt-addons
comparison dwtx/jface/internal/text/revisions/RevisionSelectionProvider.d @ 162:1a5b8f8129df
...
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Mon, 08 Sep 2008 00:51:37 +0200 |
parents | 75302ef3f92f |
children |
comparison
equal
deleted
inserted
replaced
161:f8d52b926852 | 162:1a5b8f8129df |
---|---|
45 * <li>when the caret is moved to a revision's line (only on post-selection)</li> | 45 * <li>when the caret is moved to a revision's line (only on post-selection)</li> |
46 * </ul> | 46 * </ul> |
47 * <p> | 47 * <p> |
48 * Calling {@link #setSelection(ISelection)} will set the current sticky revision on the ruler. | 48 * Calling {@link #setSelection(ISelection)} will set the current sticky revision on the ruler. |
49 * </p> | 49 * </p> |
50 * | 50 * |
51 * @since 3.2 | 51 * @since 3.2 |
52 */ | 52 */ |
53 public final class RevisionSelectionProvider : ISelectionProvider { | 53 public final class RevisionSelectionProvider : ISelectionProvider { |
54 | 54 |
55 /** | 55 /** |
69 if ( cast(ITextSelection)selection ) { | 69 if ( cast(ITextSelection)selection ) { |
70 ITextSelection ts= cast(ITextSelection) selection; | 70 ITextSelection ts= cast(ITextSelection) selection; |
71 int offset= ts.getOffset(); | 71 int offset= ts.getOffset(); |
72 setSelectedRevision(fPainter.getRevision(offset)); | 72 setSelectedRevision(fPainter.getRevision(offset)); |
73 } | 73 } |
74 | 74 |
75 } | 75 } |
76 | 76 |
77 public void dispose() { | 77 public void dispose() { |
78 fPostProvider.removePostSelectionChangedListener(this); | 78 fPostProvider.removePostSelectionChangedListener(this); |
79 } | 79 } |
80 } | 80 } |
81 | 81 |
82 private const RevisionPainter fPainter; | 82 private const RevisionPainter fPainter; |
83 private const ListenerList fListeners= new ListenerList(); | 83 private const ListenerList fListeners; |
84 | 84 |
85 /** | 85 /** |
86 * The text viewer once we are installed, <code>null</code> if not installed. | 86 * The text viewer once we are installed, <code>null</code> if not installed. |
87 */ | 87 */ |
88 private ITextViewer fViewer; | 88 private ITextViewer fViewer; |
89 /** | 89 /** |
101 */ | 101 */ |
102 private bool fIgnoreEvents= false; | 102 private bool fIgnoreEvents= false; |
103 | 103 |
104 /** | 104 /** |
105 * Creates a new selection provider. | 105 * Creates a new selection provider. |
106 * | 106 * |
107 * @param painter the painter that the created provider interacts with | 107 * @param painter the painter that the created provider interacts with |
108 */ | 108 */ |
109 this(RevisionPainter painter) { | 109 this(RevisionPainter painter) { |
110 fListeners= new ListenerList(); | |
110 fPainter= painter; | 111 fPainter= painter; |
111 } | 112 } |
112 | 113 |
113 /* | 114 /* |
114 * @see dwtx.jface.viewers.ISelectionProvider#addSelectionChangedListener(dwtx.jface.viewers.ISelectionChangedListener) | 115 * @see dwtx.jface.viewers.ISelectionProvider#addSelectionChangedListener(dwtx.jface.viewers.ISelectionChangedListener) |
115 */ | 116 */ |
116 public void addSelectionChangedListener(ISelectionChangedListener listener) { | 117 public void addSelectionChangedListener(ISelectionChangedListener listener) { |
117 fListeners.add(listener); | 118 fListeners.add(cast(Object)listener); |
118 } | 119 } |
119 | 120 |
120 /* | 121 /* |
121 * @see dwtx.jface.viewers.ISelectionProvider#removeSelectionChangedListener(dwtx.jface.viewers.ISelectionChangedListener) | 122 * @see dwtx.jface.viewers.ISelectionProvider#removeSelectionChangedListener(dwtx.jface.viewers.ISelectionChangedListener) |
122 */ | 123 */ |
123 public void removeSelectionChangedListener(ISelectionChangedListener listener) { | 124 public void removeSelectionChangedListener(ISelectionChangedListener listener) { |
124 fListeners.remove(listener); | 125 fListeners.remove(cast(Object)listener); |
125 } | 126 } |
126 | 127 |
127 /* | 128 /* |
128 * @see dwtx.jface.viewers.ISelectionProvider#getSelection() | 129 * @see dwtx.jface.viewers.ISelectionProvider#getSelection() |
129 */ | 130 */ |
130 public ISelection getSelection() { | 131 public ISelection getSelection() { |
131 if (fSelection is null) | 132 if (fSelection is null) |
141 return; | 142 return; |
142 if ( cast(IStructuredSelection)selection ) { | 143 if ( cast(IStructuredSelection)selection ) { |
143 Object first= (cast(IStructuredSelection) selection).getFirstElement(); | 144 Object first= (cast(IStructuredSelection) selection).getFirstElement(); |
144 if ( cast(Revision)first ) | 145 if ( cast(Revision)first ) |
145 fPainter.handleRevisionSelected(cast(Revision) first); | 146 fPainter.handleRevisionSelected(cast(Revision) first); |
146 else if ( cast(String)first ) | 147 else if ( auto str = cast(ArrayWrapperString)first ) |
147 fPainter.handleRevisionSelected(cast(String) first); | 148 fPainter.handleRevisionSelected(str.array); |
148 else if (selection.isEmpty()) | 149 else if (selection.isEmpty()) |
149 fPainter.handleRevisionSelected(cast(Revision) null); | 150 fPainter.handleRevisionSelected(cast(Revision) null); |
150 } | 151 } |
151 } | 152 } |
152 | 153 |
153 /** | 154 /** |
154 * Installs the selection provider on the viewer. | 155 * Installs the selection provider on the viewer. |
155 * | 156 * |
156 * @param viewer the viewer on which we listen to for post selection events | 157 * @param viewer the viewer on which we listen to for post selection events |
157 */ | 158 */ |
158 void install(ITextViewer viewer) { | 159 void install(ITextViewer viewer) { |
159 uninstall(); | 160 uninstall(); |
160 fViewer= viewer; | 161 fViewer= viewer; |
164 IPostSelectionProvider postProvider= cast(IPostSelectionProvider) provider; | 165 IPostSelectionProvider postProvider= cast(IPostSelectionProvider) provider; |
165 fSelectionListener= new PostSelectionListener(postProvider); | 166 fSelectionListener= new PostSelectionListener(postProvider); |
166 } | 167 } |
167 } | 168 } |
168 } | 169 } |
169 | 170 |
170 /** | 171 /** |
171 * Uninstalls the selection provider. | 172 * Uninstalls the selection provider. |
172 */ | 173 */ |
173 void uninstall() { | 174 void uninstall() { |
174 fViewer= null; | 175 fViewer= null; |
178 } | 179 } |
179 } | 180 } |
180 | 181 |
181 /** | 182 /** |
182 * Private protocol used by {@link RevisionPainter} to signal selection of a revision. | 183 * Private protocol used by {@link RevisionPainter} to signal selection of a revision. |
183 * | 184 * |
184 * @param revision the selected revision, or <code>null</code> for none | 185 * @param revision the selected revision, or <code>null</code> for none |
185 */ | 186 */ |
186 void revisionSelected(Revision revision) { | 187 void revisionSelected(Revision revision) { |
187 setSelectedRevision(revision); | 188 setSelectedRevision(revision); |
188 } | 189 } |
189 | 190 |
190 /** | 191 /** |
191 * Updates the currently selected revision and sends out an event if it changed. | 192 * Updates the currently selected revision and sends out an event if it changed. |
192 * | 193 * |
193 * @param revision the newly selected revision or <code>null</code> for none | 194 * @param revision the newly selected revision or <code>null</code> for none |
194 */ | 195 */ |
195 private void setSelectedRevision(Revision revision) { | 196 private void setSelectedRevision(Revision revision) { |
196 if (revision !is fSelection) { | 197 if (revision !is fSelection) { |
197 fSelection= revision; | 198 fSelection= revision; |