diff --git a/README.md b/README.md
index 3a472e469..58c9f3400 100644
--- a/README.md
+++ b/README.md
@@ -10,3 +10,5 @@
Watch demo

+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index f38d87e0f..39b729119 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.tonikelope
MegaBasterd
- 7.31
+ 7.32
jar
diff --git a/src/main/java/com/tonikelope/megabasterd/LabelTranslatorSingleton.java b/src/main/java/com/tonikelope/megabasterd/LabelTranslatorSingleton.java
index 6749366a3..2006fddc6 100644
--- a/src/main/java/com/tonikelope/megabasterd/LabelTranslatorSingleton.java
+++ b/src/main/java/com/tonikelope/megabasterd/LabelTranslatorSingleton.java
@@ -38,6 +38,8 @@ public class LabelTranslatorSingleton {
private void Spanish() {
+ _addTranslation("WARNING: USING MEGA API WITHOUT API KEY MAY VIOLATE ITS TERM OF USE. YOU SHOULD GET A KEY -> https://mega.nz/sdk", "AVISO: USAR LA API D EMEGA SI UNA API KEY PUEDE VIOLAR SUS TÉRMINOS DE USO. DEBES CONSEGUIR UNA API KEY -> https://mega.nz/sdk");
+ _addTranslation("WARNING: USING MEGA API WITHOUT API KEY MAY VIOLATE ITS TERM OF USE. YOU SHOULD GET A KEY -> https://mega.nz/sdk (and set it in MegaBasterd ADVANCED SETTINGS)", "AVISO: USAR LA API DE MEGA SIN UNA API KEY PUEDE VIOLAR SUS TÉRMINOS DE USO. DEBES CONSEGUIR UNA API KEY -> https://mega.nz/sdk (e introducirla en AJUSTES AVANZADOS de MegaBasterd)");
_addTranslation("WARNING: Using proxies or VPN to bypass MEGA's daily download limitation may violate its Terms of Use. USE THIS OPTION AT YOUR OWN RISK.", "AVISO: El uso de proxies o VPN para saltar el límite diario de descarga de MEGA podría violar sus Términos de Uso. UTILIZA ESTA OPCIÓN BAJO TU RESPONSABILIDAD.");
_addTranslation("Using proxies or VPN to bypass MEGA's daily download limitation may violate its Terms of Use.\n\nUSE THIS OPTION AT YOUR OWN RISK.", "El uso de proxies o VPN para saltar el límite diario de descarga de MEGA podría violar sus Términos de Uso.\n\nUTILIZA ESTA OPCIÓN BAJO TU RESPONSABILIDAD.");
_addTranslation("Execute this command when MEGA download limit is reached:", "Ejecutar este comando cuando se alcance el límite de descarga de MEGA:");
diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanel.java b/src/main/java/com/tonikelope/megabasterd/MainPanel.java
index 417aa5855..b6b0244d7 100644
--- a/src/main/java/com/tonikelope/megabasterd/MainPanel.java
+++ b/src/main/java/com/tonikelope/megabasterd/MainPanel.java
@@ -60,7 +60,7 @@ import javax.swing.UIManager;
*/
public final class MainPanel {
- public static final String VERSION = "7.31";
+ public static final String VERSION = "7.32";
public static final boolean FORCE_SMART_PROXY = false; //TRUE FOR DEBUGING SMART PROXY
public static final int THROTTLE_SLICE_SIZE = 16 * 1024;
public static final int DEFAULT_BYTE_BUFFER_SIZE = 16 * 1024;
@@ -416,6 +416,11 @@ public final class MainPanel {
resumeUploads();
+ if (MegaAPI.API_KEY == null) {
+ JOptionPane.showMessageDialog(this._view, LabelTranslatorSingleton.getInstance().translate("WARNING: USING MEGA API WITHOUT API KEY MAY VIOLATE ITS TERM OF USE. YOU SHOULD GET A KEY -> https://mega.nz/sdk (and set it in MegaBasterd ADVANCED SETTINGS)"), "MEGA API KEY ERROR", JOptionPane.ERROR_MESSAGE);
+ openBrowserURL("https://mega.nz/sdk");
+ }
+
}
public static Boolean getResume_uploads() {
@@ -869,6 +874,16 @@ public final class MainPanel {
_debug_file = false;
}
+ String api_key = DBTools.selectSettingValue("mega_api_key");
+
+ if (api_key != null && !"".equals(api_key)) {
+
+ MegaAPI.API_KEY = api_key.trim();
+
+ } else {
+ MegaAPI.API_KEY = null;
+ }
+
}
public static synchronized void run_external_command() {
diff --git a/src/main/java/com/tonikelope/megabasterd/MegaAPI.java b/src/main/java/com/tonikelope/megabasterd/MegaAPI.java
index f0775d665..2a5ba79f1 100644
--- a/src/main/java/com/tonikelope/megabasterd/MegaAPI.java
+++ b/src/main/java/com/tonikelope/megabasterd/MegaAPI.java
@@ -30,7 +30,7 @@ import javax.net.ssl.HttpsURLConnection;
public class MegaAPI implements Serializable {
public static final String API_URL = "https://g.api.mega.co.nz";
- public static final String API_KEY = null;
+ public static String API_KEY = null;
public static final int REQ_ID_LENGTH = 10;
public static final Integer[] MEGA_ERROR_NO_EXCEPTION_CODES = {-1, -3};
public static final int PBKDF2_ITERATIONS = 100000;
@@ -89,7 +89,6 @@ public class MegaAPI implements Serializable {
Random randomno = new Random();
_seqno = randomno.nextLong() & 0xffffffffL;
-
}
public int getAccount_version() {
diff --git a/src/main/java/com/tonikelope/megabasterd/SettingsDialog.form b/src/main/java/com/tonikelope/megabasterd/SettingsDialog.form
index 96e31dc2f..03f4e8592 100644
--- a/src/main/java/com/tonikelope/megabasterd/SettingsDialog.form
+++ b/src/main/java/com/tonikelope/megabasterd/SettingsDialog.form
@@ -31,7 +31,7 @@
-
+
@@ -48,7 +48,7 @@
-
+
@@ -134,79 +134,67 @@
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
+
@@ -219,16 +207,12 @@
-
-
-
+
-
-
@@ -238,8 +222,6 @@
-
-
@@ -247,20 +229,14 @@
-
-
-
-
-
-
@@ -271,8 +247,6 @@
-
-
@@ -502,20 +476,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -589,9 +549,7 @@
-
-
-
+
@@ -624,8 +582,6 @@
-
-
@@ -633,8 +589,6 @@
-
-
@@ -718,10 +672,6 @@
-
-
-
-
@@ -799,7 +749,7 @@
-
+
@@ -808,7 +758,7 @@
-
+
@@ -1047,12 +997,10 @@
-
+
-
-
-
+
@@ -1064,7 +1012,7 @@
-
+
@@ -1086,8 +1034,8 @@
+
-
@@ -1103,7 +1051,6 @@
-
@@ -1130,33 +1077,27 @@
-
-
-
+
-
-
+
+
-
-
-
+
-
-
-
+
-
+
@@ -1305,11 +1246,11 @@
-
+
-
+
@@ -1448,8 +1389,6 @@
-
-
@@ -1524,8 +1463,6 @@
-
-
@@ -1534,8 +1471,6 @@
-
-
@@ -1579,8 +1514,79 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/com/tonikelope/megabasterd/SettingsDialog.java b/src/main/java/com/tonikelope/megabasterd/SettingsDialog.java
index a4499b65d..1425f40ab 100644
--- a/src/main/java/com/tonikelope/megabasterd/SettingsDialog.java
+++ b/src/main/java/com/tonikelope/megabasterd/SettingsDialog.java
@@ -3,6 +3,7 @@ package com.tonikelope.megabasterd;
import static com.tonikelope.megabasterd.DBTools.*;
import static com.tonikelope.megabasterd.MainPanel.*;
import static com.tonikelope.megabasterd.MiscTools.*;
+import java.awt.Color;
import java.awt.Dialog;
import java.awt.Frame;
import java.io.BufferedInputStream;
@@ -591,6 +592,22 @@ public class SettingsDialog extends javax.swing.JDialog {
custom_proxy_textarea.setText(custom_proxy_list);
}
+ String mega_api_key_sql = DBTools.selectSettingValue("mega_api_key");
+
+ if (mega_api_key_sql != null && !"".equals(mega_api_key_sql)) {
+ mega_api_key.setText(mega_api_key_sql);
+ mega_api_key_panel.setBackground(new Color(153, 255, 153));
+ mega_api_key_warning.setVisible(false);
+ mega_api_key_label.setVisible(modal);
+ MegaAPI.API_KEY = mega_api_key_sql.trim();
+ } else {
+ mega_api_key_panel.setBackground(Color.red);
+ mega_api_key_warning.setForeground(Color.white);
+ mega_api_key_label.setForeground(Color.WHITE);
+ mega_api_key_warning.setVisible(true);
+ MegaAPI.API_KEY = null;
+ }
+
pack();
});
@@ -633,13 +650,6 @@ public class SettingsDialog extends javax.swing.JDialog {
megacrypter_reverse_port_spinner = new javax.swing.JSpinner();
down_dir_label = new javax.swing.JLabel();
rec_smart_proxy_label = new javax.swing.JLabel();
- jSeparator5 = new javax.swing.JSeparator();
- jSeparator6 = new javax.swing.JSeparator();
- jSeparator7 = new javax.swing.JSeparator();
- jSeparator8 = new javax.swing.JSeparator();
- jSeparator9 = new javax.swing.JSeparator();
- jSeparator10 = new javax.swing.JSeparator();
- jSeparator11 = new javax.swing.JSeparator();
jScrollPane1 = new javax.swing.JScrollPane();
custom_proxy_textarea = new javax.swing.JTextArea();
custom_proxy_list_label = new javax.swing.JLabel();
@@ -654,8 +664,6 @@ public class SettingsDialog extends javax.swing.JDialog {
max_up_speed_spinner = new javax.swing.JSpinner();
limit_upload_speed_checkbox = new javax.swing.JCheckBox();
rec_upload_slots_label = new javax.swing.JLabel();
- jSeparator3 = new javax.swing.JSeparator();
- jSeparator4 = new javax.swing.JSeparator();
accounts_panel = new javax.swing.JPanel();
mega_accounts_scrollpane = new javax.swing.JScrollPane();
mega_accounts_table = new javax.swing.JTable();
@@ -691,7 +699,6 @@ public class SettingsDialog extends javax.swing.JDialog {
zoom_spinner = new javax.swing.JSpinner();
rec_zoom_label = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
- jSeparator1 = new javax.swing.JSeparator();
jLabel2 = new javax.swing.JLabel();
language_combo = new javax.swing.JComboBox<>();
font_label = new javax.swing.JLabel();
@@ -699,15 +706,17 @@ public class SettingsDialog extends javax.swing.JDialog {
custom_chunks_dir_button = new javax.swing.JButton();
custom_chunks_dir_current_label = new javax.swing.JLabel();
custom_chunks_dir_checkbox = new javax.swing.JCheckBox();
- jSeparator12 = new javax.swing.JSeparator();
start_frozen_checkbox = new javax.swing.JCheckBox();
- jSeparator15 = new javax.swing.JSeparator();
run_command_checkbox = new javax.swing.JCheckBox();
run_command_textbox = new javax.swing.JTextField();
run_command_textbox.addMouseListener(new ContextMenuMouseListener());
run_command_test_button = new javax.swing.JButton();
debug_file_checkbox = new javax.swing.JCheckBox();
- jSeparator2 = new javax.swing.JSeparator();
+ mega_api_key_panel = new javax.swing.JPanel();
+ mega_api_key_label = new javax.swing.JLabel();
+ mega_api_key = new javax.swing.JTextField();
+ mega_api_key.addMouseListener(new ContextMenuMouseListener());
+ mega_api_key_warning = new javax.swing.JLabel();
status = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
@@ -866,64 +875,54 @@ public class SettingsDialog extends javax.swing.JDialog {
.addGroup(downloads_panelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jSeparator11)
- .addComponent(jSeparator9)
- .addComponent(jSeparator8)
- .addComponent(jSeparator7)
- .addComponent(jSeparator6)
- .addComponent(jSeparator5)
- .addComponent(jSeparator10)
+ .addComponent(smart_proxy_checkbox)
.addGroup(downloads_panelLayout.createSequentialGroup()
+ .addComponent(max_downloads_label)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(max_downloads_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(multi_slot_down_checkbox)
+ .addComponent(limit_download_speed_checkbox)
+ .addGroup(downloads_panelLayout.createSequentialGroup()
+ .addGap(21, 21, 21)
.addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(smart_proxy_checkbox)
+ .addComponent(rec_download_slots_label)
.addGroup(downloads_panelLayout.createSequentialGroup()
- .addComponent(max_downloads_label)
+ .addComponent(default_slots_down_label)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(max_downloads_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addComponent(multi_slot_down_checkbox)
- .addComponent(limit_download_speed_checkbox)
+ .addComponent(default_slots_down_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(downloads_panelLayout.createSequentialGroup()
- .addGap(21, 21, 21)
- .addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(rec_download_slots_label)
- .addGroup(downloads_panelLayout.createSequentialGroup()
- .addComponent(default_slots_down_label)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(default_slots_down_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(downloads_panelLayout.createSequentialGroup()
- .addComponent(max_down_speed_label)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(max_down_speed_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
- .addGroup(downloads_panelLayout.createSequentialGroup()
- .addComponent(use_mega_label)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(use_mega_account_down_combobox, javax.swing.GroupLayout.PREFERRED_SIZE, 700, javax.swing.GroupLayout.PREFERRED_SIZE))))
- .addGroup(downloads_panelLayout.createSequentialGroup()
- .addGap(26, 26, 26)
- .addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(rec_smart_proxy_label, javax.swing.GroupLayout.PREFERRED_SIZE, 542, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addComponent(custom_proxy_list_label, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(jScrollPane1)
- .addComponent(rec_smart_proxy_label1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
- .addGroup(downloads_panelLayout.createSequentialGroup()
- .addComponent(change_download_dir_button)
+ .addComponent(max_down_speed_label)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(down_dir_label)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(default_dir_label))
- .addComponent(megacrypter_reverse_checkbox)
- .addComponent(use_mega_account_down_checkbox)
- .addComponent(verify_file_down_checkbox)
+ .addComponent(max_down_speed_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(downloads_panelLayout.createSequentialGroup()
- .addGap(21, 21, 21)
- .addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(megacrypter_reverse_warning_label)
- .addGroup(downloads_panelLayout.createSequentialGroup()
- .addComponent(megacrypter_reverse_port_label)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(megacrypter_reverse_port_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))))
- .addGap(0, 42, Short.MAX_VALUE)))
- .addContainerGap())
+ .addComponent(use_mega_label)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(use_mega_account_down_combobox, javax.swing.GroupLayout.PREFERRED_SIZE, 700, javax.swing.GroupLayout.PREFERRED_SIZE))))
+ .addGroup(downloads_panelLayout.createSequentialGroup()
+ .addGap(26, 26, 26)
+ .addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(rec_smart_proxy_label, javax.swing.GroupLayout.PREFERRED_SIZE, 542, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(custom_proxy_list_label, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(jScrollPane1)
+ .addComponent(rec_smart_proxy_label1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
+ .addGroup(downloads_panelLayout.createSequentialGroup()
+ .addComponent(change_download_dir_button)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(down_dir_label)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(default_dir_label))
+ .addComponent(megacrypter_reverse_checkbox)
+ .addComponent(use_mega_account_down_checkbox)
+ .addComponent(verify_file_down_checkbox)
+ .addGroup(downloads_panelLayout.createSequentialGroup()
+ .addGap(21, 21, 21)
+ .addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(megacrypter_reverse_warning_label)
+ .addGroup(downloads_panelLayout.createSequentialGroup()
+ .addComponent(megacrypter_reverse_port_label)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(megacrypter_reverse_port_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))))
+ .addContainerGap(54, Short.MAX_VALUE))
);
downloads_panelLayout.setVerticalGroup(
downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@@ -933,15 +932,11 @@ public class SettingsDialog extends javax.swing.JDialog {
.addComponent(down_dir_label)
.addComponent(default_dir_label)
.addComponent(change_download_dir_button))
- .addGap(18, 18, 18)
- .addComponent(jSeparator5, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(18, 18, 18)
+ .addGap(38, 38, 38)
.addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(max_downloads_label)
.addComponent(max_downloads_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
- .addComponent(jSeparator6, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(18, 18, 18)
.addComponent(multi_slot_down_checkbox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
@@ -950,27 +945,19 @@ public class SettingsDialog extends javax.swing.JDialog {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(rec_download_slots_label)
.addGap(18, 18, 18)
- .addComponent(jSeparator7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(18, 18, 18)
.addComponent(limit_download_speed_checkbox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(max_down_speed_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(max_down_speed_label))
.addGap(18, 18, 18)
- .addComponent(jSeparator8, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(18, 18, 18)
.addComponent(verify_file_down_checkbox)
.addGap(18, 18, 18)
- .addComponent(jSeparator9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(12, 12, 12)
.addComponent(use_mega_account_down_checkbox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(downloads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(use_mega_account_down_combobox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(use_mega_label))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jSeparator10, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(megacrypter_reverse_checkbox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
@@ -980,8 +967,6 @@ public class SettingsDialog extends javax.swing.JDialog {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(megacrypter_reverse_warning_label)
.addGap(18, 18, 18)
- .addComponent(jSeparator11, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(18, 18, 18)
.addComponent(smart_proxy_checkbox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(rec_smart_proxy_label)
@@ -1038,9 +1023,7 @@ public class SettingsDialog extends javax.swing.JDialog {
.addGroup(uploads_panelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(uploads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jSeparator3, javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(rec_upload_slots_label, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(jSeparator4)
+ .addComponent(rec_upload_slots_label, javax.swing.GroupLayout.DEFAULT_SIZE, 1093, Short.MAX_VALUE)
.addGroup(uploads_panelLayout.createSequentialGroup()
.addGap(20, 20, 20)
.addComponent(max_up_speed_label)
@@ -1065,16 +1048,12 @@ public class SettingsDialog extends javax.swing.JDialog {
.addComponent(max_uploads_label)
.addComponent(max_uploads_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
- .addComponent(jSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, 2, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(18, 18, 18)
.addGroup(uploads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(default_slots_up_label)
.addComponent(default_slots_up_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(rec_upload_slots_label)
.addGap(18, 18, 18)
- .addComponent(jSeparator4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(18, 18, 18)
.addComponent(limit_upload_speed_checkbox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(uploads_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
@@ -1263,7 +1242,7 @@ public class SettingsDialog extends javax.swing.JDialog {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(mega_accounts_scrollpane, javax.swing.GroupLayout.DEFAULT_SIZE, 322, Short.MAX_VALUE)
+ .addComponent(mega_accounts_scrollpane, javax.swing.GroupLayout.DEFAULT_SIZE, 145, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(accounts_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(remove_mega_account_button)
@@ -1271,7 +1250,7 @@ public class SettingsDialog extends javax.swing.JDialog {
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(elc_accounts_label)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(elc_accounts_scrollpane, javax.swing.GroupLayout.DEFAULT_SIZE, 322, Short.MAX_VALUE)
+ .addComponent(elc_accounts_scrollpane, javax.swing.GroupLayout.DEFAULT_SIZE, 144, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(accounts_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(remove_elc_account_button)
@@ -1348,11 +1327,11 @@ public class SettingsDialog extends javax.swing.JDialog {
.addContainerGap()
.addComponent(proxy_user_label)
.addGap(6, 6, 6)
- .addComponent(proxy_user_textfield, javax.swing.GroupLayout.DEFAULT_SIZE, 297, Short.MAX_VALUE)
+ .addComponent(proxy_user_textfield, javax.swing.GroupLayout.DEFAULT_SIZE, 310, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(proxy_pass_label)
.addGap(6, 6, 6)
- .addComponent(proxy_pass_textfield, javax.swing.GroupLayout.DEFAULT_SIZE, 461, Short.MAX_VALUE)
+ .addComponent(proxy_pass_textfield, javax.swing.GroupLayout.DEFAULT_SIZE, 474, Short.MAX_VALUE)
.addContainerGap())
);
proxy_auth_panelLayout.setVerticalGroup(
@@ -1506,6 +1485,50 @@ public class SettingsDialog extends javax.swing.JDialog {
debug_file_checkbox.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N
debug_file_checkbox.setText("Save debug info to file");
+ mega_api_key_label.setFont(new java.awt.Font("Dialog", 1, 18)); // NOI18N
+ mega_api_key_label.setText("MEGA API KEY:");
+ mega_api_key_label.setDoubleBuffered(true);
+
+ mega_api_key.setFont(new java.awt.Font("Dialog", 0, 18)); // NOI18N
+ mega_api_key.setDoubleBuffered(true);
+
+ mega_api_key_warning.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N
+ mega_api_key_warning.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
+ mega_api_key_warning.setText("WARNING: USING MEGA API WITHOUT API KEY MAY VIOLATE ITS TERM OF USE. YOU SHOULD GET A KEY -> https://mega.nz/sdk");
+ mega_api_key_warning.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
+ mega_api_key_warning.setDoubleBuffered(true);
+ mega_api_key_warning.addMouseListener(new java.awt.event.MouseAdapter() {
+ public void mouseClicked(java.awt.event.MouseEvent evt) {
+ mega_api_key_warningMouseClicked(evt);
+ }
+ });
+
+ javax.swing.GroupLayout mega_api_key_panelLayout = new javax.swing.GroupLayout(mega_api_key_panel);
+ mega_api_key_panel.setLayout(mega_api_key_panelLayout);
+ mega_api_key_panelLayout.setHorizontalGroup(
+ mega_api_key_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(mega_api_key_panelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(mega_api_key_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addComponent(mega_api_key_warning, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addGroup(mega_api_key_panelLayout.createSequentialGroup()
+ .addComponent(mega_api_key_label)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addComponent(mega_api_key)))
+ .addContainerGap())
+ );
+ mega_api_key_panelLayout.setVerticalGroup(
+ mega_api_key_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
+ .addGroup(mega_api_key_panelLayout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(mega_api_key_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
+ .addComponent(mega_api_key_label)
+ .addComponent(mega_api_key, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(mega_api_key_warning)
+ .addContainerGap(15, Short.MAX_VALUE))
+ );
+
javax.swing.GroupLayout advanced_panelLayout = new javax.swing.GroupLayout(advanced_panel);
advanced_panel.setLayout(advanced_panelLayout);
advanced_panelLayout.setHorizontalGroup(
@@ -1513,9 +1536,7 @@ public class SettingsDialog extends javax.swing.JDialog {
.addGroup(advanced_panelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(advanced_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(jSeparator15, javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(jSeparator12, javax.swing.GroupLayout.Alignment.TRAILING)
- .addComponent(jSeparator1)
+ .addComponent(mega_api_key_panel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(advanced_panelLayout.createSequentialGroup()
.addGroup(advanced_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(advanced_panelLayout.createSequentialGroup()
@@ -1526,7 +1547,7 @@ public class SettingsDialog extends javax.swing.JDialog {
.addComponent(zoom_label)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(zoom_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(0, 237, Short.MAX_VALUE))
+ .addGap(0, 263, Short.MAX_VALUE))
.addGroup(advanced_panelLayout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
@@ -1542,8 +1563,8 @@ public class SettingsDialog extends javax.swing.JDialog {
.addComponent(proxy_panel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(advanced_panelLayout.createSequentialGroup()
.addGroup(advanced_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(debug_file_checkbox)
.addComponent(start_frozen_checkbox)
+ .addComponent(debug_file_checkbox)
.addComponent(custom_chunks_dir_checkbox)
.addGroup(advanced_panelLayout.createSequentialGroup()
.addComponent(custom_chunks_dir_button)
@@ -1554,8 +1575,7 @@ public class SettingsDialog extends javax.swing.JDialog {
.addComponent(run_command_checkbox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(run_command_test_button)))
- .addGap(0, 0, Short.MAX_VALUE))
- .addComponent(jSeparator2))
+ .addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
advanced_panelLayout.setVerticalGroup(
@@ -1576,31 +1596,25 @@ public class SettingsDialog extends javax.swing.JDialog {
.addComponent(jLabel2)
.addComponent(language_combo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jButton1))
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
- .addComponent(jSeparator1, javax.swing.GroupLayout.PREFERRED_SIZE, 8, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
+ .addGap(18, 18, 18)
.addComponent(custom_chunks_dir_checkbox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(advanced_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(custom_chunks_dir_button)
.addComponent(custom_chunks_dir_current_label))
- .addGap(18, 18, 18)
- .addComponent(jSeparator12, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(mega_api_key_panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(start_frozen_checkbox)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jSeparator15, javax.swing.GroupLayout.PREFERRED_SIZE, 8, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGap(18, 18, 18)
.addComponent(debug_file_checkbox)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
- .addComponent(jSeparator2, javax.swing.GroupLayout.PREFERRED_SIZE, 10, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGap(18, 18, 18)
.addGroup(advanced_panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(run_command_checkbox)
.addComponent(run_command_test_button))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(run_command_textbox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addGap(18, 18, 18)
.addComponent(proxy_panel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addComponent(rec_zoom_label)
@@ -1621,7 +1635,7 @@ public class SettingsDialog extends javax.swing.JDialog {
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
- .addComponent(panel_tabs, javax.swing.GroupLayout.DEFAULT_SIZE, 1071, Short.MAX_VALUE)
+ .addComponent(panel_tabs, javax.swing.GroupLayout.DEFAULT_SIZE, 1124, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(status, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGap(6, 6, 6)
@@ -1634,7 +1648,7 @@ public class SettingsDialog extends javax.swing.JDialog {
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
- .addComponent(panel_tabs, javax.swing.GroupLayout.DEFAULT_SIZE, 940, Short.MAX_VALUE)
+ .addComponent(panel_tabs, javax.swing.GroupLayout.DEFAULT_SIZE, 585, Short.MAX_VALUE)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
@@ -1687,6 +1701,7 @@ public class SettingsDialog extends javax.swing.JDialog {
settings.put("custom_chunks_dir", _custom_chunks_dir);
settings.put("run_command", run_command_checkbox.isSelected() ? "yes" : "no");
settings.put("run_command_path", run_command_textbox.getText());
+ settings.put("mega_api_key", mega_api_key.getText().trim());
if (custom_proxy_textarea.getText().trim().length() == 0) {
smart_proxy_checkbox.setSelected(false);
@@ -2160,135 +2175,6 @@ public class SettingsDialog extends javax.swing.JDialog {
}
}//GEN-LAST:event_save_buttonActionPerformed
- private void use_proxy_checkboxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_use_proxy_checkboxStateChanged
-
- proxy_host_label.setEnabled(use_proxy_checkbox.isSelected());
- proxy_host_textfield.setEnabled(use_proxy_checkbox.isSelected());
- proxy_port_label.setEnabled(use_proxy_checkbox.isSelected());
- proxy_port_textfield.setEnabled(use_proxy_checkbox.isSelected());
- proxy_user_label.setEnabled(use_proxy_checkbox.isSelected());
- proxy_user_textfield.setEnabled(use_proxy_checkbox.isSelected());
- proxy_pass_label.setEnabled(use_proxy_checkbox.isSelected());
- proxy_pass_textfield.setEnabled(use_proxy_checkbox.isSelected());
- proxy_warning_label.setEnabled(use_proxy_checkbox.isSelected());
-
- if (use_proxy_checkbox.isSelected()) {
- smart_proxy_checkbox.setSelected(false);
- }
- }//GEN-LAST:event_use_proxy_checkboxStateChanged
-
- private void import_settings_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_import_settings_buttonActionPerformed
-
- Object[] options = {"No",
- LabelTranslatorSingleton.getInstance().translate("Yes")};
-
- int n = showOptionDialog(this,
- LabelTranslatorSingleton.getInstance().translate("All your current settings and accounts will be deleted after import. (It is recommended to export your current settings before importing). \n\nDo you want to continue?"),
- LabelTranslatorSingleton.getInstance().translate("IMPORT SETTINGS"), YES_NO_CANCEL_OPTION, javax.swing.JOptionPane.WARNING_MESSAGE,
- null,
- options,
- options[0]);
-
- if (n == 1) {
- JFileChooser filechooser = new JFileChooser();
- updateFonts(filechooser, GUI_FONT, (float) (_main_panel.getZoom_factor() * 1.25));
- filechooser.setCurrentDirectory(new File(_download_path));
- filechooser.setDialogTitle("Select settings file");
-
- if (filechooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
-
- File file = filechooser.getSelectedFile();
-
- try {
-
- try (InputStream fis = new BufferedInputStream(new FileInputStream(file)); ObjectInputStream ois = new ObjectInputStream(fis)) {
-
- HashMap settings = (HashMap) ois.readObject();
-
- insertSettingsValues((HashMap) settings.get("settings"));
-
- insertMegaAccounts((HashMap) settings.get("mega_accounts"));
-
- insertELCAccounts((HashMap) settings.get("elc_accounts"));
-
- _main_panel.loadUserSettings();
-
- JOptionPane.showMessageDialog(this, LabelTranslatorSingleton.getInstance().translate("Settings successfully imported!"), LabelTranslatorSingleton.getInstance().translate("Settings imported"), JOptionPane.INFORMATION_MESSAGE);
-
- _settings_ok = true;
-
- setVisible(false);
-
- } catch (SQLException | ClassNotFoundException ex) {
- LOG.log(Level.SEVERE, ex.getMessage());
- }
-
- } catch (IOException ex) {
- LOG.log(Level.SEVERE, ex.getMessage());
- }
- }
- }
-
- }//GEN-LAST:event_import_settings_buttonActionPerformed
-
- private void export_settings_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_export_settings_buttonActionPerformed
-
- Object[] options = {"No",
- LabelTranslatorSingleton.getInstance().translate("Yes")};
-
- int n = showOptionDialog(this,
- LabelTranslatorSingleton.getInstance().translate("Only SAVED settings and accounts will be exported. (If you are unsure, it is better to save your current settings and then export them).\n\nDo you want to continue?"),
- LabelTranslatorSingleton.getInstance().translate("EXPORT SETTINGS"), YES_NO_CANCEL_OPTION, javax.swing.JOptionPane.WARNING_MESSAGE,
- null,
- options,
- options[0]);
-
- if (n == 1) {
- JFileChooser filechooser = new JFileChooser();
- updateFonts(filechooser, GUI_FONT, (float) (_main_panel.getZoom_factor() * 1.25));
- filechooser.setCurrentDirectory(new File(_download_path));
- filechooser.setDialogTitle("Save as");
-
- if (filechooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
-
- File file = filechooser.getSelectedFile();
-
- try {
-
- if (file.exists()) {
- file.delete();
- }
-
- file.createNewFile();
-
- try (BufferedOutputStream fos = new BufferedOutputStream(new FileOutputStream(file)); ObjectOutputStream oos = new ObjectOutputStream(fos)) {
-
- HashMap settings = new HashMap<>();
-
- settings.put("settings", selectSettingsValues());
-
- settings.put("mega_accounts", selectMegaAccounts());
-
- settings.put("elc_accounts", selectELCAccounts());
-
- oos.writeObject(settings);
-
- JOptionPane.showMessageDialog(this, LabelTranslatorSingleton.getInstance().translate("Settings successfully exported!"), LabelTranslatorSingleton.getInstance().translate("Settings exported"), JOptionPane.INFORMATION_MESSAGE);
-
- setVisible(false);
-
- } catch (SQLException ex) {
- LOG.log(Level.SEVERE, ex.getMessage());
- }
-
- } catch (IOException ex) {
- LOG.log(Level.SEVERE, ex.getMessage());
- }
- }
- }
-
- }//GEN-LAST:event_export_settings_buttonActionPerformed
-
private void add_elc_account_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_add_elc_account_buttonActionPerformed
DefaultTableModel model = (DefaultTableModel) elc_accounts_table.getModel();
@@ -2677,6 +2563,214 @@ public class SettingsDialog extends javax.swing.JDialog {
}//GEN-LAST:event_remove_mega_account_buttonActionPerformed
+ private void limit_upload_speed_checkboxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_limit_upload_speed_checkboxStateChanged
+
+ max_up_speed_label.setEnabled(limit_upload_speed_checkbox.isSelected());
+ max_up_speed_spinner.setEnabled(limit_upload_speed_checkbox.isSelected());
+ }//GEN-LAST:event_limit_upload_speed_checkboxStateChanged
+
+ private void run_command_test_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_run_command_test_buttonActionPerformed
+ // TODO add your handling code here:
+
+ if (run_command_textbox.getText() != null && !"".equals(run_command_textbox.getText().trim())) {
+
+ try {
+ Runtime.getRuntime().exec(run_command_textbox.getText().trim());
+ } catch (IOException ex) {
+ Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, ex.getMessage());
+ JOptionPane.showMessageDialog(this, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
+ }
+ }
+ }//GEN-LAST:event_run_command_test_buttonActionPerformed
+
+ private void run_command_checkboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_run_command_checkboxActionPerformed
+ // TODO add your handling code here:
+
+ run_command_textbox.setEnabled(run_command_checkbox.isSelected());
+ }//GEN-LAST:event_run_command_checkboxActionPerformed
+
+ private void custom_chunks_dir_checkboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_custom_chunks_dir_checkboxActionPerformed
+
+ if (custom_chunks_dir_checkbox.isSelected()) {
+
+ custom_chunks_dir_button.setEnabled(true);
+ custom_chunks_dir_current_label.setEnabled(true);
+
+ } else {
+
+ custom_chunks_dir_button.setEnabled(false);
+ custom_chunks_dir_current_label.setEnabled(false);
+
+ }
+ }//GEN-LAST:event_custom_chunks_dir_checkboxActionPerformed
+
+ private void custom_chunks_dir_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_custom_chunks_dir_buttonActionPerformed
+ javax.swing.JFileChooser filechooser = new javax.swing.JFileChooser();
+ updateFonts(filechooser, GUI_FONT, (float) (_main_panel.getZoom_factor() * 1.25));
+
+ filechooser.setCurrentDirectory(new java.io.File(_download_path));
+ filechooser.setDialogTitle("Temporary chunks directory");
+ filechooser.setFileSelectionMode(javax.swing.JFileChooser.DIRECTORIES_ONLY);
+ filechooser.setAcceptAllFileFilterUsed(false);
+
+ if (filechooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
+
+ File file = filechooser.getSelectedFile();
+
+ _custom_chunks_dir = file.getAbsolutePath();
+
+ this.custom_chunks_dir_current_label.setText(truncateText(_custom_chunks_dir, 80));
+ }
+ }//GEN-LAST:event_custom_chunks_dir_buttonActionPerformed
+
+ private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
+ // TODO add your handling code here:
+
+ Object[] options = {"No",
+ LabelTranslatorSingleton.getInstance().translate("Yes")};
+
+ int n = showOptionDialog(this,
+ LabelTranslatorSingleton.getInstance().translate("ALL YOUR SETTINGS, ACCOUNTS AND TRANSFERENCES WILL BE REMOVED. (THIS CAN'T BE UNDONE)\n\nDo you want to continue?"),
+ LabelTranslatorSingleton.getInstance().translate("RESET MEGABASTERD"), YES_NO_CANCEL_OPTION, javax.swing.JOptionPane.WARNING_MESSAGE,
+ null,
+ options,
+ options[0]);
+
+ if (n == 1) {
+
+ setVisible(false);
+ _main_panel.byebyenow(true, true);
+
+ }
+ }//GEN-LAST:event_jButton1ActionPerformed
+
+ private void export_settings_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_export_settings_buttonActionPerformed
+
+ Object[] options = {"No",
+ LabelTranslatorSingleton.getInstance().translate("Yes")};
+
+ int n = showOptionDialog(this,
+ LabelTranslatorSingleton.getInstance().translate("Only SAVED settings and accounts will be exported. (If you are unsure, it is better to save your current settings and then export them).\n\nDo you want to continue?"),
+ LabelTranslatorSingleton.getInstance().translate("EXPORT SETTINGS"), YES_NO_CANCEL_OPTION, javax.swing.JOptionPane.WARNING_MESSAGE,
+ null,
+ options,
+ options[0]);
+
+ if (n == 1) {
+ JFileChooser filechooser = new JFileChooser();
+ updateFonts(filechooser, GUI_FONT, (float) (_main_panel.getZoom_factor() * 1.25));
+ filechooser.setCurrentDirectory(new File(_download_path));
+ filechooser.setDialogTitle("Save as");
+
+ if (filechooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
+
+ File file = filechooser.getSelectedFile();
+
+ try {
+
+ if (file.exists()) {
+ file.delete();
+ }
+
+ file.createNewFile();
+
+ try (BufferedOutputStream fos = new BufferedOutputStream(new FileOutputStream(file)); ObjectOutputStream oos = new ObjectOutputStream(fos)) {
+
+ HashMap settings = new HashMap<>();
+
+ settings.put("settings", selectSettingsValues());
+
+ settings.put("mega_accounts", selectMegaAccounts());
+
+ settings.put("elc_accounts", selectELCAccounts());
+
+ oos.writeObject(settings);
+
+ JOptionPane.showMessageDialog(this, LabelTranslatorSingleton.getInstance().translate("Settings successfully exported!"), LabelTranslatorSingleton.getInstance().translate("Settings exported"), JOptionPane.INFORMATION_MESSAGE);
+
+ setVisible(false);
+
+ } catch (SQLException ex) {
+ LOG.log(Level.SEVERE, ex.getMessage());
+ }
+
+ } catch (IOException ex) {
+ LOG.log(Level.SEVERE, ex.getMessage());
+ }
+ }
+ }
+ }//GEN-LAST:event_export_settings_buttonActionPerformed
+
+ private void import_settings_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_import_settings_buttonActionPerformed
+
+ Object[] options = {"No",
+ LabelTranslatorSingleton.getInstance().translate("Yes")};
+
+ int n = showOptionDialog(this,
+ LabelTranslatorSingleton.getInstance().translate("All your current settings and accounts will be deleted after import. (It is recommended to export your current settings before importing). \n\nDo you want to continue?"),
+ LabelTranslatorSingleton.getInstance().translate("IMPORT SETTINGS"), YES_NO_CANCEL_OPTION, javax.swing.JOptionPane.WARNING_MESSAGE,
+ null,
+ options,
+ options[0]);
+
+ if (n == 1) {
+ JFileChooser filechooser = new JFileChooser();
+ updateFonts(filechooser, GUI_FONT, (float) (_main_panel.getZoom_factor() * 1.25));
+ filechooser.setCurrentDirectory(new File(_download_path));
+ filechooser.setDialogTitle("Select settings file");
+
+ if (filechooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
+
+ File file = filechooser.getSelectedFile();
+
+ try {
+
+ try (InputStream fis = new BufferedInputStream(new FileInputStream(file)); ObjectInputStream ois = new ObjectInputStream(fis)) {
+
+ HashMap settings = (HashMap) ois.readObject();
+
+ insertSettingsValues((HashMap) settings.get("settings"));
+
+ insertMegaAccounts((HashMap) settings.get("mega_accounts"));
+
+ insertELCAccounts((HashMap) settings.get("elc_accounts"));
+
+ _main_panel.loadUserSettings();
+
+ JOptionPane.showMessageDialog(this, LabelTranslatorSingleton.getInstance().translate("Settings successfully imported!"), LabelTranslatorSingleton.getInstance().translate("Settings imported"), JOptionPane.INFORMATION_MESSAGE);
+
+ _settings_ok = true;
+
+ setVisible(false);
+
+ } catch (SQLException | ClassNotFoundException ex) {
+ LOG.log(Level.SEVERE, ex.getMessage());
+ }
+
+ } catch (IOException ex) {
+ LOG.log(Level.SEVERE, ex.getMessage());
+ }
+ }
+ }
+ }//GEN-LAST:event_import_settings_buttonActionPerformed
+
+ private void use_proxy_checkboxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_use_proxy_checkboxStateChanged
+
+ proxy_host_label.setEnabled(use_proxy_checkbox.isSelected());
+ proxy_host_textfield.setEnabled(use_proxy_checkbox.isSelected());
+ proxy_port_label.setEnabled(use_proxy_checkbox.isSelected());
+ proxy_port_textfield.setEnabled(use_proxy_checkbox.isSelected());
+ proxy_user_label.setEnabled(use_proxy_checkbox.isSelected());
+ proxy_user_textfield.setEnabled(use_proxy_checkbox.isSelected());
+ proxy_pass_label.setEnabled(use_proxy_checkbox.isSelected());
+ proxy_pass_textfield.setEnabled(use_proxy_checkbox.isSelected());
+ proxy_warning_label.setEnabled(use_proxy_checkbox.isSelected());
+
+ if (use_proxy_checkbox.isSelected()) {
+ smart_proxy_checkbox.setSelected(false);
+ }
+ }//GEN-LAST:event_use_proxy_checkboxStateChanged
+
private void multi_slot_down_checkboxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_multi_slot_down_checkboxStateChanged
if (!multi_slot_down_checkbox.isSelected() && !smart_proxy_checkbox.isSelected()) {
@@ -2754,6 +2848,13 @@ public class SettingsDialog extends javax.swing.JDialog {
}
}//GEN-LAST:event_use_mega_account_down_checkboxStateChanged
+ private void smart_proxy_checkboxMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_smart_proxy_checkboxMouseClicked
+ // TODO add your handling code here:
+ if (this.smart_proxy_checkbox.isSelected()) {
+ JOptionPane.showMessageDialog(this, LabelTranslatorSingleton.getInstance().translate("Using proxies or VPN to bypass MEGA's daily download limitation may violate its Terms of Use.\n\nUSE THIS OPTION AT YOUR OWN RISK."), LabelTranslatorSingleton.getInstance().translate("WARNING"), JOptionPane.WARNING_MESSAGE);
+ }
+ }//GEN-LAST:event_smart_proxy_checkboxMouseClicked
+
private void smart_proxy_checkboxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_smart_proxy_checkboxStateChanged
if (smart_proxy_checkbox.isSelected()) {
@@ -2793,95 +2894,10 @@ public class SettingsDialog extends javax.swing.JDialog {
megacrypter_reverse_warning_label.setEnabled(megacrypter_reverse_checkbox.isSelected());
}//GEN-LAST:event_megacrypter_reverse_checkboxStateChanged
- private void limit_upload_speed_checkboxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_limit_upload_speed_checkboxStateChanged
-
- max_up_speed_label.setEnabled(limit_upload_speed_checkbox.isSelected());
- max_up_speed_spinner.setEnabled(limit_upload_speed_checkbox.isSelected());
- }//GEN-LAST:event_limit_upload_speed_checkboxStateChanged
-
- private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
+ private void mega_api_key_warningMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_mega_api_key_warningMouseClicked
// TODO add your handling code here:
-
- Object[] options = {"No",
- LabelTranslatorSingleton.getInstance().translate("Yes")};
-
- int n = showOptionDialog(this,
- LabelTranslatorSingleton.getInstance().translate("ALL YOUR SETTINGS, ACCOUNTS AND TRANSFERENCES WILL BE REMOVED. (THIS CAN'T BE UNDONE)\n\nDo you want to continue?"),
- LabelTranslatorSingleton.getInstance().translate("RESET MEGABASTERD"), YES_NO_CANCEL_OPTION, javax.swing.JOptionPane.WARNING_MESSAGE,
- null,
- options,
- options[0]);
-
- if (n == 1) {
-
- setVisible(false);
- _main_panel.byebyenow(true, true);
-
- }
- }//GEN-LAST:event_jButton1ActionPerformed
-
- private void custom_chunks_dir_checkboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_custom_chunks_dir_checkboxActionPerformed
-
- if (custom_chunks_dir_checkbox.isSelected()) {
-
- custom_chunks_dir_button.setEnabled(true);
- custom_chunks_dir_current_label.setEnabled(true);
-
- } else {
-
- custom_chunks_dir_button.setEnabled(false);
- custom_chunks_dir_current_label.setEnabled(false);
-
- }
- }//GEN-LAST:event_custom_chunks_dir_checkboxActionPerformed
-
- private void custom_chunks_dir_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_custom_chunks_dir_buttonActionPerformed
- javax.swing.JFileChooser filechooser = new javax.swing.JFileChooser();
- updateFonts(filechooser, GUI_FONT, (float) (_main_panel.getZoom_factor() * 1.25));
-
- filechooser.setCurrentDirectory(new java.io.File(_download_path));
- filechooser.setDialogTitle("Temporary chunks directory");
- filechooser.setFileSelectionMode(javax.swing.JFileChooser.DIRECTORIES_ONLY);
- filechooser.setAcceptAllFileFilterUsed(false);
-
- if (filechooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
-
- File file = filechooser.getSelectedFile();
-
- _custom_chunks_dir = file.getAbsolutePath();
-
- this.custom_chunks_dir_current_label.setText(truncateText(_custom_chunks_dir, 80));
- }
- }//GEN-LAST:event_custom_chunks_dir_buttonActionPerformed
-
- private void run_command_checkboxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_run_command_checkboxActionPerformed
- // TODO add your handling code here:
-
- run_command_textbox.setEnabled(run_command_checkbox.isSelected());
-
- }//GEN-LAST:event_run_command_checkboxActionPerformed
-
- private void run_command_test_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_run_command_test_buttonActionPerformed
- // TODO add your handling code here:
-
- if (run_command_textbox.getText() != null && !"".equals(run_command_textbox.getText().trim())) {
-
- try {
- Runtime.getRuntime().exec(run_command_textbox.getText().trim());
- } catch (IOException ex) {
- Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, ex.getMessage());
- JOptionPane.showMessageDialog(this, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
- }
- }
- }//GEN-LAST:event_run_command_test_buttonActionPerformed
-
- private void smart_proxy_checkboxMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_smart_proxy_checkboxMouseClicked
- // TODO add your handling code here:
- if (this.smart_proxy_checkbox.isSelected()) {
- JOptionPane.showMessageDialog(this, LabelTranslatorSingleton.getInstance().translate("Using proxies or VPN to bypass MEGA's daily download limitation may violate its Terms of Use.\n\nUSE THIS OPTION AT YOUR OWN RISK."), LabelTranslatorSingleton.getInstance().translate("WARNING"), JOptionPane.WARNING_MESSAGE);
- }
-
- }//GEN-LAST:event_smart_proxy_checkboxMouseClicked
+ openBrowserURL("https://mega.nz/sdk");
+ }//GEN-LAST:event_mega_api_key_warningMouseClicked
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JPanel accounts_panel;
@@ -2919,19 +2935,6 @@ public class SettingsDialog extends javax.swing.JDialog {
private javax.swing.JLabel jLabel2;
private javax.swing.JProgressBar jProgressBar1;
private javax.swing.JScrollPane jScrollPane1;
- private javax.swing.JSeparator jSeparator1;
- private javax.swing.JSeparator jSeparator10;
- private javax.swing.JSeparator jSeparator11;
- private javax.swing.JSeparator jSeparator12;
- private javax.swing.JSeparator jSeparator15;
- private javax.swing.JSeparator jSeparator2;
- private javax.swing.JSeparator jSeparator3;
- private javax.swing.JSeparator jSeparator4;
- private javax.swing.JSeparator jSeparator5;
- private javax.swing.JSeparator jSeparator6;
- private javax.swing.JSeparator jSeparator7;
- private javax.swing.JSeparator jSeparator8;
- private javax.swing.JSeparator jSeparator9;
private javax.swing.JComboBox language_combo;
private javax.swing.JCheckBox limit_download_speed_checkbox;
private javax.swing.JCheckBox limit_upload_speed_checkbox;
@@ -2946,6 +2949,10 @@ public class SettingsDialog extends javax.swing.JDialog {
private javax.swing.JLabel mega_accounts_label;
private javax.swing.JScrollPane mega_accounts_scrollpane;
private javax.swing.JTable mega_accounts_table;
+ private javax.swing.JTextField mega_api_key;
+ private javax.swing.JLabel mega_api_key_label;
+ private javax.swing.JPanel mega_api_key_panel;
+ private javax.swing.JLabel mega_api_key_warning;
private javax.swing.JCheckBox megacrypter_reverse_checkbox;
private javax.swing.JLabel megacrypter_reverse_port_label;
private javax.swing.JSpinner megacrypter_reverse_port_spinner;
diff --git a/src/main/resources/images/apikey.png b/src/main/resources/images/apikey.png
new file mode 100644
index 000000000..959d2a7ca
Binary files /dev/null and b/src/main/resources/images/apikey.png differ