1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-09-10 12:03:16 +02:00

[177587] Kevin's patch for selection provider in Monitor view

This commit is contained in:
David McKnight 2007-06-28 19:53:13 +00:00
parent 060656a2c1
commit 807e1d2515
3 changed files with 102 additions and 8 deletions

View file

@ -15,6 +15,7 @@
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
* Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry
* Kevin Doyle (IBM) - [177587] changed wrapped selection provider in setFocus()
********************************************************************************/
package org.eclipse.rse.internal.ui.view.monitor;
@ -277,7 +278,8 @@ FocusListener
public void setFocus()
{
_viewPart.getSite().setSelectionProvider(_viewer);
if (_viewPart != null)
_viewPart.setActiveViewerSelectionProvider(_viewer);
}
public IActionBars getActionBars()

View file

@ -13,6 +13,7 @@
*
* Contributors:
* {Name} (company) - description of contribution.
* Kevin Doyle (IBM) - [177587] createTabItem sets the wrapped selection provider
*******************************************************************************/
package org.eclipse.rse.internal.ui.view.monitor;
@ -229,9 +230,11 @@ public class MonitorViewWorkbook extends Composite
monitorViewPage.setInput(root);
SystemTableView viewer = monitorViewPage.getViewer();
_viewPart.getSite().setSelectionProvider(viewer);
_viewPart.getSite().registerContextMenu(viewer.getContextMenuManager(), viewer);
if (_viewPart != null)
{
_viewPart.setActiveViewerSelectionProvider(viewer);
_viewPart.getSite().registerContextMenu(viewer.getContextMenuManager(), viewer);
}
monitorViewPage.setFocus();
}

View file

@ -14,6 +14,7 @@
* Michael Berger (IBM) - 146339 Added refresh action graphic.
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry
* Kevin Doyle (IBM) - [177587] Made MonitorViewPart a SelectionProvider
********************************************************************************/
package org.eclipse.rse.internal.ui.view.monitor;
@ -28,6 +29,7 @@ import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.window.Window;
@ -90,7 +92,8 @@ public class SystemMonitorViewPart
ISystemShellProvider,
ISystemRemoteChangeListener,
ISystemMessageLine,
IRSEViewPart
IRSEViewPart,
ISelectionProvider
{
@ -621,6 +624,11 @@ class SubSetAction extends BrowseAction
private SubSetAction _subsetAction = null;
private PositionToAction _positionToAction = null;
private ISelectionProvider viewerProvider = null;
private ArrayList selectionListeners = new ArrayList();
private ISelectionChangedListener selectionListener = null;
// constants
public static final String ID = "org.eclipse.rse.ui.view.monitorView"; //$NON-NLS-1$
// matches id in plugin.xml, view tag
@ -673,6 +681,21 @@ class SubSetAction extends BrowseAction
RestoreStateRunnable restore = new RestoreStateRunnable();
Display.getCurrent().asyncExec(restore);
getSite().setSelectionProvider(this);
selectionListener = new ISelectionChangedListener() {
public void selectionChanged (SelectionChangedEvent event)
{
for (int i = 0; i < selectionListeners.size(); i++)
{
if (selectionListeners.get(i) instanceof ISelectionChangedListener)
{
((ISelectionChangedListener) selectionListeners.get(i)).selectionChanged(event);
}
}
}
};
fillLocalToolBar();
}
@ -760,7 +783,60 @@ class SubSetAction extends BrowseAction
{
}
public void addSelectionChangedListener(ISelectionChangedListener listener)
{
if (selectionListeners != null)
selectionListeners.add(listener);
}
public void removeSelectionChangedListener(ISelectionChangedListener listener)
{
if (selectionListeners != null)
selectionListeners.remove(listener);
}
public ISelection getSelection()
{
if (viewerProvider == null)
return null;
else
return viewerProvider.getSelection();
}
/**
* Sets the wrapped selection provider.
* This method should only be called when the viewer changes.
* @param newProvider The new wrapped selection provider.
*/
public void setActiveViewerSelectionProvider(ISelectionProvider newProvider)
{
if (viewerProvider != null)
viewerProvider.removeSelectionChangedListener(selectionListener);
viewerProvider = newProvider;
if (newProvider != null)
{
newProvider.addSelectionChangedListener(selectionListener);
// Create a new event and tell all listeners about it, so that the properties
// view is updated to show the new viewers selected object
SelectionChangedEvent event = new SelectionChangedEvent(newProvider, newProvider.getSelection());
for (int i = 0; i < selectionListeners.size(); i++)
{
if (selectionListeners.get(i) instanceof ISelectionChangedListener)
{
((ISelectionChangedListener) selectionListeners.get(i)).selectionChanged(event);
}
}
}
}
public void setSelection(ISelection selection)
{
if (viewerProvider != null)
viewerProvider.setSelection(selection);
}
public void addItemToMonitor(IAdaptable root)
{
@ -921,6 +997,19 @@ class SubSetAction extends BrowseAction
public void widgetSelected(SelectionEvent e)
{
Widget source = e.widget;
Widget item = e.item;
Object data = item.getData();
MonitorViewPage page = null;
if (data instanceof MonitorViewPage)
page = (MonitorViewPage) data;
// Set the wrapped viewer to be the viewer of the new selected tab
if (page != null)
{
SystemTableView viewer = page.getViewer();
setActiveViewerSelectionProvider(viewer);
}
if (source == _folder.getFolder())
{