gef中默认提供的RootEditPart

在我们实现一个gef编辑器的时候,会重新configureGraphicalViewer()方法,在这个方法里面我们会为GraphicalViewer设置一个RootEditPart,一般是ScalableFreeformRootEditPart。

 

RootEditPart接口:这个接口定义了几个方法,主要是用于获取当前的EditPartViewer,在gef中EditPartViewer才是我们在界面看到的一个个有效单元,而EditPart只是它的一个控制器。

 

1.FreeformGraphicalRootEditPart:一个gef默认提供的类,它是一个RootEditPart,它默认的建立了N个Layer,用分层展示的方式,展示编辑器中的界面元素,所有的layer都放在FreeformViewport里面。

 

关于创建layer的代码:

 

protected void createLayers(LayeredPane layeredPane) {
		layeredPane.add(createGridLayer(), GRID_LAYER);
		layeredPane.add(getPrintableLayers(), PRINTABLE_LAYERS);
		layeredPane.add(new FreeformLayer(), HANDLE_LAYER);
		layeredPane.add(new FeedbackLayer(), FEEDBACK_LAYER);
		layeredPane.add(new GuideLayer(), GUIDE_LAYER);
	}

 

protected LayeredPane createPrintableLayers() {
		FreeformLayeredPane layeredPane = new FreeformLayeredPane();
		layeredPane.add(new FreeformLayer(), PRIMARY_LAYER);
		layeredPane.add(new ConnectionLayer(), CONNECTION_LAYER);
		return layeredPane;
	}

 除了添加layer,FreeformGraphicalRootEditPart还对GridLayer做了一些处理:

 

if (property.equals(SnapToGrid.PROPERTY_GRID_ORIGIN)
					|| property.equals(SnapToGrid.PROPERTY_GRID_SPACING)
					|| property.equals(SnapToGrid.PROPERTY_GRID_VISIBLE))
				refreshGridLayer();

 我们可以在Editor中设置这三个属性的值,来改变GridLayer现实的状态:

 

getGraphicalViewer().setProperty(SnapToGrid.PROPERTY_GRID_VISIBLE,
                false);
        getGraphicalViewer().setProperty(SnapToGrid.PROPERTY_GRID_ENABLED,
                false);
        getGraphicalViewer().setProperty(SnapToGeometry.PROPERTY_SNAP_ENABLED,
                true);

 

ScalableFreeformRootEditPart:是FreeformGraphicalRootEditPart的子类,它里面增加了一个ZoomManager的功能。

 

RulerRootEditPart:为编辑提供游标功能的EditPart,主要被gef默认提供的封装组件RulerComposite使用。RulerComposite大家肯定熟悉,是用于实现游标的那个功能的。

 

ScalableRootEditPart:能够缩放,但是不自由伸展。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值