blob: 6382054f07a670196bb609c5f5934c5657f4d9d3 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2005 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.jst.j2ee.common.internal.provider;
import java.util.ArrayList;
import java.util.Collection;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.Notifier;
import org.eclipse.emf.edit.provider.ChangeNotifier;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.Disposable;
import org.eclipse.emf.edit.provider.IChangeNotifier;
import org.eclipse.emf.edit.provider.IDisposable;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
import org.eclipse.emf.edit.provider.IItemPropertySource;
import org.eclipse.emf.edit.provider.INotifyChangedListener;
import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITableItemLabelProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
import org.eclipse.jst.j2ee.common.internal.util.CommonAdapterFactory;
/**
* This is the factory that is used to provide the interfaces needed to support
* {@link org.eclipse.jface.viewer.ContentViewer}s. The adapters generated by this factory convert
* MOF adapter notificiations into {@link org.eclipse.jface.DomainEvent}s. The adapters also
* support property sheets, see {@link com.ibm.itp.ui.api.propertysheet}. Note that most of the
* adapters are shared among multiple instances.
*/
public class CommonItemProviderAdapterFactory extends CommonAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
/**
* This keeps track of the root adapter factory that delegates to this adapter factory.
*/
protected ComposedAdapterFactory parentAdapterFactory;
/**
* This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
protected IChangeNotifier changeNotifier = new ChangeNotifier();
/**
* This keeps track of all the supported types checked by
* {@link #isFactoryForType isFactoryForType}.
*/
protected Collection supportedTypes = new ArrayList();
/**
* This keeps track of the one adapter used for all {@link com.ibm.etools.common.SecurityRole}
* instances.
*/
protected SecurityRoleItemProvider securityRoleItemProvider;
/**
* This keeps track of the one adapter used for all {@link com.ibm.etools.common.EjbRef}
* instances.
*/
protected EjbRefItemProvider ejbRefItemProvider;
/**
* This keeps track of the one adapter used for all {@link com.ibm.etools.common.ResourceRef}
* instances.
*/
protected ResourceRefItemProvider resourceRefItemProvider;
/**
* This keeps track of the one adapter used for all {@link com.ibm.etools.common.ResourceEnvRef}
* instances.
*/
protected ResourceEnvRefItemProvider resourceEnvRefItemProvider;
/**
* This keeps track of the one adapter used for all {@link com.ibm.etools.common.EnvEntry}
* instances.
*/
//ItemProviders
protected EnvEntryItemProvider envEntryItemProvider;
protected SecurityIdentityItemProvider securityIdentityItemProvider;
protected RunAsSpecifiedIdentityItemProvider runAsSpecifiedIdentityItemProvider;
protected IdentityItemProvider identityItemProvider;
protected UseCallerIdentityItemProvider useCallerIdentityItemProvider;
/**
* This keeps track of the one adapter used for all
* {@link com.ibm.etools.common.SecurityRoleRef}instances.
*/
protected SecurityRoleRefItemProvider securityRoleRefItemProvider;
protected Disposable disposable = new Disposable();
/**
* This constructs an instance.
*/
public CommonItemProviderAdapterFactory() {
supportedTypes.add(IStructuredItemContentProvider.class);
supportedTypes.add(ITreeItemContentProvider.class);
supportedTypes.add(IItemPropertySource.class);
supportedTypes.add(IEditingDomainItemProvider.class);
supportedTypes.add(IItemLabelProvider.class);
supportedTypes.add(ITableItemLabelProvider.class);
}
@Override
public Adapter adapt(Notifier target, Object adapterKey) {
return super.adapt(target, this);
}
@Override
public Object adapt(Object object, Object type) {
if (isFactoryForType(type)) {
Object adapter = super.adapt(object, type);
if (!(type instanceof Class) || (((Class) type).isInstance(adapter))) {
return adapter;
}
}
return null;
}
@Override
public Adapter adaptNew(Notifier target, Object adapterType) {
Adapter adapter = super.adaptNew(target, adapterType);
disposable.add(adapter);
return adapter;
}
/**
* This adds a listener. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void addListener(INotifyChangedListener notifyChangedListener) {
changeNotifier.addListener(notifyChangedListener);
}
/**
* This creates an adapter for a {@link com.ibm.etools.common.EjbRef}.
*/
@Override
public Adapter createEjbRefAdapter() {
if (ejbRefItemProvider == null) {
ejbRefItemProvider = new EjbRefItemProvider(this);
}
return ejbRefItemProvider;
}
/**
* This creates an adapter for a {@link com.ibm.etools.common.UseCallerIdentity}.
*/
@Override
public Adapter createUseCallerIdentityAdapter() {
if (useCallerIdentityItemProvider == null) {
useCallerIdentityItemProvider = new UseCallerIdentityItemProvider(this);
}
return useCallerIdentityItemProvider;
}
/**
* This keeps track of the one adapter used for all
* {@link org.eclipse.jst.j2ee.internal.internal.common.Description}instances. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
protected DescriptionItemProvider descriptionItemProvider;
/**
* This creates an adapter for a
* {@link org.eclipse.jst.j2ee.internal.internal.common.Description}. <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public Adapter createDescriptionAdapter() {
if (descriptionItemProvider == null) {
descriptionItemProvider = new DescriptionItemProvider(this);
}
return descriptionItemProvider;
}
/**
* This keeps track of the one adapter used for all
* {@link org.eclipse.jst.j2ee.internal.internal.common.QName}instances. <!-- begin-user-doc
* --> <!-- end-user-doc -->
*
* @generated
*/
protected QNameItemProvider qNameItemProvider;
/**
* This creates an adapter for a {@link org.eclipse.jst.j2ee.internal.internal.common.QName}.
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public Adapter createQNameAdapter() {
if (qNameItemProvider == null) {
qNameItemProvider = new QNameItemProvider(this);
}
return qNameItemProvider;
}
/**
* This keeps track of the one adapter used for all
* {@link org.eclipse.jst.j2ee.internal.internal.common.Listener}instances. <!-- begin-user-doc
* --> <!-- end-user-doc -->
*
* @generated
*/
protected ListenerItemProvider listenerItemProvider;
/**
* This creates an adapter for a {@link org.eclipse.jst.j2ee.internal.internal.common.Listener}.
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public Adapter createListenerAdapter() {
if (listenerItemProvider == null) {
listenerItemProvider = new ListenerItemProvider(this);
}
return listenerItemProvider;
}
/**
* This keeps track of the one adapter used for all
* {@link org.eclipse.jst.j2ee.internal.internal.common.CompatibilityDescriptionGroup}
* instances. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
protected CompatibilityDescriptionGroupItemProvider compatibilityDescriptionGroupItemProvider;
/**
* This creates an adapter for a
* {@link org.eclipse.jst.j2ee.internal.internal.common.CompatibilityDescriptionGroup}. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public Adapter createCompatibilityDescriptionGroupAdapter() {
if (compatibilityDescriptionGroupItemProvider == null) {
compatibilityDescriptionGroupItemProvider = new CompatibilityDescriptionGroupItemProvider(this);
}
return compatibilityDescriptionGroupItemProvider;
}
/**
* This creates an adapter for a {@link com.ibm.etools.common.EnvEntry}.
*/
@Override
public Adapter createEnvEntryAdapter() {
if (envEntryItemProvider == null) {
envEntryItemProvider = new EnvEntryItemProvider(this);
}
return envEntryItemProvider;
}
/**
* This creates an adapter for a {@link com.ibm.etools.common.ResourceRef}.
*/
@Override
public Adapter createResourceRefAdapter() {
if (resourceRefItemProvider == null) {
resourceRefItemProvider = new ResourceRefItemProvider(this);
}
return resourceRefItemProvider;
}
/**
* This creates an adapter for a {@link com.ibm.etools.common.ResourceEnvRef}.
*/
@Override
public Adapter createResourceEnvRefAdapter() {
if (resourceEnvRefItemProvider == null) {
resourceEnvRefItemProvider = new ResourceEnvRefItemProvider(this);
}
return resourceEnvRefItemProvider;
}
/**
* This keeps track of the one adapter used for all
* {@link org.eclipse.jst.j2ee.internal.internal.common.EJBLocalRef}instances. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
protected EJBLocalRefItemProvider ejbLocalRefItemProvider;
/**
* This creates an adapter for a
* {@link org.eclipse.jst.j2ee.internal.internal.common.EJBLocalRef}. <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public Adapter createEJBLocalRefAdapter() {
if (ejbLocalRefItemProvider == null) {
ejbLocalRefItemProvider = new EJBLocalRefItemProvider(this);
}
return ejbLocalRefItemProvider;
}
/**
* This creates an adapter for a {@link com.ibm.etools.common.SecurityRole}.
*/
@Override
public Adapter createSecurityRoleAdapter() {
if (securityRoleItemProvider == null) {
securityRoleItemProvider = new SecurityRoleItemProvider(this);
}
return securityRoleItemProvider;
}
/**
* This creates an adapter for a {@link com.ibm.etools.common.Identity}.
*/
@Override
public Adapter createIdentityAdapter() {
if (identityItemProvider == null) {
identityItemProvider = new IdentityItemProvider(this);
}
return identityItemProvider;
}
/**
* This keeps track of the one adapter used for all
* {@link org.eclipse.jst.j2ee.internal.internal.common.IconType}instances. <!-- begin-user-doc
* --> <!-- end-user-doc -->
*
* @generated
*/
protected IconTypeItemProvider iconTypeItemProvider;
/**
* This creates an adapter for a {@link org.eclipse.jst.j2ee.internal.internal.common.IconType}.
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public Adapter createIconTypeAdapter() {
if (iconTypeItemProvider == null) {
iconTypeItemProvider = new IconTypeItemProvider(this);
}
return iconTypeItemProvider;
}
/**
* This keeps track of the one adapter used for all
* {@link org.eclipse.jst.j2ee.internal.internal.common.DisplayName}instances. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
protected DisplayNameItemProvider displayNameItemProvider;
/**
* This creates an adapter for a
* {@link org.eclipse.jst.j2ee.internal.internal.common.DisplayName}. <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public Adapter createDisplayNameAdapter() {
if (displayNameItemProvider == null) {
displayNameItemProvider = new DisplayNameItemProvider(this);
}
return displayNameItemProvider;
}
/**
* This keeps track of the one adapter used for all
* {@link org.eclipse.jst.j2ee.internal.internal.common.MessageDestinationRef}instances. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
protected MessageDestinationRefItemProvider messageDestinationRefItemProvider;
/**
* This creates an adapter for a
* {@link org.eclipse.jst.j2ee.internal.internal.common.MessageDestinationRef}. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public Adapter createMessageDestinationRefAdapter() {
if (messageDestinationRefItemProvider == null) {
messageDestinationRefItemProvider = new MessageDestinationRefItemProvider(this);
}
return messageDestinationRefItemProvider;
}
/**
* This keeps track of the one adapter used for all
* {@link org.eclipse.jst.j2ee.internal.internal.common.MessageDestination}instances. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
protected MessageDestinationItemProvider messageDestinationItemProvider;
/**
* This creates an adapter for a
* {@link org.eclipse.jst.j2ee.internal.internal.common.MessageDestination}. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public Adapter createMessageDestinationAdapter() {
if (messageDestinationItemProvider == null) {
messageDestinationItemProvider = new MessageDestinationItemProvider(this);
}
return messageDestinationItemProvider;
}
/**
* This keeps track of the one adapter used for all
* {@link org.eclipse.jst.j2ee.internal.internal.common.ParamValue}instances. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
protected ParamValueItemProvider paramValueItemProvider;
/**
* This creates an adapter for a
* {@link org.eclipse.jst.j2ee.internal.internal.common.ParamValue}. <!-- begin-user-doc -->
* <!-- end-user-doc -->
*
* @generated
*/
@Override
public Adapter createParamValueAdapter() {
if (paramValueItemProvider == null) {
paramValueItemProvider = new ParamValueItemProvider(this);
}
return paramValueItemProvider;
}
/**
* This keeps track of the one adapter used for all
* {@link org.eclipse.jst.j2ee.internal.internal.common.DescriptionGroup}instances. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
protected DescriptionGroupItemProvider descriptionGroupItemProvider;
/**
* This creates an adapter for a
* {@link org.eclipse.jst.j2ee.internal.internal.common.DescriptionGroup}. <!-- begin-user-doc
* --> <!-- end-user-doc -->
*
* @generated
*/
@Override
public Adapter createDescriptionGroupAdapter() {
if (descriptionGroupItemProvider == null) {
descriptionGroupItemProvider = new DescriptionGroupItemProvider(this);
}
return descriptionGroupItemProvider;
}
/**
* This creates an adapter for a {@link com.ibm.etools.common.RunAsSpecifiedIdentity}.
*/
@Override
public Adapter createRunAsSpecifiedIdentityAdapter() {
if (runAsSpecifiedIdentityItemProvider == null) {
runAsSpecifiedIdentityItemProvider = new RunAsSpecifiedIdentityItemProvider(this);
}
return runAsSpecifiedIdentityItemProvider;
}
@Override
public Adapter createSecurityIdentityAdapter() {
if (securityIdentityItemProvider == null) {
securityIdentityItemProvider = new SecurityIdentityItemProvider(this);
}
return securityIdentityItemProvider;
}
/**
* This creates an adapter for a {@link com.ibm.etools.common.SecurityRoleRef}.
*/
@Override
public Adapter createSecurityRoleRefAdapter() {
if (securityRoleRefItemProvider == null) {
securityRoleRefItemProvider = new SecurityRoleRefItemProvider(this);
}
return securityRoleRefItemProvider;
}
public void dispose() {
disposable.dispose();
}
/**
* This returns the root adapter factory that contains the factory.
*/
public ComposeableAdapterFactory getRootAdapterFactory() {
return (parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory());
}
@Override
public boolean isFactoryForType(Object type) {
return super.isFactoryForType(type) || supportedTypes.contains(type);
}
/**
* This removes a listener.
*
* @generated
*/
public void removeListener(INotifyChangedListener notifyChangedListener) {
changeNotifier.removeListener(notifyChangedListener);
}
/**
* This delegates to {@link #changeNotifier}and to {@link #parentAdapterFactory}. <!--
* begin-user-doc --> <!-- end-user-doc -->
*
* @generated
*/
public void fireNotifyChanged(Notification notification) {
changeNotifier.fireNotifyChanged(notification);
if (parentAdapterFactory != null) {
parentAdapterFactory.fireNotifyChanged(notification);
}
}
/**
* This sets the composed adapter factory that contains the factory.
*/
public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
this.parentAdapterFactory = parentAdapterFactory;
}
}