1
0
Fork 0
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:
David McKnight 2009-01-13 18:27:06 +00:00
parent 61943b4b05
commit 9bb553065e
2 changed files with 93 additions and 40 deletions

View file

@ -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());
} }
} }
} }

View file

@ -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;
}
} }