diff --git a/pom.xml b/pom.xml
index 2c682aa72..c8f7c5381 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
com.tonikelope
MegaBasterd
- 6.83
+ 6.84
jar
diff --git a/src/main/java/com/tonikelope/megabasterd/Download.java b/src/main/java/com/tonikelope/megabasterd/Download.java
index 995b3bb52..8c092b9d6 100644
--- a/src/main/java/com/tonikelope/megabasterd/Download.java
+++ b/src/main/java/com/tonikelope/megabasterd/Download.java
@@ -1665,6 +1665,16 @@ public class Download implements Transference, Runnable, SecureSingleThreadNotif
_main_panel.getDownload_manager().downWaitQueue(this);
}
+ @Override
+ public void bottomWaitQueue() {
+ _main_panel.getDownload_manager().bottomWaitQueue(this);
+ }
+
+ @Override
+ public void topWaitQueue() {
+ _main_panel.getDownload_manager().topWaitQueue(this);
+ }
+
@Override
public boolean isRestart() {
return _restart;
diff --git a/src/main/java/com/tonikelope/megabasterd/DownloadView.form b/src/main/java/com/tonikelope/megabasterd/DownloadView.form
index 8cb40f022..1b579c903 100644
--- a/src/main/java/com/tonikelope/megabasterd/DownloadView.form
+++ b/src/main/java/com/tonikelope/megabasterd/DownloadView.form
@@ -37,9 +37,13 @@
-
+
+
+
+
+
@@ -82,10 +86,12 @@
-
+
+
+
-
+
@@ -346,5 +352,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/com/tonikelope/megabasterd/DownloadView.java b/src/main/java/com/tonikelope/megabasterd/DownloadView.java
index 1c5fe10b8..0b5017bb5 100644
--- a/src/main/java/com/tonikelope/megabasterd/DownloadView.java
+++ b/src/main/java/com/tonikelope/megabasterd/DownloadView.java
@@ -162,6 +162,8 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView
slot_status_label = new javax.swing.JLabel();
queue_up_button = new javax.swing.JButton();
queue_down_button = new javax.swing.JButton();
+ queue_top_button = new javax.swing.JButton();
+ queue_bottom_button = new javax.swing.JButton();
setBorder(new javax.swing.border.LineBorder(new java.awt.Color(153, 204, 255), 3, true));
@@ -288,6 +290,24 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView
}
});
+ queue_top_button.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N
+ queue_top_button.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/arriba_1.png"))); // NOI18N
+ queue_top_button.setText("TOP");
+ queue_top_button.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ queue_top_buttonActionPerformed(evt);
+ }
+ });
+
+ queue_bottom_button.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N
+ queue_bottom_button.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/abajo_1.png"))); // NOI18N
+ queue_bottom_button.setText("BOTTOM");
+ queue_bottom_button.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ queue_bottom_buttonActionPerformed(evt);
+ }
+ });
+
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
@@ -303,9 +323,13 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(slots_label))
.addGroup(layout.createSequentialGroup()
- .addComponent(queue_up_button, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(queue_top_button)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(queue_up_button, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(queue_down_button, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(queue_bottom_button)
.addGap(0, 0, Short.MAX_VALUE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(slots_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE))
@@ -338,9 +362,11 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
- .addComponent(queue_down_button, javax.swing.GroupLayout.DEFAULT_SIZE, 39, Short.MAX_VALUE)
- .addComponent(queue_up_button, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
- .addGap(0, 0, 0)
+ .addComponent(queue_down_button, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(queue_up_button, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(queue_top_button, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(queue_bottom_button, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(slots_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(slots_label)
@@ -448,6 +474,32 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView
});
}//GEN-LAST:event_queue_down_buttonActionPerformed
+ private void queue_top_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_queue_top_buttonActionPerformed
+ // TODO add your handling code here:
+
+ queue_top_button.setEnabled(false);
+
+ THREAD_POOL.execute(() -> {
+ _download.topWaitQueue();
+ swingInvoke(() -> {
+ queue_top_button.setEnabled(true);
+ });
+ });
+
+ }//GEN-LAST:event_queue_top_buttonActionPerformed
+
+ private void queue_bottom_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_queue_bottom_buttonActionPerformed
+ // TODO add your handling code here:
+ queue_bottom_button.setEnabled(false);
+
+ THREAD_POOL.execute(() -> {
+ _download.bottomWaitQueue();
+ swingInvoke(() -> {
+ queue_bottom_button.setEnabled(true);
+ });
+ });
+ }//GEN-LAST:event_queue_bottom_buttonActionPerformed
+
@Override
public void pause() {
@@ -596,7 +648,9 @@ public class DownloadView extends javax.swing.JPanel implements TransferenceView
private javax.swing.JButton open_folder_button;
private javax.swing.JButton pause_button;
private javax.swing.JProgressBar progress_pbar;
+ private javax.swing.JButton queue_bottom_button;
private javax.swing.JButton queue_down_button;
+ private javax.swing.JButton queue_top_button;
private javax.swing.JButton queue_up_button;
private javax.swing.JButton restart_button;
private javax.swing.JLabel slot_status_label;
diff --git a/src/main/java/com/tonikelope/megabasterd/MainPanel.java b/src/main/java/com/tonikelope/megabasterd/MainPanel.java
index a75b962d7..b985979d1 100644
--- a/src/main/java/com/tonikelope/megabasterd/MainPanel.java
+++ b/src/main/java/com/tonikelope/megabasterd/MainPanel.java
@@ -53,7 +53,7 @@ import javax.swing.UIManager;
*/
public final class MainPanel {
- public static final String VERSION = "6.83";
+ public static final String VERSION = "6.84";
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;
diff --git a/src/main/java/com/tonikelope/megabasterd/Transference.java b/src/main/java/com/tonikelope/megabasterd/Transference.java
index 93389b41c..6967e488b 100644
--- a/src/main/java/com/tonikelope/megabasterd/Transference.java
+++ b/src/main/java/com/tonikelope/megabasterd/Transference.java
@@ -46,6 +46,10 @@ public interface Transference {
void downWaitQueue();
+ void bottomWaitQueue();
+
+ void topWaitQueue();
+
void checkSlotsAndWorkers();
ConcurrentLinkedQueue getPartialProgress();
diff --git a/src/main/java/com/tonikelope/megabasterd/TransferenceManager.java b/src/main/java/com/tonikelope/megabasterd/TransferenceManager.java
index 787fd1ad6..e7ccd3385 100644
--- a/src/main/java/com/tonikelope/megabasterd/TransferenceManager.java
+++ b/src/main/java/com/tonikelope/megabasterd/TransferenceManager.java
@@ -285,6 +285,83 @@ abstract public class TransferenceManager implements Runnable, SecureSingleThrea
secureNotify();
}
+ public void topWaitQueue(Transference t) {
+
+ synchronized (getWait_queue_lock()) {
+
+ ArrayList wait_array = new ArrayList();
+
+ wait_array.add(t);
+
+ for (Transference t1 : getTransference_waitstart_queue()) {
+
+ if (t1 != t) {
+ wait_array.add(t1);
+ }
+ }
+
+ getTransference_waitstart_queue().clear();
+
+ getTransference_waitstart_queue().addAll(wait_array);
+
+ getTransference_waitstart_queue().forEach((t1) -> {
+ swingInvoke(() -> {
+ getScroll_panel().remove((Component) t1.getView());
+ getScroll_panel().add((Component) t1.getView());
+ });
+ });
+ getTransference_finished_queue().forEach((t1) -> {
+ swingInvoke(() -> {
+ getScroll_panel().remove((Component) t1.getView());
+ getScroll_panel().add((Component) t1.getView());
+ });
+ });
+
+ _frozen = false;
+ }
+
+ secureNotify();
+ }
+
+ public void bottomWaitQueue(Transference t) {
+
+ synchronized (getWait_queue_lock()) {
+
+ ArrayList wait_array = new ArrayList();
+
+ for (Transference t1 : getTransference_waitstart_queue()) {
+
+ if (t1 != t) {
+ wait_array.add(t1);
+ }
+ }
+
+ wait_array.add(t);
+
+ getTransference_waitstart_queue().clear();
+
+ getTransference_waitstart_queue().addAll(wait_array);
+
+ getTransference_waitstart_queue().forEach((t1) -> {
+ swingInvoke(() -> {
+ getScroll_panel().remove((Component) t1.getView());
+ getScroll_panel().add((Component) t1.getView());
+ });
+ });
+ getTransference_finished_queue().forEach((t1) -> {
+ swingInvoke(() -> {
+ getScroll_panel().remove((Component) t1.getView());
+ getScroll_panel().add((Component) t1.getView());
+ });
+ });
+
+ _frozen = false;
+ }
+
+ secureNotify();
+
+ }
+
public void upWaitQueue(Transference t) {
synchronized (getWait_queue_lock()) {
diff --git a/src/main/java/com/tonikelope/megabasterd/Upload.java b/src/main/java/com/tonikelope/megabasterd/Upload.java
index 42f823de0..43a09ac2d 100644
--- a/src/main/java/com/tonikelope/megabasterd/Upload.java
+++ b/src/main/java/com/tonikelope/megabasterd/Upload.java
@@ -1186,6 +1186,16 @@ public class Upload implements Transference, Runnable, SecureSingleThreadNotifia
}
}
+ @Override
+ public void bottomWaitQueue() {
+ _main_panel.getUpload_manager().bottomWaitQueue(this);
+ }
+
+ @Override
+ public void topWaitQueue() {
+ _main_panel.getUpload_manager().topWaitQueue(this);
+ }
+
@Override
public int getSlotsCount() {
return getChunkworkers().size();
diff --git a/src/main/java/com/tonikelope/megabasterd/UploadView.form b/src/main/java/com/tonikelope/megabasterd/UploadView.form
index bf27371f7..8f9388735 100644
--- a/src/main/java/com/tonikelope/megabasterd/UploadView.form
+++ b/src/main/java/com/tonikelope/megabasterd/UploadView.form
@@ -56,18 +56,22 @@
-
+
+
+
-
+
+
+
-
+
@@ -82,9 +86,12 @@
-
-
+
+
+
+
+
@@ -340,5 +347,33 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/com/tonikelope/megabasterd/UploadView.java b/src/main/java/com/tonikelope/megabasterd/UploadView.java
index e7258f275..2bb58e9af 100644
--- a/src/main/java/com/tonikelope/megabasterd/UploadView.java
+++ b/src/main/java/com/tonikelope/megabasterd/UploadView.java
@@ -144,6 +144,8 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView {
queue_up_button = new javax.swing.JButton();
queue_down_button = new javax.swing.JButton();
cbc_label = new javax.swing.JLabel();
+ queue_top_button = new javax.swing.JButton();
+ queue_bottom_button = new javax.swing.JButton();
setBorder(new javax.swing.border.LineBorder(new java.awt.Color(153, 204, 255), 3, true));
@@ -269,6 +271,24 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView {
cbc_label.setText("CBC-MAC 000%");
cbc_label.setDoubleBuffered(true);
+ queue_top_button.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N
+ queue_top_button.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/arriba_1.png"))); // NOI18N
+ queue_top_button.setText("TOP");
+ queue_top_button.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ queue_top_buttonActionPerformed(evt);
+ }
+ });
+
+ queue_bottom_button.setFont(new java.awt.Font("Dialog", 1, 14)); // NOI18N
+ queue_bottom_button.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/abajo_1.png"))); // NOI18N
+ queue_bottom_button.setText("BOTTOM");
+ queue_bottom_button.addActionListener(new java.awt.event.ActionListener() {
+ public void actionPerformed(java.awt.event.ActionEvent evt) {
+ queue_bottom_buttonActionPerformed(evt);
+ }
+ });
+
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
@@ -300,15 +320,19 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView {
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
- .addComponent(queue_up_button, javax.swing.GroupLayout.PREFERRED_SIZE, 43, javax.swing.GroupLayout.PREFERRED_SIZE)
+ .addComponent(queue_top_button)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(queue_up_button, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(queue_down_button, javax.swing.GroupLayout.PREFERRED_SIZE, 42, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addGap(231, 231, 231))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
+ .addComponent(queue_bottom_button)
+ .addGap(0, 0, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(status_label, javax.swing.GroupLayout.DEFAULT_SIZE, 446, Short.MAX_VALUE)
.addGap(18, 18, 18)
- .addComponent(cbc_label)
- .addGap(18, 18, 18)))
+ .addComponent(cbc_label)))
+ .addGap(18, 18, 18)
.addComponent(slots_label)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(slots_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, 70, javax.swing.GroupLayout.PREFERRED_SIZE)))
@@ -319,8 +343,11 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView {
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
+ .addComponent(queue_up_button, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
+ .addComponent(queue_top_button, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(queue_down_button, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
- .addComponent(queue_up_button, javax.swing.GroupLayout.PREFERRED_SIZE, 39, javax.swing.GroupLayout.PREFERRED_SIZE))
+ .addComponent(queue_bottom_button, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(slots_spinner, javax.swing.GroupLayout.PREFERRED_SIZE, 32, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(slots_label)
@@ -448,6 +475,31 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView {
});
}//GEN-LAST:event_queue_down_buttonActionPerformed
+ private void queue_top_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_queue_top_buttonActionPerformed
+ // TODO add your handling code here:
+ queue_top_button.setEnabled(false);
+
+ THREAD_POOL.execute(() -> {
+ _upload.topWaitQueue();
+ swingInvoke(() -> {
+ queue_top_button.setEnabled(true);
+ });
+ });
+
+ }//GEN-LAST:event_queue_top_buttonActionPerformed
+
+ private void queue_bottom_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_queue_bottom_buttonActionPerformed
+ // TODO add your handling code here:
+ queue_bottom_button.setEnabled(false);
+
+ THREAD_POOL.execute(() -> {
+ _upload.bottomWaitQueue();
+ swingInvoke(() -> {
+ queue_bottom_button.setEnabled(true);
+ });
+ });
+ }//GEN-LAST:event_queue_bottom_buttonActionPerformed
+
public void updateCBC(String status) {
swingInvoke(() -> {
@@ -595,7 +647,9 @@ public class UploadView extends javax.swing.JPanel implements TransferenceView {
private javax.swing.JButton folder_link_button;
private javax.swing.JButton pause_button;
private javax.swing.JProgressBar progress_pbar;
+ private javax.swing.JButton queue_bottom_button;
private javax.swing.JButton queue_down_button;
+ private javax.swing.JButton queue_top_button;
private javax.swing.JButton queue_up_button;
private javax.swing.JButton restart_button;
private javax.swing.JLabel slot_status_label;
diff --git a/src/main/resources/images/mbasterd_screen.png b/src/main/resources/images/mbasterd_screen.png
index 666eaf503..5a6d12a00 100644
Binary files a/src/main/resources/images/mbasterd_screen.png and b/src/main/resources/images/mbasterd_screen.png differ