?? 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 + -