diff options
author | Stephan Schwaer | 2015-08-11 14:58:37 +0200 |
---|---|---|
committer | Stephan Schwaer | 2015-08-11 14:58:37 +0200 |
commit | 906283670063afa45e9a9591a1a3f6d71fbe529f (patch) | |
tree | 90855bb406d967b92909a176563c5791ebe5f570 /dozentenmodul | |
parent | [client] Experimental code for adjusting font size (diff) | |
download | tutor-module-906283670063afa45e9a9591a1a3f6d71fbe529f.tar.gz tutor-module-906283670063afa45e9a9591a1a3f6d71fbe529f.tar.xz tutor-module-906283670063afa45e9a9591a1a3f6d71fbe529f.zip |
[client] added combo and filter to filter imagelist for editable and own images.
Diffstat (limited to 'dozentenmodul')
4 files changed, 78 insertions, 12 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 d692d92f..de1c936d 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 @@ -9,7 +9,7 @@ import org.openslx.dozmod.util.FormatHelper; public class ImageTable extends ListTable<ImageSummaryRead> { private static String[] columnNames = - { "Name", "OS", "Verantwortlicher", "Letztes Update", "Größe", "Version", "Vorlage" }; + { "Name", "OS", "Besitzer", "Letztes Update", "Größe", "Version", "Vorlage" }; private static Class<?>[] columnClasses = { String.class, String.class, String.class, String.class, String.class, String.class, Boolean.class }; 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 6431da20..340b320d 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 @@ -7,6 +7,7 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.File; import java.io.FileNotFoundException; +import java.util.ArrayList; import java.util.List; import javax.swing.JFileChooser; @@ -24,6 +25,7 @@ import org.openslx.bwlp.thrift.iface.ImageSummaryRead; import org.openslx.bwlp.thrift.iface.TAuthorizationException; import org.openslx.bwlp.thrift.iface.TNotFoundException; import org.openslx.bwlp.thrift.iface.TransferInformation; +import org.openslx.bwlp.thrift.iface.UserInfo; import org.openslx.dozmod.filetransfer.DownloadTask; import org.openslx.dozmod.gui.Gui; import org.openslx.dozmod.gui.MainWindow; @@ -34,6 +36,8 @@ import org.openslx.dozmod.gui.window.layout.ImageListWindowLayout; import org.openslx.dozmod.gui.wizard.ImageWizard; import org.openslx.dozmod.thrift.ImageCache; import org.openslx.dozmod.thrift.Session; +import org.openslx.dozmod.thrift.UserCache; +import org.openslx.dozmod.util.FormatHelper; import org.openslx.thrifthelper.ThriftManager; import org.openslx.util.QuickTimer; import org.openslx.util.QuickTimer.Task; @@ -68,13 +72,7 @@ public class ImageListWindow extends ImageListWindowLayout { @Override public void changedUpdate(DocumentEvent e) { // stuff - try { - imageTable.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); - } + applyFilterTable(); } }); @@ -102,6 +100,13 @@ public class ImageListWindow extends ImageListWindowLayout { pop.addSeparator(); pop.addMenuItem(popupItemDelete); + showOwned.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + applyFilterTable(); + } + }); + imageTable.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { @@ -245,4 +250,46 @@ public class ImageListWindow extends ImageListWindowLayout { } LOGGER.info(file.getAbsolutePath()); } + + private void applyFilterTable(){ + 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 (showOwned.getSelectedIndex()) { + case 0: + // no additional filters + break; + case 1: + // filter for owner + String userFilter = FormatHelper.userName(UserCache.find(Session.getUserId())); + LOGGER.info(userFilter); + filters.add(RowFilter.regexFilter("(?i)"+userFilter, 2)); + break; + case 2: + // filter for editable + RowFilter<Object, Object> filter = new RowFilter<Object, Object>() { + public boolean include(Entry entry) { + return imageTable.getModelRow((Integer)entry.getIdentifier()).userPermissions.edit; + } + }; + filters.add(filter); + break; + default: + break; + } + // for using multiple filters + RowFilter<Object,Object> andFilters = RowFilter.andFilter(filters); + imageTable.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); + } + } } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageListWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageListWindowLayout.java index 56f38c98..4138c0b8 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageListWindowLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageListWindowLayout.java @@ -7,6 +7,8 @@ import java.awt.Font; import javax.swing.Box; import javax.swing.BoxLayout; import javax.swing.JButton; +import javax.swing.JCheckBox; +import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; @@ -32,6 +34,7 @@ public abstract class ImageListWindowLayout extends CompositePage { protected final static String backButtonLabel = "Zurück"; protected final static String tableGroupLabel = "Images"; protected final static String filterGroupLabel = "Filter"; + protected final static String[] showOwnedLabel = {"Alle anzeigen", "Nur eigene Anzeigen", "Nur editierbare anzeigen"}; // -------------------------------------- // search field, table and buttons @@ -42,6 +45,7 @@ public abstract class ImageListWindowLayout extends CompositePage { protected JButton downloadButton; protected JButton deleteButton; protected JButton backButton; + protected JComboBox<String> showOwned; public ImageListWindowLayout() { @@ -60,9 +64,17 @@ public abstract class ImageListWindowLayout extends CompositePage { // -------------------------------------- // the panel for the table and search field JPanel listPanel = new JPanel(new BorderLayout()); - // the search field + // the search field and show only owned images checkbox + JPanel filterPanel = new JPanel(); + filterPanel.setLayout(new BoxLayout(filterPanel, BoxLayout.LINE_AXIS)); searchTextField = new JTextField(); - listPanel.add(searchTextField, BorderLayout.NORTH); + showOwned = new JComboBox<String>(); + for (String s: showOwnedLabel){ + showOwned.addItem(s); + } + filterPanel.add(searchTextField); + filterPanel.add(showOwned); + listPanel.add(filterPanel, BorderLayout.NORTH); // the actual table imageTable = new ImageTable(); listPanel.add(new JScrollPane(imageTable), BorderLayout.CENTER); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Session.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Session.java index c1c52fcb..4476b1f9 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Session.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Session.java @@ -9,6 +9,7 @@ import org.openslx.bwlp.thrift.iface.SatelliteConfig; import org.openslx.bwlp.thrift.iface.SessionData; import org.openslx.bwlp.thrift.iface.TInvalidTokenException; import org.openslx.bwlp.thrift.iface.UserInfo; +import org.openslx.bwlp.thrift.iface.WhoamiInfo; import org.openslx.dozmod.Config.SavedSession; import org.openslx.dozmod.authentication.ServiceProviderResponse; import org.openslx.thrifthelper.ThriftManager; @@ -69,9 +70,15 @@ public class Session { satelliteToken = response.token; } - public static void fromSavedSession(SavedSession session) { + public static void fromSavedSession(SavedSession session) throws TInvalidTokenException, TException { satelliteToken = session.token; - // TODO: Satellite whoami call + WhoamiInfo wi = ThriftManager.getSatClient().whoami(satelliteToken); + UserInfo ui = wi.getUser(); + firstName = ui.firstName; + lastName = ui.lastName; + eMail = ui.eMail; + userId = ui.userId; + // TODO check if correct/ mastertoken? } /** |