summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org
diff options
context:
space:
mode:
authorJonathan Bauer2015-08-17 16:10:36 +0200
committerJonathan Bauer2015-08-17 16:10:36 +0200
commita21dfc6347b588ed0e90acab5d2dd61824dc2657 (patch)
tree235901c8affada7fe7f01fccc40200310569502d /dozentenmodul/src/main/java/org
parent[client] save changes in image details window (diff)
parent[client] Implemented ImageTableRenderer to be able to correctly sort image li... (diff)
downloadtutor-module-a21dfc6347b588ed0e90acab5d2dd61824dc2657.tar.gz
tutor-module-a21dfc6347b588ed0e90acab5d2dd61824dc2657.tar.xz
tutor-module-a21dfc6347b588ed0e90acab5d2dd61824dc2657.zip
Merge branch 'v1.1' of git.openslx.org:openslx-ng/tutor-module into v1.1
Diffstat (limited to 'dozentenmodul/src/main/java/org')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageTable.java84
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java2
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/permissions/ImagePerms.java5
3 files changed, 83 insertions, 8 deletions
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 4fa33798..a7a32fc6 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
@@ -1,7 +1,10 @@
package org.openslx.dozmod.gui.control.table;
+import java.awt.Component;
import java.util.Comparator;
+import javax.swing.JTable;
+
import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
import org.openslx.dozmod.thrift.MetaDataCache;
import org.openslx.dozmod.thrift.UserCache;
@@ -29,28 +32,95 @@ public class ImageTable extends ListTable<ImageSummaryRead> {
return o1.imageBaseId.compareTo(o2.imageBaseId);
}
});
+
+ this.setDefaultRenderer(Object.class, new ImageTableRenderer());
- // sort with correct time and not lexicographic
- getRowSorter().setComparator(3, timeComparator);
+ // --------- set comparators for different columns ------------------------------
+ // first column doesn't have to be set, because standart comparator already compares strings
+ // second column, compares the os
+ getRowSorter().setComparator(1, new Comparator<Integer>() {
+ @Override
+ public int compare(Integer o1, Integer o2) {
+ String os1 = FormatHelper.osName(MetaDataCache.getOsById(o1));
+ String os2 = FormatHelper.osName(MetaDataCache.getOsById(o2));
+ return os1.compareTo(os2);
+ }
+ });
+ // third column compares the owner
+ getRowSorter().setComparator(2, new Comparator<String>() {
+ @Override
+ public int compare(String o1, String o2) {
+ String user1 = FormatHelper.userName(UserCache.find(o1));
+ String user2 = FormatHelper.userName(UserCache.find(o2));
+ return user1.compareTo(user2);
+ }
+ });
+
+ // fourth and fifth column are both longs (last update and size), so they can use same comparator
+ Comparator<Long> longCmparator = new Comparator<Long>() {
+ @Override
+ public int compare(Long o1, Long o2) {
+ return o1.compareTo(o2);
+ }
+ };
+ getRowSorter().setComparator(3, longCmparator);
+ getRowSorter().setComparator(4, longCmparator);
+ // sixth column (version id) is string again, doesn't have to be set
+ // seventh column is template
+ getRowSorter().setComparator(6, new Comparator<Boolean>() {
+ @Override
+ public int compare(Boolean o1, Boolean o2) {
+ return o1.compareTo(o2);
+ }
+ });
+ // --------- end of comparators -------------------------------------------------
}
+ // return the right value of our image (row) depending on given column
@Override
protected Object getValueAtInternal(int rowIndex, int columnIndex) {
ImageSummaryRead row = getModelRow(rowIndex);
if (columnIndex == 0)
return row.getImageName();
if (columnIndex == 1)
- return FormatHelper.osName(MetaDataCache.getOsById(row.getOsId()));
+ return row.getOsId();
if (columnIndex == 2)
- return FormatHelper.userName(UserCache.find(row.getOwnerId()));
+ return row.getOwnerId();
if (columnIndex == 3)
- return FormatHelper.longDate(row.getUpdateTime());
+ return row.getUpdateTime();
if (columnIndex == 4)
- return row.getLatestVersionId() == null ? "-" : FormatHelper.bytes(row.getFileSize(), false);
+ return row.getFileSize();
if (columnIndex == 5)
- return row.getLatestVersionId() == null ? "-" : row.getLatestVersionId();
+ return row.getLatestVersionId();
if (columnIndex == 6)
return row.isTemplate;
throw new IndexOutOfBoundsException();
}
}
+
+/**
+ * This renderer formats the given value to a readable string for the table cell, depending on the column
+ */
+@SuppressWarnings("serial")
+class ImageTableRenderer extends TableRenderer {
+ @Override
+ public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,
+ boolean hasFocus, int row, int column) {
+ // column 0 and 6 don't have to be changed ( already string/ checkbox)
+ if (column == 1)
+ value = FormatHelper.osName(MetaDataCache.getOsById((int)value));
+ if (column == 2)
+ value = FormatHelper.userName(UserCache.find((String) value));
+ if (column == 3)
+ value = FormatHelper.longDate((long) value);
+ if (column == 4)
+ value = value == null ? "-" : FormatHelper.bytes((long) value, false);
+ if (column == 5)
+ value = value == null ? "-" : value;
+ if( column > 6 || column < 0)
+ throw new IndexOutOfBoundsException();
+
+ super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
+ return this;
+ }
+} \ No newline at end of file
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
index 6543d35d..335219fa 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
@@ -293,7 +293,7 @@ public class ImageListWindow extends ImageListWindowLayout {
// filter for editable
RowFilter<Object, Object> filter = new RowFilter<Object, Object>() {
public boolean include(Entry entry) {
- return imageTable.getModelRow((Integer) entry.getIdentifier()).userPermissions.edit;
+ return ImagePerms.canEdit(imageTable.getModelRow((Integer) entry.getIdentifier()));
}
};
filters.add(filter);
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/ImagePerms.java b/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/ImagePerms.java
index 4c6bf164..6899de05 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/ImagePerms.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/permissions/ImagePerms.java
@@ -16,6 +16,11 @@ public class ImagePerms {
&& (image.userPermissions.admin || image.userPermissions.edit);
}
+ public static boolean canEdit(ImageSummaryRead image) {
+ return image != null && image.userPermissions != null
+ && (image.userPermissions.admin || image.userPermissions.edit);
+ }
+
public static boolean canAdmin(ImageDetailsRead image) {
return image != null && image.userPermissions != null && image.userPermissions.admin;
}