blob: ccb45b46293a42db9939562907376c13c8afe1f2 [file] [log] [blame]
/*******************************************************************************
* 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;
}
}