📄 ftprootpanel.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 + -