Skip to content

Package: GridViewerColumnBuilder

GridViewerColumnBuilder

nameinstructionbranchcomplexitylinemethod
GridViewerColumnBuilder(ColumnConfiguration)
M: 4 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
configure(GridTableViewer, GridViewerColumn)
M: 9 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 3 C: 0
0%
M: 1 C: 0
0%
configureEditingSupport(GridViewerColumn, GridTableViewer)
M: 14 C: 0
0%
M: 2 C: 0
0%
M: 2 C: 0
0%
M: 4 C: 0
0%
M: 1 C: 0
0%
configureHideShow(GridTableViewer, GridViewerColumn)
M: 10 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 2 C: 0
0%
M: 1 C: 0
0%
configureViewerColumn(GridViewerColumn)
M: 22 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 5 C: 0
0%
M: 1 C: 0
0%
createViewerColumn(GridTableViewer)
M: 8 C: 0
0%
M: 0 C: 0
100%
M: 1 C: 0
0%
M: 1 C: 0
0%
M: 1 C: 0
0%
extractShowListener(GridColumn)
M: 32 C: 0
0%
M: 6 C: 0
0%
M: 4 C: 0
0%
M: 5 C: 0
0%
M: 1 C: 0
0%
getTableColumn(GridViewerColumn)
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%

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: * jonas - initial API and implementation
13: * Lucas Koehler - RAP adaptions
14: ******************************************************************************/
15: package org.eclipse.emf.ecp.view.spi.table.nebula.grid.rap;
16:
17: import org.eclipse.emfforms.common.Optional;
18: import org.eclipse.emfforms.common.Property;
19: import org.eclipse.emfforms.common.Property.ChangeListener;
20: import org.eclipse.emfforms.spi.swt.table.AbstractTableViewerColumnBuilder;
21: import org.eclipse.emfforms.spi.swt.table.ColumnConfiguration;
22: import org.eclipse.jface.viewers.EditingSupport;
23: import org.eclipse.nebula.jface.gridviewer.GridTableViewer;
24: import org.eclipse.nebula.jface.gridviewer.GridViewerColumn;
25: import org.eclipse.nebula.widgets.grid.GridColumn;
26: import org.eclipse.swt.SWT;
27: import org.eclipse.swt.custom.ControlEditor;
28: import org.eclipse.swt.widgets.Item;
29: import org.eclipse.swt.widgets.Listener;
30:
31: /**
32: * Nebula Grid viewer configuration helper class.
33: *
34: * @author Mat Hansen <mhansen@eclipsesource.com>
35: *
36: */
37: public class GridViewerColumnBuilder extends AbstractTableViewerColumnBuilder<GridTableViewer, GridViewerColumn> {
38:
39:         /**
40:          * The constructor.
41:          *
42:          * @param config the {@link ColumnConfiguration}
43:          */
44:         public GridViewerColumnBuilder(ColumnConfiguration config) {
45:                 super(config);
46:         }
47:
48:         @Override
49:         public GridViewerColumn createViewerColumn(GridTableViewer tableViewer) {
50:                 return new GridViewerColumn(tableViewer, getConfig().getStyleBits());
51:         }
52:
53:         @Override
54:         protected void configure(GridTableViewer tableViewer, GridViewerColumn viewerColumn) {
55:                 super.configure(tableViewer, viewerColumn);
56:
57:                 // Nebula Grid supports a few more things
58:                 configureHideShow(tableViewer, viewerColumn);
59:         }
60:
61:         @Override
62:         protected Item getTableColumn(GridViewerColumn viewerColumn) {
63:                 return viewerColumn.getColumn();
64:         }
65:
66:         @Override
67:         protected void configureViewerColumn(GridViewerColumn viewerColumn) {
68:                 final GridColumn column = viewerColumn.getColumn();
69:
70:                 column.setResizeable(getConfig().isResizeable());
71:                 column.setMoveable(getConfig().isMoveable());
72:                 column.setVisible(getConfig().visible().getValue());
73:                 // column.getColumn().setWidth(width);
74:         }
75:
76:         @Override
77:         protected void configureEditingSupport(GridViewerColumn viewerColumn, GridTableViewer tableViewer) {
78:                 final Optional<EditingSupport> editingSupport = getConfig().createEditingSupport(tableViewer);
79:•                if (editingSupport.isPresent()) {
80:                         viewerColumn.setEditingSupport(editingSupport.get());
81:                 }
82:         }
83:
84:         /**
85:          * Configure hide/show columns toggle.
86:          *
87:          * @param tableViewer the table viewer
88:          * @param viewerColumn the viewer column to configure
89:          */
90:         protected void configureHideShow(final GridTableViewer tableViewer, final GridViewerColumn viewerColumn) {
91:
92:                 getConfig().visible().addChangeListener(new ChangeListener<Boolean>() {
93:                         @Override
94:                         public void valueChanged(Property<Boolean> property, Boolean oldValue, Boolean newValue) {
95:                                 getConfig().matchFilter().resetToDefault();
96:
97:                                 final GridColumn column = viewerColumn.getColumn();
98:                                 final Listener hideShowListener = extractShowListener(viewerColumn.getColumn());
99:                                 if (hideShowListener != null) {
100:                                         column.removeListener(SWT.Show, hideShowListener);
101:                                         column.removeListener(SWT.Hide, hideShowListener);
102:                                 }
103:                                 column.setVisible(newValue);
104:                                 if (hideShowListener != null) {
105:                                         column.addListener(SWT.Show, hideShowListener);
106:                                         column.addListener(SWT.Hide, hideShowListener);
107:                                 }
108:                         }
109:                 });
110:
111:         }
112:
113:         private static Listener extractShowListener(final GridColumn column) {
114:•                for (final Listener listener : column.getListeners(SWT.Show)) {
115:•                        if (listener.getClass().getEnclosingClass() != null
116:•                                && ControlEditor.class.isAssignableFrom(listener.getClass().getEnclosingClass())) {
117:                                 return listener;
118:                         }
119:                 }
120:                 return null;
121:         }
122: }