mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-25 18:05:33 +02:00
[340912] inconsistencies with columns in RSE table viewers
This commit is contained in:
parent
bd63b96760
commit
8e5a02f1a5
3 changed files with 84 additions and 21 deletions
|
@ -43,6 +43,7 @@
|
||||||
* David McKnight (IBM) - [260346] RSE view for jobs does not remember resized columns
|
* David McKnight (IBM) - [260346] RSE view for jobs does not remember resized columns
|
||||||
* David McKnight (IBM) - [333702] Remote Systems details view does not maintain column width settings across sessions
|
* David McKnight (IBM) - [333702] Remote Systems details view does not maintain column width settings across sessions
|
||||||
* David McKnight (IBM) - [330398] RSE leaks SWT resources
|
* David McKnight (IBM) - [330398] RSE leaks SWT resources
|
||||||
|
* David McKnight (IBM) - [340912] inconsistencies with columns in RSE table viewers
|
||||||
*******************************************************/
|
*******************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.internal.ui.view;
|
package org.eclipse.rse.internal.ui.view;
|
||||||
|
@ -118,7 +119,6 @@ import org.eclipse.rse.ui.view.ISystemViewElementAdapter;
|
||||||
import org.eclipse.rse.ui.view.SystemTableView;
|
import org.eclipse.rse.ui.view.SystemTableView;
|
||||||
import org.eclipse.rse.ui.view.SystemTableViewProvider;
|
import org.eclipse.rse.ui.view.SystemTableViewProvider;
|
||||||
import org.eclipse.swt.SWT;
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.dnd.Clipboard;
|
|
||||||
import org.eclipse.swt.layout.GridData;
|
import org.eclipse.swt.layout.GridData;
|
||||||
import org.eclipse.swt.widgets.Button;
|
import org.eclipse.swt.widgets.Button;
|
||||||
import org.eclipse.swt.widgets.Combo;
|
import org.eclipse.swt.widgets.Combo;
|
||||||
|
@ -875,21 +875,29 @@ public class SystemTableViewPart extends ViewPart
|
||||||
private Button _removeButton;
|
private Button _removeButton;
|
||||||
private Button _upButton;
|
private Button _upButton;
|
||||||
private Button _downButton;
|
private Button _downButton;
|
||||||
|
|
||||||
|
private boolean _changed = false;
|
||||||
|
|
||||||
|
|
||||||
public SelectColumnsDialog(Shell shell, ISystemViewElementAdapter viewAdapter, ISystemTableViewColumnManager columnManager)
|
public SelectColumnsDialog(Shell shell, ISystemViewElementAdapter viewAdapter, ISystemTableViewColumnManager columnManager, int[] originalOrder)
|
||||||
{
|
{
|
||||||
super(shell, SystemResources.RESID_TABLE_SELECT_COLUMNS_LABEL);
|
super(shell, SystemResources.RESID_TABLE_SELECT_COLUMNS_LABEL);
|
||||||
setToolTipText(SystemResources.RESID_TABLE_SELECT_COLUMNS_TOOLTIP);
|
setToolTipText(SystemResources.RESID_TABLE_SELECT_COLUMNS_TOOLTIP);
|
||||||
|
setInitialOKButtonEnabledState(_changed);
|
||||||
_adapter = viewAdapter;
|
_adapter = viewAdapter;
|
||||||
_columnManager = columnManager;
|
_columnManager = columnManager;
|
||||||
_uniqueDescriptors = viewAdapter.getUniquePropertyDescriptors();
|
_uniqueDescriptors = viewAdapter.getUniquePropertyDescriptors();
|
||||||
IPropertyDescriptor[] initialDisplayedDescriptors = _columnManager.getVisibleDescriptors(_adapter);
|
IPropertyDescriptor[] initialDisplayedDescriptors = _columnManager.getVisibleDescriptors(_adapter);
|
||||||
|
|
||||||
|
IPropertyDescriptor[] sortedDisplayedDescriptors = new IPropertyDescriptor[initialDisplayedDescriptors.length];
|
||||||
|
for (int i = 0; i < initialDisplayedDescriptors.length; i++){
|
||||||
|
int position = originalOrder[i+1];
|
||||||
|
sortedDisplayedDescriptors[i] = initialDisplayedDescriptors[position-1];
|
||||||
|
}
|
||||||
_currentDisplayedDescriptors = new ArrayList(initialDisplayedDescriptors.length);
|
_currentDisplayedDescriptors = new ArrayList(initialDisplayedDescriptors.length);
|
||||||
for (int i = 0; i < initialDisplayedDescriptors.length;i++)
|
for (int i = 0; i < sortedDisplayedDescriptors.length;i++)
|
||||||
{
|
{
|
||||||
if (!_currentDisplayedDescriptors.contains(initialDisplayedDescriptors[i]))
|
_currentDisplayedDescriptors.add(sortedDisplayedDescriptors[i]);
|
||||||
_currentDisplayedDescriptors.add(initialDisplayedDescriptors[i]);
|
|
||||||
}
|
}
|
||||||
_availableDescriptors = new ArrayList(_uniqueDescriptors.length);
|
_availableDescriptors = new ArrayList(_uniqueDescriptors.length);
|
||||||
for (int i = 0; i < _uniqueDescriptors.length;i++)
|
for (int i = 0; i < _uniqueDescriptors.length;i++)
|
||||||
|
@ -909,23 +917,27 @@ public class SystemTableViewPart extends ViewPart
|
||||||
{
|
{
|
||||||
int[] toAdd = _availableList.getSelectionIndices();
|
int[] toAdd = _availableList.getSelectionIndices();
|
||||||
addToDisplay(toAdd);
|
addToDisplay(toAdd);
|
||||||
|
_changed = true;
|
||||||
}
|
}
|
||||||
else if (source == _removeButton)
|
else if (source == _removeButton)
|
||||||
{
|
{
|
||||||
int[] toAdd = _displayedList.getSelectionIndices();
|
int[] toAdd = _displayedList.getSelectionIndices();
|
||||||
removeFromDisplay(toAdd);
|
removeFromDisplay(toAdd);
|
||||||
|
_changed = true;
|
||||||
}
|
}
|
||||||
else if (source == _upButton)
|
else if (source == _upButton)
|
||||||
{
|
{
|
||||||
int index = _displayedList.getSelectionIndex();
|
int index = _displayedList.getSelectionIndex();
|
||||||
moveUp(index);
|
moveUp(index);
|
||||||
_displayedList.select(index - 1);
|
_displayedList.select(index - 1);
|
||||||
|
_changed = true;
|
||||||
}
|
}
|
||||||
else if (source == _downButton)
|
else if (source == _downButton)
|
||||||
{
|
{
|
||||||
int index = _displayedList.getSelectionIndex();
|
int index = _displayedList.getSelectionIndex();
|
||||||
moveDown(index);
|
moveDown(index);
|
||||||
_displayedList.select(index + 1);
|
_displayedList.select(index + 1);
|
||||||
|
_changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// update button enable states
|
// update button enable states
|
||||||
|
@ -979,7 +991,7 @@ public class SystemTableViewPart extends ViewPart
|
||||||
_removeButton.setEnabled(enableRemove);
|
_removeButton.setEnabled(enableRemove);
|
||||||
_upButton.setEnabled(enableUp);
|
_upButton.setEnabled(enableUp);
|
||||||
_downButton.setEnabled(enableDown);
|
_downButton.setEnabled(enableDown);
|
||||||
|
enableOkButton(_changed);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void moveUp(int index)
|
private void moveUp(int index)
|
||||||
|
@ -1151,11 +1163,23 @@ public class SystemTableViewPart extends ViewPart
|
||||||
{
|
{
|
||||||
ISystemTableViewColumnManager mgr = _viewer.getColumnManager();
|
ISystemTableViewColumnManager mgr = _viewer.getColumnManager();
|
||||||
ISystemViewElementAdapter adapter = _viewer.getAdapterForContents();
|
ISystemViewElementAdapter adapter = _viewer.getAdapterForContents();
|
||||||
SelectColumnsDialog dlg = new SelectColumnsDialog(getShell(), adapter, mgr);
|
Table table = _viewer.getTable();
|
||||||
|
int[] originalOrder = table.getColumnOrder();
|
||||||
|
SelectColumnsDialog dlg = new SelectColumnsDialog(getShell(), adapter, mgr, originalOrder);
|
||||||
if (dlg.open() == Window.OK)
|
if (dlg.open() == Window.OK)
|
||||||
{
|
{
|
||||||
mgr.setCustomDescriptors(adapter, dlg.getDisplayedColumns());
|
IPropertyDescriptor[] newDescriptors = dlg.getDisplayedColumns();
|
||||||
|
// reset column order
|
||||||
|
int n = newDescriptors.length + 1;
|
||||||
|
int[] newOrder = new int[n];
|
||||||
|
for (int i = 0; i < n; i++){
|
||||||
|
newOrder[i] = i;
|
||||||
|
}
|
||||||
|
|
||||||
|
mgr.setCustomDescriptors(adapter, newDescriptors);
|
||||||
_viewer.computeLayout(true);
|
_viewer.computeLayout(true);
|
||||||
|
table.setColumnOrder(newOrder);
|
||||||
|
|
||||||
_viewer.refresh();
|
_viewer.refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/********************************************************************************
|
/********************************************************************************
|
||||||
* Copyright (c) 2002, 2009 IBM Corporation and others. All rights reserved.
|
* Copyright (c) 2002, 2011 IBM Corporation and others. All rights reserved.
|
||||||
* This program and the accompanying materials are made available under the terms
|
* This program and the accompanying materials are made available under the terms
|
||||||
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
* of the Eclipse Public License v1.0 which accompanies this distribution, and is
|
||||||
* available at http://www.eclipse.org/legal/epl-v10.html
|
* available at http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
@ -22,6 +22,7 @@
|
||||||
* David McKnight (IBM) - [225506] [api][breaking] RSE UI leaks non-API types
|
* David McKnight (IBM) - [225506] [api][breaking] RSE UI leaks non-API types
|
||||||
* Zhou Renjian (Kortide) - [282239] Monitor view does not update icon according to connection status
|
* Zhou Renjian (Kortide) - [282239] Monitor view does not update icon according to connection status
|
||||||
* David McKnight (IBM) - [294663] bad cast in monitor view part refresh action
|
* David McKnight (IBM) - [294663] bad cast in monitor view part refresh action
|
||||||
|
* David McKnight (IBM) - [340912] inconsistencies with columns in RSE table viewers
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.internal.ui.view.monitor;
|
package org.eclipse.rse.internal.ui.view.monitor;
|
||||||
|
@ -76,6 +77,7 @@ import org.eclipse.swt.widgets.Event;
|
||||||
import org.eclipse.swt.widgets.Label;
|
import org.eclipse.swt.widgets.Label;
|
||||||
import org.eclipse.swt.widgets.List;
|
import org.eclipse.swt.widgets.List;
|
||||||
import org.eclipse.swt.widgets.Shell;
|
import org.eclipse.swt.widgets.Shell;
|
||||||
|
import org.eclipse.swt.widgets.Table;
|
||||||
import org.eclipse.swt.widgets.Text;
|
import org.eclipse.swt.widgets.Text;
|
||||||
import org.eclipse.swt.widgets.Widget;
|
import org.eclipse.swt.widgets.Widget;
|
||||||
import org.eclipse.ui.IActionBars;
|
import org.eclipse.ui.IActionBars;
|
||||||
|
@ -327,20 +329,27 @@ class SubSetAction extends BrowseAction
|
||||||
private Button _upButton;
|
private Button _upButton;
|
||||||
private Button _downButton;
|
private Button _downButton;
|
||||||
|
|
||||||
|
private boolean _changed = false;
|
||||||
public SelectColumnsDialog(Shell shell, ISystemViewElementAdapter viewAdapter, ISystemTableViewColumnManager columnManager)
|
|
||||||
|
public SelectColumnsDialog(Shell shell, ISystemViewElementAdapter viewAdapter, ISystemTableViewColumnManager columnManager, int[] originalOrder)
|
||||||
{
|
{
|
||||||
super(shell, SystemResources.RESID_TABLE_SELECT_COLUMNS_LABEL);
|
super(shell, SystemResources.RESID_TABLE_SELECT_COLUMNS_LABEL);
|
||||||
setToolTipText(SystemResources.RESID_TABLE_SELECT_COLUMNS_TOOLTIP);
|
setToolTipText(SystemResources.RESID_TABLE_SELECT_COLUMNS_TOOLTIP);
|
||||||
|
setInitialOKButtonEnabledState(_changed);
|
||||||
_adapter = viewAdapter;
|
_adapter = viewAdapter;
|
||||||
_columnManager = columnManager;
|
_columnManager = columnManager;
|
||||||
_uniqueDescriptors = viewAdapter.getUniquePropertyDescriptors();
|
_uniqueDescriptors = viewAdapter.getUniquePropertyDescriptors();
|
||||||
IPropertyDescriptor[] initialDisplayedDescriptors = _columnManager.getVisibleDescriptors(_adapter);
|
IPropertyDescriptor[] initialDisplayedDescriptors = _columnManager.getVisibleDescriptors(_adapter);
|
||||||
|
|
||||||
|
IPropertyDescriptor[] sortedDisplayedDescriptors = new IPropertyDescriptor[initialDisplayedDescriptors.length];
|
||||||
|
for (int i = 0; i < initialDisplayedDescriptors.length; i++){
|
||||||
|
int position = originalOrder[i+1];
|
||||||
|
sortedDisplayedDescriptors[i] = initialDisplayedDescriptors[position-1];
|
||||||
|
}
|
||||||
_currentDisplayedDescriptors = new ArrayList(initialDisplayedDescriptors.length);
|
_currentDisplayedDescriptors = new ArrayList(initialDisplayedDescriptors.length);
|
||||||
for (int i = 0; i < initialDisplayedDescriptors.length;i++)
|
for (int i = 0; i < sortedDisplayedDescriptors.length;i++)
|
||||||
{
|
{
|
||||||
if (!_currentDisplayedDescriptors.contains(initialDisplayedDescriptors[i]))
|
_currentDisplayedDescriptors.add(sortedDisplayedDescriptors[i]);
|
||||||
_currentDisplayedDescriptors.add(initialDisplayedDescriptors[i]);
|
|
||||||
}
|
}
|
||||||
_availableDescriptors = new ArrayList(_uniqueDescriptors.length);
|
_availableDescriptors = new ArrayList(_uniqueDescriptors.length);
|
||||||
for (int i = 0; i < _uniqueDescriptors.length;i++)
|
for (int i = 0; i < _uniqueDescriptors.length;i++)
|
||||||
|
@ -353,30 +362,36 @@ class SubSetAction extends BrowseAction
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void handleEvent(Event e)
|
public void handleEvent(Event e)
|
||||||
{
|
{
|
||||||
Widget source = e.widget;
|
Widget source = e.widget;
|
||||||
if (source == _addButton)
|
if (source == _addButton)
|
||||||
{
|
{
|
||||||
int[] toAdd = _availableList.getSelectionIndices();
|
int[] toAdd = _availableList.getSelectionIndices();
|
||||||
addToDisplay(toAdd);
|
addToDisplay(toAdd);
|
||||||
|
_changed = true;
|
||||||
}
|
}
|
||||||
else if (source == _removeButton)
|
else if (source == _removeButton)
|
||||||
{
|
{
|
||||||
int[] toAdd = _displayedList.getSelectionIndices();
|
int[] toAdd = _displayedList.getSelectionIndices();
|
||||||
removeFromDisplay(toAdd);
|
removeFromDisplay(toAdd);
|
||||||
|
_changed = true;
|
||||||
}
|
}
|
||||||
else if (source == _upButton)
|
else if (source == _upButton)
|
||||||
{
|
{
|
||||||
int index = _displayedList.getSelectionIndex();
|
int index = _displayedList.getSelectionIndex();
|
||||||
moveUp(index);
|
moveUp(index);
|
||||||
_displayedList.select(index - 1);
|
_displayedList.select(index - 1);
|
||||||
|
_changed = true;
|
||||||
}
|
}
|
||||||
else if (source == _downButton)
|
else if (source == _downButton)
|
||||||
{
|
{
|
||||||
int index = _displayedList.getSelectionIndex();
|
int index = _displayedList.getSelectionIndex();
|
||||||
moveDown(index);
|
moveDown(index);
|
||||||
_displayedList.select(index + 1);
|
_displayedList.select(index + 1);
|
||||||
|
_changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// update button enable states
|
// update button enable states
|
||||||
|
@ -430,6 +445,7 @@ class SubSetAction extends BrowseAction
|
||||||
_removeButton.setEnabled(enableRemove);
|
_removeButton.setEnabled(enableRemove);
|
||||||
_upButton.setEnabled(enableUp);
|
_upButton.setEnabled(enableUp);
|
||||||
_downButton.setEnabled(enableDown);
|
_downButton.setEnabled(enableDown);
|
||||||
|
enableOkButton(_changed);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -603,13 +619,25 @@ class SubSetAction extends BrowseAction
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
SystemTableView viewer = getViewer();
|
SystemTableView viewer = getViewer();
|
||||||
|
Table table = viewer.getTable();
|
||||||
|
int[] originalOrder = table.getColumnOrder();
|
||||||
ISystemTableViewColumnManager mgr = viewer.getColumnManager();
|
ISystemTableViewColumnManager mgr = viewer.getColumnManager();
|
||||||
ISystemViewElementAdapter adapter = viewer.getAdapterForContents();
|
ISystemViewElementAdapter adapter = viewer.getAdapterForContents();
|
||||||
SelectColumnsDialog dlg = new SelectColumnsDialog(getShell(), adapter, mgr);
|
SelectColumnsDialog dlg = new SelectColumnsDialog(getShell(), adapter, mgr, originalOrder);
|
||||||
if (dlg.open() == Window.OK)
|
if (dlg.open() == Window.OK)
|
||||||
{
|
{
|
||||||
|
IPropertyDescriptor[] newDescriptors = dlg.getDisplayedColumns();
|
||||||
|
|
||||||
|
// reset column order
|
||||||
|
int n = newDescriptors.length + 1;
|
||||||
|
int[] newOrder = new int[n];
|
||||||
|
for (int i = 0; i < n; i++){
|
||||||
|
newOrder[i] = i;
|
||||||
|
}
|
||||||
|
|
||||||
mgr.setCustomDescriptors(adapter, dlg.getDisplayedColumns());
|
mgr.setCustomDescriptors(adapter, dlg.getDisplayedColumns());
|
||||||
viewer.computeLayout(true);
|
viewer.computeLayout(true);
|
||||||
|
table.setColumnOrder(newOrder);
|
||||||
viewer.refresh();
|
viewer.refresh();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
* David McKnight (IBM) - [329170] Show in table does not work after showing empty folder in table
|
* David McKnight (IBM) - [329170] Show in table does not work after showing empty folder in table
|
||||||
* David McKnight (IBM) - [308783] Value in Properties view remains "Pending..."
|
* David McKnight (IBM) - [308783] Value in Properties view remains "Pending..."
|
||||||
* David McKnight (IBM) - [215814] [performance] Duplicate Queries between Table and Remote Systems View
|
* David McKnight (IBM) - [215814] [performance] Duplicate Queries between Table and Remote Systems View
|
||||||
|
* David McKnight (IBM) - [340912] inconsistencies with columns in RSE table viewers
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.ui.view;
|
package org.eclipse.rse.ui.view;
|
||||||
|
@ -383,7 +384,7 @@ public class SystemTableView
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @since 3.0 Moved SystemTableViewProvider from internal to API
|
* @since 3.0 Moved SystemTableViewProvider from internal to API
|
||||||
* @return
|
* @return returns the table view provider
|
||||||
*/
|
*/
|
||||||
protected SystemTableViewProvider getProvider()
|
protected SystemTableViewProvider getProvider()
|
||||||
{
|
{
|
||||||
|
@ -888,10 +889,20 @@ public class SystemTableView
|
||||||
Table table = getTable();
|
Table table = getTable();
|
||||||
if (table != null && !table.isDisposed())
|
if (table != null && !table.isDisposed())
|
||||||
{
|
{
|
||||||
|
int[] colOrder = table.getColumnOrder();
|
||||||
TableColumn[] columns = table.getColumns();
|
TableColumn[] columns = table.getColumns();
|
||||||
for (int i = 0; i < columns.length && i < widths.length; i++)
|
for (int i = 0; i < columns.length; i++)
|
||||||
{
|
{
|
||||||
columns[i].setWidth(widths[i]);
|
TableColumn column = columns[i];
|
||||||
|
int position = colOrder[i];
|
||||||
|
if (position < widths.length){
|
||||||
|
column.setWidth(widths[position]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (column.getWidth() == 0){ // don't hide this column
|
||||||
|
column.setWidth(100);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue