⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 accountpanel.java

📁 该系统是一个基于p2p的即时聊天系统
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* * @(#) AccountPanel.java * Copyright 2004 HWStudio. All rights reserved. */package hws.item.smart.panel.function.mail;//导入核心Java类库import java.awt.Insets;import java.awt.Component;import java.awt.FlowLayout;import java.awt.GridBagLayout;import java.awt.GridBagConstraints;import java.util.List;import javax.swing.JTree;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JButton;import javax.swing.JTextField;import javax.swing.JSplitPane;import javax.swing.JScrollPane;import javax.swing.JOptionPane;import javax.swing.JPasswordField;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.XMLConfig;import hws.item.smart.misc.ImageShop;import hws.item.smart.misc.ColorShop;import hws.item.smart.misc.SBChanger;import hws.item.smart.misc.BorderShop;import hws.item.smart.misc.StringShop;import hws.item.smart.misc.ActionCenter;import hws.item.smart.action.mail.account.AddAccountAction;import hws.item.smart.action.mail.account.ApplyChangeAction;import hws.item.smart.action.mail.account.EditAccountAction;import hws.item.smart.action.mail.account.DeleteAccountAction;import hws.item.smart.utility.mail.POP3Info;import hws.item.smart.utility.mail.SMTPInfo;import hws.item.smart.utility.mail.AccountInfo;import hws.item.smart.utility.mail.PersonalInfo;/** * 账号设置面板 * * @version 0.1 2005-08-22 * @author Hwerz */public class AccountPanel extends JPanel {    /*------------------------------------------------------------------------*     *                                属性定义                                *     *------------------------------------------------------------------------*/    /**     * 账号管理树根节点     */    private static final DefaultMutableTreeNode ACCOUNT_ROOT =        new DefaultMutableTreeNode("邮箱账号");    /**     * 该类自身的一个静态引用     */    private static AccountPanel panel;    /**     * 账号视图面板     */    private AccountViewPanel accountViewPanel;    /**     * 账号信息面板     */    private AccountInfoPanel accountInfoPanel;    /*------------------------------------------------------------------------*     *                                构造函数                                *     *------------------------------------------------------------------------*/    /**     * 构造函数为私有,这样在整个运行过程中该类就只能有一个实例     */    private AccountPanel() {        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);        //分割条面板        accountInfoPanel = new AccountInfoPanel();        accountViewPanel = new AccountViewPanel();        JSplitPane spliter = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, false,            accountViewPanel, accountInfoPanel);        spliter.setOneTouchExpandable(true);        spliter.setDividerLocation(200);        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 AccountPanel getInstance() {        if (panel == null) {            panel = new AccountPanel();        }        return panel;    }    /**     * 激活账号面板上的所有文本框     */    public void activate() {        accountInfoPanel.activate();    }    /**     * 禁用账号面板上的所有文本框     */    public void inactivate() {        accountInfoPanel.inactivate();    }    /**     * 提交账号变化     */    public void apply() {        AccountInfo oldInfo = accountViewPanel.getSelectedAccount();        AccountInfo newInfo = null;        PersonalInfoPanel panel1 = accountInfoPanel.getPersonalInfoPanel();        SMTPInfoPanel panel2 = accountInfoPanel.getSMTPInfoPanel();        POP3InfoPanel panel3 = accountInfoPanel.getPOP3InfoPanel();        if (panel1.getName().length() == 0) {            JOptionPane.showMessageDialog(Smart.getInstance(),                "姓名不可为空!", StringShop.HINT_TITLE,                JOptionPane.INFORMATION_MESSAGE);        } else if (panel1.getEmail().length() == 0) {            JOptionPane.showMessageDialog(Smart.getInstance(),                "电子邮件地址不可为空!", StringShop.HINT_TITLE,                JOptionPane.INFORMATION_MESSAGE);        } else if (panel2.getURL().length() == 0) {            JOptionPane.showMessageDialog(Smart.getInstance(),                "发送邮件服务器不可为空!", StringShop.HINT_TITLE,                JOptionPane.INFORMATION_MESSAGE);        } else if (panel2.getUserID().length() == 0) {            JOptionPane.showMessageDialog(Smart.getInstance(),                "SMTP邮箱账号不可为空!", StringShop.HINT_TITLE,                JOptionPane.INFORMATION_MESSAGE);        } else if (panel3.getURL().length() == 0) {            JOptionPane.showMessageDialog(Smart.getInstance(),                "接收邮件服务器不可为空!", StringShop.HINT_TITLE,                JOptionPane.INFORMATION_MESSAGE);        } else if (panel3.getUserID().length() == 0) {            JOptionPane.showMessageDialog(Smart.getInstance(),                "POP3邮箱账号不可为空!", StringShop.HINT_TITLE,                JOptionPane.INFORMATION_MESSAGE);        } else {            PersonalInfo info1 = new PersonalInfo(panel1.getName(),                panel1.getOrganization(), panel1.getEmail(), panel1.getReply());            SMTPInfo info2 = new SMTPInfo(panel2.getURL(), panel2.getPort(),                panel2.getUserID(), panel2.getPassword());            POP3Info info3 = new POP3Info(panel3.getURL(), panel3.getPort(),                panel3.getUserID(), panel3.getPassword());            newInfo = new AccountInfo(info1, info2, info3);        }        //添加账号        if (oldInfo == null && newInfo != null) {            accountViewPanel.addAccount(newInfo);        }        //编辑账号        if (oldInfo != null && newInfo != null) {            accountViewPanel.editAccount(oldInfo, newInfo);        }    }    /**     * 删除选中账号     */    public void delete() {        accountViewPanel.deleteSelectedAccount();    }    /*------------------------------------------------------------------------*     *                                 内部类                                 *     *------------------------------------------------------------------------*/    /**     * 工具栏面板     */    class Toolbar extends JPanel {        /**         * Create a new instance of this class         */        public Toolbar() {            super(new FlowLayout(FlowLayout.CENTER, 5, 0));            //添加            JButton button = new JButton(AddAccountAction.getInstance());            button.setIcon(ImageShop.ADD_IMAGEICON);            button.addMouseListener(new SBChanger(                AddAccountAction.getInstance().getHintInfo(), false));            add(button);            //删除            button = new JButton(DeleteAccountAction.getInstance());            button.setIcon(ImageShop.DELETE_IMAGEICON);            button.addMouseListener(new SBChanger(                DeleteAccountAction.getInstance().getHintInfo(), false));            add(button);            //编辑            button = new JButton(EditAccountAction.getInstance());            button.setIcon(ImageShop.EDIT_IMAGEICON);            button.addMouseListener(new SBChanger(                EditAccountAction.getInstance().getHintInfo(), false));            add(button);            //应用            button = new JButton(ApplyChangeAction.getInstance());            button.setIcon(ImageShop.APPLY_IMAGEICON);            button.addMouseListener(new SBChanger(                ApplyChangeAction.getInstance().getHintInfo(), false));            add(button);        }    }    /**     * 账号视图面板     */    class AccountViewPanel extends JPanel implements TreeSelectionListener {        /**         * 账号管理树         */        private JTree accountManagerTree;        /**         * 账号管理树的模型         */        private DefaultTreeModel accountManagerModel;        /**         * Create a new instance of this class         */        public AccountViewPanel() {            super(new GridBagLayout());            //账号视图标签            GridBagConstraints constraints = new GridBagConstraints(                //gridx, gridy                0, 0,                //gridwidth, gridheight                1, 1,                //weightx, weighty                0.0, 0.0,                //anchor                GridBagConstraints.NORTHWEST,                //fill                GridBagConstraints.NONE,                //insets                new Insets(0, 5, 0, 0),                //ipadx, ipady                0, 0);            add(new JLabel("账号视图"), constraints);            //账号管理树            accountManagerModel = new DefaultTreeModel(ACCOUNT_ROOT);            accountManagerTree = new JTree(accountManagerModel);            accountManagerTree.addTreeSelectionListener(this);            loadAccounts();            setTree();            setTreeCellRenderer();            JScrollPane scroller = new JScrollPane(accountManagerTree,                JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,                JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);            constraints.gridy = 1;            constraints.weightx = 1.0;            constraints.weighty = 1.0;            constraints.fill = GridBagConstraints.BOTH;            constraints.insets = new Insets(0, 0, 0, 0);            add(scroller, constraints);        }        /**         * 返回选中的账号         *         * @return 选中的账号         */        public AccountInfo getSelectedAccount() {            AccountInfo accountInfo = null;            DefaultMutableTreeNode node = (DefaultMutableTreeNode)                accountManagerTree.getSelectionPath().getLastPathComponent();            if (node != ACCOUNT_ROOT) {                accountInfo = (AccountInfo) node.getUserObject();            }            return accountInfo;        }        /**         * 添加账号         *         * @param info 待添加的账号信息         */        public void addAccount(AccountInfo info) {            boolean exist = false;            List accounts = XMLConfig.getAllAccounts();            for (int i = 0; i < accounts.size(); i++) {                AccountInfo account = (AccountInfo) accounts.get(i);                if (account.equals(info)) {                    exist = true;                    break;                }            }            if (exist == true) {                JOptionPane.showMessageDialog(Smart.getInstance(),                    "您要添加的账号已经存在,不能添加!", StringShop.HINT_TITLE,                    JOptionPane.INFORMATION_MESSAGE);                accountInfoPanel.setValue(null);                accountInfoPanel.inactivate();                ActionCenter.getInstance().setActionWhenSelectAccountManager();            } else {                XMLConfig.addAccount(info, true);                DefaultMutableTreeNode child = new DefaultMutableTreeNode(info);                int index = ACCOUNT_ROOT.getChildCount();                accountManagerModel.insertNodeInto(child, ACCOUNT_ROOT, index);                accountManagerTree.setSelectionRow(index + 1);            }        }        /**         * 编辑账号         *         * @param oldInfo 编辑前的账号信息         * @param newInfo 编辑后的账号信息         */        public void editAccount(AccountInfo oldInfo, AccountInfo newInfo) {            boolean exist = false;            List accounts = XMLConfig.getAllAccounts();            int i;            for (i = 0; i < accounts.size(); i++) {                AccountInfo account = (AccountInfo) accounts.get(i);                if (account.equals(oldInfo)) {                    break;                }            }            for (int j = 0; j < accounts.size(); j++) {                if (j != i) {                    AccountInfo account = (AccountInfo) accounts.get(j);                    if (account.equals(newInfo)) {                        exist = true;                        break;                    }                }            }            if (exist == true) {                JOptionPane.showMessageDialog(Smart.getInstance(),                    "您编辑后的账号已经存在,不能编辑!", StringShop.HINT_TITLE,                    JOptionPane.INFORMATION_MESSAGE);            } else {                accounts.remove(i);                accounts.add(i, newInfo);                XMLConfig.deleteAllAccounts(false);                XMLConfig.addAllAccounts(accounts, true);            }            int row = accountManagerTree                .getRowForPath(accountManagerTree.getSelectionPath());            reloadAccounts();            accountManagerTree.setSelectionRow(row);        }        /**         * 删除选中的账号         */        public void deleteSelectedAccount() {            DefaultMutableTreeNode node = (DefaultMutableTreeNode)                accountManagerTree.getSelectionPath().getLastPathComponent();            if (node != ACCOUNT_ROOT) {                AccountInfo accountInfo = (AccountInfo) node.getUserObject();                XMLConfig.deleteAccount(accountInfo, true);                int row = accountManagerTree                    .getRowForPath(accountManagerTree.getSelectionPath());                accountManagerModel.removeNodeFromParent(node);                accountManagerTree.setSelectionRow(row - 1);            }        }        /**         * 装载账号         */        private void loadAccounts() {            List accounts = XMLConfig.getAllAccounts();            for (int i = 0; i < accounts.size(); i++) {                Object obj = accounts.get(i);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -