Skip to content

Package: CustomItemProviderAdapterFactory$ViewChildCreationExtender

CustomItemProviderAdapterFactory$ViewChildCreationExtender

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