| /******************************************************************************* |
| * Copyright (c) 2016 ALL4TEC & CEA LIST. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License 2.0 |
| * which accompanies this distribution, and is available at |
| * https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| * |
| * Contributors: |
| * ALL4TEC & CEA LIST - initial API and implementation |
| ******************************************************************************/ |
| package org.polarsys.esf.core.common.ui.view; |
| |
| import org.apache.commons.lang3.StringUtils; |
| import org.eclipse.jface.viewers.ColumnLabelProvider; |
| import org.eclipse.jface.viewers.EditingSupport; |
| import org.eclipse.jface.viewers.TreeViewer; |
| import org.eclipse.jface.viewers.TreeViewerColumn; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.widgets.Composite; |
| import org.eclipse.ui.views.properties.PropertyColumnLabelProvider; |
| import org.polarsys.esf.core.common.ui.editingsupport.ValidatedPropertyEditingSupport; |
| |
| /** |
| * Abstract base of all the Pages to use in a PageBookView, |
| * and which contains a tree table as viewer. |
| * |
| * This page inherits of all the standard mechanisms like the filters, the editing domain mechanisms, etc. |
| * |
| * @author $Author: jdumont $ |
| * @version $Revision: 83 $ |
| */ |
| public abstract class AbstractTreeTablePage |
| extends AbstractTreePage { |
| |
| /** |
| * A constructor that takes the array of columns name to create in the tree table. |
| * This constructor is used in the case of adding of the columns visibility action. |
| * |
| * @param pRequiredColumnName The name of the required column name that can't be hidden |
| * @param pColumnsName The column names list. This list must not contain the requiredColumnName |
| * @param pReadOnlyMode <code>true</code>if this view is in mode read only <code>false</code> otherwise |
| */ |
| public AbstractTreeTablePage( |
| final String pRequiredColumnName, |
| final String[] pColumnsName, |
| final boolean pReadOnlyMode) { |
| super(pRequiredColumnName, pColumnsName, pReadOnlyMode); |
| } |
| |
| /** |
| * {@inheritDoc} |
| */ |
| @Override |
| protected TreeViewerColumn createRequiredViewerColumn() { |
| // Get the name of the required column |
| String vColumnName = getRequiredColumnName(); |
| |
| // If the name is not valid, set a default empty value |
| if (StringUtils.isEmpty(vColumnName)) { |
| vColumnName = StringUtils.EMPTY; |
| } |
| |
| // Create the required column at the beginning, and set its width |
| final TreeViewerColumn vTreeViewerColumn = createViewerColumn(vColumnName, 0); |
| vTreeViewerColumn.getColumn().setWidth(150); |
| |
| return vTreeViewerColumn; |
| } |
| |
| /** |
| * {@inheritDoc} |
| */ |
| @Override |
| protected TreeViewer createViewer(final Composite pParent) { |
| |
| // Create a tree viewer allowing multiple selection |
| final TreeViewer vTreeViewer = new TreeViewer(pParent, SWT.MULTI | SWT.FULL_SELECTION); |
| |
| // Set the tree lines and header visible |
| // NB : Don't call directly the methods 'setLinesVisible' and 'setHeaderVisible' |
| // of this instance as the tree is not already created and initialised |
| vTreeViewer.getTree().setLinesVisible(true); |
| vTreeViewer.getTree().setHeaderVisible(true); |
| return vTreeViewer; |
| } |
| |
| /** |
| * {@inheritDoc} |
| */ |
| @Override |
| protected TreeViewerColumn createViewerColumn(final String pColumnName, final int pIndex) { |
| |
| // Create a new column at the given index |
| final TreeViewerColumn vTreeViewerColumn = new TreeViewerColumn(getViewer(), SWT.LEFT, pIndex); |
| vTreeViewerColumn.getColumn().setText(pColumnName); |
| vTreeViewerColumn.getColumn().pack(); |
| |
| return vTreeViewerColumn; |
| } |
| |
| /** |
| * {@inheritDoc} |
| */ |
| @Override |
| protected TreeViewerColumn createViewerColumn(final String pColumnName) { |
| return createViewerColumn(pColumnName, getViewer().getTree().getColumnCount()); |
| } |
| |
| /** |
| * {@inheritDoc} |
| */ |
| @Override |
| protected TreeViewerColumn createViewerColumn( |
| final String pColumnName, |
| final ColumnLabelProvider pColumnLabelProvider) { |
| |
| // Create a new column |
| final TreeViewerColumn vTreeViewerColumn = createViewerColumn(pColumnName); |
| |
| // Set the column label provider with the instance given in parameter |
| vTreeViewerColumn.setLabelProvider(pColumnLabelProvider); |
| |
| return vTreeViewerColumn; |
| } |
| |
| /** |
| * {@inheritDoc} |
| */ |
| @Override |
| protected TreeViewerColumn createViewerColumn( |
| final String pColumnName, |
| final ColumnLabelProvider pColumnLabelProvider, |
| final EditingSupport pEditingSupport) { |
| |
| // Create a new column |
| final TreeViewerColumn vTreeViewerColumn = createViewerColumn(pColumnName); |
| |
| // Set the column label provider and editing support |
| // with the instance given in parameter |
| vTreeViewerColumn.setLabelProvider(pColumnLabelProvider); |
| vTreeViewerColumn.setEditingSupport(pEditingSupport); |
| return vTreeViewerColumn; |
| } |
| |
| /** |
| * {@inheritDoc} |
| */ |
| @Override |
| protected TreeViewerColumn createViewerColumn(final String pColumnName, final String pPropertyID) { |
| |
| // Create a new column |
| final TreeViewerColumn vTreeViewerColumn = createViewerColumn(pColumnName); |
| |
| // Set the column label provider and editing support based on the property whose |
| // id is given in parameter |
| vTreeViewerColumn.setLabelProvider(new PropertyColumnLabelProvider(getPropertySourceProvider(), pPropertyID)); |
| vTreeViewerColumn.setEditingSupport( |
| new ValidatedPropertyEditingSupport( |
| getViewer(), |
| getPropertySourceProvider(), |
| pPropertyID, |
| getActionBars().getStatusLineManager())); |
| |
| return vTreeViewerColumn; |
| } |
| } |