blob: a78bbba57aef2d90fad178d475a6bf830baa7f33 [file] [log] [blame]
/**
* Copyright (c) 2008, 2013 IBM Corporation and others.
* 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/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*/
package org.eclipse.e4.ui.model.application.ui.basic.provider;
import java.util.ArrayList;
import java.util.Collection;
import org.eclipse.e4.ui.model.application.ui.basic.util.BasicAdapterFactory;
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.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.ITreeItemContentProvider;
/**
* This is the factory that is used to provide the interfaces needed to support Viewers.
* The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
* The adapters also support Eclipse property sheets.
* Note that most of the adapters are shared among multiple instances.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public class BasicItemProviderAdapterFactory extends BasicAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
/**
* This keeps track of the root adapter factory that delegates to this adapter factory.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
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}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected Collection<Object> supportedTypes = new ArrayList<Object>();
/**
* This constructs an instance.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public BasicItemProviderAdapterFactory() {
supportedTypes.add(IEditingDomainItemProvider.class);
supportedTypes.add(IStructuredItemContentProvider.class);
supportedTypes.add(ITreeItemContentProvider.class);
supportedTypes.add(IItemLabelProvider.class);
supportedTypes.add(IItemPropertySource.class);
}
/**
* This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MPart} instances.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected PartItemProvider partItemProvider;
/**
* This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MPart}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public Adapter createPartAdapter() {
if (partItemProvider == null) {
partItemProvider = new PartItemProvider(this);
}
return partItemProvider;
}
/**
* This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MCompositePart} instances.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected CompositePartItemProvider compositePartItemProvider;
/**
* This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MCompositePart}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public Adapter createCompositePartAdapter() {
if (compositePartItemProvider == null) {
compositePartItemProvider = new CompositePartItemProvider(this);
}
return compositePartItemProvider;
}
/**
* This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MInputPart} instances.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected InputPartItemProvider inputPartItemProvider;
/**
* This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MInputPart}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public Adapter createInputPartAdapter() {
if (inputPartItemProvider == null) {
inputPartItemProvider = new InputPartItemProvider(this);
}
return inputPartItemProvider;
}
/**
* This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MPartStack} instances.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected PartStackItemProvider partStackItemProvider;
/**
* This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MPartStack}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public Adapter createPartStackAdapter() {
if (partStackItemProvider == null) {
partStackItemProvider = new PartStackItemProvider(this);
}
return partStackItemProvider;
}
/**
* This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer} instances.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected PartSashContainerItemProvider partSashContainerItemProvider;
/**
* This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MPartSashContainer}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public Adapter createPartSashContainerAdapter() {
if (partSashContainerItemProvider == null) {
partSashContainerItemProvider = new PartSashContainerItemProvider(this);
}
return partSashContainerItemProvider;
}
/**
* This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MWindow} instances.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected WindowItemProvider windowItemProvider;
/**
* This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MWindow}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public Adapter createWindowAdapter() {
if (windowItemProvider == null) {
windowItemProvider = new WindowItemProvider(this);
}
return windowItemProvider;
}
/**
* This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow} instances.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected TrimmedWindowItemProvider trimmedWindowItemProvider;
/**
* This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MTrimmedWindow}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public Adapter createTrimmedWindowAdapter() {
if (trimmedWindowItemProvider == null) {
trimmedWindowItemProvider = new TrimmedWindowItemProvider(this);
}
return trimmedWindowItemProvider;
}
/**
* This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MTrimBar} instances.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected TrimBarItemProvider trimBarItemProvider;
/**
* This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MTrimBar}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public Adapter createTrimBarAdapter() {
if (trimBarItemProvider == null) {
trimBarItemProvider = new TrimBarItemProvider(this);
}
return trimBarItemProvider;
}
/**
* This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MDialog} instances.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected DialogItemProvider dialogItemProvider;
/**
* This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MDialog}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public Adapter createDialogAdapter() {
if (dialogItemProvider == null) {
dialogItemProvider = new DialogItemProvider(this);
}
return dialogItemProvider;
}
/**
* This keeps track of the one adapter used for all {@link org.eclipse.e4.ui.model.application.ui.basic.MWizardDialog} instances.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected WizardDialogItemProvider wizardDialogItemProvider;
/**
* This creates an adapter for a {@link org.eclipse.e4.ui.model.application.ui.basic.MWizardDialog}.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public Adapter createWizardDialogAdapter() {
if (wizardDialogItemProvider == null) {
wizardDialogItemProvider = new WizardDialogItemProvider(this);
}
return wizardDialogItemProvider;
}
/**
* This returns the root adapter factory that contains this factory.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public ComposeableAdapterFactory getRootAdapterFactory() {
return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
}
/**
* This sets the composed adapter factory that contains this factory.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
this.parentAdapterFactory = parentAdapterFactory;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public boolean isFactoryForType(Object type) {
return supportedTypes.contains(type) || super.isFactoryForType(type);
}
/**
* This implementation substitutes the factory itself as the key for the adapter.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public Adapter adapt(Notifier notifier, Object type) {
return super.adapt(notifier, this);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@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;
}
/**
* This adds a listener.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void addListener(INotifyChangedListener notifyChangedListener) {
changeNotifier.addListener(notifyChangedListener);
}
/**
* This removes a listener.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @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 disposes all of the item providers created by this factory.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public void dispose() {
if (partItemProvider != null) partItemProvider.dispose();
if (compositePartItemProvider != null) compositePartItemProvider.dispose();
if (inputPartItemProvider != null) inputPartItemProvider.dispose();
if (partStackItemProvider != null) partStackItemProvider.dispose();
if (partSashContainerItemProvider != null) partSashContainerItemProvider.dispose();
if (windowItemProvider != null) windowItemProvider.dispose();
if (trimmedWindowItemProvider != null) trimmedWindowItemProvider.dispose();
if (trimBarItemProvider != null) trimBarItemProvider.dispose();
if (dialogItemProvider != null) dialogItemProvider.dispose();
if (wizardDialogItemProvider != null) wizardDialogItemProvider.dispose();
}
}