/*******************************************************************************
* Copyright (c) 2011, 2014 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.tcf.te.ui.views.listeners;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.tcf.te.ui.views.interfaces.IUIConstants;
import org.eclipse.ui.IPartListener2;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchPartReference;
import org.eclipse.ui.contexts.IContextActivation;
import org.eclipse.ui.contexts.IContextService;
/**
* The part listener implementation. Takes care of
* activation and deactivation of key binding contexts.
*/
public class WorkbenchPartListener implements IPartListener2 {
// The context activations per workbench part reference
private final Map<IWorkbenchPartReference, IContextActivation> activations = new HashMap<IWorkbenchPartReference, IContextActivation>();
/* (non-Javadoc)
* @see org.eclipse.ui.IPartListener2#partBroughtToTop(org.eclipse.ui.IWorkbenchPartReference)
*/
@Override
public void partBroughtToTop(IWorkbenchPartReference partRef) {
}
/* (non-Javadoc)
* @see org.eclipse.ui.IPartListener2#partOpened(org.eclipse.ui.IWorkbenchPartReference)
*/
@Override
public void partOpened(IWorkbenchPartReference partRef) {
}
/* (non-Javadoc)
* @see org.eclipse.ui.IPartListener2#partClosed(org.eclipse.ui.IWorkbenchPartReference)
*/
@Override
public void partClosed(IWorkbenchPartReference partRef) {
}
/* (non-Javadoc)
* @see org.eclipse.ui.IPartListener2#partVisible(org.eclipse.ui.IWorkbenchPartReference)
*/
@Override
public void partVisible(IWorkbenchPartReference partRef) {
}
/* (non-Javadoc)
* @see org.eclipse.ui.IPartListener2#partHidden(org.eclipse.ui.IWorkbenchPartReference)
*/
@Override
public void partHidden(IWorkbenchPartReference partRef) {
}
/* (non-Javadoc)
* @see org.eclipse.ui.IPartListener2#partActivated(org.eclipse.ui.IWorkbenchPartReference)
*/
@Override
public void partActivated(IWorkbenchPartReference partRef) {
if (IUIConstants.ID_EXPLORER.equals(partRef.getId()) ||
IUIConstants.ID_EDITOR.equals(partRef.getId())) {
IWorkbenchPart part = partRef.getPart(false);
if (part != null && part.getSite() != null) {
IContextService service = (IContextService)part.getSite().getService(IContextService.class);
if (service != null) {
IContextActivation activation = service.activateContext(partRef.getId());
if (activation != null) {
activations.put(partRef, activation);
} else {
activations.remove(partRef);
}
}
}
}
}
/* (non-Javadoc)
* @see org.eclipse.ui.IPartListener2#partDeactivated(org.eclipse.ui.IWorkbenchPartReference)
*/
@Override
public void partDeactivated(IWorkbenchPartReference partRef) {
if (IUIConstants.ID_EXPLORER.equals(partRef.getId()) ||
IUIConstants.ID_EDITOR.equals(partRef.getId())) {
IWorkbenchPart part = partRef.getPart(false);
if (part != null && part.getSite() != null) {
IContextService service = (IContextService)part.getSite().getService(IContextService.class);
if (service != null) {
IContextActivation activation = activations.remove(partRef);
if (activation != null) {
service.deactivateContext(activation);
}
}
}
}
}
/* (non-Javadoc)
* @see org.eclipse.ui.IPartListener2#partInputChanged(org.eclipse.ui.IWorkbenchPartReference)
*/
@Override
public void partInputChanged(IWorkbenchPartReference partRef) {
}
}