Skip to content

Package: GroupItemProviderAdapterFactory$ViewChildCreationExtender

GroupItemProviderAdapterFactory$ViewChildCreationExtender

nameinstructionbranchcomplexitylinemethod
GroupItemProviderAdapterFactory.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.group.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.group.model.VGroupFactory;
26: import org.eclipse.emf.ecp.view.spi.group.model.VGroupPackage;
27: import org.eclipse.emf.ecp.view.spi.group.model.util.GroupAdapterFactory;
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 GroupItemProviderAdapterFactory extends GroupAdapterFactory 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:                 GroupEditPlugin.INSTANCE, VGroupPackage.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<Object>();
97:
98:         /**
99:          * This constructs an instance.
100:          * <!-- begin-user-doc -->
101:          * <!-- end-user-doc -->
102:          *
103:          * @generated
104:          */
105:         public GroupItemProviderAdapterFactory() {
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.group.model.VGroup}
115:          * instances.
116:          * <!-- begin-user-doc -->
117:          * <!-- end-user-doc -->
118:          *
119:          * @generated
120:          */
121:         protected GroupItemProvider groupItemProvider;
122:
123:         /**
124:          * This creates an adapter for a {@link org.eclipse.emf.ecp.view.spi.group.model.VGroup}.
125:          * <!-- begin-user-doc -->
126:          * <!-- end-user-doc -->
127:          *
128:          * @generated
129:          */
130:         @Override
131:         public Adapter createGroupAdapter() {
132:                 if (groupItemProvider == null) {
133:                         groupItemProvider = new GroupItemProvider(this);
134:                 }
135:
136:                 return groupItemProvider;
137:         }
138:
139:         /**
140:          * This returns the root adapter factory that contains this factory.
141:          * <!-- begin-user-doc -->
142:          * <!-- end-user-doc -->
143:          *
144:          * @generated
145:          */
146:         @Override
147:         public ComposeableAdapterFactory getRootAdapterFactory() {
148:                 return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
149:         }
150:
151:         /**
152:          * This sets the composed adapter factory that contains this factory.
153:          * <!-- begin-user-doc -->
154:          * <!-- end-user-doc -->
155:          *
156:          * @generated
157:          */
158:         @Override
159:         public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
160:                 this.parentAdapterFactory = parentAdapterFactory;
161:         }
162:
163:         /**
164:          * <!-- begin-user-doc -->
165:          * <!-- end-user-doc -->
166:          *
167:          * @generated
168:          */
169:         @Override
170:         public boolean isFactoryForType(Object type) {
171:                 return supportedTypes.contains(type) || super.isFactoryForType(type);
172:         }
173:
174:         /**
175:          * This implementation substitutes the factory itself as the key for the adapter.
176:          * <!-- begin-user-doc -->
177:          * <!-- end-user-doc -->
178:          *
179:          * @generated
180:          */
181:         @Override
182:         public Adapter adapt(Notifier notifier, Object type) {
183:                 return super.adapt(notifier, this);
184:         }
185:
186:         /**
187:          * <!-- begin-user-doc -->
188:          * <!-- end-user-doc -->
189:          *
190:          * @generated
191:          */
192:         @Override
193:         public Object adapt(Object object, Object type) {
194:                 if (isFactoryForType(type)) {
195:                         Object adapter = super.adapt(object, type);
196:                         if (!(type instanceof Class<?>) || (((Class<?>) type).isInstance(adapter))) {
197:                                 return adapter;
198:                         }
199:                 }
200:
201:                 return null;
202:         }
203:
204:         /**
205:          * <!-- begin-user-doc -->
206:          * <!-- end-user-doc -->
207:          *
208:          * @generated
209:          */
210:         public List<IChildCreationExtender> getChildCreationExtenders() {
211:                 return childCreationExtenderManager.getChildCreationExtenders();
212:         }
213:
214:         /**
215:          * <!-- begin-user-doc -->
216:          * <!-- end-user-doc -->
217:          *
218:          * @generated
219:          */
220:         @Override
221:         public Collection<?> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
222:                 return childCreationExtenderManager.getNewChildDescriptors(object, editingDomain);
223:         }
224:
225:         /**
226:          * <!-- begin-user-doc -->
227:          * <!-- end-user-doc -->
228:          *
229:          * @generated
230:          */
231:         @Override
232:         public ResourceLocator getResourceLocator() {
233:                 return childCreationExtenderManager;
234:         }
235:
236:         /**
237:          * This adds a listener.
238:          * <!-- begin-user-doc -->
239:          * <!-- end-user-doc -->
240:          *
241:          * @generated
242:          */
243:         @Override
244:         public void addListener(INotifyChangedListener notifyChangedListener) {
245:                 changeNotifier.addListener(notifyChangedListener);
246:         }
247:
248:         /**
249:          * This removes a listener.
250:          * <!-- begin-user-doc -->
251:          * <!-- end-user-doc -->
252:          *
253:          * @generated
254:          */
255:         @Override
256:         public void removeListener(INotifyChangedListener notifyChangedListener) {
257:                 changeNotifier.removeListener(notifyChangedListener);
258:         }
259:
260:         /**
261:          * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
262:          * <!-- begin-user-doc -->
263:          * <!-- end-user-doc -->
264:          *
265:          * @generated
266:          */
267:         @Override
268:         public void fireNotifyChanged(Notification notification) {
269:                 changeNotifier.fireNotifyChanged(notification);
270:
271:                 if (parentAdapterFactory != null) {
272:                         parentAdapterFactory.fireNotifyChanged(notification);
273:                 }
274:         }
275:
276:         /**
277:          * This disposes all of the item providers created by this factory.
278:          * <!-- begin-user-doc -->
279:          * <!-- end-user-doc -->
280:          *
281:          * @generated
282:          */
283:         @Override
284:         public void dispose() {
285:                 if (groupItemProvider != null)
286:                         groupItemProvider.dispose();
287:         }
288:
289:         /**
290:          * A child creation extender for the {@link VViewPackage}.
291:          * <!-- begin-user-doc -->
292:          * <!-- end-user-doc -->
293:          *
294:          * @generated
295:          */
296:         public static class ViewChildCreationExtender implements IChildCreationExtender {
297:                 /**
298:                  * The switch for creating child descriptors specific to each extended class.
299:                  * <!-- begin-user-doc -->
300:                  * <!-- end-user-doc -->
301:                  *
302:                  * @generated
303:                  */
304:                 protected static class CreationSwitch extends ViewSwitch<Object> {
305:                         /**
306:                          * The child descriptors being populated.
307:                          * <!-- begin-user-doc -->
308:                          * <!-- end-user-doc -->
309:                          *
310:                          * @generated
311:                          */
312:                         protected List<Object> newChildDescriptors;
313:
314:                         /**
315:                          * The domain in which to create the children.
316:                          * <!-- begin-user-doc -->
317:                          * <!-- end-user-doc -->
318:                          *
319:                          * @generated
320:                          */
321:                         protected EditingDomain editingDomain;
322:
323:                         /**
324:                          * Creates the a switch for populating child descriptors in the given domain.
325:                          * <!-- begin-user-doc -->
326:                          * <!-- end-user-doc -->
327:                          *
328:                          * @generated
329:                          */
330:                         CreationSwitch(List<Object> newChildDescriptors, EditingDomain editingDomain) {
331:                                 this.newChildDescriptors = newChildDescriptors;
332:                                 this.editingDomain = editingDomain;
333:                         }
334:
335:                         /**
336:                          * <!-- begin-user-doc -->
337:                          * <!-- end-user-doc -->
338:                          *
339:                          * @generated
340:                          */
341:                         @Override
342:                         public Object caseView(VView object) {
343:                                 newChildDescriptors.add(createChildParameter(VViewPackage.Literals.VIEW__CHILDREN,
344:                                         VGroupFactory.eINSTANCE.createGroup()));
345:
346:                                 return null;
347:                         }
348:
349:                         /**
350:                          * <!-- begin-user-doc -->
351:                          * <!-- end-user-doc -->
352:                          *
353:                          * @generated
354:                          */
355:                         @Override
356:                         public Object caseContainer(VContainer object) {
357:                                 newChildDescriptors.add(createChildParameter(VViewPackage.Literals.CONTAINER__CHILDREN,
358:                                         VGroupFactory.eINSTANCE.createGroup()));
359:
360:                                 return null;
361:                         }
362:
363:                         /**
364:                          * <!-- begin-user-doc -->
365:                          * <!-- end-user-doc -->
366:                          *
367:                          * @generated
368:                          */
369:                         protected CommandParameter createChildParameter(Object feature, Object child) {
370:                                 return new CommandParameter(null, feature, child);
371:                         }
372:
373:                 }
374:
375:                 /**
376:                  * <!-- begin-user-doc -->
377:                  * <!-- end-user-doc -->
378:                  *
379:                  * @generated
380:                  */
381:                 @Override
382:                 public Collection<Object> getNewChildDescriptors(Object object, EditingDomain editingDomain) {
383:                         ArrayList<Object> result = new ArrayList<Object>();
384:                         new CreationSwitch(result, editingDomain).doSwitch((EObject) object);
385:                         return result;
386:                 }
387:
388:                 /**
389:                  * <!-- begin-user-doc -->
390:                  * <!-- end-user-doc -->
391:                  *
392:                  * @generated
393:                  */
394:                 @Override
395:                 public ResourceLocator getResourceLocator() {
396:                         return GroupEditPlugin.INSTANCE;
397:                 }
398:         }
399:
400: }