Skip to content

Package: CreateProjectCompositeImpl

CreateProjectCompositeImpl

nameinstructionbranchcomplexitylinemethod
CreateProjectCompositeImpl(List)
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%
checkComplete()
M: 29 C: 0
0%
M: 10 C: 0
0%
M: 6 C: 0
0%
M: 5 C: 0
0%
M: 1 C: 0
0%
createUI(Composite)
M: 220 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 34 C: 0
0%
M: 1 C: 0
0%
dispose()
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%
getProjectName()
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%
getProperties()
M: 8 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
getProvider()
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%
setListener(CreateProjectComposite.CreateProjectChangeListener)
M: 18 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 6 C: 0
0%
M: 1 C: 0
0%
updateUI()
M: 38 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 12 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /*******************************************************************************
2: * Copyright (c) 2011-2012 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: * Eugen Neufeld - initial API and implementation
13: *
14: *******************************************************************************/
15: package org.eclipse.emf.ecp.internal.ui.composites;
16:
17: import java.util.List;
18:
19: import org.eclipse.emf.ecp.core.ECPProvider;
20: import org.eclipse.emf.ecp.core.util.ECPProperties;
21: import org.eclipse.emf.ecp.core.util.ECPUtil;
22: import org.eclipse.emf.ecp.internal.ui.Messages;
23: import org.eclipse.emf.ecp.internal.ui.model.ProvidersLabelProvider;
24: import org.eclipse.emf.ecp.spi.ui.CompositeStateObserver;
25: import org.eclipse.emf.ecp.spi.ui.UIProvider;
26: import org.eclipse.emf.ecp.spi.ui.UIProviderRegistry;
27: import org.eclipse.emf.ecp.ui.common.CreateProjectComposite;
28: import org.eclipse.jface.viewers.ArrayContentProvider;
29: import org.eclipse.jface.viewers.ComboViewer;
30: import org.eclipse.jface.viewers.ISelectionChangedListener;
31: import org.eclipse.jface.viewers.IStructuredSelection;
32: import org.eclipse.jface.viewers.SelectionChangedEvent;
33: import org.eclipse.jface.viewers.StructuredSelection;
34: import org.eclipse.jface.viewers.ViewerSorter;
35: import org.eclipse.swt.SWT;
36: import org.eclipse.swt.custom.StackLayout;
37: import org.eclipse.swt.events.ModifyEvent;
38: import org.eclipse.swt.events.ModifyListener;
39: import org.eclipse.swt.layout.GridData;
40: import org.eclipse.swt.layout.GridLayout;
41: import org.eclipse.swt.widgets.Combo;
42: import org.eclipse.swt.widgets.Composite;
43: import org.eclipse.swt.widgets.Control;
44: import org.eclipse.swt.widgets.Label;
45: import org.eclipse.swt.widgets.Text;
46:
47: /**
48: * This class generates a composite on top of a parent composite containing all ui elements necessary to create an
49: * ecpproject.
50: *
51: * @author Eugen Neufeld
52: *
53: */
54: public class CreateProjectCompositeImpl implements CreateProjectComposite {
55:
56:         /**
57:          * Constructor for the Project composite.
58:          *
59:          * @param providers list of valid providers
60:          */
61:         public CreateProjectCompositeImpl(List<ECPProvider> providers) {
62:                 this.providers = providers;
63:         }
64:
65:         private CreateProjectChangeListener listener;
66:
67:         private final List<ECPProvider> providers;
68:
69:         private ECPProvider provider;
70:
71:         private String projectName;
72:
73:         private StackLayout providerStackLayout;
74:
75:         private Composite providerStack;
76:
77:         private boolean status;
78:         private boolean topStatus;
79:         private boolean compositeStatus;
80:
81:         private ECPProperties properties;
82:
83:         /** {@inheritDoc} **/
84:         @Override
85:         public Composite createUI(Composite parent) {
86:
87:                 final Composite composite = new Composite(parent, SWT.NONE);
88:                 composite.setLayoutData(new GridData(GridData.FILL_BOTH));
89:                 composite.setLayout(new GridLayout(2, false));
90:                 ComboViewer providersViewer = null;
91:
92:•                if (providers.size() > 1) {
93:                         final Label label = new Label(composite, SWT.NONE);
94:                         label.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1));
95:                         label.setText(Messages.UICreateProject_ProjectProvider + ":");//$NON-NLS-1$
96:
97:                         providersViewer = new ComboViewer(composite, SWT.NONE | SWT.READ_ONLY);
98:                         final Combo combo = providersViewer.getCombo();
99:                         final GridData gdCombo = new GridData(SWT.FILL, SWT.BEGINNING, true, false, 1, 1);
100:                         gdCombo.minimumWidth = 150;
101:                         combo.setLayoutData(gdCombo);
102:
103:                         providersViewer.setContentProvider(new ArrayContentProvider());
104:                         providersViewer.setLabelProvider(new ProvidersLabelProvider());
105:                         providersViewer.setSorter(new ViewerSorter());
106:                         providersViewer.setInput(providers);
107:
108:                         providersViewer.setSelection(new StructuredSelection(providers.get(0)));
109:
110:                         providersViewer.addSelectionChangedListener(new ISelectionChangedListener() {
111:                                 @Override
112:                                 public void selectionChanged(SelectionChangedEvent event) {
113:                                         final IStructuredSelection selection = (IStructuredSelection) event.getSelection();
114:                                         provider = (ECPProvider) selection.getFirstElement();
115:                                         updateUI();
116:                                         if (listener != null) {
117:                                                 listener.providerChanged(provider);
118:                                         }
119:                                 }
120:                         });
121:
122:                 }
123:
124:                 provider = providers.get(0);
125:                 final Label labelName = new Label(composite, SWT.NONE);
126:                 labelName.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, false, false, 1, 1));
127:                 labelName.setText(Messages.UICreateProject_ProjectName + ":"); // $//$NON-NLS-1$
128:
129:                 final Text textProjectName = new Text(composite, SWT.BORDER | SWT.SINGLE);
130:                 textProjectName.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 1, 1));
131:                 textProjectName.addModifyListener(new ModifyListener() {
132:
133:                         @Override
134:                         public void modifyText(ModifyEvent e) {
135:                                 projectName = textProjectName.getText();
136:                                 if (projectName.equals("")) //$NON-NLS-1$
137:                                 {
138:                                         projectName = null;
139:
140:                                 }
141:                                 if (projectName == null) {
142:                                         topStatus = false;
143:                                 } else if (ECPUtil.getECPProjectManager().getProject(projectName) != null) {
144:                                         topStatus = false;
145:                                 } else {
146:                                         topStatus = true;
147:                                 }
148:
149:                                 if (listener != null) {
150:                                         listener.projectNameChanged(projectName);
151:                                 }
152:
153:                                 checkComplete();
154:                         }
155:                 });
156:
157:                 final Label seperator = new Label(composite, SWT.SEPARATOR | SWT.HORIZONTAL);
158:                 seperator.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, false, false, 2, 2));
159:
160:                 providerStackLayout = new StackLayout();
161:                 providerStack = new Composite(composite, SWT.NONE);
162:                 providerStack.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
163:                 providerStack.setLayout(providerStackLayout);
164:                 updateUI();
165:                 return composite;
166:         }
167:
168:         private void updateUI() {
169:                 final UIProvider uiProvider = UIProviderRegistry.INSTANCE.getUIProvider(provider);
170:                 final Control newProjectUI = uiProvider.createNewProjectUI(providerStack, new CompositeStateObserver() {
171:
172:                         @Override
173:                         public void compositeChangedState(Composite caller, boolean complete, ECPProperties projectProperties) {
174:                                 compositeStatus = complete;
175:                                 properties = projectProperties;
176:                                 checkComplete();
177:
178:                         }
179:                 }, ECPUtil.createProperties());
180:
181:•                if (newProjectUI != null) {
182:                         providerStackLayout.topControl = newProjectUI;
183:                 } else {
184:                         providerStackLayout.topControl = null;
185:                         compositeStatus = true;
186:                         properties = null;
187:                         checkComplete();
188:                 }
189:                 providerStack.layout();
190:         }
191:
192:         private void checkComplete() {
193:•                if (status != (topStatus && compositeStatus)) {
194:•                        status = !status;
195:•                        if (listener != null) {
196:                                 listener.completeStatusChanged(status);
197:                         }
198:                 }
199:         }
200:
201:         /** {@inheritDoc} **/
202:         @Override
203:         public ECPProvider getProvider() {
204:                 return provider;
205:         }
206:
207:         /** {@inheritDoc} **/
208:         @Override
209:         public String getProjectName() {
210:                 return projectName;
211:         }
212:
213:         /** {@inheritDoc} **/
214:         @Override
215:         public void setListener(CreateProjectChangeListener listener) {
216:                 this.listener = listener;
217:•                if (listener != null) {
218:                         listener.completeStatusChanged(status);
219:                         listener.projectNameChanged(projectName);
220:                         listener.providerChanged(provider);
221:                 }
222:         }
223:
224:         /** {@inheritDoc} **/
225:         @Override
226:         public ECPProperties getProperties() {
227:•                return properties == null ? ECPUtil.createProperties() : properties;
228:         }
229:
230:         /** {@inheritDoc} **/
231:         @Override
232:         public void dispose() {
233:         }
234:
235: }