Search code examples
eclipseeclipse-plugineclipse-rcplistselectionlistenertreeviewer

In eclipse TreeViewer how to trigger an event only in mouse up as welll as in key board arrow key


I have a treeViewer in which I want to execute some code(doSomething() method) only when mouse up is pressed, not on mouse down. The following piece of code executes it even when mouse down is triggered as selectionlistener is already triggered. What should I do to get the exact behaviour ?

    treeViewer.getTree().addMouseListener(new MouseListener() {

        @Override
        public void mouseUp(MouseEvent e) {
            doSomething()
        }

        @Override
        public void mouseDown(MouseEvent e) {
            // nothing happens
        }

        @Override
        public void mouseDoubleClick(MouseEvent e) {
            // nothing happens
        }
    });

    treeViewer.addPostSelectionChangedListener(new ISelectionChangedListener() {

        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            doSomething()
        }
    });

Solution

  • try this,assuming viewer is your TreeViewer,but it does not work when the mouse was actioned on another control.

    viewer.getTree().addMouseListener(new MouseListener() {
            @Override
            public void mouseDoubleClick(MouseEvent e) {
                // TODO Auto-generated method stub
    
            }
            @Override
            public void mouseDown(MouseEvent e) {
                // TODO Auto-generated method stub
    
            }
            @Override
            public void mouseUp(MouseEvent e) {
                // TODO Auto-generated method stub
                System.out.println("Mouse UP");
    
            }
        });