diff options
| author | Jonathan Bauer | 2015-08-03 14:52:51 +0200 |
|---|---|---|
| committer | Jonathan Bauer | 2015-08-03 14:52:51 +0200 |
| commit | ab2130ac92e623de5ead2ebeb7685165dba749b3 (patch) | |
| tree | e969cbee280402a296c887917f51547cb67a7bc6 /dozentenmodul/src/main/java/org | |
| parent | [client] ...everywhere... (diff) | |
| download | tutor-module-ab2130ac92e623de5ead2ebeb7685165dba749b3.tar.gz tutor-module-ab2130ac92e623de5ead2ebeb7685165dba749b3.tar.xz tutor-module-ab2130ac92e623de5ead2ebeb7685165dba749b3.zip | |
[client] implemented search filter in ImageListWindow, auto sort table data if specified when setData() is called
Diffstat (limited to 'dozentenmodul/src/main/java/org')
5 files changed, 36 insertions, 9 deletions
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 18c2b9e3..cf1a4c5f 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 @@ -6,6 +6,8 @@ import java.util.List; import javax.swing.JTable; import javax.swing.ListSelectionModel; +import javax.swing.RowSorter; +import javax.swing.SortOrder; import javax.swing.table.AbstractTableModel; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableRowSorter; @@ -18,6 +20,7 @@ public abstract class ListTable<T> extends JTable { private final ListModel model; private final TableRowSorter<ListModel> sorter; + private List<RowSorter.SortKey> sortKeys = new ArrayList<>(); private final TableColumnAdjuster adjuster; @@ -25,14 +28,13 @@ public abstract class ListTable<T> extends JTable { //System.setProperty("sun.awt.noerasebackground", "true"); needed? super(); this.model = new ListModel(columnNames); - this.sorter = new TableRowSorter<>(model); + this.sorter = new TableRowSorter<ListModel>(model); this.adjuster = new TableColumnAdjuster(this, 5); this.setModel(model); this.setRowSorter(sorter); this.setShowGrid(false); this.setCellSelectionEnabled(false); this.createDefaultColumnsFromModel(); - //this.setAutoCreateRowSorter(true); this.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); this.getTableHeader().setReorderingAllowed(false); this.setDefaultRenderer(Object.class, new TableRenderer()); @@ -43,7 +45,7 @@ public abstract class ListTable<T> extends JTable { protected abstract Object getValueAtInternal(int rowIndex, int columnIndex); public T get(int rowIndex) { - if (rowIndex < 0 || rowIndex >= getRowCount()) + if (rowIndex < 0 || rowIndex >= model.getRowCount()) throw new IndexOutOfBoundsException(); return model.data.get(rowIndex); } @@ -55,9 +57,22 @@ public abstract class ListTable<T> extends JTable { return get(convertRowIndexToModel(rowIndex)); } - public void setData(List<T> data) { + public void setData(List<T> data, boolean sort) { model.setData(data); adjuster.adjustColumns(); + // handle sorting + if (!sort) return; + if (sortKeys.isEmpty()) { + // sort by the first column by default + sortKeys.add(new RowSorter.SortKey(0, SortOrder.ASCENDING)); + sorter.setSortKeys(sortKeys); + } + // always sort + sorter.sort(); + } + @Override + public TableRowSorter<ListModel> getRowSorter() { + return sorter; } /** @@ -109,7 +124,6 @@ public abstract class ListTable<T> extends JTable { /** * This renderer simply removes the default dotted border when * a cell is selected - * @author joe * */ class TableRenderer extends DefaultTableCellRenderer { 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 241c3172..65084021 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 @@ -1,5 +1,6 @@ package org.openslx.dozmod.gui.window; +import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; @@ -8,6 +9,7 @@ import java.util.List; import javax.swing.JFrame; import javax.swing.JTextField; +import javax.swing.RowFilter; import javax.swing.SwingUtilities; import javax.swing.event.DocumentEvent; import javax.swing.event.DocumentListener; @@ -51,7 +53,13 @@ public class ImageListWindow extends ImageListWindowLayout { @Override public void changedUpdate(DocumentEvent e) { - // TODO: Set filter + // stuff + try { + imageTable.getRowSorter().setRowFilter(RowFilter.regexFilter("(?i)"+searchTextField.getText(), 0, 1, 2)); + } catch (Exception ex) { + // TODO set background color of search field to something redish + searchTextField.setBackground(Color.RED); + } } }); @@ -118,6 +126,7 @@ public class ImageListWindow extends ImageListWindowLayout { @Override public void actionPerformed(ActionEvent e) { // TODO open download popup + refreshList(true); } }); @@ -147,7 +156,7 @@ public class ImageListWindow extends ImageListWindowLayout { Gui.asyncExec(new Runnable() { @Override public void run() { - imageTable.setData(imageList); + imageTable.setData(imageList, true); } }); } 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 8e60a375..4b24ce5e 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 @@ -140,7 +140,7 @@ public class LectureListWindow extends LectureListWindowLayout { Gui.asyncExec(new Runnable() { @Override public void run() { - lectureTable.setData(lectureList); + lectureTable.setData(lectureList, true); } }); } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java index 97efd804..98fd8287 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/ImageWizard.java @@ -7,7 +7,9 @@ import org.apache.thrift.TException; import org.openslx.bwlp.thrift.iface.ImageBaseWrite; import org.openslx.bwlp.thrift.iface.ImageVersionWrite; 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.ImageListWindow; import org.openslx.dozmod.gui.wizard.page.ImageCustomPermissionPage; import org.openslx.dozmod.gui.wizard.page.ImageMetaDataPage; import org.openslx.dozmod.gui.wizard.page.ImageUploadPage; @@ -92,6 +94,8 @@ public class ImageWizard extends Wizard { } Gui.showMessageBox(this, "Creation of image worked :)", MessageType.INFO, LOGGER, null); + // redirect to ImageListWindow + MainWindow.showPage(ImageListWindow.class); } private boolean isStateValid() { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java index 97a1a0b9..f7ec1d9e 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/wizard/page/ImageCustomPermissionPage.java @@ -36,7 +36,7 @@ public class ImageCustomPermissionPage extends ImageCustomPermissionPageLayout { permissionList.add(new UserImagePermissions(user.getUserId(), new ImagePermissions(true, true, true, false))); } - permissionTable.setData(permissionList); + permissionTable.setData(permissionList, true); // add user button adapter addUser.addActionListener(new ActionListener() { |
