Bug 543397 - Obsolete classes: Page and Window SelectionService and
SelectionTracker

Change-Id: I45b93d060ce6a20ec04024ec332d8b39103dccb2
Signed-off-by: Rolf Theunissen <rolf.theunissen@altran.com>
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractPartSelectionTracker.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractPartSelectionTracker.java
deleted file mode 100644
index 70fec67..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractPartSelectionTracker.java
+++ /dev/null
@@ -1,167 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2016 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.core.runtime.SafeRunner;
-import org.eclipse.jface.util.SafeRunnable;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.INullSelectionListener;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * Provides per-part selection tracking for the selection service.
- */
-public abstract class AbstractPartSelectionTracker {
-    /**
-     * List of selection listeners for this tracker
-     */
-	private ListenerList<ISelectionListener> fListeners = new ListenerList<>();
-
-    /**
-     * List of post selection listeners for this tracker
-     */
-	private ListenerList<ISelectionListener> postListeners = new ListenerList<>();
-
-    /**
-     * The id of the part this tracls
-     */
-    private String fPartId;
-
-    /**
-     * Constructs a part selection tracker for the part with the given id.
-     *
-     * @param id part identifier
-     */
-    public AbstractPartSelectionTracker(String partId) {
-        setPartId(partId);
-    }
-
-    /**
-     * Adds a selection listener to this tracker
-     *
-     * @param listener the listener to add
-     */
-    public void addSelectionListener(ISelectionListener listener) {
-        fListeners.add(listener);
-    }
-
-    /**
-     * Adds a post selection listener to this tracker
-     *
-     * @param listener the listener to add
-     */
-    public void addPostSelectionListener(ISelectionListener listener) {
-        postListeners.add(listener);
-    }
-
-    /**
-     * Returns the selection from the part being tracked,
-     * or <code>null</code> if the part is closed or has no selection.
-     */
-    public abstract ISelection getSelection();
-
-    /**
-     * Removes a selection listener from this tracker.
-     *
-     * @param listener the listener to remove
-     */
-    public void removeSelectionListener(ISelectionListener listener) {
-        fListeners.remove(listener);
-    }
-
-    /**
-     * Removes a post selection listener from this tracker.
-     *
-     * @param listener the listener to remove
-     */
-    public void removePostSelectionListener(ISelectionListener listener) {
-        postListeners.remove(listener);
-    }
-
-    /**
-     * Disposes this selection tracker.  This removes all listeners currently registered.
-     */
-    public void dispose() {
-        synchronized (fListeners) {
-			for (Object listener : fListeners.getListeners()) {
-                fListeners.remove(listener);
-                postListeners.remove(listener);
-            }
-        }
-    }
-
-    /**
-     * Fires a selection event to the listeners.
-     *
-     * @param part the part or <code>null</code> if no active part
-     * @param sel the selection or <code>null</code> if no active selection
-     * @param listeners the list of listeners to notify
-     */
-    protected void fireSelection(final IWorkbenchPart part, final ISelection sel) {
-		for (final ISelectionListener l : fListeners) {
-            if ((part != null && sel != null)
-                    || l instanceof INullSelectionListener) {
-                SafeRunner.run(new SafeRunnable() {
-                    @Override
-					public void run() {
-                        l.selectionChanged(part, sel);
-                    }
-                });
-            }
-        }
-    }
-
-    /**
-     * Fires a post selection event to the listeners.
-     *
-     * @param part the part or <code>null</code> if no active part
-     * @param sel the selection or <code>null</code> if no active selection
-     * @param listeners the list of listeners to notify
-     */
-    protected void firePostSelection(final IWorkbenchPart part,
-            final ISelection sel) {
-		for (final ISelectionListener l : postListeners) {
-            if ((part != null && sel != null)
-                    || l instanceof INullSelectionListener) {
-                SafeRunner.run(new SafeRunnable() {
-                    @Override
-					public void run() {
-                        l.selectionChanged(part, sel);
-                    }
-                });
-            }
-        }
-    }
-
-    /**
-     * Sets the id of the part that this tracks.
-     *
-     * @param id view identifier
-     */
-    private void setPartId(String partId) {
-        fPartId = partId;
-    }
-
-    /**
-     * Returns the id of the part that this tracks.
-     *
-     * @return part identifier
-     */
-    protected String getPartId() {
-        return fPartId;
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractSelectionService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractSelectionService.java
deleted file mode 100644
index 26dab98..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/AbstractSelectionService.java
+++ /dev/null
@@ -1,365 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2017 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import java.util.Hashtable;
-import org.eclipse.core.runtime.ListenerList;
-import org.eclipse.jface.viewers.IPostSelectionProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.ui.INullSelectionListener;
-import org.eclipse.ui.ISelectionListener;
-import org.eclipse.ui.ISelectionService;
-import org.eclipse.ui.IWorkbenchPart;
-
-/**
- * Abstract selection service.
- */
-public abstract class AbstractSelectionService implements ISelectionService {
-
-    /**
-     * The list of selection listeners (not per-part).
-     */
-	private ListenerList<ISelectionListener> listeners = new ListenerList<>();
-
-    /**
-     * The list of post selection listeners (not per-part).
-     */
-	private ListenerList<ISelectionListener> postListeners = new ListenerList<>();
-
-    /**
-     * The currently active part.
-     */
-    private IWorkbenchPart activePart;
-
-    /**
-     * The active part's selection provider, remembered in case the part
-     * replaces its selection provider after we hooked a listener.
-     */
-    private ISelectionProvider activeProvider;
-
-    /**
-     * Map from part id (String) to per-part tracker (AbstractPartSelectionTracker).
-     */
-    private Hashtable perPartTrackers;
-
-    /**
-     * The JFace selection listener to hook on the active part's selection provider.
-     */
-    private ISelectionChangedListener selListener = event -> fireSelection(activePart, event.getSelection());
-
-    /**
-     * The JFace post selection listener to hook on the active part's selection provider.
-     */
-    private ISelectionChangedListener postSelListener = event -> firePostSelection(activePart, event.getSelection());
-
-    /**
-     * Creates a new SelectionService.
-     */
-    protected AbstractSelectionService() {
-    }
-
-    @Override
-	public void addSelectionListener(ISelectionListener l) {
-        listeners.add(l);
-    }
-
-    @Override
-	public void addSelectionListener(String partId, ISelectionListener listener) {
-        getPerPartTracker(partId).addSelectionListener(listener);
-    }
-
-    @Override
-	public void addPostSelectionListener(ISelectionListener l) {
-        postListeners.add(l);
-    }
-
-    @Override
-	public void addPostSelectionListener(String partId,
-            ISelectionListener listener) {
-        getPerPartTracker(partId).addPostSelectionListener(listener);
-    }
-
-    @Override
-	public void removeSelectionListener(ISelectionListener l) {
-        listeners.remove(l);
-    }
-
-    @Override
-	public void removePostSelectionListener(String partId,
-            ISelectionListener listener) {
-        getPerPartTracker(partId).removePostSelectionListener(listener);
-    }
-
-    @Override
-	public void removePostSelectionListener(ISelectionListener l) {
-        postListeners.remove(l);
-    }
-
-    @Override
-	public void removeSelectionListener(String partId,
-            ISelectionListener listener) {
-        getPerPartTracker(partId).removeSelectionListener(listener);
-    }
-
-    /**
-     * Fires a selection event to the given listeners.
-     *
-     * @param part the part or <code>null</code> if no active part
-     * @param sel the selection or <code>null</code> if no active selection
-     */
-    protected void fireSelection(final IWorkbenchPart part, final ISelection sel) {
-		for (final ISelectionListener l : listeners) {
-			if ((part != null && sel != null) || l instanceof INullSelectionListener) {
-                try {
-                    l.selectionChanged(part, sel);
-                } catch (Exception e) {
-                    WorkbenchPlugin.log(e);
-                }
-            }
-        }
-    }
-
-    /**
-     * Fires a selection event to the given listeners.
-     *
-     * @param part the part or <code>null</code> if no active part
-     * @param sel the selection or <code>null</code> if no active selection
-     */
-    protected void firePostSelection(final IWorkbenchPart part,
-            final ISelection sel) {
-		for (final ISelectionListener l : postListeners) {
-			if ((part != null && sel != null) || l instanceof INullSelectionListener) {
-                try {
-                    l.selectionChanged(part, sel);
-                } catch (Exception e) {
-                    WorkbenchPlugin.log(e);
-                }
-            }
-        }
-    }
-
-    /**
-     * Returns the per-part selection tracker for the given part id.
-     *
-     * @param partId part identifier
-     * @return per-part selection tracker
-     */
-    protected AbstractPartSelectionTracker getPerPartTracker(String partId) {
-        if (perPartTrackers == null) {
-            perPartTrackers = new Hashtable(4);
-        }
-        AbstractPartSelectionTracker tracker = (AbstractPartSelectionTracker) perPartTrackers
-                .get(partId);
-        if (tracker == null) {
-            tracker = createPartTracker(partId);
-            perPartTrackers.put(partId, tracker);
-        }
-        return tracker;
-    }
-
-    /**
-     * Creates a new per-part selection tracker for the given part id.
-     *
-     * @param partId part identifier
-     * @return per-part selection tracker
-     */
-    protected abstract AbstractPartSelectionTracker createPartTracker(
-            String partId);
-
-    /**
-     * Returns the selection.
-     */
-    @Override
-	public ISelection getSelection() {
-        if (activeProvider != null) {
-			return activeProvider.getSelection();
-		}
-		return null;
-    }
-
-    @Override
-	public ISelection getSelection(String partId) {
-        return getPerPartTracker(partId).getSelection();
-    }
-
-    /**
-     * Sets the current-active part (or null if none)
-     *
-     * @since 3.1
-     *
-     * @param newPart the new active part (or null if none)
-     */
-    public void setActivePart(IWorkbenchPart newPart) {
-        // Optimize.
-        if (newPart == activePart) {
-			return;
-		}
-
-        ISelectionProvider selectionProvider = null;
-
-        if (newPart != null) {
-            selectionProvider = newPart.getSite().getSelectionProvider();
-
-            if (selectionProvider == null) {
-                newPart = null;
-            }
-        }
-
-        if (newPart == activePart) {
-			return;
-		}
-
-        if (activePart != null) {
-            if (activeProvider != null) {
-                activeProvider.removeSelectionChangedListener(selListener);
-                if (activeProvider instanceof IPostSelectionProvider) {
-					((IPostSelectionProvider) activeProvider)
-                            .removePostSelectionChangedListener(postSelListener);
-				} else {
-					activeProvider
-                            .removeSelectionChangedListener(postSelListener);
-				}
-                activeProvider = null;
-            }
-            activePart = null;
-        }
-
-        activePart = newPart;
-
-        if (newPart != null) {
-            activeProvider = selectionProvider;
-            // Fire an event if there's an active provider
-            activeProvider.addSelectionChangedListener(selListener);
-            ISelection sel = activeProvider.getSelection();
-            fireSelection(newPart, sel);
-            if (activeProvider instanceof IPostSelectionProvider) {
-				((IPostSelectionProvider) activeProvider)
-                        .addPostSelectionChangedListener(postSelListener);
-			} else {
-				activeProvider.addSelectionChangedListener(postSelListener);
-			}
-            firePostSelection(newPart, sel);
-        } else {
-            fireSelection(null, null);
-            firePostSelection(null, null);
-        }
-    }
-
-//    /**
-//     * Notifies the listener that a part has been activated.
-//     */
-//    public void partActivated(IWorkbenchPart newPart) {
-//        // Optimize.
-//        if (newPart == activePart)
-//            return;
-//
-//        // Unhook selection from the old part.
-//        reset();
-//
-//        // Update active part.
-//        activePart = newPart;
-//
-//        // Hook selection on the new part.
-//        if (activePart != null) {
-//            activeProvider = activePart.getSite().getSelectionProvider();
-//            if (activeProvider != null) {
-//                // Fire an event if there's an active provider
-//                activeProvider.addSelectionChangedListener(selListener);
-//                ISelection sel = activeProvider.getSelection();
-//                fireSelection(newPart, sel);
-//                if (activeProvider instanceof IPostSelectionProvider)
-//                    ((IPostSelectionProvider) activeProvider)
-//                            .addPostSelectionChangedListener(postSelListener);
-//                else
-//                    activeProvider.addSelectionChangedListener(postSelListener);
-//                firePostSelection(newPart, sel);
-//            } else {
-//                //Reset active part. activeProvider may not be null next time this method is called.
-//                activePart = null;
-//            }
-//        }
-//        // No need to fire an event if no active provider, since this was done in reset()
-//    }
-//
-//    /**
-//     * Notifies the listener that a part has been brought to the front.
-//     */
-//    public void partBroughtToTop(IWorkbenchPart newPart) {
-//        // do nothing, the active part has not changed,
-//        // so the selection is unaffected
-//    }
-//
-//    /**
-//     * Notifies the listener that a part has been closed
-//     */
-//    public void partClosed(IWorkbenchPart part) {
-//        // Unhook selection from the part.
-//        if (part == activePart) {
-//            reset();
-//        }
-//    }
-//
-//    /**
-//     * Notifies the listener that a part has been deactivated.
-//     */
-//    public void partDeactivated(IWorkbenchPart part) {
-//        // Unhook selection from the part.
-//        if (part == activePart) {
-//            reset();
-//        }
-//    }
-//
-//    /**
-//     * Notifies the listener that a part has been opened.
-//     */
-//    public void partOpened(IWorkbenchPart part) {
-//        // Wait for activation.
-//    }
-//
-//    /**
-//     * Notifies the listener that a part has been opened.
-//     */
-//    public void partInputChanged(IWorkbenchPart part) {
-//        // 36501 - only process if part is active
-//        if (activePart == part) {
-//            reset();
-//            partActivated(part);
-//        }
-//    }
-//
-//    /**
-//     * Resets the service.  The active part and selection provider are
-//     * dereferenced.
-//     */
-//    public void reset() {
-//        if (activePart != null) {
-//            fireSelection(null, null);
-//            firePostSelection(null, null);
-//            if (activeProvider != null) {
-//                activeProvider.removeSelectionChangedListener(selListener);
-//                if (activeProvider instanceof IPostSelectionProvider)
-//                    ((IPostSelectionProvider) activeProvider)
-//                            .removePostSelectionChangedListener(postSelListener);
-//                else
-//                    activeProvider
-//                            .removeSelectionChangedListener(postSelListener);
-//                activeProvider = null;
-//            }
-//            activePart = null;
-//        }
-//    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PagePartSelectionTracker.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PagePartSelectionTracker.java
index 15c9fec..bb29902 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PagePartSelectionTracker.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PagePartSelectionTracker.java
@@ -13,19 +13,8 @@
  *******************************************************************************/
 package org.eclipse.ui.internal;
 
-import org.eclipse.jface.viewers.IPostSelectionProvider;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.ui.IPartListener;
-import org.eclipse.ui.IPerspectiveDescriptor;
-import org.eclipse.ui.IPerspectiveListener2;
 import org.eclipse.ui.IViewPart;
-import org.eclipse.ui.IViewReference;
-import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
 
 /**
  * Provides debug view selection management/notification for
@@ -34,95 +23,7 @@
  * and still provides selection notification/information even
  * when the debug view is not the active part.
  */
-public class PagePartSelectionTracker extends AbstractPartSelectionTracker
-        implements IPartListener, IPerspectiveListener2, ISelectionChangedListener {
-
-    /**
-     * The workbench page for which this is tracking selection.
-     */
-    private IWorkbenchPage fPage;
-
-    /**
-     * The part in this tracker's page, or <code>null</code> if one is not open.
-     */
-    private IWorkbenchPart fPart;
-
-    private ISelectionChangedListener selectionListener = event -> fireSelection(getPart(), event.getSelection());
-
-    private ISelectionChangedListener postSelectionListener = event -> firePostSelection(getPart(), event.getSelection());
-
-    public PagePartSelectionTracker(IWorkbenchPage page, String partId) {
-        super(partId);
-        setPage(page);
-        page.addPartListener(this);
-        page.getWorkbenchWindow().addPerspectiveListener(this);
-        String secondaryId = null;
-        int indexOfColon;
-        if ((indexOfColon = partId.indexOf(':')) != -1) {
-        	secondaryId = partId.substring(indexOfColon + 1);
-        	partId = partId.substring(0, indexOfColon);
-        }
-		IViewReference part = page.findViewReference(partId, secondaryId);
-        if (part != null && part.getView(false) != null) {
-            setPart(part.getView(false), false);
-        }
-    }
-
-    /**
-     * Disposes this selection provider - removes all listeners
-     * currently registered.
-     */
-    @Override
-	public void dispose() {
-    	IWorkbenchPage page = getPage();
-    	page.getWorkbenchWindow().removePerspectiveListener(this);
-    	page.removePartListener(this);
-        setPart(null, false);
-        setPage(null);
-        super.dispose();
-    }
-
-    /*
-     * @see IPartListener#partActivated(IWorkbenchPart)
-     */
-    @Override
-	public void partActivated(IWorkbenchPart part) {
-    }
-
-    /*
-     * @see IPartListener#partBroughtToTop(IWorkbenchPart)
-     */
-    @Override
-	public void partBroughtToTop(IWorkbenchPart part) {
-    }
-
-    /**
-     * @see IPartListener#partClosed(IWorkbenchPart)
-     */
-    @Override
-	public void partClosed(IWorkbenchPart part) {
-        if (getPartId(part).equals(getPartId())) {
-            setPart(null, true);
-        }
-    }
-
-    /*
-     * @see IPartListener#partDeactivated(IWorkbenchPart)
-     */
-    @Override
-	public void partDeactivated(IWorkbenchPart part) {
-    }
-
-    /**
-     * @see IPartListener#partOpened(IWorkbenchPart)
-     */
-    @Override
-	public void partOpened(IWorkbenchPart part) {
-        if (getPartId(part).equals(getPartId())) {
-            setPart(part, true);
-        }
-    }
-
+public class PagePartSelectionTracker {
     /**
      * Returns the id for the given part, taking into account
      * multi-view instances which may have a secondary id.
@@ -140,139 +41,4 @@
         }
         return id;
     }
-
-    /**
-     * The selection has changed in the part being tracked.
-     * Forward it to the listeners.
-     *
-     * @see ISelectionChangedListener#selectionChanged
-     */
-    @Override
-	public void selectionChanged(SelectionChangedEvent event) {
-        fireSelection(getPart(), event.getSelection());
-    }
-
-    /**
-     * Sets the page this selection provider works for
-     *
-     * @param page workbench page
-     */
-    private void setPage(IWorkbenchPage page) {
-        fPage = page;
-    }
-
-    /**
-     * Returns the page this selection provider works for
-     *
-     * @return workbench page
-     */
-    protected IWorkbenchPage getPage() {
-        return fPage;
-    }
-
-    /**
-     * Returns the part this is tracking,
-     * or <code>null</code> if it is not open
-     *
-     * @return part., or <code>null</code>
-     */
-    protected IWorkbenchPart getPart() {
-        return fPart;
-    }
-
-    /*
-     * @see AbstractPartSelectionTracker#getSelection()
-     */
-    @Override
-	public ISelection getSelection() {
-        IWorkbenchPart part = getPart();
-        if (part != null) {
-            ISelectionProvider sp = part.getSite().getSelectionProvider();
-            if (sp != null) {
-                return sp.getSelection();
-            }
-        }
-        return null;
-    }
-
-    /**
-     * @see AbstractDebugSelectionProvider#getSelectionProvider()
-     */
-    protected ISelectionProvider getSelectionProvider() {
-        IWorkbenchPart part = getPart();
-        if (part != null) {
-            return part.getSite().getSelectionProvider();
-        }
-        return null;
-    }
-
-    /**
-     * Sets the part for this selection tracker.
-     *
-     * @param part the part
-     * @param notify whether to send notification that the selection has changed.
-     */
-    private void setPart(IWorkbenchPart part, boolean notify) {
-        if (fPart != null) {
-            // remove myself as a listener from the existing part
-            ISelectionProvider sp = fPart.getSite().getSelectionProvider();
-            if (sp != null) {
-                sp.removeSelectionChangedListener(selectionListener);
-                if (sp instanceof IPostSelectionProvider) {
-					((IPostSelectionProvider) sp)
-                            .removePostSelectionChangedListener(postSelectionListener);
-				} else {
-					sp.removeSelectionChangedListener(postSelectionListener);
-				}
-            }
-        }
-        fPart = part;
-        ISelection sel = null;
-        if (part != null) {
-            ISelectionProvider sp = part.getSite().getSelectionProvider();
-            if (sp != null) {
-                sp.addSelectionChangedListener(selectionListener);
-                if (sp instanceof IPostSelectionProvider) {
-					((IPostSelectionProvider) sp)
-                            .addPostSelectionChangedListener(postSelectionListener);
-				} else {
-					sp.addSelectionChangedListener(postSelectionListener);
-				}
-                if (notify) {
-                    // get the selection to send below
-                    sel = sp.getSelection();
-                }
-            }
-        }
-        if (notify) {
-            fireSelection(part, sel);
-            firePostSelection(part, sel);
-        }
-    }
-
-	@Override
-	public void perspectiveActivated(IWorkbenchPage page, IPerspectiveDescriptor perspective) {
-		// nothing to do
-	}
-
-	@Override
-	public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective, String changeId) {
-		// nothing to do
-	}
-
-	@Override
-	public void perspectiveChanged(IWorkbenchPage page, IPerspectiveDescriptor perspective,
-			IWorkbenchPartReference partRef, String changeId) {
-		if (partRef == null)
-			return;
-		IWorkbenchPart part = partRef.getPart(false);
-		if (part == null)
-			return;
-		if (IWorkbenchPage.CHANGE_VIEW_SHOW.equals(changeId)) {
-			if (getPart() != null) // quick check first, plus avoids double setting
-				return;
-	        if (getPartId(part).equals(getPartId()))
-	            setPart(part, true);
-		}
-	}
 }
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageSelectionService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageSelectionService.java
deleted file mode 100644
index 0a8ddc9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PageSelectionService.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IWorkbenchPage;
-
-/**
- * The selection service for a page.
- */
-/* package */
-class PageSelectionService extends AbstractSelectionService {
-
-    private IWorkbenchPage page;
-
-    /**
-     * Creates a new selection service for a specific workbench page.
-     */
-    public PageSelectionService(IWorkbenchPage page) {
-        setPage(page);
-    }
-
-    /**
-     * Sets the page.
-     */
-    private void setPage(IWorkbenchPage page) {
-        this.page = page;
-    }
-
-    /**
-     * Returns the page.
-     */
-    protected IWorkbenchPage getPage() {
-        return page;
-    }
-
-    /*
-     * @see AbstractSelectionService#createPartTracker(String)
-     */
-    @Override
-	protected AbstractPartSelectionTracker createPartTracker(String partId) {
-        return new PagePartSelectionTracker(getPage(), partId);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowPartSelectionTracker.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowPartSelectionTracker.java
deleted file mode 100644
index 14f21b9..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowPartSelectionTracker.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2015 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.ui.INullSelectionListener;
-import org.eclipse.ui.IPageListener;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * Provides part selection tracking for a part with a specific id
- * in all pages of a specific workbench window. This tracker shields
- * clients from a part opening and closing, and still provides selection
- * notification/information even when the part is not active.
- */
-public class WindowPartSelectionTracker extends AbstractPartSelectionTracker
-        implements IPageListener {
-    /**
-     * The window this selection tracker is working in
-     */
-    private IWorkbenchWindow fWindow;
-
-    /**
-     * Part selection listener.
-     */
-    private final INullSelectionListener selListener = (part, selection) -> fireSelection(part, selection);
-
-    /**
-     * Part post selection listener
-     */
-    private final INullSelectionListener postSelListener = (part, selection) -> firePostSelection(part, selection);
-
-    /**
-     * Constructs a new selection tracker for the given window and part id.
-     *
-     * @param window workbench window
-     * @param partId part identifier
-     */
-    public WindowPartSelectionTracker(IWorkbenchWindow window, String partId) {
-        super(partId);
-        setWindow(window);
-        window.addPageListener(this);
-		for (IWorkbenchPage page : window.getPages()) {
-            pageOpened(page);
-        }
-    }
-
-    /*
-     * @see IPageListener#pageActivated(IWorkbenchPage)
-     */
-    @Override
-	public void pageActivated(IWorkbenchPage page) {
-    }
-
-    /*
-     * @see IPageListener#pageClosed(IWorkbenchPage)
-     */
-    @Override
-	public void pageClosed(IWorkbenchPage page) {
-        page.removeSelectionListener(getPartId(), selListener);
-        page.removePostSelectionListener(getPartId(), postSelListener);
-    }
-
-    /*
-     * @see IPageListener#pageOpened(IWorkbenchPage)
-     */
-    @Override
-	public void pageOpened(IWorkbenchPage page) {
-        page.addSelectionListener(getPartId(), selListener);
-        page.addPostSelectionListener(getPartId(), postSelListener);
-    }
-
-    /**
-     * Sets the window this tracker is working in.
-     *
-     * @param window workbench window
-     */
-    private void setWindow(IWorkbenchWindow window) {
-        fWindow = window;
-    }
-
-    /**
-     * Returns the window this tracker is working in.
-     *
-     * @return workbench window
-     */
-    protected IWorkbenchWindow getWindow() {
-        return fWindow;
-    }
-
-    /**
-     * @see AbstractPartSelectionTracker#dispose()
-     */
-    @Override
-	public void dispose() {
-        super.dispose();
-        fWindow = null;
-    }
-
-    /*
-     * @see AbstractPartSelectionTracker#getSelection()
-     */
-    @Override
-	public ISelection getSelection() {
-        IWorkbenchPage page = getWindow().getActivePage();
-        if (page != null) {
-            return page.getSelection(getPartId());
-        }
-        return null;
-    }
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowSelectionService.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowSelectionService.java
deleted file mode 100644
index 02504d1..0000000
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WindowSelectionService.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2014 IBM Corporation and others.
- *
- * This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License 2.0
- * which accompanies this distribution, and is available at
- * https://www.eclipse.org/legal/epl-2.0/
- *
- * SPDX-License-Identifier: EPL-2.0
- *
- * Contributors:
- *     IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.ui.internal;
-
-import org.eclipse.ui.IWorkbenchWindow;
-
-/**
- * The selection service for a window.
- */
-/* package */
-class WindowSelectionService extends AbstractSelectionService {
-
-    /**
-     * The window.
-     */
-    private IWorkbenchWindow window;
-
-    /**
-     * Creates a new selection service for the given window.
-     */
-    public WindowSelectionService(IWorkbenchWindow window) {
-        setWindow(window);
-    }
-
-    /**
-     * Sets the window.
-     */
-    private void setWindow(IWorkbenchWindow window) {
-        this.window = window;
-    }
-
-    /**
-     * Returns the window.
-     */
-    protected IWorkbenchWindow getWindow() {
-        return window;
-    }
-
-    /*
-     * @see AbstractSelectionService#createPartTracker(String)
-     */
-    @Override
-	protected AbstractPartSelectionTracker createPartTracker(String partId) {
-        return new WindowPartSelectionTracker(getWindow(), partId);
-    }
-
-}
diff --git a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchSupportFactory.java b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchSupportFactory.java
index 623bb87..0472b8f 100644
--- a/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchSupportFactory.java
+++ b/bundles/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/WorkbenchSupportFactory.java
@@ -78,10 +78,6 @@
 		}
 
 		if (ISelectionService.class.equals(serviceInterface)) {
-			if (parent instanceof WindowSelectionService && window != null
-					&& window.getActivePage() != null) {
-				return new SlaveSelectionService(window.getActivePage());
-			}
 			return new SlaveSelectionService((ISelectionService) parent);
 		}