All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.eclipse.ui.internal.PartService Maven / Gradle / Ivy

Go to download

This plug-in contains the bulk of the Workbench implementation, and depends on JFace, SWT, and Core Runtime. It cannot be used independently from org.eclipse.ui. Workbench client plug-ins should not depend directly on this plug-in.

The newest version!
/*******************************************************************************
 * Copyright (c) 2005, 2006 IBM Corporation 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:
 *     IBM Corporation - initial API and implementation
 *******************************************************************************/
package org.eclipse.ui.internal;

import org.eclipse.ui.IPartListener;
import org.eclipse.ui.IPartListener2;
import org.eclipse.ui.IPartService;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchPartReference;
import org.eclipse.ui.internal.misc.UIListenerLogging;

public class PartService implements IPartService {
    private PartListenerList listeners = new PartListenerList();

    private PartListenerList2 listeners2 = new PartListenerList2();
    private IWorkbenchPartReference activePart = null;
    
    private String debugListenersKey;
    private String debugListeners2Key;
    
    public PartService(String debugListenersKey, String debugListeners2Key) {
        this.debugListeners2Key = debugListeners2Key;
        this.debugListenersKey = debugListenersKey;
    }
    
    /*
     * (non-Javadoc)
     * Method declared on IPartService
     */
    public void addPartListener(IPartListener l) {
        listeners.addPartListener(l);
    }

    /*
     * (non-Javadoc)
     * Method declared on IPartService
     */
    public void addPartListener(IPartListener2 l) {
        listeners2.addPartListener(l);
    }

    /*
     * (non-Javadoc)
     * Method declared on IPartService
     */
    public void removePartListener(IPartListener l) {
        listeners.removePartListener(l);
    }

    /*
     * (non-Javadoc)
     * Method declared on IPartService
     */
    public void removePartListener(IPartListener2 l) {
        listeners2.removePartListener(l);
    }

    /**
     * @param ref
     */
    private void firePartActivated(IWorkbenchPartReference ref) {
        IWorkbenchPart part = ref.getPart(false);
        if(part != null) {
            UIListenerLogging.logPartListenerEvent(debugListenersKey, this, part, UIListenerLogging.PE_ACTIVATED);
            listeners.firePartActivated(part);
        }
        
        UIListenerLogging.logPartListener2Event(debugListeners2Key, this, ref, UIListenerLogging.PE2_ACTIVATED);
        listeners2.firePartActivated(ref);
    }
    
    /**
     * @param ref
     */
    public void firePartBroughtToTop(IWorkbenchPartReference ref) {
        IWorkbenchPart part = ref.getPart(false);
        if(part != null) {
            UIListenerLogging.logPartListenerEvent(debugListenersKey, this, part, UIListenerLogging.PE_PART_BROUGHT_TO_TOP);
            listeners.firePartBroughtToTop(part);
        }
        UIListenerLogging.logPartListener2Event(debugListeners2Key, this, ref, UIListenerLogging.PE2_PART_BROUGHT_TO_TOP);
        listeners2.firePartBroughtToTop(ref);
    }
    
    /**
     * @param ref
     */
    public void firePartClosed(IWorkbenchPartReference ref) {
        IWorkbenchPart part = ref.getPart(false);
        if(part != null) {
            UIListenerLogging.logPartListenerEvent(debugListenersKey, this, part, UIListenerLogging.PE_PART_CLOSED);
            listeners.firePartClosed(part);
        }
        UIListenerLogging.logPartListener2Event(debugListeners2Key, this, ref, UIListenerLogging.PE2_PART_CLOSED);
        listeners2.firePartClosed(ref);
    }
    
    /**
     * @param ref
     */
    private void firePartDeactivated(IWorkbenchPartReference ref) {
        IWorkbenchPart part = ref.getPart(false);
        if(part != null) {
            UIListenerLogging.logPartListenerEvent(debugListenersKey, this, part, UIListenerLogging.PE_PART_DEACTIVATED);
            listeners.firePartDeactivated(part);
        }
        UIListenerLogging.logPartListener2Event(debugListeners2Key, this, ref, UIListenerLogging.PE2_PART_DEACTIVATED);
        listeners2.firePartDeactivated(ref);
    }
    
    public void firePartVisible(IWorkbenchPartReference ref) {
        UIListenerLogging.logPartListener2Event(debugListeners2Key, this, ref, UIListenerLogging.PE2_PART_VISIBLE);
        listeners2.firePartVisible(ref);
    }

    public void firePartHidden(IWorkbenchPartReference ref) {
        UIListenerLogging.logPartListener2Event(debugListeners2Key, this, ref, UIListenerLogging.PE2_PART_HIDDEN);
        listeners2.firePartHidden(ref);
    }
    
    public void firePartInputChanged(IWorkbenchPartReference ref) {
        UIListenerLogging.logPartListener2Event(debugListeners2Key, this, ref, UIListenerLogging.PE2_PART_INPUT_CHANGED);
        listeners2.firePartInputChanged(ref);
    }
    
    /**
     * @param ref
     */
    public void firePartOpened(IWorkbenchPartReference ref) {  
        IWorkbenchPart part = ref.getPart(false);
        if(part != null) {
            UIListenerLogging.logPartListenerEvent(debugListenersKey, this, part, UIListenerLogging.PE_PART_OPENED);
            listeners.firePartOpened(part);
        }
        UIListenerLogging.logPartListener2Event(debugListeners2Key, this, ref, UIListenerLogging.PE2_PART_OPENED);
        listeners2.firePartOpened(ref);
     }
    
    
    public IWorkbenchPart getActivePart() {
        return activePart == null ? null : activePart.getPart(false);
    }

    public IWorkbenchPartReference getActivePartReference() {
        return activePart;
    }

    public void setActivePart(IWorkbenchPartReference ref) {
        IWorkbenchPartReference oldRef = activePart;
        
        // Filter out redundant activation events
        if (oldRef == ref) {
            return;
        }
        
        if (oldRef != null) {
            firePartDeactivated(oldRef);
        }
        
        activePart = ref;
        
        if (ref != null) {
            firePartActivated(ref);
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy