SWT中如何设置TableViewer和TreeViewer成为双击编辑

时间:2023-01-18 15:28:11

 TableViewer viewer = ...

SWT中如何设置TableViewer和TreeViewer成为双击编辑import  org.eclipse.jface.viewers.ColumnViewer;
SWT中如何设置TableViewer和TreeViewer成为双击编辑
import  org.eclipse.jface.viewers.ColumnViewerEditorActivationEvent;
SWT中如何设置TableViewer和TreeViewer成为双击编辑
import  org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy;
SWT中如何设置TableViewer和TreeViewer成为双击编辑
import  org.eclipse.jface.viewers.IStructuredSelection;
SWT中如何设置TableViewer和TreeViewer成为双击编辑
SWT中如何设置TableViewer和TreeViewer成为双击编辑
public   final   class  DoubleClickColumnViewerEditorActivationStrategy   extends
SWT中如何设置TableViewer和TreeViewer成为双击编辑SWT中如何设置TableViewer和TreeViewer成为双击编辑        ColumnViewerEditorActivationStrategy 
... {
SWT中如何设置TableViewer和TreeViewer成为双击编辑    
public DoubleClickColumnViewerEditorActivationStrategy(
SWT中如何设置TableViewer和TreeViewer成为双击编辑SWT中如何设置TableViewer和TreeViewer成为双击编辑            ColumnViewer viewer) 
...{
SWT中如何设置TableViewer和TreeViewer成为双击编辑        
super(viewer);
SWT中如何设置TableViewer和TreeViewer成为双击编辑    }

SWT中如何设置TableViewer和TreeViewer成为双击编辑
SWT中如何设置TableViewer和TreeViewer成为双击编辑SWT中如何设置TableViewer和TreeViewer成为双击编辑    
/** *//**
SWT中如何设置TableViewer和TreeViewer成为双击编辑     * Create at Jan 18, 2008 5:38:15 PM<br>
SWT中如何设置TableViewer和TreeViewer成为双击编辑     * (non-Javadoc)
SWT中如何设置TableViewer和TreeViewer成为双击编辑     * 
SWT中如何设置TableViewer和TreeViewer成为双击编辑     * 
@see org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy#isEditorActivationEvent(org.eclipse.jface.viewers.ColumnViewerEditorActivationEvent)
SWT中如何设置TableViewer和TreeViewer成为双击编辑     
*/

SWT中如何设置TableViewer和TreeViewer成为双击编辑    @Override
SWT中如何设置TableViewer和TreeViewer成为双击编辑    
protected boolean isEditorActivationEvent(
SWT中如何设置TableViewer和TreeViewer成为双击编辑SWT中如何设置TableViewer和TreeViewer成为双击编辑            ColumnViewerEditorActivationEvent event) 
...{
SWT中如何设置TableViewer和TreeViewer成为双击编辑        
boolean singleSelect = ((IStructuredSelection) getViewer()
SWT中如何设置TableViewer和TreeViewer成为双击编辑                .getSelection()).size() 
== 1;
SWT中如何设置TableViewer和TreeViewer成为双击编辑        
return singleSelect
SWT中如何设置TableViewer和TreeViewer成为双击编辑                
&& (event.eventType == ColumnViewerEditorActivationEvent.MOUSE_DOUBLE_CLICK_SELECTION
SWT中如何设置TableViewer和TreeViewer成为双击编辑                        
|| event.eventType == ColumnViewerEditorActivationEvent.PROGRAMMATIC || event.eventType == ColumnViewerEditorActivationEvent.TRAVERSAL);
SWT中如何设置TableViewer和TreeViewer成为双击编辑    }

SWT中如何设置TableViewer和TreeViewer成为双击编辑}

注意红色地方, 这是和原来不一样的. 原来是单击.

然后调用

SWT中如何设置TableViewer和TreeViewer成为双击编辑TableViewerEditor.create(viewer,  new  DoubleClickColumnViewerEditorActivationStrategy(viewer), ColumnViewerEditor.DEFAULT);

就OK了.

正好今天在网上看到有其他兄弟写的添加MouseListener的做法, 私下以为虽然可能达到了功能目的, 但是代码增加不少, 而且和SWT的设计理念也有些差异. 可能多看看SWT的源码, 会有比较好的解决方案.

TreeViewer和TableViewer一样, 看看源码就明了了.

另: 正在研究怎么编辑Treeviewer, 头大不已.  关键是要不同的编辑器~~~, 不知道有没有达人指点一二?