📄 ftpuserpanel.java
字号:
add(mjUploadLst, gc);
// user download limit
JLabel jDownloadLab = new JLabel("Max. Download (bytes/sec)");
jDownloadLab.setHorizontalAlignment(JLabel.RIGHT);
jDownloadLab.setForeground(Color.black);
gc = new GridBagConstraints();
gc.gridx = 0;
gc.gridy = ++yindex;
gc.gridwidth = 1;
gc.insets = new Insets(3, 0, 0, 3);
gc.anchor = GridBagConstraints.EAST;
add(jDownloadLab, gc);
mjDownloadLst = new JComboBox(BYTE_RATES);
mjDownloadLst.setEditable(true);
gc = new GridBagConstraints();
gc.gridx = 1;
gc.gridy = yindex;
gc.gridwidth = 2;
gc.insets = new Insets(3, 0, 0, 3);
gc.anchor = GridBagConstraints.WEST;
add(mjDownloadLst, gc);
JPanel btnPane = new JPanel();
btnPane.setLayout(new FlowLayout(FlowLayout.CENTER));
// save user
JButton jSaveBtn = new JButton("Save");
jSaveBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
save();
}
});
btnPane.add(jSaveBtn);
// delete user
JButton jDeleteBtn = new JButton("Delete");
jDeleteBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
delete();
}
});
btnPane.add(jDeleteBtn);
// reload user data
JButton jReloadBtn = new JButton("Reload");
jReloadBtn.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent evt) {
reloadUsers();
}
});
btnPane.add(jReloadBtn);
gc = new GridBagConstraints();
gc.gridx = 0;
gc.gridy = ++yindex;
gc.gridwidth = 3;
add(btnPane, gc);
}
/**
* Browse root level directory
*/
private void browse(ActionEvent evt) {
String dirName = GuiUtils.getDirName(getTree().getRootPanel());
if(dirName != null) {
mjDirectoryTxt.setText(dirName);
}
}
/**
* Save the user object
*/
private void save() {
// check user name field
String userName = mjNameTxt.getText().trim();
if(userName.equals("")) {
GuiUtils.showErrorMessage(getTree().getRootPanel(), "Please enter an user name");
return;
}
try {
FtpUser user = new FtpUser();
user.setName(userName);
if(setPassword(user)) {
user.getVirtualDirectory().setRootDirectory(new File(mjDirectoryTxt.getText()).getCanonicalFile());
user.setEnabled(mjEnabledChkBox.isSelected());
user.getVirtualDirectory().setWritePermission(mjWriteChkBox.isSelected());
user.setMaxIdleTime(getMaxIdleTime());
user.setMaxUploadRate(getBytesTransferRate(mjUploadLst));
user.setMaxDownloadRate(getBytesTransferRate(mjDownloadLst));
mConfig.getUserManager().save(user);
refresh(mConfig);
mConfig.getLogger().info("Saved user - " + user.getName());
}
}
catch(Exception ex) {
mConfig.getLogger().error(ex);
GuiUtils.showErrorMessage(getTree().getRootPanel(), ex.getMessage());
}
}
/**
* Save the user object
*/
private void delete() {
Object selVal = mjUserLst.getSelectedItem();
if(selVal == null) {
return;
}
String userName = selVal.toString();
boolean bConf = GuiUtils.getConfirmation(getTree().getRootPanel(), "Do you really want to delete user " + userName + "?");
if(!bConf) {
return;
}
try {
mConfig.getUserManager().delete(userName);
refresh(mConfig);
mConfig.getLogger().info("Deleted user - " + userName);
}
catch(Exception ex) {
mConfig.getLogger().error(ex);
GuiUtils.showErrorMessage(getTree().getRootPanel(), ex.getMessage());
}
}
/**
* Initialize user list.
*/
public void reloadUsers() {
try {
mConfig.getUserManager().reload();
refresh(mConfig);
}
catch(Exception ex) {
mConfig.getLogger().error(ex);
GuiUtils.showErrorMessage(getTree().getRootPanel(), ex.getMessage());
}
}
/**
* List selection changed.
*/
public void actionPerformed(ActionEvent e) {
Object selVal = mjUserLst.getSelectedItem();
if(selVal != null) {
String userName = selVal.toString();
User thisUser = mConfig.getUserManager().getUserByName(userName);
if (thisUser == null) {
GuiUtils.showErrorMessage(getTree().getRootPanel(), userName + " : does not exist.");
refresh(mConfig);
}
else {
populateFields(thisUser);
}
}
}
/**
* Populate user data fields.
*/
public void populateFields(User user) {
mjNameTxt.setText(user.getName());
mjPasswordTxt.setText("");
mjRetypePasswordTxt.setText("");
mjPasswordChkBox.setSelected(false);
mjDirectoryTxt.setText(user.getVirtualDirectory().getRootDirectory());
mjEnabledChkBox.setSelected(user.getEnabled());
mjWriteChkBox.setSelected(user.getVirtualDirectory().getWritePermission());
setIdleTimeCombo(user.getMaxIdleTime());
setByteRateCombo(mjUploadLst, user.getMaxUploadRate());
setByteRateCombo(mjDownloadLst, user.getMaxDownloadRate());
}
/**
* Generate random password.
*/
private void generatePassword() {
StringBuffer sb = new StringBuffer(8);
for(int i=0; i<8; i++) {
int charType = PASS_GEN.nextInt(3);
switch (charType) {
// number
case 0:
sb.append( (char)('0' + PASS_GEN.nextInt(10)) );
break;
// uppercase character
case 1:
sb.append( (char)('A' + PASS_GEN.nextInt(26)) );
break;
// lowercase character
case 2:
sb.append( (char)('a' + PASS_GEN.nextInt(26)) );
break;
}
}
String password = sb.toString();
GuiUtils.showInformationMessage(getTree().getRootPanel(), "Generated password: " + password);
mjPasswordTxt.setText(password);
mjRetypePasswordTxt.setText(password);
mjPasswordChkBox.setSelected(true);
}
/**
* Set password if necessary.
*/
private boolean setPassword(FtpUser usr) {
String userName = usr.getName();
boolean bNewUser = !mConfig.getUserManager().doesExist(userName);
boolean bPassSet = mjPasswordChkBox.isSelected();
String password = new String(mjPasswordTxt.getPassword());
String repassword = new String(mjRetypePasswordTxt.getPassword());
// new user
if( bNewUser && (!bPassSet) && (!usr.getIsAnonymous()) ) {
GuiUtils.showErrorMessage(getTree().getRootPanel(), "New user - password required");
return false;
}
// password set
if( bPassSet && (!password.equals(repassword)) && (!usr.getIsAnonymous()) ) {
GuiUtils.showErrorMessage(getTree().getRootPanel(), "Password entries are not equal");
return false;
}
// set password if necessary
if(bPassSet && (!usr.getIsAnonymous())) {
usr.setPassword(password);
}
else {
usr.setPassword(null);
}
return true;
}
/**
* Get max bytes/sec.
*/
private int getBytesTransferRate(JComboBox byteLst) {
int rate = 0;
Object selObj = byteLst.getSelectedItem();
if (!selObj.equals(BYTE_RATES[0])) {
try {
rate = Integer.parseInt(selObj.toString());
}
catch(NumberFormatException ex) {
GuiUtils.showErrorMessage(getTree().getRootPanel(), ex.getMessage());
}
}
return rate;
}
/**
* Get max idle time in sec.
*/
private int getMaxIdleTime() {
int sec = 0;
Object selObj = mjIdleLst.getSelectedItem();
if (!selObj.equals(IDLE_SECONDS[0])) {
try {
sec = Integer.parseInt(selObj.toString());
}
catch(NumberFormatException ex) {
GuiUtils.showErrorMessage(getTree().getRootPanel(), ex.getMessage());
}
}
return sec;
}
/**
* Set byte transfer rate combo.
*/
private void setByteRateCombo(JComboBox combo, int rate) {
Object selItem = new Integer(rate);
if (rate == 0) {
selItem = BYTE_RATES[0];
}
combo.setSelectedItem(selItem);
}
/**
* Set idle time combo.
*/
private void setIdleTimeCombo(int idle) {
Object selItem = new Integer(idle);
if (idle == 0){
selItem = IDLE_SECONDS[0];
}
mjIdleLst.setSelectedItem(selItem);
}
/**
* Initialize user list.
*/
public void refresh(FtpConfig cfg) {
mConfig = cfg;
mjUserLst.removeAllItems();
if (cfg != null) {
Iterator userIt = mConfig.getUserManager().getAllUserNames().iterator();
while(userIt.hasNext()) {
mjUserLst.addItem(userIt.next());
}
}
}
/**
* Is displayable.
*/
public boolean isDisplayable() {
return mConfig != null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -