Skip to content

Package: SelectEStructuralFeatureWizardPage

SelectEStructuralFeatureWizardPage

nameinstructionbranchcomplexitylinemethod
SelectEStructuralFeatureWizardPage()
M: 10 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 4 C: 0
0%
M: 1 C: 0
0%
createControl(Composite)
M: 131 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 26 C: 0
0%
M: 1 C: 0
0%
getContentProvider(AdapterFactory)
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%
getEStructuralFeature()
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%
isPageComplete()
M: 7 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
setSelectedEPackage(EPackage)
M: 8 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
setVisible(boolean)
M: 19 C: 0
0%
M: 4 C: 0
0%
M: 3 C: 0
0%
M: 5 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2016 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: * Alexandra Buzila - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emf.ecp.view.template.internal.tooling.util;
15:
16: import java.util.LinkedHashSet;
17: import java.util.Set;
18:
19: import org.eclipse.emf.common.notify.AdapterFactory;
20: import org.eclipse.emf.ecore.EClass;
21: import org.eclipse.emf.ecore.EObject;
22: import org.eclipse.emf.ecore.EPackage;
23: import org.eclipse.emf.ecore.EStructuralFeature;
24: import org.eclipse.emf.ecp.view.model.common.edit.provider.CustomReflectiveItemProviderAdapterFactory;
25: import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
26: import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider;
27: import org.eclipse.jface.layout.GridDataFactory;
28: import org.eclipse.jface.viewers.ISelectionChangedListener;
29: import org.eclipse.jface.viewers.IStructuredSelection;
30: import org.eclipse.jface.viewers.ITreeContentProvider;
31: import org.eclipse.jface.viewers.SelectionChangedEvent;
32: import org.eclipse.jface.viewers.TreeViewer;
33: import org.eclipse.jface.viewers.Viewer;
34: import org.eclipse.jface.wizard.WizardPage;
35: import org.eclipse.swt.SWT;
36: import org.eclipse.swt.layout.GridLayout;
37: import org.eclipse.swt.widgets.Composite;
38: import org.eclipse.swt.widgets.Label;
39:
40: /**
41: * A wizard page for selecting a structural feature.
42: *
43: * @author Eugen Neufeld
44: *
45: */
46: public class SelectEStructuralFeatureWizardPage extends WizardPage {
47:         /**
48:          * Content Provider for {@link EStructuralFeature}.
49:          *
50:          * @author Eugen Neufeld
51:          *
52:          */
53:         private static final class EStructuralFeatureContentProvider implements ITreeContentProvider {
54:                 @Override
55:                 public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
56:                         viewer.refresh();
57:                 }
58:
59:                 @Override
60:                 public void dispose() {
61:                         // TODO Auto-generated method stub
62:                 }
63:
64:                 @Override
65:                 public boolean hasChildren(Object element) {
66:
67:                         if (EPackage.class.isInstance(element)) {
68:                                 return true;
69:                         }
70:                         if (EClass.class.isInstance(element)) {
71:                                 return true;
72:                         }
73:                         return false;
74:                 }
75:
76:                 @Override
77:                 public Object getParent(Object element) {
78:                         // TODO Auto-generated method stub
79:                         return null;
80:                 }
81:
82:                 @Override
83:                 public Object[] getElements(Object inputElement) {
84:                         return getChildren(inputElement);
85:                 }
86:
87:                 @Override
88:                 public Object[] getChildren(Object parentElement) {
89:                         if (EPackage.class.isInstance(parentElement)) {
90:                                 final Set<Object> children = new LinkedHashSet<Object>();
91:                                 children.addAll(EPackage.class.cast(parentElement).getESubpackages());
92:                                 for (final EObject obj : EPackage.class.cast(parentElement).getEClassifiers()) {
93:                                         if (EClass.class.isInstance(obj)) {
94:                                                 final EClass eClass = EClass.class.cast(obj);
95:                                                 if (!eClass.isAbstract() && !eClass.isInterface()) {
96:                                                         children.add(obj);
97:                                                 }
98:                                         }
99:                                 }
100:                                 return children.toArray();
101:                         }
102:                         if (EClass.class.isInstance(parentElement)) {
103:                                 return EClass.class.cast(parentElement).getEAllStructuralFeatures().toArray();
104:                         }
105:                         return null;
106:                 }
107:         }
108:
109:         private Composite container;
110:         private EPackage selectedEPackage;
111:         private EStructuralFeature selectedEStructuralFeature;
112:
113:         /**
114:          * @param selectedEPackage the selectedEPackage to set
115:          */
116:         public void setSelectedEPackage(EPackage selectedEPackage) {
117:                 this.selectedEPackage = selectedEPackage;
118:                 treeViewer.setInput(selectedEPackage);
119:         }
120:
121:         private TreeViewer treeViewer;
122:
123:         /**
124:          * Constructor.
125:          */
126:         public SelectEStructuralFeatureWizardPage() {
127:                 super("Select EStructuralFeature"); //$NON-NLS-1$
128:                 setTitle("Select EStructuralFeature"); //$NON-NLS-1$
129:                 setDescription("Select an EEstructuralFeature for the Domain Model Reference Selector."); //$NON-NLS-1$
130:         }
131:
132:         /**
133:          * {@inheritDoc}
134:          *
135:          * @see org.eclipse.jface.dialogs.DialogPage#setVisible(boolean)
136:          */
137:         @Override
138:         public void setVisible(boolean visible) {
139:                 super.setVisible(visible);
140:•                if (treeViewer != null && selectedEPackage != null) {
141:                         treeViewer.setInput(selectedEPackage);
142:                         treeViewer.expandToLevel(2);
143:                 }
144:         }
145:
146:         @Override
147:         public void createControl(Composite parent) {
148:
149:                 container = new Composite(parent, SWT.NONE);
150:                 final GridLayout layout = new GridLayout();
151:                 layout.verticalSpacing = 10;
152:                 layout.horizontalSpacing = 5;
153:                 container.setLayout(layout);
154:                 GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).applyTo(container);
155:                 layout.numColumns = 1;
156:
157:                 final Label label1 = new Label(container, SWT.NONE);
158:                 label1.setText("Select an EStructuralFeature:"); //$NON-NLS-1$
159:
160:                 final ComposedAdapterFactory adapterFactory = new ComposedAdapterFactory(new AdapterFactory[] {
161:                         new CustomReflectiveItemProviderAdapterFactory(),
162:                         new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE) });
163:                 final AdapterFactoryLabelProvider labelProvider = new AdapterFactoryLabelProvider(adapterFactory);
164:
165:                 treeViewer = new TreeViewer(container, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
166:                 treeViewer.setContentProvider(getContentProvider(adapterFactory));
167:                 treeViewer.setLabelProvider(labelProvider);
168:                 treeViewer.setInput(selectedEPackage);
169:                 treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
170:
171:                         @Override
172:                         public void selectionChanged(SelectionChangedEvent event) {
173:                                 if (event.getSelection() instanceof IStructuredSelection) {
174:                                         final IStructuredSelection selection = (IStructuredSelection) event.getSelection();
175:
176:                                         final Object selectedItem = selection.getFirstElement();
177:                                         if (EStructuralFeature.class.isInstance(selectedItem)) {
178:                                                 selectedEStructuralFeature = (EStructuralFeature) selectedItem;
179:                                                 setPageComplete(true);
180:                                         } else {
181:                                                 selectedEStructuralFeature = null;
182:                                                 setPageComplete(false);
183:                                         }
184:                                 }
185:                         }
186:                 });
187:                 treeViewer.expandToLevel(2);
188:                 GridDataFactory.fillDefaults().align(SWT.FILL, SWT.FILL).grab(true, true).hint(SWT.DEFAULT, 200)
189:                         .applyTo(treeViewer.getControl());
190:                 container.layout(true);
191:                 container.pack();
192:
193:                 setControl(container);
194:                 setPageComplete(false);
195:         }
196:
197:         private ITreeContentProvider getContentProvider(final AdapterFactory adapterFactory) {
198:                 return new EStructuralFeatureContentProvider();
199:         }
200:
201:         /**
202:          * Returns the selected {@link EStructuralFeature}.
203:          *
204:          * @return the selected {@link EStructuralFeature}
205:          */
206:         public EStructuralFeature getEStructuralFeature() {
207:                 return selectedEStructuralFeature;
208:         }
209:
210:         /**
211:          * {@inheritDoc}
212:          *
213:          * @see org.eclipse.jface.wizard.WizardPage#isPageComplete()
214:          */
215:         @Override
216:         public boolean isPageComplete() {
217:•                return selectedEStructuralFeature != null;
218:         }
219: }