📄 logindialog.java
字号:
package ergo.ui;
// $Id: LoginDialog.java,v 1.3 1999/08/13 01:20:09 sigue Exp $
/*
* Copyright (C) 1999 Carl L. Gay and Antranig M. Basman.
* See the file copyright.txt, distributed with this software,
* for further information.
*/
import ergo.*;
import ergo.util.*;
import ergo.server.*;
import ergo.logic.*;
import java.awt.*;
import java.awt.event.*;
/**
* A dialog for entering the username and password.
* LoginDialog is created by TerminalWindow, and single instance lasts for
* entire run.
*
* +++ This could be an inner class inside Controller, since that's
* really the only place it's used. Same with some of the other
* dialogs, I'm sure.
*/
public class LoginDialog extends ErgoDialog implements ActionListener, Optionizable {
private static String nameString = "Login name";
private static String passString = "Password name";
private TextField login = new TextField(16);
public TextField password = new TextField(16);
private Button okButton = new Button(" OK ");
private Button cancelButton = new Button("Cancel");
private TerminalWindow window;
private ServerConnection conn;
public boolean hecho = false;
public boolean passwordSent = false;
private InformDialog informDialog;
LoginDialog (TerminalWindow term, ServerConnection conn) {
super(term, "Login to " + conn.shortName(), true, false); // parent, title, modal
Ergo.opser.expressOwnership(nameString, Optionizer.TYPE_STRING, null, "");
Ergo.opser.expressOwnership(passString, Optionizer.TYPE_STRING, null, "");
Ergo.opser.expressOwnership(Ergo.opser.currentString,
Optionizer.TYPE_INTEGER, this, new Integer(0));
window = term;
this.conn = conn;
okButton.addActionListener(this);
cancelButton.addActionListener(this);
login.addActionListener(this);
password.addActionListener(this);
Panel p1 = new Panel();
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
p1.setLayout(gbl);
int marg = 10;
int midh = 3;
int midv = 7;
gbc.gridwidth = 1;
Insets i = new Insets(2, marg, 2, marg);
gbc.insets = i;
gbc.weightx = 1.0;
gbc.weighty = 1.0;
gbc.anchor = GridBagConstraints.WEST;
i.top = marg;
i.right = 0;
makeIt(p1, gbl, gbc, new Label("Login name:"));
i.right = marg;
i.left = midh;
gbc.gridwidth = GridBagConstraints.REMAINDER;
makeIt(p1, gbl, gbc, login);
gbc.gridwidth = 1;
i.top = midv;
i.left = marg;
i.bottom = marg;
i.right = 0;
makeIt(p1, gbl, gbc, new Label("Password:"));
i.right = marg;
i.left = midh;
gbc.gridwidth = GridBagConstraints.REMAINDER;
makeIt(p1, gbl, gbc, password);
password.setEchoChar('*');
add("Center", p1);
Panel p3 = new Panel();
p3.setLayout(new FlowLayout(FlowLayout.RIGHT));
p3.add(okButton);
p3.add(cancelButton);
add("South", p3);
fillFields();
//Initialize this dialog to its preferred size.
if (Util.isWindows())
setSize(250, 125);
else
pack();
}
private void fillFields() {
login.setText ( Ergo.opser.getStringOption(nameString));
password.setText( Ergo.opser.getStringOption(passString));
}
// Listens for changes in the current option set number, and changes
// contents of fields as necessary.
public void optionEvent(String keyword, Object arg) {
if (Ergo.opser.isSameKey(Ergo.opser.currentString, keyword)) {
fillFields();
}
}
// GridBagLayout utility function, perhaps move to some global utility class.
void makeIt(Container co, GridBagLayout gbl, GridBagConstraints gbc,
Component c) {
gbl.setConstraints(c, gbc);
co.add(c);
}
private void finish () {
hecho = true;
window.setAccountName(login.getText());
conn.send(login.getText());
if (Ergo.opser.getBooleanOption(GlobalOptions.saveloginString)) {
Ergo.opser.updateOption(nameString, login.getText());
Ergo.opser.updateOption(passString, password.getText());
}
else {
// blast any existing info. User clearly doesn't want it...!
Ergo.opser.updateOption(nameString, "");
Ergo.opser.updateOption(passString, "");
}
close();
}
public void actionPerformed (ActionEvent event) {
Object source = event.getSource();
int llen = login.getText().length();
int plen = password.getText().length();
if (source == cancelButton) {
conn.close();
close();
}
else if (source == okButton) {
if (llen == 0) {
String[] msg = {"Invalid login name or password.",
"Please enter a username and password."};
new InformDialog(window, "Invalid Login", ColumnLayout.LEFT, msg)
.open();
}
else
finish();
}
else if (llen == 0)
login.requestFocus();
else if (plen == 0)
password.requestFocus();
else if (source == login) {
password.requestFocus();
password.selectAll();
}
else if (source == password)
finish();
}
} // end class LoginDialog
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -