1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-09-10 03:53:21 +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) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API * Martin Oberhuber (Wind River) - [186128] Move IProgressMonitor last in all API
* Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry * 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; package org.eclipse.rse.internal.ui.view.monitor;
@ -277,7 +278,8 @@ FocusListener
public void setFocus() public void setFocus()
{ {
_viewPart.getSite().setSelectionProvider(_viewer); if (_viewPart != null)
_viewPart.setActiveViewerSelectionProvider(_viewer);
} }
public IActionBars getActionBars() public IActionBars getActionBars()

View file

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

View file

@ -14,13 +14,14 @@
* Michael Berger (IBM) - 146339 Added refresh action graphic. * Michael Berger (IBM) - 146339 Added refresh action graphic.
* Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core * Martin Oberhuber (Wind River) - [168975] Move RSE Events API to Core
* Martin Oberhuber (Wind River) - [186773] split ISystemRegistryUI from ISystemRegistry * 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; package org.eclipse.rse.internal.ui.view.monitor;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Vector; import java.util.Vector;
import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IStatusLineManager; import org.eclipse.jface.action.IStatusLineManager;
@ -28,6 +29,7 @@ import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.Separator; import org.eclipse.jface.action.Separator;
import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.ISelectionProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.window.Window; import org.eclipse.jface.window.Window;
@ -90,7 +92,8 @@ public class SystemMonitorViewPart
ISystemShellProvider, ISystemShellProvider,
ISystemRemoteChangeListener, ISystemRemoteChangeListener,
ISystemMessageLine, ISystemMessageLine,
IRSEViewPart IRSEViewPart,
ISelectionProvider
{ {
@ -621,6 +624,11 @@ class SubSetAction extends BrowseAction
private SubSetAction _subsetAction = null; private SubSetAction _subsetAction = null;
private PositionToAction _positionToAction = null; private PositionToAction _positionToAction = null;
private ISelectionProvider viewerProvider = null;
private ArrayList selectionListeners = new ArrayList();
private ISelectionChangedListener selectionListener = null;
// constants // constants
public static final String ID = "org.eclipse.rse.ui.view.monitorView"; //$NON-NLS-1$ public static final String ID = "org.eclipse.rse.ui.view.monitorView"; //$NON-NLS-1$
// matches id in plugin.xml, view tag // matches id in plugin.xml, view tag
@ -672,6 +680,21 @@ class SubSetAction extends BrowseAction
RestoreStateRunnable restore = new RestoreStateRunnable(); RestoreStateRunnable restore = new RestoreStateRunnable();
Display.getCurrent().asyncExec(restore); 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(); 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) public void addItemToMonitor(IAdaptable root)
{ {
@ -921,7 +997,20 @@ class SubSetAction extends BrowseAction
public void widgetSelected(SelectionEvent e) public void widgetSelected(SelectionEvent e)
{ {
Widget source = e.widget; 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()) if (source == _folder.getFolder())
{ {
updateActionStates(); updateActionStates();