Skip to content

Package: DiffmergeItemProviderAdapterFactory$ViewChildCreationExtender

DiffmergeItemProviderAdapterFactory$ViewChildCreationExtender

nameinstructionbranchcomplexitylinemethod
DiffmergeItemProviderAdapterFactory.ViewChildCreationExtender()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
getNewChildDescriptors(Object, EditingDomain)
M: 15 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 4 C: 0
0%
M: 1 C: 0
0%
getResourceLocator()
M: 2 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /**
2: * Copyright (c) 2011-2014 EclipseSource Muenchen GmbH and others.
3: *
4: * All rights reserved. This program and the accompanying materials
5: * are made available under the terms of the Eclipse Public License 2.0
6: * which accompanies this distribution, and is available at
7: * https://www.eclipse.org/legal/epl-2.0/
8: *
9: * SPDX-License-Identifier: EPL-2.0
10: *
11: * Contributors:
12: * EclipseSource Munich - initial API and implementation
13: */
14: package org.eclipse.emf.ecp.spi.diffmerge.model.provider;
15:
16: import java.util.ArrayList;
17: import java.util.Collection;
18: import java.util.List;
19:
20: import org.eclipse.emf.common.notify.Adapter;
21: import org.eclipse.emf.common.notify.Notification;
22: import org.eclipse.emf.common.notify.Notifier;
23: import org.eclipse.emf.common.util.ResourceLocator;
24: import org.eclipse.emf.ecore.EObject;
25: import org.eclipse.emf.ecp.spi.diffmerge.model.VDiffmergeFactory;
26: import org.eclipse.emf.ecp.spi.diffmerge.model.VDiffmergePackage;
27: import org.eclipse.emf.ecp.spi.diffmerge.model.util.DiffmergeAdapterFactory;
28: import org.eclipse.emf.ecp.view.spi.model.VElement;
29: import org.eclipse.emf.ecp.view.spi.model.VViewPackage;
30: import org.eclipse.emf.ecp.view.spi.model.util.ViewSwitch;
31: import org.eclipse.emf.edit.command.CommandParameter;
32: import org.eclipse.emf.edit.domain.EditingDomain;
33: import org.eclipse.emf.edit.provider.ChangeNotifier;
34: import org.eclipse.emf.edit.provider.ChildCreationExtenderManager;
35: import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
36: import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
37: import org.eclipse.emf.edit.provider.IChangeNotifier;
38: import org.eclipse.emf.edit.provider.IChildCreationExtender;
39: import org.eclipse.emf.edit.provider.IDisposable;
40: import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
41: import org.eclipse.emf.edit.provider.IItemLabelProvider;
42: import org.eclipse.emf.edit.provider.IItemPropertySource;
43: import org.eclipse.emf.edit.provider.INotifyChangedListener;
44: import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
45: import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
46:
47: /**
48: * This is the factory that is used to provide the interfaces needed to support
49: * Viewers. The adapters generated by this factory convert EMF adapter
50: * notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}. The
51: * adapters also support Eclipse property sheets. Note that most of the adapters
52: * are shared among multiple instances. <!-- begin-user-doc --> <!--
53: * end-user-doc -->
54: *
55: * @generated
56: */
57: public class DiffmergeItemProviderAdapterFactory extends
58:         DiffmergeAdapterFactory implements ComposeableAdapterFactory,
59:         IChangeNotifier, IDisposable, IChildCreationExtender {
60:         /**
61:          * This keeps track of the root adapter factory that delegates to this
62:          * adapter factory. <!-- begin-user-doc --> <!-- end-user-doc -->
63:          *
64:          * @generated
65:          */
66:         protected ComposedAdapterFactory parentAdapterFactory;
67:
68:         /**
69:          * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}. <!--
70:          * begin-user-doc --> <!-- end-user-doc -->
71:          *
72:          * @generated
73:          */
74:         protected IChangeNotifier changeNotifier = new ChangeNotifier();
75:
76:         /**
77:          * This helps manage the child creation extenders. <!-- begin-user-doc -->
78:          * <!-- end-user-doc -->
79:          *
80:          * @generated
81:          */
82:         protected ChildCreationExtenderManager childCreationExtenderManager = new ChildCreationExtenderManager(
83:                 DiffmergeEditPlugin.INSTANCE, VDiffmergePackage.eNS_URI);
84:
85:         /**
86:          * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}. <!--
87:          * begin-user-doc --> <!--
88:          * end-user-doc -->
89:          *
90:          * @generated
91:          */
92:         protected Collection<Object> supportedTypes = new ArrayList<Object>();
93:
94:         /**
95:          * This constructs an instance. <!-- begin-user-doc --> <!-- end-user-doc
96:          * -->
97:          *
98:          * @generated
99:          */
100:         public DiffmergeItemProviderAdapterFactory() {
101:                 supportedTypes.add(IEditingDomainItemProvider.class);
102:                 supportedTypes.add(IStructuredItemContentProvider.class);
103:                 supportedTypes.add(ITreeItemContentProvider.class);
104:                 supportedTypes.add(IItemLabelProvider.class);
105:                 supportedTypes.add(IItemPropertySource.class);
106:         }
107:
108:         /**
109:          * This keeps track of the one adapter used for all {@link org.eclipse.emf.ecp.spi.diffmerge.model.VDiffAttachment}
110:          * instances. <!-- begin-user-doc --> <!-- end-user-doc -->
111:          *
112:          * @generated
113:          */
114:         protected DiffAttachmentItemProvider diffAttachmentItemProvider;
115:
116:         /**
117:          * This creates an adapter for a {@link org.eclipse.emf.ecp.spi.diffmerge.model.VDiffAttachment}. <!--
118:          * begin-user-doc --> <!-- end-user-doc -->
119:          *
120:          * @generated
121:          */
122:         @Override
123:         public Adapter createDiffAttachmentAdapter() {
124:                 if (diffAttachmentItemProvider == null) {
125:                         diffAttachmentItemProvider = new DiffAttachmentItemProvider(this);
126:                 }
127:
128:                 return diffAttachmentItemProvider;
129:         }
130:
131:         /**
132:          * This returns the root adapter factory that contains this factory. <!--
133:          * begin-user-doc --> <!-- end-user-doc -->
134:          *
135:          * @generated
136:          */
137:         @Override
138:         public ComposeableAdapterFactory getRootAdapterFactory() {
139:                 return parentAdapterFactory == null ? this
140:                         : parentAdapterFactory
141:                                 .getRootAdapterFactory();
142:         }
143:
144:         /**
145:          * This sets the composed adapter factory that contains this factory. <!--
146:          * begin-user-doc --> <!-- end-user-doc -->
147:          *
148:          * @generated
149:          */
150:         @Override
151:         public void setParentAdapterFactory(
152:                 ComposedAdapterFactory parentAdapterFactory) {
153:                 this.parentAdapterFactory = parentAdapterFactory;
154:         }
155:
156:         /**
157:          * <!-- begin-user-doc --> <!-- end-user-doc -->
158:          *
159:          * @generated
160:          */
161:         @Override
162:         public boolean isFactoryForType(Object type) {
163:                 return supportedTypes.contains(type) || super.isFactoryForType(type);
164:         }
165:
166:         /**
167:          * This implementation substitutes the factory itself as the key for the
168:          * adapter. <!-- begin-user-doc --> <!-- end-user-doc -->
169:          *
170:          * @generated
171:          */
172:         @Override
173:         public Adapter adapt(Notifier notifier, Object type) {
174:                 return super.adapt(notifier, this);
175:         }
176:
177:         /**
178:          * <!-- begin-user-doc --> <!-- end-user-doc -->
179:          *
180:          * @generated
181:          */
182:         @Override
183:         public Object adapt(Object object, Object type) {
184:                 if (isFactoryForType(type)) {
185:                         final Object adapter = super.adapt(object, type);
186:                         if (!(type instanceof Class<?>)
187:                                 || ((Class<?>) type).isInstance(adapter)) {
188:                                 return adapter;
189:                         }
190:                 }
191:
192:                 return null;
193:         }
194:
195:         /**
196:          * <!-- begin-user-doc --> <!-- end-user-doc -->
197:          *
198:          * @generated
199:          */
200:         public List<IChildCreationExtender> getChildCreationExtenders() {
201:                 return childCreationExtenderManager.getChildCreationExtenders();
202:         }
203:
204:         /**
205:          * <!-- begin-user-doc --> <!-- end-user-doc -->
206:          *
207:          * @generated
208:          */
209:         @Override
210:         public Collection<?> getNewChildDescriptors(Object object,
211:                 EditingDomain editingDomain) {
212:                 return childCreationExtenderManager.getNewChildDescriptors(object,
213:                         editingDomain);
214:         }
215:
216:         /**
217:          * <!-- begin-user-doc --> <!-- end-user-doc -->
218:          *
219:          * @generated
220:          */
221:         @Override
222:         public ResourceLocator getResourceLocator() {
223:                 return childCreationExtenderManager;
224:         }
225:
226:         /**
227:          * This adds a listener. <!-- begin-user-doc --> <!-- end-user-doc -->
228:          *
229:          * @generated
230:          */
231:         @Override
232:         public void addListener(INotifyChangedListener notifyChangedListener) {
233:                 changeNotifier.addListener(notifyChangedListener);
234:         }
235:
236:         /**
237:          * This removes a listener. <!-- begin-user-doc --> <!-- end-user-doc -->
238:          *
239:          * @generated
240:          */
241:         @Override
242:         public void removeListener(INotifyChangedListener notifyChangedListener) {
243:                 changeNotifier.removeListener(notifyChangedListener);
244:         }
245:
246:         /**
247:          * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}. <!-- begin-user-doc --> <!--
248:          * end-user-doc
249:          * -->
250:          *
251:          * @generated
252:          */
253:         @Override
254:         public void fireNotifyChanged(Notification notification) {
255:                 changeNotifier.fireNotifyChanged(notification);
256:
257:                 if (parentAdapterFactory != null) {
258:                         parentAdapterFactory.fireNotifyChanged(notification);
259:                 }
260:         }
261:
262:         /**
263:          * This disposes all of the item providers created by this factory. <!--
264:          * begin-user-doc --> <!-- end-user-doc -->
265:          *
266:          * @generated
267:          */
268:         @Override
269:         public void dispose() {
270:                 if (diffAttachmentItemProvider != null) {
271:                         diffAttachmentItemProvider.dispose();
272:                 }
273:         }
274:
275:         /**
276:          * A child creation extender for the {@link VViewPackage}. <!--
277:          * begin-user-doc --> <!-- end-user-doc -->
278:          *
279:          * @generated
280:          */
281:         public static class ViewChildCreationExtender implements
282:                 IChildCreationExtender {
283:                 /**
284:                  * The switch for creating child descriptors specific to each extended
285:                  * class. <!-- begin-user-doc --> <!-- end-user-doc -->
286:                  *
287:                  * @generated
288:                  */
289:                 protected static class CreationSwitch extends ViewSwitch<Object> {
290:                         /**
291:                          * The child descriptors being populated. <!-- begin-user-doc -->
292:                          * <!-- end-user-doc -->
293:                          *
294:                          * @generated
295:                          */
296:                         protected List<Object> newChildDescriptors;
297:
298:                         /**
299:                          * The domain in which to create the children. <!-- begin-user-doc
300:                          * --> <!-- end-user-doc -->
301:                          *
302:                          * @generated
303:                          */
304:                         protected EditingDomain editingDomain;
305:
306:                         /**
307:                          * Creates the a switch for populating child descriptors in the
308:                          * given domain. <!-- begin-user-doc --> <!-- end-user-doc -->
309:                          *
310:                          * @generated
311:                          */
312:                         CreationSwitch(List<Object> newChildDescriptors,
313:                                 EditingDomain editingDomain) {
314:                                 this.newChildDescriptors = newChildDescriptors;
315:                                 this.editingDomain = editingDomain;
316:                         }
317:
318:                         /**
319:                          * <!-- begin-user-doc --> <!-- end-user-doc -->
320:                          *
321:                          * @generated
322:                          */
323:                         @Override
324:                         public Object caseElement(VElement object) {
325:                                 newChildDescriptors.add(createChildParameter(
326:                                         VViewPackage.Literals.ELEMENT__ATTACHMENTS,
327:                                         VDiffmergeFactory.eINSTANCE.createDiffAttachment()));
328:
329:                                 return null;
330:                         }
331:
332:                         /**
333:                          * <!-- begin-user-doc --> <!-- end-user-doc -->
334:                          *
335:                          * @generated
336:                          */
337:                         protected CommandParameter createChildParameter(Object feature,
338:                                 Object child) {
339:                                 return new CommandParameter(null, feature, child);
340:                         }
341:
342:                 }
343:
344:                 /**
345:                  * <!-- begin-user-doc --> <!-- end-user-doc -->
346:                  *
347:                  * @generated
348:                  */
349:                 @Override
350:                 public Collection<Object> getNewChildDescriptors(Object object,
351:                         EditingDomain editingDomain) {
352:                         final ArrayList<Object> result = new ArrayList<Object>();
353:                         new CreationSwitch(result, editingDomain)
354:                                 .doSwitch((EObject) object);
355:                         return result;
356:                 }
357:
358:                 /**
359:                  * <!-- begin-user-doc --> <!-- end-user-doc -->
360:                  *
361:                  * @generated
362:                  */
363:                 @Override
364:                 public ResourceLocator getResourceLocator() {
365:                         return DiffmergeEditPlugin.INSTANCE;
366:                 }
367:         }
368:
369: }