Skip to content

Package: GroupedGridItemProviderAdapterFactory$ViewChildCreationExtender$CreationSwitch

GroupedGridItemProviderAdapterFactory$ViewChildCreationExtender$CreationSwitch

nameinstructionbranchcomplexitylinemethod
GroupedGridItemProviderAdapterFactory.ViewChildCreationExtender.CreationSwitch(List, EditingDomain)
M: 0 C: 9
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
caseContainer(VContainer)
M: 0 C: 11
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
caseElement(VElement)
M: 0 C: 11
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
caseView(VView)
M: 0 C: 11
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 3
100%
M: 0 C: 1
100%
createChildParameter(Object, Object)
M: 0 C: 7
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%

Coverage

1: /**
2: * Copyright (c) 2011-2013 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: * Eugen Neufeld - initial API and implementation
13: */
14: package org.eclipse.emf.ecp.view.spi.groupedgrid.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.view.spi.groupedgrid.model.VGroupedGridFactory;
26: import org.eclipse.emf.ecp.view.spi.groupedgrid.model.VGroupedGridPackage;
27: import org.eclipse.emf.ecp.view.spi.groupedgrid.model.util.GroupedGridAdapterFactory;
28: import org.eclipse.emf.ecp.view.spi.model.VContainer;
29: import org.eclipse.emf.ecp.view.spi.model.VElement;
30: import org.eclipse.emf.ecp.view.spi.model.VView;
31: import org.eclipse.emf.ecp.view.spi.model.VViewPackage;
32: import org.eclipse.emf.ecp.view.spi.model.util.ViewSwitch;
33: import org.eclipse.emf.edit.command.CommandParameter;
34: import org.eclipse.emf.edit.domain.EditingDomain;
35: import org.eclipse.emf.edit.provider.ChangeNotifier;
36: import org.eclipse.emf.edit.provider.ChildCreationExtenderManager;
37: import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
38: import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
39: import org.eclipse.emf.edit.provider.IChangeNotifier;
40: import org.eclipse.emf.edit.provider.IChildCreationExtender;
41: import org.eclipse.emf.edit.provider.IDisposable;
42: import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
43: import org.eclipse.emf.edit.provider.IItemLabelProvider;
44: import org.eclipse.emf.edit.provider.IItemPropertySource;
45: import org.eclipse.emf.edit.provider.INotifyChangedListener;
46: import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
47: import org.eclipse.emf.edit.provider.ITreeItemContentProvider;
48:
49: /**
50: * This is the factory that is used to provide the interfaces needed to support Viewers.
51: * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged
52: * fireNotifyChanged}.
53: * The adapters also support Eclipse property sheets.
54: * Note that most of the adapters are shared among multiple instances.
55: * <!-- begin-user-doc -->
56: * <!-- end-user-doc -->
57: *
58: * @generated
59: * @since 1.2
60: */
61: public class GroupedGridItemProviderAdapterFactory extends GroupedGridAdapterFactory implements
62:         ComposeableAdapterFactory, IChangeNotifier, IDisposable, IChildCreationExtender {
63:         /**
64:          * This keeps track of the root adapter factory that delegates to this adapter factory.
65:          * <!-- begin-user-doc -->
66:          * <!-- end-user-doc -->
67:          *
68:          * @generated
69:          */
70:         protected ComposedAdapterFactory parentAdapterFactory;
71:
72:         /**
73:          * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
74:          * <!-- begin-user-doc -->
75:          * <!-- end-user-doc -->
76:          *
77:          * @generated
78:          */
79:         protected IChangeNotifier changeNotifier = new ChangeNotifier();
80:
81:         /**
82:          * This helps manage the child creation extenders.
83:          * <!-- begin-user-doc -->
84:          * <!-- end-user-doc -->
85:          *
86:          * @generated
87:          */
88:         protected ChildCreationExtenderManager childCreationExtenderManager = new ChildCreationExtenderManager(
89:                 GroupedGridEditPlugin.INSTANCE, VGroupedGridPackage.eNS_URI);
90:
91:         /**
92:          * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
93:          * <!-- begin-user-doc -->
94:          * <!-- end-user-doc -->
95:          *
96:          * @generated
97:          */
98:         protected Collection<Object> supportedTypes = new ArrayList<Object>();
99:
100:         /**
101:          * This constructs an instance.
102:          * <!-- begin-user-doc -->
103:          * <!-- end-user-doc -->
104:          *
105:          * @generated
106:          */
107:         public GroupedGridItemProviderAdapterFactory() {
108:                 supportedTypes.add(IEditingDomainItemProvider.class);
109:                 supportedTypes.add(IStructuredItemContentProvider.class);
110:                 supportedTypes.add(ITreeItemContentProvider.class);
111:                 supportedTypes.add(IItemLabelProvider.class);
112:                 supportedTypes.add(IItemPropertySource.class);
113:         }
114:
115:         /**
116:          * This keeps track of the one adapter used for all
117:          * {@link org.eclipse.emf.ecp.view.spi.groupedgrid.model.VGroupedGrid} instances.
118:          * <!-- begin-user-doc -->
119:          * <!-- end-user-doc -->
120:          *
121:          * @generated
122:          */
123:         protected GroupedGridItemProvider groupedGridItemProvider;
124:
125:         /**
126:          * This creates an adapter for a {@link org.eclipse.emf.ecp.view.spi.groupedgrid.model.VGroupedGrid}.
127:          * <!-- begin-user-doc -->
128:          * <!-- end-user-doc -->
129:          *
130:          * @generated
131:          */
132:         @Override
133:         public Adapter createGroupedGridAdapter() {
134:                 if (groupedGridItemProvider == null) {
135:                         groupedGridItemProvider = new GroupedGridItemProvider(this);
136:                 }
137:
138:                 return groupedGridItemProvider;
139:         }
140:
141:         /**
142:          * This keeps track of the one adapter used for all {@link org.eclipse.emf.ecp.view.spi.groupedgrid.model.VGroup}
143:          * instances.
144:          * <!-- begin-user-doc -->
145:          * <!-- end-user-doc -->
146:          *
147:          * @generated
148:          */
149:         protected GroupItemProvider groupItemProvider;
150:
151:         /**
152:          * This creates an adapter for a {@link org.eclipse.emf.ecp.view.spi.groupedgrid.model.VGroup}.
153:          * <!-- begin-user-doc -->
154:          * <!-- end-user-doc -->
155:          *
156:          * @generated
157:          */
158:         @Override
159:         public Adapter createGroupAdapter() {
160:                 if (groupItemProvider == null) {
161:                         groupItemProvider = new GroupItemProvider(this);
162:                 }
163:
164:                 return groupItemProvider;
165:         }
166:
167:         /**
168:          * This keeps track of the one adapter used for all {@link org.eclipse.emf.ecp.view.spi.groupedgrid.model.VRow}
169:          * instances.
170:          * <!-- begin-user-doc -->
171:          * <!-- end-user-doc -->
172:          *
173:          * @generated
174:          */
175:         protected RowItemProvider rowItemProvider;
176:
177:         /**
178:          * This creates an adapter for a {@link org.eclipse.emf.ecp.view.spi.groupedgrid.model.VRow}.
179:          * <!-- begin-user-doc -->
180:          * <!-- end-user-doc -->
181:          *
182:          * @generated
183:          */
184:         @Override
185:         public Adapter createRowAdapter() {
186:                 if (rowItemProvider == null) {
187:                         rowItemProvider = new RowItemProvider(this);
188:                 }
189:
190:                 return rowItemProvider;
191:         }
192:
193:         /**
194:          * This keeps track of the one adapter used for all {@link org.eclipse.emf.ecp.view.spi.groupedgrid.model.VSpan}
195:          * instances.
196:          * <!-- begin-user-doc -->
197:          * <!-- end-user-doc -->
198:          *
199:          * @generated
200:          */
201:         protected SpanItemProvider spanItemProvider;
202:
203:         /**
204:          * This creates an adapter for a {@link org.eclipse.emf.ecp.view.spi.groupedgrid.model.VSpan}.
205:          * <!-- begin-user-doc -->
206:          * <!-- end-user-doc -->
207:          *
208:          * @generated
209:          */
210:         @Override
211:         public Adapter createSpanAdapter() {
212:                 if (spanItemProvider == null) {
213:                         spanItemProvider = new SpanItemProvider(this);
214:                 }
215:
216:                 return spanItemProvider;
217:         }
218:
219:         /**
220:          * This returns the root adapter factory that contains this factory.
221:          * <!-- begin-user-doc -->
222:          * <!-- end-user-doc -->
223:          *
224:          * @generated
225:          */
226:         @Override
227:         public ComposeableAdapterFactory getRootAdapterFactory() {
228:                 return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
229:         }
230:
231:         /**
232:          * This sets the composed adapter factory that contains this factory.
233:          * <!-- begin-user-doc -->
234:          * <!-- end-user-doc -->
235:          *
236:          * @generated
237:          */
238:         @Override
239:         public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
240:                 this.parentAdapterFactory = parentAdapterFactory;
241:         }
242:
243:         /**
244:          * <!-- begin-user-doc -->
245:          * <!-- end-user-doc -->
246:          *
247:          * @generated
248:          */
249:         @Override
250:         public boolean isFactoryForType(Object type) {
251:                 return supportedTypes.contains(type) || super.isFactoryForType(type);
252:         }
253:
254:         /**
255:          * This implementation substitutes the factory itself as the key for the adapter.
256:          * <!-- begin-user-doc -->
257:          * <!-- end-user-doc -->
258:          *
259:          * @generated
260:          */
261:         @Override
262:         public Adapter adapt(Notifier notifier, Object type) {
263:                 return super.adapt(notifier, this);
264:         }
265:
266:         /**
267:          * <!-- begin-user-doc -->
268:          * <!-- end-user-doc -->
269:          *
270:          * @generated
271:          */
272:         @Override
273:         public Object adapt(Object object, Object type) {
274:                 if (isFactoryForType(type)) {
275:                         final Object adapter = super.adapt(object, type);
276:                         if (!(type instanceof Class<?>) || ((Class<?>) type).isInstance(adapter)) {
277:                                 return adapter;
278:                         }
279:                 }
280:
281:                 return null;
282:         }
283:
284:         /**
285:          * <!-- begin-user-doc -->
286:          * <!-- end-user-doc -->
287:          *
288:          * @generated
289:          */
290:         public List<IChildCreationExtender> getChildCreationExtenders() {
291:                 return childCreationExtenderManager.getChildCreationExtenders();
292:         }
293:
294:         /**
295:          * <!-- begin-user-doc -->
296:          * <!-- end-user-doc -->
297:          *
298:          * @generated
299:          */
300:         @Override
301:         public Collection<?> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
302:                 return childCreationExtenderManager.getNewChildDescriptors(object, editingDomain);
303:         }
304:
305:         /**
306:          * <!-- begin-user-doc -->
307:          * <!-- end-user-doc -->
308:          *
309:          * @generated
310:          */
311:         @Override
312:         public ResourceLocator getResourceLocator() {
313:                 return childCreationExtenderManager;
314:         }
315:
316:         /**
317:          * This adds a listener.
318:          * <!-- begin-user-doc -->
319:          * <!-- end-user-doc -->
320:          *
321:          * @generated
322:          */
323:         @Override
324:         public void addListener(INotifyChangedListener notifyChangedListener) {
325:                 changeNotifier.addListener(notifyChangedListener);
326:         }
327:
328:         /**
329:          * This removes a listener.
330:          * <!-- begin-user-doc -->
331:          * <!-- end-user-doc -->
332:          *
333:          * @generated
334:          */
335:         @Override
336:         public void removeListener(INotifyChangedListener notifyChangedListener) {
337:                 changeNotifier.removeListener(notifyChangedListener);
338:         }
339:
340:         /**
341:          * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
342:          * <!-- begin-user-doc -->
343:          * <!-- end-user-doc -->
344:          *
345:          * @generated
346:          */
347:         @Override
348:         public void fireNotifyChanged(Notification notification) {
349:                 changeNotifier.fireNotifyChanged(notification);
350:
351:                 if (parentAdapterFactory != null) {
352:                         parentAdapterFactory.fireNotifyChanged(notification);
353:                 }
354:         }
355:
356:         /**
357:          * This disposes all of the item providers created by this factory.
358:          * <!-- begin-user-doc -->
359:          * <!-- end-user-doc -->
360:          *
361:          * @generated
362:          */
363:         @Override
364:         public void dispose() {
365:                 if (groupedGridItemProvider != null) {
366:                         groupedGridItemProvider.dispose();
367:                 }
368:                 if (groupItemProvider != null) {
369:                         groupItemProvider.dispose();
370:                 }
371:                 if (rowItemProvider != null) {
372:                         rowItemProvider.dispose();
373:                 }
374:                 if (spanItemProvider != null) {
375:                         spanItemProvider.dispose();
376:                 }
377:         }
378:
379:         /**
380:          * A child creation extender for the {@link VViewPackage}.
381:          * <!-- begin-user-doc -->
382:          * <!-- end-user-doc -->
383:          *
384:          * @generated
385:          */
386:         public static class ViewChildCreationExtender implements IChildCreationExtender {
387:                 /**
388:                  * The switch for creating child descriptors specific to each extended class.
389:                  * <!-- begin-user-doc -->
390:                  * <!-- end-user-doc -->
391:                  *
392:                  * @generated
393:                  */
394:                 protected static class CreationSwitch extends ViewSwitch<Object> {
395:                         /**
396:                          * The child descriptors being populated.
397:                          * <!-- begin-user-doc -->
398:                          * <!-- end-user-doc -->
399:                          *
400:                          * @generated
401:                          */
402:                         protected List<Object> newChildDescriptors;
403:
404:                         /**
405:                          * The domain in which to create the children.
406:                          * <!-- begin-user-doc -->
407:                          * <!-- end-user-doc -->
408:                          *
409:                          * @generated
410:                          */
411:                         protected EditingDomain editingDomain;
412:
413:                         /**
414:                          * Creates the a switch for populating child descriptors in the given domain.
415:                          * <!-- begin-user-doc -->
416:                          * <!-- end-user-doc -->
417:                          *
418:                          * @generated
419:                          */
420:                         CreationSwitch(List<Object> newChildDescriptors, EditingDomain editingDomain) {
421:                                 this.newChildDescriptors = newChildDescriptors;
422:                                 this.editingDomain = editingDomain;
423:                         }
424:
425:                         /**
426:                          * <!-- begin-user-doc -->
427:                          * <!-- end-user-doc -->
428:                          *
429:                          * @generated
430:                          */
431:                         @Override
432:                         public Object caseElement(VElement object) {
433:                                 newChildDescriptors.add(createChildParameter(VViewPackage.Literals.ELEMENT__ATTACHMENTS,
434:                                         VGroupedGridFactory.eINSTANCE.createSpan()));
435:
436:                                 return null;
437:                         }
438:
439:                         /**
440:                          * <!-- begin-user-doc -->
441:                          * <!-- end-user-doc -->
442:                          *
443:                          * @generated
444:                          */
445:                         @Override
446:                         public Object caseView(VView object) {
447:                                 newChildDescriptors.add(createChildParameter(VViewPackage.Literals.VIEW__CHILDREN,
448:                                         VGroupedGridFactory.eINSTANCE.createGroupedGrid()));
449:
450:                                 return null;
451:                         }
452:
453:                         /**
454:                          * <!-- begin-user-doc -->
455:                          * <!-- end-user-doc -->
456:                          *
457:                          * @generated
458:                          */
459:                         @Override
460:                         public Object caseContainer(VContainer object) {
461:                                 newChildDescriptors.add(createChildParameter(VViewPackage.Literals.CONTAINER__CHILDREN,
462:                                         VGroupedGridFactory.eINSTANCE.createGroupedGrid()));
463:
464:                                 return null;
465:                         }
466:
467:                         /**
468:                          * <!-- begin-user-doc -->
469:                          * <!-- end-user-doc -->
470:                          *
471:                          * @generated
472:                          */
473:                         protected CommandParameter createChildParameter(Object feature, Object child) {
474:                                 return new CommandParameter(null, feature, child);
475:                         }
476:
477:                 }
478:
479:                 /**
480:                  * <!-- begin-user-doc -->
481:                  * <!-- end-user-doc -->
482:                  *
483:                  * @generated
484:                  */
485:                 @Override
486:                 public Collection<Object> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
487:                         final ArrayList<Object> result = new ArrayList<Object>();
488:                         new CreationSwitch(result, editingDomain).doSwitch((EObject) object);
489:                         return result;
490:                 }
491:
492:                 /**
493:                  * <!-- begin-user-doc -->
494:                  * <!-- end-user-doc -->
495:                  *
496:                  * @generated
497:                  */
498:                 @Override
499:                 public ResourceLocator getResourceLocator() {
500:                         return GroupedGridEditPlugin.INSTANCE;
501:                 }
502:         }
503:
504: }