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

📄 ftprootpanel.java

📁 Ftp服务1.0
💻 JAVA
字号:
package ranab.server.ftp.gui;

import java.io.File;
import java.util.Properties;
import java.awt.Color;
import java.awt.Insets;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.BorderLayout;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JTextField;
import javax.swing.JTable;
import javax.swing.JLabel;
import javax.swing.JScrollPane;

import ranab.gui.GuiUtils;
import ranab.gui.PropertiesTableModel;
import ranab.server.ServerEngine;
import ranab.server.ftp.FtpConfig;
import ranab.server.ftp.FtpServer;


/**
 * FTP user interface root panel. We can start, stop
 * the server using this panel.
 *
 * @author <a href="mailto:rana_b@yahoo.com">Rana Bhattacharyya</a>.
 */
public 
class FtpRootPanel extends JPanel {
    
    private final static Properties EMPTY_PROP = new Properties();
    
    private JButton mjBrowseBtn = null;
    private JButton mjStartBtn  = null;
    private JButton mjStopBtn   = null;
    private JTextField mjCfgTxt = null;
    private JTable mjCfgTbl     = null;
    
    private FtpTree mTree              = null;    
    private File mCfgFile              = null;
    private ServerEngine mServerEngine = null;  
    
    private boolean mbServerRunning = false;
    
    /** 
     * Creates new panel for root. 
     */
    public FtpRootPanel(FtpTree tree) {
        mTree = tree;
        initComponents ();
    }
    
    /** 
     * This method is called from within the constructor to
     * initialize the form.
     */
    private void initComponents() {
        
        setLayout(new BorderLayout());
        
        // top panel
        JPanel topPane = new JPanel();
        topPane.setLayout(new GridBagLayout());
        GridBagConstraints gc;
        
        JLabel cfgLab = new JLabel("Configuration File");
        cfgLab.setForeground(Color.black);
        gc = new GridBagConstraints();
        gc.gridx = 0;
        gc.gridy = 0;
        gc.gridwidth = 4;
        gc.insets = new Insets(0, 0, 0, 10);
        topPane.add(cfgLab, gc);
        
        mjCfgTxt = new JTextField();
        mjCfgTxt.setColumns(20);
        gc = new GridBagConstraints();
        gc.gridx = 0;
        gc.gridy = 1;
        gc.gridwidth = 3;
        gc.insets = new Insets(0, 0, 0, 10);
        topPane.add(mjCfgTxt, gc);
        mjCfgTxt.setText("C:\\myCode\\apps\\ftp\\conf\\ftpd.conf");
        
        mjBrowseBtn = new JButton("Browse");
        gc.gridx = 3;
        gc.gridy = 1;
        gc.gridwidth = 1;
        gc.insets = new Insets(0, 0, 0, 10);
        topPane.add(mjBrowseBtn, gc);
        
        JPanel btnPane = new JPanel();
        btnPane.setLayout(new FlowLayout(FlowLayout.CENTER));
        
        mjStartBtn = new JButton("Start");
        btnPane.add(mjStartBtn);
        
        mjStopBtn = new JButton("Stop");
        mjStopBtn.setEnabled(false);
        btnPane.add(mjStopBtn);
        
        gc = new GridBagConstraints();
        gc.gridx = 0;
        gc.gridy = 2;
        gc.gridwidth = 4;
        gc.insets = new Insets(0, 0, 10, 10);
        topPane.add(btnPane, gc);
        
        add(topPane, BorderLayout.NORTH);
        
        
        // bottom panel - display config parameters
        PropertiesTableModel cfgModel = new PropertiesTableModel(EMPTY_PROP);
        mjCfgTbl = new JTable(cfgModel);
        mjCfgTbl.setPreferredScrollableViewportSize(new Dimension(470, 260));
        mjCfgTbl.setColumnSelectionAllowed(false);
        JScrollPane bottomPane = new JScrollPane(mjCfgTbl, 
                                    JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
                                    JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
        add(bottomPane, BorderLayout.CENTER);
        
        // event handlers
        mjBrowseBtn.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent evt) {
               browseConfig();
           }
        });
        
        mjStartBtn.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent evt) {
               startServer();
           }
        });

        mjStopBtn.addActionListener(new ActionListener() {
           public void actionPerformed(ActionEvent evt) {
               stopServer();
           }
        });
    }
    
    /**
     * Browse configuration file.
     */
    public void browseConfig() {
        String cfgFile = GuiUtils.getFileName(mTree.getRootPanel());
        if(cfgFile != null) {
           mjCfgTxt.setText(cfgFile); 
        }
    }
     
    /**
     * Start the ftp server.
     */
    public void startServer() {
      
      String fileName = mjCfgTxt.getText().trim();  
      if(fileName.equals("")) {
          GuiUtils.showErrorMessage(mTree.getRootPanel(), "Please select a config file.");
          return;
      } 
      
      // start server
      if(mServerEngine != null) {
          mServerEngine.stopServer();
      }
      try {
          mCfgFile = new File(fileName);
          FtpServer server = new FtpServer(mCfgFile);
          mServerEngine = new ServerEngine(server);
          mServerEngine.startServer();
      }
      catch(Exception ex) {
         GuiUtils.showErrorMessage(mTree.getRootPanel(), ex.getMessage());
         ex.printStackTrace();
         mServerEngine = null;
         return;
      }
      
      mbServerRunning = true;
      FtpServer ftpServer = (FtpServer)mServerEngine.getServer();
      FtpConfig config = ftpServer.getConfig();
      ((PropertiesTableModel)mjCfgTbl.getModel()).reload(config);
      
      mjStartBtn.setEnabled(false);
      mjCfgTxt.setEnabled(false);
      mjBrowseBtn.setEnabled(false);
      mjStopBtn.setEnabled(true);
      mTree.refresh(config);
    }
    
    /**
     * Stop FTP server.
     */
    public void stopServer() {  
      if(mServerEngine != null) {
          mServerEngine.stopServer();
          mServerEngine = null;
      }  
      mbServerRunning = false;
      ((PropertiesTableModel)mjCfgTbl.getModel()).reload(EMPTY_PROP);
      mjStartBtn.setEnabled(true);
      mjCfgTxt.setEnabled(true);
      mjBrowseBtn.setEnabled(true);
      mjStopBtn.setEnabled(false);
      mTree.refresh(null);
    }
    
    /**
     * Get FTP server.
     */
    public ServerEngine getServerEngine() {
        return mServerEngine;
    }
    
     
}

⌨️ 快捷键说明

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