|
Lines 47-53
Link Here
|
| 47 |
* |
47 |
* |
| 48 |
* @author Alexander Nyssen |
48 |
* @author Alexander Nyssen |
| 49 |
* @author Philip Ritzkopf |
49 |
* @author Philip Ritzkopf |
| 50 |
* |
50 |
* |
| 51 |
* @since 3.6 |
51 |
* @since 3.6 |
| 52 |
*/ |
52 |
*/ |
| 53 |
public class ScrollableSelectionFeedbackEditPolicy extends SelectionEditPolicy { |
53 |
public class ScrollableSelectionFeedbackEditPolicy extends SelectionEditPolicy { |
|
Lines 100-117
Link Here
|
| 100 |
*/ |
100 |
*/ |
| 101 |
public void activate() { |
101 |
public void activate() { |
| 102 |
super.activate(); |
102 |
super.activate(); |
| 103 |
// register all necessary listeners |
103 |
// register listeners to all viewports in the host figure's path; |
|
|
104 |
// listeners |
| 105 |
// to the host figure itself will be registered within showFeedback() |
| 106 |
// and |
| 107 |
// unregistered within hideFeedback() |
| 104 |
for (Iterator iterator = ViewportUtilities.getViewportsPath( |
108 |
for (Iterator iterator = ViewportUtilities.getViewportsPath( |
| 105 |
getHostFigureViewport(), |
109 |
getHostFigureViewport(), |
| 106 |
ViewportUtilities.getRootViewport(getHostFigure())).iterator(); iterator |
110 |
ViewportUtilities.getRootViewport(getHostFigure())).iterator(); iterator |
| 107 |
.hasNext();) { |
111 |
.hasNext();) { |
| 108 |
Viewport viewport = (Viewport) iterator.next(); |
112 |
Viewport viewport = (Viewport) iterator.next(); |
| 109 |
viewport |
113 |
viewport.addPropertyChangeListener(viewportViewLocationChangeListener); |
| 110 |
.addPropertyChangeListener(viewportViewLocationChangeListener); |
|
|
| 111 |
|
| 112 |
} |
114 |
} |
| 113 |
getHostFigure().addLayoutListener(layoutListener); |
|
|
| 114 |
getHostFigure().addFigureListener(figureListener); |
| 115 |
} |
115 |
} |
| 116 |
|
116 |
|
| 117 |
/** |
117 |
/** |
|
Lines 179-185
Link Here
|
| 179 |
* Creates the primary layer feedback figures. |
179 |
* Creates the primary layer feedback figures. |
| 180 |
*/ |
180 |
*/ |
| 181 |
protected void createNodeFeedbackFigures() { |
181 |
protected void createNodeFeedbackFigures() { |
| 182 |
|
|
|
| 183 |
// create ghost feedback for node children |
182 |
// create ghost feedback for node children |
| 184 |
for (Iterator iterator = getHost().getChildren().iterator(); iterator |
183 |
for (Iterator iterator = getHost().getChildren().iterator(); iterator |
| 185 |
.hasNext();) { |
184 |
.hasNext();) { |
|
Lines 194-209
Link Here
|
| 194 |
* @see org.eclipse.gef.editpolicies.SelectionEditPolicy#deactivate() |
193 |
* @see org.eclipse.gef.editpolicies.SelectionEditPolicy#deactivate() |
| 195 |
*/ |
194 |
*/ |
| 196 |
public void deactivate() { |
195 |
public void deactivate() { |
| 197 |
// remove all registered listeners |
196 |
// remove viewport listeners; listener to host figure, which were |
| 198 |
getHostFigure().removeFigureListener(figureListener); |
197 |
// registered during showSelection() will be unregistered during |
| 199 |
getHostFigure().removeLayoutListener(layoutListener); |
198 |
// hideSelection(), so they do not have to be unregistered here |
| 200 |
for (Iterator iterator = ViewportUtilities.getViewportsPath( |
199 |
for (Iterator iterator = ViewportUtilities.getViewportsPath( |
| 201 |
getHostFigureViewport(), |
200 |
getHostFigureViewport(), |
| 202 |
ViewportUtilities.getRootViewport(getHostFigure())).iterator(); iterator |
201 |
ViewportUtilities.getRootViewport(getHostFigure())).iterator(); iterator |
| 203 |
.hasNext();) { |
202 |
.hasNext();) { |
| 204 |
Viewport viewport = (Viewport) iterator.next(); |
203 |
Viewport viewport = (Viewport) iterator.next(); |
| 205 |
viewport |
204 |
viewport.removePropertyChangeListener(viewportViewLocationChangeListener); |
| 206 |
.removePropertyChangeListener(viewportViewLocationChangeListener); |
|
|
| 207 |
|
205 |
|
| 208 |
} |
206 |
} |
| 209 |
super.deactivate(); |
207 |
super.deactivate(); |
|
Lines 252-257
Link Here
|
| 252 |
* @see org.eclipse.gef.editpolicies.SelectionEditPolicy#hideSelection() |
250 |
* @see org.eclipse.gef.editpolicies.SelectionEditPolicy#hideSelection() |
| 253 |
*/ |
251 |
*/ |
| 254 |
protected void hideSelection() { |
252 |
protected void hideSelection() { |
|
|
253 |
// remove figure and layout listeners |
| 254 |
getHostFigure().removeLayoutListener(layoutListener); |
| 255 |
getHostFigure().removeFigureListener(figureListener); |
| 256 |
// hide any still active feedback |
| 255 |
hideFeedback(); |
257 |
hideFeedback(); |
| 256 |
} |
258 |
} |
| 257 |
|
259 |
|
|
Lines 298-305
Link Here
|
| 298 |
List connectionLayerChildren = getLayer(LayerConstants.CONNECTION_LAYER) |
300 |
List connectionLayerChildren = getLayer(LayerConstants.CONNECTION_LAYER) |
| 299 |
.getChildren(); |
301 |
.getChildren(); |
| 300 |
for (Iterator iterator = connectionLayerChildren.iterator(); iterator |
302 |
for (Iterator iterator = connectionLayerChildren.iterator(); iterator |
| 301 |
.hasNext() |
303 |
.hasNext() && !connectionLayerChildExceedsClientArea;) { |
| 302 |
&& !connectionLayerChildExceedsClientArea;) { |
|
|
| 303 |
IFigure connectionLayerChild = (IFigure) iterator.next(); |
304 |
IFigure connectionLayerChild = (IFigure) iterator.next(); |
| 304 |
connectionLayerChildExceedsClientArea = (ViewportUtilities |
305 |
connectionLayerChildExceedsClientArea = (ViewportUtilities |
| 305 |
.getNearestEnclosingViewport(connectionLayerChild) == ((IScrollableFigure) getHostFigure()) |
306 |
.getNearestEnclosingViewport(connectionLayerChild) == ((IScrollableFigure) getHostFigure()) |
|
Lines 325-330
Link Here
|
| 325 |
// showing the feedback. |
326 |
// showing the feedback. |
| 326 |
getHost().getViewer().reveal(getHost()); |
327 |
getHost().getViewer().reveal(getHost()); |
| 327 |
updateFeedback(); |
328 |
updateFeedback(); |
|
|
329 |
// register figure and layout listeners needed to update the feedback |
| 330 |
// figures upon changes to the host figure. |
| 331 |
getHostFigure().addLayoutListener(layoutListener); |
| 332 |
getHostFigure().addFigureListener(figureListener); |
| 328 |
} |
333 |
} |
| 329 |
|
334 |
|
| 330 |
/** |
335 |
/** |