mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-22 00:15:25 +02:00
[260346] RSE view for jobs does not remember resized columns
-added memento support
This commit is contained in:
parent
61943b4b05
commit
9bb553065e
2 changed files with 93 additions and 40 deletions
|
@ -40,6 +40,7 @@
|
||||||
* David McKnight (IBM) - [233578] Promptable Filter Displayed 3 times when clicking cancel
|
* David McKnight (IBM) - [233578] Promptable Filter Displayed 3 times when clicking cancel
|
||||||
* David Dykstal (IBM) - [233678] title string is constructed by concatenation, should be substituted
|
* David Dykstal (IBM) - [233678] title string is constructed by concatenation, should be substituted
|
||||||
* Kevin Doyle (IBM) - [242431] Register a new unique context menu id, so contributions can be made to all our views
|
* Kevin Doyle (IBM) - [242431] Register a new unique context menu id, so contributions can be made to all our views
|
||||||
|
* David McKnight (IBM) - [260346] RSE view for jobs does not remember resized columns
|
||||||
*******************************************************/
|
*******************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.internal.ui.view;
|
package org.eclipse.rse.internal.ui.view;
|
||||||
|
@ -47,7 +48,9 @@ package org.eclipse.rse.internal.ui.view;
|
||||||
import java.net.MalformedURLException;
|
import java.net.MalformedURLException;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.StringTokenizer;
|
import java.util.HashMap;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import org.eclipse.core.runtime.IAdaptable;
|
import org.eclipse.core.runtime.IAdaptable;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
|
@ -125,7 +128,6 @@ 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.Table;
|
||||||
import org.eclipse.swt.widgets.TableColumn;
|
|
||||||
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;
|
||||||
|
@ -682,7 +684,7 @@ public class SystemTableViewPart extends ViewPart
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
IStatus wstatus = RSECorePlugin.waitForInitCompletion();
|
IStatus wstatus = RSECorePlugin.waitForInitCompletion();
|
||||||
if (!wstatus.isOK()){
|
if (!wstatus.isOK() && wstatus.getSeverity() == IStatus.ERROR){
|
||||||
return wstatus;
|
return wstatus;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -692,6 +694,41 @@ public class SystemTableViewPart extends ViewPart
|
||||||
|
|
||||||
|
|
||||||
final IMemento memento = _rmemento;
|
final IMemento memento = _rmemento;
|
||||||
|
|
||||||
|
// set the cached column widths (for later use)
|
||||||
|
String columnWidths = memento.getString(TAG_TABLE_VIEW_COLUMN_WIDTHS_ID);
|
||||||
|
if (columnWidths != null)
|
||||||
|
{
|
||||||
|
if (columnWidths.contains(";")){ //$NON-NLS-1$
|
||||||
|
// matches new format for column width memento
|
||||||
|
// new code - as of RSE 3.1
|
||||||
|
HashMap cachedColumnWidths = new HashMap();
|
||||||
|
|
||||||
|
// parse out set of columns
|
||||||
|
String[] columnSets = columnWidths.split(";"); //$NON-NLS-1$
|
||||||
|
for (int i = 0; i < columnSets.length; i++){
|
||||||
|
String columnSet = columnSets[i];
|
||||||
|
|
||||||
|
// parse out columns for set
|
||||||
|
String[] pair = columnSet.split("="); //$NON-NLS-1$
|
||||||
|
String key = pair[0];
|
||||||
|
|
||||||
|
// parse out widths
|
||||||
|
String widthArray = pair[1];
|
||||||
|
String[] widthStrs = widthArray.split(","); //$NON-NLS-1$
|
||||||
|
|
||||||
|
int[] widths = new int[widthStrs.length];
|
||||||
|
for (int w = 0; w < widths.length; w++){
|
||||||
|
widths[w] = Integer.parseInt(widthStrs[w]);
|
||||||
|
}
|
||||||
|
|
||||||
|
cachedColumnWidths.put(key, widths);
|
||||||
|
_viewer.setCachedColumnWidths(cachedColumnWidths);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
String profileId = memento.getString(TAG_TABLE_VIEW_PROFILE_ID);
|
String profileId = memento.getString(TAG_TABLE_VIEW_PROFILE_ID);
|
||||||
String connectionId = memento.getString(TAG_TABLE_VIEW_CONNECTION_ID);
|
String connectionId = memento.getString(TAG_TABLE_VIEW_CONNECTION_ID);
|
||||||
String subsystemId = memento.getString(TAG_TABLE_VIEW_SUBSYSTEM_ID);
|
String subsystemId = memento.getString(TAG_TABLE_VIEW_SUBSYSTEM_ID);
|
||||||
|
@ -802,22 +839,6 @@ public class SystemTableViewPart extends ViewPart
|
||||||
_mementoInput = (IAdaptable) input;
|
_mementoInput = (IAdaptable) input;
|
||||||
if (_mementoInput != null && _viewer != null)
|
if (_mementoInput != null && _viewer != null)
|
||||||
{
|
{
|
||||||
String columnWidths = memento.getString(TAG_TABLE_VIEW_COLUMN_WIDTHS_ID);
|
|
||||||
if (columnWidths != null)
|
|
||||||
{
|
|
||||||
StringTokenizer tok = new StringTokenizer(columnWidths, ","); //$NON-NLS-1$
|
|
||||||
int[] colWidths = new int[tok.countTokens()];
|
|
||||||
int t = 0;
|
|
||||||
while (tok.hasMoreTokens())
|
|
||||||
{
|
|
||||||
String columnStr = tok.nextToken();
|
|
||||||
colWidths[t] = Integer.parseInt(columnStr);
|
|
||||||
t++;
|
|
||||||
}
|
|
||||||
|
|
||||||
_viewer.setLastColumnWidths(colWidths);
|
|
||||||
}
|
|
||||||
|
|
||||||
// set input needs to be run on the main thread
|
// set input needs to be run on the main thread
|
||||||
Display.getDefault().asyncExec(new Runnable()
|
Display.getDefault().asyncExec(new Runnable()
|
||||||
{
|
{
|
||||||
|
@ -1873,26 +1894,31 @@ public class SystemTableViewPart extends ViewPart
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Table table = _viewer.getTable();
|
|
||||||
if (table != null && !table.isDisposed())
|
|
||||||
{
|
// new code - as of RSE 3.1
|
||||||
String columnWidths = new String();
|
_viewer.inputChanged(input, input); // make sure the latest widths are stored
|
||||||
TableColumn[] columns = table.getColumns();
|
Map cachedColumnWidths = _viewer.getCachedColumnWidths();
|
||||||
for (int i = 0; i < columns.length; i++)
|
StringBuffer columnWidths = new StringBuffer();
|
||||||
{
|
Iterator keyIter = cachedColumnWidths.keySet().iterator();
|
||||||
TableColumn column = columns[i];
|
while (keyIter.hasNext()){
|
||||||
int width = column.getWidth();
|
String key = (String)keyIter.next();
|
||||||
if (i == columns.length - 1)
|
int[] widths = (int[])cachedColumnWidths.get(key);
|
||||||
{
|
|
||||||
columnWidths += width;
|
columnWidths.append(key);
|
||||||
}
|
columnWidths.append('=');
|
||||||
else
|
|
||||||
{
|
for (int w = 0; w < widths.length; w++){
|
||||||
columnWidths += width + ","; //$NON-NLS-1$
|
columnWidths.append(widths[w]);
|
||||||
|
if (w != widths.length - 1){
|
||||||
|
columnWidths.append(',');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
memento.putString(TAG_TABLE_VIEW_COLUMN_WIDTHS_ID, columnWidths);
|
|
||||||
|
// always append this, even with last item
|
||||||
|
columnWidths.append(';');
|
||||||
}
|
}
|
||||||
|
memento.putString(TAG_TABLE_VIEW_COLUMN_WIDTHS_ID, columnWidths.toString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -309,7 +309,7 @@ public class SystemTableView
|
||||||
private int mouseButtonPressed = LEFT_BUTTON;
|
private int mouseButtonPressed = LEFT_BUTTON;
|
||||||
|
|
||||||
// for bug 260346 - to maintain list of cached column widths
|
// for bug 260346 - to maintain list of cached column widths
|
||||||
private HashMap _cachedColumnWidths;
|
private Map _cachedColumnWidths;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -444,8 +444,10 @@ public class SystemTableView
|
||||||
if (lastWidths.length > 0){
|
if (lastWidths.length > 0){
|
||||||
ISystemViewElementAdapter contentsAdapter = getAdapterForContents();
|
ISystemViewElementAdapter contentsAdapter = getAdapterForContents();
|
||||||
|
|
||||||
|
String adapterName = contentsAdapter.getClass().getName();
|
||||||
|
|
||||||
// associate the last contents adapter with the last widths
|
// associate the last contents adapter with the last widths
|
||||||
_cachedColumnWidths.put(contentsAdapter, lastWidths);
|
_cachedColumnWidths.put(adapterName, lastWidths);
|
||||||
}
|
}
|
||||||
|
|
||||||
_objectInput = newObject;
|
_objectInput = newObject;
|
||||||
|
@ -522,7 +524,7 @@ public class SystemTableView
|
||||||
/**
|
/**
|
||||||
* @since 3.0 replaced SystemTableViewColumnManager by
|
* @since 3.0 replaced SystemTableViewColumnManager by
|
||||||
* ISystemTableViewColumnManager
|
* ISystemTableViewColumnManager
|
||||||
* @return
|
* @return the column manager
|
||||||
*/
|
*/
|
||||||
public ISystemTableViewColumnManager getColumnManager()
|
public ISystemTableViewColumnManager getColumnManager()
|
||||||
{
|
{
|
||||||
|
@ -779,7 +781,9 @@ public class SystemTableView
|
||||||
int[] lastWidths = getLastColumnWidths();
|
int[] lastWidths = getLastColumnWidths();
|
||||||
if (numColumns > 1)
|
if (numColumns > 1)
|
||||||
{
|
{
|
||||||
int[] cachedWidths = (int[])_cachedColumnWidths.get(getAdapterForContents());
|
ISystemViewElementAdapter adapter = getAdapterForContents();
|
||||||
|
String adapterName = adapter.getClass().getName();
|
||||||
|
int[] cachedWidths = (int[])_cachedColumnWidths.get(adapterName);
|
||||||
|
|
||||||
// if there are already cached widths, use them
|
// if there are already cached widths, use them
|
||||||
if (cachedWidths != null){
|
if (cachedWidths != null){
|
||||||
|
@ -2111,5 +2115,28 @@ public class SystemTableView
|
||||||
_messageLine.clearMessage();
|
_messageLine.clearMessage();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the column widths associated with this view.
|
||||||
|
*
|
||||||
|
* @return the map of column widths associated with this view
|
||||||
|
*
|
||||||
|
* @since 3.1
|
||||||
|
*/
|
||||||
|
public Map getCachedColumnWidths()
|
||||||
|
{
|
||||||
|
return _cachedColumnWidths;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the map of column widths associated with this view
|
||||||
|
*
|
||||||
|
* @param cachedColumnWidths the column widths map
|
||||||
|
*
|
||||||
|
* @since 3.1
|
||||||
|
*/
|
||||||
|
public void setCachedColumnWidths(Map cachedColumnWidths)
|
||||||
|
{
|
||||||
|
_cachedColumnWidths = cachedColumnWidths;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
Loading…
Add table
Reference in a new issue