?? viewpanel.java
字號:
/* * @(#) ViewPanel.java * Copyright 2004 HWStudio. All rights reserved. */package hws.item.smart.panel.function.chat;//導入核心Java類庫import java.io.IOException;import java.io.StringReader;import java.awt.Insets;import java.awt.FlowLayout;import java.awt.GridBagLayout;import java.awt.GridBagConstraints;import java.awt.event.ItemEvent;import java.awt.event.ItemListener;import java.net.MalformedURLException;import java.util.List;import java.util.Vector;import javax.swing.JPanel;import javax.swing.JLabel;import javax.swing.JButton;import javax.swing.JTextField;import javax.swing.JOptionPane;import javax.swing.JPasswordField;import javax.swing.event.ChangeEvent;import javax.swing.event.DocumentEvent;import javax.swing.event.DocumentListener;//導入自定義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.BorderShop;import hws.item.smart.misc.StringShop;import hws.item.smart.panel.function.chat.misc.OptionalInfoPanel1;import hws.item.smart.action.chat.view.ResetInfoAction;import hws.item.smart.action.chat.view.UpdateInfoAction;import hws.item.smart.utility.chat.UserInfo;import hws.item.smart.utility.chat.BasicInfo;//導入第三方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-23 * @author Hwerz */public class ViewPanel extends JPanel { /*------------------------------------------------------------------------* * 屬性定義 * *------------------------------------------------------------------------*/ /** * 該類自身的一個靜態引用 */ private static ViewPanel panel; /** * 基本信息面板 */ private BasicInfoPanel basicInfoPanel; /** * 可選信息面板 */ private OptionalInfoPanel2 optionalInfoPanel; /*------------------------------------------------------------------------* * 構造函數 * *------------------------------------------------------------------------*/ /** * 構造函數為私有,這樣在整個運行過程中該類就只能有一個實例 */ private ViewPanel() { super(new GridBagLayout()); //工具欄面板 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); //基本信息面板 basicInfoPanel = new BasicInfoPanel(); basicInfoPanel.setBorder(BorderShop.BASIC_INFO_BORDER); constraints.gridy = 1; constraints.insets = new Insets(0, 10, 0, 10); add(basicInfoPanel, constraints); //可選信息面板 optionalInfoPanel = new OptionalInfoPanel2(); optionalInfoPanel.setBorder(BorderShop.OPTIONAL_INFO_BORDER); constraints.gridy = 2; constraints.weighty = 1.0; constraints.fill = GridBagConstraints.BOTH; constraints.insets = new Insets(10, 10, 3, 10); add(optionalInfoPanel, constraints); } /*------------------------------------------------------------------------* * 公共方法 * *------------------------------------------------------------------------*/ /** * 對該類提供的一個全局訪問點,用來實例化該對象 * * @return 該類唯一的一個實例 */ public static ViewPanel getInstance() { if (panel == null) { panel = new ViewPanel(); } return panel; } /** * 返回當前登錄用戶的ID * * @return 當前登錄用戶的ID */ public String getUserID() { return basicInfoPanel.getID(); } /** * 返回當前登錄用戶的昵稱 * * @return 當前登錄用戶的昵稱 */ public String getUserNickname() { return basicInfoPanel.getNickname(); } /** * 更新 */ public void update() { if (getUserID().length() > 0) { 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(); String result = root.getChild("Result").getText(); if (result.equals(StringShop.UPDATE_SUCCESS) == true) { JOptionPane.showMessageDialog(Smart.getInstance(), "更新成功!", StringShop.HINT_TITLE, JOptionPane.INFORMATION_MESSAGE); ResetInfoAction.getInstance().setEnabled(false); UpdateInfoAction.getInstance().setEnabled(false); } else { JOptionPane.showMessageDialog(Smart.getInstance(), "更新失敗,請稍候再試!", StringShop.HINT_TITLE, JOptionPane.INFORMATION_MESSAGE); } } 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); } } } /** * 重置 */ public void reset() { if (getUserID().length() > 0) { UserInfo userInfo = UserInfo.getRemoteUserInfo(getUserID()); ViewPanel.getInstance().setValue(userInfo); ResetInfoAction.getInstance().setEnabled(false); } } /** * 設置顯示用戶的信息 * * @param info 待設置的用戶信息 */ public void setValue(UserInfo info) { if (info != null) { basicInfoPanel.setValue(info.getBasicInfo()); optionalInfoPanel.setValue(info.getOptionalInfo()); } else { basicInfoPanel.setValue(null); optionalInfoPanel.setValue(null); } ResetInfoAction.getInstance().setEnabled(false); UpdateInfoAction.getInstance().setEnabled(false); } /*------------------------------------------------------------------------* * 私有方法 * *------------------------------------------------------------------------*/ /** * 生成請求URL * * @return 生成的請求URL */ private String genURL() { StringBuffer url = new StringBuffer(); url.append("http://"); url.append(XMLConfig.getServicesIP()); url.append(":"); url.append(XMLConfig.getUpdatePort()); url.append("/"); return url.toString(); } /** * 生成XML-RPC請求消息 * * @return 生成的XML-RPC請求消息 */ private XmlRpcRequest genRequest() { //請求方法 StringBuffer method = new StringBuffer(); method.append(XMLConfig.getUpdateClass()); method.append("."); method.append(XMLConfig.getUpdateMethod()); //請求參數 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 level1 = new Element("User"); request.addContent(level1); Element level2 = new Element("Basic"); level1.addContent(level2); Element level3 = new Element("ID"); level3.setText(basicInfoPanel.getID()); level2.addContent(level3); level3 = new Element("Nickname"); level3.setText(basicInfoPanel.getNickname()); level2.addContent(level3); level3 = new Element("Password"); level3.setText(basicInfoPanel.getPassword()); level2.addContent(level3); level2 = new Element("Optional"); level1.addContent(level2); level3 = new Element("Name"); level3.setText(optionalInfoPanel.getName()); level2.addContent(level3); level3 = new Element("Gender"); level3.setText(optionalInfoPanel.getGender()); level2.addContent(level3); level3 = new Element("Birthday"); level3.setText(optionalInfoPanel.getBirthday()); level2.addContent(level3); level3 = new Element("Country");
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -