EditPart的选中

EditPart的选中状态:

在EditPart里面可以通过setSelected(int value)的方式,设置对EditPart的选中状态。一共有三种选中状态:SELECTED_NONE = 0; SELECTED = 1; SELECTED_PRIMARY = 2;

当你仅仅设置了这个状态的时候,编辑器界面是会有改变的,它会让你感觉选中了EditPart。但是这个时候你看大纲视图,你看属性视图,你会发现都没有做相应的变化。而且你这个时候,你对你选中的对象做拖拽操作的时候,是无效果的。

由此可见,EditPart的setSelected方法只是一个描述选中状态类型的操作,它并没有帮你执行,鼠标选中当前节点的操作。

 

如果你想用代码的方式选中编辑器上的某个节点,可以获取它或者它的父EditPartViewer对象,然后把它的EditPart传入进去。代码如下:

 

getParent().getViewer().select(getParent());

 

在EditPartViewer里面有一个SelectionManager的对象,对选中的节点进行管理。

 

/**
	 * @see EditPartViewer#setSelectionManager(SelectionManager)
	 */
	public void setSelectionManager(SelectionManager model) {
		Assert.isNotNull(model);
		if (selectionModel != null)
			selectionModel.internalUninstall();
		selectionModel = model;
		model.internalInitialize(this, selection, new Runnable() {
			public void run() {
				fireSelectionChanged();
			}
		});
		if (getControl() != null)
			model.internalHookControl(getControl());
	}

 

/**
	 * Fires selection changed to the registered listeners at the time called.
	 */
	protected void fireSelectionChanged() {
		Object listeners[] = selectionListeners.toArray();
		SelectionChangedEvent event = new SelectionChangedEvent(this,
				getSelection());
		for (int i = 0; i < listeners.length; i++)
			((ISelectionChangedListener) listeners[i]).selectionChanged(event);
	}
 

上面这段是来自AbstractEditPartViewer类里面对选中这一个操作的处理。最基本的原理还是自己构造一个事件,让后触发选中。

 

 

另外在DefaultEditDomain里面也有很多触发事件的方法,类似鼠标可键盘的都有,虽然传入的事件基类跟SelectionChangedEvent不一样,但是基本原理相似。我自己没试,所以也不知道效果如何。 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值