CodenameOne:是否可以定义' Views'对于应用程序的不同用户组?

时间:2016-01-08 07:33:07

标签: mobile views codenameone

我目前正计划使用 CodenameOne 开发应用程序,我想知道是否可以在应用程序中定义一些数据库视图,以便不同的用户会看到应用的不同部分

我说的是一个应用程序,它是项目结构的一部分,由不同的模块组成,需要单独购买 < / strong>,但应该都集成到同一个应用程序中。作为某种广告策略,应该显示未买的部分,但没有功能。

与此密切相关的另一个问题是如何让不同的人使用同一个应用程序的不同GUIS?

示例:有一个主人和一个工人。

Master有这些菜单:

- show all machines
- show available teams
- send message to team x

工人有这些菜单:

- show my machine
- show my team
- send message to master

如果主人重新确定了一个团队,那么团队成员菜单的内容就会相应改变,而不会让应用程序发生变化。

如果工作人员被指定为主人,服务器会发送类似you are now the master的内容,视图将更改为主人视图(仍然在同一个应用程序中)

这可能吗?

2 个答案:

答案 0 :(得分:2)

我相信您可能需要的只是动态构建这些视图。如果应用程序逻辑表明某个用户是主用户 - 那么您为该用户构建一个类似于master的视图,否则您将创建简单的工作者视图。关于分配(主要统治工人),它只是基本的一对多关系范式。

使用GUI +代码动态构建视图的提示:

public UserViewBuilder extends UIBuilder { 
    private Resource res; 
    private Container view;
    //User is the parent class of both Worker and Master
    private User user;
    ...
    public UserView(Resource res){
         this.res = res;
    }
    private void init(boolean isMasterView){
        //where you initialize all the component of your view
    }
    ...
    public Container viewSelector(boolean isUserMaster){
         if(isUserMaster){
              //getting data for a master-user, just throwing ideas
              this.user = Data.fetchYourMasterData();
              //getting the design from GUI
              this.view =this.createContainer(res,"ContainerDesignForMaster");
              //putting the necessary data into the design
              this.init(isUserMaster);
           }
           else {
              //getting data for a worker-user, just throwing ideas
              this.user = Data.fetchYourWorkerData();
              //getting the design from GUI
              this.view =this.createContainer(res,"ContainerDesignForWorker");
              //putting the necessary data into the design
              this.init(isUserMaster);
            }
    }
    ...
}

使用该架构方法,您将使用GUI构建器为master和worker创建设计 - 然后您将对视图选择逻辑进行编码。

(如果您需要一个工作样本netbeans项目以便更好地理解,请告诉我们)

答案 1 :(得分:1)

如果我理解正确,就没有内置的支持。您可以使用一组权限系统和if语句来实现这一目标,但是没有系统可以明确说出&#34;该模块仅对该用户可见&#34;。