Skip to content

Package: ValidationLabelProvider

ValidationLabelProvider

nameinstructionbranchcomplexitylinemethod
ValidationLabelProvider()
M: 0 C: 40
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 8
100%
M: 0 C: 1
100%
addListener(ILabelProviderListener)
M: 0 C: 1
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
M: 0 C: 1
100%
dispose()
M: 0 C: 13
100%
M: 0 C: 0
100%
M: 0 C: 1
100%
M: 0 C: 5
100%
M: 0 C: 1
100%
getColumnImage(Object, int)
M: 0 C: 12
100%
M: 0 C: 2
100%
M: 0 C: 2
100%
M: 0 C: 4
100%
M: 0 C: 1
100%
getColumnText(Object, int)
M: 4 C: 38
90%
M: 2 C: 6
75%
M: 2 C: 4
67%
M: 2 C: 9
82%
M: 0 C: 1
100%
getFeatureName(EObject, EStructuralFeature)
M: 1 C: 42
98%
M: 2 C: 2
50%
M: 2 C: 1
33%
M: 0 C: 11
100%
M: 0 C: 1
100%
getImageForSeverity(int)
M: 11 C: 5
31%
M: 5 C: 1
17%
M: 5 C: 1
17%
M: 5 C: 2
29%
M: 0 C: 1
100%
isLabelProperty(Object, String)
M: 2 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
removeListener(ILabelProviderListener)
M: 0 C: 1
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-2019 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: * Christian W. Damus - bug 546899
14: ******************************************************************************/
15: package org.eclipse.emf.ecp.internal.ui.validation;
16:
17: import java.util.List;
18: import java.util.MissingResourceException;
19:
20: import org.eclipse.emf.common.notify.AdapterFactory;
21: import org.eclipse.emf.common.util.Diagnostic;
22: import org.eclipse.emf.common.util.ResourceLocator;
23: import org.eclipse.emf.ecore.EClass;
24: import org.eclipse.emf.ecore.EObject;
25: import org.eclipse.emf.ecore.EStructuralFeature;
26: import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
27: import org.eclipse.emf.edit.provider.IItemLabelProvider;
28: import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory;
29: import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
30: import org.eclipse.jface.viewers.ILabelProviderListener;
31: import org.eclipse.jface.viewers.ITableLabelProvider;
32: import org.eclipse.swt.graphics.Image;
33:
34: /**
35: * {@link ITableLabelProvider} for displaying {@link org.eclipse.emf.common.util.Diagnostic Diagnostics} in a Tree with
36: * columns.
37: *
38: * @author jfaltermeier
39: *
40: */
41: public class ValidationLabelProvider implements ITableLabelProvider {
42:
43:         private final ComposedAdapterFactory composedAdapterFactory;
44:         private final AdapterFactoryLabelProvider labelProvider;
45:         private final Image warning;
46:         private final Image error;
47:
48:         /**
49:          * Default constructor.
50:          */
51:         public ValidationLabelProvider() {
52:                 composedAdapterFactory = new ComposedAdapterFactory(new AdapterFactory[] {
53:                         new ReflectiveItemProviderAdapterFactory(),
54:                         new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE) });
55:                 labelProvider = new AdapterFactoryLabelProvider(composedAdapterFactory);
56:                 error = Activator.getImageDescriptor("icons/error_decorate.png").createImage(); //$NON-NLS-1$
57:                 warning = Activator.getImageDescriptor("icons/warning_decorate.png").createImage(); //$NON-NLS-1$
58:         }
59:
60:         /**
61:          * {@inheritDoc}
62:          *
63:          * @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
64:          */
65:         @Override
66:         public void addListener(ILabelProviderListener listener) {
67:         }
68:
69:         /**
70:          * {@inheritDoc}
71:          *
72:          * @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
73:          */
74:         @Override
75:         public void dispose() {
76:                 composedAdapterFactory.dispose();
77:                 labelProvider.dispose();
78:                 error.dispose();
79:                 warning.dispose();
80:         }
81:
82:         /**
83:          * {@inheritDoc}
84:          *
85:          * @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
86:          */
87:         @Override
88:         public boolean isLabelProperty(Object element, String property) {
89:                 return false;
90:         }
91:
92:         /**
93:          * {@inheritDoc}
94:          *
95:          * @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
96:          */
97:         @Override
98:         public void removeListener(ILabelProviderListener listener) {
99:         }
100:
101:         /**
102:          * {@inheritDoc}
103:          *
104:          * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
105:          */
106:         @Override
107:         public Image getColumnImage(Object element, int columnIndex) {
108:                 final Diagnostic diagnostic = (Diagnostic) element;
109:•                switch (columnIndex) {
110:                 case 0:
111:                         return getImageForSeverity(diagnostic.getSeverity());
112:                 default:
113:                         return null;
114:                 }
115:         }
116:
117:         private Image getImageForSeverity(int severity) {
118:•                switch (severity) {
119:                 case Diagnostic.OK:
120:                         return null;
121:                 case Diagnostic.INFO:
122:                         return null;
123:                 case Diagnostic.WARNING:
124:                         return warning;
125:                 case Diagnostic.ERROR:
126:                         return error;
127:                 case Diagnostic.CANCEL:
128:                         return null;
129:                 default:
130:                         return null;
131:                 }
132:         }
133:
134:         /**
135:          * {@inheritDoc}
136:          *
137:          * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
138:          */
139:         @Override
140:         public String getColumnText(Object element, int columnIndex) {
141:                 final Diagnostic diagnostic = (Diagnostic) element;
142:                 final List<?> data = diagnostic.getData();
143:•                switch (columnIndex) {
144:                 case 0:
145:                         return diagnostic.getMessage();
146:                 case 1:
147:•                        if (data.size() > 0) {
148:                                 return labelProvider.getText(data.get(0));
149:                         }
150:                         return null;
151:                 case 2:
152:•                        if (data.size() > 1) {
153:                                 return getFeatureName((EObject) data.get(0), (EStructuralFeature) data.get(1));
154:                         }
155:                         return null;
156:                 default:
157:                         return null;
158:                 }
159:         }
160:
161:         /**
162:          * Get the localized name of a {@code feature} of an object.
163:          *
164:          * @param owner the object that owns the {@code feature}
165:          * @param feature the feature for which to get the localized name
166:          * @return the localized feature name, or just its simple name if not found
167:          */
168:         protected String getFeatureName(EObject owner, EStructuralFeature feature) {
169:                 String result = feature.getName();
170:
171:                 final IItemLabelProvider provider = (IItemLabelProvider) composedAdapterFactory.adapt(owner,
172:                         IItemLabelProvider.class);
173:•                if (provider instanceof ResourceLocator) {
174:                         final EClass eClass = feature.getEContainingClass();
175:                         final String key = String.format("_UI_%s_%s_feature", eClass.getName(), result); //$NON-NLS-1$
176:
177:                         try {
178:                                 final String l10nResult = ((ResourceLocator) provider).getString(key);
179:•                                if (l10nResult != null) {
180:                                         result = l10nResult;
181:                                 }
182:                         } catch (final MissingResourceException e) {
183:                                 // That's okay. We'll just go with the feature name
184:                         }
185:                 }
186:
187:                 return result;
188:         }
189:
190: }