Eclipse plugin 用户权限控制菜单与工具栏

本文介绍如何在Eclipse插件项目中添加用户权限功能,详细讲解了用户登录验证、根据权限动态隐藏菜单和工具栏的操作步骤,旨在实现不同用户角色的功能限制。

      Eclipse插件项目添加用户权限功能,不同的用户有不同的管理权限,例如:用户分为管理员和普通用户,管理员具有配置系统和管理用户的功能,而普通用户则没有这些功能。

      首先,做出用户登录的界面,用户的类为User。

      Class User{

           String name;

           String password;

           int authority;

      }

 

      在User类中建立静态变量及相应的get方法用以保存用户在登陆界面填入的信息。

      private static User INSTANCE = new User();

      public static User getInstance(){

           return INSTANCE;

      }

      由此可以通过User.getInstance()在任何地方都可以提取用户的信息。

 

      登陆界面为LoginDialog()

      建立一个名为Login的类,包含方法isLogin(),代码如下:

      public boolean isLogin() {

           final LoginDialog loginDialog = new LoginDialog(Display.getCurrent().getActiveShell());

           loop = false;

           while (!loop) {

                   if (loginDialog.open() != Window.OK)

                   return false;

                   String username = User.getInstance().getrName();

                   String password = User.getInstance().getPassword();

                   loop = isValidate(username, password);//判断用户名和密码是否正确

                   if(!loop)

                   {

                          MessageDialog.openError(new Shell(), "错误", "用户名或密码错误!");

                   }

           }

           return loop;

      }      

      通过while循环获取正确的用户名密码对。

      在Application.java的start()方法中添加如下语句

      Login login=new Login();

      if(!login.isLogin()){

           return IApplication.EXIT_OK;

      }

      使得登陆界面在程序界面显示之前显示。

 

      然后,通过用户的登录信息判断用户的级别,若是普通用户则除去相应的配置菜单和工具栏的配置图标,这些都是在ApplicationWorkbenchWindowAdvisor.java的postWindowOpen()方法中实现,具体代码如下:

      int authority = Operator.getInstance().getOperatorAuthority();

      if (authority != 1) {

           IWorkbenchWindow window = Workbench.getInstance().getActiveWorkbenchWindow();

 

           if (window instanceof WorkbenchWindow) {

                 MenuManager menuManager = ((WorkbenchWindow) window).getMenuManager();//获取整个目录

 

                 ICoolBarManager coolBarManager = null;

 

                 if (((WorkbenchWindow) window).getCoolBarVisible()) {

                        coolBarManager = ((WorkbenchWindow) window).getCoolBarManager2();//获取整个工具栏

                 }

 

                 Menu menu = menuManager.getMenu();

 

                 String itemMenu = "menuId";//menuId为你需要除去的menu的id

                 IContributionItem[] itemsMenu = (IContributionItem[]) menuManager.getItems();

                 MenuManager menu4 = (MenuManager) itemsMenu[4];

                 IContributionItem itemDisplayViews = menu4.find(itemMenu);//找到需要除去的menu

                 itemDisplayViews.dispose();//去除

 

                 String itemCoolBar = "coolBarId";//menuId为你需要除去的工具栏的id

                 IContributionItem itemC = menuManager.find(itemCoolBar );

                 if (itemC != null) {

                       menuManager.remove(itemC);

                       itemC.dispose();

 

                       menuManager.update();//更新整个目录

                 }

 

            IContributionItem[] itemsCoolBar = coolBarManager.getItems();

            itemsCoolBar[1].dispose();

            coolBarManager.update(true);

            }

      }

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值