毕业设计的设计部分笔记1

时间:2022-09-27 15:14:10

这点文档就乱七八糟的放在这里吧。之后总结的时候再去考虑他怎么样的排版以及如何。

关于那些翻译,周末一同做完吧,不然之后这一段时间的心情会很不好受的,不是么。

那么,下面就开始吧。

 

关于引擎的一些设计方案。或者说,先看看这些能够实现的 level1 component

Level1 也是最基本的一些 component 他的作用是为了更高级别的 component 做好充足的准备,因为越是高级,其实是越是复杂的拼装而不是更新的东西的创造。所以好好实现这一个级别的 component 是一件很重要的事情。

 

下面有这些 lv1 component 来实现:

Frame

Dialog

Panel

Combobox

Checkbox

Radiobutton

List

Passwordfield

Textfield

Label

Link

 

先来看看第一个。Frame

Frame 按照说明,就是相当于 Java SE 中的 Swing 或者 SWT 中的那个 Window 同时也是所有这些 component 的最基本的一个 container 将这些基于 frame component 放置在这个 container 中。那么,对于 html 来说,这个 frame 就是相当于一个 div 了。Html 是一层一层的,就像是小的时候粘纸片一样,或者贴画,先把最下面的粘好,然后一点一点的像上面继续贴啊贴啊,一直到将整个的画完成。同样的, html 先把最基本的 background 做好,然后呢,一点一点的放置上 div 啊, table 啊,然后,再去放一些东西,比如 img label textfield 等等这些component

也就是说, frame à <div>

在解析的时候,读入标签 frame 然后解析成 <div> 大概就是这样的一个小过程。

 

写到这里,不得不提到一些关于解析的事情。因为引擎是需要对 guixml 文件进行解析的,所以parse的过程是必不可少的一个很重要的过程。

现在的解析方法想到了这样的一个:

使用xmldom 进行解析,然后将解析到的attributevalue存在表中。

考虑到的表如下:

Hint

这些表 是引擎中生成用的表,而不是引擎中自带的一个分析表。

 

首先是一个 component 表。

这张表里面存放的是所有 component 的名称以及他们的类型。

打个比方:

Component名称

类型

Button1

Button

Text1

Textfield

这样的表。

名称是必不可少的,因为需要通过名称去关联属性表以及其他的一些表,那么这里就有一个问题,就是名称是不可以重复的。这个就需要一个良好的IDE工具来对这个问题进行解释分析,或者抛出一个异常。最后生成的这样表必须是一个干干净净的表。什么时候见到过在 Java 甚至是 JavaScript 中在相同的命名空间中有相同名称时候不报错的,不是么。

那么,类型的话就是包括lv1类型以及lv2类型或者higher的类型。通过分析类型,来对其的 attribute 进行分析。

 

第二张表就是 attribute 表。

Attribute 表中存储的是一些 component 属性的东西。

比如说,buttonvalue是什么啊,或者textfield有没有小框框等等,这些类型的attribute

这张表可以这样的解释如下:

Component名称

Attribute

Value

Button1

Value

确定

Text1

Text-overflow (IE6+ required)

Clip

解释的方法,就是从 component 的名称中查询component表得到component的类型,然后查询attribute表中的attribute,查看是否支持这个属性,如果不支持就忽略掉,然后如果支持的话,把attributevalue写入到style中去就可以了。

其实,就是一个字符串的拼接。比较的麻烦,这个工作量可能有点大吧,如果能够全部拼接出来也就可以了。

 

Ok,还有一个就是事件相关的一个 event 表。不过现在先暂时不要考虑这个东西吧。先尝试的把这些东西完成就可以了。

 

回过头来在说说frame

Frame 既然要像window一样的用,那么他可能就需要做的像window一样。例子如同一个基于浏览器的操作系统,它里面的窗口,如果说排除是flash的成果,那么如果用js去做,就需要一个drag and drop的过程来描述这一切东西。而且需要一个css来定义一个最基本的frame的样式表。这些,就需要好好的看看css了。

 

另外在说一说css重载的事情。

Css的样式是可以重载的。通过tag 中的style 如果说有支持的style可以用的话,那么就可以将原先的css样式重载,毕竟css样式是一个静态的样式表,style是一个动态的。

 

于是,就可以考虑采用这样的方式对componentattribute进行相应的关联,希望这样的方法是有效果的。

 

那个,继续说。

Frame可以看作是一个窗体,那么也就是说,这个div中可以继续增加div。那么我们就需要考虑第二个lv1 componentPanel

Panel的实现和frame可以说是相似的,因为同样是应用div来实现这一个东西,唯一不同的是,按照 JavaSE的解释,panel需要在frame之上,也是就是说,要base on frame 或者说是需要frame 这个container来做其容器的support。这样,窗体就开始有了第一次的层次感:

Frame – panel

这个panel是可有可无的咯。

因为如果没有panelframe依然是一个container,它可以contain很多component,而panel只是这些component中的一种。因此需要考虑的是,这些panelpanel自己的一些问题了。

Panel根据要求是要有layout的。比如有VH这两类的分栏,或者是VH的排版,这两个是最简单的layout,其他的先不考虑。Panel的难点就是在于如何去实现这些layout,以及对其中里面的elements进行定位或者重排。

 

恩。下一个是dialog

这个,dialog啊,一开始考虑的时候是用alert()直接用就行了,这样的话就是一个简简单单的那种像notice的那种而不是那种可交互形式的。看看yahoomail system,他们用ajaxpython实现了这些功能,哇。

那么现在dialog的实现是这样的。

Dialog也是一个div,不过这个div需要另外一点,就是要求在这个dialog弹出的时候lock后面所有的elements,或者说加上一个div,来处理这些。这里,张老师给了我一个exception,就是IE或者firefox不能够很正确的对select标签或者其他的进行很好的div遮蔽。这个问题,我考虑了一阵,看看尝试用标签自己根本的属性行不行,就是通过javasript更改这些标签的enable属性,来尝试达到相同的显示结果。

Dialog还是不拖动了吧。我喜欢AOR那本书上的gallery的那种风格。另外呀,这里还有大量的工作是在完成好多好多的css sheets 需要完成这些还是要很多的时间来奋斗的。

 

Div的问题差不多就是这样了,那么下面看看这些容器之上的component

其实,按照这样的html布局来看,lv1可以继续划分,可以将这些容器类的,比如div,这样的tag放做为lv1base,那些在container中使用的component作为基于lv1_base component

 

Definition

Frame为最底层的lv1 component