KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > eclipse > emf > mapping > ecore2ecore > provider > Ecore2EcoreItemProviderAdapterFactory


1 /**
2  * <copyright>
3  *
4  * Copyright (c) 2004-2005 IBM Corporation and others.
5  * All rights reserved. This program and the accompanying materials
6  * are made available under the terms of the Eclipse Public License v1.0
7  * which accompanies this distribution, and is available at
8  * http://www.eclipse.org/legal/epl-v10.html
9  *
10  * Contributors:
11  * IBM - Initial API and implementation
12  *
13  * </copyright>
14  *
15  * $Id: Ecore2EcoreItemProviderAdapterFactory.java,v 1.5 2005/07/06 19:45:13 davidms Exp $
16  */

17 package org.eclipse.emf.mapping.ecore2ecore.provider;
18
19
20 import java.util.ArrayList JavaDoc;
21 import java.util.Collection JavaDoc;
22
23 import org.eclipse.emf.common.notify.Adapter;
24 import org.eclipse.emf.common.notify.Notification;
25 import org.eclipse.emf.common.notify.Notifier;
26
27 import org.eclipse.emf.edit.provider.ChangeNotifier;
28 import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
29 import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
30 import org.eclipse.emf.edit.provider.IChangeNotifier;
31 import org.eclipse.emf.edit.provider.IDisposable;
32 import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
33 import org.eclipse.emf.edit.provider.IItemLabelProvider;
34 import org.eclipse.emf.edit.provider.IItemPropertySource;
35 import org.eclipse.emf.edit.provider.INotifyChangedListener;
36 import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
37 import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
38
39 import org.eclipse.emf.mapping.ecore2ecore.util.Ecore2EcoreAdapterFactory;
40
41
42 /**
43  * This is the factory that is used to provide the interfaces needed to support Viewers.
44  * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
45  * The adapters also support Eclipse property sheets.
46  * Note that most of the adapters are shared among multiple instances.
47  * <!-- begin-user-doc -->
48  * <!-- end-user-doc -->
49  * @generated
50  */

51 public class Ecore2EcoreItemProviderAdapterFactory extends Ecore2EcoreAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable
52 {
53   /**
54    * This keeps track of the root adapter factory that delegates to this adapter factory.
55    * <!-- begin-user-doc -->
56    * <!-- end-user-doc -->
57    * @generated
58    */

59   protected ComposedAdapterFactory parentAdapterFactory;
60
61   /**
62    * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
63    * <!-- begin-user-doc -->
64    * <!-- end-user-doc -->
65    * @generated
66    */

67   protected IChangeNotifier changeNotifier = new ChangeNotifier();
68
69   /**
70    * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
71    * <!-- begin-user-doc -->
72    * <!-- end-user-doc -->
73    * @generated
74    */

75   protected Collection JavaDoc supportedTypes = new ArrayList JavaDoc();
76
77   /**
78    * This constructs an instance.
79    * <!-- begin-user-doc -->
80    * <!-- end-user-doc -->
81    * @generated
82    */

83   public Ecore2EcoreItemProviderAdapterFactory()
84   {
85     supportedTypes.add(IEditingDomainItemProvider.class);
86     supportedTypes.add(IStructuredItemContentProvider.class);
87     supportedTypes.add(ITreeItemContentProvider.class);
88     supportedTypes.add(IItemLabelProvider.class);
89     supportedTypes.add(IItemPropertySource.class);
90   }
91
92   /**
93    * This keeps track of the one adapter used for all {@link org.eclipse.emf.mapping.ecore2ecore.Ecore2EcoreMappingRoot} instances.
94    * <!-- begin-user-doc -->
95    * <!-- end-user-doc -->
96    * @generated
97    */

98   protected Ecore2EcoreMappingRootItemProvider ecore2EcoreMappingRootItemProvider;
99
100   /**
101    * This creates an adapter for a {@link org.eclipse.emf.mapping.ecore2ecore.Ecore2EcoreMappingRoot}.
102    * <!-- begin-user-doc -->
103    * <!-- end-user-doc -->
104    * @generated
105    */

106   public Adapter createEcore2EcoreMappingRootAdapter()
107   {
108     if (ecore2EcoreMappingRootItemProvider == null)
109     {
110       ecore2EcoreMappingRootItemProvider = new Ecore2EcoreMappingRootItemProvider(this);
111     }
112
113     return ecore2EcoreMappingRootItemProvider;
114   }
115
116   /**
117    * This returns the root adapter factory that contains this factory.
118    * <!-- begin-user-doc -->
119    * <!-- end-user-doc -->
120    * @generated
121    */

122   public ComposeableAdapterFactory getRootAdapterFactory()
123   {
124     return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
125   }
126
127   /**
128    * This sets the composed adapter factory that contains this factory.
129    * <!-- begin-user-doc -->
130    * <!-- end-user-doc -->
131    * @generated
132    */

133   public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory)
134   {
135     this.parentAdapterFactory = parentAdapterFactory;
136   }
137
138   /**
139    * <!-- begin-user-doc -->
140    * <!-- end-user-doc -->
141    * @generated
142    */

143   public boolean isFactoryForType(Object JavaDoc type)
144   {
145     return supportedTypes.contains(type) || super.isFactoryForType(type);
146   }
147
148   /**
149    * This implementation substitutes the factory itself as the key for the adapter.
150    * <!-- begin-user-doc -->
151    * <!-- end-user-doc -->
152    * @generated
153    */

154   public Adapter adapt(Notifier notifier, Object JavaDoc type)
155   {
156     return super.adapt(notifier, this);
157   }
158
159   /**
160    * <!-- begin-user-doc -->
161    * <!-- end-user-doc -->
162    * @generated
163    */

164   public Object JavaDoc adapt(Object JavaDoc object, Object JavaDoc type)
165   {
166     if (isFactoryForType(type))
167     {
168       Object JavaDoc adapter = super.adapt(object, type);
169       if (!(type instanceof Class JavaDoc) || (((Class JavaDoc)type).isInstance(adapter)))
170       {
171         return adapter;
172       }
173     }
174
175     return null;
176   }
177
178   /**
179    * This adds a listener.
180    * <!-- begin-user-doc -->
181    * <!-- end-user-doc -->
182    * @generated
183    */

184   public void addListener(INotifyChangedListener notifyChangedListener)
185   {
186     changeNotifier.addListener(notifyChangedListener);
187   }
188
189   /**
190    * This removes a listener.
191    * <!-- begin-user-doc -->
192    * <!-- end-user-doc -->
193    * @generated
194    */

195   public void removeListener(INotifyChangedListener notifyChangedListener)
196   {
197     changeNotifier.removeListener(notifyChangedListener);
198   }
199
200   /**
201    * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
202    * <!-- begin-user-doc -->
203    * <!-- end-user-doc -->
204    * @generated
205    */

206   public void fireNotifyChanged(Notification notification)
207   {
208     changeNotifier.fireNotifyChanged(notification);
209
210     if (parentAdapterFactory != null)
211     {
212       parentAdapterFactory.fireNotifyChanged(notification);
213     }
214   }
215
216   /**
217    * This disposes all of the item providers created by this factory.
218    * <!-- begin-user-doc -->
219    * <!-- end-user-doc -->
220    * @generated
221    */

222   public void dispose()
223   {
224     if (ecore2EcoreMappingRootItemProvider != null) ecore2EcoreMappingRootItemProvider.dispose();
225   }
226
227 }
Popular Tags