at.spardat.xma.mdl.table.XMATableColumn Maven / Gradle / Ivy
/*******************************************************************************
* Copyright (c) 2003, 2007 s IT Solutions AT Spardat GmbH .
* 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:
* s IT Solutions AT Spardat GmbH - initial API and implementation
*******************************************************************************/
// @(#) $Id: XMATableColumn.java 2726 2008-09-17 10:05:17Z webok $
package at.spardat.xma.mdl.table;
import at.spardat.enterprise.fmt.IFmt;
import at.spardat.xma.mdl.Atom;
/**
* This class is a data object to specify information pertaining to columns
* of table widget models.
*
* @author YSD, 26.04.2003 09:51:10
*/
public class XMATableColumn {
private IFmt formatter_;
/**
* Indicates that this table column may be sorted
*/
private boolean isSortable_ = true;
/**
* Indicates that this table column is visible on the UI.
*/
private boolean visible_ = true;
/**
* Indicates if this column tries to resloves its values to a registered image
* @since 2.0.4
*/
private boolean imageColumn_ = false;
/**
* The table this column belongs to
*/
private TableWMClient table_;
/**
* a costum Comparator
*/
private AtomComparator comparator_;
/**
* Constructs the information necessary to describe a column of table
* widget model.
*/
public XMATableColumn (TableWMClient table) {
table_ = table;
}
/**
* Sets the formatter for a particular column
*
* @param formatter will be used to render the string representations of the column
* cells. This parameter may be null.
*/
public void setFormatter (IFmt formatter) {
formatter_ = formatter;
// notify listeners of the change since the layout of a column might change
table_.handle (table_.new TableRowsChangedEvent());
table_.handle (table_.new SelectionChangedEvent(false));
}
/**
* Returns the formatter set or null if none has been set.
*/
public IFmt getFormatter() {
return formatter_;
}
/**
* Returns if this column is sortable.
*/
public boolean isSortable() {
return isSortable_;
}
/**
* Sets whether this column is sortable
*/
public void setSortable (boolean b) {
isSortable_ = b;
}
/**
* Returns true if this column is visible.
*/
public boolean isVisible () {
return visible_;
}
/**
* Sets the visibility state of this column. If this method is never
* called, the property defaults to true.
*
* @param b the boolean which indicates the visibility state.
*/
public void setVisible (boolean b) {
visible_ = b;
}
/**
*
* @return Returns the comparator_.
*/
public AtomComparator getComparator() {
return comparator_;
}
/**
* Sets an AtomComparator for the client side sorting of the XMATableColumn.
* The use of a costum comparator for XMATableColumns is optional.
* If no AtomComparator is set then the Atom's type natural ordering is used.
* @param comparator The comparator_ to set.
*/
public void setComparator(AtomComparator comparator) {
this.comparator_ = comparator;
}
/**
* This interace is used to implement a costum comparator for an XMATableColumn.
* AtomComparator#compare is to use like java.util.Comparator#compare(java.lang.Object, java.lang.Object).
* but the objects to compare are always of the type at.spardat.xma.mdl.Atom.
* For the sorting of an XMATableColumn the AtomComparator is always called with both arguments != null,
* so no compare null logic has to be implemented.
* The use of a costum comparator for XMATableColumns is optional.
* If no AtomComparator is set then the Atom's type natural ordering is used.
* @author S3460
* @since version_number
*/
public static interface AtomComparator{
/**
* Use this method to implement a costum comparator for XMATableColumns.
* Used like java.util.Comparator#compare but instead of objects the arguments
* are of the type at.spardat.xma.mdl.Atom, as at the IWModelClients data is always
* stored as Atoms.
* Contrary to java.util.Comparator#compare you do not have to take care of null arguments!
*
* @see java.util.Comparator#compare(java.lang.Object, java.lang.Object)
*
* @author S3460
*/
int compare(Atom a1, Atom a2);
}
/**
* Shows if a column tries to resolve its values to a registered images.
* @return true - if this column tries to resloves its values to a registered image - otherwise false
* @since 2.0.4
* @author s3460
*/
public boolean isImageColumn() {
return imageColumn_;
}
/**
* Set 'imageColumn_' to true if this column tries to resolve its values to a registered image (which then is shown).
* If the column's value cannot be resolved then the value itself is shown at the UI.
* Such a column can be filled with numbers as well as Strings.
* So it is possible to mix Strings resolving to an image (registered short values) with any other Strings in one column.
* Values representing '0' (Strings or numbers) are interpreted as no image and are not shown.
* @param imageColumn_ - set to true if an image should be shown.
* @since 2.0.4
* @author s3460
*/
public void setImageColumn(boolean imageColumn) {
this.imageColumn_ = imageColumn;
}
}