Skip to content

Package: KeybindingItemProviderAdapterFactory$TemplateChildCreationExtender$CreationSwitch

KeybindingItemProviderAdapterFactory$TemplateChildCreationExtender$CreationSwitch

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