Skip to content

Package: UIProviderRegistryImpl

UIProviderRegistryImpl

nameinstructionbranchcomplexitylinemethod
UIProviderRegistryImpl()
M: 9 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
doActivate()
M: 6 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
doDeactivate()
M: 7 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
getUIProvider(ECPProvider)
M: 50 C: 0
0%
M: 8 C: 0
0%
M: 5 C: 0
0%
M: 11 C: 0
0%
M: 1 C: 0
0%
getUIProvider(Object)
M: 18 C: 0
0%
M: 4 C: 0
0%
M: 3 C: 0
0%
M: 5 C: 0
0%
M: 1 C: 0
0%
getUIProvider(String)
M: 5 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
getUIProviders()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
hasUIProviders()
M: 3 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
notifyObservers(Collection, Collection)
M: 1 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
static {...}
M: 5 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /********************************************************************************
2: * Copyright (c) 2011 Eike Stepper (Berlin, Germany) 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: * Eike Stepper - initial API and implementation
13: ********************************************************************************/
14: package org.eclipse.emf.ecp.internal.ui;
15:
16: import java.util.Collection;
17:
18: import org.eclipse.core.runtime.IConfigurationElement;
19: import org.eclipse.emf.ecp.core.ECPProvider;
20: import org.eclipse.emf.ecp.core.util.ECPCheckoutSource;
21: import org.eclipse.emf.ecp.core.util.ECPContainer;
22: import org.eclipse.emf.ecp.core.util.ECPProperties;
23: import org.eclipse.emf.ecp.core.util.ECPProviderAware;
24: import org.eclipse.emf.ecp.core.util.observer.ECPObserver;
25: import org.eclipse.emf.ecp.internal.core.util.ElementRegistry;
26: import org.eclipse.emf.ecp.internal.core.util.ExtensionParser;
27: import org.eclipse.emf.ecp.internal.core.util.ExtensionParser.ExtensionDescriptor;
28: import org.eclipse.emf.ecp.spi.core.InternalProvider;
29: import org.eclipse.emf.ecp.spi.ui.CompositeStateObserver;
30: import org.eclipse.emf.ecp.spi.ui.DefaultUIProvider;
31: import org.eclipse.emf.ecp.spi.ui.UIProvider;
32: import org.eclipse.emf.ecp.spi.ui.UIProviderRegistry;
33: import org.eclipse.jface.action.IMenuManager;
34: import org.eclipse.net4j.util.AdapterUtil;
35: import org.eclipse.swt.graphics.Image;
36: import org.eclipse.swt.widgets.Composite;
37: import org.eclipse.swt.widgets.Control;
38: import org.eclipse.swt.widgets.Text;
39:
40: /**
41: * @author Eike Stepper
42: * @author Eugen Neufeld
43: */
44: public final class UIProviderRegistryImpl extends ElementRegistry<UIProvider, ECPObserver> implements
45:         UIProviderRegistry {
46:         /**
47:          * This is the Instance used by the {@link UIProviderRegistry} for providing its instance.
48:          */
49:         public static final UIProviderRegistryImpl INSTANCE = new UIProviderRegistryImpl();
50:
51:         private final UIProviderParser extensionParser = new UIProviderParser();
52:
53:         private UIProviderRegistryImpl() {
54:         }
55:
56:         /** {@inheritDoc} */
57:         @Override
58:         public UIProvider getUIProvider(Object adaptable) {
59:•                if (adaptable instanceof ECPProviderAware) {
60:                         final ECPProvider provider = ((ECPProviderAware) adaptable).getProvider();
61:•                        if (provider != null) {
62:                                 return getUIProvider(provider);
63:                         }
64:                 }
65:
66:                 return AdapterUtil.adapt(adaptable, UIProvider.class);
67:         }
68:
69:         private synchronized UIProvider getUIProvider(ECPProvider provider) {
70:                 UIProvider uiProvider = (UIProvider) ((InternalProvider) provider).getUIProvider();
71:•                if (uiProvider != null) {
72:                         return uiProvider;
73:                 }
74:
75:•                for (final UIProvider ui : getUIProviders()) {
76:•                        if (ui.getProvider().equals(provider)) {
77:                                 uiProvider = ui;
78:                                 break;
79:                         }
80:                 }
81:
82:•                if (uiProvider == null) {
83:                         uiProvider = new DefaultUIProvider(provider.getName() + ".default"); //$NON-NLS-1$
84:                 }
85:
86:                 ((InternalProvider) provider).setUIProvider(uiProvider);
87:                 return uiProvider;
88:         }
89:
90:         /** {@inheritDoc} */
91:         @Override
92:         public UIProvider getUIProvider(String name) {
93:                 return getElement(name);
94:         }
95:
96:         /** {@inheritDoc} */
97:         @Override
98:         public Collection<UIProvider> getUIProviders() {
99:                 return getElements();
100:         }
101:
102:         /** {@inheritDoc} */
103:         @Override
104:         public boolean hasUIProviders() {
105:                 return hasElements();
106:         }
107:
108:         // @Override
109:         // protected UIProvider[] createElementArray(int size) {
110:         // return new UIProvider[size];
111:         // }
112:
113:         @Override
114:         protected void notifyObservers(Collection<UIProvider> oldElements, Collection<UIProvider> newElements)
115:                 throws Exception {
116:         }
117:
118:         @Override
119:         protected void doActivate() throws Exception {
120:                 super.doActivate();
121:                 extensionParser.activate();
122:         }
123:
124:         @Override
125:         protected void doDeactivate() throws Exception {
126:                 extensionParser.deactivate();
127:                 super.doDeactivate();
128:         }
129:
130:         /**
131:          * @author Eike Stepper
132:          */
133:         private final class UIProviderParser extends ExtensionParser<UIProvider> {
134:                 private static final String EXTENSION_POINT_NAME = "uiProviders"; //$NON-NLS-1$
135:
136:                 UIProviderParser() {
137:                         super(UIProviderRegistryImpl.this, Activator.PLUGIN_ID, EXTENSION_POINT_NAME);
138:                 }
139:
140:                 @Override
141:                 protected UIProvider createElement(String name, IConfigurationElement configurationElement) {
142:                         final UIProviderDescriptor descriptor = new UIProviderDescriptor(name, configurationElement);
143:                         descriptor.setLabel(configurationElement.getDeclaringExtension().getLabel());
144:                         descriptor.setDescription(configurationElement.getAttribute("description")); //$NON-NLS-1$
145:                         return descriptor;
146:                 }
147:         }
148:
149:         /**
150:          * @author Eike Stepper
151:          */
152:         private final class UIProviderDescriptor extends ExtensionDescriptor<UIProvider> implements UIProvider {
153:                 UIProviderDescriptor(String name, IConfigurationElement configurationElement) {
154:                         super(UIProviderRegistryImpl.this, name, TYPE, configurationElement);
155:                 }
156:
157:                 @Override
158:                 public InternalProvider getProvider() {
159:                         return getResolvedElement().getProvider();
160:                 }
161:
162:                 @Override
163:                 public <T> T getAdapter(Object adaptable, Class<T> adapterType) {
164:                         return getResolvedElement().getAdapter(adaptable, adapterType);
165:                 }
166:
167:                 @Override
168:                 public Object getAdapter(@SuppressWarnings("rawtypes") Class adapterType) {
169:                         return getResolvedElement().getAdapter(adapterType);
170:                 }
171:
172:                 @Override
173:                 public String getText(Object element) {
174:                         return getResolvedElement().getText(element);
175:                 }
176:
177:                 @Override
178:                 public Image getImage(Object element) {
179:                         return getResolvedElement().getImage(element);
180:                 }
181:
182:                 @Override
183:                 public void fillContextMenu(IMenuManager manager, ECPContainer context, Object[] elements) {
184:                         getResolvedElement().fillContextMenu(manager, context, elements);
185:                 }
186:
187:                 @Override
188:                 public Control createAddRepositoryUI(Composite parent, ECPProperties repositoryProperties,
189:                         Text repositoryNameText, Text repositoryLabelText, Text repositoryDescriptionText) {
190:                         return getResolvedElement().createAddRepositoryUI(parent, repositoryProperties, repositoryNameText,
191:                                 repositoryLabelText, repositoryDescriptionText);
192:                 }
193:
194:                 @Override
195:                 public Control createCheckoutUI(Composite parent, ECPCheckoutSource checkoutSource,
196:                         ECPProperties projectProperties) {
197:                         return getResolvedElement().createCheckoutUI(parent, checkoutSource, projectProperties);
198:                 }
199:
200:                 @Override
201:                 public Control createNewProjectUI(Composite parent, CompositeStateObserver observer,
202:                         ECPProperties projectProperties) {
203:                         return getResolvedElement().createNewProjectUI(parent, observer, projectProperties);
204:                 }
205:         }
206: }