unsharing of directories

This commit is contained in:
Zlatin Balevsky
2019-12-07 12:14:49 +00:00
parent 8536353c26
commit 5c17536683
3 changed files with 45 additions and 5 deletions

View File

@ -49,9 +49,15 @@ class FileTree<T> {
synchronized void traverse(FileTreeCallback<T> callback) {
doTraverse(root, callback);
}
synchronized void traverse(File from, FileTreeCallback<T> callback) {
TreeNode node = fileToNode.get(from);
if (node == null)
return
doTraverse(node, callback);
}
private void doTraverse(TreeNode<T> node, FileTreeCallback<T> callback) {
println "traversing $node"
boolean leave = false
if (node.file != null) {
println "file is $node.file"

View File

@ -1,8 +1,10 @@
package com.muwire.webui;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import com.muwire.core.Core;
@ -16,6 +18,7 @@ import com.muwire.core.files.FileListCallback;
import com.muwire.core.files.FileLoadedEvent;
import com.muwire.core.files.FileSharedEvent;
import com.muwire.core.files.FileTree;
import com.muwire.core.files.FileTreeCallback;
import com.muwire.core.files.FileUnsharedEvent;
import net.i2p.data.Base64;
@ -89,6 +92,19 @@ public class FileManager {
event.setUnsharedFile(sf);
core.getEventBus().publish(event);
} else {
TraverseCallback cb = new TraverseCallback();
fileTree.traverse(file, cb);
fileTree.remove(file);
revision++;
for (SharedFile found : cb.found) {
FileUnsharedEvent e = new FileUnsharedEvent();
e.setUnsharedFile(found);
core.getEventBus().publish(e);
}
if (core.getMuOptions().getWatchedDirectories().contains(file.getAbsolutePath())) {
DirectoryUnsharedEvent event = new DirectoryUnsharedEvent();
event.setDirectory(file);
@ -96,4 +112,21 @@ public class FileManager {
}
}
}
private static class TraverseCallback implements FileTreeCallback<SharedFile> {
private final List<SharedFile> found = new ArrayList<>();
@Override
public void onDirectoryEnter(File file) {
}
@Override
public void onDirectoryLeave() {
}
@Override
public void onFile(File file, SharedFile value) {
found.add(value);
}
}
}

View File

@ -12,14 +12,15 @@ class Node {
updateDiv() {
var div = document.getElementById(this.nodeId)
var unshareLink = "<a href='#' onclick='window.unshare(\"" + this.nodeId +"\");return false;'>Unshare</a>"
if (this.leaf) {
div.innerHTML = "<li>"+this.path+"<br/><a href='#' onclick='window.unshare(\"" + this.nodeId + "\");return false;'>Unshare</a></li>"
div.innerHTML = "<li>"+this.path+"<br/>"+ unshareLink + "</li>"
} else {
if (this.children.length == 0) {
div.innerHTML = "<li><span><a href='#' onclick='window.expand(\"" + this.nodeId + "\");return false'>" +
this.path + "</a></span></li>"
this.path + "</a> " + unshareLink + "</span></li>"
} else {
var l = "<li><a href='#' onclick='window.collapse(\"" + this.nodeId + "\");return false;'>"+this.path+"</a><ul>"
var l = "<li><a href='#' onclick='window.collapse(\"" + this.nodeId + "\");return false;'>"+this.path+"</a> " + unshareLink + "<ul>"
var i
for (i = 0; i < this.children.length; i++) {
l += "<li>"