diff options
author | Simon Rettberg | 2015-10-21 18:24:33 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-10-21 18:24:33 +0200 |
commit | 9dcb793ea9225c34b5794eee2e372985c5ceda91 (patch) | |
tree | fd770fe7d724d71875f086c7a4deaf90e8e89863 | |
parent | [client] Make deselection in tables possible when clicking on empty space. (diff) | |
download | tutor-module-9dcb793ea9225c34b5794eee2e372985c5ceda91.tar.gz tutor-module-9dcb793ea9225c34b5794eee2e372985c5ceda91.tar.xz tutor-module-9dcb793ea9225c34b5794eee2e372985c5ceda91.zip |
[client] Add experimental setting for number of connections per transfer
5 files changed, 70 insertions, 20 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/Config.java b/dozentenmodul/src/main/java/org/openslx/dozmod/Config.java index 1066ff9b..9cb002fa 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/Config.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/Config.java @@ -389,6 +389,24 @@ public class Config { } /** + * Set number of connections to establish per transfer + */ + public static void setTransferConnectionCount(int count) { + setInteger("transfer.connections-per-transfer", count); + } + + /** + * Get number of connections to establish per transfer + */ + public static int getTransferConnectionCount() { + int count = getInteger("transfer.connections-per-transfer", 1); + if (count < 1 || count > 4) { + count = 4; + } + return count; + } + + /** * Set the mode in which the proxy server is configured. * * @param mode diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ConfigWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ConfigWindow.java index ce18cf64..e7e406f7 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ConfigWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ConfigWindow.java @@ -59,16 +59,22 @@ public class ConfigWindow extends ConfigWindowLayout implements UiFeedback, Acti } btnSendMeMail.addActionListener(this); // -- END USER CONFIG -- - - // -- FONT CONFIG -- - // set font scaling as saved in config - btnFontSize.setValue(Config.getFontScaling()); - btnFontSize.addChangeListener(new ChangeListener() { + + ChangeListener changeListener = new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { reactToInput(); } - }); + }; + + // -- FONT CONFIG -- + // set font scaling as saved in config + btnFontSize.setValue(Config.getFontScaling()); + btnFontSize.addChangeListener(changeListener); + + // Transfer connection count + sldConnections.setValue(Config.getTransferConnectionCount()); + sldConnections.addChangeListener(changeListener); // -- BOTTOM BUTTONS -- btnSave.addActionListener(this); @@ -80,31 +86,38 @@ public class ConfigWindow extends ConfigWindowLayout implements UiFeedback, Acti public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if (source == btnProxyAuto || source == btnProxyHttp || source == btnProxyNone - || source == btnProxySocks) + || source == btnProxySocks) { reactToInput(); - if (source == btnSave) + } + if (source == btnSave) { saveOptions(); - if (source == btnClose) + } + if (source == btnClose) { dispose(); + } } private void reactToInput() { // our flag to en/disable the save button boolean changed = false; // first check our initial state + // TODO: Don't query this every time something changes ProxyMode initMode = Config.getProxyMode(); SatelliteUserConfig userConfig = getSatUserConfig(); int fontScaling = Config.getFontScaling(); // now check if the buttons represent another state - if (btnProxyNone.isSelected() && initMode != ProxyMode.NONE) + if (btnProxyNone.isSelected() && initMode != ProxyMode.NONE) { + changed = true; + } else if (btnProxyAuto.isSelected() && initMode != ProxyMode.AUTO) { changed = true; - else if (btnProxyAuto.isSelected() && initMode != ProxyMode.AUTO) + } else if (btnSendMeMail.isSelected() != userConfig.emailNotifications) { changed = true; - else if (btnSendMeMail.isSelected() != userConfig.emailNotifications) + } else if ((int) btnFontSize.getValue() != fontScaling) { changed = true; - else if ((Integer) btnFontSize.getValue() != fontScaling) + } else if ((int) sldConnections.getValue() != Config.getTransferConnectionCount()) { changed = true; + } // en/disable the save button btnSave.setEnabled(changed); @@ -149,7 +162,8 @@ public class ConfigWindow extends ConfigWindowLayout implements UiFeedback, Acti } // save font scaling to config - Config.setFontScaling((Integer) btnFontSize.getValue()); + Config.setFontScaling((int) btnFontSize.getValue()); + Config.setTransferConnectionCount((int) sldConnections.getValue()); // NOTE this can fail! // save mail notification stuff to sat diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ConfigWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ConfigWindowLayout.java index b1a0c761..fdcc69d1 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ConfigWindowLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ConfigWindowLayout.java @@ -13,13 +13,13 @@ import javax.swing.DefaultBoundedRangeModel; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JDialog; -import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JRadioButton; import javax.swing.JSlider; import org.openslx.dozmod.Config; import org.openslx.dozmod.gui.Gui; +import org.openslx.dozmod.gui.control.QLabel; import org.openslx.dozmod.gui.helper.GridManager; import org.openslx.dozmod.thrift.Session; @@ -34,6 +34,7 @@ public class ConfigWindowLayout extends JDialog { protected JRadioButton btnProxyHttp; protected JCheckBox btnSendMeMail; protected JSlider btnFontSize; + protected final JSlider sldConnections; protected JButton btnSave; protected JButton btnClose; @@ -60,10 +61,10 @@ public class ConfigWindowLayout extends JDialog { btnSendMeMail = new JCheckBox("Über Image- und Veranstaltungsänderungen per eMail informiert werden"); mailPanel.add(btnSendMeMail); // TODO center the label horizontally - JLabel mailNotice = new JLabel( + QLabel mailNotice = new QLabel( "Für diese Option muss der Server für den Mailversand konfiguriert sein."); mailPanel.add(mailNotice); - JLabel mailNote = new JLabel("Ihre eMail-Adresse ist " + Session.getEMail()); + QLabel mailNote = new QLabel("Ihre eMail-Adresse ist " + Session.getEMail()); mailNote.setFont(mailNote.getFont().deriveFont(Font.ITALIC)); mailPanel.add(mailNote); @@ -92,7 +93,7 @@ public class ConfigWindowLayout extends JDialog { JPanel fontPanel = new JPanel(); fontPanel.setBorder(BorderFactory.createTitledBorder("Schriftgröße (%)")); GridManager fontGrid = new GridManager(fontPanel, 1); - JLabel fontNote = new JLabel("Diese Funktion ist experimentell. Es kann zu Anzeigefehlern kommen."); + QLabel fontNote = new QLabel("Diese Funktion ist experimentell. Es kann zu Anzeigefehlern kommen."); fontNote.setFont(fontNote.getFont().deriveFont(Font.ITALIC)); fontGrid.add(fontNote); fontGrid.nextRow(); @@ -108,6 +109,16 @@ public class ConfigWindowLayout extends JDialog { fontGrid.nextRow(); fontGrid.finish(false); + // Concurrent Connections + sldConnections = new JSlider(JSlider.HORIZONTAL); + sldConnections.setModel(new DefaultBoundedRangeModel(1, 1, 1, 4)); + sldConnections.setSnapToTicks(true); + JPanel pnlConnections = new JPanel(); + pnlConnections.setLayout(new BoxLayout(pnlConnections, BoxLayout.PAGE_AXIS)); + pnlConnections.setBorder(BorderFactory.createTitledBorder("Verbindungen pro Transfer (DEBUG/TESTING)")); + pnlConnections.add(new QLabel("Anzahl Verbindungen pro Up/Download. Empfohlene Einstellung: 1")); + pnlConnections.add(sldConnections); + // bottom button panel JPanel buttonPanel = new JPanel(); btnClose = new JButton("Schließen"); @@ -117,7 +128,7 @@ public class ConfigWindowLayout extends JDialog { buttonPanel.add(Box.createGlue()); buttonPanel.add(btnClose); buttonPanel.add(btnSave); - + // Start the grid stuff GridManager grid = new GridManager(contentPanel, 1); grid.add(mailPanel).fill(true, false).expand(false, false); @@ -130,9 +141,13 @@ public class ConfigWindowLayout extends JDialog { grid.nextRow(); grid.add(fontPanel).fill(true, false).expand(false, false); grid.nextRow(); + grid.add(Box.createRigidArea(new Dimension(0, 10))); + grid.nextRow(); + grid.add(pnlConnections).fill(true, false).expand(false, false); + grid.nextRow(); grid.finish(false); - add(buttonPanel, BorderLayout.PAGE_END); + getContentPane().add(buttonPanel, BorderLayout.PAGE_END); pack(); } } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java index 7f725857..6a7be596 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/ThriftActions.java @@ -415,6 +415,7 @@ public class ThriftActions { return; } + dlTask.setMinConnections(Config.getTransferConnectionCount()); dlTask.addListener(new TransferEventListener() { @Override public void update(TransferEvent event) { diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/UploadInitiator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/UploadInitiator.java index b176a5cb..5d052f2e 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/UploadInitiator.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/thrift/UploadInitiator.java @@ -13,6 +13,7 @@ import org.openslx.bwlp.thrift.iface.SatelliteStatus; import org.openslx.bwlp.thrift.iface.TAuthorizationException; import org.openslx.bwlp.thrift.iface.TTransferRejectedException; import org.openslx.bwlp.thrift.iface.TransferInformation; +import org.openslx.dozmod.Config; import org.openslx.dozmod.filetransfer.AsyncHashGenerator; import org.openslx.dozmod.filetransfer.UploadTask; import org.openslx.thrifthelper.ThriftManager; @@ -174,6 +175,7 @@ public class UploadInitiator { this.cancel(); return; } + uploadTask.setMinConnections(Config.getTransferConnectionCount()); Thread uploadThread = new Thread(uploadTask); uploadThread.setDaemon(true); uploadThread.start(); |