summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main/java
diff options
context:
space:
mode:
authorStephan Schwaer2015-08-11 14:58:37 +0200
committerStephan Schwaer2015-08-11 14:58:37 +0200
commit906283670063afa45e9a9591a1a3f6d71fbe529f (patch)
tree90855bb406d967b92909a176563c5791ebe5f570 /dozentenmodul/src/main/java
parent[client] Experimental code for adjusting font size (diff)
downloadtutor-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/src/main/java')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/control/table/ImageTable.java2
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java61
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ImageListWindowLayout.java16
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/thrift/Session.java11
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?
}
/**