From cef89f77b838ff1aa8cd25697790b57cf1cafdfe Mon Sep 17 00:00:00 2001 From: tonikelope Date: Sun, 18 Oct 2020 23:23:21 +0200 Subject: [PATCH] 7.29 -swinginvoke in constructors -> less RC -DL CHUNK SIZE 20MB -> Increased average download speed -SmartProxy bad proxy block time 120 sec -> 90 sec -Default font noto -Default zoom 80% Let's dance --- pom.xml | 2 +- .../tonikelope/megabasterd/AboutDialog.java | 18 +- .../com/tonikelope/megabasterd/Download.java | 56 +- .../megabasterd/DownloadManager.java | 5 +- .../tonikelope/megabasterd/DownloadView.java | 84 ++- .../megabasterd/FileGrabberDialog.java | 219 +++--- .../megabasterd/FileMergerDialog.java | 28 +- .../megabasterd/FileSplitterDialog.java | 53 +- .../megabasterd/FolderLinkDialog.java | 70 +- .../tonikelope/megabasterd/Get2FACode.java | 18 +- .../megabasterd/GetMasterPasswordDialog.java | 18 +- .../megabasterd/LinkGrabberDialog.java | 63 +- .../com/tonikelope/megabasterd/MainPanel.java | 42 +- .../tonikelope/megabasterd/MainPanelView.form | 14 +- .../tonikelope/megabasterd/MainPanelView.java | 153 ++-- .../com/tonikelope/megabasterd/MiscTools.java | 139 ++-- .../megabasterd/SetMasterPasswordDialog.java | 23 +- .../megabasterd/SettingsDialog.form | 8 +- .../megabasterd/SettingsDialog.java | 657 +++++++++--------- .../megabasterd/SmartMegaProxyManager.java | 4 +- .../megabasterd/StreamerDialog.java | 55 +- .../tonikelope/megabasterd/Transference.java | 2 +- .../megabasterd/TransferenceManager.java | 27 +- .../com/tonikelope/megabasterd/Upload.java | 38 +- .../tonikelope/megabasterd/UploadManager.java | 3 +- .../tonikelope/megabasterd/UploadView.java | 80 ++- .../megabasterd/WarningExitMessage.java | 14 +- 27 files changed, 988 insertions(+), 905 deletions(-) diff --git a/pom.xml b/pom.xml index d29681057..3a3c608e9 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.tonikelope MegaBasterd - 7.28 + 7.29 jar diff --git a/src/main/java/com/tonikelope/megabasterd/AboutDialog.java b/src/main/java/com/tonikelope/megabasterd/AboutDialog.java index d872ef223..c4799cce4 100644 --- a/src/main/java/com/tonikelope/megabasterd/AboutDialog.java +++ b/src/main/java/com/tonikelope/megabasterd/AboutDialog.java @@ -25,17 +25,19 @@ public class AboutDialog extends javax.swing.JDialog { super(parent, modal); - initComponents(); + MiscTools.GUIRunAndWait(() -> { + initComponents(); - updateFonts(this, GUI_FONT, parent.getMain_panel().getZoom_factor()); + updateFonts(this, GUI_FONT, parent.getMain_panel().getZoom_factor()); - translateLabels(this); + translateLabels(this); - if (MainPanel.getNew_version() != null) { - mcdown_url_button.setEnabled(true); - } + if (MainPanel.getNew_version() != null) { + mcdown_url_button.setEnabled(true); + } - pack(); + pack(); + }); } /** @@ -255,7 +257,7 @@ public class AboutDialog extends javax.swing.JDialog { THREAD_POOL.execute(() -> { final String new_version = checkNewVersion(MEGABASTERD_URL); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { if (new_version != null) { JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("MegaBasterd NEW VERSION is available! -> ") + new_version); diff --git a/src/main/java/com/tonikelope/megabasterd/Download.java b/src/main/java/com/tonikelope/megabasterd/Download.java index 93622f1ce..48287a3ca 100644 --- a/src/main/java/com/tonikelope/megabasterd/Download.java +++ b/src/main/java/com/tonikelope/megabasterd/Download.java @@ -49,7 +49,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif public static final boolean USE_SLOTS_DEFAULT = true; public static final int WORKERS_DEFAULT = 6; public static final boolean USE_MEGA_ACCOUNT_DOWN = false; - public static final int CHUNK_SIZE_MULTI = 10; + public static final int CHUNK_SIZE_MULTI = 20; private static final Logger LOG = Logger.getLogger(Download.class.getName()); private final MainPanel _main_panel; @@ -241,7 +241,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif if (!_finalizing) { Download tthis = this; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getSpeed_label().setForeground(new Color(255, 102, 0)); @@ -260,7 +260,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif } - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getSlots_spinner().setValue(Transference.MAX_WORKERS); getView().getSlots_spinner().setEnabled(true); @@ -528,7 +528,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif @Override public void run() { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getQueue_down_button().setVisible(false); getView().getQueue_up_button().setVisible(false); getView().getQueue_top_button().setVisible(false); @@ -622,7 +622,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif _thread_pool.execute(c); } - swingInvoke(() -> { + MiscTools.GUIRun(() -> { for (JComponent c : new JComponent[]{getView().getSlots_label(), getView().getSlots_spinner(), getView().getSlot_status_label()}) { c.setVisible(true); @@ -637,7 +637,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif _thread_pool.execute(c); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { for (JComponent c1 : new JComponent[]{getView().getSlots_label(), getView().getSlots_spinner(), getView().getSlot_status_label()}) { c1.setVisible(false); } @@ -647,7 +647,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif getView().printStatusNormal(LabelTranslatorSingleton.getInstance().translate("Downloading file from mega ") + (_ma.getFull_email() != null ? "(" + _ma.getFull_email() + ")" : "") + " ..."); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { for (JComponent c : new JComponent[]{getView().getPause_button(), getView().getProgress_pbar()}) { c.setVisible(true); @@ -721,7 +721,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif _output_stream.close(); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { for (JComponent c : new JComponent[]{getView().getSpeed_label(), getView().getPause_button(), getView().getStop_button(), getView().getSlots_label(), getView().getSlots_spinner(), getView().getKeep_temp_checkbox()}) { c.setVisible(false); @@ -759,7 +759,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif getView().printStatusNormal("Checking file integrity, please wait..."); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getStop_button().setVisible(true); getView().getStop_button().setText(LabelTranslatorSingleton.getInstance().translate("CANCEL CHECK")); @@ -785,7 +785,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif } - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getStop_button().setVisible(false); }); @@ -909,7 +909,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif getMain_panel().getDownload_manager().getTransference_finished_queue().add(this); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getMain_panel().getDownload_manager().getScroll_panel().remove(getView()); getMain_panel().getDownload_manager().getScroll_panel().add(getView()); @@ -917,7 +917,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif getMain_panel().getDownload_manager().secureNotify(); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getClose_button().setVisible(true); if ((_status_error != null || _canceled) && isProvision_ok()) { @@ -934,7 +934,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif THREAD_POOL.execute(() -> { for (int i = 3; !_closed && i > 0; i--) { final int j = i; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getRestart_button().setText("Restart (" + String.valueOf(j) + " secs...)"); }); try { @@ -963,7 +963,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif getView().printStatusNormal("Provisioning download, please wait..."); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getCopy_link_button().setVisible(true); getView().getOpen_folder_button().setVisible(true); }); @@ -1039,7 +1039,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif } if (_file_name != null) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getFile_name_label().setVisible(true); getView().getFile_name_label().setText(truncateText(_download_path + "/" + _file_name, 100)); @@ -1056,7 +1056,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif getView().printStatusError(_status_error); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getClose_button().setVisible(true); }); @@ -1066,7 +1066,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif getView().printStatusNormal(_frozen ? "(FROZEN) Waiting to start..." : "Waiting to start..."); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getFile_name_label().setVisible(true); getView().getFile_name_label().setText(truncateText(_download_path + "/" + _file_name, 100)); @@ -1078,7 +1078,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif getView().getFile_size_label().setText(formatBytes(_file_size)); }); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getClose_button().setVisible(true); getView().getQueue_up_button().setVisible(true); getView().getQueue_down_button().setVisible(true); @@ -1098,7 +1098,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif getView().printStatusNormal("Download paused!"); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME DOWNLOAD")); getView().getPause_button().setEnabled(true); }); @@ -1111,7 +1111,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif getView().printStatusNormal("Download paused!"); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME DOWNLOAD")); getView().getPause_button().setEnabled(true); }); @@ -1204,7 +1204,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif if (!_chunkworkers.isEmpty()) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getSlots_spinner().setEnabled(false); }); @@ -1246,14 +1246,14 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif _finalizing = true; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getSlots_spinner().setEnabled(false); getView().getSlots_spinner().setValue((int) getView().getSlots_spinner().getValue() - 1); }); } else if (!_finalizing) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getSlots_spinner().setEnabled(true); }); } @@ -1265,7 +1265,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif getView().printStatusNormal("Download paused!"); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME DOWNLOAD")); getView().getPause_button().setEnabled(true); @@ -1461,7 +1461,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif _retrying_request = true; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getMain_panel().getView().getNew_download_menu().setEnabled(true); getView().getStop_button().setVisible(true); @@ -1496,7 +1496,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif _auto_retry_on_error = true; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getStop_button().setText(LabelTranslatorSingleton.getInstance().translate("CANCEL DOWNLOAD")); getView().getStop_button().setVisible(false); }); @@ -1542,7 +1542,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif _retrying_request = true; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getStop_button().setVisible(true); getView().getStop_button().setText(LabelTranslatorSingleton.getInstance().translate("CANCEL RETRY")); @@ -1569,7 +1569,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif _auto_retry_on_error = true; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getStop_button().setText(LabelTranslatorSingleton.getInstance().translate("CANCEL DOWNLOAD")); getView().getStop_button().setVisible(false); }); diff --git a/src/main/java/com/tonikelope/megabasterd/DownloadManager.java b/src/main/java/com/tonikelope/megabasterd/DownloadManager.java index cd6ab2f5a..17d0ac07a 100644 --- a/src/main/java/com/tonikelope/megabasterd/DownloadManager.java +++ b/src/main/java/com/tonikelope/megabasterd/DownloadManager.java @@ -2,7 +2,6 @@ package com.tonikelope.megabasterd; import static com.tonikelope.megabasterd.DBTools.*; import static com.tonikelope.megabasterd.MainPanel.*; -import static com.tonikelope.megabasterd.MiscTools.*; import java.sql.SQLException; import java.util.ArrayList; import java.util.logging.Level; @@ -29,7 +28,7 @@ public class DownloadManager extends TransferenceManager { for (final Transference d : downloads) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getScroll_panel().remove(((Download) d).getView()); }); @@ -66,7 +65,7 @@ public class DownloadManager extends TransferenceManager { @Override public void provision(final Transference download) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getScroll_panel().add(((Download) download).getView()); }); diff --git a/src/main/java/com/tonikelope/megabasterd/DownloadView.java b/src/main/java/com/tonikelope/megabasterd/DownloadView.java index 1b0a2741d..64406a7a7 100644 --- a/src/main/java/com/tonikelope/megabasterd/DownloadView.java +++ b/src/main/java/com/tonikelope/megabasterd/DownloadView.java @@ -7,6 +7,7 @@ import java.awt.Desktop; import java.io.File; import static java.lang.Integer.MAX_VALUE; import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JButton; @@ -103,35 +104,40 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView public DownloadView(Download download) { - initComponents(); - - updateFonts(this, GUI_FONT, download.getMain_panel().getZoom_factor()); - - translateLabels(this); + DownloadView tthis = this; _download = download; - slots_spinner.setModel(new SpinnerNumberModel(_download.getMain_panel().getDefault_slots_down(), Download.MIN_WORKERS, Download.MAX_WORKERS, 1)); + MiscTools.GUIRunAndWait(() -> { - ((JSpinner.DefaultEditor) slots_spinner.getEditor()).getTextField().setEditable(false); + initComponents(); - speed_label.setForeground(new Color(0, 128, 255)); - progress_pbar.setMinimum(0); - progress_pbar.setMaximum(MAX_VALUE); - progress_pbar.setStringPainted(true); + updateFonts(tthis, GUI_FONT, download.getMain_panel().getZoom_factor()); - status_label.setText(""); + translateLabels(tthis); - for (JComponent c : new JComponent[]{queue_top_button, queue_bottom_button, queue_up_button, queue_down_button, slots_spinner, slots_label, pause_button, stop_button, speed_label, progress_pbar, keep_temp_checkbox, file_name_label, close_button, copy_link_button, restart_button, file_size_label, open_folder_button}) { + slots_spinner.setModel(new SpinnerNumberModel(_download.getMain_panel().getDefault_slots_down(), Download.MIN_WORKERS, Download.MAX_WORKERS, 1)); - c.setVisible(false); - } + ((JSpinner.DefaultEditor) slots_spinner.getEditor()).getTextField().setEditable(false); + + speed_label.setForeground(new Color(0, 128, 255)); + progress_pbar.setMinimum(0); + progress_pbar.setMaximum(MAX_VALUE); + progress_pbar.setStringPainted(true); + + status_label.setText(""); + + for (JComponent c : new JComponent[]{queue_top_button, queue_bottom_button, queue_up_button, queue_down_button, slots_spinner, slots_label, pause_button, stop_button, speed_label, progress_pbar, keep_temp_checkbox, file_name_label, close_button, copy_link_button, restart_button, file_size_label, open_folder_button}) { + + c.setVisible(false); + } + }); } public void hideAllExceptStatus() { - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { for (JComponent c : new JComponent[]{speed_label, slots_spinner, slots_label, slot_status_label, slot_status_label, pause_button, stop_button, progress_pbar, keep_temp_checkbox}) { c.setVisible(false); @@ -463,7 +469,7 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView THREAD_POOL.execute(() -> { _download.upWaitQueue(); - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { queue_up_button.setEnabled(true); }); }); @@ -476,7 +482,7 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView THREAD_POOL.execute(() -> { _download.downWaitQueue(); - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { queue_down_button.setEnabled(true); }); }); @@ -489,7 +495,7 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView THREAD_POOL.execute(() -> { _download.topWaitQueue(); - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { queue_top_button.setEnabled(true); }); }); @@ -502,7 +508,7 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView THREAD_POOL.execute(() -> { _download.bottomWaitQueue(); - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { queue_bottom_button.setEnabled(true); }); }); @@ -513,7 +519,7 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView printStatusNormal("Pausing download ..."); - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { for (JComponent c : new JComponent[]{pause_button, speed_label, slots_label, slots_spinner, progress_pbar, file_name_label, file_size_label}) { c.setEnabled(false); @@ -531,7 +537,7 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView printStatusNormal("Downloading file from mega ..."); - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { for (JComponent c : new JComponent[]{pause_button, speed_label, slots_label, slots_spinner, progress_pbar, file_name_label, file_size_label}) { c.setEnabled(true); @@ -553,7 +559,7 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView printStatusNormal(status); - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { for (JComponent c : new JComponent[]{pause_button, keep_temp_checkbox, stop_button, speed_label, slots_label, slots_spinner, progress_pbar, file_name_label, file_size_label}) { c.setEnabled(false); @@ -565,7 +571,7 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView @Override public void updateSpeed(final String speed, final Boolean visible) { - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { if (speed != null) { speed_label.setText(speed); } @@ -579,14 +585,14 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView @Override public void updateProgressBar(final long progress, final double bar_rate) { - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { progress_pbar.setValue((int) Math.floor(bar_rate * progress)); }); } @Override public void updateProgressBar(final int value) { - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { progress_pbar.setValue(value); }); } @@ -594,7 +600,7 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView @Override public void printStatusError(final String message) { - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { status_label.setForeground(Color.red); status_label.setText(LabelTranslatorSingleton.getInstance().translate(message)); }); @@ -603,7 +609,7 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView @Override public void printStatusOK(final String message) { - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { status_label.setForeground(new Color(0, 170, 0)); status_label.setText(LabelTranslatorSingleton.getInstance().translate(message)); }); @@ -612,7 +618,7 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView @Override public void printStatusNormal(final String message) { - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { status_label.setForeground(new Color(102, 102, 102)); status_label.setText(LabelTranslatorSingleton.getInstance().translate(message)); }); @@ -630,7 +636,7 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView final String status = conta_error > 0 ? "(" + String.valueOf(conta_error) + ")" : ""; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { slot_status_label.setForeground(Color.RED); slot_status_label.setText(status); }); @@ -639,12 +645,26 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView @Override public int getSlots() { - return (int) swingInvokeAndWaitForReturn((Callable) getSlots_spinner()::getValue); + try { + return (int) (MiscTools.futureRun((Callable) getSlots_spinner()::getValue).get()); + } catch (InterruptedException ex) { + Logger.getLogger(DownloadView.class.getName()).log(Level.SEVERE, null, ex); + } catch (ExecutionException ex) { + Logger.getLogger(DownloadView.class.getName()).log(Level.SEVERE, null, ex); + } + return 0; } public boolean isKeepTempFileSelected() { - return (boolean) swingInvokeAndWaitForReturn((Callable) getKeep_temp_checkbox()::isSelected); + try { + return (boolean) (MiscTools.futureRun((Callable) getKeep_temp_checkbox()::isSelected).get()); + } catch (InterruptedException ex) { + Logger.getLogger(DownloadView.class.getName()).log(Level.SEVERE, null, ex); + } catch (ExecutionException ex) { + Logger.getLogger(DownloadView.class.getName()).log(Level.SEVERE, null, ex); + } + return false; } // Variables declaration - do not modify//GEN-BEGIN:variables diff --git a/src/main/java/com/tonikelope/megabasterd/FileGrabberDialog.java b/src/main/java/com/tonikelope/megabasterd/FileGrabberDialog.java index a52b4f24c..73007de62 100644 --- a/src/main/java/com/tonikelope/megabasterd/FileGrabberDialog.java +++ b/src/main/java/com/tonikelope/megabasterd/FileGrabberDialog.java @@ -17,6 +17,8 @@ import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.BorderFactory; import javax.swing.JCheckBox; @@ -88,71 +90,6 @@ public class FileGrabberDialog extends javax.swing.JDialog { _quota_ok = false; - initComponents(); - - updateFonts(this, GUI_FONT, _main_panel.getZoom_factor()); - - updateTitledBorderFont(((javax.swing.border.TitledBorder) jPanel1.getBorder()), GUI_FONT, _main_panel.getZoom_factor()); - - updateTitledBorderFont(((javax.swing.border.TitledBorder) jPanel2.getBorder()), GUI_FONT, _main_panel.getZoom_factor()); - - translateLabels(this); - - jPanel1.setDropTarget( - new DropTarget() { - - public boolean canImport(DataFlavor[] flavors) { - for (DataFlavor flavor : flavors) { - if (flavor.isFlavorJavaFileListType()) { - return true; - } - } - return false; - } - - @Override - public synchronized void drop(DropTargetDropEvent dtde) { - changeToNormal(); - dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); - - List files; - - try { - - if (canImport(dtde.getTransferable().getTransferDataFlavors())) { - files = (List) dtde.getTransferable().getTransferData(DataFlavor.javaFileListFlavor); - - THREAD_POOL.execute(() -> { - _file_drop_notify(files); - }); - } - - } catch (UnsupportedFlavorException | IOException ex) { - - } - } - - @Override - public synchronized void dragEnter(DropTargetDragEvent dtde) { - changeToDrop(); - } - - @Override - public synchronized void dragExit(DropTargetEvent dtde) { - changeToNormal(); - } - - private void changeToDrop() { - jPanel1.setBorder(BorderFactory.createLineBorder(Color.green, 5)); - - } - - private void changeToNormal() { - jPanel1.setBorder(null); - } - } - ); - _total_space = 0L; _base_path = null; _upload = false; @@ -161,17 +98,87 @@ public class FileGrabberDialog extends javax.swing.JDialog { _files = new ArrayList<>(); _last_selected_index = -1; - dir_name_textfield.addMouseListener(new ContextMenuMouseListener()); + MiscTools.GUIRunAndWait(() -> { + initComponents(); - pack(); + updateFonts(this, GUI_FONT, _main_panel.getZoom_factor()); + + updateTitledBorderFont(((javax.swing.border.TitledBorder) jPanel1.getBorder()), GUI_FONT, _main_panel.getZoom_factor()); + + updateTitledBorderFont(((javax.swing.border.TitledBorder) jPanel2.getBorder()), GUI_FONT, _main_panel.getZoom_factor()); + + translateLabels(this); + + jPanel1.setDropTarget( + new DropTarget() { + + public boolean canImport(DataFlavor[] flavors) { + for (DataFlavor flavor : flavors) { + if (flavor.isFlavorJavaFileListType()) { + return true; + } + } + return false; + } + + @Override + public synchronized void drop(DropTargetDropEvent dtde) { + changeToNormal(); + dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); + + List files; + + try { + + if (canImport(dtde.getTransferable().getTransferDataFlavors())) { + files = (List) dtde.getTransferable().getTransferData(DataFlavor.javaFileListFlavor); + + THREAD_POOL.execute(() -> { + _file_drop_notify(files); + }); + } + + } catch (UnsupportedFlavorException | IOException ex) { + + } + } + + @Override + public synchronized void dragEnter(DropTargetDragEvent dtde) { + changeToDrop(); + } + + @Override + public synchronized void dragExit(DropTargetEvent dtde) { + changeToNormal(); + } + + private void changeToDrop() { + jPanel1.setBorder(BorderFactory.createLineBorder(Color.green, 5)); + + } + + private void changeToNormal() { + jPanel1.setBorder(null); + } + } + ); + + dir_name_textfield.addMouseListener(new ContextMenuMouseListener()); + + pack(); + + }); THREAD_POOL.execute(() -> { + if (_drag_drop_files != null) { _file_drop_notify(_drag_drop_files); } + if (_main_panel.getMega_accounts().size() > 0) { - swingInvoke(() -> { + MiscTools.GUIRunAndWait(() -> { if (!_main_panel.getMega_active_accounts().isEmpty()) { _inserting_mega_accounts = true; @@ -200,7 +207,7 @@ public class FileGrabberDialog extends javax.swing.JDialog { pack(); }); } else { - swingInvoke(() -> { + MiscTools.GUIRunAndWait(() -> { used_space_label.setForeground(Color.red); used_space_label.setEnabled(true); used_space_label.setText(LabelTranslatorSingleton.getInstance().translate("No MEGA accounts available (Go to Settings > Accounts)")); @@ -515,7 +522,7 @@ public class FileGrabberDialog extends javax.swing.JDialog { THREAD_POOL.execute(() -> { _genFileList(); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { add_files_button.setEnabled(true); add_folder_button.setEnabled(true); @@ -591,7 +598,7 @@ public class FileGrabberDialog extends javax.swing.JDialog { if (filechooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION && filechooser.getSelectedFile().canRead()) { THREAD_POOL.execute(() -> { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { total_file_size_label.setText("[0 B]"); _base_path = filechooser.getSelectedFile().getAbsolutePath(); @@ -605,11 +612,11 @@ public class FileGrabberDialog extends javax.swing.JDialog { DefaultMutableTreeNode root = new DefaultMutableTreeNode(filechooser.getSelectedFile().getAbsolutePath()); _genFileTree(filechooser.getSelectedFile().getAbsolutePath(), root, null); DefaultTreeModel tree_model = new DefaultTreeModel(sortTree(root)); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { file_tree.setModel(tree_model); }); _genFileList(); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { add_files_button.setEnabled(true); add_folder_button.setEnabled(true); @@ -717,7 +724,7 @@ public class FileGrabberDialog extends javax.swing.JDialog { } final String quota_m = LabelTranslatorSingleton.getInstance().translate("Quota used: ") + formatBytes(quota[0]) + "/" + formatBytes(quota[1]); _quota_ok = true; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { boolean root_childs = ((TreeNode) file_tree.getModel().getRoot()).getChildCount() > 0; used_space_label.setText(quota_m); @@ -735,7 +742,7 @@ public class FileGrabberDialog extends javax.swing.JDialog { } }); } else { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { account_combobox.setEnabled(true); account_label.setEnabled(true); account_combobox.setSelectedIndex(-1); @@ -759,7 +766,7 @@ public class FileGrabberDialog extends javax.swing.JDialog { } } } catch (Exception ex) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { account_combobox.setEnabled(true); account_label.setEnabled(true); account_combobox.setSelectedIndex(-1); @@ -863,47 +870,53 @@ public class FileGrabberDialog extends javax.swing.JDialog { private void _genFileList() { - _files.clear(); + try { + _files.clear(); - _total_space = 0L; + _total_space = 0L; - DefaultTreeModel tree_model = (DefaultTreeModel) swingInvokeAndWaitForReturn((Callable) file_tree::getModel); + DefaultTreeModel tree_model = (DefaultTreeModel) (MiscTools.futureRun((Callable) file_tree::getModel).get()); - DefaultMutableTreeNode root = (DefaultMutableTreeNode) tree_model.getRoot(); + DefaultMutableTreeNode root = (DefaultMutableTreeNode) tree_model.getRoot(); - Enumeration files_tree = root.depthFirstEnumeration(); + Enumeration files_tree = root.depthFirstEnumeration(); - while (files_tree.hasMoreElements()) { + while (files_tree.hasMoreElements()) { - DefaultMutableTreeNode node = (DefaultMutableTreeNode) files_tree.nextElement(); + DefaultMutableTreeNode node = (DefaultMutableTreeNode) files_tree.nextElement(); - if (node.isLeaf() && node != root) { + if (node.isLeaf() && node != root) { - String path = ""; + String path = ""; - Object[] object_path = node.getUserObjectPath(); + Object[] object_path = node.getUserObjectPath(); - for (Object p : object_path) { + for (Object p : object_path) { - path += File.separator + p; - } + path += File.separator + p; + } - path = path.replaceAll("^/+", "/").replaceAll("^\\+", "\\").trim().replaceAll(" \\[[0-9,.]+ [A-Z]+\\]$", ""); + path = path.replaceAll("^/+", "/").replaceAll("^\\+", "\\").trim().replaceAll(" \\[[0-9,.]+ [A-Z]+\\]$", ""); - File file = new File(path); + File file = new File(path); - if (file.isFile()) { + if (file.isFile()) { - _total_space += file.length(); + _total_space += file.length(); - _files.add(file); + _files.add(file); + } } } - } - swingInvoke(() -> { - total_file_size_label.setText("[" + formatBytes(_total_space) + "]"); - }); + MiscTools.GUIRun(() -> { + total_file_size_label.setText("[" + formatBytes(_total_space) + "]"); + }); + } catch (InterruptedException ex) { + Logger.getLogger(FileGrabberDialog.class.getName()).log(Level.SEVERE, null, ex); + } catch (ExecutionException ex) { + Logger.getLogger(FileGrabberDialog.class.getName()).log(Level.SEVERE, null, ex); + } } @@ -931,7 +944,7 @@ public class FileGrabberDialog extends javax.swing.JDialog { private void _file_drop_notify(List files) { - swingInvoke(() -> { + MiscTools.GUIRunAndWait(() -> { add_files_button.setEnabled(false); add_folder_button.setEnabled(false); warning_label.setEnabled(false); @@ -947,7 +960,7 @@ public class FileGrabberDialog extends javax.swing.JDialog { _base_path = (files.size() == 1 && files.get(0).isDirectory()) ? files.get(0).getAbsolutePath() : files.get(0).getParentFile().getAbsolutePath(); - swingInvoke(() -> { + MiscTools.GUIRunAndWait(() -> { dir_name_textfield.setText(((files.size() == 1 && files.get(0).isDirectory()) ? files.get(0).getName() : files.get(0).getParentFile().getName()) + "_" + genID(10)); dir_name_textfield.setEnabled(true); @@ -957,7 +970,7 @@ public class FileGrabberDialog extends javax.swing.JDialog { DefaultMutableTreeNode root = new DefaultMutableTreeNode(_base_path); - swingInvoke(() -> { + MiscTools.GUIRunAndWait(() -> { dance_button.setText(LabelTranslatorSingleton.getInstance().translate("Loading files, please wait...")); }); @@ -965,13 +978,13 @@ public class FileGrabberDialog extends javax.swing.JDialog { DefaultTreeModel tree_model = new DefaultTreeModel(sortTree(root)); - swingInvoke(() -> { + MiscTools.GUIRunAndWait(() -> { file_tree.setModel(tree_model); }); _genFileList(); - swingInvoke(() -> { + MiscTools.GUIRunAndWait(() -> { dance_button.setText(LabelTranslatorSingleton.getInstance().translate("Let's dance, baby")); if (_last_selected_index != -1 && _quota_ok) { diff --git a/src/main/java/com/tonikelope/megabasterd/FileMergerDialog.java b/src/main/java/com/tonikelope/megabasterd/FileMergerDialog.java index 129a64601..14f0efccb 100644 --- a/src/main/java/com/tonikelope/megabasterd/FileMergerDialog.java +++ b/src/main/java/com/tonikelope/megabasterd/FileMergerDialog.java @@ -18,7 +18,6 @@ package com.tonikelope.megabasterd; import static com.tonikelope.megabasterd.MainPanel.GUI_FONT; import static com.tonikelope.megabasterd.MainPanel.THREAD_POOL; -import static com.tonikelope.megabasterd.MiscTools.swingInvoke; import static com.tonikelope.megabasterd.MiscTools.translateLabels; import static com.tonikelope.megabasterd.MiscTools.truncateText; import static com.tonikelope.megabasterd.MiscTools.updateFonts; @@ -56,16 +55,19 @@ public class FileMergerDialog extends javax.swing.JDialog { public FileMergerDialog(MainPanelView parent, boolean modal) { super(parent, modal); _main_panel = parent.getMain_panel(); - initComponents(); - updateFonts(this, GUI_FONT, _main_panel.getZoom_factor()); - translateLabels(this); - jProgressBar2.setMinimum(0); - jProgressBar2.setMaximum(MAX_VALUE); - jProgressBar2.setStringPainted(true); - jProgressBar2.setValue(0); - jProgressBar2.setVisible(false); - pack(); + MiscTools.GUIRunAndWait(() -> { + initComponents(); + updateFonts(this, GUI_FONT, _main_panel.getZoom_factor()); + translateLabels(this); + jProgressBar2.setMinimum(0); + jProgressBar2.setMaximum(MAX_VALUE); + jProgressBar2.setStringPainted(true); + jProgressBar2.setValue(0); + jProgressBar2.setVisible(false); + + pack(); + }); } private boolean _mergeFile() throws IOException { @@ -82,7 +84,7 @@ public class FileMergerDialog extends javax.swing.JDialog { _progress += rfile.length(); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { jProgressBar2.setValue((int) Math.floor((MAX_VALUE / (double) _file_size) * _progress)); }); } @@ -359,7 +361,7 @@ public class FileMergerDialog extends javax.swing.JDialog { if (delete_parts_checkbox.isSelected()) { _deleteParts(); } - swingInvoke(() -> { + MiscTools.GUIRun(() -> { JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("File successfully merged!")); if (Desktop.isDesktopSupported()) { @@ -376,7 +378,7 @@ public class FileMergerDialog extends javax.swing.JDialog { }); } else { _file_parts.clear(); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { file_name_label.setText(""); file_size_label.setText(""); diff --git a/src/main/java/com/tonikelope/megabasterd/FileSplitterDialog.java b/src/main/java/com/tonikelope/megabasterd/FileSplitterDialog.java index f6bbaab72..34d57762a 100644 --- a/src/main/java/com/tonikelope/megabasterd/FileSplitterDialog.java +++ b/src/main/java/com/tonikelope/megabasterd/FileSplitterDialog.java @@ -18,7 +18,6 @@ package com.tonikelope.megabasterd; import static com.tonikelope.megabasterd.MainPanel.GUI_FONT; import static com.tonikelope.megabasterd.MainPanel.THREAD_POOL; -import static com.tonikelope.megabasterd.MiscTools.swingInvoke; import static com.tonikelope.megabasterd.MiscTools.translateLabels; import static com.tonikelope.megabasterd.MiscTools.truncateText; import static com.tonikelope.megabasterd.MiscTools.updateFonts; @@ -58,32 +57,34 @@ public class FileSplitterDialog extends javax.swing.JDialog { super(parent, modal); _main_panel = parent.getMain_panel(); - initComponents(); + MiscTools.GUIRunAndWait(() -> { + initComponents(); - updateFonts(this, GUI_FONT, _main_panel.getZoom_factor()); + updateFonts(this, GUI_FONT, _main_panel.getZoom_factor()); - translateLabels(this); + translateLabels(this); - jProgressBar2.setMinimum(0); - jProgressBar2.setMaximum(MAX_VALUE); - jProgressBar2.setStringPainted(true); - jProgressBar2.setValue(0); - jProgressBar2.setVisible(false); + jProgressBar2.setMinimum(0); + jProgressBar2.setMaximum(MAX_VALUE); + jProgressBar2.setStringPainted(true); + jProgressBar2.setValue(0); + jProgressBar2.setVisible(false); - split_size_text.addKeyListener(new java.awt.event.KeyAdapter() { + split_size_text.addKeyListener(new java.awt.event.KeyAdapter() { - public void keyReleased(java.awt.event.KeyEvent evt) { - try { - Integer.parseInt(split_size_text.getText()); - } catch (Exception e) { - split_size_text.setText(split_size_text.getText().substring(0, Math.max(0, split_size_text.getText().length() - 1))); + public void keyReleased(java.awt.event.KeyEvent evt) { + try { + Integer.parseInt(split_size_text.getText()); + } catch (Exception e) { + split_size_text.setText(split_size_text.getText().substring(0, Math.max(0, split_size_text.getText().length() - 1))); + } } - } + }); + + split_size_text.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + + pack(); }); - - split_size_text.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); - - pack(); } private boolean _splitFile() throws IOException { @@ -101,8 +102,7 @@ public class FileSplitterDialog extends javax.swing.JDialog { int position = 0; int conta_split = 1; - try (RandomAccessFile sourceFile = new RandomAccessFile(this._file.getAbsolutePath(), "r"); - FileChannel sourceChannel = sourceFile.getChannel()) { + try (RandomAccessFile sourceFile = new RandomAccessFile(this._file.getAbsolutePath(), "r"); FileChannel sourceChannel = sourceFile.getChannel()) { for (; position < numSplits; position++, conta_split++) { _writePartToFile(bytesPerSplit, position * bytesPerSplit, sourceChannel, conta_split, numSplits + (remainingBytes > 0 ? 1 : 0)); @@ -119,15 +119,14 @@ public class FileSplitterDialog extends javax.swing.JDialog { private void _writePartToFile(long byteSize, long position, FileChannel sourceChannel, int conta_split, long num_splits) throws IOException { Path fileName = Paths.get(this._output_dir.getAbsolutePath() + "/" + this._file.getName() + ".part" + String.valueOf(conta_split) + "-" + String.valueOf(num_splits)); - try (RandomAccessFile toFile = new RandomAccessFile(fileName.toFile(), "rw"); - FileChannel toChannel = toFile.getChannel()) { + try (RandomAccessFile toFile = new RandomAccessFile(fileName.toFile(), "rw"); FileChannel toChannel = toFile.getChannel()) { sourceChannel.position(position); toChannel.transferFrom(sourceChannel, 0, byteSize); } _progress += byteSize; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { jProgressBar2.setValue((int) Math.floor((MAX_VALUE / (double) _file.length()) * _progress)); }); @@ -370,7 +369,7 @@ public class FileSplitterDialog extends javax.swing.JDialog { THREAD_POOL.execute(() -> { try { if (_splitFile()) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("File successfully splitted!")); if (Desktop.isDesktopSupported()) { @@ -388,7 +387,7 @@ public class FileSplitterDialog extends javax.swing.JDialog { } else { _file = null; _output_dir = null; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { file_name_label.setText(""); output_folder_label.setText(""); diff --git a/src/main/java/com/tonikelope/megabasterd/FolderLinkDialog.java b/src/main/java/com/tonikelope/megabasterd/FolderLinkDialog.java index a098482a2..6a346944b 100644 --- a/src/main/java/com/tonikelope/megabasterd/FolderLinkDialog.java +++ b/src/main/java/com/tonikelope/megabasterd/FolderLinkDialog.java @@ -58,49 +58,61 @@ public class FolderLinkDialog extends javax.swing.JDialog { super(parent, modal); - initComponents(); - - updateFonts(this, GUI_FONT, parent.getMain_panel().getZoom_factor()); - - translateLabels(this); - _mega_error = 0; _total_space = 0L; _download = false; _download_links = new ArrayList<>(); _link = link; - folder_link_label.setText(link); + MiscTools.GUIRunAndWait(() -> { - restore_button.setVisible(false); + initComponents(); - final Dialog tthis = this; + updateFonts(this, GUI_FONT, parent.getMain_panel().getZoom_factor()); - THREAD_POOL.execute(() -> { - _loadMegaDirTree(); + translateLabels(this); - if (_mega_error == 0) { + folder_link_label.setText(link); - _genDownloadLiks(); + restore_button.setVisible(false); - dance_button.setText(LabelTranslatorSingleton.getInstance().translate("Let's dance, baby")); + final Dialog tthis = this; - pack(); + THREAD_POOL.execute(() -> { + _loadMegaDirTree(); - } else if (_mega_error == -18) { + if (_mega_error == 0) { - JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("MEGA LINK TEMPORARILY UNAVAILABLE!"), "Error", JOptionPane.ERROR_MESSAGE); + _genDownloadLiks(); - setVisible(false); + MiscTools.GUIRun(() -> { - } else { - JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("MEGA LINK ERROR!"), "Error", JOptionPane.ERROR_MESSAGE); + dance_button.setText(LabelTranslatorSingleton.getInstance().translate("Let's dance, baby")); + + pack(); + }); + + } else if (_mega_error == -18) { + + MiscTools.GUIRun(() -> { + JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("MEGA LINK TEMPORARILY UNAVAILABLE!"), "Error", JOptionPane.ERROR_MESSAGE); + + setVisible(false); + }); + + } else { + + MiscTools.GUIRun(() -> { + JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("MEGA LINK ERROR!"), "Error", JOptionPane.ERROR_MESSAGE); + + setVisible(false); + }); + } + }); + + pack(); - setVisible(false); - } }); - - pack(); } /** @@ -307,7 +319,7 @@ public class FolderLinkDialog extends javax.swing.JDialog { THREAD_POOL.execute(() -> { _loadMegaDirTree(); _genDownloadLiks(); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { restore_button.setVisible(false); restore_button.setText(LabelTranslatorSingleton.getInstance().translate("Restore folder data")); boolean root_childs = ((TreeNode) file_tree.getModel().getRoot()).getChildCount() > 0; @@ -324,7 +336,7 @@ public class FolderLinkDialog extends javax.swing.JDialog { private void _loadMegaDirTree() { try { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); }); @@ -404,7 +416,7 @@ public class FolderLinkDialog extends javax.swing.JDialog { final MegaMutableTreeNode roott = root; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { ftree.setModel(new DefaultTreeModel(sortTree(roott))); ftree.setRootVisible(roott != null ? roott.getChildCount() > 0 : false); @@ -427,7 +439,7 @@ public class FolderLinkDialog extends javax.swing.JDialog { _mega_error = 1; } - swingInvoke(() -> { + MiscTools.GUIRun(() -> { setDefaultCloseOperation(DISPOSE_ON_CLOSE); }); @@ -435,7 +447,7 @@ public class FolderLinkDialog extends javax.swing.JDialog { private void _genDownloadLiks() { - swingInvoke(() -> { + MiscTools.GUIRunAndWait(() -> { setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); String folder_id = findFirstRegex("#F!([^!]+)", _link, 1); diff --git a/src/main/java/com/tonikelope/megabasterd/Get2FACode.java b/src/main/java/com/tonikelope/megabasterd/Get2FACode.java index de691bc00..26b231faf 100644 --- a/src/main/java/com/tonikelope/megabasterd/Get2FACode.java +++ b/src/main/java/com/tonikelope/megabasterd/Get2FACode.java @@ -28,19 +28,23 @@ public class Get2FACode extends javax.swing.JDialog { public Get2FACode(java.awt.Frame parent, boolean modal, String email, MainPanel main_panel) { super(parent, modal); - initComponents(); + MiscTools.GUIRunAndWait(() -> { - updateFonts(this, GUI_FONT, main_panel.getZoom_factor()); + initComponents(); - translateLabels(this); + updateFonts(this, GUI_FONT, main_panel.getZoom_factor()); - _code_ok = false; + translateLabels(this); - this.email_label.setText(email); + _code_ok = false; - this.ok_button.setEnabled(false); + this.email_label.setText(email); - pack(); + this.ok_button.setEnabled(false); + + pack(); + + }); } diff --git a/src/main/java/com/tonikelope/megabasterd/GetMasterPasswordDialog.java b/src/main/java/com/tonikelope/megabasterd/GetMasterPasswordDialog.java index 3ea748eff..51bbba6b0 100644 --- a/src/main/java/com/tonikelope/megabasterd/GetMasterPasswordDialog.java +++ b/src/main/java/com/tonikelope/megabasterd/GetMasterPasswordDialog.java @@ -59,13 +59,6 @@ public class GetMasterPasswordDialog extends javax.swing.JDialog { */ public GetMasterPasswordDialog(java.awt.Frame parent, boolean modal, String current_pass_hash, String salt, MainPanel main_panel) { super(parent, modal); - - initComponents(); - - updateFonts(this, GUI_FONT, main_panel.getZoom_factor()); - - translateLabels(this); - _current_pass_hash = current_pass_hash; _pass_ok = false; @@ -73,8 +66,15 @@ public class GetMasterPasswordDialog extends javax.swing.JDialog { _pass = null; _salt = salt; + MiscTools.GUIRunAndWait(() -> { + initComponents(); - pack(); + updateFonts(this, GUI_FONT, main_panel.getZoom_factor()); + + translateLabels(this); + + pack(); + }); } @@ -208,7 +208,7 @@ public class GetMasterPasswordDialog extends javax.swing.JDialog { try { byte[] pass = CryptTools.PBKDF2HMACSHA256(new String(current_pass_textfield.getPassword()), BASE642Bin(_salt), CryptTools.MASTER_PASSWORD_PBKDF2_ITERATIONS, CryptTools.MASTER_PASSWORD_PBKDF2_OUTPUT_BIT_LENGTH); String pass_hash = Bin2BASE64(HashBin("SHA-1", pass)); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { if (!pass_hash.equals(_current_pass_hash)) { JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("BAD PASSWORD!"), "Error", JOptionPane.ERROR_MESSAGE); diff --git a/src/main/java/com/tonikelope/megabasterd/LinkGrabberDialog.java b/src/main/java/com/tonikelope/megabasterd/LinkGrabberDialog.java index b4732691c..6e73234d7 100644 --- a/src/main/java/com/tonikelope/megabasterd/LinkGrabberDialog.java +++ b/src/main/java/com/tonikelope/megabasterd/LinkGrabberDialog.java @@ -62,12 +62,6 @@ public class LinkGrabberDialog extends javax.swing.JDialog implements ClipboardC _main_panel = parent.getMain_panel(); - initComponents(); - - updateFonts(this, GUI_FONT, _main_panel.getZoom_factor()); - - translateLabels(this); - _download = false; _download_path = Paths.get(download_path).toAbsolutePath().normalize().toString(); @@ -76,33 +70,42 @@ public class LinkGrabberDialog extends javax.swing.JDialog implements ClipboardC _clipboardspy = clipboardspy; - download_dir_label.setText(truncateText(_download_path, 80)); + MiscTools.GUIRunAndWait(() -> { - if (_main_panel.isUse_mega_account_down() && _main_panel.getMega_accounts().size() > 0) { + initComponents(); - THREAD_POOL.execute(() -> { - swingInvoke(() -> { - String mega_default_down = _main_panel.getMega_account_down(); + updateFonts(this, GUI_FONT, _main_panel.getZoom_factor()); - use_mega_account_down_combobox.addItem(mega_default_down); + translateLabels(this); - _main_panel.getMega_accounts().keySet().stream().filter((k) -> (!mega_default_down.equals(k))).forEachOrdered((k) -> { - use_mega_account_down_combobox.addItem(k); + download_dir_label.setText(truncateText(_download_path, 80)); + + if (_main_panel.isUse_mega_account_down() && _main_panel.getMega_accounts().size() > 0) { + + THREAD_POOL.execute(() -> { + MiscTools.GUIRun(() -> { + String mega_default_down = _main_panel.getMega_account_down(); + + use_mega_account_down_combobox.addItem(mega_default_down); + + _main_panel.getMega_accounts().keySet().stream().filter((k) -> (!mega_default_down.equals(k))).forEachOrdered((k) -> { + use_mega_account_down_combobox.addItem(k); + }); + + use_mega_account_down_combobox.addItem(""); + use_mega_account_down_combobox.setSelectedIndex(0); }); - - use_mega_account_down_combobox.addItem(""); - use_mega_account_down_combobox.setSelectedIndex(0); }); - }); - } else { - use_mega_account_down_combobox.setEnabled(false); - use_mega_account_down_combobox.setVisible(false); - use_mega_account_down_label.setEnabled(false); - use_mega_account_down_label.setVisible(false); - } + } else { + use_mega_account_down_combobox.setEnabled(false); + use_mega_account_down_combobox.setVisible(false); + use_mega_account_down_label.setEnabled(false); + use_mega_account_down_label.setVisible(false); + } - pack(); + pack(); + }); } /** @@ -334,7 +337,7 @@ public class LinkGrabberDialog extends javax.swing.JDialog implements ClipboardC } } if (!links.isEmpty()) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { links_textarea.setText(""); for (Iterator i = links.iterator(); i.hasNext();) { @@ -353,7 +356,7 @@ public class LinkGrabberDialog extends javax.swing.JDialog implements ClipboardC } catch (IOException ex) { LOG.log(Level.SEVERE, ex.getMessage()); } - swingInvoke(() -> { + MiscTools.GUIRun(() -> { dlc_button.setText(LabelTranslatorSingleton.getInstance().translate("Load DLC container")); dlc_button.setEnabled(true); @@ -411,11 +414,11 @@ public class LinkGrabberDialog extends javax.swing.JDialog implements ClipboardC use_account = false; } if (!use_account) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { use_mega_account_down_combobox.setSelectedIndex(_main_panel.getMega_accounts().size()); }); } - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getUse_mega_account_down_combobox().setEnabled(true); getDance_button().setText(LabelTranslatorSingleton.getInstance().translate("Let's dance, baby")); @@ -447,7 +450,7 @@ public class LinkGrabberDialog extends javax.swing.JDialog implements ClipboardC @Override public void notifyClipboardChange() { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { String current_text = links_textarea.getText(); links_textarea.append((current_text.length() > 0 ? "\n\n" : "") + extractMegaLinksFromString(extractStringFromClipboardContents(_clipboardspy.getContents()))); diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanel.java b/src/main/java/com/tonikelope/megabasterd/MainPanel.java index b16d8cbe4..6b0f1610c 100644 --- a/src/main/java/com/tonikelope/megabasterd/MainPanel.java +++ b/src/main/java/com/tonikelope/megabasterd/MainPanel.java @@ -60,7 +60,7 @@ import javax.swing.UIManager; */ public final class MainPanel { - public static final String VERSION = "7.28"; + public static final String VERSION = "7.29"; public static final boolean FORCE_SMART_PROXY = false; //TRUE FOR DEBUGING SMART PROXY public static final int THROTTLE_SLICE_SIZE = 16 * 1024; public static final int DEFAULT_BYTE_BUFFER_SIZE = 16 * 1024; @@ -71,8 +71,8 @@ public final class MainPanel { public static final String DEFAULT_LANGUAGE = "EN"; public static final boolean DEFAULT_SMART_PROXY = false; public static final double FORCE_GARBAGE_COLLECTION_MAX_MEMORY_PERCENT = 0.7; - public static Font GUI_FONT = createAndRegisterFont("/fonts/Kalam-Light.ttf"); - public static final float ZOOM_FACTOR = 1.0f; + public static Font GUI_FONT = createAndRegisterFont("/fonts/NotoSansCJK-Regular.ttc"); + public static final float ZOOM_FACTOR = 0.8f; public static final String DEFAULT_USER_AGENT = "Mozilla/5.0 (X11; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"; public static final String ICON_FILE = "/images/pica_roja_big.png"; public static final ExecutorService THREAD_POOL = newCachedThreadPool(); @@ -104,7 +104,7 @@ public final class MainPanel { PrintStream fileOut; try { - fileOut = new PrintStream(new FileOutputStream(System.getProperty("user.home") + "/megabasterd_DEBUG.log")); + fileOut = new PrintStream(new FileOutputStream(System.getProperty("user.home") + "/.MEGABASTERD_DEBUG.log")); System.setOut(fileOut); System.setErr(fileOut); @@ -365,7 +365,7 @@ public final class MainPanel { } else { _mega_proxy_server = null; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().updateMCReverseStatus("MC reverse mode: OFF"); }); @@ -387,7 +387,7 @@ public final class MainPanel { } - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getGlobal_speed_down_label().setForeground(_limit_download_speed ? new Color(255, 0, 0) : new Color(0, 128, 255)); getView().getGlobal_speed_up_label().setForeground(_limit_upload_speed ? new Color(255, 0, 0) : new Color(0, 128, 255)); @@ -398,7 +398,7 @@ public final class MainPanel { while (true) { long used_memory = instance.totalMemory() - instance.freeMemory(); long max_memory = instance.maxMemory(); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { _view.getMemory_status().setText(MiscTools.formatBytes(used_memory) + " / " + MiscTools.formatBytes(max_memory)); }); try { @@ -658,16 +658,16 @@ public final class MainPanel { if (_font != null) { if (_font.equals("DEFAULT")) { - GUI_FONT = createAndRegisterFont("/fonts/Kalam-Light.ttf"); + GUI_FONT = createAndRegisterFont("/fonts/NotoSansCJK-Regular.ttc"); } else { - GUI_FONT = createAndRegisterFont("/fonts/NotoSansCJK-Regular.ttc"); + GUI_FONT = createAndRegisterFont("/fonts/Kalam-Light.ttf"); } } else { - GUI_FONT = createAndRegisterFont("/fonts/Kalam-Light.ttf"); + GUI_FONT = createAndRegisterFont("/fonts/NotoSansCJK-Regular.ttc"); } String def_slots = selectSettingValue("default_slots_down"); @@ -1087,7 +1087,7 @@ public final class MainPanel { } if (!download.getChunkworkers().isEmpty()) { wait = true; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { download.getView().printStatusNormal("Stopping download safely before exit MegaBasterd, please wait..."); download.getView().getSlots_spinner().setEnabled(false); download.getView().getPause_button().setEnabled(false); @@ -1111,7 +1111,7 @@ public final class MainPanel { } if (!upload.getChunkworkers().isEmpty()) { wait = true; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { upload.getView().printStatusNormal("Stopping upload safely before exit MegaBasterd, please wait..."); upload.getView().getSlots_spinner().setEnabled(false); upload.getView().getPause_button().setEnabled(false); @@ -1207,7 +1207,7 @@ public final class MainPanel { while (true) { try { socket.accept(); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().setExtendedState(NORMAL); getView().setVisible(true); @@ -1232,7 +1232,7 @@ public final class MainPanel { if (!getResume_downloads()) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getStatus_down_label().setText(LabelTranslatorSingleton.getInstance().translate("Checking if there are previous downloads, please wait...")); }); @@ -1329,7 +1329,7 @@ public final class MainPanel { _download_manager.setSort_wait_start_queue(false); getDownload_manager().secureNotify(); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getjTabbedPane1().setSelectedIndex(0); }); @@ -1337,7 +1337,7 @@ public final class MainPanel { setResume_downloads(true); } - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getStatus_down_label().setText(""); }); }); @@ -1359,7 +1359,7 @@ public final class MainPanel { MenuItem messageItem = new MenuItem(LabelTranslatorSingleton.getInstance().translate("Restore window")); messageItem.addActionListener((ActionEvent e) -> { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().setExtendedState(NORMAL); getView().setVisible(true); @@ -1390,7 +1390,7 @@ public final class MainPanel { menu.add(closeItem); ActionListener actionListener = (ActionEvent e) -> { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { if (!getView().isVisible()) { getView().setExtendedState(NORMAL); getView().setVisible(true); @@ -1422,7 +1422,7 @@ public final class MainPanel { if (!getResume_uploads()) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getStatus_up_label().setText(LabelTranslatorSingleton.getInstance().translate("Checking if there are previous uploads, please wait...")); }); @@ -1530,14 +1530,14 @@ public final class MainPanel { _upload_manager.setSort_wait_start_queue(false); getUpload_manager().secureNotify(); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getjTabbedPane1().setSelectedIndex(1); }); } else { setResume_uploads(true); } - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getStatus_up_label().setText(""); }); }); diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanelView.form b/src/main/java/com/tonikelope/megabasterd/MainPanelView.form index 1c93f6877..b6c015ed9 100644 --- a/src/main/java/com/tonikelope/megabasterd/MainPanelView.form +++ b/src/main/java/com/tonikelope/megabasterd/MainPanelView.form @@ -242,9 +242,9 @@ - + - + @@ -268,7 +268,7 @@ - + @@ -342,7 +342,7 @@ - + @@ -387,7 +387,7 @@ - + @@ -522,7 +522,7 @@ - + @@ -625,7 +625,7 @@ - + diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanelView.java b/src/main/java/com/tonikelope/megabasterd/MainPanelView.java index 1e1581b5c..549142268 100644 --- a/src/main/java/com/tonikelope/megabasterd/MainPanelView.java +++ b/src/main/java/com/tonikelope/megabasterd/MainPanelView.java @@ -153,7 +153,7 @@ public final class MainPanelView extends javax.swing.JFrame { public void updateKissStreamServerStatus(final String status) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { String old_status = getKiss_server_status().getText(); if (!old_status.equals(status + " ")) { @@ -170,7 +170,7 @@ public final class MainPanelView extends javax.swing.JFrame { public void updateSmartProxyStatus(final String status) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { String old_status = getSmart_proxy_status().getText(); if (!old_status.equals(status + " ")) { @@ -187,7 +187,7 @@ public final class MainPanelView extends javax.swing.JFrame { public void updateMCReverseStatus(final String status) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { String old_status = getMc_reverse_status().getText(); @@ -397,88 +397,91 @@ public final class MainPanelView extends javax.swing.JFrame { _main_panel = main_panel; - initComponents(); + MiscTools.GUIRunAndWait(() -> { - updateFonts(this, GUI_FONT, _main_panel.getZoom_factor()); + initComponents(); - translateLabels(this); + updateFonts(this, GUI_FONT, _main_panel.getZoom_factor()); - for (JComponent c : new JComponent[]{unfreeze_transferences_button, global_speed_down_label, global_speed_up_label, down_remtime_label, up_remtime_label, close_all_finished_down_button, close_all_finished_up_button, pause_all_down_button, pause_all_up_button}) { + translateLabels(this); - c.setVisible(false); - } + for (JComponent c : new JComponent[]{unfreeze_transferences_button, global_speed_down_label, global_speed_up_label, down_remtime_label, up_remtime_label, close_all_finished_down_button, close_all_finished_up_button, pause_all_down_button, pause_all_up_button}) { - clean_all_down_menu.setEnabled(false); - clean_all_up_menu.setEnabled(false); + c.setVisible(false); + } - jScrollPane_down.getVerticalScrollBar().setUnitIncrement(20); - jScrollPane_up.getVerticalScrollBar().setUnitIncrement(20); + clean_all_down_menu.setEnabled(false); + clean_all_up_menu.setEnabled(false); - jTabbedPane1.setTitleAt(0, LabelTranslatorSingleton.getInstance().translate("Downloads")); - jTabbedPane1.setTitleAt(1, LabelTranslatorSingleton.getInstance().translate("Uploads")); - jTabbedPane1.setDropTarget(new DropTarget() { + jScrollPane_down.getVerticalScrollBar().setUnitIncrement(20); + jScrollPane_up.getVerticalScrollBar().setUnitIncrement(20); + + jTabbedPane1.setTitleAt(0, LabelTranslatorSingleton.getInstance().translate("Downloads")); + jTabbedPane1.setTitleAt(1, LabelTranslatorSingleton.getInstance().translate("Uploads")); + jTabbedPane1.setDropTarget(new DropTarget() { + + public boolean canImport(DataFlavor[] flavors) { + for (DataFlavor flavor : flavors) { + if (flavor.isFlavorJavaFileListType()) { + return true; + } + } + return false; + } + + @Override + public synchronized void drop(DropTargetDropEvent dtde) { + changeToNormal(); + dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); + + List files; + + try { + + if (canImport(dtde.getTransferable().getTransferDataFlavors())) { + files = (List) dtde.getTransferable().getTransferData(DataFlavor.javaFileListFlavor); + + THREAD_POOL.execute(() -> { + _file_drop_notify(files); + }); + } + + } catch (UnsupportedFlavorException | IOException ex) { - public boolean canImport(DataFlavor[] flavors) { - for (DataFlavor flavor : flavors) { - if (flavor.isFlavorJavaFileListType()) { - return true; } } - return false; - } - @Override - public synchronized void drop(DropTargetDropEvent dtde) { - changeToNormal(); - dtde.acceptDrop(DnDConstants.ACTION_COPY_OR_MOVE); + @Override + public synchronized void dragEnter(DropTargetDragEvent dtde) { + changeToDrop(); + } - List files; + @Override + public synchronized void dragExit(DropTargetEvent dtde) { + changeToNormal(); + } - try { - - if (canImport(dtde.getTransferable().getTransferDataFlavors())) { - files = (List) dtde.getTransferable().getTransferData(DataFlavor.javaFileListFlavor); - - THREAD_POOL.execute(() -> { - _file_drop_notify(files); - }); - } - - } catch (UnsupportedFlavorException | IOException ex) { + private void changeToDrop() { + jTabbedPane1.setBorder(BorderFactory.createLineBorder(Color.green, 5)); } + + private void changeToNormal() { + jTabbedPane1.setBorder(null); + } + } + ); + + String auto_close = selectSettingValue("auto_close"); + + if (auto_close != null) { + getAuto_close_menu().setSelected(auto_close.equals("yes")); + } else { + getAuto_close_menu().setSelected(false); } - @Override - public synchronized void dragEnter(DropTargetDragEvent dtde) { - changeToDrop(); - } - - @Override - public synchronized void dragExit(DropTargetEvent dtde) { - changeToNormal(); - } - - private void changeToDrop() { - jTabbedPane1.setBorder(BorderFactory.createLineBorder(Color.green, 5)); - - } - - private void changeToNormal() { - jTabbedPane1.setBorder(null); - } - } - ); - - String auto_close = selectSettingValue("auto_close"); - - if (auto_close != null) { - getAuto_close_menu().setSelected(auto_close.equals("yes")); - } else { - getAuto_close_menu().setSelected(false); - } - - pack(); + pack(); + }); } @@ -556,7 +559,7 @@ public final class MainPanelView extends javax.swing.JFrame { memory_status.setDoubleBuffered(true); jTabbedPane1.setDoubleBuffered(true); - jTabbedPane1.setFont(new java.awt.Font("Dialog", 1, 20)); // NOI18N + jTabbedPane1.setFont(new java.awt.Font("Dialog", 1, 24)); // NOI18N global_speed_down_label.setFont(new java.awt.Font("Dialog", 1, 54)); // NOI18N global_speed_down_label.setText("Speed"); @@ -618,7 +621,7 @@ public final class MainPanelView extends javax.swing.JFrame { .addComponent(close_all_finished_down_button, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(status_down_label, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane_down, javax.swing.GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE) + .addComponent(jScrollPane_down, javax.swing.GroupLayout.DEFAULT_SIZE, 288, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(down_remtime_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -688,7 +691,7 @@ public final class MainPanelView extends javax.swing.JFrame { .addComponent(close_all_finished_up_button, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(status_up_label, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane_up, javax.swing.GroupLayout.DEFAULT_SIZE, 295, Short.MAX_VALUE) + .addComponent(jScrollPane_up, javax.swing.GroupLayout.DEFAULT_SIZE, 288, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(up_remtime_label) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -700,7 +703,7 @@ public final class MainPanelView extends javax.swing.JFrame { jTabbedPane1.addTab("Uploads", new javax.swing.ImageIcon(getClass().getResource("/images/icons8-upload-to-ftp-30.png")), uploads_panel); // NOI18N unfreeze_transferences_button.setBackground(new java.awt.Color(255, 255, 255)); - unfreeze_transferences_button.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N + unfreeze_transferences_button.setFont(new java.awt.Font("Dialog", 1, 24)); // NOI18N unfreeze_transferences_button.setForeground(new java.awt.Color(0, 153, 255)); unfreeze_transferences_button.setText("UNFREEZE WAITING TRANSFERENCES"); unfreeze_transferences_button.setDoubleBuffered(true); @@ -861,9 +864,9 @@ public final class MainPanelView extends javax.swing.JFrame { .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jTabbedPane1, javax.swing.GroupLayout.Alignment.TRAILING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addGap(0, 343, Short.MAX_VALUE) + .addGap(0, 283, Short.MAX_VALUE) .addComponent(unfreeze_transferences_button) - .addGap(0, 343, Short.MAX_VALUE)) + .addGap(0, 282, Short.MAX_VALUE)) .addGroup(layout.createSequentialGroup() .addComponent(kiss_server_status, javax.swing.GroupLayout.DEFAULT_SIZE, 191, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) @@ -882,7 +885,7 @@ public final class MainPanelView extends javax.swing.JFrame { .addContainerGap() .addComponent(unfreeze_transferences_button) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(jTabbedPane1) + .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 469, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) .addComponent(logo_label) diff --git a/src/main/java/com/tonikelope/megabasterd/MiscTools.java b/src/main/java/com/tonikelope/megabasterd/MiscTools.java index 2e0c47c4a..8c628df87 100644 --- a/src/main/java/com/tonikelope/megabasterd/MiscTools.java +++ b/src/main/java/com/tonikelope/megabasterd/MiscTools.java @@ -23,7 +23,6 @@ import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.UnsupportedEncodingException; import java.lang.management.ManagementFactory; -import java.lang.reflect.InvocationTargetException; import java.math.BigInteger; import java.net.HttpURLConnection; import java.net.InetSocketAddress; @@ -52,7 +51,6 @@ import java.util.HashMap; import java.util.List; import java.util.Random; import java.util.concurrent.Callable; -import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; import java.util.logging.Level; import java.util.logging.Logger; @@ -413,6 +411,76 @@ public class MiscTools { return Base64.getUrlEncoder().withoutPadding().encodeToString(data); } + public static void pausar(long pause) { + try { + Thread.sleep(pause); + } catch (InterruptedException ex) { + Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); + } + + } + + public static void GUIRun(Runnable r) { + + boolean ok; + + do { + ok = true; + + try { + if (!SwingUtilities.isEventDispatchThread()) { + SwingUtilities.invokeLater(r); + } else { + r.run(); + } + } catch (Exception ex) { + ok = false; + Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); + MiscTools.pausar(250); + } + + } while (!ok); + } + + public static void GUIRunAndWait(Runnable r) { + + boolean ok; + + do { + ok = true; + try { + if (!SwingUtilities.isEventDispatchThread()) { + SwingUtilities.invokeAndWait(r); + } else { + r.run(); + } + } catch (Exception ex) { + ok = false; + Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); + MiscTools.pausar(250); + } + } while (!ok); + } + + public static void threadRun(Runnable r) { + + Thread hilo = new Thread(r); + + hilo.start(); + + } + + public static FutureTask futureRun(Callable c) { + + FutureTask f = new FutureTask(c); + + Thread hilo = new Thread(f); + + hilo.start(); + + return f; + } + public static long getWaitTimeExpBackOff(int retryCount) { long waitTime = ((long) Math.pow(EXP_BACKOFF_BASE, retryCount) * EXP_BACKOFF_SECS_RETRY); @@ -420,73 +488,6 @@ public class MiscTools { return Math.min(waitTime, EXP_BACKOFF_MAX_WAIT_TIME); } - public static void swingInvoke(Runnable r) { - - _swingInvokeIt(r, false); - } - - public static void swingInvokeAndWait(Runnable r) { - - _swingInvokeIt(r, true); - } - - public static Object swingInvokeAndWaitForReturn(Callable c) { - - return _swingInvokeItAndWaitForReturn(c); - } - - private static void _swingInvokeIt(Runnable r, boolean wait) { - - if (wait) { - - if (SwingUtilities.isEventDispatchThread()) { - - r.run(); - - } else { - - try { - /* OJO!!! El thread que lanza esto NO PUEDE poseer locks que necesite el EDT o se producirá un DEADLOCK */ - SwingUtilities.invokeAndWait(r); - - } catch (InterruptedException | InvocationTargetException ex) { - Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, ex.getMessage()); - } - } - - } else { - - SwingUtilities.invokeLater(r); - } - } - - private static Object _swingInvokeItAndWaitForReturn(Callable c) { - Object ret = null; - - if (SwingUtilities.isEventDispatchThread()) { - - try { - ret = c.call(); - } catch (Exception ex) { - Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, ex.getMessage()); - } - - } else { - - FutureTask futureTask = new FutureTask<>(c); - - SwingUtilities.invokeLater(futureTask); - - try { - ret = futureTask.get(); - } catch (InterruptedException | ExecutionException ex) { - Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, ex.getMessage()); - } - } - - return ret; - } - public static String bin2hex(byte[] b) { BigInteger bi = new BigInteger(1, b); diff --git a/src/main/java/com/tonikelope/megabasterd/SetMasterPasswordDialog.java b/src/main/java/com/tonikelope/megabasterd/SetMasterPasswordDialog.java index 05caa43cb..f0706b776 100644 --- a/src/main/java/com/tonikelope/megabasterd/SetMasterPasswordDialog.java +++ b/src/main/java/com/tonikelope/megabasterd/SetMasterPasswordDialog.java @@ -52,12 +52,6 @@ public class SetMasterPasswordDialog extends javax.swing.JDialog { super(parent, modal); - initComponents(); - - updateFonts(this, GUI_FONT, main_panel.getZoom_factor()); - - translateLabels(this); - _pass_ok = false; _new_pass = null; @@ -66,7 +60,16 @@ public class SetMasterPasswordDialog extends javax.swing.JDialog { _salt = salt; - pack(); + MiscTools.GUIRunAndWait(() -> { + + initComponents(); + + updateFonts(this, GUI_FONT, main_panel.getZoom_factor()); + + translateLabels(this); + + pack(); + }); } /** @@ -219,7 +222,7 @@ public class SetMasterPasswordDialog extends javax.swing.JDialog { THREAD_POOL.execute(() -> { try { if (Arrays.equals(new_pass_textfield.getPassword(), confirm_pass_textfield.getPassword())) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { status_label.setText(LabelTranslatorSingleton.getInstance().translate("Processing your password, please wait...")); }); if (new_pass_textfield.getPassword().length > 0) { @@ -229,11 +232,11 @@ public class SetMasterPasswordDialog extends javax.swing.JDialog { _new_pass_hash = Bin2BASE64(HashBin("SHA-1", _new_pass)); } _pass_ok = true; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { tthis.setVisible(false); }); } else { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("Passwords does not match!"), "Error", JOptionPane.ERROR_MESSAGE); status_label.setText(""); diff --git a/src/main/java/com/tonikelope/megabasterd/SettingsDialog.form b/src/main/java/com/tonikelope/megabasterd/SettingsDialog.form index 1f839dfb6..c21874963 100644 --- a/src/main/java/com/tonikelope/megabasterd/SettingsDialog.form +++ b/src/main/java/com/tonikelope/megabasterd/SettingsDialog.form @@ -31,7 +31,7 @@ - + @@ -48,7 +48,7 @@ - + @@ -93,11 +93,11 @@ - + - + diff --git a/src/main/java/com/tonikelope/megabasterd/SettingsDialog.java b/src/main/java/com/tonikelope/megabasterd/SettingsDialog.java index cce1c7c38..3b1ade731 100644 --- a/src/main/java/com/tonikelope/megabasterd/SettingsDialog.java +++ b/src/main/java/com/tonikelope/megabasterd/SettingsDialog.java @@ -80,66 +80,89 @@ public class SettingsDialog extends javax.swing.JDialog { _main_panel = parent.getMain_panel(); - initComponents(); + _remember_master_pass = true; - updateFonts(this, GUI_FONT, _main_panel.getZoom_factor()); + _deleted_mega_accounts = new HashSet(); - updateTitledBorderFont(((javax.swing.border.TitledBorder) proxy_panel.getBorder()), GUI_FONT, _main_panel.getZoom_factor()); + _deleted_elc_accounts = new HashSet(); - updateTitledBorderFont(((javax.swing.border.TitledBorder) proxy_auth_panel.getBorder()), GUI_FONT, _main_panel.getZoom_factor()); + _settings_ok = false; - translateLabels(this); + MiscTools.GUIRunAndWait(() -> { - jTabbedPane1.setTitleAt(0, LabelTranslatorSingleton.getInstance().translate("Downloads")); + initComponents(); - jTabbedPane1.setTitleAt(1, LabelTranslatorSingleton.getInstance().translate("Uploads")); + updateFonts(this, GUI_FONT, _main_panel.getZoom_factor()); - jTabbedPane1.setTitleAt(2, LabelTranslatorSingleton.getInstance().translate("Accounts")); + updateTitledBorderFont(((javax.swing.border.TitledBorder) proxy_panel.getBorder()), GUI_FONT, _main_panel.getZoom_factor()); - jTabbedPane1.setTitleAt(3, LabelTranslatorSingleton.getInstance().translate("Advanced")); + updateTitledBorderFont(((javax.swing.border.TitledBorder) proxy_auth_panel.getBorder()), GUI_FONT, _main_panel.getZoom_factor()); - downloads_scrollpane.getVerticalScrollBar().setUnitIncrement(20); + translateLabels(this); - downloads_scrollpane.getHorizontalScrollBar().setUnitIncrement(20); + panel_tabs.setTitleAt(0, LabelTranslatorSingleton.getInstance().translate("Downloads")); - uploads_scrollpane.getVerticalScrollBar().setUnitIncrement(20); + panel_tabs.setTitleAt(1, LabelTranslatorSingleton.getInstance().translate("Uploads")); - uploads_scrollpane.getHorizontalScrollBar().setUnitIncrement(20); + panel_tabs.setTitleAt(2, LabelTranslatorSingleton.getInstance().translate("Accounts")); - advanced_scrollpane.getVerticalScrollBar().setUnitIncrement(20); + panel_tabs.setTitleAt(3, LabelTranslatorSingleton.getInstance().translate("Advanced")); - advanced_scrollpane.getHorizontalScrollBar().setUnitIncrement(20); + downloads_scrollpane.getVerticalScrollBar().setUnitIncrement(20); - String zoom_factor = DBTools.selectSettingValue("font_zoom"); + downloads_scrollpane.getHorizontalScrollBar().setUnitIncrement(20); - int int_zoom_factor = Math.round(_main_panel.getZoom_factor() * 100); + uploads_scrollpane.getVerticalScrollBar().setUnitIncrement(20); - if (zoom_factor != null) { - int_zoom_factor = Integer.parseInt(zoom_factor); - } + uploads_scrollpane.getHorizontalScrollBar().setUnitIncrement(20); - zoom_spinner.setModel(new SpinnerNumberModel(int_zoom_factor, 50, 250, 10)); - ((JSpinner.DefaultEditor) zoom_spinner.getEditor()).getTextField().setEditable(false); + advanced_scrollpane.getVerticalScrollBar().setUnitIncrement(20); - String use_custom_chunks_dir = DBTools.selectSettingValue("use_custom_chunks_dir"); + advanced_scrollpane.getHorizontalScrollBar().setUnitIncrement(20); - if (use_custom_chunks_dir != null) { + String zoom_factor = DBTools.selectSettingValue("font_zoom"); - if (use_custom_chunks_dir.equals("yes")) { + int int_zoom_factor = Math.round(_main_panel.getZoom_factor() * 100); - _custom_chunks_dir = DBTools.selectSettingValue("custom_chunks_dir"); + if (zoom_factor != null) { + int_zoom_factor = Integer.parseInt(zoom_factor); + } - custom_chunks_dir_current_label.setText(_custom_chunks_dir != null ? truncateText(_custom_chunks_dir, 80) : ""); + zoom_spinner.setModel(new SpinnerNumberModel(int_zoom_factor, 50, 250, 10)); + ((JSpinner.DefaultEditor) zoom_spinner.getEditor()).getTextField().setEditable(false); - custom_chunks_dir_checkbox.setSelected(true); + String use_custom_chunks_dir = DBTools.selectSettingValue("use_custom_chunks_dir"); - custom_chunks_dir_button.setEnabled(true); + if (use_custom_chunks_dir != null) { + + if (use_custom_chunks_dir.equals("yes")) { + + _custom_chunks_dir = DBTools.selectSettingValue("custom_chunks_dir"); + + custom_chunks_dir_current_label.setText(_custom_chunks_dir != null ? truncateText(_custom_chunks_dir, 80) : ""); + + custom_chunks_dir_checkbox.setSelected(true); + + custom_chunks_dir_button.setEnabled(true); + + } else { + + _custom_chunks_dir = DBTools.selectSettingValue("custom_chunks_dir"); + + custom_chunks_dir_current_label.setText(_custom_chunks_dir != null ? truncateText(_custom_chunks_dir, 80) : ""); + + custom_chunks_dir_checkbox.setSelected(false); + + custom_chunks_dir_button.setEnabled(false); + + custom_chunks_dir_current_label.setEnabled(false); + } } else { - _custom_chunks_dir = DBTools.selectSettingValue("custom_chunks_dir"); + _custom_chunks_dir = null; - custom_chunks_dir_current_label.setText(_custom_chunks_dir != null ? truncateText(_custom_chunks_dir, 80) : ""); + custom_chunks_dir_current_label.setText(""); custom_chunks_dir_checkbox.setSelected(false); @@ -148,214 +171,259 @@ public class SettingsDialog extends javax.swing.JDialog { custom_chunks_dir_current_label.setEnabled(false); } - } else { + String default_download_dir = DBTools.selectSettingValue("default_down_dir"); - _custom_chunks_dir = null; + default_download_dir = Paths.get(default_download_dir == null ? System.getProperty("user.home") : default_download_dir).toAbsolutePath().normalize().toString(); - custom_chunks_dir_current_label.setText(""); + _download_path = default_download_dir; - custom_chunks_dir_checkbox.setSelected(false); + default_dir_label.setText(truncateText(_download_path, 80)); - custom_chunks_dir_button.setEnabled(false); + String slots = DBTools.selectSettingValue("default_slots_down"); - custom_chunks_dir_current_label.setEnabled(false); - } + int default_slots = Download.WORKERS_DEFAULT; - String default_download_dir = DBTools.selectSettingValue("default_down_dir"); + if (slots != null) { + default_slots = Integer.parseInt(slots); + } - default_download_dir = Paths.get(default_download_dir == null ? System.getProperty("user.home") : default_download_dir).toAbsolutePath().normalize().toString(); + default_slots_down_spinner.setModel(new SpinnerNumberModel(default_slots, Download.MIN_WORKERS, Download.MAX_WORKERS, 1)); - _download_path = default_download_dir; + ((JSpinner.DefaultEditor) default_slots_down_spinner.getEditor()).getTextField().setEditable(false); - default_dir_label.setText(truncateText(_download_path, 80)); + slots = DBTools.selectSettingValue("default_slots_up"); - String slots = DBTools.selectSettingValue("default_slots_down"); + default_slots = Upload.WORKERS_DEFAULT; - int default_slots = Download.WORKERS_DEFAULT; + if (slots != null) { + default_slots = Integer.parseInt(slots); + } - if (slots != null) { - default_slots = Integer.parseInt(slots); - } + default_slots_up_spinner.setModel(new SpinnerNumberModel(default_slots, Upload.MIN_WORKERS, Upload.MAX_WORKERS, 1)); + ((JSpinner.DefaultEditor) default_slots_up_spinner.getEditor()).getTextField().setEditable(false); - default_slots_down_spinner.setModel(new SpinnerNumberModel(default_slots, Download.MIN_WORKERS, Download.MAX_WORKERS, 1)); + String max_down = DBTools.selectSettingValue("max_downloads"); - ((JSpinner.DefaultEditor) default_slots_down_spinner.getEditor()).getTextField().setEditable(false); + int max_dl = Download.SIM_TRANSFERENCES_DEFAULT; - slots = DBTools.selectSettingValue("default_slots_up"); + if (max_down != null) { + max_dl = Integer.parseInt(max_down); + } - default_slots = Upload.WORKERS_DEFAULT; + max_downloads_spinner.setModel(new SpinnerNumberModel(max_dl, 1, Download.MAX_SIM_TRANSFERENCES, 1)); + ((JSpinner.DefaultEditor) max_downloads_spinner.getEditor()).getTextField().setEditable(false); - if (slots != null) { - default_slots = Integer.parseInt(slots); - } + String max_up = DBTools.selectSettingValue("max_uploads"); - default_slots_up_spinner.setModel(new SpinnerNumberModel(default_slots, Upload.MIN_WORKERS, Upload.MAX_WORKERS, 1)); - ((JSpinner.DefaultEditor) default_slots_up_spinner.getEditor()).getTextField().setEditable(false); + int max_ul = Upload.SIM_TRANSFERENCES_DEFAULT; - String max_down = DBTools.selectSettingValue("max_downloads"); + if (max_up != null) { + max_ul = Integer.parseInt(max_up); + } - int max_dl = Download.SIM_TRANSFERENCES_DEFAULT; + max_uploads_spinner.setModel(new SpinnerNumberModel(max_ul, 1, Upload.MAX_SIM_TRANSFERENCES, 1)); + ((JSpinner.DefaultEditor) max_uploads_spinner.getEditor()).getTextField().setEditable(false); - if (max_down != null) { - max_dl = Integer.parseInt(max_down); - } + boolean limit_dl_speed = Download.LIMIT_TRANSFERENCE_SPEED_DEFAULT; - max_downloads_spinner.setModel(new SpinnerNumberModel(max_dl, 1, Download.MAX_SIM_TRANSFERENCES, 1)); - ((JSpinner.DefaultEditor) max_downloads_spinner.getEditor()).getTextField().setEditable(false); + String limit_download_speed = DBTools.selectSettingValue("limit_download_speed"); - String max_up = DBTools.selectSettingValue("max_uploads"); + if (limit_download_speed != null) { + limit_dl_speed = limit_download_speed.equals("yes"); + } - int max_ul = Upload.SIM_TRANSFERENCES_DEFAULT; + limit_download_speed_checkbox.setSelected(limit_dl_speed); - if (max_up != null) { - max_ul = Integer.parseInt(max_up); - } + max_down_speed_label.setEnabled(limit_dl_speed); - max_uploads_spinner.setModel(new SpinnerNumberModel(max_ul, 1, Upload.MAX_SIM_TRANSFERENCES, 1)); - ((JSpinner.DefaultEditor) max_uploads_spinner.getEditor()).getTextField().setEditable(false); + max_down_speed_spinner.setEnabled(limit_dl_speed); - boolean limit_dl_speed = Download.LIMIT_TRANSFERENCE_SPEED_DEFAULT; + String max_dl_speed = DBTools.selectSettingValue("max_download_speed"); - String limit_download_speed = DBTools.selectSettingValue("limit_download_speed"); + int max_download_speed = Download.MAX_TRANSFERENCE_SPEED_DEFAULT; - if (limit_download_speed != null) { - limit_dl_speed = limit_download_speed.equals("yes"); - } + if (max_dl_speed != null) { + max_download_speed = Integer.parseInt(max_dl_speed); + } - limit_download_speed_checkbox.setSelected(limit_dl_speed); + max_down_speed_spinner.setModel(new SpinnerNumberModel(max_download_speed, 1, Integer.MAX_VALUE, 5)); - max_down_speed_label.setEnabled(limit_dl_speed); + ((JSpinner.DefaultEditor) max_down_speed_spinner.getEditor()).getTextField().setEditable(true); - max_down_speed_spinner.setEnabled(limit_dl_speed); + boolean limit_ul_speed = Upload.LIMIT_TRANSFERENCE_SPEED_DEFAULT; - String max_dl_speed = DBTools.selectSettingValue("max_download_speed"); + String limit_upload_speed = DBTools.selectSettingValue("limit_upload_speed"); - int max_download_speed = Download.MAX_TRANSFERENCE_SPEED_DEFAULT; + if (limit_upload_speed != null) { + limit_ul_speed = limit_upload_speed.equals("yes"); + } - if (max_dl_speed != null) { - max_download_speed = Integer.parseInt(max_dl_speed); - } + limit_upload_speed_checkbox.setSelected(limit_ul_speed); - max_down_speed_spinner.setModel(new SpinnerNumberModel(max_download_speed, 1, Integer.MAX_VALUE, 5)); + max_up_speed_label.setEnabled(limit_ul_speed); - ((JSpinner.DefaultEditor) max_down_speed_spinner.getEditor()).getTextField().setEditable(true); + max_up_speed_spinner.setEnabled(limit_ul_speed); - boolean limit_ul_speed = Upload.LIMIT_TRANSFERENCE_SPEED_DEFAULT; + String max_ul_speed = DBTools.selectSettingValue("max_upload_speed"); - String limit_upload_speed = DBTools.selectSettingValue("limit_upload_speed"); + int max_upload_speed = Upload.MAX_TRANSFERENCE_SPEED_DEFAULT; - if (limit_upload_speed != null) { - limit_ul_speed = limit_upload_speed.equals("yes"); - } + if (max_ul_speed != null) { + max_upload_speed = Integer.parseInt(max_ul_speed); + } - limit_upload_speed_checkbox.setSelected(limit_ul_speed); + max_up_speed_spinner.setModel(new SpinnerNumberModel(max_upload_speed, 1, Integer.MAX_VALUE, 5)); - max_up_speed_label.setEnabled(limit_ul_speed); + ((JSpinner.DefaultEditor) max_up_speed_spinner.getEditor()).getTextField().setEditable(true); - max_up_speed_spinner.setEnabled(limit_ul_speed); + boolean cbc_mac = Download.VERIFY_CBC_MAC_DEFAULT; - String max_ul_speed = DBTools.selectSettingValue("max_upload_speed"); + String verify_file = DBTools.selectSettingValue("verify_down_file"); - int max_upload_speed = Upload.MAX_TRANSFERENCE_SPEED_DEFAULT; + if (verify_file != null) { + cbc_mac = (verify_file.equals("yes")); + } - if (max_ul_speed != null) { - max_upload_speed = Integer.parseInt(max_ul_speed); - } + verify_file_down_checkbox.setSelected(cbc_mac); - max_up_speed_spinner.setModel(new SpinnerNumberModel(max_upload_speed, 1, Integer.MAX_VALUE, 5)); + boolean use_slots = Download.USE_SLOTS_DEFAULT; - ((JSpinner.DefaultEditor) max_up_speed_spinner.getEditor()).getTextField().setEditable(true); + String use_slots_val = DBTools.selectSettingValue("use_slots_down"); - boolean cbc_mac = Download.VERIFY_CBC_MAC_DEFAULT; + if (use_slots_val != null) { + use_slots = use_slots_val.equals("yes"); + } - String verify_file = DBTools.selectSettingValue("verify_down_file"); + multi_slot_down_checkbox.setSelected(use_slots); - if (verify_file != null) { - cbc_mac = (verify_file.equals("yes")); - } + default_slots_down_label.setEnabled(use_slots); + default_slots_down_spinner.setEnabled(use_slots); + rec_download_slots_label.setEnabled(use_slots); - verify_file_down_checkbox.setSelected(cbc_mac); + default_slots_up_label.setEnabled(use_slots); + default_slots_up_spinner.setEnabled(use_slots); + rec_upload_slots_label.setEnabled(use_slots); - boolean use_slots = Download.USE_SLOTS_DEFAULT; + boolean use_mega_account = Download.USE_MEGA_ACCOUNT_DOWN; - String use_slots_val = DBTools.selectSettingValue("use_slots_down"); + String use_mega_acc = DBTools.selectSettingValue("use_mega_account_down"); - if (use_slots_val != null) { - use_slots = use_slots_val.equals("yes"); - } + String mega_account = null; - multi_slot_down_checkbox.setSelected(use_slots); + if (use_mega_acc != null) { - default_slots_down_label.setEnabled(use_slots); - default_slots_down_spinner.setEnabled(use_slots); - rec_download_slots_label.setEnabled(use_slots); + use_mega_account = use_mega_acc.equals("yes"); - default_slots_up_label.setEnabled(use_slots); - default_slots_up_spinner.setEnabled(use_slots); - rec_upload_slots_label.setEnabled(use_slots); + mega_account = DBTools.selectSettingValue("mega_account_down"); + } - boolean use_mega_account = Download.USE_MEGA_ACCOUNT_DOWN; + use_mega_label.setEnabled(use_mega_account); + use_mega_account_down_checkbox.setSelected(use_mega_account); + use_mega_account_down_combobox.setEnabled(use_mega_account); + use_mega_account_down_combobox.setSelectedItem(mega_account); - String use_mega_acc = DBTools.selectSettingValue("use_mega_account_down"); + DefaultTableModel mega_model = (DefaultTableModel) mega_accounts_table.getModel(); - String mega_account = null; + DefaultTableModel elc_model = (DefaultTableModel) elc_accounts_table.getModel(); - if (use_mega_acc != null) { + encrypt_pass_checkbox.setSelected(_main_panel.getMaster_pass_hash() != null); - use_mega_account = use_mega_acc.equals("yes"); + remove_mega_account_button.setEnabled(mega_model.getRowCount() > 0); - mega_account = DBTools.selectSettingValue("mega_account_down"); - } + remove_elc_account_button.setEnabled(elc_model.getRowCount() > 0); - use_mega_label.setEnabled(use_mega_account); - use_mega_account_down_checkbox.setSelected(use_mega_account); - use_mega_account_down_combobox.setEnabled(use_mega_account); - use_mega_account_down_combobox.setSelectedItem(mega_account); + if (_main_panel.getMaster_pass_hash() != null) { - DefaultTableModel mega_model = (DefaultTableModel) mega_accounts_table.getModel(); + if (_main_panel.getMaster_pass() == null) { - DefaultTableModel elc_model = (DefaultTableModel) elc_accounts_table.getModel(); + encrypt_pass_checkbox.setEnabled(false); - encrypt_pass_checkbox.setSelected(_main_panel.getMaster_pass_hash() != null); + remove_mega_account_button.setEnabled(false); - remove_mega_account_button.setEnabled(mega_model.getRowCount() > 0); + remove_elc_account_button.setEnabled(false); - remove_elc_account_button.setEnabled(elc_model.getRowCount() > 0); + add_mega_account_button.setEnabled(false); - if (_main_panel.getMaster_pass_hash() != null) { + add_elc_account_button.setEnabled(false); - if (_main_panel.getMaster_pass() == null) { + unlock_accounts_button.setVisible(true); - encrypt_pass_checkbox.setEnabled(false); + for (Object k : _main_panel.getMega_accounts().keySet()) { - remove_mega_account_button.setEnabled(false); + String[] new_row_data = {(String) k, "**************************"}; - remove_elc_account_button.setEnabled(false); + mega_model.addRow(new_row_data); + } - add_mega_account_button.setEnabled(false); + for (Object k : _main_panel.getElc_accounts().keySet()) { - add_elc_account_button.setEnabled(false); + String[] new_row_data = {(String) k, "**************************", "**************************"}; - unlock_accounts_button.setVisible(true); + elc_model.addRow(new_row_data); + } - for (Object k : _main_panel.getMega_accounts().keySet()) { + mega_accounts_table.setEnabled(false); - String[] new_row_data = {(String) k, "**************************"}; + elc_accounts_table.setEnabled(false); + + } else { + + unlock_accounts_button.setVisible(false); + + for (Map.Entry pair : _main_panel.getMega_accounts().entrySet()) { + + HashMap data = (HashMap) pair.getValue(); + + String pass = null; + + try { + + pass = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("password")), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV), "UTF-8"); + + } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException ex) { + LOG.log(Level.SEVERE, ex.getMessage()); + } catch (Exception ex) { + LOG.log(Level.SEVERE, ex.getMessage()); + } + + String[] new_row_data = {(String) pair.getKey(), pass}; + + mega_model.addRow(new_row_data); + } + + for (Map.Entry pair : _main_panel.getElc_accounts().entrySet()) { + + HashMap data = (HashMap) pair.getValue(); + + String user = null, apikey = null; + + try { + + user = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("user")), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV), "UTF-8"); + + apikey = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("apikey")), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV), "UTF-8"); + + } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException ex) { + LOG.log(Level.SEVERE, ex.getMessage()); + } catch (Exception ex) { + LOG.log(Level.SEVERE, ex.getMessage()); + } + + String[] new_row_data = {(String) pair.getKey(), user, apikey}; + + elc_model.addRow(new_row_data); + } + + mega_model = (DefaultTableModel) mega_accounts_table.getModel(); + + elc_model = (DefaultTableModel) elc_accounts_table.getModel(); + + remove_mega_account_button.setEnabled(mega_model.getRowCount() > 0); + + remove_elc_account_button.setEnabled(elc_model.getRowCount() > 0); - mega_model.addRow(new_row_data); } - for (Object k : _main_panel.getElc_accounts().keySet()) { - - String[] new_row_data = {(String) k, "**************************", "**************************"}; - - elc_model.addRow(new_row_data); - } - - mega_accounts_table.setEnabled(false); - - elc_accounts_table.setEnabled(false); - } else { unlock_accounts_button.setVisible(false); @@ -364,19 +432,7 @@ public class SettingsDialog extends javax.swing.JDialog { HashMap data = (HashMap) pair.getValue(); - String pass = null; - - try { - - pass = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("password")), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV), "UTF-8"); - - } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException ex) { - LOG.log(Level.SEVERE, ex.getMessage()); - } catch (Exception ex) { - LOG.log(Level.SEVERE, ex.getMessage()); - } - - String[] new_row_data = {(String) pair.getKey(), pass}; + String[] new_row_data = {(String) pair.getKey(), (String) data.get("password")}; mega_model.addRow(new_row_data); } @@ -385,201 +441,148 @@ public class SettingsDialog extends javax.swing.JDialog { HashMap data = (HashMap) pair.getValue(); - String user = null, apikey = null; - - try { - - user = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("user")), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV), "UTF-8"); - - apikey = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("apikey")), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV), "UTF-8"); - - } catch (NoSuchAlgorithmException | NoSuchPaddingException | InvalidKeyException | InvalidAlgorithmParameterException | IllegalBlockSizeException | BadPaddingException ex) { - LOG.log(Level.SEVERE, ex.getMessage()); - } catch (Exception ex) { - LOG.log(Level.SEVERE, ex.getMessage()); - } - - String[] new_row_data = {(String) pair.getKey(), user, apikey}; + String[] new_row_data = {(String) pair.getKey(), (String) data.get("user"), (String) data.get("apikey")}; elc_model.addRow(new_row_data); } - mega_model = (DefaultTableModel) mega_accounts_table.getModel(); + remove_mega_account_button.setEnabled((mega_model.getRowCount() > 0)); - elc_model = (DefaultTableModel) elc_accounts_table.getModel(); - - remove_mega_account_button.setEnabled(mega_model.getRowCount() > 0); - - remove_elc_account_button.setEnabled(elc_model.getRowCount() > 0); + remove_elc_account_button.setEnabled((elc_model.getRowCount() > 0)); } - } else { + mega_accounts_table.setAutoCreateRowSorter(true); + DefaultRowSorter sorter_mega = ((DefaultRowSorter) mega_accounts_table.getRowSorter()); + ArrayList list_mega = new ArrayList(); + list_mega.add(new RowSorter.SortKey(0, SortOrder.ASCENDING)); + sorter_mega.setSortKeys(list_mega); + sorter_mega.sort(); - unlock_accounts_button.setVisible(false); + elc_accounts_table.setAutoCreateRowSorter(true); + DefaultRowSorter sorter_elc = ((DefaultRowSorter) elc_accounts_table.getRowSorter()); + ArrayList list_elc = new ArrayList(); + list_elc.add(new RowSorter.SortKey(0, SortOrder.ASCENDING)); + sorter_elc.setSortKeys(list_elc); + sorter_elc.sort(); - for (Map.Entry pair : _main_panel.getMega_accounts().entrySet()) { + boolean use_mc_reverse = false; - HashMap data = (HashMap) pair.getValue(); + String megacrypter_reverse = DBTools.selectSettingValue("megacrypter_reverse"); - String[] new_row_data = {(String) pair.getKey(), (String) data.get("password")}; + String megacrypter_reverse_p = String.valueOf(MainPanel.DEFAULT_MEGA_PROXY_PORT); - mega_model.addRow(new_row_data); + if (megacrypter_reverse != null) { + + use_mc_reverse = megacrypter_reverse.equals("yes"); + + if (megacrypter_reverse_p != null) { + + megacrypter_reverse_p = DBTools.selectSettingValue("megacrypter_reverse_port"); + } } - for (Map.Entry pair : _main_panel.getElc_accounts().entrySet()) { + megacrypter_reverse_checkbox.setSelected(use_mc_reverse); + megacrypter_reverse_port_spinner.setModel(new SpinnerNumberModel(Integer.parseInt(megacrypter_reverse_p), 1024, 65535, 1)); + ((JSpinner.DefaultEditor) megacrypter_reverse_port_spinner.getEditor()).getTextField().setEditable(use_mc_reverse); + megacrypter_reverse_port_spinner.setEnabled(use_mc_reverse); + megacrypter_reverse_warning_label.setEnabled(use_mc_reverse); - HashMap data = (HashMap) pair.getValue(); + boolean use_smart_proxy = false; - String[] new_row_data = {(String) pair.getKey(), (String) data.get("user"), (String) data.get("apikey")}; + String smart_proxy = DBTools.selectSettingValue("smart_proxy"); - elc_model.addRow(new_row_data); + if (smart_proxy != null) { + + use_smart_proxy = smart_proxy.equals("yes"); } - remove_mega_account_button.setEnabled((mega_model.getRowCount() > 0)); + smart_proxy_checkbox.setSelected(use_smart_proxy); + rec_smart_proxy_label.setEnabled(use_smart_proxy); + rec_smart_proxy_label1.setEnabled(use_smart_proxy); + custom_proxy_list_label.setEnabled(use_smart_proxy); + custom_proxy_textarea.setEnabled(use_smart_proxy); - remove_elc_account_button.setEnabled((elc_model.getRowCount() > 0)); + boolean run_command = false; - } + String run_command_string = DBTools.selectSettingValue("run_command"); - mega_accounts_table.setAutoCreateRowSorter(true); - DefaultRowSorter sorter_mega = ((DefaultRowSorter) mega_accounts_table.getRowSorter()); - ArrayList list_mega = new ArrayList(); - list_mega.add(new RowSorter.SortKey(0, SortOrder.ASCENDING)); - sorter_mega.setSortKeys(list_mega); - sorter_mega.sort(); + if (run_command_string != null) { - elc_accounts_table.setAutoCreateRowSorter(true); - DefaultRowSorter sorter_elc = ((DefaultRowSorter) elc_accounts_table.getRowSorter()); - ArrayList list_elc = new ArrayList(); - list_elc.add(new RowSorter.SortKey(0, SortOrder.ASCENDING)); - sorter_elc.setSortKeys(list_elc); - sorter_elc.sort(); - - boolean use_mc_reverse = false; - - String megacrypter_reverse = DBTools.selectSettingValue("megacrypter_reverse"); - - String megacrypter_reverse_p = String.valueOf(MainPanel.DEFAULT_MEGA_PROXY_PORT); - - if (megacrypter_reverse != null) { - - use_mc_reverse = megacrypter_reverse.equals("yes"); - - if (megacrypter_reverse_p != null) { - - megacrypter_reverse_p = DBTools.selectSettingValue("megacrypter_reverse_port"); + run_command = run_command_string.equals("yes"); } - } - megacrypter_reverse_checkbox.setSelected(use_mc_reverse); - megacrypter_reverse_port_spinner.setModel(new SpinnerNumberModel(Integer.parseInt(megacrypter_reverse_p), 1024, 65535, 1)); - ((JSpinner.DefaultEditor) megacrypter_reverse_port_spinner.getEditor()).getTextField().setEditable(use_mc_reverse); - megacrypter_reverse_port_spinner.setEnabled(use_mc_reverse); - megacrypter_reverse_warning_label.setEnabled(use_mc_reverse); + run_command_checkbox.setSelected(run_command); - boolean use_smart_proxy = false; + run_command_textbox.setEnabled(run_command); - String smart_proxy = DBTools.selectSettingValue("smart_proxy"); + run_command_textbox.setText(DBTools.selectSettingValue("run_command_path")); - if (smart_proxy != null) { + boolean init_paused = false; - use_smart_proxy = smart_proxy.equals("yes"); - } + String init_paused_string = DBTools.selectSettingValue("start_frozen"); - smart_proxy_checkbox.setSelected(use_smart_proxy); - rec_smart_proxy_label.setEnabled(use_smart_proxy); - rec_smart_proxy_label1.setEnabled(use_smart_proxy); - custom_proxy_list_label.setEnabled(use_smart_proxy); - custom_proxy_textarea.setEnabled(use_smart_proxy); + if (init_paused_string != null) { - boolean run_command = false; + init_paused = init_paused_string.equals("yes"); + } - String run_command_string = DBTools.selectSettingValue("run_command"); + start_frozen_checkbox.setSelected(init_paused); - if (run_command_string != null) { + boolean use_proxy = false; - run_command = run_command_string.equals("yes"); - } + String use_proxy_val = DBTools.selectSettingValue("use_proxy"); - run_command_checkbox.setSelected(run_command); + if (use_proxy_val != null) { + use_proxy = (use_proxy_val.equals("yes")); + } - run_command_textbox.setEnabled(run_command); + use_proxy_checkbox.setSelected(use_proxy); - run_command_textbox.setText(DBTools.selectSettingValue("run_command_path")); + proxy_host_textfield.setText(DBTools.selectSettingValue("proxy_host")); - boolean init_paused = false; + proxy_port_textfield.setText(DBTools.selectSettingValue("proxy_port")); - String init_paused_string = DBTools.selectSettingValue("start_frozen"); + proxy_user_textfield.setText(DBTools.selectSettingValue("proxy_user")); - if (init_paused_string != null) { + proxy_pass_textfield.setText(DBTools.selectSettingValue("proxy_pass")); - init_paused = init_paused_string.equals("yes"); - } + String font = DBTools.selectSettingValue("font"); - start_frozen_checkbox.setSelected(init_paused); + this.font_combo.addItem(LabelTranslatorSingleton.getInstance().translate("DEFAULT")); - boolean use_proxy = false; + this.font_combo.addItem(LabelTranslatorSingleton.getInstance().translate("ALTERNATIVE")); - String use_proxy_val = DBTools.selectSettingValue("use_proxy"); + if (font == null) { + this.font_combo.setSelectedItem(LabelTranslatorSingleton.getInstance().translate("DEFAULT")); + } else { + this.font_combo.setSelectedItem(LabelTranslatorSingleton.getInstance().translate(font)); + } - if (use_proxy_val != null) { - use_proxy = (use_proxy_val.equals("yes")); - } + String language = DBTools.selectSettingValue("language"); - use_proxy_checkbox.setSelected(use_proxy); + this.language_combo.addItem(LabelTranslatorSingleton.getInstance().translate("English")); - proxy_host_textfield.setText(DBTools.selectSettingValue("proxy_host")); + this.language_combo.addItem(LabelTranslatorSingleton.getInstance().translate("Spanish")); - proxy_port_textfield.setText(DBTools.selectSettingValue("proxy_port")); + if (language == null) { + language = MainPanel.DEFAULT_LANGUAGE; + } - proxy_user_textfield.setText(DBTools.selectSettingValue("proxy_user")); + if (language.equals("EN")) { + this.language_combo.setSelectedItem(LabelTranslatorSingleton.getInstance().translate("English")); + } else if (language.equals("ES")) { + this.language_combo.setSelectedItem(LabelTranslatorSingleton.getInstance().translate("Spanish")); + } - proxy_pass_textfield.setText(DBTools.selectSettingValue("proxy_pass")); + String custom_proxy_list = DBTools.selectSettingValue("custom_proxy_list"); - String font = DBTools.selectSettingValue("font"); + if (custom_proxy_list != null) { + custom_proxy_textarea.setText(custom_proxy_list); + } - this.font_combo.addItem(LabelTranslatorSingleton.getInstance().translate("DEFAULT")); - - this.font_combo.addItem(LabelTranslatorSingleton.getInstance().translate("ALTERNATIVE")); - - if (font == null) { - this.font_combo.setSelectedItem(LabelTranslatorSingleton.getInstance().translate("DEFAULT")); - } else { - this.font_combo.setSelectedItem(LabelTranslatorSingleton.getInstance().translate(font)); - } - - String language = DBTools.selectSettingValue("language"); - - this.language_combo.addItem(LabelTranslatorSingleton.getInstance().translate("English")); - - this.language_combo.addItem(LabelTranslatorSingleton.getInstance().translate("Spanish")); - - if (language == null) { - language = MainPanel.DEFAULT_LANGUAGE; - } - - if (language.equals("EN")) { - this.language_combo.setSelectedItem(LabelTranslatorSingleton.getInstance().translate("English")); - } else if (language.equals("ES")) { - this.language_combo.setSelectedItem(LabelTranslatorSingleton.getInstance().translate("Spanish")); - } - - String custom_proxy_list = DBTools.selectSettingValue("custom_proxy_list"); - - if (custom_proxy_list != null) { - custom_proxy_textarea.setText(custom_proxy_list); - } - - _remember_master_pass = true; - - _deleted_mega_accounts = new HashSet(); - - _deleted_elc_accounts = new HashSet(); - - _settings_ok = false; - - pack(); + pack(); + }); } @@ -595,7 +598,7 @@ public class SettingsDialog extends javax.swing.JDialog { jProgressBar1 = new javax.swing.JProgressBar(); save_button = new javax.swing.JButton(); cancel_button = new javax.swing.JButton(); - jTabbedPane1 = new javax.swing.JTabbedPane(); + panel_tabs = new javax.swing.JTabbedPane(); downloads_scrollpane = new javax.swing.JScrollPane(); downloads_panel = new javax.swing.JPanel(); megacrypter_reverse_warning_label = new javax.swing.JLabel(); @@ -718,8 +721,8 @@ public class SettingsDialog extends javax.swing.JDialog { } }); - jTabbedPane1.setDoubleBuffered(true); - jTabbedPane1.setFont(new java.awt.Font("Dialog", 1, 20)); // NOI18N + panel_tabs.setDoubleBuffered(true); + panel_tabs.setFont(new java.awt.Font("Dialog", 1, 24)); // NOI18N downloads_scrollpane.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 153, 153))); @@ -981,7 +984,7 @@ public class SettingsDialog extends javax.swing.JDialog { downloads_scrollpane.setViewportView(downloads_panel); - jTabbedPane1.addTab("Downloads", new javax.swing.ImageIcon(getClass().getResource("/images/icons8-download-from-ftp-30.png")), downloads_scrollpane); // NOI18N + panel_tabs.addTab("Downloads", new javax.swing.ImageIcon(getClass().getResource("/images/icons8-download-from-ftp-30.png")), downloads_scrollpane); // NOI18N uploads_scrollpane.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 153, 153))); @@ -1070,7 +1073,7 @@ public class SettingsDialog extends javax.swing.JDialog { uploads_scrollpane.setViewportView(uploads_panel); - jTabbedPane1.addTab("Uploads", new javax.swing.ImageIcon(getClass().getResource("/images/icons8-upload-to-ftp-30.png")), uploads_scrollpane); // NOI18N + panel_tabs.addTab("Uploads", new javax.swing.ImageIcon(getClass().getResource("/images/icons8-upload-to-ftp-30.png")), uploads_scrollpane); // NOI18N accounts_panel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 153, 153))); @@ -1264,7 +1267,7 @@ public class SettingsDialog extends javax.swing.JDialog { .addContainerGap()) ); - jTabbedPane1.addTab("Accounts", new javax.swing.ImageIcon(getClass().getResource("/images/icons8-customer-30.png")), accounts_panel); // NOI18N + panel_tabs.addTab("Accounts", new javax.swing.ImageIcon(getClass().getResource("/images/icons8-customer-30.png")), accounts_panel); // NOI18N advanced_scrollpane.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(153, 153, 153))); @@ -1585,7 +1588,7 @@ public class SettingsDialog extends javax.swing.JDialog { advanced_scrollpane.setViewportView(advanced_panel); - jTabbedPane1.addTab("Advanced", new javax.swing.ImageIcon(getClass().getResource("/images/icons8-administrative-tools-30.png")), advanced_scrollpane); // NOI18N + panel_tabs.addTab("Advanced", new javax.swing.ImageIcon(getClass().getResource("/images/icons8-administrative-tools-30.png")), advanced_scrollpane); // NOI18N status.setFont(new java.awt.Font("Dialog", 3, 14)); // NOI18N status.setForeground(new java.awt.Color(102, 102, 102)); @@ -1597,7 +1600,7 @@ public class SettingsDialog extends javax.swing.JDialog { .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 1071, Short.MAX_VALUE) + .addComponent(panel_tabs, javax.swing.GroupLayout.DEFAULT_SIZE, 1071, Short.MAX_VALUE) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addComponent(status, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(6, 6, 6) @@ -1610,7 +1613,7 @@ public class SettingsDialog extends javax.swing.JDialog { layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() - .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 474, Short.MAX_VALUE) + .addComponent(panel_tabs, javax.swing.GroupLayout.DEFAULT_SIZE, 474, Short.MAX_VALUE) .addGap(18, 18, 18) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) @@ -1632,6 +1635,8 @@ public class SettingsDialog extends javax.swing.JDialog { setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); + panel_tabs.setEnabled(false); + try { if (proxy_host_textfield.getText().isEmpty()) { @@ -2056,7 +2061,7 @@ public class SettingsDialog extends javax.swing.JDialog { String email_error_s = ""; email_error_s = email_error.stream().map((s) -> s + "\n").reduce(email_error_s, String::concat); final String final_email_error = email_error_s; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { status.setText(""); JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("There were errors with some accounts (email and/or password are/is wrong). Please, check them:\n\n") + final_email_error, "Mega Account Check Error", JOptionPane.ERROR_MESSAGE); @@ -2065,6 +2070,8 @@ public class SettingsDialog extends javax.swing.JDialog { cancel_button.setEnabled(true); + panel_tabs.setEnabled(true); + remove_mega_account_button.setEnabled(mega_accounts_table.getModel().getRowCount() > 0); remove_elc_account_button.setEnabled(elc_accounts_table.getModel().getRowCount() > 0); @@ -2087,7 +2094,7 @@ public class SettingsDialog extends javax.swing.JDialog { _main_panel.getMega_accounts().entrySet().stream().map((entry) -> entry.getKey()).filter((email) -> (!new_valid_mega_accounts.contains(email))).forEachOrdered((email) -> { _deleted_mega_accounts.add(email); }); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { status.setText(""); JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("Settings successfully saved!"), LabelTranslatorSingleton.getInstance().translate("Settings saved"), JOptionPane.INFORMATION_MESSAGE); _settings_ok = true; @@ -2285,7 +2292,7 @@ public class SettingsDialog extends javax.swing.JDialog { final Dialog tthis = this; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { GetMasterPasswordDialog dialog = new GetMasterPasswordDialog((Frame) getParent(), true, _main_panel.getMaster_pass_hash(), _main_panel.getMaster_pass_salt(), _main_panel); dialog.setLocationRelativeTo(tthis); @@ -2462,7 +2469,7 @@ public class SettingsDialog extends javax.swing.JDialog { final Dialog tthis = this; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { SetMasterPasswordDialog dialog = new SetMasterPasswordDialog((Frame) getParent(), true, _main_panel.getMaster_pass_salt(), _main_panel); dialog.setLocationRelativeTo(tthis); @@ -2884,7 +2891,6 @@ public class SettingsDialog extends javax.swing.JDialog { private javax.swing.JSeparator jSeparator7; private javax.swing.JSeparator jSeparator8; private javax.swing.JSeparator jSeparator9; - private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JComboBox language_combo; private javax.swing.JCheckBox limit_download_speed_checkbox; private javax.swing.JCheckBox limit_upload_speed_checkbox; @@ -2904,6 +2910,7 @@ public class SettingsDialog extends javax.swing.JDialog { private javax.swing.JSpinner megacrypter_reverse_port_spinner; private javax.swing.JLabel megacrypter_reverse_warning_label; private javax.swing.JCheckBox multi_slot_down_checkbox; + private javax.swing.JTabbedPane panel_tabs; private javax.swing.JPanel proxy_auth_panel; private javax.swing.JLabel proxy_host_label; private javax.swing.JTextField proxy_host_textfield; diff --git a/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java b/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java index f9ab0944b..e2b076956 100644 --- a/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java +++ b/src/main/java/com/tonikelope/megabasterd/SmartMegaProxyManager.java @@ -25,8 +25,8 @@ import java.util.logging.Logger; public final class SmartMegaProxyManager { public static String DEFAULT_SMART_PROXY_URL = ""; - public static final int PROXY_BLOCK_TIME = 120; - public static final int PROXY_AUTO_REFRESH_SLEEP_TIME = 15; + public static final int PROXY_BLOCK_TIME = 90; + public static final int PROXY_AUTO_REFRESH_SLEEP_TIME = 60; private static final Logger LOG = Logger.getLogger(SmartMegaProxyManager.class.getName()); private volatile String _proxy_list_url; private final LinkedHashMap _proxy_list; diff --git a/src/main/java/com/tonikelope/megabasterd/StreamerDialog.java b/src/main/java/com/tonikelope/megabasterd/StreamerDialog.java index 08149c6a4..0b07a1954 100644 --- a/src/main/java/com/tonikelope/megabasterd/StreamerDialog.java +++ b/src/main/java/com/tonikelope/megabasterd/StreamerDialog.java @@ -48,43 +48,46 @@ public class StreamerDialog extends javax.swing.JDialog implements ClipboardChan _main_panel = parent.getMain_panel(); - initComponents(); - - updateFonts(this, GUI_FONT, _main_panel.getZoom_factor()); - - translateLabels(this); - _clipboardspy = clipboardspy; _selected_item = null; _mainPanelView = parent; - if (_main_panel.isUse_mega_account_down() && _main_panel.getMega_accounts().size() > 0) { + MiscTools.GUIRunAndWait(() -> { - THREAD_POOL.execute(() -> { - swingInvoke(() -> { - String mega_default_down = _main_panel.getMega_account_down(); + initComponents(); - use_mega_account_down_combobox.addItem(mega_default_down); + updateFonts(this, GUI_FONT, _main_panel.getZoom_factor()); - _main_panel.getMega_accounts().keySet().stream().filter((k) -> (!mega_default_down.equals(k))).forEachOrdered((k) -> { - use_mega_account_down_combobox.addItem(k); + translateLabels(this); + + if (_main_panel.isUse_mega_account_down() && _main_panel.getMega_accounts().size() > 0) { + + THREAD_POOL.execute(() -> { + MiscTools.GUIRun(() -> { + String mega_default_down = _main_panel.getMega_account_down(); + + use_mega_account_down_combobox.addItem(mega_default_down); + + _main_panel.getMega_accounts().keySet().stream().filter((k) -> (!mega_default_down.equals(k))).forEachOrdered((k) -> { + use_mega_account_down_combobox.addItem(k); + }); + use_mega_account_down_combobox.addItem(""); + use_mega_account_down_combobox.setSelectedIndex(0); }); - use_mega_account_down_combobox.addItem(""); - use_mega_account_down_combobox.setSelectedIndex(0); }); - }); - } else { + } else { - use_mega_account_down_combobox.setEnabled(false); - use_mega_account_down_combobox.setVisible(false); - use_mega_account_down_label.setEnabled(false); - use_mega_account_down_label.setVisible(false); - } + use_mega_account_down_combobox.setEnabled(false); + use_mega_account_down_combobox.setVisible(false); + use_mega_account_down_label.setEnabled(false); + use_mega_account_down_label.setVisible(false); + } - pack(); + pack(); + }); } /** @@ -285,11 +288,11 @@ public class StreamerDialog extends javax.swing.JDialog implements ClipboardChan use_account = false; } if (!use_account) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { use_mega_account_down_combobox.setSelectedIndex(_main_panel.getMega_accounts().size()); }); } - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getUse_mega_account_down_combobox().setEnabled(true); getDance_button().setText(LabelTranslatorSingleton.getInstance().translate("Let's dance, baby")); @@ -307,7 +310,7 @@ public class StreamerDialog extends javax.swing.JDialog implements ClipboardChan @Override public void notifyClipboardChange() { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { String link = extractFirstMegaLinkFromString(extractStringFromClipboardContents(_clipboardspy.getContents())); if (!link.contains("/#F!")) { diff --git a/src/main/java/com/tonikelope/megabasterd/Transference.java b/src/main/java/com/tonikelope/megabasterd/Transference.java index 5785bcc23..52f54b20f 100644 --- a/src/main/java/com/tonikelope/megabasterd/Transference.java +++ b/src/main/java/com/tonikelope/megabasterd/Transference.java @@ -16,7 +16,7 @@ public interface Transference { int HTTP_READ_TIMEOUT = 60000; int MAX_SIM_TRANSFERENCES = 20; int SIM_TRANSFERENCES_DEFAULT = 4; - int PROGRESS_WATCHDOG_TIMEOUT = 300; + int PROGRESS_WATCHDOG_TIMEOUT = 600; boolean LIMIT_TRANSFERENCE_SPEED_DEFAULT = false; int MAX_TRANSFERENCE_SPEED_DEFAULT = 5; int MAX_WAIT_WORKERS_SHUTDOWN = 15; diff --git a/src/main/java/com/tonikelope/megabasterd/TransferenceManager.java b/src/main/java/com/tonikelope/megabasterd/TransferenceManager.java index 23cbc45b1..a22607394 100644 --- a/src/main/java/com/tonikelope/megabasterd/TransferenceManager.java +++ b/src/main/java/com/tonikelope/megabasterd/TransferenceManager.java @@ -1,7 +1,6 @@ package com.tonikelope.megabasterd; import static com.tonikelope.megabasterd.MainPanel.*; -import static com.tonikelope.megabasterd.MiscTools.*; import java.awt.Component; import java.awt.TrayIcon; import java.util.ArrayList; @@ -328,13 +327,13 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea getTransference_waitstart_queue().addAll(wait_array); getTransference_waitstart_queue().forEach((t1) -> { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getScroll_panel().remove((Component) t1.getView()); getScroll_panel().add((Component) t1.getView()); }); }); getTransference_finished_queue().forEach((t1) -> { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getScroll_panel().remove((Component) t1.getView()); getScroll_panel().add((Component) t1.getView()); }); @@ -366,13 +365,13 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea getTransference_waitstart_queue().addAll(wait_array); getTransference_waitstart_queue().forEach((t1) -> { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getScroll_panel().remove((Component) t1.getView()); getScroll_panel().add((Component) t1.getView()); }); }); getTransference_finished_queue().forEach((t1) -> { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getScroll_panel().remove((Component) t1.getView()); getScroll_panel().add((Component) t1.getView()); }); @@ -411,13 +410,13 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea getTransference_waitstart_queue().addAll(wait_array); getTransference_waitstart_queue().forEach((t1) -> { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getScroll_panel().remove((Component) t1.getView()); getScroll_panel().add((Component) t1.getView()); }); }); getTransference_finished_queue().forEach((t1) -> { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getScroll_panel().remove((Component) t1.getView()); getScroll_panel().add((Component) t1.getView()); }); @@ -456,13 +455,13 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea getTransference_waitstart_queue().addAll(wait_array); getTransference_waitstart_queue().forEach((t1) -> { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getScroll_panel().remove((Component) t1.getView()); getScroll_panel().add((Component) t1.getView()); }); }); getTransference_finished_queue().forEach((t2) -> { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getScroll_panel().remove((Component) t2.getView()); getScroll_panel().add((Component) t2.getView()); }); @@ -524,7 +523,7 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea _paused_all = true; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { _pause_all_button.setText("RESUME ALL"); _pause_all_button.setEnabled(true); @@ -549,7 +548,7 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea _paused_all = false; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { _pause_all_button.setText("PAUSE ALL"); @@ -594,7 +593,7 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea private void _updateView() { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { if (_paused_all) { _pause_all_button.setText("RESUME ALL"); } else { @@ -779,7 +778,7 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea getTransference_waitstart_aux_queue().clear(); getTransference_waitstart_queue().forEach((t) -> { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getScroll_panel().remove((Component) t.getView()); getScroll_panel().add((Component) t.getView()); }); @@ -788,7 +787,7 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea sortTransferenceQueue(getTransference_finished_queue()); getTransference_finished_queue().forEach((t) -> { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getScroll_panel().remove((Component) t.getView()); getScroll_panel().add((Component) t.getView()); }); diff --git a/src/main/java/com/tonikelope/megabasterd/Upload.java b/src/main/java/com/tonikelope/megabasterd/Upload.java index 6dff4e316..828199f0d 100644 --- a/src/main/java/com/tonikelope/megabasterd/Upload.java +++ b/src/main/java/com/tonikelope/megabasterd/Upload.java @@ -426,7 +426,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia } if (_file_name != null) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getFile_name_label().setVisible(true); getView().getFile_name_label().setText(_file_name); @@ -445,7 +445,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia getView().printStatusError(_status_error); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getRestart_button().setVisible(true); }); @@ -453,7 +453,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia getView().printStatusNormal(LabelTranslatorSingleton.getInstance().translate(_frozen ? "(FROZEN) Waiting to start (" : "Waiting to start (") + _ma.getFull_email() + ") ..."); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getFile_name_label().setVisible(true); getView().getFile_name_label().setText(_file_name); @@ -469,7 +469,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia } - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getClose_button().setVisible(true); getView().getQueue_down_button().setVisible(true); getView().getQueue_up_button().setVisible(true); @@ -638,7 +638,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia if (!_chunkworkers.isEmpty()) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getSlots_spinner().setEnabled(false); }); @@ -679,7 +679,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia LOG.log(Level.INFO, "{0} Uploader hello! {1}", new Object[]{Thread.currentThread().getName(), this.getFile_name()}); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getQueue_down_button().setVisible(false); getView().getQueue_up_button().setVisible(false); getView().getQueue_top_button().setVisible(false); @@ -750,7 +750,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia _byte_file_iv = i32a2bin(file_iv); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getClose_button().setVisible(false); getView().getCbc_label().setVisible(true); @@ -789,7 +789,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia _thread_pool.execute(c); } - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getSlots_label().setVisible(true); getView().getSlots_spinner().setVisible(true); @@ -801,7 +801,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia getView().printStatusNormal(LabelTranslatorSingleton.getInstance().translate("Uploading file to mega (") + _ma.getFull_email() + ") ..."); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getPause_button().setVisible(true); getView().getProgress_pbar().setVisible(true); @@ -868,7 +868,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia getMain_panel().getGlobal_up_speed().detachTransference(this); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { for (JComponent c : new JComponent[]{getView().getSpeed_label(), getView().getCbc_label(), getView().getPause_button(), getView().getStop_button(), getView().getSlots_label(), getView().getSlots_spinner()}) { c.setVisible(false); } @@ -931,7 +931,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia _file_link = _ma.getPublicFileLink(_fid, i32a2bin(node_key)); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getFile_link_button().setEnabled(true); }); @@ -1045,7 +1045,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia getMain_panel().getUpload_manager().getTransference_finished_queue().add(this); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getMain_panel().getUpload_manager().getScroll_panel().remove(getView()); getMain_panel().getUpload_manager().getScroll_panel().add(getView()); @@ -1053,7 +1053,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia getMain_panel().getUpload_manager().secureNotify(); }); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getClose_button().setVisible(true); if (_status_error != null || _canceled) { @@ -1069,7 +1069,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia THREAD_POOL.execute(() -> { for (int i = 3; !_closed && i > 0; i--) { final int j = i; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getRestart_button().setText("Restart (" + String.valueOf(j) + " secs...)"); }); try { @@ -1102,7 +1102,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia getView().printStatusNormal("Upload paused!"); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME UPLOAD")); getView().getPause_button().setEnabled(true); }); @@ -1116,7 +1116,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia getView().printStatusNormal("Upload paused!"); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME UPLOAD")); getView().getPause_button().setEnabled(true); }); @@ -1133,14 +1133,14 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia _finalizing = true; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getSlots_spinner().setEnabled(false); getView().getSlots_spinner().setValue((int) getView().getSlots_spinner().getValue() - 1); }); } else if (!_finalizing) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getSlots_spinner().setEnabled(true); }); } @@ -1149,7 +1149,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia getView().printStatusNormal("Upload paused!"); - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME UPLOAD")); getView().getPause_button().setEnabled(true); }); diff --git a/src/main/java/com/tonikelope/megabasterd/UploadManager.java b/src/main/java/com/tonikelope/megabasterd/UploadManager.java index 602766a83..0db334a18 100644 --- a/src/main/java/com/tonikelope/megabasterd/UploadManager.java +++ b/src/main/java/com/tonikelope/megabasterd/UploadManager.java @@ -1,6 +1,5 @@ package com.tonikelope.megabasterd; -import static com.tonikelope.megabasterd.MiscTools.*; import java.sql.SQLException; import java.util.ArrayList; import static java.util.logging.Level.SEVERE; @@ -53,7 +52,7 @@ public class UploadManager extends TransferenceManager { for (final Transference u : uploads) { - swingInvoke(() -> { + MiscTools.GUIRun(() -> { getScroll_panel().remove(((Upload) u).getView()); }); diff --git a/src/main/java/com/tonikelope/megabasterd/UploadView.java b/src/main/java/com/tonikelope/megabasterd/UploadView.java index 5afeeda33..2a955c409 100644 --- a/src/main/java/com/tonikelope/megabasterd/UploadView.java +++ b/src/main/java/com/tonikelope/megabasterd/UploadView.java @@ -6,6 +6,8 @@ import static com.tonikelope.megabasterd.Transference.*; import java.awt.Color; import static java.lang.Integer.MAX_VALUE; import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JButton; import javax.swing.JComponent; @@ -99,31 +101,34 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { } public UploadView(Upload upload) { - - initComponents(); - - updateFonts(this, GUI_FONT, upload.getMain_panel().getZoom_factor()); - - translateLabels(this); - _upload = upload; - slots_spinner.setModel(new SpinnerNumberModel(_upload.getMain_panel().getDefault_slots_up(), MIN_WORKERS, MAX_WORKERS, 1)); + MiscTools.GUIRunAndWait(() -> { - ((JSpinner.DefaultEditor) slots_spinner.getEditor()).getTextField().setEditable(false); + initComponents(); - speed_label.setForeground(new Color(0, 128, 255)); + updateFonts(this, GUI_FONT, upload.getMain_panel().getZoom_factor()); - progress_pbar.setMinimum(0); - progress_pbar.setMaximum(MAX_VALUE); - progress_pbar.setStringPainted(true); + translateLabels(this); - status_label.setText(""); + slots_spinner.setModel(new SpinnerNumberModel(_upload.getMain_panel().getDefault_slots_up(), MIN_WORKERS, MAX_WORKERS, 1)); - for (JComponent c : new JComponent[]{queue_up_button, queue_down_button, queue_top_button, queue_bottom_button, cbc_label, slots_spinner, slots_label, pause_button, stop_button, speed_label, progress_pbar, file_name_label, close_button, restart_button, file_size_label}) { + ((JSpinner.DefaultEditor) slots_spinner.getEditor()).getTextField().setEditable(false); - c.setVisible(false); - } + speed_label.setForeground(new Color(0, 128, 255)); + + progress_pbar.setMinimum(0); + progress_pbar.setMaximum(MAX_VALUE); + progress_pbar.setStringPainted(true); + + status_label.setText(""); + + for (JComponent c : new JComponent[]{queue_up_button, queue_down_button, queue_top_button, queue_bottom_button, cbc_label, slots_spinner, slots_label, pause_button, stop_button, speed_label, progress_pbar, file_name_label, close_button, restart_button, file_size_label}) { + + c.setVisible(false); + } + + }); } /** @@ -417,7 +422,7 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { public void hideAllExceptStatus() { - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { for (JComponent c : new JComponent[]{speed_label, slots_spinner, slots_label, slot_status_label, pause_button, stop_button, progress_pbar, cbc_label}) { c.setVisible(false); @@ -464,7 +469,7 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { THREAD_POOL.execute(() -> { _upload.upWaitQueue(); - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { queue_up_button.setEnabled(true); }); }); @@ -477,7 +482,7 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { THREAD_POOL.execute(() -> { _upload.downWaitQueue(); - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { queue_down_button.setEnabled(true); }); }); @@ -489,7 +494,7 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { THREAD_POOL.execute(() -> { _upload.topWaitQueue(); - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { queue_top_button.setEnabled(true); }); }); @@ -502,7 +507,7 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { THREAD_POOL.execute(() -> { _upload.bottomWaitQueue(); - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { queue_bottom_button.setEnabled(true); }); }); @@ -510,7 +515,7 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { public void updateCBC(String status) { - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { cbc_label.setText(status); }); } @@ -520,7 +525,7 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { printStatusNormal("Pausing upload ..."); - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { for (JComponent c : new JComponent[]{pause_button, speed_label, slots_label, slots_spinner, progress_pbar, file_name_label, file_size_label}) { c.setEnabled(false); @@ -538,7 +543,7 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { printStatusNormal(status); - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { for (JComponent c : new JComponent[]{pause_button, stop_button, speed_label, slots_label, slots_spinner, progress_pbar, file_name_label, file_size_label}) { c.setEnabled(false); @@ -551,7 +556,7 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { printStatusNormal("Uploading file to mega ..."); - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { for (JComponent c : new JComponent[]{pause_button, speed_label, slots_label, slots_spinner, progress_pbar, file_name_label, file_size_label}) { c.setEnabled(true); @@ -570,7 +575,7 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { @Override public void updateSpeed(final String speed, final Boolean visible) { - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { if (speed != null) { speed_label.setText(speed); } @@ -584,14 +589,14 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { @Override public void updateProgressBar(final long progress, final double bar_rate) { - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { progress_pbar.setValue((int) Math.floor(bar_rate * progress)); }); } @Override public void updateProgressBar(final int value) { - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { progress_pbar.setValue(value); }); } @@ -599,7 +604,7 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { @Override public void printStatusError(final String message) { - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { status_label.setForeground(Color.red); status_label.setText(LabelTranslatorSingleton.getInstance().translate(message)); }); @@ -608,7 +613,7 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { @Override public void printStatusOK(final String message) { - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { status_label.setForeground(new Color(0, 170, 0)); status_label.setText(LabelTranslatorSingleton.getInstance().translate(message)); }); @@ -617,7 +622,7 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { @Override public void printStatusNormal(final String message) { - swingInvokeAndWait(() -> { + MiscTools.GUIRunAndWait(() -> { status_label.setForeground(new Color(102, 102, 102)); status_label.setText(LabelTranslatorSingleton.getInstance().translate(message)); }); @@ -634,7 +639,7 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { conta_error = _upload.getChunkworkers().stream().filter((c) -> (c.isError_wait())).map((_item) -> 1).reduce(conta_error, Integer::sum); final String status = conta_error > 0 ? "(" + String.valueOf(conta_error) + ")" : ""; - swingInvoke(() -> { + MiscTools.GUIRun(() -> { slot_status_label.setForeground(Color.RED); slot_status_label.setText(status); }); @@ -643,7 +648,14 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView { @Override public int getSlots() { - return (int) swingInvokeAndWaitForReturn((Callable) getSlots_spinner()::getValue); + try { + return (int) (MiscTools.futureRun((Callable) getSlots_spinner()::getValue).get()); + } catch (InterruptedException ex) { + Logger.getLogger(UploadView.class.getName()).log(Level.SEVERE, null, ex); + } catch (ExecutionException ex) { + Logger.getLogger(UploadView.class.getName()).log(Level.SEVERE, null, ex); + } + return 0; } // Variables declaration - do not modify//GEN-BEGIN:variables diff --git a/src/main/java/com/tonikelope/megabasterd/WarningExitMessage.java b/src/main/java/com/tonikelope/megabasterd/WarningExitMessage.java index 2ee91bc62..086726844 100644 --- a/src/main/java/com/tonikelope/megabasterd/WarningExitMessage.java +++ b/src/main/java/com/tonikelope/megabasterd/WarningExitMessage.java @@ -35,17 +35,19 @@ public class WarningExitMessage extends javax.swing.JDialog { */ public WarningExitMessage(java.awt.Frame parent, boolean modal, MainPanel main_panel, boolean restart) { super(parent, modal); - initComponents(); + MiscTools.GUIRunAndWait(() -> { + initComponents(); - updateFonts(this, GUI_FONT, main_panel.getZoom_factor()); + updateFonts(this, GUI_FONT, main_panel.getZoom_factor()); - translateLabels(this); + translateLabels(this); - _main_panel = main_panel; + _main_panel = main_panel; - _restart = restart; + _restart = restart; - pack(); + pack(); + }); } /**