如何在SWT.Show事件中获取真正的复合名称

时间:2016-09-30 21:05:12

标签: events swt show rcp

我想记录用户操作的信息,例如按钮点击,显示复合。所以我使用事件监听器。当我使用SWT.FocusIn时,我可以获得真正的复合名称,但是当我使用SWT时,我无法获得真正的类名。

Listener listener = new Listener() {
    public void handleEvent(Event event) {
        switch (event.type) {
            case SWT.FocusIn: {
                if(event!=null&&event.widget!=null){
                    Control parent = ((Control)event.widget).getParent();
                    while(parent!=null&&(parent.toString().startsWith("Composite")
                                                ||parent.toString().startsWith("Group")
                                                ||parent.toString().startsWith("Splitter")
                                                )){
                        parent = parent.getParent();
                    }
                    if(parent!=null){
                        **//This place I can get "SWT.FocusIn:DoSomethingComposite"(The subclass of Composite).**
                        log.info("SWT.FocusIn:" + parent.toString());
                    }   
                }
                break;
            }
            case SWT.Show: {
                if (event.widget != null) {
                    if(event.widget instanceof Composite) {
                        Composite composite = (Composite)(event.widget);
                        **//But this place I just get "SWT.Show:Composite".**
                        log.info("SWT.Show:" + event.widget.toString());
                    }
                }
                break;
            }
            default: {
                break;
            }
        }
    }
}   
PlatformUI.getWorkbench().getDisplay().addFilter(SWT.Show, listener);
PlatformUI.getWorkbench().getDisplay().addFilter(SWT.FocusIn, listener);

0 个答案:

没有答案