SmartGwt 之原生 Desktop(与gxt无关)

前几天尝试了一下将 extjs的gwt封装即gxt的desktop与Smartgwt绑定在一起,

效果还不错,不过有几个问题:

 

  1. 引入两个gwt的扩展,相互之间的js/css可能会有冲突
  2. 如果在项目中使用,会增加学习成本。
  3. 在gxt里面添加smartgwt的控件,有可能会出现问题。
  4. gxt 的 desktop 扩展起来麻烦。我的需求是要增加一个搜索框,就比较难实现。
  5. 换肤的话,要同时换两套,会比较麻烦,而且风格不一致
基于这些原因,我还是想自己搞一套desktop。
其实也简单,模仿gxt的desktop,搞出这么几个类:Desktop, Shortcut, TaskBar
其中还曾经试图模仿mac os的fisheye效果,做出了一个dock,不过发现很丑,就放弃了。
还是走了老路子,感觉还凑合。
使用的方式也差不多,创建一个Desktop实例,就会自动添加到RootPanel上去了。
    public void onModuleLoad() {
        initDebugConsole();
        initErrorHandler();
        desktop = new Desktop();
        createMenuAndShortcut(desktop.getTaskBar());
    }

    private void createMenuAndShortcut(TaskBar taskBar) {
        DesktopWindow contactWindow = new ContactPersonSubPanel();
        DesktopWindow documentWindow = new DocumentManagePanel();
        DesktopWindow notesWindow = new NotesSubPanel();
        DesktopWindow calendarWindow = new CalendarManagePanel();

        ToolStrip quickBar = taskBar.getQuickStartBar();

        createMenuAndShortcut(contactWindow, quickBar);
        createMenuAndShortcut(documentWindow, quickBar);
        createMenuAndShortcut(notesWindow, quickBar);
        createMenuAndShortcut(calendarWindow, quickBar);
        quickBar.addSeparator();

        DynamicForm form = createSimpleForm();
        form.setAlign( Alignment.CENTER);
        form.setLayoutAlign( VerticalAlignment.CENTER);
        form.setFields(createSearchItem(), createStyleSelectItem());
        quickBar.addMember( form);
        
        quickBar.addSeparator();
        createSystemButtons(quickBar);
        quickBar.addSeparator();
    }
 
之所以有一个DesktopWindow,是为了增加一些window状态管理的控制,区别不大。
和gxt的desktop的区别在于,没有做StartMenu,感觉我的应用没有那么多入口,
只有几个快捷方式,然后在taskbar 上增加了一些系统配置的按钮,以及搜索框和
换肤选择框。效果如下图所示:


 
源码见附件,不保证能用,不提供技术支持。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值