mirror of
https://github.com/tonikelope/megabasterd.git
synced 2025-05-21 00:37:12 +02:00
6.58
-GUI bug fix and optimization -JDK 8 rafactorization
This commit is contained in:
parent
9dc17db836
commit
d4eb03f81f
2
pom.xml
2
pom.xml
@ -3,7 +3,7 @@
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.tonikelope</groupId>
|
||||
<artifactId>MegaBasterd</artifactId>
|
||||
<version>6.57</version>
|
||||
<version>6.58</version>
|
||||
<packaging>jar</packaging>
|
||||
<dependencies>
|
||||
<dependency>
|
||||
|
@ -252,39 +252,29 @@ public class AboutDialog extends javax.swing.JDialog {
|
||||
|
||||
final Dialog tthis = this;
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
final String new_version = checkNewVersion(MEGABASTERD_URL);
|
||||
|
||||
final String new_version = checkNewVersion(MEGABASTERD_URL);
|
||||
swingInvoke(() -> {
|
||||
if (new_version != null) {
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("MegaBasterd NEW VERSION is available! -> ") + new_version);
|
||||
|
||||
if (new_version != null) {
|
||||
mcdown_url_button.setEnabled(true);
|
||||
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("MegaBasterd NEW VERSION is available! -> ") + new_version);
|
||||
} else {
|
||||
|
||||
mcdown_url_button.setEnabled(true);
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("You have the latest version ;)"));
|
||||
|
||||
} else {
|
||||
mcdown_url_button.setEnabled(false);
|
||||
}
|
||||
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("You have the latest version ;)"));
|
||||
check_version_button.setText(old_check_version_button_text);
|
||||
|
||||
mcdown_url_button.setEnabled(false);
|
||||
}
|
||||
check_version_button.setEnabled(true);
|
||||
|
||||
check_version_button.setText(old_check_version_button_text);
|
||||
|
||||
check_version_button.setEnabled(true);
|
||||
|
||||
pack();
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
pack();
|
||||
});
|
||||
});
|
||||
}//GEN-LAST:event_check_version_buttonActionPerformed
|
||||
|
||||
|
@ -216,15 +216,10 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
Download tthis = this;
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getView().getSlots_label().setForeground(Color.BLUE);
|
||||
|
||||
getView().getSlots_label().setForeground(Color.BLUE);
|
||||
|
||||
getView().getSlots_spinner().setEnabled(false);
|
||||
}
|
||||
getView().getSlots_spinner().setEnabled(false);
|
||||
});
|
||||
|
||||
synchronized (_workers_lock) {
|
||||
@ -240,15 +235,10 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
}
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getView().getSlots_spinner().setValue(Transference.MAX_WORKERS);
|
||||
|
||||
getView().getSlots_spinner().setValue(Transference.MAX_WORKERS);
|
||||
|
||||
getView().getSlots_spinner().setEnabled(true);
|
||||
}
|
||||
getView().getSlots_spinner().setEnabled(true);
|
||||
});
|
||||
|
||||
}
|
||||
@ -505,16 +495,12 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getView().getQueue_down_button().setVisible(false);
|
||||
getView().getQueue_up_button().setVisible(false);
|
||||
getView().getClose_button().setVisible(false);
|
||||
getView().getCopy_link_button().setVisible(true);
|
||||
getView().getOpen_folder_button().setVisible(true);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getQueue_down_button().setVisible(false);
|
||||
getView().getQueue_up_button().setVisible(false);
|
||||
getView().getClose_button().setVisible(false);
|
||||
getView().getCopy_link_button().setVisible(true);
|
||||
getView().getOpen_folder_button().setVisible(true);
|
||||
});
|
||||
|
||||
getView().printStatusNormal("Starting download, please wait...");
|
||||
@ -541,8 +527,6 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
if (!_exit) {
|
||||
|
||||
_progress_bar_rate = MAX_VALUE / (double) _file_size;
|
||||
|
||||
String temp_filename = (getCustom_chunks_dir() != null ? getCustom_chunks_dir() : _download_path) + "/" + _file_name + ".mctemp";
|
||||
|
||||
_file = new File(temp_filename);
|
||||
@ -603,15 +587,10 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
_thread_pool.execute(c);
|
||||
}
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
for (JComponent c : new JComponent[]{getView().getSlots_label(), getView().getSlots_spinner(), getView().getSlot_status_label()}) {
|
||||
|
||||
for (JComponent c : new JComponent[]{getView().getSlots_label(), getView().getSlots_spinner(), getView().getSlot_status_label()}) {
|
||||
|
||||
c.setVisible(true);
|
||||
}
|
||||
c.setVisible(true);
|
||||
}
|
||||
});
|
||||
|
||||
@ -623,15 +602,9 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
_thread_pool.execute(c);
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
for (JComponent c : new JComponent[]{getView().getSlots_label(), getView().getSlots_spinner(), getView().getSlot_status_label()}) {
|
||||
|
||||
c.setVisible(false);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
for (JComponent c1 : new JComponent[]{getView().getSlots_label(), getView().getSlots_spinner(), getView().getSlot_status_label()}) {
|
||||
c1.setVisible(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -639,15 +612,10 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
getView().printStatusNormal(LabelTranslatorSingleton.getInstance().translate("Downloading file from mega ") + (_ma.getFull_email() != null ? "(" + _ma.getFull_email() + ")" : "") + " ...");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
for (JComponent c : new JComponent[]{getView().getPause_button(), getView().getProgress_pbar()}) {
|
||||
|
||||
for (JComponent c : new JComponent[]{getView().getPause_button(), getView().getProgress_pbar()}) {
|
||||
|
||||
c.setVisible(true);
|
||||
}
|
||||
c.setVisible(true);
|
||||
}
|
||||
});
|
||||
|
||||
@ -684,15 +652,10 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
_output_stream.close();
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
for (JComponent c : new JComponent[]{getView().getSpeed_label(), getView().getPause_button(), getView().getStop_button(), getView().getSlots_label(), getView().getSlots_spinner(), getView().getKeep_temp_checkbox()}) {
|
||||
|
||||
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);
|
||||
}
|
||||
c.setVisible(false);
|
||||
}
|
||||
});
|
||||
|
||||
@ -726,15 +689,10 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
getView().printStatusNormal("Checking file integrity, please wait...");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getView().getStop_button().setVisible(true);
|
||||
|
||||
getView().getStop_button().setVisible(true);
|
||||
|
||||
getView().getStop_button().setText(LabelTranslatorSingleton.getInstance().translate("CANCEL CHECK"));
|
||||
}
|
||||
getView().getStop_button().setText(LabelTranslatorSingleton.getInstance().translate("CANCEL CHECK"));
|
||||
});
|
||||
|
||||
getMain_panel().getDownload_manager().getTransference_running_list().remove(this);
|
||||
@ -757,13 +715,8 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
}
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getStop_button().setVisible(false);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getStop_button().setVisible(false);
|
||||
});
|
||||
|
||||
} else {
|
||||
@ -878,34 +831,24 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
getMain_panel().getDownload_manager().getTransference_finished_queue().add(this);
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getMain_panel().getDownload_manager().getScroll_panel().remove(getView());
|
||||
|
||||
getMain_panel().getDownload_manager().getScroll_panel().remove(getView());
|
||||
|
||||
getMain_panel().getDownload_manager().getScroll_panel().add(getView());
|
||||
}
|
||||
getMain_panel().getDownload_manager().getScroll_panel().add(getView());
|
||||
});
|
||||
|
||||
getMain_panel().getDownload_manager().secureNotify();
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getView().getClose_button().setVisible(true);
|
||||
|
||||
getView().getClose_button().setVisible(true);
|
||||
if (_status_error != null || _canceled) {
|
||||
|
||||
if (_status_error != null || _canceled) {
|
||||
getView().getRestart_button().setVisible(true);
|
||||
|
||||
getView().getRestart_button().setVisible(true);
|
||||
} else {
|
||||
|
||||
} else {
|
||||
|
||||
getView().getClose_button().setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons8-ok-30.png")));
|
||||
}
|
||||
getView().getClose_button().setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons8-ok-30.png")));
|
||||
}
|
||||
});
|
||||
|
||||
@ -916,14 +859,9 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
getView().printStatusNormal("Provisioning download, please wait...");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getCopy_link_button().setVisible(true);
|
||||
getView().getOpen_folder_button().setVisible(true);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getCopy_link_button().setVisible(true);
|
||||
getView().getOpen_folder_button().setVisible(true);
|
||||
});
|
||||
|
||||
String[] file_info;
|
||||
@ -996,46 +934,7 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
_status_error = "PROVISION FAILED";
|
||||
|
||||
if (_file_name != null) {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getFile_name_label().setVisible(true);
|
||||
|
||||
getView().getFile_name_label().setText(truncateText(_download_path + "/" + _file_name, 100));
|
||||
|
||||
getView().getFile_name_label().setToolTipText(_download_path + "/" + _file_name);
|
||||
|
||||
getView().getFile_size_label().setVisible(true);
|
||||
|
||||
getView().getFile_size_label().setText(formatBytes(_file_size));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getView().hideAllExceptStatus();
|
||||
|
||||
getView().printStatusError(_status_error);
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getRestart_button().setVisible(true);
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
|
||||
getView().printStatusNormal(_frozen ? "(FROZEN) Waiting to start..." : "Waiting to start...");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
swingInvoke(() -> {
|
||||
getView().getFile_name_label().setVisible(true);
|
||||
|
||||
getView().getFile_name_label().setText(truncateText(_download_path + "/" + _file_name, 100));
|
||||
@ -1045,19 +944,40 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
getView().getFile_size_label().setVisible(true);
|
||||
|
||||
getView().getFile_size_label().setText(formatBytes(_file_size));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getView().hideAllExceptStatus();
|
||||
|
||||
getView().printStatusError(_status_error);
|
||||
|
||||
swingInvoke(() -> {
|
||||
getView().getRestart_button().setVisible(true);
|
||||
});
|
||||
|
||||
} else {
|
||||
|
||||
_progress_bar_rate = MAX_VALUE / (double) _file_size;
|
||||
|
||||
getView().printStatusNormal(_frozen ? "(FROZEN) Waiting to start..." : "Waiting to start...");
|
||||
|
||||
swingInvoke(() -> {
|
||||
getView().getFile_name_label().setVisible(true);
|
||||
|
||||
getView().getFile_name_label().setText(truncateText(_download_path + "/" + _file_name, 100));
|
||||
|
||||
getView().getFile_name_label().setToolTipText(_download_path + "/" + _file_name);
|
||||
|
||||
getView().getFile_size_label().setVisible(true);
|
||||
|
||||
getView().getFile_size_label().setText(formatBytes(_file_size));
|
||||
});
|
||||
|
||||
}
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getClose_button().setVisible(true);
|
||||
getView().getQueue_up_button().setVisible(true);
|
||||
getView().getQueue_down_button().setVisible(true);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getClose_button().setVisible(true);
|
||||
getView().getQueue_up_button().setVisible(true);
|
||||
getView().getQueue_down_button().setVisible(true);
|
||||
});
|
||||
|
||||
}
|
||||
@ -1070,14 +990,9 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
getView().printStatusNormal("Download paused!");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME DOWNLOAD"));
|
||||
getView().getPause_button().setEnabled(true);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME DOWNLOAD"));
|
||||
getView().getPause_button().setEnabled(true);
|
||||
});
|
||||
|
||||
}
|
||||
@ -1088,14 +1003,9 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
getView().printStatusNormal("Download paused!");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME DOWNLOAD"));
|
||||
getView().getPause_button().setEnabled(true);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME DOWNLOAD"));
|
||||
getView().getPause_button().setEnabled(true);
|
||||
});
|
||||
|
||||
}
|
||||
@ -1186,13 +1096,8 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
if (!_chunkworkers.isEmpty()) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getSlots_spinner().setEnabled(false);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getSlots_spinner().setEnabled(false);
|
||||
});
|
||||
|
||||
int i = _chunkworkers.size() - 1;
|
||||
@ -1233,28 +1138,18 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
if (_use_slots) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getView().getSlots_spinner().setEnabled(false);
|
||||
|
||||
getView().getSlots_spinner().setEnabled(false);
|
||||
|
||||
getView().getSlots_spinner().setValue((int) getView().getSlots_spinner().getValue() - 1);
|
||||
}
|
||||
getView().getSlots_spinner().setValue((int) getView().getSlots_spinner().getValue() - 1);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
} else if (!_finishing_download && _use_slots) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getSlots_spinner().setEnabled(true);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getSlots_spinner().setEnabled(true);
|
||||
});
|
||||
|
||||
}
|
||||
@ -1263,15 +1158,10 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
getView().printStatusNormal("Download paused!");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME DOWNLOAD"));
|
||||
|
||||
getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME DOWNLOAD"));
|
||||
|
||||
getView().getPause_button().setEnabled(true);
|
||||
}
|
||||
getView().getPause_button().setEnabled(true);
|
||||
});
|
||||
|
||||
}
|
||||
@ -1466,17 +1356,12 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
_retrying_request = true;
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getMain_panel().getView().getNew_download_menu().setEnabled(true);
|
||||
|
||||
getMain_panel().getView().getNew_download_menu().setEnabled(true);
|
||||
getView().getStop_button().setVisible(true);
|
||||
|
||||
getView().getStop_button().setVisible(true);
|
||||
|
||||
getView().getStop_button().setText(LabelTranslatorSingleton.getInstance().translate("CANCEL RETRY"));
|
||||
}
|
||||
getView().getStop_button().setText(LabelTranslatorSingleton.getInstance().translate("CANCEL RETRY"));
|
||||
});
|
||||
|
||||
for (long i = getWaitTimeExpBackOff(retry++); i > 0 && !_exit; i--) {
|
||||
@ -1504,14 +1389,9 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
if (!_exit && !error) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getStop_button().setText(LabelTranslatorSingleton.getInstance().translate("CANCEL DOWNLOAD"));
|
||||
getView().getStop_button().setVisible(false);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getStop_button().setText(LabelTranslatorSingleton.getInstance().translate("CANCEL DOWNLOAD"));
|
||||
getView().getStop_button().setVisible(false);
|
||||
});
|
||||
|
||||
}
|
||||
@ -1553,15 +1433,10 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
_retrying_request = true;
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getView().getStop_button().setVisible(true);
|
||||
|
||||
getView().getStop_button().setVisible(true);
|
||||
|
||||
getView().getStop_button().setText(LabelTranslatorSingleton.getInstance().translate("CANCEL RETRY"));
|
||||
}
|
||||
getView().getStop_button().setText(LabelTranslatorSingleton.getInstance().translate("CANCEL RETRY"));
|
||||
});
|
||||
|
||||
for (long i = getWaitTimeExpBackOff(retry++); i > 0 && !_exit; i--) {
|
||||
@ -1583,14 +1458,9 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
if (!error) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getStop_button().setText(LabelTranslatorSingleton.getInstance().translate("CANCEL DOWNLOAD"));
|
||||
getView().getStop_button().setVisible(false);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getStop_button().setText(LabelTranslatorSingleton.getInstance().translate("CANCEL DOWNLOAD"));
|
||||
getView().getStop_button().setVisible(false);
|
||||
});
|
||||
|
||||
}
|
||||
@ -1660,18 +1530,14 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
|
||||
|
||||
_progress = progress;
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getMain_panel().getUpload_manager().increment_total_progress(_progress - old_progress);
|
||||
|
||||
getView().updateProgressBar(_progress, _progress_bar_rate);
|
||||
}
|
||||
});
|
||||
int old_percent_progress = (int) Math.floor(((double) old_progress / _file_size) * 100);
|
||||
|
||||
if (!isChecking_cbc()) {
|
||||
int new_percent_progress = (int) Math.floor(((double) progress / _file_size) * 100);
|
||||
|
||||
getMain_panel().getDownload_manager().increment_total_progress(_progress - old_progress);
|
||||
if (new_percent_progress > old_percent_progress) {
|
||||
getView().updateProgressBar(_progress, _progress_bar_rate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -31,12 +31,8 @@ public class DownloadManager extends TransferenceManager {
|
||||
|
||||
for (final Transference d : downloads) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getScroll_panel().remove(((Download) d).getView());
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getScroll_panel().remove(((Download) d).getView());
|
||||
});
|
||||
|
||||
getTransference_waitstart_queue().remove(d);
|
||||
@ -70,12 +66,8 @@ public class DownloadManager extends TransferenceManager {
|
||||
|
||||
@Override
|
||||
public void provision(final Transference download) {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getScroll_panel().add(((Download) download).getView());
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getScroll_panel().add(((Download) download).getView());
|
||||
});
|
||||
|
||||
try {
|
||||
@ -88,22 +80,17 @@ public class DownloadManager extends TransferenceManager {
|
||||
|
||||
LOG.log(Level.INFO, "{0} Provision failed! Retrying in separated thread...", Thread.currentThread().getName());
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
try {
|
||||
|
||||
try {
|
||||
_provision((Download) download, true);
|
||||
|
||||
_provision((Download) download, true);
|
||||
|
||||
} catch (APIException ex1) {
|
||||
|
||||
LOG.log(SEVERE, null, ex1);
|
||||
}
|
||||
|
||||
secureNotify();
|
||||
} catch (APIException ex1) {
|
||||
|
||||
LOG.log(SEVERE, null, ex1);
|
||||
}
|
||||
|
||||
secureNotify();
|
||||
});
|
||||
}
|
||||
|
||||
@ -132,23 +119,15 @@ public class DownloadManager extends TransferenceManager {
|
||||
getTransference_waitstart_queue().addAll(aux);
|
||||
|
||||
getTransference_waitstart_queue().forEach((t1) -> {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getScroll_panel().remove((Component) t1.getView());
|
||||
getScroll_panel().add((Component) t1.getView());
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getScroll_panel().remove((Component) t1.getView());
|
||||
getScroll_panel().add((Component) t1.getView());
|
||||
});
|
||||
});
|
||||
getTransference_finished_queue().forEach((t2) -> {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getScroll_panel().remove((Component) t2.getView());
|
||||
getScroll_panel().add((Component) t2.getView());
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getScroll_panel().remove((Component) t2.getView());
|
||||
getScroll_panel().add((Component) t2.getView());
|
||||
});
|
||||
});
|
||||
|
||||
|
@ -123,20 +123,15 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView
|
||||
|
||||
public void hideAllExceptStatus() {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
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}) {
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
c.setVisible(false);
|
||||
}
|
||||
for (JComponent c : new JComponent[]{status_label, file_name_label, file_size_label}) {
|
||||
|
||||
for (JComponent c : new JComponent[]{status_label, file_name_label, file_size_label}) {
|
||||
|
||||
c.setVisible(true);
|
||||
}
|
||||
c.setVisible(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -381,15 +376,9 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView
|
||||
|
||||
private void slots_spinnerStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_slots_spinnerStateChanged
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
if (_download.isUse_slots()) {
|
||||
_download.checkSlotsAndWorkers();
|
||||
}
|
||||
|
||||
THREAD_POOL.execute(() -> {
|
||||
if (_download.isUse_slots()) {
|
||||
_download.checkSlotsAndWorkers();
|
||||
}
|
||||
});
|
||||
}//GEN-LAST:event_slots_spinnerStateChanged
|
||||
@ -439,23 +428,11 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView
|
||||
|
||||
queue_up_button.setEnabled(false);
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
_download.upWaitQueue();
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
queue_up_button.setEnabled(true);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
THREAD_POOL.execute(() -> {
|
||||
_download.upWaitQueue();
|
||||
swingInvoke(() -> {
|
||||
queue_up_button.setEnabled(true);
|
||||
});
|
||||
});
|
||||
}//GEN-LAST:event_queue_up_buttonActionPerformed
|
||||
|
||||
@ -464,23 +441,11 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView
|
||||
|
||||
queue_down_button.setEnabled(false);
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
_download.downWaitQueue();
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
queue_down_button.setEnabled(true);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
THREAD_POOL.execute(() -> {
|
||||
_download.downWaitQueue();
|
||||
swingInvoke(() -> {
|
||||
queue_down_button.setEnabled(true);
|
||||
});
|
||||
});
|
||||
}//GEN-LAST:event_queue_down_buttonActionPerformed
|
||||
|
||||
@ -489,20 +454,15 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView
|
||||
|
||||
printStatusNormal("Pausing download ...");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
for (JComponent c : new JComponent[]{pause_button, speed_label, slots_label, slots_spinner, progress_pbar, file_name_label, file_size_label}) {
|
||||
|
||||
for (JComponent c : new JComponent[]{pause_button, speed_label, slots_label, slots_spinner, progress_pbar, file_name_label, file_size_label}) {
|
||||
c.setEnabled(false);
|
||||
}
|
||||
|
||||
c.setEnabled(false);
|
||||
}
|
||||
for (JComponent c : new JComponent[]{stop_button, keep_temp_checkbox}) {
|
||||
|
||||
for (JComponent c : new JComponent[]{stop_button, keep_temp_checkbox}) {
|
||||
|
||||
c.setVisible(true);
|
||||
}
|
||||
c.setVisible(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -512,24 +472,19 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView
|
||||
|
||||
printStatusNormal("Downloading file from mega ...");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
for (JComponent c : new JComponent[]{pause_button, speed_label, slots_label, slots_spinner, progress_pbar, file_name_label, file_size_label}) {
|
||||
|
||||
for (JComponent c : new JComponent[]{pause_button, speed_label, slots_label, slots_spinner, progress_pbar, file_name_label, file_size_label}) {
|
||||
|
||||
c.setEnabled(true);
|
||||
}
|
||||
|
||||
for (JComponent c : new JComponent[]{stop_button, keep_temp_checkbox}) {
|
||||
|
||||
c.setVisible(false);
|
||||
}
|
||||
|
||||
pause_button.setText(LabelTranslatorSingleton.getInstance().translate("PAUSE DOWNLOAD"));
|
||||
_download.getMain_panel().getView().getPause_all_down_button().setVisible(true);
|
||||
c.setEnabled(true);
|
||||
}
|
||||
|
||||
for (JComponent c : new JComponent[]{stop_button, keep_temp_checkbox}) {
|
||||
|
||||
c.setVisible(false);
|
||||
}
|
||||
|
||||
pause_button.setText(LabelTranslatorSingleton.getInstance().translate("PAUSE DOWNLOAD"));
|
||||
_download.getMain_panel().getView().getPause_all_down_button().setVisible(true);
|
||||
});
|
||||
|
||||
}
|
||||
@ -539,16 +494,10 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView
|
||||
|
||||
printStatusNormal(status);
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
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);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
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);
|
||||
}
|
||||
});
|
||||
|
||||
@ -557,18 +506,13 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView
|
||||
@Override
|
||||
public void updateSpeed(final String speed, final Boolean visible) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
if (speed != null) {
|
||||
speed_label.setText(speed);
|
||||
}
|
||||
|
||||
if (speed != null) {
|
||||
speed_label.setText(speed);
|
||||
}
|
||||
|
||||
if (visible != null) {
|
||||
speed_label.setVisible(visible);
|
||||
}
|
||||
if (visible != null) {
|
||||
speed_label.setVisible(visible);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -576,67 +520,42 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView
|
||||
@Override
|
||||
public void updateProgressBar(final long progress, final double bar_rate) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
progress_pbar.setValue((int) Math.floor(bar_rate * progress));
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
progress_pbar.setValue((int) Math.floor(bar_rate * progress));
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateProgressBar(final int value) {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
progress_pbar.setValue(value);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
progress_pbar.setValue(value);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void printStatusError(final String message) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
status_label.setForeground(Color.red);
|
||||
status_label.setText(LabelTranslatorSingleton.getInstance().translate(message));
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
status_label.setForeground(Color.red);
|
||||
status_label.setText(LabelTranslatorSingleton.getInstance().translate(message));
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void printStatusOK(final String message) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
status_label.setForeground(new Color(0, 170, 0));
|
||||
status_label.setText(LabelTranslatorSingleton.getInstance().translate(message));
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
status_label.setForeground(new Color(0, 170, 0));
|
||||
status_label.setText(LabelTranslatorSingleton.getInstance().translate(message));
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void printStatusNormal(final String message) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
status_label.setForeground(new Color(102, 102, 102));
|
||||
status_label.setText(LabelTranslatorSingleton.getInstance().translate(message));
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
status_label.setForeground(new Color(102, 102, 102));
|
||||
status_label.setText(LabelTranslatorSingleton.getInstance().translate(message));
|
||||
});
|
||||
|
||||
}
|
||||
@ -658,40 +577,21 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView
|
||||
|
||||
final String status = (conta_exit > 0 ? "Tot removing: " + conta_exit : "") + (conta_error > 0 ? ((conta_exit > 0 ? " / " : "") + "Tot error: " + conta_error) : "");
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
slot_status_label.setForeground(status_color);
|
||||
slot_status_label.setText(LabelTranslatorSingleton.getInstance().translate(status));
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
slot_status_label.setForeground(status_color);
|
||||
slot_status_label.setText(LabelTranslatorSingleton.getInstance().translate(status));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSlots() {
|
||||
return (int) swingInvokeAndWaitForReturn(new Callable() {
|
||||
|
||||
@Override
|
||||
public Object call() throws Exception {
|
||||
|
||||
return getSlots_spinner().getValue();
|
||||
}
|
||||
|
||||
});
|
||||
return (int) swingInvokeAndWaitForReturn((Callable) getSlots_spinner()::getValue);
|
||||
}
|
||||
|
||||
public boolean isKeepTempFileSelected() {
|
||||
|
||||
return (boolean) swingInvokeAndWaitForReturn(new Callable() {
|
||||
|
||||
@Override
|
||||
public Object call() throws Exception {
|
||||
|
||||
return getKeep_temp_checkbox().isSelected();
|
||||
}
|
||||
|
||||
});
|
||||
return (boolean) swingInvokeAndWaitForReturn((Callable) getKeep_temp_checkbox()::isSelected);
|
||||
}
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
|
@ -69,11 +69,8 @@ class FileDropHandler extends TransferHandler {
|
||||
return false;
|
||||
}
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
_notifiable.file_drop_notify(files);
|
||||
}
|
||||
THREAD_POOL.execute(() -> {
|
||||
_notifiable.file_drop_notify(files);
|
||||
});
|
||||
|
||||
return true;
|
||||
|
@ -99,64 +99,46 @@ public class FileGrabberDialog extends javax.swing.JDialog implements FileDropHa
|
||||
|
||||
pack();
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
if (_drag_drop_files != null) {
|
||||
|
||||
if (_drag_drop_files != null) {
|
||||
file_drop_notify(_drag_drop_files);
|
||||
}
|
||||
if (_main_panel.getMega_accounts().size() > 0) {
|
||||
swingInvoke(() -> {
|
||||
if (!_main_panel.getMega_active_accounts().isEmpty()) {
|
||||
_inserting_mega_accounts = true;
|
||||
|
||||
file_drop_notify(_drag_drop_files);
|
||||
}
|
||||
_main_panel.getMega_accounts().keySet().forEach((o) -> {
|
||||
account_combobox.addItem(o);
|
||||
});
|
||||
|
||||
if (_main_panel.getMega_accounts().size() > 0) {
|
||||
_inserting_mega_accounts = false;
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
for (Object o : _main_panel.getMega_active_accounts().keySet()) {
|
||||
|
||||
if (!_main_panel.getMega_active_accounts().isEmpty()) {
|
||||
_inserting_mega_accounts = true;
|
||||
account_combobox.setSelectedItem(o);
|
||||
|
||||
_main_panel.getMega_accounts().keySet().forEach((o) -> {
|
||||
account_combobox.addItem(o);
|
||||
});
|
||||
|
||||
_inserting_mega_accounts = false;
|
||||
|
||||
for (Object o : _main_panel.getMega_active_accounts().keySet()) {
|
||||
|
||||
account_combobox.setSelectedItem(o);
|
||||
|
||||
account_comboboxItemStateChanged(null);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
_main_panel.getMega_accounts().keySet().forEach((o) -> {
|
||||
account_combobox.addItem(o);
|
||||
});
|
||||
}
|
||||
|
||||
pack();
|
||||
account_comboboxItemStateChanged(null);
|
||||
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
} else {
|
||||
|
||||
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)"));
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
_main_panel.getMega_accounts().keySet().forEach((o) -> {
|
||||
account_combobox.addItem(o);
|
||||
});
|
||||
}
|
||||
|
||||
pack();
|
||||
});
|
||||
} else {
|
||||
swingInvoke(() -> {
|
||||
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)"));
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@ -455,36 +437,26 @@ public class FileGrabberDialog extends javax.swing.JDialog implements FileDropHa
|
||||
|
||||
file_tree.setModel(tree_model);
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
_genFileList();
|
||||
swingInvoke(() -> {
|
||||
add_files_button.setEnabled(true);
|
||||
|
||||
_genFileList();
|
||||
add_folder_button.setEnabled(true);
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
add_files_button.setEnabled(true);
|
||||
add_files_button.setText(LabelTranslatorSingleton.getInstance().translate("Add files"));
|
||||
|
||||
add_folder_button.setEnabled(true);
|
||||
boolean root_childs = ((TreeNode) tree_model.getRoot()).getChildCount() > 0;
|
||||
|
||||
add_files_button.setText(LabelTranslatorSingleton.getInstance().translate("Add files"));
|
||||
|
||||
boolean root_childs = ((TreeNode) tree_model.getRoot()).getChildCount() > 0;
|
||||
|
||||
file_tree.setRootVisible(root_childs);
|
||||
file_tree.setEnabled(root_childs);
|
||||
warning_label.setEnabled(root_childs);
|
||||
dance_button.setEnabled(root_childs);
|
||||
total_file_size_label.setEnabled(root_childs);
|
||||
skip_button.setEnabled(root_childs);
|
||||
skip_rest_button.setEnabled(root_childs);
|
||||
upload_log_checkbox.setEnabled(root_childs);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
file_tree.setRootVisible(root_childs);
|
||||
file_tree.setEnabled(root_childs);
|
||||
warning_label.setEnabled(root_childs);
|
||||
dance_button.setEnabled(root_childs);
|
||||
total_file_size_label.setEnabled(root_childs);
|
||||
skip_button.setEnabled(root_childs);
|
||||
skip_rest_button.setEnabled(root_childs);
|
||||
upload_log_checkbox.setEnabled(root_childs);
|
||||
});
|
||||
});
|
||||
|
||||
} else {
|
||||
@ -539,66 +511,43 @@ public class FileGrabberDialog extends javax.swing.JDialog implements FileDropHa
|
||||
|
||||
if (filechooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION && filechooser.getSelectedFile().canRead()) {
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
swingInvoke(() -> {
|
||||
total_file_size_label.setText("[0 B]");
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
total_file_size_label.setText("[0 B]");
|
||||
_base_path = filechooser.getSelectedFile().getAbsolutePath();
|
||||
|
||||
_base_path = filechooser.getSelectedFile().getAbsolutePath();
|
||||
dir_name_textfield.setText(filechooser.getSelectedFile().getName() + "_" + genID(10));
|
||||
|
||||
dir_name_textfield.setText(filechooser.getSelectedFile().getName() + "_" + genID(10));
|
||||
dir_name_textfield.setEnabled(true);
|
||||
|
||||
dir_name_textfield.setEnabled(true);
|
||||
dir_name_label.setEnabled(true);
|
||||
});
|
||||
DefaultMutableTreeNode root = new DefaultMutableTreeNode(filechooser.getSelectedFile().getAbsolutePath());
|
||||
_genFileTree(filechooser.getSelectedFile().getAbsolutePath(), root, null);
|
||||
DefaultTreeModel tree_model = new DefaultTreeModel(sortTree(root));
|
||||
swingInvoke(() -> {
|
||||
file_tree.setModel(tree_model);
|
||||
});
|
||||
_genFileList();
|
||||
swingInvoke(() -> {
|
||||
add_files_button.setEnabled(true);
|
||||
|
||||
dir_name_label.setEnabled(true);
|
||||
}
|
||||
});
|
||||
add_folder_button.setEnabled(true);
|
||||
|
||||
DefaultMutableTreeNode root = new DefaultMutableTreeNode(filechooser.getSelectedFile().getAbsolutePath());
|
||||
add_folder_button.setText(LabelTranslatorSingleton.getInstance().translate("Add folder"));
|
||||
|
||||
_genFileTree(filechooser.getSelectedFile().getAbsolutePath(), root, null);
|
||||
boolean root_childs = ((TreeNode) tree_model.getRoot()).getChildCount() > 0;
|
||||
|
||||
DefaultTreeModel tree_model = new DefaultTreeModel(sortTree(root));
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
file_tree.setModel(tree_model);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
_genFileList();
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
add_files_button.setEnabled(true);
|
||||
|
||||
add_folder_button.setEnabled(true);
|
||||
|
||||
add_folder_button.setText(LabelTranslatorSingleton.getInstance().translate("Add folder"));
|
||||
|
||||
boolean root_childs = ((TreeNode) tree_model.getRoot()).getChildCount() > 0;
|
||||
|
||||
file_tree.setRootVisible(root_childs);
|
||||
file_tree.setEnabled(root_childs);
|
||||
warning_label.setEnabled(root_childs);
|
||||
dance_button.setEnabled(root_childs);
|
||||
total_file_size_label.setEnabled(root_childs);
|
||||
skip_button.setEnabled(root_childs);
|
||||
skip_rest_button.setEnabled(root_childs);
|
||||
upload_log_checkbox.setEnabled(root_childs);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
file_tree.setRootVisible(root_childs);
|
||||
file_tree.setEnabled(root_childs);
|
||||
warning_label.setEnabled(root_childs);
|
||||
dance_button.setEnabled(root_childs);
|
||||
total_file_size_label.setEnabled(root_childs);
|
||||
skip_button.setEnabled(root_childs);
|
||||
skip_rest_button.setEnabled(root_childs);
|
||||
upload_log_checkbox.setEnabled(root_childs);
|
||||
});
|
||||
});
|
||||
|
||||
} else {
|
||||
@ -664,98 +613,48 @@ public class FileGrabberDialog extends javax.swing.JDialog implements FileDropHa
|
||||
warning_label.setEnabled(false);
|
||||
file_tree.setEnabled(false);
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
MegaAPI ma = null;
|
||||
try {
|
||||
_quota_ok = false;
|
||||
ma = checkMegaAccountLoginAndShowMasterPassDialog(_main_panel, tthis, email);
|
||||
Long[] quota = ma.getQuota();
|
||||
if (isDisplayable()) {
|
||||
if (quota != null) {
|
||||
final Color used_space_color;
|
||||
if (quota[0] <= Math.round((double) quota[1] / 2)) {
|
||||
|
||||
MegaAPI ma = null;
|
||||
try {
|
||||
used_space_color = new Color(0, 170, 0);
|
||||
|
||||
_quota_ok = false;
|
||||
} else if (quota[0] < quota[1]) {
|
||||
|
||||
ma = checkMegaAccountLoginAndShowMasterPassDialog(_main_panel, tthis, email);
|
||||
|
||||
Long[] quota = ma.getQuota();
|
||||
|
||||
if (isDisplayable()) {
|
||||
if (quota != null) {
|
||||
|
||||
final Color used_space_color;
|
||||
|
||||
if (quota[0] <= Math.round((double) quota[1] / 2)) {
|
||||
|
||||
used_space_color = new Color(0, 170, 0);
|
||||
|
||||
} else if (quota[0] < quota[1]) {
|
||||
|
||||
used_space_color = new Color(230, 115, 0);
|
||||
|
||||
} else {
|
||||
|
||||
used_space_color = Color.red;
|
||||
}
|
||||
|
||||
final String quota_m = LabelTranslatorSingleton.getInstance().translate("Quota used: ") + formatBytes(quota[0]) + "/" + formatBytes(quota[1]);
|
||||
|
||||
_quota_ok = true;
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
boolean root_childs = ((TreeNode) file_tree.getModel().getRoot()).getChildCount() > 0;
|
||||
|
||||
used_space_label.setText(quota_m);
|
||||
|
||||
used_space_label.setForeground(used_space_color);
|
||||
|
||||
for (JComponent c : new JComponent[]{used_space_label, add_files_button, add_folder_button, account_combobox, account_label, upload_log_checkbox}) {
|
||||
|
||||
c.setEnabled(true);
|
||||
}
|
||||
|
||||
for (JComponent c : new JComponent[]{dir_name_textfield, dir_name_label, warning_label, dance_button, file_tree, total_file_size_label, skip_button, skip_rest_button}) {
|
||||
|
||||
c.setEnabled(root_childs);
|
||||
}
|
||||
}
|
||||
});
|
||||
used_space_color = new Color(230, 115, 0);
|
||||
|
||||
} else {
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
account_combobox.setEnabled(true);
|
||||
account_label.setEnabled(true);
|
||||
account_combobox.setSelectedIndex(-1);
|
||||
used_space_label.setForeground(Color.red);
|
||||
used_space_label.setText(LabelTranslatorSingleton.getInstance().translate("ERROR checking account quota!"));
|
||||
used_space_label.setEnabled(true);
|
||||
_last_selected_index = account_combobox.getSelectedIndex();
|
||||
dance_button.setEnabled(false);
|
||||
total_file_size_label.setEnabled(false);
|
||||
skip_button.setEnabled(false);
|
||||
skip_rest_button.setEnabled(false);
|
||||
warning_label.setEnabled(false);
|
||||
file_tree.setEnabled(false);
|
||||
add_files_button.setEnabled(false);
|
||||
add_folder_button.setEnabled(false);
|
||||
upload_log_checkbox.setEnabled(false);
|
||||
dir_name_textfield.setEnabled(false);
|
||||
dir_name_label.setEnabled(false);
|
||||
}
|
||||
});
|
||||
|
||||
used_space_color = Color.red;
|
||||
}
|
||||
}
|
||||
final String quota_m = LabelTranslatorSingleton.getInstance().translate("Quota used: ") + formatBytes(quota[0]) + "/" + formatBytes(quota[1]);
|
||||
_quota_ok = true;
|
||||
swingInvoke(() -> {
|
||||
boolean root_childs = ((TreeNode) file_tree.getModel().getRoot()).getChildCount() > 0;
|
||||
|
||||
} catch (Exception ex) {
|
||||
used_space_label.setText(quota_m);
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
used_space_label.setForeground(used_space_color);
|
||||
|
||||
for (JComponent c : new JComponent[]{used_space_label, add_files_button, add_folder_button, account_combobox, account_label, upload_log_checkbox}) {
|
||||
|
||||
c.setEnabled(true);
|
||||
}
|
||||
|
||||
for (JComponent c : new JComponent[]{dir_name_textfield, dir_name_label, warning_label, dance_button, file_tree, total_file_size_label, skip_button, skip_rest_button}) {
|
||||
|
||||
c.setEnabled(root_childs);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
swingInvoke(() -> {
|
||||
account_combobox.setEnabled(true);
|
||||
account_label.setEnabled(true);
|
||||
account_combobox.setSelectedIndex(-1);
|
||||
@ -774,11 +673,30 @@ public class FileGrabberDialog extends javax.swing.JDialog implements FileDropHa
|
||||
upload_log_checkbox.setEnabled(false);
|
||||
dir_name_textfield.setEnabled(false);
|
||||
dir_name_label.setEnabled(false);
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
swingInvoke(() -> {
|
||||
account_combobox.setEnabled(true);
|
||||
account_label.setEnabled(true);
|
||||
account_combobox.setSelectedIndex(-1);
|
||||
used_space_label.setForeground(Color.red);
|
||||
used_space_label.setText(LabelTranslatorSingleton.getInstance().translate("ERROR checking account quota!"));
|
||||
used_space_label.setEnabled(true);
|
||||
_last_selected_index = account_combobox.getSelectedIndex();
|
||||
dance_button.setEnabled(false);
|
||||
total_file_size_label.setEnabled(false);
|
||||
skip_button.setEnabled(false);
|
||||
skip_rest_button.setEnabled(false);
|
||||
warning_label.setEnabled(false);
|
||||
file_tree.setEnabled(false);
|
||||
add_files_button.setEnabled(false);
|
||||
add_folder_button.setEnabled(false);
|
||||
upload_log_checkbox.setEnabled(false);
|
||||
dir_name_textfield.setEnabled(false);
|
||||
dir_name_label.setEnabled(false);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@ -866,12 +784,7 @@ public class FileGrabberDialog extends javax.swing.JDialog implements FileDropHa
|
||||
|
||||
_total_space = 0L;
|
||||
|
||||
DefaultTreeModel tree_model = (DefaultTreeModel) swingInvokeAndWaitForReturn(new Callable() {
|
||||
@Override
|
||||
public Object call() {
|
||||
return file_tree.getModel();
|
||||
}
|
||||
});
|
||||
DefaultTreeModel tree_model = (DefaultTreeModel) swingInvokeAndWaitForReturn((Callable) file_tree::getModel);
|
||||
|
||||
DefaultMutableTreeNode root = (DefaultMutableTreeNode) tree_model.getRoot();
|
||||
|
||||
@ -905,11 +818,8 @@ public class FileGrabberDialog extends javax.swing.JDialog implements FileDropHa
|
||||
}
|
||||
}
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
total_file_size_label.setText("[" + formatBytes(_total_space) + "]");
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
total_file_size_label.setText("[" + formatBytes(_total_space) + "]");
|
||||
});
|
||||
|
||||
}
|
||||
@ -938,82 +848,61 @@ public class FileGrabberDialog extends javax.swing.JDialog implements FileDropHa
|
||||
@Override
|
||||
public void file_drop_notify(List<File> files) {
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
add_files_button.setEnabled(false);
|
||||
add_folder_button.setEnabled(false);
|
||||
warning_label.setEnabled(false);
|
||||
skip_button.setEnabled(false);
|
||||
skip_rest_button.setEnabled(false);
|
||||
dance_button.setEnabled(false);
|
||||
dir_name_textfield.setEnabled(false);
|
||||
dir_name_label.setEnabled(false);
|
||||
upload_log_checkbox.setEnabled(false);
|
||||
total_file_size_label.setText("[0 B]");
|
||||
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
add_files_button.setEnabled(false);
|
||||
add_folder_button.setEnabled(false);
|
||||
warning_label.setEnabled(false);
|
||||
skip_button.setEnabled(false);
|
||||
skip_rest_button.setEnabled(false);
|
||||
dance_button.setEnabled(false);
|
||||
dir_name_textfield.setEnabled(false);
|
||||
dir_name_label.setEnabled(false);
|
||||
upload_log_checkbox.setEnabled(false);
|
||||
total_file_size_label.setText("[0 B]");
|
||||
});
|
||||
|
||||
_base_path = (files.size() == 1 && files.get(0).isDirectory()) ? files.get(0).getAbsolutePath() : files.get(0).getParentFile().getAbsolutePath();
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
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.setText(((files.size() == 1 && files.get(0).isDirectory()) ? files.get(0).getName() : files.get(0).getParentFile().getName()) + "_" + genID(10));
|
||||
dir_name_textfield.setEnabled(true);
|
||||
|
||||
dir_name_textfield.setEnabled(true);
|
||||
|
||||
dir_name_label.setEnabled(true);
|
||||
|
||||
}
|
||||
dir_name_label.setEnabled(true);
|
||||
});
|
||||
|
||||
DefaultMutableTreeNode root = new DefaultMutableTreeNode(_base_path);
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
dance_button.setText(LabelTranslatorSingleton.getInstance().translate("Loading files, please wait..."));
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
dance_button.setText(LabelTranslatorSingleton.getInstance().translate("Loading files, please wait..."));
|
||||
});
|
||||
|
||||
_genFileTree(_base_path, root, files.toArray(new File[files.size()]));
|
||||
|
||||
DefaultTreeModel tree_model = new DefaultTreeModel(sortTree(root));
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
file_tree.setModel(tree_model);
|
||||
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
file_tree.setModel(tree_model);
|
||||
});
|
||||
|
||||
_genFileList();
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
dance_button.setText(LabelTranslatorSingleton.getInstance().translate("Let's dance baby"));
|
||||
|
||||
if (_last_selected_index != -1 && _quota_ok) {
|
||||
add_files_button.setEnabled(true);
|
||||
add_folder_button.setEnabled(true);
|
||||
file_tree.setRootVisible(true);
|
||||
file_tree.setEnabled(true);
|
||||
warning_label.setEnabled(true);
|
||||
dance_button.setEnabled(true);
|
||||
total_file_size_label.setEnabled(true);
|
||||
skip_button.setEnabled(true);
|
||||
skip_rest_button.setEnabled(true);
|
||||
dir_name_textfield.setEnabled(true);
|
||||
dir_name_label.setEnabled(true);
|
||||
upload_log_checkbox.setEnabled(true);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
dance_button.setText(LabelTranslatorSingleton.getInstance().translate("Let's dance baby"));
|
||||
|
||||
if (_last_selected_index != -1 && _quota_ok) {
|
||||
add_files_button.setEnabled(true);
|
||||
add_folder_button.setEnabled(true);
|
||||
file_tree.setRootVisible(true);
|
||||
file_tree.setEnabled(true);
|
||||
warning_label.setEnabled(true);
|
||||
dance_button.setEnabled(true);
|
||||
total_file_size_label.setEnabled(true);
|
||||
skip_button.setEnabled(true);
|
||||
skip_rest_button.setEnabled(true);
|
||||
dir_name_textfield.setEnabled(true);
|
||||
dir_name_label.setEnabled(true);
|
||||
upload_log_checkbox.setEnabled(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -82,13 +82,8 @@ public class FileMergerDialog extends javax.swing.JDialog {
|
||||
|
||||
_progress += rfile.length();
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
jProgressBar2.setValue((int) Math.floor((MAX_VALUE / (double) _file_size) * _progress));
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
jProgressBar2.setValue((int) Math.floor((MAX_VALUE / (double) _file_size) * _progress));
|
||||
});
|
||||
}
|
||||
}
|
||||
@ -358,85 +353,67 @@ public class FileMergerDialog extends javax.swing.JDialog {
|
||||
|
||||
Dialog tthis = this;
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
try {
|
||||
if (_mergeFile()) {
|
||||
if (delete_parts_checkbox.isSelected()) {
|
||||
_deleteParts();
|
||||
}
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("File successfully merged!"));
|
||||
|
||||
if (Desktop.isDesktopSupported()) {
|
||||
try {
|
||||
Desktop.getDesktop().open(new File(file_name_label.getText()).getParentFile());
|
||||
} catch (IOException ex) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
|
||||
setVisible(false);
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
_file_parts.clear();
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
file_name_label.setText("");
|
||||
|
||||
file_size_label.setText("");
|
||||
|
||||
output_folder_label.setText("");
|
||||
|
||||
_output_dir = null;
|
||||
|
||||
_file_name = null;
|
||||
|
||||
_file_size = 0L;
|
||||
|
||||
_progress = 0L;
|
||||
|
||||
jProgressBar2.setMinimum(0);
|
||||
jProgressBar2.setMaximum(MAX_VALUE);
|
||||
jProgressBar2.setStringPainted(true);
|
||||
jProgressBar2.setValue(0);
|
||||
jProgressBar2.setVisible(false);
|
||||
|
||||
merge_button.setText(LabelTranslatorSingleton.getInstance().translate("MERGE FILE"));
|
||||
|
||||
file_button.setEnabled(true);
|
||||
|
||||
output_button.setEnabled(true);
|
||||
|
||||
merge_button.setEnabled(true);
|
||||
|
||||
delete_parts_checkbox.setEnabled(true);
|
||||
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
|
||||
pack();
|
||||
|
||||
}
|
||||
});
|
||||
THREAD_POOL.execute(() -> {
|
||||
try {
|
||||
if (_mergeFile()) {
|
||||
if (delete_parts_checkbox.isSelected()) {
|
||||
_deleteParts();
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(FileMergerDialog.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("File successfully merged!"));
|
||||
|
||||
if (Desktop.isDesktopSupported()) {
|
||||
try {
|
||||
Desktop.getDesktop().open(new File(file_name_label.getText()).getParentFile());
|
||||
} catch (IOException ex) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
|
||||
setVisible(false);
|
||||
});
|
||||
} else {
|
||||
_file_parts.clear();
|
||||
swingInvoke(() -> {
|
||||
file_name_label.setText("");
|
||||
|
||||
file_size_label.setText("");
|
||||
|
||||
output_folder_label.setText("");
|
||||
|
||||
_output_dir = null;
|
||||
|
||||
_file_name = null;
|
||||
|
||||
_file_size = 0L;
|
||||
|
||||
_progress = 0L;
|
||||
|
||||
jProgressBar2.setMinimum(0);
|
||||
jProgressBar2.setMaximum(MAX_VALUE);
|
||||
jProgressBar2.setStringPainted(true);
|
||||
jProgressBar2.setValue(0);
|
||||
jProgressBar2.setVisible(false);
|
||||
|
||||
merge_button.setText(LabelTranslatorSingleton.getInstance().translate("MERGE FILE"));
|
||||
|
||||
file_button.setEnabled(true);
|
||||
|
||||
output_button.setEnabled(true);
|
||||
|
||||
merge_button.setEnabled(true);
|
||||
|
||||
delete_parts_checkbox.setEnabled(true);
|
||||
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
|
||||
pack();
|
||||
});
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(FileMergerDialog.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -113,13 +113,8 @@ public class FileSplitterDialog extends javax.swing.JDialog {
|
||||
|
||||
_progress += byteSize;
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
jProgressBar2.setValue((int) Math.floor((MAX_VALUE / (double) _file.length()) * _progress));
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
jProgressBar2.setValue((int) Math.floor((MAX_VALUE / (double) _file.length()) * _progress));
|
||||
});
|
||||
|
||||
}
|
||||
@ -358,80 +353,61 @@ public class FileSplitterDialog extends javax.swing.JDialog {
|
||||
|
||||
Dialog tthis = this;
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
try {
|
||||
if (_splitFile()) {
|
||||
swingInvoke(() -> {
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("File successfully splitted!"));
|
||||
|
||||
try {
|
||||
if (_splitFile()) {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("File successfully splitted!"));
|
||||
|
||||
if (Desktop.isDesktopSupported()) {
|
||||
try {
|
||||
Desktop.getDesktop().open(_output_dir);
|
||||
} catch (IOException ex) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
|
||||
setVisible(false);
|
||||
if (Desktop.isDesktopSupported()) {
|
||||
try {
|
||||
Desktop.getDesktop().open(_output_dir);
|
||||
} catch (IOException ex) {
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
} else {
|
||||
_file = null;
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
|
||||
_output_dir = null;
|
||||
setVisible(false);
|
||||
});
|
||||
} else {
|
||||
_file = null;
|
||||
_output_dir = null;
|
||||
swingInvoke(() -> {
|
||||
file_name_label.setText("");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
output_folder_label.setText("");
|
||||
|
||||
file_name_label.setText("");
|
||||
split_size_text.setText("");
|
||||
|
||||
output_folder_label.setText("");
|
||||
file_size_label.setText("");
|
||||
|
||||
split_size_text.setText("");
|
||||
_progress = 0L;
|
||||
|
||||
file_size_label.setText("");
|
||||
jProgressBar2.setMinimum(0);
|
||||
jProgressBar2.setMaximum(MAX_VALUE);
|
||||
jProgressBar2.setStringPainted(true);
|
||||
jProgressBar2.setValue(0);
|
||||
jProgressBar2.setVisible(false);
|
||||
|
||||
_progress = 0L;
|
||||
split_button.setText(LabelTranslatorSingleton.getInstance().translate("SPLIT FILE"));
|
||||
|
||||
jProgressBar2.setMinimum(0);
|
||||
jProgressBar2.setMaximum(MAX_VALUE);
|
||||
jProgressBar2.setStringPainted(true);
|
||||
jProgressBar2.setValue(0);
|
||||
jProgressBar2.setVisible(false);
|
||||
file_button.setEnabled(true);
|
||||
|
||||
split_button.setText(LabelTranslatorSingleton.getInstance().translate("SPLIT FILE"));
|
||||
output_button.setEnabled(true);
|
||||
|
||||
file_button.setEnabled(true);
|
||||
split_button.setEnabled(true);
|
||||
|
||||
output_button.setEnabled(true);
|
||||
split_size_text.setEnabled(true);
|
||||
|
||||
split_button.setEnabled(true);
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
|
||||
split_size_text.setEnabled(true);
|
||||
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
|
||||
pack();
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(FileSplitterDialog.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
pack();
|
||||
});
|
||||
}
|
||||
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(FileSplitterDialog.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -75,26 +75,21 @@ public class FolderLinkDialog extends javax.swing.JDialog {
|
||||
|
||||
final Dialog tthis = this;
|
||||
|
||||
THREAD_POOL.execute(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
_loadMegaDirTree();
|
||||
|
||||
_loadMegaDirTree();
|
||||
if (!_mega_error) {
|
||||
|
||||
if (!_mega_error) {
|
||||
_genDownloadLiks();
|
||||
|
||||
_genDownloadLiks();
|
||||
dance_button.setText(LabelTranslatorSingleton.getInstance().translate("Let's dance, baby"));
|
||||
|
||||
dance_button.setText(LabelTranslatorSingleton.getInstance().translate("Let's dance, baby"));
|
||||
pack();
|
||||
|
||||
pack();
|
||||
} else {
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("MEGA LINK ERROR!"), "Error", JOptionPane.ERROR_MESSAGE);
|
||||
|
||||
} else {
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("MEGA LINK ERROR!"), "Error", JOptionPane.ERROR_MESSAGE);
|
||||
|
||||
setVisible(false);
|
||||
}
|
||||
setVisible(false);
|
||||
}
|
||||
});
|
||||
|
||||
@ -302,47 +297,28 @@ public class FolderLinkDialog extends javax.swing.JDialog {
|
||||
|
||||
dance_button.setEnabled(false);
|
||||
|
||||
THREAD_POOL.execute(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
_loadMegaDirTree();
|
||||
_genDownloadLiks();
|
||||
swingInvoke(() -> {
|
||||
restore_button.setVisible(false);
|
||||
restore_button.setText(LabelTranslatorSingleton.getInstance().translate("Restore folder data"));
|
||||
boolean root_childs = ((TreeNode) file_tree.getModel().getRoot()).getChildCount() > 0;
|
||||
|
||||
_loadMegaDirTree();
|
||||
for (JComponent c : new JComponent[]{restore_button, dance_button, skip_button, skip_rest_button, file_tree}) {
|
||||
|
||||
_genDownloadLiks();
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
restore_button.setVisible(false);
|
||||
restore_button.setText(LabelTranslatorSingleton.getInstance().translate("Restore folder data"));
|
||||
boolean root_childs = ((TreeNode) file_tree.getModel().getRoot()).getChildCount() > 0;
|
||||
|
||||
for (JComponent c : new JComponent[]{restore_button, dance_button, skip_button, skip_rest_button, file_tree}) {
|
||||
|
||||
c.setEnabled(root_childs);
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
);
|
||||
c.setEnabled(root_childs);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
}//GEN-LAST:event_restore_buttonActionPerformed
|
||||
|
||||
private void _loadMegaDirTree() {
|
||||
|
||||
try {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
|
||||
});
|
||||
|
||||
HashMap<String, Object> folder_nodes;
|
||||
@ -415,18 +391,12 @@ public class FolderLinkDialog extends javax.swing.JDialog {
|
||||
|
||||
final MegaMutableTreeNode roott = root;
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
ftree.setModel(new DefaultTreeModel(sortTree(roott)));
|
||||
|
||||
ftree.setModel(new DefaultTreeModel(sortTree(roott)));
|
||||
ftree.setRootVisible(roott != null ? roott.getChildCount() > 0 : false);
|
||||
|
||||
ftree.setRootVisible(roott != null ? roott.getChildCount() > 0 : false);
|
||||
|
||||
ftree.setEnabled(true);
|
||||
|
||||
}
|
||||
ftree.setEnabled(true);
|
||||
});
|
||||
|
||||
} catch (Exception ex) {
|
||||
@ -436,80 +406,70 @@ public class FolderLinkDialog extends javax.swing.JDialog {
|
||||
_mega_error = true;
|
||||
}
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
private void _genDownloadLiks() {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
|
||||
|
||||
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
|
||||
String folder_id = findFirstRegex("#F!([^!]+)", _link, 1);
|
||||
|
||||
String folder_id = findFirstRegex("#F!([^!]+)", _link, 1);
|
||||
_download_links.clear();
|
||||
|
||||
_download_links.clear();
|
||||
MegaMutableTreeNode root = (MegaMutableTreeNode) file_tree.getModel().getRoot();
|
||||
|
||||
MegaMutableTreeNode root = (MegaMutableTreeNode) file_tree.getModel().getRoot();
|
||||
Enumeration files_tree = root.depthFirstEnumeration();
|
||||
|
||||
Enumeration files_tree = root.depthFirstEnumeration();
|
||||
_total_space = 0L;
|
||||
|
||||
_total_space = 0L;
|
||||
while (files_tree.hasMoreElements()) {
|
||||
|
||||
while (files_tree.hasMoreElements()) {
|
||||
MegaMutableTreeNode node = (MegaMutableTreeNode) files_tree.nextElement();
|
||||
|
||||
MegaMutableTreeNode node = (MegaMutableTreeNode) files_tree.nextElement();
|
||||
if (node.isLeaf() && node != root && ((HashMap<String, Object>) node.getUserObject()).get("size") != null) {
|
||||
|
||||
if (node.isLeaf() && node != root && ((HashMap<String, Object>) node.getUserObject()).get("size") != null) {
|
||||
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 += "/" + ((Map<String, Object>) p).get("name");
|
||||
}
|
||||
|
||||
path = path.replaceAll("^/+", "").trim();
|
||||
|
||||
String url = "https://mega.nz/#N!" + ((Map<String, Object>) node.getUserObject()).get("h") + "!" + ((Map<String, Object>) node.getUserObject()).get("key") + "###n=" + folder_id;
|
||||
|
||||
HashMap<String, Object> download_link = new HashMap<>();
|
||||
|
||||
download_link.put("url", url);
|
||||
|
||||
download_link.put("filename", cleanFilePath(path));
|
||||
|
||||
download_link.put("filekey", ((Map<String, Object>) node.getUserObject()).get("key"));
|
||||
|
||||
download_link.put("filesize", ((Map<String, Object>) node.getUserObject()).get("size"));
|
||||
|
||||
_total_space += (long) download_link.get("filesize");
|
||||
|
||||
_download_links.add(download_link);
|
||||
path += "/" + ((Map<String, Object>) p).get("name");
|
||||
}
|
||||
|
||||
path = path.replaceAll("^/+", "").trim();
|
||||
|
||||
String url = "https://mega.nz/#N!" + ((Map<String, Object>) node.getUserObject()).get("h") + "!" + ((Map<String, Object>) node.getUserObject()).get("key") + "###n=" + folder_id;
|
||||
|
||||
HashMap<String, Object> download_link = new HashMap<>();
|
||||
|
||||
download_link.put("url", url);
|
||||
|
||||
download_link.put("filename", cleanFilePath(path));
|
||||
|
||||
download_link.put("filekey", ((Map<String, Object>) node.getUserObject()).get("key"));
|
||||
|
||||
download_link.put("filesize", ((Map<String, Object>) node.getUserObject()).get("size"));
|
||||
|
||||
_total_space += (long) download_link.get("filesize");
|
||||
|
||||
_download_links.add(download_link);
|
||||
}
|
||||
|
||||
total_space_label.setText("[" + formatBytes(_total_space) + "]");
|
||||
|
||||
for (JComponent c : new JComponent[]{dance_button, warning_label, skip_button, skip_rest_button, total_space_label}) {
|
||||
|
||||
c.setEnabled(root.getChildCount() > 0);
|
||||
}
|
||||
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
|
||||
}
|
||||
|
||||
total_space_label.setText("[" + formatBytes(_total_space) + "]");
|
||||
|
||||
for (JComponent c : new JComponent[]{dance_button, warning_label, skip_button, skip_rest_button, total_space_label}) {
|
||||
|
||||
c.setEnabled(root.getChildCount() > 0);
|
||||
}
|
||||
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -204,48 +204,36 @@ public class GetMasterPasswordDialog extends javax.swing.JDialog {
|
||||
|
||||
final Dialog tthis = this;
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
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(() -> {
|
||||
if (!pass_hash.equals(_current_pass_hash)) {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
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);
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("BAD PASSWORD!"), "Error", JOptionPane.ERROR_MESSAGE);
|
||||
|
||||
String pass_hash = Bin2BASE64(HashBin("SHA-1", pass));
|
||||
status_label.setText("");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!pass_hash.equals(_current_pass_hash)) {
|
||||
pack();
|
||||
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("BAD PASSWORD!"), "Error", JOptionPane.ERROR_MESSAGE);
|
||||
current_pass_textfield.setText("");
|
||||
|
||||
status_label.setText("");
|
||||
current_pass_textfield.grabFocus();
|
||||
|
||||
pack();
|
||||
} else {
|
||||
|
||||
current_pass_textfield.setText("");
|
||||
_pass = pass;
|
||||
|
||||
current_pass_textfield.grabFocus();
|
||||
_current_pass_hash = pass_hash;
|
||||
|
||||
} else {
|
||||
|
||||
_pass = pass;
|
||||
|
||||
_current_pass_hash = pass_hash;
|
||||
|
||||
_pass_ok = true;
|
||||
|
||||
tthis.setVisible(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
} catch (HeadlessException | NoSuchAlgorithmException | InvalidKeySpecException ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
_pass_ok = true;
|
||||
|
||||
tthis.setVisible(false);
|
||||
}
|
||||
});
|
||||
} catch (HeadlessException | NoSuchAlgorithmException | InvalidKeySpecException ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -79,28 +79,19 @@ public class LinkGrabberDialog extends javax.swing.JDialog implements ClipboardC
|
||||
|
||||
if (_main_panel.isUse_mega_account_down() && _main_panel.getMega_accounts().size() > 0) {
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
swingInvoke(() -> {
|
||||
String mega_default_down = _main_panel.getMega_account_down();
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
use_mega_account_down_combobox.addItem(mega_default_down);
|
||||
|
||||
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);
|
||||
}
|
||||
_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);
|
||||
});
|
||||
});
|
||||
|
||||
} else {
|
||||
@ -312,78 +303,56 @@ public class LinkGrabberDialog extends javax.swing.JDialog implements ClipboardC
|
||||
|
||||
final File file = filechooser.getSelectedFile();
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
try (final InputStream is = new BufferedInputStream(new FileInputStream(file)); final ByteArrayOutputStream out = new ByteArrayOutputStream()) {
|
||||
byte[] buffer = new byte[MainPanel.DEFAULT_BYTE_BUFFER_SIZE];
|
||||
int reads;
|
||||
while ((reads = is.read(buffer)) != -1) {
|
||||
|
||||
try (InputStream is = new BufferedInputStream(new FileInputStream(file)); ByteArrayOutputStream out = new ByteArrayOutputStream()) {
|
||||
|
||||
byte[] buffer = new byte[MainPanel.DEFAULT_BYTE_BUFFER_SIZE];
|
||||
|
||||
int reads;
|
||||
|
||||
while ((reads = is.read(buffer)) != -1) {
|
||||
|
||||
out.write(buffer, 0, reads);
|
||||
}
|
||||
|
||||
String dlc = new String(out.toByteArray(), "UTF-8");
|
||||
|
||||
Set<String> links = CryptTools.decryptDLC(dlc, ((MainPanelView) getParent()).getMain_panel());
|
||||
|
||||
for (Iterator<String> i = links.iterator(); i.hasNext();) {
|
||||
|
||||
String link = i.next();
|
||||
|
||||
if (findFirstRegex("(?:https?|mega)://[^/]*/(#.*?)?!.+![^\r\n]+", link, 0) == null) {
|
||||
|
||||
i.remove();
|
||||
}
|
||||
}
|
||||
|
||||
if (!links.isEmpty()) {
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
links_textarea.setText("");
|
||||
|
||||
for (Iterator<String> i = links.iterator(); i.hasNext();) {
|
||||
|
||||
links_textarea.append(i.next());
|
||||
|
||||
if (i.hasNext()) {
|
||||
|
||||
links_textarea.append("\r\n");
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
} catch (FileNotFoundException ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
} catch (IOException ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
out.write(buffer, 0, reads);
|
||||
}
|
||||
String dlc = new String(out.toByteArray(), "UTF-8");
|
||||
Set<String> links = CryptTools.decryptDLC(dlc, ((MainPanelView) getParent()).getMain_panel());
|
||||
for (Iterator<String> i = links.iterator(); i.hasNext();) {
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
dlc_button.setText(LabelTranslatorSingleton.getInstance().translate("Load DLC container"));
|
||||
String link = i.next();
|
||||
|
||||
dlc_button.setEnabled(true);
|
||||
if (findFirstRegex("(?:https?|mega)://[^/]*/(#.*?)?!.+![^\r\n]+", link, 0) == null) {
|
||||
|
||||
links_textarea.setEnabled(true);
|
||||
|
||||
dance_button.setEnabled(true);
|
||||
|
||||
pack();
|
||||
i.remove();
|
||||
}
|
||||
});
|
||||
}
|
||||
if (!links.isEmpty()) {
|
||||
swingInvoke(() -> {
|
||||
links_textarea.setText("");
|
||||
|
||||
for (Iterator<String> i = links.iterator(); i.hasNext();) {
|
||||
|
||||
links_textarea.append(i.next());
|
||||
|
||||
if (i.hasNext()) {
|
||||
|
||||
links_textarea.append("\r\n");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
} catch (FileNotFoundException ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
} catch (IOException ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
dlc_button.setText(LabelTranslatorSingleton.getInstance().translate("Load DLC container"));
|
||||
|
||||
dlc_button.setEnabled(true);
|
||||
|
||||
links_textarea.setEnabled(true);
|
||||
|
||||
dance_button.setEnabled(true);
|
||||
|
||||
pack();
|
||||
});
|
||||
});
|
||||
|
||||
} else {
|
||||
@ -418,48 +387,32 @@ public class LinkGrabberDialog extends javax.swing.JDialog implements ClipboardC
|
||||
|
||||
final LinkGrabberDialog tthis = this;
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
boolean use_account = true;
|
||||
|
||||
try {
|
||||
|
||||
if (checkMegaAccountLoginAndShowMasterPassDialog(_main_panel, tthis, _selected_item) == null) {
|
||||
use_account = false;
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
THREAD_POOL.execute(() -> {
|
||||
boolean use_account = true;
|
||||
try {
|
||||
|
||||
if (checkMegaAccountLoginAndShowMasterPassDialog(_main_panel, tthis, _selected_item) == null) {
|
||||
use_account = false;
|
||||
}
|
||||
|
||||
if (!use_account) {
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
use_mega_account_down_combobox.setSelectedIndex(_main_panel.getMega_accounts().size());
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getUse_mega_account_down_combobox().setEnabled(true);
|
||||
|
||||
getDance_button().setText(LabelTranslatorSingleton.getInstance().translate("Let's dance, baby"));
|
||||
|
||||
getDance_button().setEnabled(true);
|
||||
|
||||
pack();
|
||||
|
||||
}
|
||||
});
|
||||
} catch (Exception ex) {
|
||||
|
||||
use_account = false;
|
||||
}
|
||||
if (!use_account) {
|
||||
swingInvoke(() -> {
|
||||
use_mega_account_down_combobox.setSelectedIndex(_main_panel.getMega_accounts().size());
|
||||
});
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getUse_mega_account_down_combobox().setEnabled(true);
|
||||
|
||||
getDance_button().setText(LabelTranslatorSingleton.getInstance().translate("Let's dance, baby"));
|
||||
|
||||
getDance_button().setEnabled(true);
|
||||
|
||||
pack();
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
@ -482,14 +435,10 @@ public class LinkGrabberDialog extends javax.swing.JDialog implements ClipboardC
|
||||
@Override
|
||||
public void notifyClipboardChange() {
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
String current_text = links_textarea.getText();
|
||||
|
||||
String current_text = links_textarea.getText();
|
||||
|
||||
links_textarea.append((current_text.length() > 0 ? "\n\n" : "") + extractMegaLinksFromString(extractStringFromClipboardContents(_clipboardspy.getContents())));
|
||||
}
|
||||
links_textarea.append((current_text.length() > 0 ? "\n\n" : "") + extractMegaLinksFromString(extractStringFromClipboardContents(_clipboardspy.getContents())));
|
||||
});
|
||||
}
|
||||
private static final Logger LOG = Logger.getLogger(LinkGrabberDialog.class.getName());
|
||||
|
@ -53,7 +53,7 @@ import javax.swing.UIManager;
|
||||
*/
|
||||
public final class MainPanel {
|
||||
|
||||
public static final String VERSION = "6.57";
|
||||
public static final String VERSION = "6.58";
|
||||
public static final int THROTTLE_SLICE_SIZE = 16 * 1024;
|
||||
public static final int DEFAULT_BYTE_BUFFER_SIZE = 16 * 1024;
|
||||
public static final int STREAMER_PORT = 1337;
|
||||
@ -106,11 +106,8 @@ public final class MainPanel {
|
||||
|
||||
final MainPanel main_panel = new MainPanel();
|
||||
|
||||
invokeLater(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
main_panel.getView().setVisible(true);
|
||||
}
|
||||
invokeLater(() -> {
|
||||
main_panel.getView().setVisible(true);
|
||||
});
|
||||
}
|
||||
|
||||
@ -188,7 +185,6 @@ public final class MainPanel {
|
||||
private boolean _megacrypter_reverse;
|
||||
private float _zoom_factor;
|
||||
private volatile boolean _exit;
|
||||
private volatile boolean _forcing_gc;
|
||||
|
||||
public MainPanel() {
|
||||
|
||||
@ -263,43 +259,38 @@ public final class MainPanel {
|
||||
|
||||
THREAD_POOL.execute((_clipboardspy = new ClipboardSpy()));
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
Object timer_lock = new Object();
|
||||
|
||||
Object timer_lock = new Object();
|
||||
Timer timer = new Timer();
|
||||
|
||||
Timer timer = new Timer();
|
||||
|
||||
TimerTask task = new TimerTask() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
synchronized (timer_lock) {
|
||||
|
||||
timer_lock.notify();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
timer.schedule(task, 0, 5000);
|
||||
|
||||
while (true) {
|
||||
TimerTask task = new TimerTask() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
synchronized (timer_lock) {
|
||||
|
||||
try {
|
||||
|
||||
if (_download_manager.no_transferences() && _upload_manager.no_transferences() && (!_download_manager.getTransference_finished_queue().isEmpty() || !_upload_manager.getTransference_finished_queue().isEmpty()) && getView().getAuto_close_menu().isSelected()) {
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
timer_lock.wait();
|
||||
} catch (InterruptedException ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
timer_lock.notify();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
timer.schedule(task, 0, 5000);
|
||||
|
||||
while (true) {
|
||||
|
||||
synchronized (timer_lock) {
|
||||
|
||||
try {
|
||||
|
||||
if (_download_manager.no_transferences() && _upload_manager.no_transferences() && (!_download_manager.getTransference_finished_queue().isEmpty() || !_upload_manager.getTransference_finished_queue().isEmpty()) && getView().getAuto_close_menu().isSelected()) {
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
timer_lock.wait();
|
||||
} catch (InterruptedException ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -314,16 +305,12 @@ public final class MainPanel {
|
||||
|
||||
check_old_version();
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
_new_version = checkNewVersion(AboutDialog.MEGABASTERD_URL);
|
||||
|
||||
_new_version = checkNewVersion(AboutDialog.MEGABASTERD_URL);
|
||||
if (_new_version != null) {
|
||||
|
||||
if (_new_version != null) {
|
||||
|
||||
JOptionPane.showMessageDialog(getView(), LabelTranslatorSingleton.getInstance().translate("MegaBasterd NEW VERSION is available! -> ") + _new_version);
|
||||
}
|
||||
JOptionPane.showMessageDialog(getView(), LabelTranslatorSingleton.getInstance().translate("MegaBasterd NEW VERSION is available! -> ") + _new_version);
|
||||
}
|
||||
});
|
||||
|
||||
@ -336,12 +323,8 @@ public final class MainPanel {
|
||||
} else {
|
||||
_mega_proxy_server = null;
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getView().updateMCReverseStatus("MC reverse mode: OFF");
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().updateMCReverseStatus("MC reverse mode: OFF");
|
||||
});
|
||||
|
||||
}
|
||||
@ -350,64 +333,35 @@ public final class MainPanel {
|
||||
|
||||
MainPanel tthis = this;
|
||||
|
||||
THREAD_POOL.execute(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
_proxy_manager = new SmartMegaProxyManager(null, tthis);
|
||||
}
|
||||
THREAD_POOL.execute(() -> {
|
||||
_proxy_manager = new SmartMegaProxyManager(null, tthis);
|
||||
});
|
||||
|
||||
} else {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getView().updateSmartProxyStatus("SmartProxy: OFF");
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().updateSmartProxyStatus("SmartProxy: OFF");
|
||||
});
|
||||
}
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getView().getGlobal_speed_down_label().setForeground(_limit_download_speed ? new Color(255, 0, 0) : new Color(0, 128, 255));
|
||||
swingInvoke(() -> {
|
||||
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));
|
||||
}
|
||||
getView().getGlobal_speed_up_label().setForeground(_limit_upload_speed ? new Color(255, 0, 0) : new Color(0, 128, 255));
|
||||
});
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
Runtime instance = Runtime.getRuntime();
|
||||
|
||||
_forcing_gc = false;
|
||||
|
||||
while (true) {
|
||||
|
||||
long used_memory = instance.totalMemory() - instance.freeMemory();
|
||||
|
||||
long max_memory = instance.maxMemory();
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
_view.getMemory_status().setText(MiscTools.formatBytes(used_memory) + " / " + MiscTools.formatBytes(max_memory));
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
try {
|
||||
Thread.sleep(2000);
|
||||
} catch (InterruptedException ex) {
|
||||
Logger.getLogger(MainPanelView.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
THREAD_POOL.execute(() -> {
|
||||
Runtime instance = Runtime.getRuntime();
|
||||
while (true) {
|
||||
long used_memory = instance.totalMemory() - instance.freeMemory();
|
||||
long max_memory = instance.maxMemory();
|
||||
swingInvoke(() -> {
|
||||
_view.getMemory_status().setText(MiscTools.formatBytes(used_memory) + " / " + MiscTools.formatBytes(max_memory));
|
||||
});
|
||||
try {
|
||||
Thread.sleep(2000);
|
||||
} catch (InterruptedException ex) {
|
||||
Logger.getLogger(MainPanelView.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
@ -1018,110 +972,73 @@ public final class MainPanel {
|
||||
|
||||
if (!_download_manager.getTransference_running_list().isEmpty() || !_upload_manager.getTransference_running_list().isEmpty()) {
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
boolean wait;
|
||||
|
||||
do {
|
||||
|
||||
wait = false;
|
||||
|
||||
if (!_download_manager.getTransference_running_list().isEmpty()) {
|
||||
|
||||
for (Transference trans : _download_manager.getTransference_running_list()) {
|
||||
|
||||
Download download = (Download) trans;
|
||||
|
||||
if (download.isPaused()) {
|
||||
download.pause();
|
||||
}
|
||||
|
||||
if (!download.getChunkworkers().isEmpty()) {
|
||||
|
||||
wait = true;
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
download.getView().printStatusNormal("Stopping download safely before exit MegaBasterd, please wait...");
|
||||
download.getView().getSlots_spinner().setEnabled(false);
|
||||
download.getView().getPause_button().setEnabled(false);
|
||||
download.getView().getCopy_link_button().setEnabled(false);
|
||||
download.getView().getOpen_folder_button().setEnabled(false);
|
||||
download.getView().getFile_size_label().setEnabled(false);
|
||||
download.getView().getFile_name_label().setEnabled(false);
|
||||
download.getView().getSpeed_label().setEnabled(false);
|
||||
download.getView().getSlots_label().setEnabled(false);
|
||||
download.getView().getProgress_pbar().setEnabled(false);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
THREAD_POOL.execute(() -> {
|
||||
boolean wait;
|
||||
do {
|
||||
wait = false;
|
||||
if (!_download_manager.getTransference_running_list().isEmpty()) {
|
||||
for (Transference trans : _download_manager.getTransference_running_list()) {
|
||||
Download download = (Download) trans;
|
||||
if (download.isPaused()) {
|
||||
download.pause();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (!_upload_manager.getTransference_running_list().isEmpty()) {
|
||||
|
||||
for (Transference trans : _upload_manager.getTransference_running_list()) {
|
||||
|
||||
Upload upload = (Upload) trans;
|
||||
|
||||
upload.getMac_generator().secureNotify();
|
||||
|
||||
if (upload.isPaused()) {
|
||||
upload.pause();
|
||||
}
|
||||
|
||||
if (!upload.getChunkworkers().isEmpty()) {
|
||||
|
||||
wait = true;
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
upload.getView().printStatusNormal("Stopping upload safely before exit MegaBasterd, please wait...");
|
||||
upload.getView().getSlots_spinner().setEnabled(false);
|
||||
upload.getView().getPause_button().setEnabled(false);
|
||||
upload.getView().getFolder_link_button().setEnabled(false);
|
||||
upload.getView().getFile_link_button().setEnabled(false);
|
||||
upload.getView().getFile_size_label().setEnabled(false);
|
||||
upload.getView().getFile_name_label().setEnabled(false);
|
||||
upload.getView().getSpeed_label().setEnabled(false);
|
||||
upload.getView().getSlots_label().setEnabled(false);
|
||||
upload.getView().getProgress_pbar().setEnabled(false);
|
||||
|
||||
}
|
||||
});
|
||||
} else {
|
||||
try {
|
||||
DBTools.updateUploadProgress(upload.getFile_name(), upload.getMa().getFull_email(), upload.getProgress(), upload.getTemp_mac_data() != null ? upload.getTemp_mac_data() : null);
|
||||
} catch (SQLException ex) {
|
||||
Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
if (!download.getChunkworkers().isEmpty()) {
|
||||
wait = true;
|
||||
swingInvoke(() -> {
|
||||
download.getView().printStatusNormal("Stopping download safely before exit MegaBasterd, please wait...");
|
||||
download.getView().getSlots_spinner().setEnabled(false);
|
||||
download.getView().getPause_button().setEnabled(false);
|
||||
download.getView().getCopy_link_button().setEnabled(false);
|
||||
download.getView().getOpen_folder_button().setEnabled(false);
|
||||
download.getView().getFile_size_label().setEnabled(false);
|
||||
download.getView().getFile_name_label().setEnabled(false);
|
||||
download.getView().getSpeed_label().setEnabled(false);
|
||||
download.getView().getSlots_label().setEnabled(false);
|
||||
download.getView().getProgress_pbar().setEnabled(false);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (wait) {
|
||||
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException ex) {
|
||||
Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
if (!_upload_manager.getTransference_running_list().isEmpty()) {
|
||||
for (Transference trans : _upload_manager.getTransference_running_list()) {
|
||||
Upload upload = (Upload) trans;
|
||||
upload.getMac_generator().secureNotify();
|
||||
if (upload.isPaused()) {
|
||||
upload.pause();
|
||||
}
|
||||
if (!upload.getChunkworkers().isEmpty()) {
|
||||
wait = true;
|
||||
swingInvoke(() -> {
|
||||
upload.getView().printStatusNormal("Stopping upload safely before exit MegaBasterd, please wait...");
|
||||
upload.getView().getSlots_spinner().setEnabled(false);
|
||||
upload.getView().getPause_button().setEnabled(false);
|
||||
upload.getView().getFolder_link_button().setEnabled(false);
|
||||
upload.getView().getFile_link_button().setEnabled(false);
|
||||
upload.getView().getFile_size_label().setEnabled(false);
|
||||
upload.getView().getFile_name_label().setEnabled(false);
|
||||
upload.getView().getSpeed_label().setEnabled(false);
|
||||
upload.getView().getSlots_label().setEnabled(false);
|
||||
upload.getView().getProgress_pbar().setEnabled(false);
|
||||
});
|
||||
} else {
|
||||
try {
|
||||
DBTools.updateUploadProgress(upload.getFile_name(), upload.getMa().getFull_email(), upload.getProgress(), upload.getTemp_mac_data() != null ? upload.getTemp_mac_data() : null);
|
||||
} catch (SQLException ex) {
|
||||
Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (wait) {
|
||||
|
||||
} while (wait);
|
||||
|
||||
byebyenow(restart);
|
||||
}
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException ex) {
|
||||
Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
}
|
||||
} while (wait);
|
||||
byebyenow(restart);
|
||||
});
|
||||
|
||||
WarningExitMessage exit_message = new WarningExitMessage(getView(), true, this, restart);
|
||||
@ -1153,33 +1070,19 @@ public final class MainPanel {
|
||||
|
||||
final ServerSocket serverSocket = new ServerSocket(WATCHDOG_PORT, 0, InetAddress.getLoopbackAddress());
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
final ServerSocket socket = serverSocket;
|
||||
while (true) {
|
||||
try {
|
||||
socket.accept();
|
||||
swingInvoke(() -> {
|
||||
getView().setExtendedState(NORMAL);
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
final ServerSocket socket = serverSocket;
|
||||
|
||||
while (true) {
|
||||
|
||||
try {
|
||||
socket.accept();
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getView().setExtendedState(NORMAL);
|
||||
|
||||
getView().setVisible(true);
|
||||
}
|
||||
});
|
||||
|
||||
} catch (Exception ex) {
|
||||
Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
getView().setVisible(true);
|
||||
});
|
||||
} catch (Exception ex1) {
|
||||
Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, ex1.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
});
|
||||
} catch (Exception ex2) {
|
||||
@ -1195,77 +1098,53 @@ public final class MainPanel {
|
||||
|
||||
private void resumeDownloads() {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getView().getStatus_down_label().setText(LabelTranslatorSingleton.getInstance().translate("Checking if there are previous downloads, please wait..."));
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getStatus_down_label().setText(LabelTranslatorSingleton.getInstance().translate("Checking if there are previous downloads, please wait..."));
|
||||
});
|
||||
|
||||
final MainPanel tthis = this;
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
int conta_downloads = 0;
|
||||
try {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
ArrayList<HashMap<String, Object>> res = selectDownloads();
|
||||
|
||||
int conta_downloads = 0;
|
||||
for (HashMap<String, Object> o : res) {
|
||||
|
||||
try {
|
||||
try {
|
||||
|
||||
ArrayList<HashMap<String, Object>> res = selectDownloads();
|
||||
String email = (String) o.get("email");
|
||||
|
||||
for (HashMap<String, Object> o : res) {
|
||||
MegaAPI ma = new MegaAPI();
|
||||
|
||||
try {
|
||||
if (!tthis.isUse_mega_account_down() || (_mega_accounts.get(email) != null && (ma = checkMegaAccountLoginAndShowMasterPassDialog(tthis, getView(), email)) != null)) {
|
||||
|
||||
String email = (String) o.get("email");
|
||||
Download download = new Download(tthis, ma, (String) o.get("url"), (String) o.get("path"), (String) o.get("filename"), (String) o.get("filekey"), (Long) o.get("filesize"), (String) o.get("filepass"), (String) o.get("filenoexpire"), _use_slots_down, false, (String) o.get("custom_chunks_dir"));
|
||||
|
||||
MegaAPI ma = new MegaAPI();
|
||||
getDownload_manager().getTransference_provision_queue().add(download);
|
||||
|
||||
if (!tthis.isUse_mega_account_down() || (_mega_accounts.get(email) != null && (ma = checkMegaAccountLoginAndShowMasterPassDialog(tthis, getView(), email)) != null)) {
|
||||
|
||||
Download download = new Download(tthis, ma, (String) o.get("url"), (String) o.get("path"), (String) o.get("filename"), (String) o.get("filekey"), (Long) o.get("filesize"), (String) o.get("filepass"), (String) o.get("filenoexpire"), _use_slots_down, false, (String) o.get("custom_chunks_dir"));
|
||||
|
||||
getDownload_manager().getTransference_provision_queue().add(download);
|
||||
|
||||
conta_downloads++;
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
conta_downloads++;
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
Logger.getLogger(MainPanel.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
|
||||
} catch (SQLException ex) {
|
||||
|
||||
Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex);
|
||||
}
|
||||
|
||||
if (conta_downloads > 0) {
|
||||
|
||||
getDownload_manager().secureNotify();
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getView().getjTabbedPane1().setSelectedIndex(0);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getView().getStatus_down_label().setText("");
|
||||
}
|
||||
});
|
||||
} catch (SQLException ex) {
|
||||
|
||||
Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex);
|
||||
}
|
||||
if (conta_downloads > 0) {
|
||||
getDownload_manager().secureNotify();
|
||||
swingInvoke(() -> {
|
||||
getView().getjTabbedPane1().setSelectedIndex(0);
|
||||
});
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getStatus_down_label().setText("");
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
@ -1282,79 +1161,50 @@ public final class MainPanel {
|
||||
|
||||
MenuItem messageItem = new MenuItem(LabelTranslatorSingleton.getInstance().translate("Restore window"));
|
||||
|
||||
messageItem.addActionListener(new ActionListener() {
|
||||
messageItem.addActionListener((ActionEvent e) -> {
|
||||
swingInvoke(() -> {
|
||||
getView().setExtendedState(NORMAL);
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
getView().setVisible(true);
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getView().revalidate();
|
||||
|
||||
getView().setExtendedState(NORMAL);
|
||||
|
||||
getView().setVisible(true);
|
||||
|
||||
getView().revalidate();
|
||||
|
||||
getView().repaint();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
getView().repaint();
|
||||
});
|
||||
});
|
||||
|
||||
menu.add(messageItem);
|
||||
|
||||
MenuItem closeItem = new MenuItem(LabelTranslatorSingleton.getInstance().translate("EXIT"));
|
||||
|
||||
closeItem.addActionListener(new ActionListener() {
|
||||
closeItem.addActionListener((ActionEvent e) -> {
|
||||
if (!getView().isVisible()) {
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
getView().setExtendedState(NORMAL);
|
||||
getView().setVisible(true);
|
||||
getView().revalidate();
|
||||
getView().repaint();
|
||||
|
||||
}
|
||||
|
||||
byebye(false);
|
||||
});
|
||||
|
||||
menu.add(closeItem);
|
||||
|
||||
ActionListener actionListener = (ActionEvent e) -> {
|
||||
swingInvoke(() -> {
|
||||
if (!getView().isVisible()) {
|
||||
|
||||
getView().setExtendedState(NORMAL);
|
||||
getView().setVisible(true);
|
||||
getView().revalidate();
|
||||
getView().repaint();
|
||||
|
||||
} else {
|
||||
|
||||
getView().dispatchEvent(new WindowEvent(getView(), WINDOW_CLOSING));
|
||||
}
|
||||
|
||||
byebye(false);
|
||||
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
menu.add(closeItem);
|
||||
|
||||
ActionListener actionListener = new ActionListener() {
|
||||
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
if (!getView().isVisible()) {
|
||||
getView().setExtendedState(NORMAL);
|
||||
getView().setVisible(true);
|
||||
getView().revalidate();
|
||||
getView().repaint();
|
||||
|
||||
} else {
|
||||
|
||||
getView().dispatchEvent(new WindowEvent(getView(), WINDOW_CLOSING));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
_trayicon = new TrayIcon(getDefaultToolkit().getImage(getClass().getResource(ICON_FILE)), "MegaBasterd", menu);
|
||||
@ -1373,81 +1223,55 @@ public final class MainPanel {
|
||||
|
||||
private void resumeUploads() {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getView().getStatus_up_label().setText(LabelTranslatorSingleton.getInstance().translate("Checking if there are previous uploads, please wait..."));
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getStatus_up_label().setText(LabelTranslatorSingleton.getInstance().translate("Checking if there are previous uploads, please wait..."));
|
||||
});
|
||||
|
||||
final MainPanel tthis = this;
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
try {
|
||||
int conta_uploads = 0;
|
||||
ArrayList<HashMap<String, Object>> res = selectUploads();
|
||||
for (HashMap<String, Object> o : res) {
|
||||
|
||||
try {
|
||||
try {
|
||||
|
||||
int conta_uploads = 0;
|
||||
String email = (String) o.get("email");
|
||||
|
||||
ArrayList<HashMap<String, Object>> res = selectUploads();
|
||||
if (_mega_accounts.get(email) != null) {
|
||||
|
||||
for (HashMap<String, Object> o : res) {
|
||||
MegaAPI ma;
|
||||
|
||||
try {
|
||||
if ((ma = checkMegaAccountLoginAndShowMasterPassDialog(tthis, getView(), email)) != null) {
|
||||
|
||||
String email = (String) o.get("email");
|
||||
Upload upload = new Upload(tthis, ma, (String) o.get("filename"), (String) o.get("parent_node"), (String) o.get("ul_key") != null ? bin2i32a(BASE642Bin((String) o.get("ul_key"))) : null, (String) o.get("url"), (String) o.get("root_node"), BASE642Bin((String) o.get("share_key")), (String) o.get("folder_link"));
|
||||
|
||||
if (_mega_accounts.get(email) != null) {
|
||||
getUpload_manager().getTransference_provision_queue().add(upload);
|
||||
|
||||
MegaAPI ma;
|
||||
|
||||
if ((ma = checkMegaAccountLoginAndShowMasterPassDialog(tthis, getView(), email)) != null) {
|
||||
|
||||
Upload upload = new Upload(tthis, ma, (String) o.get("filename"), (String) o.get("parent_node"), (String) o.get("ul_key") != null ? bin2i32a(BASE642Bin((String) o.get("ul_key"))) : null, (String) o.get("url"), (String) o.get("root_node"), BASE642Bin((String) o.get("share_key")), (String) o.get("folder_link"));
|
||||
|
||||
getUpload_manager().getTransference_provision_queue().add(upload);
|
||||
|
||||
conta_uploads++;
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
deleteUpload((String) o.get("filename"), email);
|
||||
conta_uploads++;
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex);
|
||||
} else {
|
||||
|
||||
deleteUpload((String) o.get("filename"), email);
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex);
|
||||
}
|
||||
|
||||
if (conta_uploads > 0) {
|
||||
|
||||
getUpload_manager().secureNotify();
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getView().getjTabbedPane1().setSelectedIndex(1);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getView().getStatus_up_label().setText("");
|
||||
}
|
||||
});
|
||||
|
||||
} catch (SQLException ex) {
|
||||
Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex);
|
||||
}
|
||||
|
||||
if (conta_uploads > 0) {
|
||||
getUpload_manager().secureNotify();
|
||||
swingInvoke(() -> {
|
||||
getView().getjTabbedPane1().setSelectedIndex(1);
|
||||
});
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getStatus_up_label().setText("");
|
||||
});
|
||||
} catch (SQLException ex) {
|
||||
Logger.getLogger(MainPanel.class.getName()).log(SEVERE, null, ex);
|
||||
}
|
||||
});
|
||||
|
||||
|
@ -150,16 +150,11 @@ public final class MainPanelView extends javax.swing.JFrame implements FileDropH
|
||||
if (!old_status.equals(status + " ")) {
|
||||
Dimension frame_size = this.getSize();
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getKiss_server_status().setText(status + " ");
|
||||
|
||||
getKiss_server_status().setText(status + " ");
|
||||
|
||||
pack();
|
||||
setSize(frame_size);
|
||||
}
|
||||
pack();
|
||||
setSize(frame_size);
|
||||
});
|
||||
}
|
||||
|
||||
@ -172,16 +167,11 @@ public final class MainPanelView extends javax.swing.JFrame implements FileDropH
|
||||
if (!old_status.equals(status + " ")) {
|
||||
Dimension frame_size = this.getSize();
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getSmart_proxy_status().setText(status + " ");
|
||||
|
||||
getSmart_proxy_status().setText(status + " ");
|
||||
|
||||
pack();
|
||||
setSize(frame_size);
|
||||
}
|
||||
pack();
|
||||
setSize(frame_size);
|
||||
});
|
||||
}
|
||||
|
||||
@ -194,16 +184,11 @@ public final class MainPanelView extends javax.swing.JFrame implements FileDropH
|
||||
if (!old_status.equals(status + " ")) {
|
||||
Dimension frame_size = this.getSize();
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getMc_reverse_status().setText(status + " ");
|
||||
|
||||
getMc_reverse_status().setText(status + " ");
|
||||
|
||||
pack();
|
||||
setSize(frame_size);
|
||||
}
|
||||
pack();
|
||||
setSize(frame_size);
|
||||
});
|
||||
}
|
||||
|
||||
@ -231,108 +216,106 @@ public final class MainPanelView extends javax.swing.JFrame implements FileDropH
|
||||
|
||||
jTabbedPane1.setSelectedIndex(1);
|
||||
|
||||
Runnable run = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Runnable run = () -> {
|
||||
|
||||
MegaAPI ma = getMain_panel().getMega_active_accounts().get(mega_account);
|
||||
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
|
||||
|
||||
try {
|
||||
MegaAPI ma = getMain_panel().getMega_active_accounts().get(mega_account);
|
||||
|
||||
byte[] parent_key = ma.genFolderKey();
|
||||
try {
|
||||
|
||||
byte[] share_key = ma.genShareKey();
|
||||
byte[] parent_key = ma.genFolderKey();
|
||||
|
||||
HashMap<String, Object> res = ma.createDir(dir_name != null ? dir_name : dialog.getFiles().get(0).getName() + "_" + genID(10), ma.getRoot_id(), parent_key, i32a2bin(ma.getMaster_key()));
|
||||
byte[] share_key = ma.genShareKey();
|
||||
|
||||
String parent_node = (String) ((Map) ((List) res.get("f")).get(0)).get("h");
|
||||
HashMap<String, Object> res = ma.createDir(dir_name != null ? dir_name : dialog.getFiles().get(0).getName() + "_" + genID(10), ma.getRoot_id(), parent_key, i32a2bin(ma.getMaster_key()));
|
||||
|
||||
LOG.log(Level.INFO, "{0} Dir {1} created", new Object[]{Thread.currentThread().getName(), parent_node});
|
||||
String parent_node = (String) ((Map) ((List) res.get("f")).get(0)).get("h");
|
||||
|
||||
ma.shareFolder(parent_node, parent_key, share_key);
|
||||
LOG.log(Level.INFO, "{0} Dir {1} created", new Object[]{Thread.currentThread().getName(), parent_node});
|
||||
|
||||
String folder_link = ma.getPublicFolderLink(parent_node, share_key);
|
||||
ma.shareFolder(parent_node, parent_key, share_key);
|
||||
|
||||
if (dialog.getUpload_log_checkbox().isSelected()) {
|
||||
String folder_link = ma.getPublicFolderLink(parent_node, share_key);
|
||||
|
||||
File upload_log = new File(System.getProperty("user.home") + "/megabasterd_upload_" + parent_node + ".log");
|
||||
upload_log.createNewFile();
|
||||
if (dialog.getUpload_log_checkbox().isSelected()) {
|
||||
|
||||
FileWriter fr;
|
||||
try {
|
||||
fr = new FileWriter(upload_log, true);
|
||||
fr.write("***** MegaBasterd UPLOAD LOG FILE *****\n\n");
|
||||
fr.write(dir_name + " " + folder_link + "\n\n");
|
||||
fr.close();
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(Upload.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
File upload_log = new File(System.getProperty("user.home") + "/megabasterd_upload_" + parent_node + ".log");
|
||||
upload_log.createNewFile();
|
||||
|
||||
FileWriter fr;
|
||||
try {
|
||||
fr = new FileWriter(upload_log, true);
|
||||
fr.write("***** MegaBasterd UPLOAD LOG FILE *****\n\n");
|
||||
fr.write(dir_name + " " + folder_link + "\n\n");
|
||||
fr.close();
|
||||
} catch (IOException ex) {
|
||||
Logger.getLogger(Upload.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
|
||||
MegaDirNode file_paths = new MegaDirNode(parent_node);
|
||||
|
||||
for (File f : dialog.getFiles()) {
|
||||
|
||||
String file_path = f.getParentFile().getAbsolutePath().replace(base_path, "");
|
||||
|
||||
String[] dirs = file_path.split("/");
|
||||
|
||||
MegaDirNode current_node = file_paths;
|
||||
|
||||
String file_parent = current_node.getNode_id();
|
||||
|
||||
for (String d : dirs) {
|
||||
|
||||
if (!d.isEmpty()) {
|
||||
|
||||
if (current_node.getChildren().get(d) != null) {
|
||||
|
||||
current_node = current_node.getChildren().get(d);
|
||||
|
||||
file_parent = current_node.getNode_id();
|
||||
|
||||
} else {
|
||||
|
||||
res = ma.createDirInsideAnotherSharedDir(d, current_node.getNode_id(), ma.genFolderKey(), i32a2bin(ma.getMaster_key()), parent_node, share_key);
|
||||
|
||||
file_parent = (String) ((Map) ((List) res.get("f")).get(0)).get("h");
|
||||
|
||||
current_node.getChildren().put(d, new MegaDirNode(file_parent));
|
||||
|
||||
current_node = current_node.getChildren().get(d);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
while (getMain_panel().getUpload_manager().getTransference_waitstart_queue().size() >= TransferenceManager.MAX_WAIT_QUEUE) {
|
||||
|
||||
synchronized (getMain_panel().getUpload_manager().getWait_queue_lock()) {
|
||||
getMain_panel().getUpload_manager().getWait_queue_lock().wait(1000);
|
||||
}
|
||||
}
|
||||
|
||||
if (!getMain_panel().getUpload_manager().getTransference_preprocess_global_queue().isEmpty()) {
|
||||
|
||||
Upload upload = new Upload(getMain_panel(), ma, f.getAbsolutePath(), file_parent, null, null, parent_node, share_key, folder_link);
|
||||
|
||||
getMain_panel().getUpload_manager().getTransference_provision_queue().add(upload);
|
||||
|
||||
getMain_panel().getUpload_manager().getTransference_preprocess_global_queue().remove(f);
|
||||
|
||||
getMain_panel().getUpload_manager().secureNotify();
|
||||
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
LOG.log(SEVERE, null, ex);
|
||||
}
|
||||
}
|
||||
|
||||
MegaDirNode file_paths = new MegaDirNode(parent_node);
|
||||
|
||||
for (File f : dialog.getFiles()) {
|
||||
|
||||
String file_path = f.getParentFile().getAbsolutePath().replace(base_path, "");
|
||||
|
||||
String[] dirs = file_path.split("/");
|
||||
|
||||
MegaDirNode current_node = file_paths;
|
||||
|
||||
String file_parent = current_node.getNode_id();
|
||||
|
||||
for (String d : dirs) {
|
||||
|
||||
if (!d.isEmpty()) {
|
||||
|
||||
if (current_node.getChildren().get(d) != null) {
|
||||
|
||||
current_node = current_node.getChildren().get(d);
|
||||
|
||||
file_parent = current_node.getNode_id();
|
||||
|
||||
} else {
|
||||
|
||||
res = ma.createDirInsideAnotherSharedDir(d, current_node.getNode_id(), ma.genFolderKey(), i32a2bin(ma.getMaster_key()), parent_node, share_key);
|
||||
|
||||
file_parent = (String) ((Map) ((List) res.get("f")).get(0)).get("h");
|
||||
|
||||
current_node.getChildren().put(d, new MegaDirNode(file_parent));
|
||||
|
||||
current_node = current_node.getChildren().get(d);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
while (getMain_panel().getUpload_manager().getTransference_waitstart_queue().size() >= TransferenceManager.MAX_WAIT_QUEUE) {
|
||||
|
||||
synchronized (getMain_panel().getUpload_manager().getWait_queue_lock()) {
|
||||
getMain_panel().getUpload_manager().getWait_queue_lock().wait(1000);
|
||||
}
|
||||
}
|
||||
|
||||
if (!getMain_panel().getUpload_manager().getTransference_preprocess_global_queue().isEmpty()) {
|
||||
|
||||
Upload upload = new Upload(getMain_panel(), ma, f.getAbsolutePath(), file_parent, null, null, parent_node, share_key, folder_link);
|
||||
|
||||
getMain_panel().getUpload_manager().getTransference_provision_queue().add(upload);
|
||||
|
||||
getMain_panel().getUpload_manager().getTransference_preprocess_global_queue().remove(f);
|
||||
|
||||
getMain_panel().getUpload_manager().secureNotify();
|
||||
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
LOG.log(SEVERE, null, ex);
|
||||
}
|
||||
};
|
||||
|
||||
getMain_panel().getUpload_manager().getTransference_preprocess_queue().add(run);
|
||||
@ -358,49 +341,43 @@ public final class MainPanelView extends javax.swing.JFrame implements FileDropH
|
||||
|
||||
final MainPanelView tthis = this;
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
int n;
|
||||
|
||||
int n;
|
||||
if (files.size() > 1) {
|
||||
|
||||
if (files.size() > 1) {
|
||||
Object[] options = {LabelTranslatorSingleton.getInstance().translate("Split content in different uploads"), LabelTranslatorSingleton.getInstance().translate("Merge content in the same upload")};
|
||||
|
||||
Object[] options = {LabelTranslatorSingleton.getInstance().translate("Split content in different uploads"), LabelTranslatorSingleton.getInstance().translate("Merge content in the same upload")};
|
||||
n = showOptionDialog(_main_panel.getView(),
|
||||
LabelTranslatorSingleton.getInstance().translate("How do you want to proceed?"),
|
||||
LabelTranslatorSingleton.getInstance().translate("File Grabber"), DEFAULT_OPTION, INFORMATION_MESSAGE,
|
||||
null,
|
||||
options,
|
||||
null);
|
||||
|
||||
n = showOptionDialog(_main_panel.getView(),
|
||||
LabelTranslatorSingleton.getInstance().translate("How do you want to proceed?"),
|
||||
LabelTranslatorSingleton.getInstance().translate("File Grabber"), DEFAULT_OPTION, INFORMATION_MESSAGE,
|
||||
null,
|
||||
options,
|
||||
null);
|
||||
} else {
|
||||
|
||||
} else {
|
||||
|
||||
n = 1;
|
||||
|
||||
}
|
||||
|
||||
if (n == 0) {
|
||||
|
||||
files.stream().map((file) -> {
|
||||
List<File> aux = new ArrayList<>();
|
||||
aux.add(file);
|
||||
return aux;
|
||||
}).map((aux) -> new FileGrabberDialog(tthis, true, aux)).forEachOrdered((dialog) -> {
|
||||
_new_upload_dialog(dialog);
|
||||
});
|
||||
|
||||
} else if (n == 1) {
|
||||
|
||||
final FileGrabberDialog dialog = new FileGrabberDialog(tthis, true, files);
|
||||
|
||||
_new_upload_dialog(dialog);
|
||||
|
||||
}
|
||||
n = 1;
|
||||
|
||||
}
|
||||
|
||||
if (n == 0) {
|
||||
|
||||
files.stream().map((file) -> {
|
||||
List<File> aux = new ArrayList<>();
|
||||
aux.add(file);
|
||||
return aux;
|
||||
}).map((aux) -> new FileGrabberDialog(tthis, true, aux)).forEachOrdered((dialog) -> {
|
||||
_new_upload_dialog(dialog);
|
||||
});
|
||||
|
||||
} else if (n == 1) {
|
||||
|
||||
final FileGrabberDialog dialog = new FileGrabberDialog(tthis, true, files);
|
||||
|
||||
_new_upload_dialog(dialog);
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ -898,143 +875,141 @@ public final class MainPanelView extends javax.swing.JFrame implements FileDropH
|
||||
|
||||
final MainPanelView tthis = this;
|
||||
|
||||
Runnable run = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
Runnable run = () -> {
|
||||
|
||||
Set<String> urls = new HashSet(findAllRegex("(?:https?|mega)://[^/\r\n]+/(#[^\r\n!]*?)?![^\r\n!]+![^\r\n]+", dialog.getLinks_textarea().getText(), 0));
|
||||
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
|
||||
|
||||
Set<String> megadownloader = new HashSet(findAllRegex("mega://enc[^\r\n]+", dialog.getLinks_textarea().getText(), 0));
|
||||
Set<String> urls = new HashSet(findAllRegex("(?:https?|mega)://[^/\r\n]+/(#[^\r\n!]*?)?![^\r\n!]+![^\r\n]+", dialog.getLinks_textarea().getText(), 0));
|
||||
|
||||
Set<String> megadownloader = new HashSet(findAllRegex("mega://enc[^\r\n]+", dialog.getLinks_textarea().getText(), 0));
|
||||
|
||||
megadownloader.forEach((link) -> {
|
||||
try {
|
||||
|
||||
urls.add(decryptMegaDownloaderLink(link));
|
||||
|
||||
} catch (Exception ex) {
|
||||
LOG.log(SEVERE, null, ex);
|
||||
}
|
||||
});
|
||||
|
||||
Set<String> elc = new HashSet(findAllRegex("mega://elc[^\r\n]+", dialog.getLinks_textarea().getText(), 0));
|
||||
|
||||
elc.forEach((link) -> {
|
||||
try {
|
||||
|
||||
urls.addAll(CryptTools.decryptELC(link, getMain_panel()));
|
||||
|
||||
} catch (Exception ex) {
|
||||
LOG.log(SEVERE, null, ex);
|
||||
}
|
||||
});
|
||||
|
||||
Set<String> dlc = new HashSet(findAllRegex("dlc://([^\r\n]+)", dialog.getLinks_textarea().getText(), 1));
|
||||
|
||||
dlc.stream().map((d) -> CryptTools.decryptDLC(d, _main_panel)).forEachOrdered((links) -> {
|
||||
links.stream().filter((link) -> (findFirstRegex("(?:https?|mega)://[^/\r\n]+/(#[^\r\n!]*?)?![^\r\n!]+![^\r\n]+", link, 0) != null)).forEachOrdered((link) -> {
|
||||
urls.add(link);
|
||||
});
|
||||
});
|
||||
|
||||
if (!urls.isEmpty()) {
|
||||
|
||||
getMain_panel().getDownload_manager().getTransference_preprocess_global_queue().addAll(urls);
|
||||
|
||||
getMain_panel().getDownload_manager().secureNotify();
|
||||
|
||||
boolean link_warning;
|
||||
|
||||
for (String url : urls) {
|
||||
|
||||
megadownloader.forEach((link) -> {
|
||||
try {
|
||||
|
||||
urls.add(decryptMegaDownloaderLink(link));
|
||||
link_warning = false;
|
||||
|
||||
} catch (Exception ex) {
|
||||
LOG.log(SEVERE, null, ex);
|
||||
}
|
||||
});
|
||||
url = URLDecoder.decode(url, "UTF-8").replaceAll("^mega://", "https://mega.nz").trim();
|
||||
|
||||
Set<String> elc = new HashSet(findAllRegex("mega://elc[^\r\n]+", dialog.getLinks_textarea().getText(), 0));
|
||||
Download download;
|
||||
|
||||
elc.forEach((link) -> {
|
||||
try {
|
||||
if (findFirstRegex("#F!", url, 0) != null) {
|
||||
|
||||
urls.addAll(CryptTools.decryptELC(link, getMain_panel()));
|
||||
FolderLinkDialog fdialog = new FolderLinkDialog(_main_panel.getView(), true, url);
|
||||
|
||||
} catch (Exception ex) {
|
||||
LOG.log(SEVERE, null, ex);
|
||||
}
|
||||
});
|
||||
if (!fdialog.isMega_error()) {
|
||||
|
||||
Set<String> dlc = new HashSet(findAllRegex("dlc://([^\r\n]+)", dialog.getLinks_textarea().getText(), 1));
|
||||
fdialog.setLocationRelativeTo(_main_panel.getView());
|
||||
|
||||
dlc.stream().map((d) -> CryptTools.decryptDLC(d, _main_panel)).forEachOrdered((links) -> {
|
||||
links.stream().filter((link) -> (findFirstRegex("(?:https?|mega)://[^/\r\n]+/(#[^\r\n!]*?)?![^\r\n!]+![^\r\n]+", link, 0) != null)).forEachOrdered((link) -> {
|
||||
urls.add(link);
|
||||
});
|
||||
});
|
||||
fdialog.setVisible(true);
|
||||
|
||||
if (!urls.isEmpty()) {
|
||||
if (fdialog.isDownload()) {
|
||||
|
||||
getMain_panel().getDownload_manager().getTransference_preprocess_global_queue().addAll(urls);
|
||||
List<HashMap> folder_links = fdialog.getDownload_links();
|
||||
|
||||
getMain_panel().getDownload_manager().secureNotify();
|
||||
fdialog.dispose();
|
||||
|
||||
boolean link_warning;
|
||||
for (HashMap folder_link : folder_links) {
|
||||
|
||||
for (String url : urls) {
|
||||
while (getMain_panel().getDownload_manager().getTransference_waitstart_queue().size() >= TransferenceManager.MAX_WAIT_QUEUE) {
|
||||
|
||||
try {
|
||||
if (!link_warning) {
|
||||
link_warning = true;
|
||||
|
||||
link_warning = false;
|
||||
|
||||
url = URLDecoder.decode(url, "UTF-8").replaceAll("^mega://", "https://mega.nz").trim();
|
||||
|
||||
Download download;
|
||||
|
||||
if (findFirstRegex("#F!", url, 0) != null) {
|
||||
|
||||
FolderLinkDialog fdialog = new FolderLinkDialog(_main_panel.getView(), true, url);
|
||||
|
||||
if (!fdialog.isMega_error()) {
|
||||
|
||||
fdialog.setLocationRelativeTo(_main_panel.getView());
|
||||
|
||||
fdialog.setVisible(true);
|
||||
|
||||
if (fdialog.isDownload()) {
|
||||
|
||||
List<HashMap> folder_links = fdialog.getDownload_links();
|
||||
|
||||
fdialog.dispose();
|
||||
|
||||
for (HashMap folder_link : folder_links) {
|
||||
|
||||
while (getMain_panel().getDownload_manager().getTransference_waitstart_queue().size() >= TransferenceManager.MAX_WAIT_QUEUE) {
|
||||
|
||||
if (!link_warning) {
|
||||
link_warning = true;
|
||||
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("There are a lot of files in this folder.\nNot all links will be provisioned at once to avoid saturating MegaBasterd"), "Warning", JOptionPane.WARNING_MESSAGE);
|
||||
}
|
||||
|
||||
synchronized (getMain_panel().getDownload_manager().getWait_queue_lock()) {
|
||||
getMain_panel().getDownload_manager().getWait_queue_lock().wait(1000);
|
||||
}
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("There are a lot of files in this folder.\nNot all links will be provisioned at once to avoid saturating MegaBasterd"), "Warning", JOptionPane.WARNING_MESSAGE);
|
||||
}
|
||||
|
||||
if (!getMain_panel().getDownload_manager().getTransference_preprocess_global_queue().isEmpty()) {
|
||||
|
||||
download = new Download(getMain_panel(), ma, (String) folder_link.get("url"), dl_path, (String) folder_link.get("filename"), (String) folder_link.get("filekey"), (long) folder_link.get("filesize"), null, null, getMain_panel().isUse_slots_down(), true, getMain_panel().isUse_custom_chunks_dir() ? getMain_panel().getCustom_chunks_dir() : null);
|
||||
|
||||
getMain_panel().getDownload_manager().getTransference_provision_queue().add(download);
|
||||
|
||||
getMain_panel().getDownload_manager().secureNotify();
|
||||
} else {
|
||||
break;
|
||||
synchronized (getMain_panel().getDownload_manager().getWait_queue_lock()) {
|
||||
getMain_panel().getDownload_manager().getWait_queue_lock().wait(1000);
|
||||
}
|
||||
}
|
||||
|
||||
if (!getMain_panel().getDownload_manager().getTransference_preprocess_global_queue().isEmpty()) {
|
||||
|
||||
download = new Download(getMain_panel(), ma, (String) folder_link.get("url"), dl_path, (String) folder_link.get("filename"), (String) folder_link.get("filekey"), (long) folder_link.get("filesize"), null, null, getMain_panel().isUse_slots_down(), true, getMain_panel().isUse_custom_chunks_dir() ? getMain_panel().getCustom_chunks_dir() : null);
|
||||
|
||||
getMain_panel().getDownload_manager().getTransference_provision_queue().add(download);
|
||||
|
||||
getMain_panel().getDownload_manager().secureNotify();
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fdialog.dispose();
|
||||
|
||||
} else {
|
||||
|
||||
while (getMain_panel().getDownload_manager().getTransference_waitstart_queue().size() >= TransferenceManager.MAX_WAIT_QUEUE) {
|
||||
|
||||
synchronized (getMain_panel().getDownload_manager().getWait_queue_lock()) {
|
||||
getMain_panel().getDownload_manager().getWait_queue_lock().wait(1000);
|
||||
}
|
||||
}
|
||||
|
||||
if (!getMain_panel().getDownload_manager().getTransference_preprocess_global_queue().isEmpty()) {
|
||||
|
||||
download = new Download(getMain_panel(), ma, url, dl_path, null, null, null, null, null, getMain_panel().isUse_slots_down(), false, getMain_panel().isUse_custom_chunks_dir() ? getMain_panel().getCustom_chunks_dir() : null);
|
||||
|
||||
getMain_panel().getDownload_manager().getTransference_provision_queue().add(download);
|
||||
|
||||
getMain_panel().getDownload_manager().secureNotify();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
getMain_panel().getDownload_manager().getTransference_preprocess_global_queue().remove(url);
|
||||
fdialog.dispose();
|
||||
|
||||
getMain_panel().getDownload_manager().secureNotify();
|
||||
} else {
|
||||
|
||||
while (getMain_panel().getDownload_manager().getTransference_waitstart_queue().size() >= TransferenceManager.MAX_WAIT_QUEUE) {
|
||||
|
||||
synchronized (getMain_panel().getDownload_manager().getWait_queue_lock()) {
|
||||
getMain_panel().getDownload_manager().getWait_queue_lock().wait(1000);
|
||||
}
|
||||
}
|
||||
|
||||
if (!getMain_panel().getDownload_manager().getTransference_preprocess_global_queue().isEmpty()) {
|
||||
|
||||
download = new Download(getMain_panel(), ma, url, dl_path, null, null, null, null, null, getMain_panel().isUse_slots_down(), false, getMain_panel().isUse_custom_chunks_dir() ? getMain_panel().getCustom_chunks_dir() : null);
|
||||
|
||||
getMain_panel().getDownload_manager().getTransference_provision_queue().add(download);
|
||||
|
||||
getMain_panel().getDownload_manager().secureNotify();
|
||||
}
|
||||
|
||||
} catch (UnsupportedEncodingException ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
} catch (InterruptedException ex) {
|
||||
Logger.getLogger(MainPanelView.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
getMain_panel().getDownload_manager().getTransference_preprocess_global_queue().remove(url);
|
||||
|
||||
getMain_panel().getDownload_manager().secureNotify();
|
||||
|
||||
} catch (UnsupportedEncodingException ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
} catch (InterruptedException ex) {
|
||||
Logger.getLogger(MainPanelView.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@ -1315,25 +1290,9 @@ public final class MainPanelView extends javax.swing.JFrame implements FileDropH
|
||||
|
||||
unfreeze_transferences_button.setVisible(false);
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
THREAD_POOL.execute(_main_panel.getDownload_manager()::unfreezeTransferenceWaitStartQueue);
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
_main_panel.getDownload_manager().unfreezeTransferenceWaitStartQueue();
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
_main_panel.getUpload_manager().unfreezeTransferenceWaitStartQueue();
|
||||
|
||||
}
|
||||
});
|
||||
THREAD_POOL.execute(_main_panel.getUpload_manager()::unfreezeTransferenceWaitStartQueue);
|
||||
}//GEN-LAST:event_unfreeze_transferences_buttonActionPerformed
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
|
@ -87,20 +87,15 @@ public class MiscTools {
|
||||
public static final int EXP_BACKOFF_MAX_WAIT_TIME = 8;
|
||||
public static final Object PASS_LOCK = new Object();
|
||||
public static final int HTTP_TIMEOUT = 30;
|
||||
private static final Comparator<DefaultMutableTreeNode> TREE_NODE_COMPARATOR = new Comparator< DefaultMutableTreeNode>() {
|
||||
|
||||
@Override
|
||||
public int compare(DefaultMutableTreeNode a, DefaultMutableTreeNode b) {
|
||||
|
||||
if (a.isLeaf() && !b.isLeaf()) {
|
||||
return 1;
|
||||
} else if (!a.isLeaf() && b.isLeaf()) {
|
||||
return -1;
|
||||
} else {
|
||||
String sa = a.getUserObject().toString();
|
||||
String sb = b.getUserObject().toString();
|
||||
return sa.compareToIgnoreCase(sb);
|
||||
}
|
||||
private static final Comparator<DefaultMutableTreeNode> TREE_NODE_COMPARATOR = (DefaultMutableTreeNode a, DefaultMutableTreeNode b) -> {
|
||||
if (a.isLeaf() && !b.isLeaf()) {
|
||||
return 1;
|
||||
} else if (!a.isLeaf() && b.isLeaf()) {
|
||||
return -1;
|
||||
} else {
|
||||
String sa = a.getUserObject().toString();
|
||||
String sb = b.getUserObject().toString();
|
||||
return sa.compareToIgnoreCase(sb);
|
||||
}
|
||||
};
|
||||
private static final Logger LOG = Logger.getLogger(MiscTools.class.getName());
|
||||
|
@ -216,64 +216,37 @@ public class SetMasterPasswordDialog extends javax.swing.JDialog {
|
||||
|
||||
final Dialog tthis = this;
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
try {
|
||||
if (Arrays.equals(new_pass_textfield.getPassword(), confirm_pass_textfield.getPassword())) {
|
||||
swingInvoke(() -> {
|
||||
status_label.setText(LabelTranslatorSingleton.getInstance().translate("Processing your password, please wait..."));
|
||||
});
|
||||
if (new_pass_textfield.getPassword().length > 0) {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
try {
|
||||
|
||||
if (Arrays.equals(new_pass_textfield.getPassword(), confirm_pass_textfield.getPassword())) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
status_label.setText(LabelTranslatorSingleton.getInstance().translate("Processing your password, please wait..."));
|
||||
}
|
||||
});
|
||||
|
||||
if (new_pass_textfield.getPassword().length > 0) {
|
||||
|
||||
_new_pass = CryptTools.PBKDF2HMACSHA256(new String(new_pass_textfield.getPassword()), BASE642Bin(_salt), CryptTools.MASTER_PASSWORD_PBKDF2_ITERATIONS, CryptTools.MASTER_PASSWORD_PBKDF2_OUTPUT_BIT_LENGTH);
|
||||
|
||||
_new_pass_hash = Bin2BASE64(HashBin("SHA-1", _new_pass));
|
||||
}
|
||||
|
||||
_pass_ok = true;
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
tthis.setVisible(false);
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("Passwords does not match!"), "Error", JOptionPane.ERROR_MESSAGE);
|
||||
|
||||
status_label.setText("");
|
||||
|
||||
new_pass_textfield.setText("");
|
||||
|
||||
confirm_pass_textfield.setText("");
|
||||
|
||||
new_pass_textfield.grabFocus();
|
||||
}
|
||||
});
|
||||
_new_pass = CryptTools.PBKDF2HMACSHA256(new String(new_pass_textfield.getPassword()), BASE642Bin(_salt), CryptTools.MASTER_PASSWORD_PBKDF2_ITERATIONS, CryptTools.MASTER_PASSWORD_PBKDF2_OUTPUT_BIT_LENGTH);
|
||||
|
||||
_new_pass_hash = Bin2BASE64(HashBin("SHA-1", _new_pass));
|
||||
}
|
||||
_pass_ok = true;
|
||||
swingInvoke(() -> {
|
||||
tthis.setVisible(false);
|
||||
});
|
||||
} else {
|
||||
swingInvoke(() -> {
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("Passwords does not match!"), "Error", JOptionPane.ERROR_MESSAGE);
|
||||
|
||||
} catch (Exception ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
status_label.setText("");
|
||||
|
||||
new_pass_textfield.setText("");
|
||||
|
||||
confirm_pass_textfield.setText("");
|
||||
|
||||
new_pass_textfield.grabFocus();
|
||||
});
|
||||
}
|
||||
} catch (Exception ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
});
|
||||
}//GEN-LAST:event_ok_buttonActionPerformed
|
||||
|
@ -1823,27 +1823,106 @@ public class SettingsDialog extends javax.swing.JDialog {
|
||||
|
||||
final Dialog tthis = this;
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
ArrayList<String> email_error = new ArrayList<>();
|
||||
ArrayList<String> new_valid_mega_accounts = new ArrayList<>();
|
||||
for (int i = 0; i < model_row_count; i++) {
|
||||
|
||||
ArrayList<String> email_error = new ArrayList<>();
|
||||
String email = (String) model.getValueAt(i, 0);
|
||||
|
||||
ArrayList<String> new_valid_mega_accounts = new ArrayList<>();
|
||||
String pass = (String) model.getValueAt(i, 1);
|
||||
|
||||
for (int i = 0; i < model_row_count; i++) {
|
||||
if (!email.isEmpty() && !pass.isEmpty()) {
|
||||
|
||||
String email = (String) model.getValueAt(i, 0);
|
||||
new_valid_mega_accounts.add(email);
|
||||
|
||||
String pass = (String) model.getValueAt(i, 1);
|
||||
MegaAPI ma;
|
||||
|
||||
if (!email.isEmpty() && !pass.isEmpty()) {
|
||||
if (_main_panel.getMega_accounts().get(email) == null) {
|
||||
|
||||
new_valid_mega_accounts.add(email);
|
||||
ma = new MegaAPI();
|
||||
|
||||
MegaAPI ma;
|
||||
try {
|
||||
|
||||
if (_main_panel.getMega_accounts().get(email) == null) {
|
||||
String pincode = null;
|
||||
|
||||
boolean error_2FA = false;
|
||||
|
||||
if (ma.check2FA(email)) {
|
||||
|
||||
Get2FACode dialog = new Get2FACode((Frame) getParent(), true, email, _main_panel);
|
||||
|
||||
dialog.setLocationRelativeTo(tthis);
|
||||
|
||||
dialog.setVisible(true);
|
||||
|
||||
if (dialog.isCode_ok()) {
|
||||
pincode = dialog.getPin_code();
|
||||
} else {
|
||||
error_2FA = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!error_2FA) {
|
||||
ma.login(email, pass, pincode);
|
||||
|
||||
ByteArrayOutputStream bs = new ByteArrayOutputStream();
|
||||
|
||||
try (ObjectOutputStream os = new ObjectOutputStream(bs)) {
|
||||
os.writeObject(ma);
|
||||
}
|
||||
|
||||
if (_main_panel.getMaster_pass() != null) {
|
||||
|
||||
DBTools.insertMegaSession(email, CryptTools.aes_cbc_encrypt_pkcs7(bs.toByteArray(), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV), true);
|
||||
|
||||
} else {
|
||||
|
||||
DBTools.insertMegaSession(email, bs.toByteArray(), false);
|
||||
}
|
||||
|
||||
_main_panel.getMega_active_accounts().put(email, ma);
|
||||
|
||||
String password = pass, password_aes = Bin2BASE64(i32a2bin(ma.getPassword_aes())), user_hash = ma.getUser_hash();
|
||||
|
||||
if (_main_panel.getMaster_pass_hash() != null) {
|
||||
|
||||
password = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(pass.getBytes("UTF-8"), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
|
||||
password_aes = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(i32a2bin(ma.getPassword_aes()), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
|
||||
user_hash = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(UrlBASE642Bin(ma.getUser_hash()), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
}
|
||||
|
||||
DBTools.insertMegaAccount(email, password, password_aes, user_hash);
|
||||
} else {
|
||||
email_error.add(email);
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
email_error.add(email);
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
HashMap<String, Object> mega_account_data = (HashMap) _main_panel.getMega_accounts().get(email);
|
||||
|
||||
String password = (String) mega_account_data.get("password");
|
||||
|
||||
if (_main_panel.getMaster_pass() != null) {
|
||||
|
||||
try {
|
||||
|
||||
password = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin(password), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV), "UTF-8");
|
||||
|
||||
} catch (Exception ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
if (!password.equals(pass)) {
|
||||
|
||||
ma = new MegaAPI();
|
||||
|
||||
@ -1869,6 +1948,7 @@ public class SettingsDialog extends javax.swing.JDialog {
|
||||
}
|
||||
|
||||
if (!error_2FA) {
|
||||
|
||||
ma.login(email, pass, pincode);
|
||||
|
||||
ByteArrayOutputStream bs = new ByteArrayOutputStream();
|
||||
@ -1888,9 +1968,11 @@ public class SettingsDialog extends javax.swing.JDialog {
|
||||
|
||||
_main_panel.getMega_active_accounts().put(email, ma);
|
||||
|
||||
String password = pass, password_aes = Bin2BASE64(i32a2bin(ma.getPassword_aes())), user_hash = ma.getUser_hash();
|
||||
password = pass;
|
||||
|
||||
if (_main_panel.getMaster_pass_hash() != null) {
|
||||
String password_aes = Bin2BASE64(i32a2bin(ma.getPassword_aes())), user_hash = ma.getUser_hash();
|
||||
|
||||
if (_main_panel.getMaster_pass() != null) {
|
||||
|
||||
password = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(pass.getBytes("UTF-8"), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
|
||||
@ -1908,158 +1990,54 @@ public class SettingsDialog extends javax.swing.JDialog {
|
||||
|
||||
email_error.add(email);
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
HashMap<String, Object> mega_account_data = (HashMap) _main_panel.getMega_accounts().get(email);
|
||||
|
||||
String password = (String) mega_account_data.get("password");
|
||||
|
||||
if (_main_panel.getMaster_pass() != null) {
|
||||
|
||||
try {
|
||||
|
||||
password = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin(password), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV), "UTF-8");
|
||||
|
||||
} catch (Exception ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
if (!password.equals(pass)) {
|
||||
|
||||
ma = new MegaAPI();
|
||||
|
||||
try {
|
||||
|
||||
String pincode = null;
|
||||
|
||||
boolean error_2FA = false;
|
||||
|
||||
if (ma.check2FA(email)) {
|
||||
|
||||
Get2FACode dialog = new Get2FACode((Frame) getParent(), true, email, _main_panel);
|
||||
|
||||
dialog.setLocationRelativeTo(tthis);
|
||||
|
||||
dialog.setVisible(true);
|
||||
|
||||
if (dialog.isCode_ok()) {
|
||||
pincode = dialog.getPin_code();
|
||||
} else {
|
||||
error_2FA = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!error_2FA) {
|
||||
|
||||
ma.login(email, pass, pincode);
|
||||
|
||||
ByteArrayOutputStream bs = new ByteArrayOutputStream();
|
||||
|
||||
try (ObjectOutputStream os = new ObjectOutputStream(bs)) {
|
||||
os.writeObject(ma);
|
||||
}
|
||||
|
||||
if (_main_panel.getMaster_pass() != null) {
|
||||
|
||||
DBTools.insertMegaSession(email, CryptTools.aes_cbc_encrypt_pkcs7(bs.toByteArray(), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV), true);
|
||||
|
||||
} else {
|
||||
|
||||
DBTools.insertMegaSession(email, bs.toByteArray(), false);
|
||||
}
|
||||
|
||||
_main_panel.getMega_active_accounts().put(email, ma);
|
||||
|
||||
password = pass;
|
||||
|
||||
String password_aes = Bin2BASE64(i32a2bin(ma.getPassword_aes())), user_hash = ma.getUser_hash();
|
||||
|
||||
if (_main_panel.getMaster_pass() != null) {
|
||||
|
||||
password = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(pass.getBytes("UTF-8"), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
|
||||
password_aes = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(i32a2bin(ma.getPassword_aes()), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
|
||||
user_hash = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(UrlBASE642Bin(ma.getUser_hash()), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
}
|
||||
|
||||
DBTools.insertMegaAccount(email, password, password_aes, user_hash);
|
||||
} else {
|
||||
email_error.add(email);
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
email_error.add(email);
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (email_error.size() > 0) {
|
||||
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(() -> {
|
||||
status.setText("");
|
||||
|
||||
if (email_error.size() > 0) {
|
||||
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);
|
||||
|
||||
String email_error_s = "";
|
||||
save_button.setEnabled(true);
|
||||
|
||||
email_error_s = email_error.stream().map((s) -> s + "\n").reduce(email_error_s, String::concat);
|
||||
cancel_button.setEnabled(true);
|
||||
|
||||
final String final_email_error = email_error_s;
|
||||
remove_mega_account_button.setEnabled(mega_accounts_table.getModel().getRowCount() > 0);
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
remove_elc_account_button.setEnabled(elc_accounts_table.getModel().getRowCount() > 0);
|
||||
|
||||
status.setText("");
|
||||
add_mega_account_button.setEnabled(true);
|
||||
|
||||
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);
|
||||
add_elc_account_button.setEnabled(true);
|
||||
|
||||
save_button.setEnabled(true);
|
||||
mega_accounts_table.setEnabled(true);
|
||||
|
||||
cancel_button.setEnabled(true);
|
||||
elc_accounts_table.setEnabled(true);
|
||||
|
||||
remove_mega_account_button.setEnabled(mega_accounts_table.getModel().getRowCount() > 0);
|
||||
delete_all_accounts_button.setEnabled(true);
|
||||
|
||||
remove_elc_account_button.setEnabled(elc_accounts_table.getModel().getRowCount() > 0);
|
||||
encrypt_pass_checkbox.setEnabled(true);
|
||||
|
||||
add_mega_account_button.setEnabled(true);
|
||||
|
||||
add_elc_account_button.setEnabled(true);
|
||||
|
||||
mega_accounts_table.setEnabled(true);
|
||||
|
||||
elc_accounts_table.setEnabled(true);
|
||||
|
||||
delete_all_accounts_button.setEnabled(true);
|
||||
|
||||
encrypt_pass_checkbox.setEnabled(true);
|
||||
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
|
||||
_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(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
status.setText("");
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("Settings successfully saved!"), LabelTranslatorSingleton.getInstance().translate("Settings saved"), JOptionPane.INFORMATION_MESSAGE);
|
||||
_settings_ok = true;
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
setVisible(false);
|
||||
}
|
||||
});
|
||||
}
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
});
|
||||
} else {
|
||||
_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(() -> {
|
||||
status.setText("");
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("Settings successfully saved!"), LabelTranslatorSingleton.getInstance().translate("Settings saved"), JOptionPane.INFORMATION_MESSAGE);
|
||||
_settings_ok = true;
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
setVisible(false);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@ -2251,108 +2229,103 @@ public class SettingsDialog extends javax.swing.JDialog {
|
||||
|
||||
final Dialog tthis = this;
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
GetMasterPasswordDialog dialog = new GetMasterPasswordDialog((Frame) getParent(), true, _main_panel.getMaster_pass_hash(), _main_panel.getMaster_pass_salt(), _main_panel);
|
||||
|
||||
GetMasterPasswordDialog dialog = new GetMasterPasswordDialog((Frame) getParent(), true, _main_panel.getMaster_pass_hash(), _main_panel.getMaster_pass_salt(), _main_panel);
|
||||
dialog.setLocationRelativeTo(tthis);
|
||||
|
||||
dialog.setLocationRelativeTo(tthis);
|
||||
dialog.setVisible(true);
|
||||
|
||||
dialog.setVisible(true);
|
||||
if (dialog.isPass_ok()) {
|
||||
|
||||
if (dialog.isPass_ok()) {
|
||||
_main_panel.setMaster_pass(dialog.getPass());
|
||||
|
||||
_main_panel.setMaster_pass(dialog.getPass());
|
||||
dialog.deletePass();
|
||||
|
||||
dialog.deletePass();
|
||||
DefaultTableModel mega_model = new DefaultTableModel(new Object[][]{}, new String[]{"Email", "Password"});
|
||||
|
||||
DefaultTableModel mega_model = new DefaultTableModel(new Object[][]{}, new String[]{"Email", "Password"});
|
||||
DefaultTableModel elc_model = new DefaultTableModel(new Object[][]{}, new String[]{"Host", "User", "API KEY"});
|
||||
|
||||
DefaultTableModel elc_model = new DefaultTableModel(new Object[][]{}, new String[]{"Host", "User", "API KEY"});
|
||||
mega_accounts_table.setModel(mega_model);
|
||||
|
||||
mega_accounts_table.setModel(mega_model);
|
||||
elc_accounts_table.setModel(elc_model);
|
||||
|
||||
elc_accounts_table.setModel(elc_model);
|
||||
encrypt_pass_checkbox.setEnabled(true);
|
||||
|
||||
encrypt_pass_checkbox.setEnabled(true);
|
||||
mega_accounts_table.setEnabled(true);
|
||||
|
||||
mega_accounts_table.setEnabled(true);
|
||||
elc_accounts_table.setEnabled(true);
|
||||
|
||||
elc_accounts_table.setEnabled(true);
|
||||
remove_mega_account_button.setEnabled(true);
|
||||
|
||||
remove_mega_account_button.setEnabled(true);
|
||||
remove_elc_account_button.setEnabled(true);
|
||||
|
||||
remove_elc_account_button.setEnabled(true);
|
||||
add_mega_account_button.setEnabled(true);
|
||||
|
||||
add_mega_account_button.setEnabled(true);
|
||||
add_elc_account_button.setEnabled(true);
|
||||
|
||||
add_elc_account_button.setEnabled(true);
|
||||
unlock_accounts_button.setVisible(false);
|
||||
|
||||
unlock_accounts_button.setVisible(false);
|
||||
delete_all_accounts_button.setEnabled(true);
|
||||
|
||||
delete_all_accounts_button.setEnabled(true);
|
||||
_main_panel.getMega_accounts().entrySet().stream().map((pair) -> {
|
||||
HashMap<String, Object> data = (HashMap) pair.getValue();
|
||||
String pass = null;
|
||||
try {
|
||||
|
||||
_main_panel.getMega_accounts().entrySet().stream().map((pair) -> {
|
||||
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");
|
||||
|
||||
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};
|
||||
return new_row_data;
|
||||
}).forEachOrdered((new_row_data) -> {
|
||||
mega_model.addRow(new_row_data);
|
||||
});
|
||||
_main_panel.getElc_accounts().entrySet().stream().map((pair) -> {
|
||||
HashMap<String, Object> data = (HashMap) pair.getValue();
|
||||
String user = null, apikey = null;
|
||||
try {
|
||||
|
||||
} 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};
|
||||
return new_row_data;
|
||||
}).forEachOrdered((new_row_data) -> {
|
||||
mega_model.addRow(new_row_data);
|
||||
});
|
||||
_main_panel.getElc_accounts().entrySet().stream().map((pair) -> {
|
||||
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");
|
||||
|
||||
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");
|
||||
|
||||
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};
|
||||
return new_row_data;
|
||||
}).forEachOrdered((new_row_data) -> {
|
||||
elc_model.addRow(new_row_data);
|
||||
});
|
||||
|
||||
} 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};
|
||||
return new_row_data;
|
||||
}).forEachOrdered((new_row_data) -> {
|
||||
elc_model.addRow(new_row_data);
|
||||
});
|
||||
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();
|
||||
|
||||
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();
|
||||
|
||||
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();
|
||||
|
||||
}
|
||||
|
||||
_remember_master_pass = dialog.getRemember_checkbox().isSelected();
|
||||
|
||||
dialog.dispose();
|
||||
|
||||
unlock_accounts_button.setEnabled(true);
|
||||
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();
|
||||
|
||||
}
|
||||
|
||||
_remember_master_pass = dialog.getRemember_checkbox().isSelected();
|
||||
|
||||
dialog.dispose();
|
||||
|
||||
unlock_accounts_button.setEnabled(true);
|
||||
});
|
||||
}//GEN-LAST:event_unlock_accounts_buttonActionPerformed
|
||||
|
||||
@ -2433,142 +2406,137 @@ public class SettingsDialog extends javax.swing.JDialog {
|
||||
|
||||
final Dialog tthis = this;
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
SetMasterPasswordDialog dialog = new SetMasterPasswordDialog((Frame) getParent(), true, _main_panel.getMaster_pass_salt(), _main_panel);
|
||||
|
||||
SetMasterPasswordDialog dialog = new SetMasterPasswordDialog((Frame) getParent(), true, _main_panel.getMaster_pass_salt(), _main_panel);
|
||||
dialog.setLocationRelativeTo(tthis);
|
||||
|
||||
dialog.setLocationRelativeTo(tthis);
|
||||
dialog.setVisible(true);
|
||||
|
||||
dialog.setVisible(true);
|
||||
byte[] old_master_pass = null;
|
||||
|
||||
byte[] old_master_pass = null;
|
||||
if (_main_panel.getMaster_pass() != null) {
|
||||
|
||||
if (_main_panel.getMaster_pass() != null) {
|
||||
old_master_pass = new byte[_main_panel.getMaster_pass().length];
|
||||
|
||||
old_master_pass = new byte[_main_panel.getMaster_pass().length];
|
||||
System.arraycopy(_main_panel.getMaster_pass(), 0, old_master_pass, 0, _main_panel.getMaster_pass().length);
|
||||
}
|
||||
|
||||
System.arraycopy(_main_panel.getMaster_pass(), 0, old_master_pass, 0, _main_panel.getMaster_pass().length);
|
||||
}
|
||||
String old_master_pass_hash = _main_panel.getMaster_pass_hash();
|
||||
|
||||
String old_master_pass_hash = _main_panel.getMaster_pass_hash();
|
||||
if (dialog.isPass_ok()) {
|
||||
|
||||
if (dialog.isPass_ok()) {
|
||||
try {
|
||||
|
||||
try {
|
||||
DBTools.truncateMegaSessions();
|
||||
|
||||
DBTools.truncateMegaSessions();
|
||||
if (dialog.getNew_pass() != null && dialog.getNew_pass().length > 0) {
|
||||
|
||||
if (dialog.getNew_pass() != null && dialog.getNew_pass().length > 0) {
|
||||
_main_panel.setMaster_pass_hash(dialog.getNew_pass_hash());
|
||||
|
||||
_main_panel.setMaster_pass_hash(dialog.getNew_pass_hash());
|
||||
_main_panel.setMaster_pass(dialog.getNew_pass());
|
||||
|
||||
_main_panel.setMaster_pass(dialog.getNew_pass());
|
||||
} else {
|
||||
|
||||
_main_panel.setMaster_pass_hash(null);
|
||||
|
||||
_main_panel.setMaster_pass(null);
|
||||
}
|
||||
|
||||
dialog.deleteNewPass();
|
||||
|
||||
insertSettingValue("master_pass_hash", _main_panel.getMaster_pass_hash());
|
||||
|
||||
for (Map.Entry pair : _main_panel.getMega_accounts().entrySet()) {
|
||||
|
||||
HashMap<String, Object> data = (HashMap) pair.getValue();
|
||||
|
||||
String email, password, password_aes, user_hash;
|
||||
|
||||
email = (String) pair.getKey();
|
||||
|
||||
if (old_master_pass_hash != null) {
|
||||
|
||||
password = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("password")), old_master_pass, CryptTools.AES_ZERO_IV), "UTF-8");
|
||||
|
||||
password_aes = Bin2BASE64(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("password_aes")), old_master_pass, CryptTools.AES_ZERO_IV));
|
||||
|
||||
user_hash = Bin2BASE64(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("user_hash")), old_master_pass, CryptTools.AES_ZERO_IV));
|
||||
|
||||
} else {
|
||||
|
||||
_main_panel.setMaster_pass_hash(null);
|
||||
password = (String) data.get("password");
|
||||
|
||||
_main_panel.setMaster_pass(null);
|
||||
password_aes = (String) data.get("password_aes");
|
||||
|
||||
user_hash = (String) data.get("user_hash");
|
||||
}
|
||||
|
||||
dialog.deleteNewPass();
|
||||
if (_main_panel.getMaster_pass() != null) {
|
||||
|
||||
insertSettingValue("master_pass_hash", _main_panel.getMaster_pass_hash());
|
||||
password = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(password.getBytes("UTF-8"), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
|
||||
for (Map.Entry pair : _main_panel.getMega_accounts().entrySet()) {
|
||||
password_aes = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(BASE642Bin(password_aes), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
|
||||
HashMap<String, Object> data = (HashMap) pair.getValue();
|
||||
|
||||
String email, password, password_aes, user_hash;
|
||||
|
||||
email = (String) pair.getKey();
|
||||
|
||||
if (old_master_pass_hash != null) {
|
||||
|
||||
password = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("password")), old_master_pass, CryptTools.AES_ZERO_IV), "UTF-8");
|
||||
|
||||
password_aes = Bin2BASE64(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("password_aes")), old_master_pass, CryptTools.AES_ZERO_IV));
|
||||
|
||||
user_hash = Bin2BASE64(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("user_hash")), old_master_pass, CryptTools.AES_ZERO_IV));
|
||||
|
||||
} else {
|
||||
|
||||
password = (String) data.get("password");
|
||||
|
||||
password_aes = (String) data.get("password_aes");
|
||||
|
||||
user_hash = (String) data.get("user_hash");
|
||||
}
|
||||
|
||||
if (_main_panel.getMaster_pass() != null) {
|
||||
|
||||
password = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(password.getBytes("UTF-8"), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
|
||||
password_aes = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(BASE642Bin(password_aes), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
|
||||
user_hash = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(BASE642Bin(user_hash), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
}
|
||||
|
||||
data.put("password", password);
|
||||
|
||||
data.put("password_aes", password_aes);
|
||||
|
||||
data.put("user_hash", user_hash);
|
||||
|
||||
DBTools.insertMegaAccount(email, password, password_aes, user_hash);
|
||||
user_hash = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(BASE642Bin(user_hash), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
}
|
||||
|
||||
for (Map.Entry pair : _main_panel.getElc_accounts().entrySet()) {
|
||||
data.put("password", password);
|
||||
|
||||
HashMap<String, Object> data = (HashMap) pair.getValue();
|
||||
data.put("password_aes", password_aes);
|
||||
|
||||
String host, user, apikey;
|
||||
data.put("user_hash", user_hash);
|
||||
|
||||
host = (String) pair.getKey();
|
||||
|
||||
if (old_master_pass_hash != null) {
|
||||
|
||||
user = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("user")), old_master_pass, CryptTools.AES_ZERO_IV), "UTF-8");
|
||||
|
||||
apikey = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("apikey")), old_master_pass, CryptTools.AES_ZERO_IV), "UTF-8");
|
||||
|
||||
} else {
|
||||
|
||||
user = (String) data.get("user");
|
||||
|
||||
apikey = (String) data.get("apikey");
|
||||
|
||||
}
|
||||
|
||||
if (_main_panel.getMaster_pass() != null) {
|
||||
|
||||
user = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(user.getBytes("UTF-8"), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
|
||||
apikey = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(apikey.getBytes("UTF-8"), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
}
|
||||
|
||||
data.put("user", user);
|
||||
|
||||
data.put("apikey", apikey);
|
||||
|
||||
DBTools.insertELCAccount(host, user, apikey);
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
DBTools.insertMegaAccount(email, password, password_aes, user_hash);
|
||||
}
|
||||
|
||||
for (Map.Entry pair : _main_panel.getElc_accounts().entrySet()) {
|
||||
|
||||
HashMap<String, Object> data = (HashMap) pair.getValue();
|
||||
|
||||
String host, user, apikey;
|
||||
|
||||
host = (String) pair.getKey();
|
||||
|
||||
if (old_master_pass_hash != null) {
|
||||
|
||||
user = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("user")), old_master_pass, CryptTools.AES_ZERO_IV), "UTF-8");
|
||||
|
||||
apikey = new String(CryptTools.aes_cbc_decrypt_pkcs7(BASE642Bin((String) data.get("apikey")), old_master_pass, CryptTools.AES_ZERO_IV), "UTF-8");
|
||||
|
||||
} else {
|
||||
|
||||
user = (String) data.get("user");
|
||||
|
||||
apikey = (String) data.get("apikey");
|
||||
|
||||
}
|
||||
|
||||
if (_main_panel.getMaster_pass() != null) {
|
||||
|
||||
user = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(user.getBytes("UTF-8"), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
|
||||
apikey = Bin2BASE64(CryptTools.aes_cbc_encrypt_pkcs7(apikey.getBytes("UTF-8"), _main_panel.getMaster_pass(), CryptTools.AES_ZERO_IV));
|
||||
}
|
||||
|
||||
data.put("user", user);
|
||||
|
||||
data.put("apikey", apikey);
|
||||
|
||||
DBTools.insertELCAccount(host, user, apikey);
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
|
||||
encrypt_pass_checkbox.setSelected((_main_panel.getMaster_pass_hash() != null));
|
||||
|
||||
dialog.dispose();
|
||||
|
||||
encrypt_pass_checkbox.setEnabled(true);
|
||||
|
||||
}
|
||||
|
||||
encrypt_pass_checkbox.setSelected((_main_panel.getMaster_pass_hash() != null));
|
||||
|
||||
dialog.dispose();
|
||||
|
||||
encrypt_pass_checkbox.setEnabled(true);
|
||||
});
|
||||
}//GEN-LAST:event_encrypt_pass_checkboxActionPerformed
|
||||
|
||||
|
@ -118,12 +118,8 @@ public final class SmartMegaProxyManager {
|
||||
}
|
||||
}
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
_main_panel.getView().updateSmartProxyStatus("SmartProxy: ON (" + String.valueOf(getProxyCount()) + ")");
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
_main_panel.getView().updateSmartProxyStatus("SmartProxy: ON (" + String.valueOf(getProxyCount()) + ")");
|
||||
});
|
||||
|
||||
LOG.log(Level.INFO, "{0} Smart Proxy Manager: proxy list refreshed ({1})", new Object[]{Thread.currentThread().getName(), _proxy_list.size()});
|
||||
|
@ -62,26 +62,18 @@ public class StreamerDialog extends javax.swing.JDialog implements ClipboardChan
|
||||
|
||||
if (_main_panel.isUse_mega_account_down() && _main_panel.getMega_accounts().size() > 0) {
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
swingInvoke(() -> {
|
||||
String mega_default_down = _main_panel.getMega_account_down();
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
String mega_default_down = _main_panel.getMega_account_down();
|
||||
use_mega_account_down_combobox.addItem(mega_default_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);
|
||||
}
|
||||
_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);
|
||||
});
|
||||
});
|
||||
|
||||
} else {
|
||||
@ -187,84 +179,79 @@ public class StreamerDialog extends javax.swing.JDialog implements ClipboardChan
|
||||
|
||||
final Dialog tthis = this;
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
try {
|
||||
boolean error = false;
|
||||
|
||||
try {
|
||||
boolean error = false;
|
||||
String stream_link = null;
|
||||
|
||||
String stream_link = null;
|
||||
String link = URLDecoder.decode(original_link_textfield.getText(), "UTF-8").trim();
|
||||
|
||||
String link = URLDecoder.decode(original_link_textfield.getText(), "UTF-8").trim();
|
||||
if (link.length() > 0) {
|
||||
|
||||
if (link.length() > 0) {
|
||||
try {
|
||||
|
||||
try {
|
||||
if (findFirstRegex("://enc", link, 0) != null) {
|
||||
|
||||
if (findFirstRegex("://enc", link, 0) != null) {
|
||||
link = CryptTools.decryptMegaDownloaderLink(link);
|
||||
|
||||
link = CryptTools.decryptMegaDownloaderLink(link);
|
||||
} else if (findFirstRegex("://elc", link, 0) != null) {
|
||||
|
||||
} else if (findFirstRegex("://elc", link, 0) != null) {
|
||||
HashSet links = CryptTools.decryptELC(link, ((MainPanelView) tthis.getParent()).getMain_panel());
|
||||
|
||||
HashSet links = CryptTools.decryptELC(link, ((MainPanelView) tthis.getParent()).getMain_panel());
|
||||
if (links != null) {
|
||||
|
||||
if (links != null) {
|
||||
|
||||
link = (String) links.iterator().next();
|
||||
}
|
||||
link = (String) links.iterator().next();
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
|
||||
error = true;
|
||||
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
|
||||
String data;
|
||||
} catch (Exception ex) {
|
||||
|
||||
if (findFirstRegex("://mega(\\.co)?\\.nz/#[^fF]", link, 0) != null || findFirstRegex("https?://[^/]+/![^!]+![0-9a-fA-F]+", link, 0) != null) {
|
||||
error = true;
|
||||
|
||||
String selected_account = (String) use_mega_account_down_combobox.getSelectedItem();
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
|
||||
data = Bin2UrlBASE64(((selected_account != null ? selected_account : "") + "|" + link).getBytes("UTF-8"));
|
||||
String data;
|
||||
|
||||
stream_link = "http://localhost:1337/video/" + data;
|
||||
if (findFirstRegex("://mega(\\.co)?\\.nz/#[^fF]", link, 0) != null || findFirstRegex("https?://[^/]+/![^!]+![0-9a-fA-F]+", link, 0) != null) {
|
||||
|
||||
} else {
|
||||
String selected_account = (String) use_mega_account_down_combobox.getSelectedItem();
|
||||
|
||||
error = true;
|
||||
}
|
||||
data = Bin2UrlBASE64(((selected_account != null ? selected_account : "") + "|" + link).getBytes("UTF-8"));
|
||||
|
||||
stream_link = "http://localhost:1337/video/" + data;
|
||||
|
||||
} else {
|
||||
|
||||
error = true;
|
||||
}
|
||||
|
||||
if (error) {
|
||||
} else {
|
||||
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("Please, paste a Mega/MegaCrypter/ELC link!"), "Error", JOptionPane.ERROR_MESSAGE);
|
||||
|
||||
original_link_textfield.setText("");
|
||||
|
||||
dance_button.setEnabled(true);
|
||||
|
||||
original_link_textfield.setEnabled(true);
|
||||
|
||||
} else {
|
||||
|
||||
_mainPanelView.getMain_panel().getClipboardspy().detachObserver((ClipboardChangeObserver) tthis);
|
||||
copyTextToClipboard(stream_link);
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("Streaming link was copied to clipboard!\nRemember to keep MegaBasterd running in background while playing content."));
|
||||
dispose();
|
||||
getParent().dispatchEvent(new WindowEvent(tthis, WINDOW_CLOSING));
|
||||
}
|
||||
} catch (UnsupportedEncodingException ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
error = true;
|
||||
}
|
||||
|
||||
if (error) {
|
||||
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("Please, paste a Mega/MegaCrypter/ELC link!"), "Error", JOptionPane.ERROR_MESSAGE);
|
||||
|
||||
original_link_textfield.setText("");
|
||||
|
||||
dance_button.setEnabled(true);
|
||||
|
||||
original_link_textfield.setEnabled(true);
|
||||
|
||||
} else {
|
||||
|
||||
_mainPanelView.getMain_panel().getClipboardspy().detachObserver((ClipboardChangeObserver) tthis);
|
||||
copyTextToClipboard(stream_link);
|
||||
JOptionPane.showMessageDialog(tthis, LabelTranslatorSingleton.getInstance().translate("Streaming link was copied to clipboard!\nRemember to keep MegaBasterd running in background while playing content."));
|
||||
dispose();
|
||||
getParent().dispatchEvent(new WindowEvent(tthis, WINDOW_CLOSING));
|
||||
}
|
||||
} catch (UnsupportedEncodingException ex) {
|
||||
LOG.log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
});
|
||||
}//GEN-LAST:event_dance_buttonActionPerformed
|
||||
@ -286,48 +273,32 @@ public class StreamerDialog extends javax.swing.JDialog implements ClipboardChan
|
||||
|
||||
final StreamerDialog tthis = this;
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
boolean use_account = true;
|
||||
|
||||
try {
|
||||
|
||||
if (checkMegaAccountLoginAndShowMasterPassDialog(_main_panel, tthis, _selected_item) == null) {
|
||||
use_account = false;
|
||||
}
|
||||
|
||||
} catch (Exception ex) {
|
||||
THREAD_POOL.execute(() -> {
|
||||
boolean use_account = true;
|
||||
try {
|
||||
|
||||
if (checkMegaAccountLoginAndShowMasterPassDialog(_main_panel, tthis, _selected_item) == null) {
|
||||
use_account = false;
|
||||
}
|
||||
|
||||
if (!use_account) {
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
use_mega_account_down_combobox.setSelectedIndex(_main_panel.getMega_accounts().size());
|
||||
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getUse_mega_account_down_combobox().setEnabled(true);
|
||||
|
||||
getDance_button().setText(LabelTranslatorSingleton.getInstance().translate("Let's dance, baby"));
|
||||
|
||||
getDance_button().setEnabled(true);
|
||||
|
||||
pack();
|
||||
|
||||
}
|
||||
});
|
||||
} catch (Exception ex) {
|
||||
|
||||
use_account = false;
|
||||
}
|
||||
if (!use_account) {
|
||||
swingInvoke(() -> {
|
||||
use_mega_account_down_combobox.setSelectedIndex(_main_panel.getMega_accounts().size());
|
||||
});
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getUse_mega_account_down_combobox().setEnabled(true);
|
||||
|
||||
getDance_button().setText(LabelTranslatorSingleton.getInstance().translate("Let's dance, baby"));
|
||||
|
||||
getDance_button().setEnabled(true);
|
||||
|
||||
pack();
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
@ -337,17 +308,12 @@ public class StreamerDialog extends javax.swing.JDialog implements ClipboardChan
|
||||
@Override
|
||||
public void notifyClipboardChange() {
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
String link = extractFirstMegaLinkFromString(extractStringFromClipboardContents(_clipboardspy.getContents()));
|
||||
|
||||
String link = extractFirstMegaLinkFromString(extractStringFromClipboardContents(_clipboardspy.getContents()));
|
||||
|
||||
if (!link.contains("/#F!")) {
|
||||
|
||||
original_link_textfield.setText(link);
|
||||
}
|
||||
if (!link.contains("/#F!")) {
|
||||
|
||||
original_link_textfield.setText(link);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -6,7 +6,6 @@ import java.awt.Component;
|
||||
import java.awt.TrayIcon;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
import java.util.logging.Level;
|
||||
import static java.util.logging.Level.SEVERE;
|
||||
@ -312,23 +311,15 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
|
||||
getTransference_waitstart_queue().addAll(wait_array);
|
||||
|
||||
getTransference_waitstart_queue().forEach((t1) -> {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getScroll_panel().remove((Component) t1.getView());
|
||||
getScroll_panel().add((Component) t1.getView());
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getScroll_panel().remove((Component) t1.getView());
|
||||
getScroll_panel().add((Component) t1.getView());
|
||||
});
|
||||
});
|
||||
getTransference_finished_queue().forEach((t1) -> {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getScroll_panel().remove((Component) t1.getView());
|
||||
getScroll_panel().add((Component) t1.getView());
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getScroll_panel().remove((Component) t1.getView());
|
||||
getScroll_panel().add((Component) t1.getView());
|
||||
});
|
||||
});
|
||||
|
||||
@ -365,23 +356,15 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
|
||||
getTransference_waitstart_queue().addAll(wait_array);
|
||||
|
||||
getTransference_waitstart_queue().forEach((t1) -> {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getScroll_panel().remove((Component) t1.getView());
|
||||
getScroll_panel().add((Component) t1.getView());
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getScroll_panel().remove((Component) t1.getView());
|
||||
getScroll_panel().add((Component) t1.getView());
|
||||
});
|
||||
});
|
||||
getTransference_finished_queue().forEach((t2) -> {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getScroll_panel().remove((Component) t2.getView());
|
||||
getScroll_panel().add((Component) t2.getView());
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getScroll_panel().remove((Component) t2.getView());
|
||||
getScroll_panel().add((Component) t2.getView());
|
||||
});
|
||||
});
|
||||
|
||||
@ -415,14 +398,7 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
|
||||
|
||||
ArrayList<Transference> trans_list = new ArrayList(getTransference_waitstart_queue());
|
||||
|
||||
trans_list.sort(new Comparator<Transference>() {
|
||||
|
||||
@Override
|
||||
public int compare(Transference o1, Transference o2) {
|
||||
|
||||
return o1.getFile_name().compareToIgnoreCase(o2.getFile_name());
|
||||
}
|
||||
});
|
||||
trans_list.sort((Transference o1, Transference o2) -> o1.getFile_name().compareToIgnoreCase(o2.getFile_name()));
|
||||
|
||||
getTransference_waitstart_queue().clear();
|
||||
|
||||
@ -452,40 +428,35 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
|
||||
|
||||
private void _updateView() {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
if (_paused_all) {
|
||||
_pause_all_button.setText("RESUME ALL");
|
||||
} else {
|
||||
_pause_all_button.setText("PAUSE ALL");
|
||||
}
|
||||
|
||||
_pause_all_button.setVisible(!getTransference_running_list().isEmpty());
|
||||
|
||||
_clean_all_menu.getComponent().setEnabled(!_transference_preprocess_queue.isEmpty() || !_transference_provision_queue.isEmpty() || !getTransference_waitstart_queue().isEmpty());
|
||||
|
||||
if (!_transference_finished_queue.isEmpty() && _isOKFinishedInQueue()) {
|
||||
|
||||
_close_all_button.setText(LabelTranslatorSingleton.getInstance().translate("Clear finished"));
|
||||
|
||||
_close_all_button.setVisible(true);
|
||||
|
||||
} else {
|
||||
|
||||
_close_all_button.setVisible(false);
|
||||
}
|
||||
|
||||
_status.setText(_genStatus());
|
||||
|
||||
_main_panel.getView().getUnfreeze_transferences_button().setVisible(_main_panel.getDownload_manager().isFrozen() || _main_panel.getUpload_manager().isFrozen());
|
||||
|
||||
_main_panel.getView().revalidate();
|
||||
|
||||
_main_panel.getView().repaint();
|
||||
swingInvoke(() -> {
|
||||
if (_paused_all) {
|
||||
_pause_all_button.setText("RESUME ALL");
|
||||
} else {
|
||||
_pause_all_button.setText("PAUSE ALL");
|
||||
}
|
||||
|
||||
_pause_all_button.setVisible(!getTransference_running_list().isEmpty());
|
||||
|
||||
_clean_all_menu.getComponent().setEnabled(!_transference_preprocess_queue.isEmpty() || !_transference_provision_queue.isEmpty() || !getTransference_waitstart_queue().isEmpty());
|
||||
|
||||
if (!_transference_finished_queue.isEmpty() && _isOKFinishedInQueue()) {
|
||||
|
||||
_close_all_button.setText(LabelTranslatorSingleton.getInstance().translate("Clear finished"));
|
||||
|
||||
_close_all_button.setVisible(true);
|
||||
|
||||
} else {
|
||||
|
||||
_close_all_button.setVisible(false);
|
||||
}
|
||||
|
||||
_status.setText(_genStatus());
|
||||
|
||||
_main_panel.getView().getUnfreeze_transferences_button().setVisible(_main_panel.getDownload_manager().isFrozen() || _main_panel.getUpload_manager().isFrozen());
|
||||
|
||||
_main_panel.getView().revalidate();
|
||||
|
||||
_main_panel.getView().repaint();
|
||||
});
|
||||
|
||||
}
|
||||
@ -528,23 +499,22 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
|
||||
|
||||
setRemoving_transferences(true);
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
|
||||
if (!getTransference_remove_queue().isEmpty()) {
|
||||
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
|
||||
|
||||
ArrayList<Transference> transferences = new ArrayList(getTransference_remove_queue());
|
||||
if (!getTransference_remove_queue().isEmpty()) {
|
||||
|
||||
getTransference_remove_queue().clear();
|
||||
ArrayList<Transference> transferences = new ArrayList(getTransference_remove_queue());
|
||||
|
||||
remove(transferences.toArray(new Transference[transferences.size()]));
|
||||
}
|
||||
getTransference_remove_queue().clear();
|
||||
|
||||
setRemoving_transferences(false);
|
||||
|
||||
secureNotify();
|
||||
remove(transferences.toArray(new Transference[transferences.size()]));
|
||||
}
|
||||
|
||||
setRemoving_transferences(false);
|
||||
|
||||
secureNotify();
|
||||
});
|
||||
}
|
||||
|
||||
@ -552,35 +522,33 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
|
||||
|
||||
setPreprocessing_transferences(true);
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
|
||||
while (!getTransference_preprocess_queue().isEmpty()) {
|
||||
Runnable run = getTransference_preprocess_queue().poll();
|
||||
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
|
||||
|
||||
if (run != null) {
|
||||
while (!getTransference_preprocess_queue().isEmpty()) {
|
||||
Runnable run = getTransference_preprocess_queue().poll();
|
||||
|
||||
boolean run_error;
|
||||
if (run != null) {
|
||||
|
||||
do {
|
||||
run_error = false;
|
||||
boolean run_error;
|
||||
|
||||
try {
|
||||
run.run();
|
||||
} catch (Exception ex) {
|
||||
run_error = true;
|
||||
LOG.log(SEVERE, null, ex);
|
||||
}
|
||||
} while (run_error);
|
||||
}
|
||||
do {
|
||||
run_error = false;
|
||||
|
||||
try {
|
||||
run.run();
|
||||
} catch (Exception ex) {
|
||||
run_error = true;
|
||||
LOG.log(SEVERE, null, ex);
|
||||
}
|
||||
} while (run_error);
|
||||
}
|
||||
|
||||
setPreprocessing_transferences(false);
|
||||
|
||||
secureNotify();
|
||||
|
||||
}
|
||||
|
||||
setPreprocessing_transferences(false);
|
||||
|
||||
secureNotify();
|
||||
});
|
||||
}
|
||||
|
||||
@ -590,59 +558,38 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
|
||||
|
||||
_tray_icon_finish = false;
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
|
||||
|
||||
while (!getTransference_provision_queue().isEmpty()) {
|
||||
Transference transference = getTransference_provision_queue().poll();
|
||||
while (!getTransference_provision_queue().isEmpty()) {
|
||||
Transference transference = getTransference_provision_queue().poll();
|
||||
|
||||
if (transference != null) {
|
||||
if (transference != null) {
|
||||
|
||||
provision(transference);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
synchronized (getQueue_sort_lock()) {
|
||||
|
||||
if (!isPreprocessing_transferences() && !isProvisioning_transferences()) {
|
||||
|
||||
sortTransferenceWaitStartQueue();
|
||||
|
||||
getTransference_waitstart_queue().forEach((up) -> {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getScroll_panel().remove((Component) up.getView());
|
||||
getScroll_panel().add((Component) up.getView());
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
getTransference_finished_queue().forEach((up) -> {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getScroll_panel().remove((Component) up.getView());
|
||||
getScroll_panel().add((Component) up.getView());
|
||||
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
provision(transference);
|
||||
|
||||
}
|
||||
|
||||
_frozen = false;
|
||||
|
||||
setProvisioning_transferences(false);
|
||||
|
||||
secureNotify();
|
||||
|
||||
}
|
||||
synchronized (getQueue_sort_lock()) {
|
||||
if (!isPreprocessing_transferences() && !isProvisioning_transferences()) {
|
||||
sortTransferenceWaitStartQueue();
|
||||
getTransference_waitstart_queue().forEach((up) -> {
|
||||
swingInvoke(() -> {
|
||||
getScroll_panel().remove((Component) up.getView());
|
||||
getScroll_panel().add((Component) up.getView());
|
||||
});
|
||||
});
|
||||
getTransference_finished_queue().forEach((up) -> {
|
||||
swingInvoke(() -> {
|
||||
getScroll_panel().remove((Component) up.getView());
|
||||
getScroll_panel().add((Component) up.getView());
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
_frozen = false;
|
||||
setProvisioning_transferences(false);
|
||||
secureNotify();
|
||||
});
|
||||
|
||||
}
|
||||
@ -651,41 +598,34 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
|
||||
|
||||
setStarting_transferences(true);
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
THREAD_POOL.execute(() -> {
|
||||
|
||||
while (!_frozen && !_main_panel.isExit() && !_paused_all && !getTransference_waitstart_queue().isEmpty() && getTransference_running_list().size() < _max_running_trans) {
|
||||
Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
|
||||
|
||||
Transference transference = getTransference_waitstart_queue().peek();
|
||||
while (!_frozen && !_main_panel.isExit() && !_paused_all && !getTransference_waitstart_queue().isEmpty() && getTransference_running_list().size() < _max_running_trans) {
|
||||
|
||||
if (transference != null && !transference.isFrozen()) {
|
||||
Transference transference = getTransference_waitstart_queue().peek();
|
||||
|
||||
getTransference_waitstart_queue().poll();
|
||||
if (transference != null && !transference.isFrozen()) {
|
||||
|
||||
start(transference);
|
||||
getTransference_waitstart_queue().poll();
|
||||
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException ex) {
|
||||
Logger.getLogger(TransferenceManager.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
start(transference);
|
||||
|
||||
} else {
|
||||
} else {
|
||||
|
||||
_frozen = true;
|
||||
_frozen = true;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
synchronized (getWait_queue_lock()) {
|
||||
getWait_queue_lock().notifyAll();
|
||||
}
|
||||
|
||||
setStarting_transferences(false);
|
||||
|
||||
secureNotify();
|
||||
}
|
||||
|
||||
synchronized (getWait_queue_lock()) {
|
||||
getWait_queue_lock().notifyAll();
|
||||
}
|
||||
|
||||
setStarting_transferences(false);
|
||||
|
||||
secureNotify();
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -281,6 +281,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
|
||||
return _folder_link;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isRestart() {
|
||||
return _restart;
|
||||
}
|
||||
@ -370,6 +371,8 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
|
||||
try {
|
||||
_file_size = the_file.length();
|
||||
|
||||
_progress_bar_rate = Integer.MAX_VALUE / (double) _file_size;
|
||||
|
||||
HashMap upload_progress = DBTools.selectUploadProgress(getFile_name(), getMa().getFull_email());
|
||||
|
||||
if (upload_progress == null) {
|
||||
@ -404,48 +407,7 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
|
||||
_status_error = "PROVISION FAILED";
|
||||
|
||||
if (_file_name != null) {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getFile_name_label().setVisible(true);
|
||||
|
||||
getView().getFile_name_label().setText(_file_name);
|
||||
|
||||
getView().getFile_name_label().setText(truncateText(_file_name, 100));
|
||||
|
||||
getView().getFile_name_label().setToolTipText(_file_name);
|
||||
|
||||
getView().getFile_size_label().setVisible(true);
|
||||
|
||||
getView().getFile_size_label().setText(formatBytes(_file_size));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getView().hideAllExceptStatus();
|
||||
|
||||
getView().printStatusError(_status_error);
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getRestart_button().setVisible(true);
|
||||
}
|
||||
});
|
||||
|
||||
} else {
|
||||
|
||||
getView().printStatusNormal(LabelTranslatorSingleton.getInstance().translate(_frozen ? "(FROZEN) Waiting to start (" : "Waiting to start (") + _ma.getFull_email() + ") ...");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
swingInvoke(() -> {
|
||||
getView().getFile_name_label().setVisible(true);
|
||||
|
||||
getView().getFile_name_label().setText(_file_name);
|
||||
@ -457,20 +419,41 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
|
||||
getView().getFile_size_label().setVisible(true);
|
||||
|
||||
getView().getFile_size_label().setText(formatBytes(_file_size));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
getView().hideAllExceptStatus();
|
||||
|
||||
getView().printStatusError(_status_error);
|
||||
|
||||
swingInvoke(() -> {
|
||||
getView().getRestart_button().setVisible(true);
|
||||
});
|
||||
|
||||
} else {
|
||||
|
||||
getView().printStatusNormal(LabelTranslatorSingleton.getInstance().translate(_frozen ? "(FROZEN) Waiting to start (" : "Waiting to start (") + _ma.getFull_email() + ") ...");
|
||||
|
||||
swingInvoke(() -> {
|
||||
getView().getFile_name_label().setVisible(true);
|
||||
|
||||
getView().getFile_name_label().setText(_file_name);
|
||||
|
||||
getView().getFile_name_label().setText(truncateText(_file_name, 100));
|
||||
|
||||
getView().getFile_name_label().setToolTipText(_file_name);
|
||||
|
||||
getView().getFile_size_label().setVisible(true);
|
||||
|
||||
getView().getFile_size_label().setText(formatBytes(_file_size));
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getClose_button().setVisible(true);
|
||||
getView().getQueue_down_button().setVisible(true);
|
||||
getView().getQueue_up_button().setVisible(true);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getClose_button().setVisible(true);
|
||||
getView().getQueue_down_button().setVisible(true);
|
||||
getView().getQueue_up_button().setVisible(true);
|
||||
});
|
||||
|
||||
}
|
||||
@ -628,13 +611,8 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
|
||||
|
||||
if (!_chunkworkers.isEmpty()) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getSlots_spinner().setEnabled(false);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getSlots_spinner().setEnabled(false);
|
||||
});
|
||||
|
||||
int i = _chunkworkers.size() - 1;
|
||||
@ -674,14 +652,9 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
|
||||
|
||||
LOG.log(Level.INFO, "{0} Uploader hello! {1}", new Object[]{Thread.currentThread().getName(), this.getFile_name()});
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getQueue_down_button().setVisible(false);
|
||||
getView().getQueue_up_button().setVisible(false);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getQueue_down_button().setVisible(false);
|
||||
getView().getQueue_up_button().setVisible(false);
|
||||
});
|
||||
|
||||
getView().printStatusNormal("Starting upload, please wait...");
|
||||
@ -739,21 +712,14 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
|
||||
|
||||
_byte_file_iv = i32a2bin(file_iv);
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getView().getClose_button().setVisible(false);
|
||||
|
||||
getView().getClose_button().setVisible(false);
|
||||
|
||||
getView().getCbc_label().setVisible(true);
|
||||
}
|
||||
getView().getCbc_label().setVisible(true);
|
||||
});
|
||||
|
||||
if (_file_size > 0) {
|
||||
|
||||
_progress_bar_rate = Integer.MAX_VALUE / (double) _file_size;
|
||||
|
||||
getView().updateProgressBar(0);
|
||||
|
||||
} else {
|
||||
@ -785,32 +751,22 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
|
||||
_thread_pool.execute(c);
|
||||
}
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getView().getSlots_label().setVisible(true);
|
||||
|
||||
getView().getSlots_label().setVisible(true);
|
||||
getView().getSlots_spinner().setVisible(true);
|
||||
|
||||
getView().getSlots_spinner().setVisible(true);
|
||||
|
||||
getView().getSlot_status_label().setVisible(true);
|
||||
}
|
||||
getView().getSlot_status_label().setVisible(true);
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
getView().printStatusNormal(LabelTranslatorSingleton.getInstance().translate("Uploading file to mega (") + _ma.getFull_email() + ") ...");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getView().getPause_button().setVisible(true);
|
||||
|
||||
getView().getPause_button().setVisible(true);
|
||||
|
||||
getView().getProgress_pbar().setVisible(true);
|
||||
}
|
||||
getView().getProgress_pbar().setVisible(true);
|
||||
});
|
||||
|
||||
secureWait();
|
||||
@ -844,14 +800,9 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
|
||||
|
||||
getMain_panel().getGlobal_up_speed().detachTransference(this);
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
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);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
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);
|
||||
}
|
||||
});
|
||||
|
||||
@ -909,13 +860,8 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
|
||||
|
||||
_file_link = _ma.getPublicFileLink(_fid, i32a2bin(node_key));
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getFile_link_button().setEnabled(true);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getFile_link_button().setEnabled(true);
|
||||
});
|
||||
|
||||
} catch (Exception ex) {
|
||||
@ -1004,71 +950,45 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
|
||||
|
||||
getMain_panel().getUpload_manager().getTransference_finished_queue().add(this);
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getMain_panel().getUpload_manager().getScroll_panel().remove(getView());
|
||||
|
||||
getMain_panel().getUpload_manager().getScroll_panel().remove(getView());
|
||||
getMain_panel().getUpload_manager().getScroll_panel().add(getView());
|
||||
|
||||
getMain_panel().getUpload_manager().getScroll_panel().add(getView());
|
||||
|
||||
getMain_panel().getUpload_manager().secureNotify();
|
||||
|
||||
}
|
||||
getMain_panel().getUpload_manager().secureNotify();
|
||||
});
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
getView().getClose_button().setVisible(true);
|
||||
|
||||
getView().getClose_button().setVisible(true);
|
||||
if (_status_error == null && !_canceled) {
|
||||
|
||||
if (_status_error == null && !_canceled) {
|
||||
getView().getClose_button().setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons8-ok-30.png")));
|
||||
|
||||
getView().getClose_button().setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/icons8-ok-30.png")));
|
||||
}
|
||||
|
||||
}
|
||||
if (_canceled || _status_error == null) {
|
||||
|
||||
if (_canceled || _status_error == null) {
|
||||
|
||||
getView().getRestart_button().setVisible(true);
|
||||
}
|
||||
getView().getRestart_button().setVisible(true);
|
||||
}
|
||||
});
|
||||
|
||||
if (_status_error != null && !_fatal_error) {
|
||||
THREAD_POOL.execute(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
for (int i = 3; !_closed && i > 0; i--) {
|
||||
|
||||
final int j = i;
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
getView().getRestart_button().setText("Restart (" + String.valueOf(j) + " secs...)");
|
||||
}
|
||||
});
|
||||
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException ex) {
|
||||
Logger.getLogger(Upload.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
THREAD_POOL.execute(() -> {
|
||||
for (int i = 3; !_closed && i > 0; i--) {
|
||||
final int j = i;
|
||||
swingInvoke(() -> {
|
||||
getView().getRestart_button().setText("Restart (" + String.valueOf(j) + " secs...)");
|
||||
});
|
||||
try {
|
||||
Thread.sleep(1000);
|
||||
} catch (InterruptedException ex) {
|
||||
Logger.getLogger(Upload.class.getName()).log(Level.SEVERE, ex.getMessage());
|
||||
}
|
||||
|
||||
if (!_closed) {
|
||||
LOG.log(Level.INFO, "{0} Uploader {1} AUTO RESTARTING UPLOAD...", new Object[]{Thread.currentThread().getName(), getFile_name()});
|
||||
restart();
|
||||
}
|
||||
|
||||
}
|
||||
if (!_closed) {
|
||||
LOG.log(Level.INFO, "{0} Uploader {1} AUTO RESTARTING UPLOAD...", new Object[]{Thread.currentThread().getName(), getFile_name()});
|
||||
restart();
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -1086,14 +1006,9 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
|
||||
|
||||
getView().printStatusNormal("Upload paused!");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME UPLOAD"));
|
||||
getView().getPause_button().setEnabled(true);
|
||||
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME UPLOAD"));
|
||||
getView().getPause_button().setEnabled(true);
|
||||
});
|
||||
|
||||
}
|
||||
@ -1105,14 +1020,9 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
|
||||
|
||||
getView().printStatusNormal("Upload paused!");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME UPLOAD"));
|
||||
getView().getPause_button().setEnabled(true);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME UPLOAD"));
|
||||
getView().getPause_button().setEnabled(true);
|
||||
});
|
||||
|
||||
}
|
||||
@ -1127,24 +1037,16 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
|
||||
|
||||
_finishing_upload = true;
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getView().getSlots_spinner().setEnabled(false);
|
||||
swingInvoke(() -> {
|
||||
getView().getSlots_spinner().setEnabled(false);
|
||||
|
||||
getView().getSlots_spinner().setValue((int) getView().getSlots_spinner().getValue() - 1);
|
||||
}
|
||||
getView().getSlots_spinner().setValue((int) getView().getSlots_spinner().getValue() - 1);
|
||||
});
|
||||
|
||||
} else if (!_finishing_upload) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getView().getSlots_spinner().setEnabled(true);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getSlots_spinner().setEnabled(true);
|
||||
});
|
||||
|
||||
}
|
||||
@ -1153,13 +1055,9 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
|
||||
|
||||
getView().printStatusNormal("Upload paused!");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME UPLOAD"));
|
||||
getView().getPause_button().setEnabled(true);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getView().getPause_button().setText(LabelTranslatorSingleton.getInstance().translate("RESUME UPLOAD"));
|
||||
getView().getPause_button().setEnabled(true);
|
||||
});
|
||||
|
||||
}
|
||||
@ -1227,17 +1125,16 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
|
||||
|
||||
_progress = progress;
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
getView().updateProgressBar(_progress, _progress_bar_rate);
|
||||
}
|
||||
});
|
||||
|
||||
getMain_panel().getUpload_manager().increment_total_progress(_progress - old_progress);
|
||||
|
||||
int old_percent_progress = (int) Math.floor(((double) old_progress / _file_size) * 100);
|
||||
|
||||
int new_percent_progress = (int) Math.floor(((double) progress / _file_size) * 100);
|
||||
|
||||
if (new_percent_progress > old_percent_progress) {
|
||||
|
||||
getView().updateProgressBar(_progress, _progress_bar_rate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -38,12 +38,8 @@ public class UploadManager extends TransferenceManager {
|
||||
|
||||
@Override
|
||||
public void provision(final Transference upload) {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getScroll_panel().add(((Upload) upload).getView());
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getScroll_panel().add(((Upload) upload).getView());
|
||||
});
|
||||
|
||||
((Upload) upload).provisionIt();
|
||||
@ -66,23 +62,15 @@ public class UploadManager extends TransferenceManager {
|
||||
getTransference_waitstart_queue().addAll(aux);
|
||||
|
||||
getTransference_waitstart_queue().forEach((t1) -> {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getScroll_panel().remove((Component) t1.getView());
|
||||
getScroll_panel().add((Component) t1.getView());
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getScroll_panel().remove((Component) t1.getView());
|
||||
getScroll_panel().add((Component) t1.getView());
|
||||
});
|
||||
});
|
||||
getTransference_finished_queue().forEach((t2) -> {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getScroll_panel().remove((Component) t2.getView());
|
||||
getScroll_panel().add((Component) t2.getView());
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getScroll_panel().remove((Component) t2.getView());
|
||||
getScroll_panel().add((Component) t2.getView());
|
||||
});
|
||||
});
|
||||
|
||||
@ -106,12 +94,8 @@ public class UploadManager extends TransferenceManager {
|
||||
|
||||
for (final Transference u : uploads) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
getScroll_panel().remove(((Upload) u).getView());
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
getScroll_panel().remove(((Upload) u).getView());
|
||||
});
|
||||
|
||||
getTransference_waitstart_queue().remove(u);
|
||||
|
@ -353,15 +353,7 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView {
|
||||
|
||||
private void slots_spinnerStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_slots_spinnerStateChanged
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
_upload.checkSlotsAndWorkers();
|
||||
|
||||
}
|
||||
});
|
||||
THREAD_POOL.execute(_upload::checkSlotsAndWorkers);
|
||||
}//GEN-LAST:event_slots_spinnerStateChanged
|
||||
|
||||
private void close_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_close_buttonActionPerformed
|
||||
@ -390,20 +382,15 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView {
|
||||
|
||||
public void hideAllExceptStatus() {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
for (JComponent c : new JComponent[]{speed_label, slots_spinner, slots_label, slot_status_label, pause_button, stop_button, progress_pbar, cbc_label}) {
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
c.setVisible(false);
|
||||
}
|
||||
for (JComponent c : new JComponent[]{status_label, file_name_label, file_size_label}) {
|
||||
|
||||
for (JComponent c : new JComponent[]{status_label, file_name_label, file_size_label}) {
|
||||
|
||||
c.setVisible(true);
|
||||
}
|
||||
c.setVisible(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -440,23 +427,11 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView {
|
||||
|
||||
queue_up_button.setEnabled(false);
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
_upload.upWaitQueue();
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
queue_up_button.setEnabled(true);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
THREAD_POOL.execute(() -> {
|
||||
_upload.upWaitQueue();
|
||||
swingInvoke(() -> {
|
||||
queue_up_button.setEnabled(true);
|
||||
});
|
||||
});
|
||||
}//GEN-LAST:event_queue_up_buttonActionPerformed
|
||||
|
||||
@ -465,36 +440,18 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView {
|
||||
|
||||
queue_down_button.setEnabled(false);
|
||||
|
||||
THREAD_POOL.execute(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
_upload.downWaitQueue();
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
queue_down_button.setEnabled(true);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
THREAD_POOL.execute(() -> {
|
||||
_upload.downWaitQueue();
|
||||
swingInvoke(() -> {
|
||||
queue_down_button.setEnabled(true);
|
||||
});
|
||||
});
|
||||
}//GEN-LAST:event_queue_down_buttonActionPerformed
|
||||
|
||||
public void updateCBC(String status) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
cbc_label.setText(status);
|
||||
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
cbc_label.setText(status);
|
||||
});
|
||||
}
|
||||
|
||||
@ -503,20 +460,15 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView {
|
||||
|
||||
printStatusNormal("Pausing upload ...");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
for (JComponent c : new JComponent[]{pause_button, speed_label, slots_label, slots_spinner, progress_pbar, file_name_label, file_size_label}) {
|
||||
|
||||
for (JComponent c : new JComponent[]{pause_button, speed_label, slots_label, slots_spinner, progress_pbar, file_name_label, file_size_label}) {
|
||||
c.setEnabled(false);
|
||||
}
|
||||
|
||||
c.setEnabled(false);
|
||||
}
|
||||
for (JComponent c : new JComponent[]{stop_button}) {
|
||||
|
||||
for (JComponent c : new JComponent[]{stop_button}) {
|
||||
|
||||
c.setVisible(true);
|
||||
}
|
||||
c.setVisible(true);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -526,16 +478,10 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView {
|
||||
|
||||
printStatusNormal(status);
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
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);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
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);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -545,42 +491,32 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView {
|
||||
|
||||
printStatusNormal("Uploading file to mega ...");
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
for (JComponent c : new JComponent[]{pause_button, speed_label, slots_label, slots_spinner, progress_pbar, file_name_label, file_size_label}) {
|
||||
|
||||
for (JComponent c : new JComponent[]{pause_button, speed_label, slots_label, slots_spinner, progress_pbar, file_name_label, file_size_label}) {
|
||||
|
||||
c.setEnabled(true);
|
||||
}
|
||||
|
||||
for (JComponent c : new JComponent[]{stop_button}) {
|
||||
|
||||
c.setVisible(false);
|
||||
}
|
||||
|
||||
pause_button.setText(LabelTranslatorSingleton.getInstance().translate("PAUSE UPLOAD"));
|
||||
_upload.getMain_panel().getView().getPause_all_up_button().setVisible(true);
|
||||
c.setEnabled(true);
|
||||
}
|
||||
|
||||
for (JComponent c : new JComponent[]{stop_button}) {
|
||||
|
||||
c.setVisible(false);
|
||||
}
|
||||
|
||||
pause_button.setText(LabelTranslatorSingleton.getInstance().translate("PAUSE UPLOAD"));
|
||||
_upload.getMain_panel().getView().getPause_all_up_button().setVisible(true);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateSpeed(final String speed, final Boolean visible) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
swingInvoke(() -> {
|
||||
if (speed != null) {
|
||||
speed_label.setText(speed);
|
||||
}
|
||||
|
||||
if (speed != null) {
|
||||
speed_label.setText(speed);
|
||||
}
|
||||
|
||||
if (visible != null) {
|
||||
speed_label.setVisible(visible);
|
||||
}
|
||||
if (visible != null) {
|
||||
speed_label.setVisible(visible);
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -588,67 +524,42 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView {
|
||||
@Override
|
||||
public void updateProgressBar(final long progress, final double bar_rate) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
progress_pbar.setValue((int) Math.floor(bar_rate * progress));
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
progress_pbar.setValue((int) Math.floor(bar_rate * progress));
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void updateProgressBar(final int value) {
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
progress_pbar.setValue(value);
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
progress_pbar.setValue(value);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void printStatusError(final String message) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
status_label.setForeground(Color.red);
|
||||
status_label.setText(LabelTranslatorSingleton.getInstance().translate(message));
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
status_label.setForeground(Color.red);
|
||||
status_label.setText(LabelTranslatorSingleton.getInstance().translate(message));
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void printStatusOK(final String message) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
status_label.setForeground(new Color(0, 170, 0));
|
||||
status_label.setText(LabelTranslatorSingleton.getInstance().translate(message));
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
status_label.setForeground(new Color(0, 170, 0));
|
||||
status_label.setText(LabelTranslatorSingleton.getInstance().translate(message));
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void printStatusNormal(final String message) {
|
||||
|
||||
swingInvoke(
|
||||
new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
||||
status_label.setForeground(new Color(102, 102, 102));
|
||||
status_label.setText(LabelTranslatorSingleton.getInstance().translate(message));
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
status_label.setForeground(new Color(102, 102, 102));
|
||||
status_label.setText(LabelTranslatorSingleton.getInstance().translate(message));
|
||||
});
|
||||
|
||||
}
|
||||
@ -670,27 +581,16 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView {
|
||||
|
||||
final String status = (conta_exit > 0 ? "Tot removing: " + conta_exit : "") + (conta_error > 0 ? ((conta_exit > 0 ? " / " : "") + "Tot error: " + conta_error) : "");
|
||||
|
||||
swingInvoke(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
slot_status_label.setForeground(status_color);
|
||||
slot_status_label.setText(LabelTranslatorSingleton.getInstance().translate(status));
|
||||
}
|
||||
swingInvoke(() -> {
|
||||
slot_status_label.setForeground(status_color);
|
||||
slot_status_label.setText(LabelTranslatorSingleton.getInstance().translate(status));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSlots() {
|
||||
return (int) swingInvokeAndWaitForReturn(new Callable() {
|
||||
|
||||
@Override
|
||||
public Object call() throws Exception {
|
||||
|
||||
return getSlots_spinner().getValue();
|
||||
}
|
||||
|
||||
});
|
||||
return (int) swingInvokeAndWaitForReturn((Callable) getSlots_spinner()::getValue);
|
||||
}
|
||||
|
||||
// Variables declaration - do not modify//GEN-BEGIN:variables
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 207 KiB After Width: | Height: | Size: 215 KiB |
Loading…
x
Reference in New Issue
Block a user