summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java
diff options
context:
space:
mode:
authorStephan Schwaer2015-08-12 14:42:18 +0200
committerStephan Schwaer2015-08-12 14:42:18 +0200
commitc7db4a6d78d9e239a48a9eefc49dc23f0805d538 (patch)
treeef3e3c02c7d841d608515b577ff292a874a46e96 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java
parent[client] Remove strange code (diff)
downloadtutor-module-c7db4a6d78d9e239a48a9eefc49dc23f0805d538.tar.gz
tutor-module-c7db4a6d78d9e239a48a9eefc49dc23f0805d538.tar.xz
tutor-module-c7db4a6d78d9e239a48a9eefc49dc23f0805d538.zip
[client] Added Combobox for filtering in lecture list, now also correctly sorting image and lecture list dates by date and not lexicographic.
Diffstat (limited to 'dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java81
1 files changed, 71 insertions, 10 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java
index 2512d3ea..cabcc4f1 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java
@@ -5,6 +5,9 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
import java.util.List;
import javax.swing.JFrame;
@@ -20,8 +23,10 @@ import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.MainWindow;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.window.layout.LectureListWindowLayout;
-import org.openslx.dozmod.gui.wizard.LectureWizard;
import org.openslx.dozmod.thrift.LectureCache;
+import org.openslx.dozmod.thrift.Session;
+import org.openslx.dozmod.thrift.UserCache;
+import org.openslx.dozmod.util.FormatHelper;
import org.openslx.util.QuickTimer;
import org.openslx.util.QuickTimer.Task;
@@ -49,16 +54,18 @@ public class LectureListWindow extends LectureListWindowLayout {
@Override
public void changedUpdate(DocumentEvent e) {
// stuff
- try {
- lectureTable.getRowSorter().setRowFilter(RowFilter.regexFilter("(?i)"+searchTextField.getText(), 0, 1, 2));
- searchTextField.setForeground(UIManager.getColor("TextField.foreground"));
- } catch (IllegalArgumentException ex) {
- // TODO set background color of search field to something redish
- searchTextField.setForeground(Color.RED);
- }
+ applyFilterOnTable();
}
});
-
+
+ filterCbo.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ applyFilterOnTable();
+ }
+ });
+
+
lectureTable.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
@@ -83,7 +90,7 @@ public class LectureListWindow extends LectureListWindowLayout {
ImageDetailsWindow popup = new ImageDetailsWindow(SwingUtilities.windowForComponent(me));
if (popup != null)
popup.setImage(image.getImageBaseId());
- */
+ */
}
}
});
@@ -147,4 +154,58 @@ public class LectureListWindow extends LectureListWindowLayout {
refreshList();
}
+ private void applyFilterOnTable() {
+ try {
+ // List for filters
+ List<RowFilter<Object, Object>> filters = new ArrayList<RowFilter<Object, Object>>(3);
+
+ // string for text in filter text field
+ String filterField = searchTextField.getText();
+ filters.add(RowFilter.regexFilter("(?i)" + filterField, 0, 1, 2));
+ // filter for user (only show own)
+ switch (filterCbo.getSelectedIndex()) {
+ case 0:
+ // no additional filters
+ break;
+ case 1:
+ // filter for owner
+ String userFilter = FormatHelper.userName(UserCache.find(Session.getUserId()));
+ filters.add(RowFilter.regexFilter("(?i)" + userFilter, 1));
+ break;
+ case 2:
+ // filter for editable
+ RowFilter<Object, Object> editFilter = new RowFilter<Object, Object>() {
+ public boolean include(Entry entry) {
+ return lectureTable.getModelRow((Integer) entry.getIdentifier()).getDefaultPermissions().edit;
+ }
+ };
+ filters.add(editFilter);
+ break;
+ case 3:
+ // filter for soon ending lectures
+ RowFilter<Object, Object> expireFilter = new RowFilter<Object, Object>() {
+ public boolean include(Entry entry) {
+ long endTime = lectureTable.getModelRow((Integer) entry.getIdentifier()).getEndTime() * 1000l;
+ Calendar cal = Calendar.getInstance();
+ cal.setTime(new Date());
+ cal.add(Calendar.DATE, 7);
+ return cal.getTimeInMillis() > endTime ? true: false;
+ }
+ };
+ filters.add(expireFilter);
+ break;
+ default:
+ break;
+ }
+ // for using multiple filters
+ RowFilter<Object, Object> andFilters = RowFilter.andFilter(filters);
+ lectureTable.getRowSorter().setRowFilter(andFilters);
+
+ searchTextField.setForeground(UIManager.getColor("TextField.foreground"));
+ } catch (IllegalArgumentException ex) {
+ // TODO set background color of search field to something redish
+ searchTextField.setForeground(Color.RED);
+ }
+ }
+
}