Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Eclipse Projects » Plugin Development Environment (PDE) » Getting TreeViewer selection in a context action handler(Differences between TableViewer an TreeViewer?)
Getting TreeViewer selection in a context action handler [message #1509665] Sat, 13 December 2014 12:08 Go to next message
Silence81gmx.de Andreas is currently offline Silence81gmx.de AndreasFriend
Messages: 3
Registered: December 2014
Junior Member
Hello,
I have a problem creating a handler for a context action - or I have a problem understanding them Smile

First I created an example for a normal TableViewer wich works fine (extract):
	public void createPartControl(Composite parent)
	{
		// TableViewer //
		viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL
			| SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
		// create columns
		createColumns(parent, viewer);
		// make lines and header visible
		final Table table = viewer.getTable();
		table.setHeaderVisible(true);
		table.setLinesVisible(true);

		viewer.setContentProvider(new ArrayContentProvider());
		// set the content for the viewer
		viewer.setInput(DlyConnector.INSTANCE.getChanges());
		getSite().setSelectionProvider(viewer);

		// Menu //
		MenuManager menuManager = new MenuManager();
		Menu menu = menuManager.createContextMenu(viewer.getTable());
		// set the menu on the SWT widget
		viewer.getTable().setMenu(menu); 
		// register the menu with the framework
		getSite().registerContextMenu(menuManager, viewer);
	}


In the handler I try to get the selection:
   public Object execute(ExecutionEvent event) throws ExecutionException
   {
		 System.out.print("Part " +
			HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getActivePart().getTitle() + ": ");
		 ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event)
					   .getActivePage().getSelection();
		 System.out.println(selection == null?"null":"not null");
		 // loop over items
		 int i = 0;
		 if (selection != null & selection instanceof IStructuredSelection)
		 {
				IStructuredSelection strucSelection = (IStructuredSelection) selection;
				for (Iterator<Object> iterator = strucSelection.iterator(); iterator
							  .hasNext();)
				{
					   Object element = iterator.next();
					   System.out.println(element.toString());
					   i++;
				}
		 }
	}

Variable i now return the correct number of selected items.

I tried to extend the code to get child rows in the table, so I used the TreeViewer:
	public void createPartControl(Composite parent)
	{
		// ... Grid and other components ...

		// TableTree // 
		// full row and multi selection with scrollbars if needed
		Tree tree = new Tree(parent, SWT.BORDER | SWT.H_SCROLL
			| SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.MULTI);
		tree.setHeaderVisible(true);
		tree.setLinesVisible(true);
		createColumns(parent, tree);

		viewer = new TreeViewer(tree);
		viewer.setContentProvider(new ChangeContentProvider());
		viewer.setLabelProvider(new TableLabelProvider());
		// provide changes from database
		viewer.setInput(DlyConnector.INSTANCE.getChangesWithObjects());
		viewer.collapseAll();

		// define layout for the viewer
		GridData gridData = new GridData();
		...
		viewer.getControl().setLayoutData(gridData);

		// Menu //
		MenuManager menuManager = new MenuManager();
		Menu menu = menuManager.createContextMenu(viewer.getControl());
		// set the menu on the SWT widget
		viewer.getControl().setMenu(menu); 
		// register the menu with the framework
		getSite().registerContextMenu(menuManager, viewer);
	}


The handler now return always a "null" selection:
The output returns the correct name of the view, but no selection: "null", i is zero.

Do I have to create a menu handler or do I have to create the menu itself using another way for TreeViewers?
Why is the selection null?

Any help would be nice Smile

Kind regards
Andreas
Re: Getting TreeViewer selection in a context action handler [message #1511786 is a reply to message #1509665] Mon, 15 December 2014 06:54 Go to previous message
Silence81gmx.de Andreas is currently offline Silence81gmx.de AndreasFriend
Messages: 3
Registered: December 2014
Junior Member
This morning I have seen that I forgot a small little line....

getSite().setSelectionProvider(viewer);
was missing for the table tree... Hours of debugging... for nothing...

Confused

Thanks anyway Smile
Previous Topic:How to realtime validate the contents of an editor?
Next Topic:Linking folders/files to LISP Project in Dandelion LISP
Goto Forum:
  


Current Time: Tue Apr 23 08:04:17 GMT 2024

Powered by FUDForum. Page generated in 0.03750 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top