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:
parent
060656a2c1
commit
807e1d2515
3 changed files with 102 additions and 8 deletions
|
@ -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()
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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())
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue