视图设计
表格视图设计
在编辑器中调色板中,选择表格,拖入编辑器,系统默认显示一个方框的思路,来规划表格的显示图形。由于表格中有很多子元素,所以设置显示图形时,必须考虑子元素的显示位置和子元素的布局管理。
public class TableFigure extends Figure{
private TableNode model;
private Figure childPanel;
public TableFigure(TableNode node){
super();
this.model=node;
init();
}
public void init(){
childPanel=new Figure(){
protected void paintFigure(Graphics g){
super.paintFigure(g);
}
public Dimension getPreferredSize(int wHint,int hHint){
Dimension dimension = super.getPreferredSize(wHint, hHint);
int w = Math.max(dimension.width, 200);
int h = Math.max(dimension.height, 200);
return new Dimension(w, h);
}
};
if(model.getBgColor() != null){
childPanel.setBackgroundColor(model.getBgColor());
}
ToolbarLayout stepLayout = new ToolbarLayout();
stepLayout.setVertical(true);
this.setBorder(new MarginBorder(1, 1, 1, 1));
this.setLayoutManager(stepLayout);
//设置表格
GridLayout grid=model.getGrid();
if(grid==null){
grid=new GridLayout();
}
childPanel.setLayoutManager(grid);
this.add(childPanel);
this.setOpaque(true);
}
public void paintFigure(Graphics graphics) {
super.paintFigure(graphics);
if(model.isBorder()){
Rectangle rect=getBounds();
graphics.setForegroundColor(new Color(null, 0, 0, 255));
graphics.drawRectangle(new Rectangle(rect.x,rect.y,rect.width-1,rect.height-1));
}
}
public Figure getContainerFigure() {
return this.childPanel;
}
public void setModel(TableNode node){
this.model=node;
this.repaint();
}
}
单元格视图
单元格视图相对比较简单,就显示一个方框。
public class CellFigure extends Figure{
private CellNode model;
private Figure childPanel;
public CellFigure(CellNode node){
super();
this.model=node;
init();
}
public void init(){
childPanel=new Figure(){
protected void paintFigure(Graphics g){
super.paintFigure(g);
}
};
if(model.getBgColor() != null){
childPanel.setBackgroundColor(model.getBgColor());
}
ToolbarLayout stepLayout = new ToolbarLayout();
//stepLayout.setSpacing(4);
stepLayout.setVertical(true);
//this.setBorder(new MarginBorder(8, 8, 8, 8));
this.setBorder(new MarginBorder(1, 1, 1, 1));
this.setLayoutManager(stepLayout);
//设置表格
GridLayout grid=new GridLayout();
childPanel.setLayoutManager(grid);
this.add(childPanel);
this.setOpaque(true);
}
public void setModel(CellNode node){
this.model=node;
this.repaint();
}
}
其它视图
画布采用XYLayout布局,直接在控制器中设置就可以了。
行、列做为逻辑层,不需要设计视图。
至此,视图已经设计完成了。
分享到:
相关推荐
本文旨在利用Eclipse平台上的GEF(Graphic Editor Framework)框架,设计并实现一个SVG的可视化制作工具,以解决SVG源码编辑的问题。GEF是一种用于构建图形编辑器的强大的框架,它基于Model-View-Controller(MVC)...
用视图显示在GEF编辑器编辑好的图形 在视图里加入GraphicalViewer viewer = new ScrollingGraphicalViewer(); viewer.createControl(parent);
1. **模型-视图-控制器(MVC)**:GEF基于MVC设计模式,模型存储图形数据,视图负责显示,控制器处理用户交互。 2. **编辑领域(EditPart)**:编辑领域是GEF中的核心组件,它将模型与视图关联起来,处理用户交互和...
GEF提供了多种视图类型,如树视图、表格视图和图形视图。 3. **EditPart**:编辑部分是视图和模型之间的桥梁,将模型的变化反映到视图上,同时处理用户的输入事件。每个图形元素都有一个对应的EditPart。 4. **...
GEF遵循经典的MVC(Model-View-Control)架构,这一设计模式使得模型、视图和控制器各司其职,减少了各组件间的耦合度,提高了系统的可维护性和灵活性。 #### 二、GEF的关键组件解析 1. **模型(Model)**:模型是...
在本实例中,我们将探讨如何利用GEF实现一个简单的MVC(Model-View-Controller)架构,这是一种常见的软件设计模式,用于分离应用程序的数据、显示逻辑和用户交互。 1. **GEF框架基础**: - **模型(Model)**:...
GEF是Eclipse生态系统的一部分,利用Eclipse的插件体系,开发者可以通过编写插件来扩展其功能,创建定制化的图形编辑器。 **插件开发** 在Eclipse中至关重要,因为它是实现功能扩展的主要方式。GEF插件开发涉及创建...
这有助于开发者在实际开发中更好地利用GEF框架。 **总结** Eclipse图形化编辑框架(GEF)通过层和视图的机制,提供了强大的图形编辑工具构建能力。层的管理使得元素的绘制和交互更加灵活,而视图则提供了展示模型...
7. **扩展点和插件系统**:Eclipse的插件系统使得GEF可以无缝集成到Eclipse环境中,开发者可以利用Eclipse的扩展点来定制和扩展编辑器。 8. **样例和教程**:GEF SDK通常会包含一些示例项目和详细的开发教程,帮助...
GEF主要应用于领域包括模型驱动工程(MDE)、软件建模、流程图和系统设计等。 标题"GEF Example Source Code"表明这是一个关于GEF框架的示例源代码集合,它可能包含各种演示如何使用GEF构建图形编辑功能的代码实例...
此外,gef的插件系统也可能提供了特定于流程设计的工具或功能。 6. **工作流实例(workflow1)**:在提供的压缩包文件"workflow1"中,可能包含了使用gef进行流程设计的一个具体示例。这可能是一个简单的脚本或项目...
这个入门学习例子旨在帮助初学者理解GEF的基本用法和核心概念,通过实例展示如何利用GEF实现工具栏、菜单栏、属性栏以及图形的交互功能,如移动、删除、撤销、连线等,并涵盖了大纲视图和鹰眼功能的实现。...
这个项目旨在演示如何利用GEF进行图形界面开发,并且特别关注了通过适配器(Adapter)扩展点来实现属性页配置以及在非Editor的ViewPart中使用GEF。 GEF是Eclipse平台下的一个开源库,专门用于构建可自定义的、图形...
你需要定义视图类,继承自GEF提供的基础视图类,并实现所需的绘图和事件处理逻辑。控制器则负责协调模型和视图的变化。 **6. 连接器和连接线** 在许多图形编辑器中,元素之间需要通过连接线进行关联。GEF提供了连接...
它为开发者提供了一套全面的工具,用于创建复杂的图形用户界面,特别适用于创建数据建模、流程设计、系统架构等领域的可视化编辑器。GEF主要基于SWT/JFace技术,提供了丰富的图形绘制、事件处理、模型与视图同步等...
**应用实例**:GEF常用于软件建模、系统架构设计、流程图绘制等领域。例如,UML建模工具、电路设计工具等都可以通过GEF实现其图形化界面。 总之,GEF-SDK-3.7.0是Eclipse平台上开发图形编辑器的强大工具,它提供了...
学习如何利用Eclipse的调试工具进行GEF应用的调试,以及编写测试用例验证功能的正确性。 10. **扩展性与可定制性** GEF的开放性和模块化设计使其具有高度的可扩展性和可定制性。开发者可以根据需求添加新的模型...
- **模型-视图-控制器(MVC)**:GEF基于经典的MVC设计模式,其中模型负责存储数据,视图负责显示数据,而控制器则处理用户交互。 - **编辑领域(EditPart)**:编辑领域是GEF中的核心组件,它将模型与视图关联...
其设计目标之一是降低模型和视图之间的耦合度,允许灵活选择不同的模型和视图组合。 在GEF中,模型和视图是独立的实体,它们之间的通信通过控制器进行。这种设计减少了模型与视图间的直接联系,但也意味着控制器...