diff options
author | Stephan Schwaer | 2015-08-12 14:42:18 +0200 |
---|---|---|
committer | Stephan Schwaer | 2015-08-12 14:42:18 +0200 |
commit | c7db4a6d78d9e239a48a9eefc49dc23f0805d538 (patch) | |
tree | ef3e3c02c7d841d608515b577ff292a874a46e96 /dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java | |
parent | [client] Remove strange code (diff) | |
download | tutor-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.java | 81 |
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); + } + } + } |