在RCP程序主窗口创建之前就需要对用户的身份进行验证,我们知道, RCP程序运行总是从入口对象开始的,所以要将验证用户的部分放在该类中,即Application.java 类中。
在讨论如何具体实现登陆验证之前,我们首先应该考虑这样一个问题,即如何判断一个用户的登陆状态?在此,可以设计一个系统的上下文类SuperContext.java,其采用单例模式,即只允许系统运行后创建一个该类的实例,在该类中可以保存用户信息、登陆状态和一些其它的有用信息。
1、SuperContext.java
package
com.winscad.login;
import com.winscad.pojo.system.UserListBean;
public class SuperContext ... {
private UserListBean userListBean;
private String viewID;
private String deviceID = null;
//构造方法为private
private SuperContext()...{
}
//单例模式的应用
private static SuperContext context = null;
public static SuperContext getInstance()...{
if(context == null)...{
context = new SuperContext();
}
return context;
}
//保存登陆状态属性
private boolean bLogin = false;
//是否已登陆
public boolean isLogin()...{
return bLogin;
}
//设置登陆状态
public void setLogin(boolean login)...{
bLogin = login;
}
//保存用户信息
public void setUserListBean(UserListBean userListBean)...{
this.userListBean = userListBean;
}
public UserListBean getUserListBean()...{
return userListBean;
}
//保存用户当前打开的视图ID
public String getViewID() ...{
return viewID;
}
public void setViewID(String viewID) ...{
this.viewID = viewID;
}
//用于在直放站管理中用户点击某个直放站到参数维护时保存deviceID
public String getDeviceID()...{
return deviceID;
}
public void setDeviceID(String deviceID)...{
this.deviceID = deviceID;
}
}
import com.winscad.pojo.system.UserListBean;
public class SuperContext ... {
private UserListBean userListBean;
private String viewID;
private String deviceID = null;
//构造方法为private
private SuperContext()...{
}
//单例模式的应用
private static SuperContext context = null;
public static SuperContext getInstance()...{
if(context == null)...{
context = new SuperContext();
}
return context;
}
//保存登陆状态属性
private boolean bLogin = false;
//是否已登陆
public boolean isLogin()...{
return bLogin;
}
//设置登陆状态
public void setLogin(boolean login)...{
bLogin = login;
}
//保存用户信息
public void setUserListBean(UserListBean userListBean)...{
this.userListBean = userListBean;
}
public UserListBean getUserListBean()...{
return userListBean;
}
//保存用户当前打开的视图ID
public String getViewID() ...{
return viewID;
}
public void setViewID(String viewID) ...{
this.viewID = viewID;
}
//用于在直放站管理中用户点击某个直放站到参数维护时保存deviceID
public String getDeviceID()...{
return deviceID;
}
public void setDeviceID(String deviceID)...{
this.deviceID = deviceID;
}
}
2、登陆窗口的实现
此登陆窗口继承自TitleAreaDialog,这是我们在Eclipse中经常见到的一种对话框,如下图所示:
它可以很容易的让我们实现设置图标,错误提示等功能。只要实现它的相关方法即可。
LoginDialog.java
package
com.winscad.login;