Skip to content

Package: AlignmentItemProviderAdapterFactory$TemplateChildCreationExtender

AlignmentItemProviderAdapterFactory$TemplateChildCreationExtender

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