blob: 653f09cdde9893998b84a5d7cc4f680eeb9d2bd0 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 STMicroelectronics.
* 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:
* Marzia Maugeri <marzia.maugeri@st.com> - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.dataviewers.abstractviewers;
import org.eclipse.linuxtools.dataviewers.listeners.ISpecialDrawerListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
/**
* This class defines how the data is displayed for a given column. This renderer is on charge of providing several
* things:
* <ul>
* <li>the name of the column header
* <li>the tooltip of the column header
* <li>It computes the label to display for each object given by the {@link org.eclipse.jface.viewers.ITreeContentProvider}
* <li>It computes the tooltip to display for each object given by the {@link org.eclipse.jface.viewers.ITreeContentProvider}
* <li>It computes the background and foreground color to display for each object given by the
* {@link org.eclipse.jface.viewers.ITreeContentProvider}
* <li>It computes the image to display for each object given by the {@link org.eclipse.jface.viewers.ITreeContentProvider}
* <li>It provides a comparator, used to compare objects given by the {@link org.eclipse.jface.viewers.ITreeContentProvider}
* <li>It allows a "custom rendering", for example if you want to display percentages as progress bars or to display
* hyperlink as underlined text
* </ul>
*/
public interface ISTDataViewersField {
/**
* @return String the description of the field.
*/
String getDescription();
/**
* @return the image associated with the description of the field or <code>null</code>.
*/
Image getDescriptionImage();
/**
* @return The text to be displayed in the column header for this field.
*/
String getColumnHeaderText();
/**
* @return The tooltip to be displayed in the column header for this field.
*/
String getColumnHeaderTooltip();
/**
* @return The image to be displayed in the column header for this field or <code>null</code>.
*/
Image getColumnHeaderImage();
/**
* @param obj The object whose image is asked for.
* @return The String value of the object for this particular field displayed to the user.
*/
String getValue(Object obj);
/**
* @param obj The object whose image is asked for.
* @return The image value of the object for this particular field displayed to the user or <code>null</code>.
*/
Image getImage(Object obj);
/**
* Compares the given objects.
*
* Returns a negative number if the value of obj1 is less than the value of obj2 for this field,
* <code>0</code> if the value of obj1 and the value of obj2 are equal for this field or a positive number
* if the value of obj1 is greater than the value of obj2 for this field.
*
* @param obj1 The first object to compare.
* @param obj2 The second object to compare.
* @return The result of the comparison.
*/
int compare(Object obj1, Object obj2);
/**
* Get the default direction for the receiver. Return either {@link STDataViewersComparator#ASCENDING } or
* {@link STDataViewersComparator#DESCENDING }
* @return int
*/
int getDefaultDirection();
/**
* Get the preferred width of the receiver.
* @return int
*/
int getPreferredWidth();
/**
* Return whether the receiver is showing or not by default.
* @return boolean
* @since 5.0
*/
boolean isShowingByDefault();
/**
* Returns special drawer, typically used paint percentages paint hyperlink.
*
* @param element The element whose special drawer is needed.
* @return A special drawer.
*/
ISpecialDrawerListener getSpecialDrawer(Object element);
/**
* @param element The element whose tooltip is needed.
* @return the tooltip to display this particular element.
*/
String getToolTipText(Object element);
/**
* @param element The element whose background is needed.
* @return the background color for the given element
*/
Color getBackground(Object element);
/**
* @param element The element whose foreground is needed.
* @return the foreground color for the given element
*/
Color getForeground(Object element);
/**
* Customize the horizontal alignment of the columns.
* @return one of: SWT.LEFT, SWT.RIGHT, SWT.CENTER, SWT.NONE. Note that SWT.NONE is equivalent to SWT.LEFT
*/
int getAlignment();
}