diff --git a/src/megabasterd/FolderLinkDialog.java b/src/megabasterd/FolderLinkDialog.java index 412c6cb37..39222199f 100644 --- a/src/megabasterd/FolderLinkDialog.java +++ b/src/megabasterd/FolderLinkDialog.java @@ -233,30 +233,28 @@ public final class FolderLinkDialog extends javax.swing.JDialog { }// //GEN-END:initComponents private void skip_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_skip_buttonActionPerformed - - + if(deleteSelectedTreeItems(file_tree)) { _genDownloadLiks(); + file_tree.setRootVisible( ((MegaMutableTreeNode)file_tree.getModel().getRoot()).getChildCount() > 0 ); swingReflectionInvoke("setVisible", restore_button, true); } }//GEN-LAST:event_skip_buttonActionPerformed private void dance_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_dance_buttonActionPerformed - - - + _download = true; swingReflectionInvoke("setVisible", this, false); }//GEN-LAST:event_dance_buttonActionPerformed private void skip_rest_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_skip_rest_buttonActionPerformed - if(deleteAllExceptSelectedTreeItems(file_tree)) { _genDownloadLiks(); + file_tree.setRootVisible( ((MegaMutableTreeNode)file_tree.getModel().getRoot()).getChildCount() > 0 ); swingReflectionInvoke("setVisible", restore_button, true); } @@ -264,15 +262,12 @@ public final class FolderLinkDialog extends javax.swing.JDialog { private void restore_buttonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_restore_buttonActionPerformed - swingReflectionInvoke("setEnabled", restore_button, false); swingReflectionInvoke("setEnabled", dance_button, false); - swingReflectionInvoke("setEnabled", file_tree, false); + swingReflectionInvokeAndWait("setEnabled", file_tree, false); - - THREAD_POOL.execute(new Runnable(){ @Override public void run() { @@ -287,6 +282,8 @@ public final class FolderLinkDialog extends javax.swing.JDialog { swingReflectionInvoke("setEnabled", dance_button, true); + file_tree.setRootVisible( ((MegaMutableTreeNode)file_tree.getModel().getRoot()).getChildCount() > 0 ); + }}); }//GEN-LAST:event_restore_buttonActionPerformed diff --git a/src/megabasterd/MainPanel.java b/src/megabasterd/MainPanel.java index e04a3a7a4..9ef1c74a4 100644 --- a/src/megabasterd/MainPanel.java +++ b/src/megabasterd/MainPanel.java @@ -62,7 +62,7 @@ import static megabasterd.Transference.MAX_TRANSFERENCE_SPEED_DEFAULT; */ public final class MainPanel { - public static final String VERSION="1.22"; + public static final String VERSION="1.23"; public static final int CONNECTION_TIMEOUT = 30000; public static final int THROTTLE_SLICE_SIZE=16*1024; public static final int STREAMER_PORT = 1337; diff --git a/src/megabasterd/MiscTools.java b/src/megabasterd/MiscTools.java index 77fbbc1d7..3a809c043 100644 --- a/src/megabasterd/MiscTools.java +++ b/src/megabasterd/MiscTools.java @@ -38,6 +38,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; import java.util.logging.Level; +import java.util.logging.Logger; import static java.util.logging.Logger.getLogger; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -47,7 +48,6 @@ import javax.swing.SwingUtilities; import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.MutableTreeNode; -import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import javax.xml.bind.DatatypeConverter; import static megabasterd.MainPanel.CONNECTION_TIMEOUT; @@ -625,17 +625,17 @@ public final class MiscTools { DefaultTreeModel model = (DefaultTreeModel) (tree.getModel()); - DefaultMutableTreeNode node; + MutableTreeNode node; for (TreePath path : paths) { - - node = (DefaultMutableTreeNode) (path.getLastPathComponent()); + + node = (MutableTreeNode)path.getLastPathComponent(); if(node != null) { if(node != model.getRoot()) { - DefaultMutableTreeNode parent = (DefaultMutableTreeNode) node.getParent(); + MutableTreeNode parent = (MutableTreeNode)node.getParent(); model.removeNodeFromParent(node); @@ -643,7 +643,7 @@ public final class MiscTools { if(parent != model.getRoot()) { - DefaultMutableTreeNode parent_aux = (DefaultMutableTreeNode) parent.getParent(); + MutableTreeNode parent_aux = (MutableTreeNode)parent.getParent(); model.removeNodeFromParent(parent); @@ -659,7 +659,11 @@ public final class MiscTools { swingReflectionInvokeAndWait("setEnabled", tree, true); - tree.setModel(new DefaultTreeModel(new DefaultMutableTreeNode())); + try { + tree.setModel(new DefaultTreeModel((MutableTreeNode)tree.getModel().getRoot().getClass().newInstance())); + } catch (InstantiationException | IllegalAccessException ex) { + Logger.getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); + } return true; } @@ -676,7 +680,7 @@ public final class MiscTools { TreePath[] paths = tree.getSelectionPaths(); - HashMap hashmap_old = new HashMap<>(); + HashMap hashmap_old = new HashMap<>(); if(paths != null) { @@ -696,19 +700,19 @@ public final class MiscTools { for (TreePath path : paths) { - if((DefaultMutableTreeNode)path.getLastPathComponent() != (DefaultMutableTreeNode)tree.getModel().getRoot()) + if((MutableTreeNode)path.getLastPathComponent() != (MutableTreeNode)tree.getModel().getRoot()) { Object parent = new_root; for(Object path_element:path.getPath()) { - if((DefaultMutableTreeNode)path_element != (DefaultMutableTreeNode)tree.getModel().getRoot()) { + if((MutableTreeNode)path_element != (MutableTreeNode)tree.getModel().getRoot()) { - if(hashmap_old.get((DefaultMutableTreeNode)path_element) == null) { + if(hashmap_old.get((MutableTreeNode)path_element) == null) { Object node=null; - if((DefaultMutableTreeNode)path_element == (DefaultMutableTreeNode)path.getLastPathComponent()) { + if((MutableTreeNode)path_element == (MutableTreeNode)path.getLastPathComponent()) { node = path_element; @@ -724,19 +728,22 @@ public final class MiscTools { getLogger(MiscTools.class.getName()).log(Level.SEVERE, null, ex); } } + + if(parent != null) { + + ((DefaultMutableTreeNode)parent).add((MutableTreeNode)node); + + if(!((MutableTreeNode)path_element).isLeaf()) { - ((DefaultMutableTreeNode)parent).add((MutableTreeNode)node); + hashmap_old.put((MutableTreeNode)path_element, (MutableTreeNode)node); - if(!((TreeNode)path_element).isLeaf()) { - - hashmap_old.put((DefaultMutableTreeNode)path_element, (DefaultMutableTreeNode)node); - - parent = node; + parent = node; + } } - + } else { - parent = hashmap_old.get((DefaultMutableTreeNode)path_element); + parent = hashmap_old.get((MutableTreeNode)path_element); } } }