summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2018-11-26 15:50:19 +0100
committerSimon Rettberg2018-11-26 15:50:19 +0100
commitc5770500f44bb013270692b367abaffa3110ad67 (patch)
tree234ccc86860493410dea3090ea3ddea0f33c93da
parent[client] MetaDataCache: Add getters for ldap/netshare predefined list (diff)
downloadtutor-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.java3
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ListTable.java44
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;