📄 uploadpanel.java
字号:
* 对文件或者目录重新命名 * * @param name 新的名称 */ public void rename(String name) { DefaultMutableTreeNode node = getSelectedNode(); if (node != FILE_ROOT) { ZipEntry entry = (ZipEntry) node.getUserObject(); toolkit.rename(entry, name); boolean isDir = entry.isDirectory(); String parentName = ""; node = (DefaultMutableTreeNode) node.getParent(); if (node != FILE_ROOT) { parentName = ((ZipEntry) node.getUserObject()).getName(); } reloadEntries(); node = getNode(parentName); fileSystemTree.expandPath(new TreePath(node.getPath())); for (int i = 0; i < node.getChildCount(); i++) { DefaultMutableTreeNode child = (DefaultMutableTreeNode) node .getChildAt(i); ZipEntry entry2 = (ZipEntry) child.getUserObject(); if (entry2.isDirectory() == isDir) { String name2 = toolkit.getShortName(entry2); if (name2.equals(name) == true) { fileSystemTree .setSelectionPath(new TreePath(child.getPath())); break; } } } } } /** * 从选中的节点中提取文件到指定的目录下 * * @param dir 指定的目录 */ public void extractFile(File dir) { DefaultMutableTreeNode node = getSelectedNode(); if (node == FILE_ROOT) { toolkit.extractFile(dir, toolkit.getEntries().toArray(), null); } else { ZipEntry entry = (ZipEntry) node.getUserObject(); if (entry.isDirectory()) { List entries = new ArrayList(); for (int i = 0; i < toolkit.getEntries().size(); i++) { ZipEntry entry2 = (ZipEntry) toolkit.getEntries().get(i); if (entry2.getName().startsWith(entry.getName())) { entries.add(entry2); } } String name = toolkit.getShortName(entry) + DELIMITER; String omit = entry.getName(); omit = omit.substring(0, omit.length() - name.length()); toolkit.extractFile(dir, entries.toArray(), omit); } else { String name = toolkit.getShortName(entry); String omit = entry.getName(); omit = omit.substring(0, omit.length() - name.length()); toolkit.extractFile(dir, new Object[] {entry}, omit); } } extractFile(null, null); } /** * 提取指定的文件到指定的目录下 * * @param file 指定文件的文件名 * @param dir 指定的目录 */ public void extractFile(String file, File dir) { ZipEntry entry = null; List entries = toolkit.getEntries(); for (int i = 0; i < entries.size(); i++) { entry = (ZipEntry) entries.get(i); if (entry.getName().equals(file)) { break; } else { entry = null; } } if (entry != null) { String shortName = toolkit.getShortName(entry); String omit = entry.getName(); omit = omit.substring(0, omit.length() - shortName.length()); toolkit.extractFile(dir, new Object[] {entry}, omit); } } /** * 刷新 */ public void refresh() { String file = getSelectedFile(); if (file != null && file.endsWith(DELIMITER) == false) { SetShareAction.getInstance().setEnabled(true); } else { SetShareAction.getInstance().setEnabled(false); } handlerUserViewPanel(); } /*------------------------------------------------------------------------* * 私有方法 * *------------------------------------------------------------------------*/ /** * 处理用户视图 */ private void handlerUserViewPanel() { if (ViewPanel.getInstance().getUserID().length() > 0 && getSelectedFile() != null) { unloadUsers(); try { XmlRpc.setDriver("org.apache.xerces.parsers.SAXParser"); XmlRpcClient client = new XmlRpcClient(genURL()); String response = client.execute(genRequest()).toString(); SAXBuilder builder = new SAXBuilder(); StringReader reader = new StringReader(response); Document document = builder.build(reader); Element root = document.getRootElement(); List friends = root.getChild("Friends").getChildren(); for (int i = 0; i < friends.size(); i++) { Element friend = (Element) friends.get(i); String id = friend.getAttributeValue("id"); DefaultMutableTreeNode n = new DefaultMutableTreeNode(id); userSystemModel.insertNodeInto( n, USER_ROOT, USER_ROOT.getChildCount()); } userSystemTree.setSelectionRow(0); userSystemTree.expandRow(0); } catch (ClassNotFoundException e) { JOptionPane.showMessageDialog(Smart.getInstance(), "系统找不到类库“org.apache.xerces.parsers.SAXParser”!", StringShop.HINT_TITLE, JOptionPane.INFORMATION_MESSAGE); } catch (MalformedURLException e) { e.printStackTrace(); } catch (XmlRpcException e) { e.printStackTrace(); } catch (IOException e) { JOptionPane.showMessageDialog(Smart.getInstance(), "文件服务已关闭,请稍候再试!", StringShop.HINT_TITLE, JOptionPane.INFORMATION_MESSAGE); } catch (JDOMException e) { JOptionPane.showMessageDialog(Smart.getInstance(), "操作失败,请稍候再试!", StringShop.HINT_TITLE, JOptionPane.INFORMATION_MESSAGE); } } } /** * 生成请求URL * * @return 生成的请求URL */ private String genURL() { StringBuffer url = new StringBuffer(); url.append("http://"); url.append(XMLConfig.getServicesIP()); url.append(":"); url.append(XMLConfig.getFilePort()); url.append(DELIMITER); return url.toString(); } /** * 生成XML-RPC请求消息 * * @return 生成的XML-RPC请求消息 */ private XmlRpcRequest genRequest() { //请求方法 StringBuffer method = new StringBuffer(); method.append(XMLConfig.getFileClass()); method.append("."); method.append(XMLConfig.getFileMethod()); //请求参数 Vector params = new Vector(); XMLOutputter outputter = new XMLOutputter(); params.addElement(outputter.outputString(genDocument())); return new XmlRpcRequest(method.toString(), params); } /** * 生成XML文档 * * @return 生成的XML文档 */ private Document genDocument() { Element request = new Element("Request"); Element share = new Element("Share"); request.addContent(share); share.setAttribute("id", ViewPanel.getInstance().getUserID()); share.setAttribute("file", getSelectedFile()); return new Document(request); } /** * 设置树型组件的附加选项 * * @param tree 待设置的树型组件 */ private void setTree(JTree tree) { DefaultTreeSelectionModel model = new DefaultTreeSelectionModel(); model.setSelectionMode(model.SINGLE_TREE_SELECTION); tree.setSelectionModel(model); tree.setSelectionRow(0); tree.expandRow(0); } /** * 在文件系统树上查找具有实体名称的节点 * * @param text 指定的实体名称 * @return 文件系统树上查找具有实体名称的节点 */ private DefaultMutableTreeNode getNode(String text) { DefaultMutableTreeNode parent = FILE_ROOT; StringTokenizer st = new StringTokenizer(text, DELIMITER); if (st.hasMoreTokens() == true) { StringBuffer sb = new StringBuffer(); while (st.hasMoreTokens()) { sb.append(st.nextToken()); sb.append(DELIMITER); for (int j = 0; j < parent.getChildCount(); j++) { DefaultMutableTreeNode parent2 = (DefaultMutableTreeNode) parent.getChildAt(j); ZipEntry entry = (ZipEntry) parent2.getUserObject(); if (sb.toString().equals(entry.getName())) { parent = parent2; break; } } } } return parent; } /** * 装载实体 */ private void loadEntries() { toolkit.openFile(new File(XMLConfig.getUploadFile())); List entries = toolkit.getEntries(); for (int i = 0; i < entries.size(); i++) { ZipEntry entry = (ZipEntry) entries.get(i); DefaultMutableTreeNode child = new DefaultMutableTreeNode(entry); String name = entry.getName(); String parentName = name; if (entry.isDirectory() == true) { name = name.substring(0, name.length() - 1); int index = name.lastIndexOf(DELIMITER); if (index != -1) { parentName = name.substring(0, index + 1); } } else { int index = name.lastIndexOf(DELIMITER); if (index != -1) { parentName = name.substring(0, index + 1); } } DefaultMutableTreeNode parent = getNode(parentName); boolean inserted = false; for (int j = 0; j < parent.getChildCount(); j++) { DefaultMutableTreeNode sibling = (DefaultMutableTreeNode) parent.getChildAt(j); ZipEntry entry2 = (ZipEntry) sibling.getUserObject(); if (toolkit.compare(entry, entry2) < 0) { fileSystemModel.insertNodeInto(child, parent, j); inserted = true; break; } } if (inserted == false) { fileSystemModel.insertNodeInto( child, parent, parent.getChildCount()); } } fileSystemTree.expandRow(0); } /** * 卸载实体 */ private void unloadEntries() { int count = FILE_ROOT.getChildCount(); for (int i = 0; i < count; i++) { fileSystemModel.removeNodeFromParent( (DefaultMutableTreeNode) FILE_ROOT.getChildAt(0)); } } /** * 重载实体
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -