/******************************************************************************* * Copyright (c) 2007, 2011 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.equinox.internal.p2.ui.viewers; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.swt.graphics.FontMetrics; import org.eclipse.swt.graphics.GC; import org.eclipse.swt.widgets.Control; /** * An IUColumnConfig describes a column in a viewer that is showing * information about an IIInstallableUnit. * * @since 3.4 */ public class IUColumnConfig { /** * Constant indicating that the column represents an IInstallableUnit's id */ public final static int COLUMN_ID = 0; /** * Constant indicating that the column represents an IInstallableUnit's name */ public final static int COLUMN_NAME = 1; /** * Constant indicating that the column represents an IInstallableUnit's version */ public final static int COLUMN_VERSION = 2; /** * Constant indicating that the column represents an IInstallableUnit's size */ public final static int COLUMN_SIZE = 3; /** * Constant indicating that the column represents an IInstallableUnit's provider */ public final static int COLUMN_PROVIDER = 4; private String columnTitle; private int columnType; private int columnWidth; private int columnWidthInPixels; /** * Create an IUColumnConfig describing a column with the specified title, type, and * default width. * * @param title the title that should appear for the column * @param columnType the type of column represented. The type may be used to determine * appropriate size or formatting of the column's content. * @param columnWidthInChars the width (in characters) that should be used for the column if no * other width is specified by the client. */ public IUColumnConfig(String title, int columnType, int columnWidthInChars) { this.columnTitle = title; this.columnType = columnType; this.columnWidth = columnWidthInChars; this.columnWidthInPixels = -1; } /** * Return the title of the column. * @return the title that should be used for the column. * * @since 3.6 */ public String getColumnTitle() { return columnTitle; } /** * Set the title of the column * @param title the String that should be used when the column's title is shown * * @since 3.6 */ public void setColumnTitle(String title) { this.columnTitle = title; } /** * Return the width of the column in character width units * @return the width (in characters) of the column * * @since 3.6 */ public int getWidthInChars() { return columnWidth; } /** * Set the width of the column in character width units * @param columnWidth the width (in characters) of the column * * @since 3.6 */ public void setWidthInChars(int columnWidth) { this.columnWidth = columnWidth; } /** * Get the width in pixels of this column when displayed in the specified * control. If a specific width in pixels has already been specified by a client, * that width is used. Otherwise, the value is computed based on the character * width specified for the column. * @param control * @return the width in pixels that should be used for the column * * @since 3.6 * * @see #setWidthInPixels(int) */ public int getWidthInPixels(Control control) { if (columnWidthInPixels >= 0) return columnWidthInPixels; GC gc = new GC(control); FontMetrics fm = gc.getFontMetrics(); columnWidthInPixels = Dialog.convertWidthInCharsToPixels(fm, columnWidth); gc.dispose(); return columnWidthInPixels; } /** * Set the width in pixels that should be used for this column. This width overrides * any character width that has been specified. This method is useful when the column width * is determined by user action. * * @param width * * @since 3.6 */ public void setWidthInPixels(int width) { this.columnWidthInPixels = width; } /** * Return the type of column. * @return an Integer constant specifying the type of data being shown in the column. * * @since 3.6 * @see #COLUMN_ID * @see #COLUMN_NAME * @see #COLUMN_SIZE * @see #COLUMN_VERSION */ public int getColumnType() { return columnType; } /** * Set the type of column. * @param type an Integer constant specifying the type of data being shown in the column. * * @since 3.6 * * @see #COLUMN_ID * @see #COLUMN_NAME * @see #COLUMN_SIZE * @see #COLUMN_VERSION */ public void setColumnType(int type) { this.columnType = type; } }