Skip to content

Package: EmailControlRenderer

EmailControlRenderer

nameinstructionbranchcomplexitylinemethod
EmailControlRenderer(VControl, ViewModelContext, ReportService, EMFFormsDatabinding, EMFFormsLabelProvider, VTViewTemplateProvider, EMFFormsEditSupport)
M: 10 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
createSWTControl(Composite)
M: 41 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 9 C: 0
0%
M: 1 C: 0
0%

Coverage

1: /**
2: * Copyright (c) 2011-2014 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: * EclipseSource Munich - initial API and implementation
13: */
14: package org.eclipse.emf.ecp.makeithappen.ui.emailcontrol;
15:
16: import java.awt.Desktop;
17: import java.io.IOException;
18: import java.net.URI;
19:
20: import javax.inject.Inject;
21:
22: import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
23: import org.eclipse.emf.ecp.view.spi.core.swt.renderer.TextControlSWTRenderer;
24: import org.eclipse.emf.ecp.view.spi.model.VControl;
25: import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
26: import org.eclipse.emfforms.spi.common.report.ReportService;
27: import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
28: import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedReport;
29: import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
30: import org.eclipse.emfforms.spi.core.services.editsupport.EMFFormsEditSupport;
31: import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
32: import org.eclipse.jface.layout.GridDataFactory;
33: import org.eclipse.jface.layout.GridLayoutFactory;
34: import org.eclipse.swt.SWT;
35: import org.eclipse.swt.events.SelectionAdapter;
36: import org.eclipse.swt.events.SelectionEvent;
37: import org.eclipse.swt.widgets.Button;
38: import org.eclipse.swt.widgets.Composite;
39: import org.eclipse.swt.widgets.Control;
40:
41: /**
42: * A renderer to render an e-mail address.
43: *
44: * @author Lucas
45: */
46: public class EmailControlRenderer extends TextControlSWTRenderer {
47:
48:         /**
49:          * Default constructor.
50:          *
51:          * @param vElement the view model element to be rendered
52:          * @param viewContext the view context
53:          * @param reportService The {@link ReportService}
54:          * @param emfFormsDatabinding The {@link EMFFormsDatabinding}
55:          * @param emfFormsLabelProvider The {@link EMFFormsLabelProvider}
56:          * @param vtViewTemplateProvider The {@link VTViewTemplateProvider}
57:          * @param emfFormsEditSupport The {@link EMFFormsEditSupport}
58:          */
59:         @Inject
60:         public EmailControlRenderer(VControl vElement, ViewModelContext viewContext,
61:                 ReportService reportService,
62:                 EMFFormsDatabinding emfFormsDatabinding, EMFFormsLabelProvider emfFormsLabelProvider,
63:                 VTViewTemplateProvider vtViewTemplateProvider, EMFFormsEditSupport emfFormsEditSupport) {
64:                 super(vElement, viewContext, reportService, emfFormsDatabinding, emfFormsLabelProvider, vtViewTemplateProvider,
65:                         emfFormsEditSupport);
66:         }
67:
68:         @Override
69:         protected Control createSWTControl(Composite parent) {
70:                 final Composite main = new Composite(parent, SWT.NONE);
71:                 GridLayoutFactory.fillDefaults().numColumns(2).applyTo(main);
72:                 GridDataFactory.fillDefaults().grab(true, false)
73:                         .align(SWT.FILL, SWT.BEGINNING).applyTo(main);
74:                 final Control control = super.createSWTControl(main);
75:                 final Button button = new Button(main, SWT.PUSH);
76:                 button.setText("Send Mail"); //$NON-NLS-1$
77:                 button.addSelectionListener(new SelectionAdapter() {
78:                         @Override
79:                         public void widgetSelected(SelectionEvent e) {
80:                                 try {
81:                                         Desktop.getDesktop().mail(
82:                                                 URI.create("mailto:" //$NON-NLS-1$
83:                                                         + getModelValue().getValue()));
84:                                 } catch (final IOException e1) {
85:                                         // ignore failure to open mailto
86:                                 } catch (final DatabindingFailedException ex) {
87:                                         getReportService().report(new DatabindingFailedReport(ex));
88:                                         // ignore failure to open mailto
89:                                 }
90:                         }
91:                 });
92:                 return control;
93:         }
94:
95: }