-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
This commit is contained in:
tonikelope 2020-10-18 23:23:21 +02:00
parent 0f6eb9b3c9
commit cef89f77b8
27 changed files with 988 additions and 905 deletions

View File

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.tonikelope</groupId>
<artifactId>MegaBasterd</artifactId>
<version>7.28</version>
<version>7.29</version>
<packaging>jar</packaging>
<dependencies>
<dependency>

View File

@ -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);

View File

@ -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);
});

View File

@ -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());
});

View File

@ -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

View File

@ -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<File> files;
try {
if (canImport(dtde.getTransferable().getTransferDataFlavors())) {
files = (List<File>) 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<File> files;
try {
if (canImport(dtde.getTransferable().getTransferDataFlavors())) {
files = (List<File>) 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<File> 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) {

View File

@ -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("");

View File

@ -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("");

View File

@ -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);

View File

@ -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();
});
}

View File

@ -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);

View File

@ -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<String> 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())));

View File

@ -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("");
});
});

View File

@ -242,9 +242,9 @@
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jTabbedPane1" alignment="1" max="32767" attributes="0"/>
<Group type="102" alignment="1" attributes="0">
<EmptySpace min="0" pref="343" max="32767" attributes="0"/>
<EmptySpace min="0" pref="283" max="32767" attributes="0"/>
<Component id="unfreeze_transferences_button" min="-2" max="-2" attributes="0"/>
<EmptySpace min="0" pref="343" max="32767" attributes="0"/>
<EmptySpace min="0" pref="282" max="32767" attributes="0"/>
</Group>
<Group type="102" attributes="0">
<Component id="kiss_server_status" pref="191" max="32767" attributes="0"/>
@ -268,7 +268,7 @@
<EmptySpace max="-2" attributes="0"/>
<Component id="unfreeze_transferences_button" min="-2" max="-2" attributes="0"/>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="jTabbedPane1" max="32767" attributes="0"/>
<Component id="jTabbedPane1" pref="469" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Component id="logo_label" min="-2" max="-2" attributes="0"/>
@ -342,7 +342,7 @@
<Properties>
<Property name="doubleBuffered" type="boolean" value="true"/>
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
<Font name="Dialog" size="20" style="1"/>
<Font name="Dialog" size="24" style="1"/>
</Property>
</Properties>
@ -387,7 +387,7 @@
<Component id="status_down_label" max="32767" attributes="0"/>
</Group>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Component id="jScrollPane_down" pref="295" max="32767" attributes="0"/>
<Component id="jScrollPane_down" pref="288" max="32767" attributes="0"/>
<EmptySpace type="unrelated" min="-2" max="-2" attributes="0"/>
<Component id="down_remtime_label" min="-2" max="-2" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
@ -522,7 +522,7 @@
<Component id="status_up_label" alignment="0" max="32767" attributes="0"/>
</Group>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Component id="jScrollPane_up" pref="295" max="32767" attributes="0"/>
<Component id="jScrollPane_up" pref="288" max="32767" attributes="0"/>
<EmptySpace type="unrelated" min="-2" max="-2" attributes="0"/>
<Component id="up_remtime_label" min="-2" max="-2" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
@ -625,7 +625,7 @@
<Color blue="ff" green="ff" red="ff" type="rgb"/>
</Property>
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
<Font name="Dialog" size="18" style="1"/>
<Font name="Dialog" size="24" style="1"/>
</Property>
<Property name="foreground" type="java.awt.Color" editor="org.netbeans.beaninfo.editors.ColorEditor">
<Color blue="ff" green="99" red="0" type="rgb"/>

View File

@ -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<File> files;
try {
if (canImport(dtde.getTransferable().getTransferDataFlavors())) {
files = (List<File>) 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<File> files;
@Override
public synchronized void dragExit(DropTargetEvent dtde) {
changeToNormal();
}
try {
if (canImport(dtde.getTransferable().getTransferDataFlavors())) {
files = (List<File>) 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)

View File

@ -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<Object> 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);

View File

@ -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("");

View File

@ -31,7 +31,7 @@
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jTabbedPane1" pref="1071" max="32767" attributes="0"/>
<Component id="panel_tabs" pref="1071" max="32767" attributes="0"/>
<Group type="102" alignment="1" attributes="0">
<Component id="status" max="32767" attributes="0"/>
<EmptySpace min="-2" pref="6" max="-2" attributes="0"/>
@ -48,7 +48,7 @@
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<EmptySpace min="-2" max="-2" attributes="0"/>
<Component id="jTabbedPane1" pref="474" max="32767" attributes="0"/>
<Component id="panel_tabs" pref="474" max="32767" attributes="0"/>
<EmptySpace min="-2" pref="18" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" max="-2" attributes="0">
<Group type="103" groupAlignment="3" attributes="0">
@ -93,11 +93,11 @@
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="cancel_buttonActionPerformed"/>
</Events>
</Component>
<Container class="javax.swing.JTabbedPane" name="jTabbedPane1">
<Container class="javax.swing.JTabbedPane" name="panel_tabs">
<Properties>
<Property name="doubleBuffered" type="boolean" value="true"/>
<Property name="font" type="java.awt.Font" editor="org.netbeans.beaninfo.editors.FontEditor">
<Font name="Dialog" size="20" style="1"/>
<Font name="Dialog" size="24" style="1"/>
</Property>
</Properties>

View File

@ -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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String, Object> 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<String> 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;

View File

@ -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<String, Long[]> _proxy_list;

View File

@ -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!")) {

View File

@ -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;

View File

@ -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());
});

View File

@ -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);
});

View File

@ -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());
});

View File

@ -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

View File

@ -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();
});
}
/**