webdiskbean.java
来自「OperaMasks是一种基于J2EE的Web开发技术」· Java 代码 · 共 245 行
JAVA
245 行
package demo.webdisk;
import java.io.File;
import java.io.FileFilter;
import javax.faces.context.FacesContext;
import javax.servlet.ServletContext;
import org.operamasks.faces.annotation.Action;
import org.operamasks.faces.annotation.BeforeRender;
import org.operamasks.faces.annotation.Bind;
import org.operamasks.faces.annotation.ManagedBean;
import org.operamasks.faces.annotation.ManagedBeanScope;
import org.operamasks.faces.component.grid.impl.UIDataGrid;
import org.operamasks.faces.component.layout.impl.UIWindow;
import org.operamasks.faces.component.tree.base.TreeDataProvider;
import org.operamasks.faces.component.tree.impl.UITree;
import org.operamasks.faces.component.tree.impl.UITreeNode;
import org.operamasks.faces.component.widget.fileupload.impl.UIFileUploadDialog;
import org.operamasks.faces.util.Browser;
@ManagedBean(name = "WebdiskBean", scope = ManagedBeanScope.SESSION)
public class WebDiskBean {
@Bind
private UITree tree;
@Bind
private UIFileUploadDialog fileUpload;
@Bind
private UIWindow directoryDetail;
@Bind
private UIDataGrid fileList;
@Bind(id = "fileUpload", attribute = "savePath")
private String savePath;
@Bind(id = "fileList")
private File[] fileListData = new File[] {};
@Bind
private String directoryName;
@Bind
private String response;
private static final String ROOT_NAME = "网络硬盘";
private FileFilter directoryFileter = new FileFilter() {
public boolean accept(File pathname) {
return pathname.isDirectory();
}
};
private FileFilter fileFileter = new FileFilter() {
public boolean accept(File pathname) {
return pathname.isFile();
}
};
@Bind(id = "tree")
private TreeDataProvider treeData = new TreeDataProvider() {
public Object[] getChildren(Object node) {
if (node == null) {
FacesContext context = FacesContext.getCurrentInstance();
ServletContext servletContext = (ServletContext) context.getExternalContext().getContext();
File file = new File(servletContext.getRealPath("webdisk/" + ROOT_NAME));
if (!file.exists()) {
file.mkdirs();
}
return new Object[] { file };
} else if (node instanceof java.io.File) {
return ((java.io.File) node).listFiles(directoryFileter);
}
return null;
}
public Boolean isChecked(Object node) {
return null;
}
public boolean isCascade(Object node) {
return true;
}
public String getIcon(Object node) {
return "images/folder.gif";
}
public String getText(Object node) {
File file = (File) node;
File[] files = file.listFiles(fileFileter);
int length = files == null ? 0 : files.length;
return String.format("%s(%s)", file.getName(), length);
}
public String getHref(Object node) {
return null;
}
public String getHrefTarget(Object node) {
return null;
}
public boolean isExpanded(Object node) {
File file = (File) node;
return ROOT_NAME.equals(file.getName());
}
};
@Action
public void tree_onselect() {
UITreeNode node = tree.getSelectedNode();
if (node != null && node.getUserData() != null) {
File file = (File) node.getUserData();
if (file.isDirectory()) {
savePath = file.getPath();
fileListData = file.listFiles(fileFileter);
} else {
savePath = "";
fileListData = new File[] {};
}
fileList.reload();
}
response = "";
}
@Action
public void addFile() {
UITreeNode node = tree.getSelectedNode();
if (node != null && node.getUserData() != null) {
File file = (File) node.getUserData();
long maxSize = 0;
for(File f : file.listFiles(fileFileter)){
maxSize += f.length();
}
if(maxSize < 100*1024*1024){
fileUpload.show();
}else{
response = "<span style='color:red'>文件夹容量超出限制,请清除一些文件再上传!</span>";
}
}
}
@Action
public void fileUpload_onclose() {
updateList();
}
@Action
public void delFile() {
boolean needUpdate = false;
Object[] selections = fileList.getSelectedValues();
for (Object o : selections) {
if (((File) o).delete()) {
needUpdate = true;
}
}
if (needUpdate) {
updateList();
fileList.reload();
}
}
private void updateList() {
UITreeNode node = tree.getSelectedNode();
if (node != null && node.getUserData() != null) {
File file = (File) node.getUserData();
if (file != null) {
fileListData = file.listFiles(fileFileter);
if(fileListData.length == 1){
fileList.setSelectedRow(0);
}
fileList.reload();
}
node.reload();
}
response = "";
}
@Action
public void addDirectory() {
UITreeNode node = tree.getSelectedNode();
if (node != null) {
directoryDetail.show();
}
response = "";
}
@Action
public void delDirectory() {
UITreeNode node = tree.getSelectedNode();
if (node != null && node.getUserData() != null) {
File file = (File) node.getUserData();
if (file != null && !ROOT_NAME.equals(file.getName())) {
deleteDir(file);
node.remove();
fileListData = new File[]{};
fileList.reload();
}
}
response = "";
}
private void deleteDir(File dir) {
if (dir == null || !dir.exists() || !dir.isDirectory())
return;
for (File file : dir.listFiles()) {
if (file.isFile())
file.delete();
else if (file.isDirectory())
deleteDir(file);
}
dir.delete();
}
@Action
public void sure() {
if (directoryName != null) {
UITreeNode node = tree.getSelectedNode();
if (node != null && node.getUserData() != null) {
File file = (File) node.getUserData();
if (file != null) {
File newFile = new File(file.getPath() + "/" + directoryName);
if(newFile.mkdir()){
node.setExpanded(true);
node.reloadChildren();
directoryDetail.close();
}
}
}
}
response = "";
}
@BeforeRender
public void beforeRender(boolean isPostback){
if(!isPostback){
Browser.execClientScript("clientTree.getRootNode().select();");
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?