Skip to content

Package: TableControlRCPRenderer

TableControlRCPRenderer

nameinstructionbranchcomplexitylinemethod
TableControlRCPRenderer(VTableControl, ViewModelContext, ReportService, EMFFormsDatabindingEMF, EMFFormsLabelProvider, VTViewTemplateProvider, ImageRegistryService, EMFFormsEditSupport)
M: 11 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 10 C: 0
0%
M: 1 C: 0
0%
enableCutCopyPaste(AbstractTableViewer, EditingDomain, EStructuralFeature.Setting)
M: 14 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
renderTableControl(SWTGridCell, Composite)
M: 48 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 11 C: 0
0%
M: 1 C: 0
0%
rootDomainModelChanged()
M: 16 C: 0
0%
M: 0 C: 0
100%
M: 1 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: * Johannes Faltermeier - initial API and implementation
13: ******************************************************************************/
14: package org.eclipse.emf.ecp.view.spi.table.ui.rcp;
15:
16: import javax.inject.Inject;
17:
18: import org.eclipse.emf.ecore.EStructuralFeature.Setting;
19: import org.eclipse.emf.ecp.view.spi.context.ViewModelContext;
20: import org.eclipse.emf.ecp.view.spi.renderer.NoPropertyDescriptorFoundExeption;
21: import org.eclipse.emf.ecp.view.spi.renderer.NoRendererFoundException;
22: import org.eclipse.emf.ecp.view.spi.table.model.VTableControl;
23: import org.eclipse.emf.ecp.view.spi.table.swt.TableControlSWTRenderer;
24: import org.eclipse.emf.ecp.view.spi.util.swt.ImageRegistryService;
25: import org.eclipse.emf.ecp.view.template.model.VTViewTemplateProvider;
26: import org.eclipse.emf.edit.domain.EditingDomain;
27: import org.eclipse.emfforms.spi.common.report.AbstractReport;
28: import org.eclipse.emfforms.spi.common.report.ReportService;
29: import org.eclipse.emfforms.spi.core.services.databinding.DatabindingFailedException;
30: import org.eclipse.emfforms.spi.core.services.databinding.EMFFormsDatabinding;
31: import org.eclipse.emfforms.spi.core.services.databinding.emf.EMFFormsDatabindingEMF;
32: import org.eclipse.emfforms.spi.core.services.editsupport.EMFFormsEditSupport;
33: import org.eclipse.emfforms.spi.core.services.label.EMFFormsLabelProvider;
34: import org.eclipse.emfforms.spi.swt.core.layout.SWTGridCell;
35: import org.eclipse.emfforms.spi.swt.table.AbstractTableViewerComposite;
36: import org.eclipse.jface.viewers.AbstractTableViewer;
37: import org.eclipse.jface.viewers.TableViewer;
38: import org.eclipse.swt.widgets.Composite;
39: import org.eclipse.swt.widgets.Control;
40:
41: /**
42: * {@link TableControlSWTRenderer} which also supports cut/copy/paste.
43: *
44: * @author Johannes Faltermeier
45: *
46: */
47: public class TableControlRCPRenderer extends TableControlSWTRenderer {
48:
49:         private CutCopyPasteListener cutCopyPasteListener;
50:
51:         /**
52:          * Default constructor.
53:          *
54:          * @param vElement the view model element to be rendered
55:          * @param viewContext the view context
56:          * @param emfFormsDatabinding The {@link EMFFormsDatabinding}
57:          * @param emfFormsLabelProvider The {@link EMFFormsLabelProvider}
58:          * @param reportService The {@link ReportService}
59:          * @param vtViewTemplateProvider The {@link VTViewTemplateProvider}
60:          * @param imageRegistryService The {@link ImageRegistryService}
61:          * @param emfFormsEditSupport The {@link EMFFormsEditSupport}
62:          * @since 1.8
63:          */
64:         @Inject
65:         // CHECKSTYLE.OFF: ParameterNumber
66:         public TableControlRCPRenderer(
67:                 VTableControl vElement,
68:                 ViewModelContext viewContext,
69:                 ReportService reportService,
70:                 EMFFormsDatabindingEMF emfFormsDatabinding,
71:                 EMFFormsLabelProvider emfFormsLabelProvider,
72:                 VTViewTemplateProvider vtViewTemplateProvider,
73:                 ImageRegistryService imageRegistryService,
74:                 EMFFormsEditSupport emfFormsEditSupport) {
75:                 // CHECKSTYLE.ON: ParameterNumber
76:                 super(
77:                         vElement,
78:                         viewContext,
79:                         reportService,
80:                         emfFormsDatabinding,
81:                         emfFormsLabelProvider,
82:                         vtViewTemplateProvider,
83:                         imageRegistryService,
84:                         emfFormsEditSupport);
85:         }
86:
87:         @Override
88:         protected Control renderTableControl(SWTGridCell gridCell, Composite parent)
89:                 throws NoRendererFoundException, NoPropertyDescriptorFoundExeption {
90:                 final Control control = super.renderTableControl(gridCell, parent);
91:•                if (AbstractTableViewerComposite.class.isInstance(control)) {
92:                         try {
93:                                 final AbstractTableViewer tableViewer = AbstractTableViewerComposite.class.cast(control)
94:                                         .getTableViewer();
95:                                 final EditingDomain editingDomain = getEditingDomain(getViewModelContext().getDomainModel());
96:                                 final Setting setting = getEMFFormsDatabinding().getSetting(getDMRToMultiReference(),
97:                                         getViewModelContext().getDomainModel());
98:                                 cutCopyPasteListener = enableCutCopyPaste(tableViewer, editingDomain, setting);
99:                         } catch (final DatabindingFailedException ex) {
100:                                 getReportService().report(new AbstractReport(ex, "Enabling Cut Copy Paste failed")); //$NON-NLS-1$
101:                         }
102:                 }
103:                 return control;
104:         }
105:
106:         /**
107:          * Enables cut copy paste, if possible.
108:          *
109:          * @param tableViewer the {@link TableViewer}
110:          * @param editingDomain the {@link EditingDomain}
111:          * @param setting the {@link Setting} displayed in the table
112:          * @return the {@link CutCopyPasteListener} or <code>null</code>
113:          */
114:         static CutCopyPasteListener enableCutCopyPaste(AbstractTableViewer tableViewer, EditingDomain editingDomain,
115:                 Setting setting) {
116:•                if (!TableViewer.class.isInstance(tableViewer)) {
117:                         return null;
118:                 }
119:                 return new CutCopyPasteListener((TableViewer) tableViewer, editingDomain, setting);
120:         }
121:
122:         @Override
123:         protected void rootDomainModelChanged() throws DatabindingFailedException {
124:                 super.rootDomainModelChanged();
125:                 final Setting setting = getEMFFormsDatabinding().getSetting(getDMRToMultiReference(),
126:                         getViewModelContext().getDomainModel());
127:                 cutCopyPasteListener.rootDomainModelChanged(setting);
128:         }
129:
130: }