-GUI bug fix and optimization
-JDK 8 rafactorization
This commit is contained in:
tonikelope 2019-10-06 12:33:53 +02:00
parent 9dc17db836
commit d4eb03f81f
24 changed files with 1772 additions and 2899 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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