📄 uploadpanel.java
字号:
/* * @(#) UploadPanel.java * Copyright 2004 HWStudio. All rights reserved. */package hws.item.smart.panel.function.share;//导入核心Java类库import java.io.File;import java.io.IOException;import java.io.StringReader;import java.awt.Insets;import java.awt.Component;import java.awt.FlowLayout;import java.awt.GridBagLayout;import java.awt.GridBagConstraints;import java.net.MalformedURLException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.List;import java.util.Vector;import java.util.ArrayList;import java.util.StringTokenizer;import java.util.zip.ZipEntry;import javax.swing.JTree;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JButton;import javax.swing.JTextArea;import javax.swing.JSplitPane;import javax.swing.JOptionPane;import javax.swing.JScrollPane;import javax.swing.tree.TreePath;import javax.swing.tree.DefaultTreeModel;import javax.swing.tree.DefaultMutableTreeNode;import javax.swing.tree.DefaultTreeCellRenderer;import javax.swing.tree.DefaultTreeSelectionModel;import javax.swing.event.TreeSelectionEvent;import javax.swing.event.TreeSelectionListener;//导入自定义Java类库import hws.item.smart.Smart;import hws.item.smart.misc.ImageShop;import hws.item.smart.misc.SBChanger;import hws.item.smart.misc.XMLConfig;import hws.item.smart.misc.StringShop;import hws.item.smart.misc.ActionCenter;import hws.item.smart.panel.function.chat.ViewPanel;import hws.item.smart.action.share.upload.RenameAction;import hws.item.smart.action.share.upload.AddFileAction;import hws.item.smart.action.share.upload.SetShareAction;import hws.item.smart.action.share.upload.DeleteFileAction;import hws.item.smart.action.share.upload.ExtractFileAction;import hws.item.smart.action.share.upload.NewDirectoryAction;import hws.item.smart.utility.share.ZipToolkit;//导入第三方Java类库import org.jdom.Element;import org.jdom.Document;import org.jdom.JDOMException;import org.jdom.input.SAXBuilder;import org.jdom.output.XMLOutputter;import org.apache.xmlrpc.XmlRpc;import org.apache.xmlrpc.XmlRpcClient;import org.apache.xmlrpc.XmlRpcRequest;import org.apache.xmlrpc.XmlRpcException;/** * 上传文件面板 * * @version 0.1 2005-08-29 * @author Hwerz */public class UploadPanel extends JPanel { /*------------------------------------------------------------------------* * 属性定义 * *------------------------------------------------------------------------*/ /** * 分隔符 */ private static final String DELIMITER = "/"; /** * 文件系统树根节点 */ private static final DefaultMutableTreeNode FILE_ROOT = new DefaultMutableTreeNode("上传文件"); /** * 用户系统树根节点 */ private static final DefaultMutableTreeNode USER_ROOT = new DefaultMutableTreeNode("共享好友"); /** * 该类自身的一个静态引用 */ private static UploadPanel panel; /** * 文件系统树视图 */ private JTree fileSystemTree; /** * 文件系统树模型 */ private DefaultTreeModel fileSystemModel; /** * 用户系统树视图 */ private JTree userSystemTree; /** * 用户系统树模型 */ private DefaultTreeModel userSystemModel; /** * 用户信息文本域 */ private JTextArea userInfoTextArea; /** * Zip文件工具箱 */ private ZipToolkit toolkit; /*------------------------------------------------------------------------* * 构造函数 * *------------------------------------------------------------------------*/ /** * 构造函数为私有,这样在整个运行过程中该类就只能有一个实例 */ private UploadPanel() { super(new GridBagLayout()); toolkit = ZipToolkit.getInstance(); //工具栏面板 GridBagConstraints constraints = new GridBagConstraints( //gridx, gridy 0, 0, //gridwidth, gridheight 1, 1, //weightx, weighty 1.0, 0.0, //anchor GridBagConstraints.NORTH, //fill GridBagConstraints.HORIZONTAL, //insets new Insets(5, 0, 0, 0), //ipadx, ipady 0, 0); add(new Toolbar(), constraints); //分割条面板 JSplitPane spliter = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, false, new FileViewPanel(), new UserViewPanel()); spliter.setOneTouchExpandable(true); spliter.setDividerLocation(300); constraints.gridy = 1; constraints.weighty = 1.0; constraints.fill = GridBagConstraints.BOTH; constraints.insets = new Insets(5, 5, 5, 5); add(spliter, constraints); } /*------------------------------------------------------------------------* * 公共方法 * *------------------------------------------------------------------------*/ /** * 对该类提供的一个全局访问点,用来实例化该对象 * * @return 该类唯一的一个实例 */ public static UploadPanel getInstance() { if (panel == null) { panel = new UploadPanel(); } return panel; } /** * 返回文件系统树的选中目录或者文件节点 * * @return 文件系统树的选中目录或者文件节点 */ public DefaultMutableTreeNode getSelectedNode() { DefaultMutableTreeNode node = null; TreePath path = fileSystemTree.getSelectionPath(); if (path != null) { node = (DefaultMutableTreeNode) path.getLastPathComponent(); } return node; } /** * 返回文件系统树的选中目录或者文件节点的文件名 * * @return 文件系统树的选中目录或者文件节点的文件名 */ public String getSelectedFile() { String file = null; DefaultMutableTreeNode node = getSelectedNode(); if (node != null) { StringBuffer buffer = new StringBuffer(); buffer.append(DELIMITER); if (node != FILE_ROOT) { buffer.append(node.toString()); } file = buffer.toString(); } return file; } /** * 返回选中文件的共享好友 * * @return 选中文件的共享好友 */ public List getAllShareFriends() { List friends = new ArrayList(); for (int i = 0; i < USER_ROOT.getChildCount(); i++) { friends.add(USER_ROOT.getChildAt(i).toString()); } return friends; } /** * 在选中的目录中添加子目录 * * @param name 待添加子目录的名称 */ public void newDirectory(String name) { DefaultMutableTreeNode parent = getSelectedNode(); String parentName = ""; if (parent == FILE_ROOT) { toolkit.newDirectory(null, name); } else { ZipEntry entry = (ZipEntry) parent.getUserObject(); toolkit.newDirectory(entry, name); parentName = entry.getName(); } reloadEntries(); parent = getNode(parentName); fileSystemTree.expandPath(new TreePath(parent.getPath())); for (int i = 0; i < parent.getChildCount(); i++) { DefaultMutableTreeNode child = (DefaultMutableTreeNode) parent .getChildAt(i); ZipEntry entry2 = (ZipEntry) child.getUserObject(); if (entry2.isDirectory() == true) { if (toolkit.getShortName(entry2).equals(name) == true) { fileSystemTree .setSelectionPath(new TreePath(child.getPath())); break; } } } } /** * 向选中的目录中添加文件 * * @param file 待添加的文件 */ public void addFile(File file) { DefaultMutableTreeNode parent = getSelectedNode(); String parentName = ""; if (parent == FILE_ROOT) { toolkit.addFile(null, file); } else { ZipEntry entry = (ZipEntry) parent.getUserObject(); toolkit.addFile(entry, file); parentName = entry.getName(); } reloadEntries(); parent = getNode(parentName); fileSystemTree.expandPath(new TreePath(parent.getPath())); for (int i = 0; i < parent.getChildCount(); i++) { DefaultMutableTreeNode child = (DefaultMutableTreeNode) parent .getChildAt(i); ZipEntry entry2 = (ZipEntry) child.getUserObject(); if (entry2.isDirectory() == false) { if (toolkit.getShortName(entry2).equals(file.getName())) { fileSystemTree .setSelectionPath(new TreePath(child.getPath())); break; } } } } /** * 删除选中的文件或者目录 */ public void deleteFile() { DefaultMutableTreeNode node = getSelectedNode(); if (node != FILE_ROOT) { ZipEntry entry = (ZipEntry) node.getUserObject(); toolkit.deleteFile(entry); int row = fileSystemTree .getRowForPath(fileSystemTree.getSelectionPath()); fileSystemModel.removeNodeFromParent(node); fileSystemTree.setSelectionRow(row - 1); } } /**
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -