diff options
author | Simon Rettberg | 2018-11-26 15:50:19 +0100 |
---|---|---|
committer | Simon Rettberg | 2018-11-26 15:50:19 +0100 |
commit | c5770500f44bb013270692b367abaffa3110ad67 (patch) | |
tree | 234ccc86860493410dea3090ea3ddea0f33c93da | |
parent | [client] MetaDataCache: Add getters for ldap/netshare predefined list (diff) | |
download | tutor-module-c5770500f44bb013270692b367abaffa3110ad67.tar.gz tutor-module-c5770500f44bb013270692b367abaffa3110ad67.tar.xz tutor-module-c5770500f44bb013270692b367abaffa3110ad67.zip |
[client] Add edit support to ListTable
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/LectureTable.java | 3 | ||||
-rw-r--r-- | dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ListTable.java | 44 |
2 files changed, 44 insertions, 3 deletions
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 54b5d36b..054e94fc 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 @@ -55,7 +55,7 @@ public class LectureTable extends ListTable<LectureSummary> { } @Override - public void prepareRenderHook(Component component, LectureSummary row, ListTableColumn column, + public Component prepareRenderHook(Component component, LectureSummary row, ListTableColumn column, boolean isSelected) { Color fgOverride = null; if (highlightOwn && column == COL_OWNER && Session.getUserId().equals(row.ownerId)) { @@ -77,6 +77,7 @@ public class LectureTable extends ListTable<LectureSummary> { } else { component.setForeground(Color.RED); } + return component; } @Override 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 e33f084e..ff35b9a6 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 @@ -2,6 +2,7 @@ package org.openslx.dozmod.gui.control.table; import java.awt.Component; import java.util.ArrayList; +import java.util.Collections; import java.util.Comparator; import java.util.List; @@ -20,6 +21,7 @@ import javax.swing.table.TableColumnModel; import javax.swing.table.TableRowSorter; import org.openslx.dozmod.gui.helper.TableColumnAdjuster; +import org.openslx.util.Util; @SuppressWarnings("serial") public abstract class ListTable<T> extends JTable { @@ -107,6 +109,10 @@ public abstract class ListTable<T> extends JTable { return null; return getViewRow(rowIndex); } + + public List<T> getData() { + return Collections.unmodifiableList(model.data); + } public boolean setSelectedItem(T item) { int selectionIndex = -1; @@ -175,6 +181,13 @@ public abstract class ListTable<T> extends JTable { } /** + * Callback when a cell is edited. + */ + public void setValueAt(Object newValue, T row, ListTableColumn column) { + // Nothing by default + } + + /** * Called when rendering a column is being prepared. This is a good time to * change the color or font for the given cell. * @@ -182,10 +195,12 @@ public abstract class ListTable<T> extends JTable { * @param row item of the row being rendered * @param listTableColumn column (model-based) of the cell being rendered * @param isSelected whether the row is currently selected + * @return */ - public void prepareRenderHook(Component component, T row, ListTableColumn listTableColumn, + public Component prepareRenderHook(Component component, T row, ListTableColumn listTableColumn, boolean isSelected) { // Nothing by default + return component; } /** @@ -205,7 +220,9 @@ 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, model.getColumn(convertColumnIndexToModel(column)), isRowSelected(row)); + if (c != null && item != null) { + c = prepareRenderHook(c, item, model.getColumn(convertColumnIndexToModel(column)), isRowSelected(row)); + } return c; } @@ -257,6 +274,21 @@ public abstract class ListTable<T> extends JTable { break; } } + + @Override + public boolean isCellEditable(int row, int col) { + return columns[col].column.isEditable; + } + + @Override + public void setValueAt(Object aValue, int row, int col) { + if (isCellEditable(row, col)) { + T item = table.getModelRow(row); + if (item == null) + return; + table.setValueAt(aValue, item, columns[col].column); + } + } @Override public int getRowCount() { @@ -281,6 +313,8 @@ public abstract class ListTable<T> extends JTable { @Override public Object getValueAt(int rowIndex, int columnIndex) { T item = table.getModelRow(rowIndex); + if (item == null) + return null; return table.getValueAtInternal(item, columns[columnIndex].column); } @@ -337,6 +371,7 @@ public abstract class ListTable<T> extends JTable { } public static class ListTableColumn { + public final boolean isEditable; public final Class<?> colClass; public final String colName; public final Comparator<?> sortComparator; @@ -350,6 +385,11 @@ public abstract class ListTable<T> extends JTable { } public ListTableColumn(String colName, Class<?> colClass, Comparator<?> sortComparator) { + this(colName, colClass, sortComparator, false); + } + + public ListTableColumn(String colName, Class<?> colClass, Comparator<?> sortComparator, boolean isEditable) { + this.isEditable = isEditable; this.colName = colName; this.colClass = colClass; this.sortComparator = sortComparator; |