2013-02-19 65 views
1

问题拖动项目没有观众越来越注重

有没有一种方法,以防止从的TreeViewer开始拖动和拖放操作时获得的焦点?或者你知道另一种方法来阻止它在拖动时改变其选择吗?

现状

  • 类别1
    • 注1.1
  • 类别2
    • 注2.1

我有显示类别的TreeViewer“类别”和显示所选类别中的注释的1个TableViewer“注释”。 “笔记”视图内容由通过数据绑定选择“类别”视图提供。

问题

当我有在“类别”视图然后我看到注意在“笔记”视图1.1选定的类别1。 问题是,当我想将类别2拖到注释1.1上时,“类别”视图选择类别2,并且因为现在“注释”视图仅显示注释1.1,所以我不能删除类别。注意2.1

回答

0

我不喜欢认为当你想开始拖拽时,你可以阻止类别视图获得焦点并发射选择改变。这只是控件的自然行为。可能会有一些非常规的方式来延迟选择发射,但它们可能无法完美地工作。

但是,为了解决您的问题,我建议配置您的拖放支持,以便当您开始拖动“类别2”(并因此更改选择)时,首先必须将鼠标悬停在“类别1”上(应重新选择“类别1”),它将允许您在“注释1.1”中删除“类别2”。

这意味着您还可以向类别查看器添加拖放支持,并在DropTargetListener#dragOver(DropTargetEvent)中将选择设置为鼠标悬停在其上的类别。这应该开始显示您的正确的笔记,以便您可以拖动拖动的类别。