`
liugang594
  • 浏览: 992072 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

GEF中一个模型的多层图的问题

    博客分类:
  • GEF
 
阅读更多

一般来说,我们在做GEF的时候,通常是一个模型对应一个图,这个图例如就是简单的通过继承Figure得来的。

 

也有可能我们需要的图比较复杂,需要通过多个图的组合来得到一个模型的图。举个最简单的使用:

 

假如我们希望模型A的图是这个样子:有一个title区域和一个body区域,其中body区域是可以滚动的,如下:

 

figure 1

 

那么简单的,可以有一个大图,大图的clientArea区域是一个ScrollPane,然后在ScrollPane里就是body的内容。

 

假设A对应的图是A_Figure,它的body是A_BodyFigure;A对应的EditPart是A_EditPart,那么在A_EditPart的getFigure()方法里,应该返回的是A_Figure。

 

但是实际上剩下的操作都是在A_BodyFigure上进行,例如,这些<unnamed>子图是加在A_BodyFigure上的。

 

所以此时需要重写EditPart的另一个方法:

public IFigure getContentPane()

 

这个方法返回用来添加子图形的图形。默认情况下就是返回getFigure()方法:

 

/**
 * If the children's Figures should be 
 * @see GraphicalEditPart#getContentPane()
 */
public IFigure getContentPane() {
	return getFigure();
}

 

所以如果要得到A_BodyFigure,大致可以如下实现:

 

	@Override
	public IFigure getContentPane() {
		ScrollPane child = (ScrollPane) getFigure().getChildren().get(0);
		A_BodyFigure contents = (A_BodyFigure)child.getContents();
		return contents;
	}

 

然后剩下要做的就是谨慎区分什么时候调用getFigure()方法,什么时候调用getContentPane()方法。

 

  • 大小: 4.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics