blob: 615a7bac2605acde996805d9ed2b2da09686efe9 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2007, 2010 Oracle.
* 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:
* Oracle - initial API and implementation
*******************************************************************************/
package org.eclipse.jpt.jaxb.ui.internal.navigator;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.ui.IMemento;
import org.eclipse.ui.navigator.ICommonContentExtensionSite;
import org.eclipse.ui.navigator.ICommonLabelProvider;
/**
* This extension of navigator label provider delegates to the platform UI
* (see the org.eclipse.jpt.ui.jpaPlatform extension point) for navigator labels.
*
* This label provider provides a label for the root "JPA Content" node provided
* by the content provider (see {@link JaxbNavigatorContentProvider}) and delegates
* to the label provider returned by the platform UI implementation for labels
* for children of the "JPA Content" node (or for any other sub-node).
*/
public class JaxbNavigatorLabelProvider
extends LabelProvider
implements ICommonLabelProvider {
private JaxbNavigatorContentAndLabelProvider delegate;
public JaxbNavigatorLabelProvider() {
super();
}
public JaxbNavigatorContentAndLabelProvider getDelegate() {
return delegate;
}
// **************** IBaseLabelProvider implementation **********************
@Override
public void addListener(ILabelProviderListener listener) {
if (delegate != null) {
delegate.addListener(listener);
}
super.addListener(listener);
}
@Override
public void removeListener(ILabelProviderListener listener) {
super.removeListener(listener);
if (delegate != null) {
delegate.removeListener(listener);
}
}
@Override
public boolean isLabelProperty(Object element, String property) {
if (delegate != null) {
return delegate.isLabelProperty(element, property);
}
return super.isLabelProperty(element, property);
}
@Override
public void dispose() {
if (delegate != null) {
delegate.dispose();
}
super.dispose();
}
// **************** ILabelProvider implementation **************************
@Override
public Image getImage(Object element) {
if (delegate != null) {
return delegate.getImage(element);
}
return super.getImage(element);
}
@Override
public String getText(Object element) {
if (delegate != null) {
return delegate.getText(element);
}
return super.getText(element);
}
// **************** IDescriptionProvider implementation ********************
public String getDescription(Object element) {
if (delegate != null) {
return delegate.getDescription(element);
}
return super.getText(element);
}
// **************** IMementoAware implementation ***************************
public void saveState(IMemento memento) {
// no op
}
public void restoreState(IMemento memento) {
// no op
}
// **************** ICommonLabelProvider implementation ********************
public void init(ICommonContentExtensionSite config) {
if (delegate == null) {
JaxbNavigatorContentProvider contentProvider = (JaxbNavigatorContentProvider) config.getExtension().getContentProvider();
if (contentProvider != null && contentProvider.getDelegate() != null) {
delegate = contentProvider.getDelegate();
}
else {
delegate = new JaxbNavigatorContentAndLabelProvider();
}
}
}
}