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

📄 hostlist.java

📁 一个JAVA做的FTP软件,带源码的,可以很好的进行二次开发,,并带有详细说明文件的
💻 JAVA
字号:
/* * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. */package net.sf.jftp.gui;import net.sf.jftp.config.*;import net.sf.jftp.gui.framework.*;import net.sf.jftp.util.*;import java.awt.*;import java.awt.event.*;import java.io.File;import javax.swing.*;import javax.swing.event.ListSelectionEvent;import javax.swing.event.ListSelectionListener;public class HostList extends JDialog{    private String promptHost = " Host : ";    private String promptUser = " User : ";    private String promptPass = " Password : ";    private String promptName = " Name : ";    private String promptPort = " Port : ";    private String promptButtonCancel = "Cancel";    private String promptButtonOk = "  Ok  ";    private String promptButtonSave = " Apply ";    private String promptButtonNew = " New  ";    private String promptButtonDelete = "Delete";    private String promptDialogTitle = " J-FTP Host Selection ";    // has an ok, cancel button, and a save    // needs to load itself too.    private JPanel jpHostInfo;    private JTextField jtfHost;    private JTextField jtfUser;    private JPasswordField jtfPass;    private JTextField jtfName;    private JTextField jtfPort;    private JLabel jlHost;    private JLabel jlUser;    private JLabel jlPass;    private JLabel jlName;    private JLabel jlPort;    private JSplitPane jsplitpane;    private JScrollPane jscrollpane;    private JPanel jpbuttons;    private JButton jbsave;    private JButton jbcancel;    private JButton jbok;    private JButton jbnew;    private JButton jbdelete;    private JList hostList;    private DefaultListModel hostListModel;    /**     * The currently selected FtpHost instance     */    private FtpHost selectedHostInfo = null;    /**     *  Constructs an instance of the HostList with the     *  given parent and initializes the UI for the host list.     *  calling getFtpHost() will show the dialog and wait until     *  the user clicks ok() or cancel().     *         @param parent The parent JDialog     */    public HostList(JDialog parent)    {        super(parent);        setTitle(promptDialogTitle);        init();        setSize(600, 300);    }    /**     * Adds listeners to any components that need them     */    protected void initListeners()    {        hostList.addListSelectionListener(new ListSelectionListener()            {                public void valueChanged(ListSelectionEvent lse)                {                    onSelectHost();                }            });        jbsave.addActionListener(new ActionListener()            {                public void actionPerformed(ActionEvent ae)                {                    onSave();                }            });        jbok.addActionListener(new ActionListener()            {                public void actionPerformed(ActionEvent ae)                {                    onOk();                }            });        jbcancel.addActionListener(new ActionListener()            {                public void actionPerformed(ActionEvent ae)                {                    onCancel();                }            });        jbnew.addActionListener(new ActionListener()            {                public void actionPerformed(ActionEvent ae)                {                    onNew();                }            });        jbdelete.addActionListener(new ActionListener()            {                public void actionPerformed(ActionEvent ae)                {                    onDelete();                }            });    }    /**     *         This method makes the dialog popup     *  and the user must select ok or cancel     *  upon clicking ok, the selected FtpHost will be returned     *  upon cancel, a null will be returned.     */    public FtpHost getFtpHost()    {        selectedHostInfo = null;        setVisible(true);        return selectedHostInfo;    }    /**     * overall initialization routine called from the ctor     */    protected void init()    {        this.initPrompts();        this.initHostInfoPanel();        this.initButtonPanel();        this.initHostListFrame();        this.loadHostList();        initListeners();        if(hostListModel.size() > 0)        {            hostList.setSelectedIndex(0);        }        else        {            updateHostInfoPanel();        }        selectedHostInfo = getSelected();        setModal(true);    }    /**     * This is where your internationalization can     * take hold, you can change the values of the prompt     * strings to whatever     */    protected void initPrompts()    {        // do nothing    }    /**     * initialize the button panel     */    protected void initButtonPanel()    {        jpbuttons = new JPanel();        jpbuttons.setLayout(new FlowLayout(FlowLayout.RIGHT));        jbcancel = new JButton(promptButtonCancel);        jbok = new JButton(promptButtonOk);        jbsave = new JButton(promptButtonSave);        jbnew = new JButton(promptButtonNew);        jbdelete = new JButton(promptButtonDelete);        jpbuttons.add(jbsave);        jpbuttons.add(jbok);        jpbuttons.add(jbcancel);    }    /**     *         Build the host info panel     */    protected void initHostInfoPanel()    {        jtfHost = new JTextField(20);        jtfUser = new JTextField(20);        jtfPass = new JPasswordField(20);        jtfName = new JTextField(20);        jtfPort = new JTextField(20);        jlHost = new JLabel(promptHost);        jlUser = new JLabel(promptUser);        jlPass = new JLabel(promptPass);        jlName = new JLabel(promptName);        jlPort = new JLabel(promptPort);        jpHostInfo = new JPanel();        GridBagLayout gbl = new GridBagLayout();        jpHostInfo.setLayout(gbl);        GridBagConstraints gbc = new GridBagConstraints();        gbc.gridx = 0;        gbc.gridy = 0;        gbc.weightx = 0.0;        gbc.weighty = 0.0;        gbc.anchor = gbc.NORTHWEST;        gbc.fill = gbc.HORIZONTAL;        gbl.setConstraints(jlName, gbc);        gbc.gridy = 1;        gbl.setConstraints(jlHost, gbc);        gbc.gridy = 2;        gbl.setConstraints(jlUser, gbc);        gbc.gridy = 3;        gbl.setConstraints(jlPass, gbc);        gbc.gridy = 4;        gbl.setConstraints(jlPort, gbc);        gbc.gridy = 0;        gbc.gridx = 1;        gbc.weightx = 1.0;        gbl.setConstraints(jtfName, gbc);        gbc.gridy = 1;        gbl.setConstraints(jtfHost, gbc);        gbc.gridy = 2;        gbl.setConstraints(jtfUser, gbc);        gbc.gridy = 3;        gbl.setConstraints(jtfPass, gbc);        gbc.gridy = 4;        gbl.setConstraints(jtfPort, gbc);        jpHostInfo.add(jlName);        jpHostInfo.add(jlHost);        jpHostInfo.add(jlUser);        jpHostInfo.add(jlPass);        jpHostInfo.add(jlPort);        jpHostInfo.add(jtfName);        jpHostInfo.add(jtfHost);        jpHostInfo.add(jtfUser);        jpHostInfo.add(jtfPass);        jpHostInfo.add(jtfPort);    }    /**     *         Initializes the overall dialog/frame     */    protected void initHostListFrame()    {        hostListModel = new DefaultListModel();        hostList = new JList(hostListModel);        jscrollpane = new JScrollPane(hostList);        JPanel jptempleft = new JPanel(new BorderLayout());        jptempleft.add(jscrollpane, BorderLayout.CENTER);        JPanel jptempbutt = new JPanel(new FlowLayout());        jptempbutt.add(jbnew);        jptempbutt.add(jbdelete);        jptempleft.add(jptempbutt, BorderLayout.SOUTH);        JPanel jptemp = new JPanel(new BorderLayout());        jptemp.add(jpbuttons, BorderLayout.SOUTH);        jptemp.add(jpHostInfo, BorderLayout.CENTER);        jsplitpane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, jptempleft,                                    jptemp);        getContentPane().add(jsplitpane);    }    /**     *         Loads the host list from the hard drive     */    protected void loadHostList()    {        //Log.out("x");        // current host number        int i = 0;        while(i >= 0)        {            String filename = Settings.login.concat(String.valueOf(i));            String[] host_info = LoadSet.loadSet(filename);            if((host_info == null) || (host_info.length == 1))            {                // no file was loaded, break out.                i = -1;                continue;            }            FtpHost ftpHost = new FtpHost();            try            {                ftpHost.hostname = host_info[0];                ftpHost.username = host_info[1];                ftpHost.password = host_info[2];                ftpHost.name = host_info[3];                ftpHost.port = host_info[4];            }            catch(ArrayIndexOutOfBoundsException aioobe)            {                // do nothing, this can happen            }            hostListModel.addElement(ftpHost);            i++;        }    }    public void onSelectHost()    {        // update the old one, then show the new one        updateHostInfoObject();        selectedHostInfo = getSelected();        updateHostInfoPanel();    }    /**     * Delete button handler     */    public void onDelete()    {        Object selected = hostList.getSelectedValue();        hostListModel.removeElement(selected);        selectedHostInfo = null;        if(hostListModel.size() > 0)        {            hostList.setSelectedIndex(0);        }        else        {            updateHostInfoPanel();        }        onSave();        hostList.repaint();    }    /**     * Save button handler     */    public void onSave()    {        updateHostInfoObject();        // remove all previously saved hosts        int i = 0;        while(true)        {            File f = new File(Settings.login.concat(String.valueOf(i)));            if(f.exists())            {                f.delete();                i++;            }            else            {                break;            }        }        int len = hostListModel.size();        for(i = 0; i < len; i++)        {            FtpHost ftphost = (FtpHost) hostListModel.elementAt(i);            String htmp = StringUtils.cut(ftphost.hostname, " ");            String utmp = StringUtils.cut(ftphost.username, " ");            String ptmp = StringUtils.cut(ftphost.password, " ");            String ntmp = StringUtils.cut(ftphost.name, " ");            String ttmp = StringUtils.cut(ftphost.port, " ");            SaveSet s = new SaveSet(Settings.login.concat(String.valueOf(i)),                                    htmp, utmp, ptmp, ntmp, ttmp);        }        hostList.repaint();    }    /**      * OK Button handler      */    public void onOk()    {        selectedHostInfo = getSelected();        onSave();        dispose();    }    /**     * Cancel button handler     */    public void onCancel()    {        selectedHostInfo = null;        dispose();    }    /**     * Create a default one and stuff itin the list     */    public void onNew()    {        FtpHost ftpHost = new FtpHost();        ftpHost.name = "undefined";        ftpHost.username = "undefined";        ftpHost.hostname = "undefined";        ftpHost.password = "undefined";        ftpHost.port = "21";        hostListModel.addElement(ftpHost);        hostList.setSelectedValue(ftpHost, true);        selectedHostInfo = ftpHost;    }    /**     * Returns the selected FtpHost from the hostList     */    private FtpHost getSelected()    {        int sel = hostList.getSelectedIndex();        if((sel < 0) || (sel > (hostListModel.size() - 1)))        {            return null;        }        else        {            return (FtpHost) hostListModel.elementAt(hostList.getSelectedIndex());        }    }    /**     * Updates the screen to reflect the values from the currently     * selected FtpHost object.  If none is selected, then     * it clears the panel     */    private void updateHostInfoPanel()    {        if(selectedHostInfo == null)        {            jtfName.setText("");            jtfUser.setText("");            jtfPass.setText("");            jtfHost.setText("");            jtfPort.setText("");            jtfName.setEnabled(false);            jtfUser.setEnabled(false);            jtfHost.setEnabled(false);            jtfPass.setEnabled(false);            jtfPort.setEnabled(false);        }        else        {            jtfName.setEnabled(true);            jtfUser.setEnabled(true);            jtfHost.setEnabled(true);            jtfPass.setEnabled(true);            jtfPort.setEnabled(true);            jtfName.setText(selectedHostInfo.name);            jtfUser.setText(selectedHostInfo.username);            jtfPass.setText(selectedHostInfo.password);            jtfHost.setText(selectedHostInfo.hostname);            jtfPort.setText(selectedHostInfo.port);        }    }    /**     * Updates the currently selected FtpHost object called     * "selectedHostInfo" from the contents of the screen     */    private void updateHostInfoObject()    {        if(selectedHostInfo == null)        {            return;        }        selectedHostInfo.hostname = jtfHost.getText();        selectedHostInfo.name = jtfName.getText();        selectedHostInfo.username = jtfUser.getText();        selectedHostInfo.password = new String(jtfPass.getPassword());        selectedHostInfo.port = jtfPort.getText();    }}

⌨️ 快捷键说明

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