Skip to content

Package: StackItemProviderAdapterFactory$ViewChildCreationExtender

StackItemProviderAdapterFactory$ViewChildCreationExtender

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