diff options
author | Simon Rettberg | 2015-08-27 11:00:38 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-08-27 11:00:38 +0200 |
commit | ba9fe6f36af0fbf576ba136cbf22bf2e005a1733 (patch) | |
tree | 8354e9915c39dc008b13e02d8c416735772e43a8 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table | |
parent | [client] reworked ThriftActions.deleteImageBase and deleteImageVersion (diff) | |
download | tutor-module-ba9fe6f36af0fbf576ba136cbf22bf2e005a1733.tar.gz tutor-module-ba9fe6f36af0fbf576ba136cbf22bf2e005a1733.tar.xz tutor-module-ba9fe6f36af0fbf576ba136cbf22bf2e005a1733.zip |
[client] Changes to column handling in ListTable
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table')
7 files changed, 168 insertions, 137 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImagePermissionTable.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImagePermissionTable.java index 869e0f1a..cec937c2 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImagePermissionTable.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImagePermissionTable.java @@ -1,6 +1,5 @@ package org.openslx.dozmod.gui.control.table; -import org.apache.log4j.Logger; import org.openslx.bwlp.thrift.iface.ImagePermissions; import org.openslx.dozmod.gui.control.table.ImagePermissionTable.UserImagePermissions; import org.openslx.dozmod.thrift.cache.UserCache; @@ -9,28 +8,27 @@ import org.openslx.dozmod.util.FormatHelper; @SuppressWarnings("serial") public class ImagePermissionTable extends ListTable<UserImagePermissions> { - private final static Logger LOGGER = Logger.getLogger(ImagePermissionTable.class); - - private static String[] columnNames = { "Benutzer", "Link", "Download", "Bearbeiten", "Admin" }; - - private static Class<?>[] columnClasses = { String.class, Boolean.class, Boolean.class, Boolean.class, - Boolean.class }; + private static final ListTableColumn COL_USER = new ListTableColumn("Benutzer"); + private static final ListTableColumn COL_LINK = new ListTableColumn(Boolean.class, "Link"); + private static final ListTableColumn COL_DOWNLOAD = new ListTableColumn(Boolean.class, "Download"); + private static final ListTableColumn COL_EDIT = new ListTableColumn(Boolean.class, "Edit"); + private static final ListTableColumn COL_ADMIN = new ListTableColumn(Boolean.class, "Admin"); public ImagePermissionTable() { - super(columnNames, columnClasses); + super(COL_USER, COL_LINK, COL_DOWNLOAD, COL_EDIT, COL_ADMIN); } @Override - protected Object getValueAtInternal(UserImagePermissions row, int columnIndex) { - if (columnIndex == 0) + protected Object getValueAtInternal(UserImagePermissions row, ListTableColumn column) { + if (column == COL_USER) return FormatHelper.userName(UserCache.find(row.userId)); - if (columnIndex == 1) + if (column == COL_LINK) return row.permissions.link; - if (columnIndex == 2) + if (column == COL_DOWNLOAD) return row.permissions.download; - if (columnIndex == 3) + if (column == COL_EDIT) return row.permissions.edit; - if (columnIndex == 4) + if (column == COL_ADMIN) return row.permissions.admin; throw new IndexOutOfBoundsException(); } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageTable.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageTable.java index 9db22ed0..9f757592 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageTable.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageTable.java @@ -11,14 +11,16 @@ import org.openslx.dozmod.util.FormatHelper; @SuppressWarnings("serial") public class ImageTable extends ListTable<ImageSummaryRead> { - private static String[] columnNames = { "Name", "OS", "Besitzer", "Letztes Update", "Größe", "Valid", - "Vorlage" }; - - private static Class<?>[] columnClasses = { String.class, String.class, String.class, Long.class, - Long.class, Boolean.class, Boolean.class }; + private static final ListTableColumn COL_TEMPLATE = new ListTableColumn(Boolean.class, "Vorlage"); + private static final ListTableColumn COL_USABLE = new ListTableColumn(Boolean.class, "Verwendbar"); + private static final ListTableColumn COL_SIZE = new ListTableColumn(Long.class, "Größe"); + private static final ListTableColumn COL_LASTCHANGE = new ListTableColumn(Long.class, "Geändert"); + private static final ListTableColumn COL_OWNER = new ListTableColumn("Besitzer"); + private static final ListTableColumn COL_OS = new ListTableColumn("OS"); + private static final ListTableColumn COL_NAME = new ListTableColumn("Name"); public ImageTable() { - super(columnNames, columnClasses, new Comparator<ImageSummaryRead>() { + super(new Comparator<ImageSummaryRead>() { @Override public int compare(ImageSummaryRead o1, ImageSummaryRead o2) { if (o1 == null && o2 == null) @@ -29,7 +31,7 @@ public class ImageTable extends ListTable<ImageSummaryRead> { return -1; return o1.imageBaseId.compareTo(o2.imageBaseId); } - }); + }, COL_NAME, COL_OS, COL_OWNER, COL_LASTCHANGE, COL_SIZE, COL_USABLE, COL_TEMPLATE); // first column doesn't have to be set, because standard comparator already compares strings // second column, compares the OS @@ -43,42 +45,37 @@ public class ImageTable extends ListTable<ImageSummaryRead> { // return the right value of our image (row) depending on given column @Override - protected Object getValueAtInternal(ImageSummaryRead row, int columnIndex) { - if (columnIndex == 0) + protected Object getValueAtInternal(ImageSummaryRead row, ListTableColumn column) { + if (column == COL_NAME) return row.getImageName(); - if (columnIndex == 1) + if (column == COL_OS) return row.getOsId(); - if (columnIndex == 2) + if (column == COL_OWNER) return row.getOwnerId(); - if (columnIndex == 3) + if (column == COL_LASTCHANGE) return row.getUpdateTime(); - if (columnIndex == 4) + if (column == COL_SIZE) return row.getFileSize(); - if (columnIndex == 5) + if (column == COL_USABLE) return row.isValid; - if (columnIndex == 6) + if (column == COL_TEMPLATE) return row.isTemplate; throw new IndexOutOfBoundsException(); } @Override - public Object modelValueToDisplayFormat(Object value, int column) { - switch (column) { - case 0: - case 5: - case 6: + public Object modelValueToDisplayFormat(Object value, ListTableColumn column) { + if (column == COL_NAME || column == COL_USABLE || column == COL_TEMPLATE) return value; - case 1: + if (column == COL_OS) return FormatHelper.osName(MetaDataCache.getOsById((int) value)); - case 2: + if (column == COL_OWNER) return FormatHelper.userName(UserCache.find((String) value)); - case 3: + if (column == COL_LASTCHANGE) return FormatHelper.shortDate((long) value); - case 4: + if (column == COL_SIZE) return FormatHelper.bytes((long) value, false); - default: - throw new IndexOutOfBoundsException(); - } + throw new IndexOutOfBoundsException(); } } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageVersionTable.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageVersionTable.java index 2cc507c0..fdd2caeb 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageVersionTable.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageVersionTable.java @@ -1,6 +1,5 @@ package org.openslx.dozmod.gui.control.table; -import org.apache.log4j.Logger; import org.openslx.bwlp.thrift.iface.ImageVersionDetails; import org.openslx.dozmod.thrift.cache.UserCache; import org.openslx.dozmod.util.FormatHelper; @@ -8,30 +7,42 @@ import org.openslx.dozmod.util.FormatHelper; @SuppressWarnings("serial") public class ImageVersionTable extends ListTable<ImageVersionDetails> { - private final static Logger LOGGER = Logger.getLogger(ImageVersionTable.class); - - private static String[] columnNames = { "Datum", "Uploader", "Valid", "Größe", "Id" }; - - private static Class<?>[] columnClasses = { String.class, String.class, Boolean.class, String.class, - String.class }; + private static final ListTableColumn COL_CREATED = new ListTableColumn(Long.class, "Erstellungszeitpunkt"); + private static final ListTableColumn COL_UPLOADER = new ListTableColumn("Ersteller"); + private static final ListTableColumn COL_VALID = new ListTableColumn(Boolean.class, "Verwendbar"); + private static final ListTableColumn COL_SIZE = new ListTableColumn(Long.class, "Größe"); + private static final ListTableColumn COL_ID = new ListTableColumn("Interne ID"); public ImageVersionTable() { - super(columnNames, columnClasses); + super(COL_CREATED, COL_UPLOADER, COL_VALID, COL_SIZE, COL_ID); } @Override - protected Object getValueAtInternal(ImageVersionDetails row, int columnIndex) { - if (columnIndex == 0) - return FormatHelper.longDate(row.getCreateTime()); - if (columnIndex == 1) - return FormatHelper.userName(UserCache.find(row.getUploaderId())); - ; - if (columnIndex == 2) + protected Object getValueAtInternal(ImageVersionDetails row, ListTableColumn column) { + if (column == COL_CREATED) + return row.getCreateTime(); + if (column == COL_UPLOADER) + return row.getUploaderId(); + if (column == COL_VALID) return row.isValid; - if (columnIndex == 3) - return FormatHelper.bytes(row.getFileSize(), false); - if (columnIndex == 4) + if (column == COL_SIZE) + return row.getFileSize(); + if (column == COL_ID) return row.getVersionId(); throw new IndexOutOfBoundsException(); } + + @Override + public Object modelValueToDisplayFormat(Object value, ListTableColumn column) { + if (column == COL_VALID || column == COL_ID) + return value; + if (column == COL_CREATED) + return FormatHelper.longDate((long) value); + if (column == COL_UPLOADER) + return FormatHelper.userName(UserCache.find((String) value)); + if (column == COL_SIZE) + return FormatHelper.bytes((long) value, false); + throw new IndexOutOfBoundsException(); + } + } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/LecturePermissionTable.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/LecturePermissionTable.java index fe3b800c..8279dba9 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/LecturePermissionTable.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/LecturePermissionTable.java @@ -8,33 +8,36 @@ import org.openslx.dozmod.util.FormatHelper; @SuppressWarnings("serial") public class LecturePermissionTable extends ListTable<UserLecturePermissions> { - private static String[] columnNames = { "Benutzer", "Bearbeiten", "Admin" }; - - private static Class<?>[] columnClasses = { String.class, Boolean.class, Boolean.class}; + private static final ListTableColumn COL_USER = new ListTableColumn("Benutzer"); + private static final ListTableColumn COL_EDIT = new ListTableColumn(Boolean.class, "Edit"); + private static final ListTableColumn COL_ADMIN = new ListTableColumn(Boolean.class, "Admin"); public LecturePermissionTable() { - super(columnNames, columnClasses); + super(COL_USER, COL_EDIT, COL_ADMIN); } @Override - protected Object getValueAtInternal(UserLecturePermissions row, int columnIndex) { - if (columnIndex == 0) + protected Object getValueAtInternal(UserLecturePermissions row, ListTableColumn column) { + if (column == COL_USER) return FormatHelper.userName(UserCache.find(row.userId)); - if (columnIndex == 1) + if (column == COL_EDIT) return row.permissions.edit; - if (columnIndex == 2) + if (column == COL_ADMIN) return row.permissions.admin; throw new IndexOutOfBoundsException(); } + @Override public boolean isCellEditable(int rowIndex, int columnIndex) { // TODO actual permission checks return columnIndex != 0; } + @Override public void setValueAt(Object aValue, int rowIndex, int columnIndex) { // aValue must be boolean - if (!(aValue instanceof Boolean)) return; + if (!(aValue instanceof Boolean)) + return; UserLecturePermissions row = getViewRow(rowIndex); if (columnIndex == 1) row.permissions.edit = (boolean) aValue; diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/LectureTable.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/LectureTable.java index 22771307..4f849e86 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/LectureTable.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/LectureTable.java @@ -16,16 +16,19 @@ import org.openslx.dozmod.util.FormatHelper; @SuppressWarnings("serial") public class LectureTable extends ListTable<LectureSummary> { - private static String[] columnNames = { "Name", "Besitzer", "Startzeit", "Endzeit", "Aktiviert", "Gültig" }; - private static Class<?>[] columnClasses = { String.class, String.class, Long.class, Long.class, - Boolean.class, Boolean.class }; + private static final ListTableColumn COL_NAME = new ListTableColumn("Name"); + private static final ListTableColumn COL_OWNER = new ListTableColumn("Besitzer"); + private static final ListTableColumn COL_STARTTIME = new ListTableColumn(Long.class, "Startzeit"); + private static final ListTableColumn COL_ENDTIME = new ListTableColumn(Long.class, "Ablaufzeitpunkt"); + private static final ListTableColumn COL_ENABLED = new ListTableColumn(Boolean.class, "Aktiviert"); + private static final ListTableColumn COL_VALID = new ListTableColumn(Boolean.class, "VM gültig"); private final Font boldFont; private final Color invalidColor; public LectureTable() { - super(columnNames, columnClasses); + super(COL_NAME, COL_OWNER, COL_STARTTIME, COL_ENDTIME, COL_ENABLED, COL_VALID); // first column doesn't have to be set, because standard comparator already compares strings // second column compares the owner getRowSorter().setComparator(1, Sorters.userNameById); @@ -37,31 +40,32 @@ public class LectureTable extends ListTable<LectureSummary> { } @Override - protected Object getValueAtInternal(LectureSummary row, int columnIndex) { - if (columnIndex == 0) + protected Object getValueAtInternal(LectureSummary row, ListTableColumn columnIndex) { + if (columnIndex == COL_NAME) return row.getLectureName(); - if (columnIndex == 1) + if (columnIndex == COL_OWNER) return row.getOwnerId(); - if (columnIndex == 2) + if (columnIndex == COL_STARTTIME) return row.getStartTime(); - if (columnIndex == 3) + if (columnIndex == COL_ENDTIME) return row.getEndTime(); - if (columnIndex == 4) + if (columnIndex == COL_ENABLED) return row.isIsEnabled(); - if (columnIndex == 5) + if (columnIndex == COL_VALID) return row.isIsImageVersionUsable(); throw new IndexOutOfBoundsException(); } @Override - public void prepareRenderHook(Component component, LectureSummary row, int column, boolean isSelected) { + public void prepareRenderHook(Component component, LectureSummary row, ListTableColumn column, + boolean isSelected) { Color fgOverride = null; if (Session.getUserId().equals(row.ownerId)) { component.setFont(boldFont); } long now = System.currentTimeMillis() / 1000; - boolean dateInvalid = ((column == 2 && row.startTime > now) || (column == 3 && row.endTime < now)); - if (column == 2 || column == 3) { + boolean dateInvalid = ((column == COL_STARTTIME && row.startTime > now) || (column == COL_ENDTIME && row.endTime < now)); + if (column == COL_STARTTIME || column == COL_ENDTIME) { if (dateInvalid) { fgOverride = Color.RED; } @@ -78,20 +82,14 @@ public class LectureTable extends ListTable<LectureSummary> { } @Override - public Object modelValueToDisplayFormat(Object value, int column) { - switch (column) { - case 0: // Image name - case 4: // isEnabled - case 5: // hasValidImage + public Object modelValueToDisplayFormat(Object value, ListTableColumn column) { + if (column == COL_NAME || column == COL_ENABLED || column == COL_VALID) return value; - case 1: // Owner + if (column == COL_OWNER) return FormatHelper.userName(UserCache.find((String) value)); - case 2: // Start time - case 3: // End time + if (column == COL_STARTTIME || column == COL_ENDTIME) return FormatHelper.shortDate((long) value); - default: - throw new IndexOutOfBoundsException(); - } + throw new IndexOutOfBoundsException(); } } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ListTable.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ListTable.java index 36c6b18b..fe62b125 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ListTable.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ListTable.java @@ -12,16 +12,15 @@ import javax.swing.SortOrder; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumn; +import javax.swing.table.TableColumnModel; import javax.swing.table.TableRowSorter; -import org.apache.log4j.Logger; import org.openslx.dozmod.gui.helper.TableColumnAdjuster; @SuppressWarnings("serial") public abstract class ListTable<T> extends JTable { - private final static Logger LOGGER = Logger.getLogger(ListTable.class); - private final ListModel<T> model; private final TableRowSorter<ListModel<T>> sorter; @@ -32,21 +31,13 @@ public abstract class ListTable<T> extends JTable { private final Comparator<T> itemComparator; - public ListTable(String[] columnNames) { - this(columnNames, null, null); - } - - public ListTable(String[] columnNames, Comparator<T> itemComparator) { - this(columnNames, null, itemComparator); + public ListTable(ListTableColumn... columns) { + this(null, columns); } - public ListTable(String[] columnNames, Class<?>[] columnClasses) { - this(columnNames, columnClasses, null); - } - - public ListTable(String[] columnNames, Class<?>[] columnClasses, Comparator<T> itemComparator) { + public ListTable(Comparator<T> itemComparator, ListTableColumn... columns) { super(); - this.model = new ListModel<T>(this, columnNames, columnClasses); + this.model = new ListModel<T>(this, columns); this.sorter = new TableRowSorter<ListModel<T>>(model); this.adjuster = new TableColumnAdjuster(this, 5); this.itemComparator = itemComparator; @@ -62,10 +53,15 @@ public abstract class ListTable<T> extends JTable { this.setDefaultEditor(Boolean.class, getDefaultEditor(Boolean.class)); this.setRowSelectionAllowed(true); this.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + TableColumnModel cm = getColumnModel(); + for (int i = 0; i < columns.length; ++i) { + columns[i].tableColumn = cm.getColumn(i); + columns[i].columnModel = cm; + } } - protected abstract Object getValueAtInternal(T item, int columnIndex); + protected abstract Object getValueAtInternal(T item, ListTableColumn column); public T getModelRow(int rowIndex) { if (rowIndex < 0 || rowIndex >= model.getRowCount()) @@ -141,10 +137,11 @@ public abstract class ListTable<T> extends JTable { * * @param component The component representing the cell being rendered * @param row item of the row being rendered - * @param column column index (model-based) of the cell being rendered + * @param listTableColumn column (model-based) of the cell being rendered * @param isSelected whether the row is currently selected */ - public void prepareRenderHook(Component component, T row, int column, boolean isSelected) { + public void prepareRenderHook(Component component, T row, ListTableColumn listTableColumn, + boolean isSelected) { // Nothing by default } @@ -157,7 +154,7 @@ public abstract class ListTable<T> extends JTable { * @param column Column index (model-based) being rendered * @return Rendered version of value. This should match the column class */ - public Object modelValueToDisplayFormat(Object value, int column) { + public Object modelValueToDisplayFormat(Object value, ListTableColumn column) { return value; } @@ -165,7 +162,7 @@ public abstract class ListTable<T> extends JTable { public final Component prepareRenderer(TableCellRenderer renderer, int row, int column) { Component c = super.prepareRenderer(renderer, row, column); T item = getViewRow(row); - prepareRenderHook(c, item, convertColumnIndexToModel(column), isRowSelected(row)); + prepareRenderHook(c, item, model.getColumn(convertColumnIndexToModel(column)), isRowSelected(row)); return c; } @@ -174,21 +171,15 @@ public abstract class ListTable<T> extends JTable { */ public static class ListModel<T> extends AbstractTableModel { - private final String[] columnNames; - - private final Class<?>[] columnClasses; + private final ListTableColumn[] columns; private ArrayList<T> data = null; private final ListTable<T> table; - public ListModel(ListTable<T> table, String[] columnNames, Class<?>[] columnClasses) { - - if (columnClasses != null && columnClasses.length != columnNames.length) - throw new IllegalArgumentException(); + public ListModel(ListTable<T> table, ListTableColumn... columns) { this.table = table; - this.columnNames = columnNames; - this.columnClasses = columnClasses; + this.columns = columns; } public void setData(List<T> list) { @@ -196,6 +187,10 @@ public abstract class ListTable<T> extends JTable { fireTableDataChanged(); } + public ListTableColumn getColumn(int modelColumnIndex) { + return columns[modelColumnIndex]; + } + @Override public int getRowCount() { return data == null ? 0 : data.size(); @@ -203,27 +198,24 @@ public abstract class ListTable<T> extends JTable { @Override public int getColumnCount() { - return columnNames.length; + return columns.length; } @Override public String getColumnName(int col) { - return columnNames[col]; + return columns[col].colName; } @Override - public Class<?> getColumnClass(int c) { - if (columnClasses != null && c < columnClasses.length) { - return columnClasses[c]; - } - return String.class; + public Class<?> getColumnClass(int col) { + return columns[col].colClass; } @Override public Object getValueAt(int rowIndex, int columnIndex) { T item = table.getModelRow(rowIndex); int realColumn = table.convertColumnIndexToModel(columnIndex); - return table.getValueAtInternal(item, realColumn); + return table.getValueAtInternal(item, columns[realColumn]); } } @@ -238,11 +230,42 @@ public abstract class ListTable<T> extends JTable { public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) { super.getTableCellRendererComponent(table, - modelValueToDisplayFormat(value, convertColumnIndexToModel(column)), isSelected, - hasFocus, row, column); + modelValueToDisplayFormat(value, model.getColumn(convertColumnIndexToModel(column))), + isSelected, hasFocus, row, column); setBorder(null); return this; } } + public static class ListTableColumn { + private boolean hidden = false; + private TableColumn tableColumn = null; + private TableColumnModel columnModel = null; + public final Class<?> colClass; + public final String colName; + + public ListTableColumn(String colName) { + this(String.class, colName); + } + + public ListTableColumn(Class<?> colClass, String colName) { + this.colClass = colClass; + this.colName = colName; + } + + public void show() { + if (!hidden) + return; + columnModel.addColumn(tableColumn); + hidden = false; + } + + public void hide() { + if (hidden) + return; + columnModel.removeColumn(tableColumn); + hidden = true; + } + } + } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/UserTable.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/UserTable.java index 447444c2..bfdf9b26 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/UserTable.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/UserTable.java @@ -6,17 +6,18 @@ import org.openslx.dozmod.util.FormatHelper; @SuppressWarnings("serial") public class UserTable extends ListTable<UserInfo> { - private static String[] columnNames = { "Name", "Mail" }; + private static final ListTableColumn COL_NAME = new ListTableColumn("Name"); + private static final ListTableColumn COL_MAIL = new ListTableColumn("Mail"); public UserTable() { - super(columnNames); + super(COL_NAME, COL_MAIL); } @Override - protected Object getValueAtInternal(UserInfo row, int columnIndex) { - if (columnIndex == 0) + protected Object getValueAtInternal(UserInfo row, ListTableColumn columnIndex) { + if (columnIndex == COL_NAME) return FormatHelper.userName(row); - if (columnIndex == 1) + if (columnIndex == COL_MAIL) return row.eMail; throw new IndexOutOfBoundsException(); } |