Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 312418 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/gef/editpolicies/ScrollableSelectionFeedbackEditPolicy.java (-15 / +20 lines)
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
	/**

Return to bug 312418