mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-15 04:55:22 +02:00
[192716] Refresh Error in Table View after Renaming folder shown in table
This commit is contained in:
parent
1edcf35d52
commit
060656a2c1
1 changed files with 52 additions and 6 deletions
|
@ -18,6 +18,7 @@
|
||||||
* Kevin Doyle (IBM) - [189005] Changed setFocus() to setInput to SystemRegistryUI
|
* Kevin Doyle (IBM) - [189005] Changed setFocus() to setInput to SystemRegistryUI
|
||||||
* Martin Oberhuber (Wind River) - [190271] Move ISystemViewInputProvider to Core
|
* Martin Oberhuber (Wind River) - [190271] Move ISystemViewInputProvider to Core
|
||||||
* David McKnight (IBM) - [191288] Up To Action doesn't go all the way back to the connections
|
* David McKnight (IBM) - [191288] Up To Action doesn't go all the way back to the connections
|
||||||
|
* Xuan Chen (IBM) - [192716] Refresh Error in Table View after Renaming folder shown in table
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.internal.ui.view;
|
package org.eclipse.rse.internal.ui.view;
|
||||||
|
@ -1166,6 +1167,12 @@ public class SystemTableViewPart extends ViewPart
|
||||||
|
|
||||||
public void createPartControl(Composite parent)
|
public void createPartControl(Composite parent)
|
||||||
{
|
{
|
||||||
|
//Want to register SystemTableViewPart as resouce change listener first, since it may update the _inputObject
|
||||||
|
//of the SystemTableView, which will affect the behaviour of the resource change event handling of SystemTableView.
|
||||||
|
ISystemRegistry registry = RSECorePlugin.getTheSystemRegistry();
|
||||||
|
registry.addSystemResourceChangeListener(this);
|
||||||
|
registry.addSystemRemoteChangeListener(this);
|
||||||
|
|
||||||
Table table = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION | SWT.HIDE_SELECTION);
|
Table table = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL | SWT.MULTI | SWT.FULL_SELECTION | SWT.HIDE_SELECTION);
|
||||||
_viewer = new SystemTableView(table, this);
|
_viewer = new SystemTableView(table, this);
|
||||||
|
|
||||||
|
@ -1191,7 +1198,6 @@ public class SystemTableViewPart extends ViewPart
|
||||||
_browsePosition = 0;
|
_browsePosition = 0;
|
||||||
|
|
||||||
// register global edit actions
|
// register global edit actions
|
||||||
ISystemRegistry registry = RSECorePlugin.getTheSystemRegistry();
|
|
||||||
Clipboard clipboard = RSEUIPlugin.getTheSystemRegistryUI().getSystemClipboard();
|
Clipboard clipboard = RSEUIPlugin.getTheSystemRegistryUI().getSystemClipboard();
|
||||||
|
|
||||||
CellEditorActionHandler editorActionHandler = new CellEditorActionHandler(getViewSite().getActionBars());
|
CellEditorActionHandler editorActionHandler = new CellEditorActionHandler(getViewSite().getActionBars());
|
||||||
|
@ -1208,9 +1214,7 @@ public class SystemTableViewPart extends ViewPart
|
||||||
|
|
||||||
// register rename action as a global handler
|
// register rename action as a global handler
|
||||||
getViewSite().getActionBars().setGlobalActionHandler(ActionFactory.RENAME.getId(), _renameAction);
|
getViewSite().getActionBars().setGlobalActionHandler(ActionFactory.RENAME.getId(), _renameAction);
|
||||||
|
|
||||||
registry.addSystemResourceChangeListener(this);
|
|
||||||
registry.addSystemRemoteChangeListener(this);
|
|
||||||
|
|
||||||
SystemWidgetHelpers.setHelp(_viewer.getControl(), RSEUIPlugin.HELPPREFIX + "sysd0000"); //$NON-NLS-1$
|
SystemWidgetHelpers.setHelp(_viewer.getControl(), RSEUIPlugin.HELPPREFIX + "sysd0000"); //$NON-NLS-1$
|
||||||
|
|
||||||
|
@ -1604,7 +1608,7 @@ public class SystemTableViewPart extends ViewPart
|
||||||
{
|
{
|
||||||
int eventType = event.getEventType();
|
int eventType = event.getEventType();
|
||||||
Object remoteResource = event.getResource();
|
Object remoteResource = event.getResource();
|
||||||
|
String inputAbsoluteNameWithSubSystemId = null;
|
||||||
Vector remoteResourceNames = null;
|
Vector remoteResourceNames = null;
|
||||||
if (remoteResource instanceof Vector)
|
if (remoteResource instanceof Vector)
|
||||||
{
|
{
|
||||||
|
@ -1616,8 +1620,50 @@ public class SystemTableViewPart extends ViewPart
|
||||||
|
|
||||||
|
|
||||||
Object input = _viewer.getInput();
|
Object input = _viewer.getInput();
|
||||||
if (input == child || child instanceof Vector)
|
|
||||||
|
//Simply doing comparason of if two object is equal is not enough
|
||||||
|
//If two different objects, but if their absoluate path (with subsystem id)
|
||||||
|
//are the same, they refer to the same remote object.
|
||||||
|
|
||||||
|
if(input instanceof IAdaptable)
|
||||||
{
|
{
|
||||||
|
ISystemViewElementAdapter adapter =
|
||||||
|
(ISystemViewElementAdapter)
|
||||||
|
((IAdaptable)input).getAdapter(ISystemViewElementAdapter.class);
|
||||||
|
|
||||||
|
if (adapter != null ) {
|
||||||
|
// first need to check subsystems
|
||||||
|
ISubSystem subSystem = adapter.getSubSystem(input);
|
||||||
|
String subSystemId = RSECorePlugin.getTheSystemRegistry().getAbsoluteNameForSubSystem(subSystem);
|
||||||
|
String absolutePath = adapter.getAbsoluteName(input);
|
||||||
|
inputAbsoluteNameWithSubSystemId = subSystemId + ":" + absolutePath; //$NON-NLS-1$
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
String remoteResourceAbsoluteNameWithSubSystemId = null;
|
||||||
|
if(child instanceof IAdaptable)
|
||||||
|
{
|
||||||
|
ISystemViewElementAdapter adapter =
|
||||||
|
(ISystemViewElementAdapter)
|
||||||
|
((IAdaptable)child).getAdapter(ISystemViewElementAdapter.class);
|
||||||
|
|
||||||
|
if (adapter != null ) {
|
||||||
|
// first need to check subsystems
|
||||||
|
ISubSystem subSystem = adapter.getSubSystem(child);
|
||||||
|
String subSystemId = RSECorePlugin.getTheSystemRegistry().getAbsoluteNameForSubSystem(subSystem);
|
||||||
|
remoteResourceAbsoluteNameWithSubSystemId = subSystemId + ":" + event.getOldName(); //$NON-NLS-1$
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean referToSameObject = false;
|
||||||
|
if (inputAbsoluteNameWithSubSystemId != null && inputAbsoluteNameWithSubSystemId.equals(remoteResourceAbsoluteNameWithSubSystemId))
|
||||||
|
{
|
||||||
|
referToSameObject = true;
|
||||||
|
}
|
||||||
|
if (input == child || child instanceof Vector || referToSameObject)
|
||||||
|
{
|
||||||
switch (eventType)
|
switch (eventType)
|
||||||
{
|
{
|
||||||
// --------------------------
|
// --------------------------
|
||||||
|
|
Loading…
Add table
Reference in a new issue