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 上增加了一些系统配置的按钮,以及搜索框和
换肤选择框。效果如下图所示:

SmartGwt 之原生 Desktop(与gxt无关)_第1张图片
 
源码见附件,不保证能用,不提供技术支持。

 

你可能感兴趣的:(css,OS,配置管理,项目管理,gwt)