/*******************************************************************************
* Copyright (c) 2011 Wind River Systems, Inc. and others. All rights reserved.
* This program and the accompanying materials are made available under the terms
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Wind River Systems - initial API and implementation
*******************************************************************************/
package org.eclipse.tm.te.ui.views.listeners;
import org.eclipse.ui.IPartService;
import org.eclipse.ui.IWindowListener;
import org.eclipse.ui.IWorkbenchWindow;
/**
* The window listener implementation. Takes care of the
* management of the global listeners per workbench window.
*/
public class WorkbenchWindowListener implements IWindowListener {
// The global part listener instance
private final WorkbenchPartListener partListener = new WorkbenchPartListener();
/* (non-Javadoc)
* @see org.eclipse.ui.IWindowListener#windowActivated(org.eclipse.ui.IWorkbenchWindow)
*/
@Override
public void windowActivated(IWorkbenchWindow window) {
}
/* (non-Javadoc)
* @see org.eclipse.ui.IWindowListener#windowDeactivated(org.eclipse.ui.IWorkbenchWindow)
*/
@Override
public void windowDeactivated(IWorkbenchWindow window) {
}
/* (non-Javadoc)
* @see org.eclipse.ui.IWindowListener#windowClosed(org.eclipse.ui.IWorkbenchWindow)
*/
@Override
public void windowClosed(IWorkbenchWindow window) {
// On close, remove all global listeners from the window
if (window != null && window.getPartService() != null) {
window.getPartService().removePartListener(partListener);
}
}
/* (non-Javadoc)
* @see org.eclipse.ui.IWindowListener#windowOpened(org.eclipse.ui.IWorkbenchWindow)
*/
@Override
public void windowOpened(IWorkbenchWindow window) {
// On open, register all global listener to the window
if (window != null && window.getPartService() != null) {
// Get the part service
IPartService service = window.getPartService();
// Unregister the part listener, just in case
service.removePartListener(partListener);
// Register the part listener
service.addPartListener(partListener);
// Signal the active part to the part listener after registration
partListener.partActivated(window.getActivePage().getActivePartReference());
}
}
}