| /******************************************************************************* |
| * Copyright (c) 2005 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.jface.databinding.viewers; |
| /** |
| * A description object for table viewers. |
| * <p> |
| * <strong>EXPERIMENTAL</strong>. This class or interface has been added as |
| * part of a work in progress. There is no guarantee that this API will remain |
| * unchanged during the 3.2 release cycle. Please do not use this API without |
| * consulting with the Platform/UI team. |
| * </p> |
| * |
| * @since 3.2 |
| * |
| */ |
| import java.util.ArrayList; |
| import java.util.HashMap; |
| import java.util.List; |
| |
| import org.eclipse.jface.databinding.converter.IConverter; |
| import org.eclipse.jface.databinding.validator.IValidator; |
| import org.eclipse.jface.databinding.viewers.TableViewerDescription.Column; |
| import org.eclipse.jface.viewers.CellEditor; |
| import org.eclipse.jface.viewers.ICellModifier; |
| import org.eclipse.jface.viewers.TreeViewer; |
| |
| /** |
| * @since 3.2 |
| * |
| */ |
| public class TreeViewerDescription { |
| |
| /** |
| * Table column may spedify a nested property |
| */ |
| public static final String COLUMN_PROPERTY_NESTING_SEPERATOR = "."; //$NON-NLS-1$ |
| |
| |
| |
| private TreeViewer treeViewer; |
| |
| private HashMap columnsMap = new HashMap(); // TODO Need to deal with instanceof vs. exact type |
| |
| |
| private ICellModifier cellModifier = null; |
| |
| /** |
| * @param treeViewer |
| */ |
| public TreeViewerDescription(TreeViewer treeViewer) { |
| this.treeViewer = treeViewer; |
| } |
| |
| /** |
| * @param instanceType |
| * @param columnIndex |
| * @param propertyName |
| * @param cellEditor |
| * @param validator |
| * @param converter |
| * converter from model objects to String, or ImageAndString. |
| */ |
| public void addColumn(Class instanceType, int columnIndex, String propertyName, |
| CellEditor cellEditor, IValidator validator, IConverter converter) { |
| List columns = (List)columnsMap.get(instanceType); |
| if (columns==null) { |
| columns = new ArrayList(); |
| columnsMap.put(instanceType, columns); |
| } |
| Column column = new Column(propertyName, cellEditor , validator, |
| converter); |
| if(columnIndex == -1) |
| columns.add(column); |
| else |
| columns.add(columnIndex,column); |
| } |
| |
| /** |
| * @param instanceType |
| * @param propertyName |
| * @param cellEditor |
| * @param validator |
| * @param converter |
| */ |
| public void addColumn(Class instanceType, String propertyName, |
| CellEditor cellEditor, IValidator validator, IConverter converter) { |
| addColumn(instanceType, -1,propertyName,cellEditor,validator,converter); |
| } |
| |
| /** |
| * @param instanceType |
| * @param columnIndex |
| * @param propertyName |
| * @param validator |
| * @param converter |
| */ |
| public void addColumn(Class instanceType, int columnIndex, String propertyName, |
| IValidator validator, IConverter converter) { |
| addColumn(instanceType, columnIndex,propertyName,null,validator,converter); |
| } |
| |
| |
| /** |
| * @param instanceType |
| * @param propertyName |
| * @param validator |
| * @param converter |
| */ |
| public void addColumn(Class instanceType, String propertyName, |
| IValidator validator, IConverter converter) { |
| addColumn(instanceType, -1,propertyName,validator,converter); |
| } |
| |
| /** |
| * @param instanceType |
| * @param propertyName |
| */ |
| public void addColumn(Class instanceType, String propertyName) { |
| addColumn(instanceType, -1, propertyName, null, null, null); |
| } |
| |
| /** |
| * @param instanceType |
| * @param columnIndex |
| * @param propertyName |
| */ |
| public void addColumn(Class instanceType, int columnIndex, String propertyName) { |
| addColumn(instanceType, columnIndex, propertyName, null, null, null); |
| } |
| |
| /** |
| * @return cellModifier The cell Modifier |
| */ |
| public ICellModifier getCellModifier() { |
| return cellModifier; |
| } |
| |
| /** |
| * @param cellModifier |
| */ |
| public void setCellModifier(ICellModifier cellModifier) { |
| this.cellModifier = cellModifier; |
| } |
| |
| /** |
| * @param instanceType |
| * @return columnCount The number of Columns |
| */ |
| public int getColumnCount(Class instanceType) { |
| List columns = (List) columnsMap.get(instanceType); |
| if (columns!=null) |
| return columns.size(); |
| return 0; |
| } |
| |
| /** |
| * @param instanceType |
| * @param columnIndex |
| * @return Column The column at the specified index |
| */ |
| public Column getColumn(Class instanceType, int columnIndex) { |
| List columns = (List) columnsMap.get(instanceType); |
| if (columns!=null && columns.size()>columnIndex) |
| return (Column) columns.get(columnIndex); |
| return null; |
| } |
| |
| |
| /** |
| * @param instanceType |
| * @param column |
| * @return column's index, or -1 if it is not a valid column |
| */ |
| public int getColumnIndex(Class instanceType, Column column) { |
| List columns = (List) columnsMap.get(instanceType); |
| if (columns!=null) |
| return columns.indexOf(column); |
| return -1; |
| } |
| |
| /** |
| * @return treeViewer |
| */ |
| public TreeViewer getTreeViewer() { |
| return treeViewer; |
| } |
| |
| public Class[] getClassTypes() { |
| if (columnsMap.keySet().size()==0) return null; |
| |
| return (Class[]) columnsMap.keySet().toArray(new Class[columnsMap.keySet().size()]); |
| } |
| |
| |
| } |