blob: 283b4497830921926d2a48522c2736348cb4f825 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2013 Oracle. All rights reserved.
* 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/.
*
* Contributors:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.jpt.jaxb.ui.internal.navigator;
import java.util.HashMap;
import org.eclipse.jpt.common.ui.internal.jface.NullItemExtendedLabelProviderFactory;
import org.eclipse.jpt.common.ui.jface.ItemExtendedLabelProvider;
import org.eclipse.jpt.common.utility.internal.ObjectTools;
import org.eclipse.jpt.jaxb.core.context.JaxbContextNode;
import org.eclipse.jpt.jaxb.core.platform.JaxbPlatform;
import org.eclipse.jpt.jaxb.ui.platform.JaxbPlatformUi;
/**
* @see JaxbNavigatorItemContentProviderFactory
*/
public class JaxbNavigatorItemLabelProviderFactory
implements ItemExtendedLabelProvider.Factory
{
/**
* Delegate factories, keyed by JAXB platform.
*/
private final HashMap<JaxbPlatform, ItemExtendedLabelProvider.Factory> delegates = new HashMap<JaxbPlatform, ItemExtendedLabelProvider.Factory>();
public JaxbNavigatorItemLabelProviderFactory() {
super();
}
public ItemExtendedLabelProvider buildProvider(Object item, ItemExtendedLabelProvider.Manager manager) {
return this.getDelegate(item).buildProvider(item, manager);
}
// ********** delegates **********
private ItemExtendedLabelProvider.Factory getDelegate(Object item) {
return (item instanceof JaxbContextNode) ?
this.getDelegate((JaxbContextNode) item) :
NullItemExtendedLabelProviderFactory.instance();
}
private ItemExtendedLabelProvider.Factory getDelegate(JaxbContextNode contextNode) {
JaxbPlatform jaxbPlatform = contextNode.getJaxbProject().getPlatform();
ItemExtendedLabelProvider.Factory delegate = this.delegates.get(jaxbPlatform);
if (delegate == null) {
delegate = this.buildDelegate(jaxbPlatform);
this.delegates.put(jaxbPlatform, delegate);
}
return delegate;
}
private ItemExtendedLabelProvider.Factory buildDelegate(JaxbPlatform jaxbPlatform) {
JaxbPlatformUi platformUI = (JaxbPlatformUi) jaxbPlatform.getAdapter(JaxbPlatformUi.class);
return (platformUI != null) ?
platformUI.getNavigatorUi().getItemLabelProviderFactory() :
NullItemExtendedLabelProviderFactory.instance();
}
@Override
public String toString() {
return ObjectTools.toString(this);
}
}