001: package net.refractions.udig.ui.graphics;
002:
003: import java.util.ArrayList;
004:
005: import org.eclipse.swt.widgets.Table;
006: import org.eclipse.swt.widgets.Tree;
007:
008: /**
009: * This class contains the settings for a table, including the minimum widths of
010: * columns and maximum width (ratio) of each column with respect to the entire table.
011: * <p>
012: *
013: * </p>
014: *
015: * @author chorner
016: * @since 1.0.1
017: * @see net.refractions.udig.ui.graphics.TableUtils
018: */
019: public class TableSettings {
020: private static final int defaultMinPixels = 60; //default minimum width of a column
021:
022: /** This is a miniature state machine for how we should behave */
023: private int currentMode = 0;
024:
025: /**
026: * List containing the minimum width of each column (in pixels)
027: */
028: private ArrayList<Integer> minPixels;
029:
030: /**
031: * List containing the maximum width of each column (in percent, where 1.0 = 100%)
032: */
033: private ArrayList<Double> maxPercent;
034:
035: private int numColumns;
036:
037: /**
038: * Constructor for the TableSettings object
039: * @param table
040: */
041: public TableSettings(Table table) {
042: this (table.getColumnCount());
043: }
044:
045: public TableSettings(Tree tree) {
046: this (tree.getColumnCount());
047: }
048:
049: public TableSettings(int columnCount) {
050: numColumns = columnCount;
051: minPixels = new ArrayList<Integer>();
052: maxPercent = new ArrayList<Double>();
053: double defaultMaxPercent = 1.0 / numColumns;
054: //iterate through each column in the array, and set the values
055: for (int i = 0; i < numColumns; i++) {
056: minPixels.add(i, defaultMinPixels);
057: maxPercent.add(i, defaultMaxPercent);
058: }
059: }
060:
061: /**
062: * sets the minimum pixel width of the column
063: *
064: * @param columnIndex integer representing the column index (first column = 0, second = 1, ...)
065: * @param numPixels
066: */
067: public void setColumnMin(int columnIndex, int numPixels) {
068: minPixels.set(columnIndex, numPixels);
069: }
070:
071: /**
072: * returns the minimum pixel width of the column
073: *
074: * @param columnIndex integer representing the column index (first column = 0, second = 1, ...)
075: */
076: public int getColumnMin(int columnIndex) {
077: return minPixels.get(columnIndex);
078: }
079:
080: /**
081: * sets the maximum width of the column, as a percentage ratio (0-->1)
082: *
083: * @param columnIndex integer representing the column index (first column = 0, second = 1, ...)
084: * @param widthPercent value between 0 and 1, where 1 is 100%
085: */
086: public void setColumnMax(int columnIndex, double widthPercent) {
087: maxPercent.set(columnIndex, widthPercent);
088: }
089:
090: /**
091: * returns the maximum width of the column, as a percentage ratio (0-->1)
092: *
093: * @param columnIndex integer representing the column index (first column = 0, second = 1, ...)
094: */
095: public double getColumnMax(int columnIndex) {
096: return maxPercent.get(columnIndex);
097: }
098:
099: /**
100: * Returns the number of columns in the table
101: *
102: * @return the number of columns in the table that was initially passed to the constructor
103: */
104: public int getColumnCount() {
105: return numColumns;
106: }
107:
108: public int getCurrentMode() {
109: return currentMode;
110: }
111:
112: public void setCurrentMode(int currentMode) {
113: this.currentMode = currentMode;
114: }
115: }
|