重新开发 模拟win7, WebUI开发的日子

    大学毕业之前去国外网站逛的时候无意中看到一个老外用jquery写了一个模拟win7的jquery ui界面,特效还好而且非常多,用的是jquery.easing.1.3.js,但是功能稀少,性能一般,还有可控操作接口没有,只有简单的桌面,桌面图标,窗口,任务栏,开始菜单而已,代码就1000来行。

    大学毕业一年多点了,如今需要一个可操作性的后台或者前台用也可,重新来编写和扩展功能需求,接口,完善这一任务,一年前做了一部分扩展,由于刚加入工作打点的事情多,就暂时搁置了,原地址:http://www.oschina.net/code/snippet_153403_9696。现在由于学了node.js,看了不少javascript开发,代码质量有所精进,对原来的设计做了很大调整:包括图片合并到一张图,代码封装,增加模块扩展以方便对需求扩展开发等等。

    功能描述
    平台
        1.设计div+css布局,分块,嵌套,区域布局各自为政方式布局 [已完成]
        2.代码设计,命名空间WebPlatform,目前核心代码编写有Platform,AeroWindow,Desktop,DesktopIcon,DesktopBar[已完成]
        3.对象暴露设计,可根据设计自定义ID来方便直接操作对象[已完成]
        4.插件扩展功能,分为prototype扩展和静态扩展,例如 [已完成]
            主扩展方式1:
            平台主方法Platform,如对该方法添加扩展Platform.fx.[方法名] = function(){var self = this},其中this可以访问当前的所有对象内容,Platform属于平台顶级方法,可以逐级按照需要往下访问。
            扩展方式2:在对象上扩展

var platform = new Platform();
platform.extend({
   A:function(){},
   B:'newAttribute'
});

      桌面: 
        1. 创建单独对象动态添加多桌面  [已完成]
        2.桌面切换  [已完成]
        3.增加了桌面切换助手  [已完成]
    桌面图标
        1.可拖动  [已完成]
        2.创建图标是预加载窗口  [已完成]
        3.创建桌面图标不创建窗口  [已完成]
        4.拖动防止重叠并规则摆放,动态创建图标,修改图标信息,删除图标信息 [未完成]
    任务栏:   
        1.多桌面共享一个任务栏  [已完成]  
        2.点击任务栏图标,跳至任务桌面并还原窗口 [已完成]  
        3.关闭窗口,隐藏任务栏图标 [已完成]  
        4.任务栏分左右两个区域控制 [已完成] 

        5.任务栏上下拖动并变换样式[已完成]

    窗口:复杂多变
        1.分类创建窗口,html,iframe,dialog [对话框未整理]
        2.新增加工具栏,状态栏,header的控制 [已完成]  
        3.窗口的最大化,最小化,关闭,最大化拖拽变成正常窗口状态,鼠标拖窗口到浏览器窗口上边时缘释放最大化 [已完成]
        4.丰富的对话框窗口,ajax html,两个窗口之间相互控制内容显示(留出操作接口),wabpage内容窗口,自定义窗口,完全自定义窗口 [待完善]
    新增右键菜单,不同区域右键菜单控制不一
    新增配置文件及其保存功能,对每个桌面的操作保存,下次打开和最后一次状态一样。保存至mongodb

    2013-12-26:完成窗口于桌面图标之间的各种协调工作,感觉功能越来越多,代码就越来越繁琐,代码的质量肯定有所下降了,先实现功能吧

    窗口与桌面图标之间的关系

        1.图标创建和预加载:①加载图标同时预加载窗口信息,可以同时配置图标和窗口信息,②只添加图标到桌面

        2.桌面图标:①双击图标,如果窗口没有预加载则创建新窗口,②如果窗口存在则打开,③添加了一个桌面图标双击后回调事件,这个非常有用,比如打开窗口链接服务器,首先检查登录,没有登录显示登录html,登录成功显示信息,使用before,after处理顺序等等。

        3.窗口加载:①只加载窗口不创建图标,②加载窗口并创建桌面图标

    开发扩展
    代码使用javascript的链来对操作界面使用树形控制开发:控制情况,我这里使用json描述
    {
        top:{
                desktop1:{
                    desktopicons:{},
                    aerowindows:{},
                    contextmenu:{}
                },desktop2:{}}
    }
    一个系统下有多个桌面,每个桌面有自己的icons,windows,contextmenu等,top = new WebPlatform(……);desktop =new plat.addDesktop(……);115123_PyUd_153403.jpg

转载于:https://my.oschina.net/antianlu/blog/183178

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值