diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java index c50e3f5b14a..e0df32632bf 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/ExecutablesManager.java @@ -15,6 +15,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; +import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.PlatformObject; @@ -38,7 +39,8 @@ public class ExecutablesManager extends PlatformObject { private List executableProviders = Collections.synchronizedList(new ArrayList()); private List executableImporters = Collections.synchronizedList(new ArrayList()); private boolean refreshNeeded = true; - + private boolean tempDisableRefresh = false; + private Job refreshJob = new Job("Get Executables") { @Override @@ -95,6 +97,10 @@ public class ExecutablesManager extends PlatformObject { } public IStatus refreshExecutables(IProgressMonitor monitor) { + if (tempDisableRefresh) { + return Status.OK_STATUS; + } + ArrayList oldList = executables; executables = new ArrayList(); synchronized (executableProviders) { @@ -139,13 +145,24 @@ public class ExecutablesManager extends PlatformObject { } public void importExecutables(String[] fileNames, IProgressMonitor monitor) { - synchronized (executableImporters) { - monitor.beginTask("Import Executables", executableImporters.size()); - for (IExecutableImporter importer : executableImporters) { - importer.importExecutables(fileNames, new SubProgressMonitor(monitor, 1)); + try { + synchronized (executableImporters) { + tempDisableRefresh = true; + + monitor.beginTask("Import Executables", executableImporters.size()); + for (IExecutableImporter importer : executableImporters) { + importer.importExecutables(fileNames, new SubProgressMonitor(monitor, 1)); + if (monitor.isCanceled()) { + break; + } + } } - monitor.done(); + } finally { + tempDisableRefresh = false; } + + refreshExecutables(monitor); + monitor.done(); } public ISourceFileRemapping[] getSourceFileRemappings() { @@ -168,5 +185,13 @@ public class ExecutablesManager extends PlatformObject { public boolean refreshNeeded() { return refreshNeeded; } + + public boolean executableExists(IPath exePath) { + for (Executable executable : executables) { + if (executable.getPath().equals(exePath)) + return true; + } + return false; + } } \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/StandardExecutableImporter.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/StandardExecutableImporter.java index 0b9cbc98b19..be2b8fda4ad 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/StandardExecutableImporter.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/executables/StandardExecutableImporter.java @@ -60,7 +60,7 @@ public class StandardExecutableImporter implements IExecutableImporter { path = new File(path).getCanonicalPath(); } catch (IOException e1) { } - if (!executableExists(path)) { + if (!ExecutablesManager.getExecutablesManager().executableExists(Path.fromOSString(path))) { if (!checkProject) { // See if the default project exists String defaultProjectName = "Executables"; @@ -92,7 +92,7 @@ public class StandardExecutableImporter implements IExecutableImporter { store = store.getChild(newProjectHandle.getName()); for (String deleteName : ignoreList) { IFileStore projFile = store.getChild(deleteName); - projFile.delete(EFS.NONE, monitor); + projFile.delete(EFS.NONE, null); } exeProject = CCorePlugin.getDefault().createCProject(description, newProjectHandle, null, DEBUG_PROJECT_ID); } catch (OperationCanceledException e) { @@ -107,19 +107,13 @@ public class StandardExecutableImporter implements IExecutableImporter { importExecutable(exeProject, path); } monitor.worked(1); + if (monitor.isCanceled()) { + break; + } } monitor.done(); } - private boolean executableExists(String path) { - Executable[] executables = ExecutablesManager.getExecutablesManager().getExecutables(); - for (Executable executable : executables) { - if (executable.getPath().toOSString().equals(path)) - return true; - } - return false; - } - private void importExecutable(IProject exeProject, String path) { IPath location = Path.fromOSString(path); diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/BaseViewer.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/BaseViewer.java index 69df1bc481a..14ffe305506 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/BaseViewer.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/BaseViewer.java @@ -11,12 +11,14 @@ package org.eclipse.cdt.debug.internal.ui.views.executables; +import org.eclipse.core.runtime.Preferences; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.ViewerComparator; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Tree; import org.eclipse.swt.widgets.TreeColumn; /** @@ -32,7 +34,7 @@ abstract class BaseViewer extends TreeViewer { protected TreeColumn typeColumn; private static final int NUM_COLUMNS = 7; - int column_order[] = new int[NUM_COLUMNS]; + int column_sort_order[] = new int[NUM_COLUMNS]; private ExecutablesView executablesView; @@ -45,12 +47,10 @@ abstract class BaseViewer extends TreeViewer { } public void widgetSelected(SelectionEvent e) { - column_order[selector] *= -1; - ViewerComparator comparator = getViewerComparator(selector); - setComparator(comparator); - executablesView.getMemento().putInteger(ExecutablesView.P_ORDER_VALUE_SF, column_order[selector]); - executablesView.getMemento().putInteger(ExecutablesView.P_ORDER_TYPE_SF, selector); - setColumnSorting((TreeColumn) e.getSource(), column_order[selector]); + setComparator(getViewerComparator(selector)); + getTree().setSortColumn((TreeColumn) e.getSource()); + getTree().setSortDirection(column_sort_order[selector] == ExecutablesView.ASCENDING ? SWT.UP : SWT.DOWN); + column_sort_order[selector] *= -1; } } @@ -58,6 +58,11 @@ abstract class BaseViewer extends TreeViewer { public BaseViewer(ExecutablesView view, Composite parent, int style) { super(parent, style); executablesView = view; + + // default all columns sort order to ascending + for (int i=0; i 0) { + visibleColumns += ",1"; //$NON-NLS-1$ + } else { + visibleColumns += ",0"; //$NON-NLS-1$ + } + } + // trim the leading comma + visibleColumns = visibleColumns.substring(1); + preferences.setValue(getVisibleColumnsKey(), visibleColumns); } + + protected void restoreColumnSettings(Preferences preferences) { + Tree tree = getTree(); + // restore the column order + String columnOrder = preferences.getString(getColumnOrderKey()); + if (columnOrder.length() > 0) { + String[] columns = columnOrder.split(","); //$NON-NLS-1$ + int[] columnNumbers = new int[columns.length]; + for (int i=0; i 0) { - String[] visibleColumns = memento.getString(P_VISIBLE_COLUMNS).split(","); //$NON-NLS-1$ - setVisibleColumns(visibleColumns); - } else { - setVisibleColumns(defaultVisibleColumns.split(",")); //$NON-NLS-1$ - } + executablesViewer.packColumns(); sourceFilesViewer.packColumns(); PlatformUI.getWorkbench().getHelpSystem().setHelp(container, EXECUTABLES_VIEW_CONTEXT); @@ -296,14 +284,6 @@ public class ExecutablesView extends ViewPart { for (int i = 0; i < columnNames.length; i++) { makeColumnVisible(visibleNames.contains(columnNames[i]), allColumns[i]); } - - StringBuffer visibleColumns = new StringBuffer(); - for (int i = 0; i < ids.length; i++) { - if (i > 0) - visibleColumns.append(","); //$NON-NLS-1$ - visibleColumns.append(ids[i]); - } - memento.putString(P_VISIBLE_COLUMNS, visibleColumns.toString()); } private void makeColumnVisible(boolean visible, TreeColumn column) { @@ -423,52 +403,22 @@ public class ExecutablesView extends ViewPart { else this.memento = memento; super.init(site, memento); - readSettings(); } private Preferences getViewPreferences() { return CDebugUIPlugin.getDefault().getPluginPreferences(); } - private void initializeMemento() { - memento.putInteger(P_ORDER_VALUE_EXE, DESCENDING); - memento.putInteger(P_ORDER_TYPE_EXE, NAME); - memento.putInteger(P_ORDER_VALUE_SF, DESCENDING); - memento.putInteger(P_ORDER_TYPE_SF, NAME); - memento.putString(P_VISIBLE_COLUMNS, defaultVisibleColumns); - } - private void readSettings() { - Preferences p = getViewPreferences(); - if (p == null) { - initializeMemento(); - return; - } - try { - int order = p.getInt(P_ORDER_VALUE_EXE); - memento.putInteger(P_ORDER_VALUE_EXE, order == 0 ? DESCENDING : order); - memento.putInteger(P_ORDER_TYPE_EXE, p.getInt(P_ORDER_TYPE_EXE)); - order = p.getInt(P_ORDER_VALUE_SF); - memento.putInteger(P_ORDER_VALUE_SF, order == 0 ? DESCENDING : order); - memento.putInteger(P_ORDER_TYPE_SF, p.getInt(P_ORDER_TYPE_SF)); - memento.putString(P_VISIBLE_COLUMNS, p.getString(P_VISIBLE_COLUMNS)); - } catch (NumberFormatException e) { - memento.putInteger(P_ORDER_TYPE_EXE, NAME); - memento.putInteger(P_ORDER_VALUE_EXE, DESCENDING); - memento.putInteger(P_ORDER_TYPE_SF, NAME); - memento.putInteger(P_ORDER_VALUE_SF, DESCENDING); - } + Preferences prefs = getViewPreferences(); + getExecutablesViewer().restoreColumnSettings(prefs); + getSourceFilesViewer().restoreColumnSettings(prefs); } private void writeSettings() { - Preferences preferences = getViewPreferences(); - int order = memento.getInteger(P_ORDER_VALUE_EXE).intValue(); - preferences.setValue(P_ORDER_VALUE_EXE, order == 0 ? DESCENDING : order); - preferences.setValue(P_ORDER_TYPE_EXE, memento.getInteger(P_ORDER_TYPE_EXE).intValue()); - order = memento.getInteger(P_ORDER_VALUE_SF).intValue(); - preferences.setValue(P_ORDER_VALUE_SF, order == 0 ? DESCENDING : order); - preferences.setValue(P_ORDER_TYPE_SF, memento.getInteger(P_ORDER_TYPE_SF).intValue()); - preferences.setValue(P_VISIBLE_COLUMNS, memento.getString(P_VISIBLE_COLUMNS)); + Preferences prefs = getViewPreferences(); + getExecutablesViewer().saveColumnSettings(prefs); + getSourceFilesViewer().saveColumnSettings(prefs); } @Override @@ -493,8 +443,4 @@ public class ExecutablesView extends ViewPart { super.dispose(); } - public IMemento getMemento() { - return memento; - } - } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesViewer.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesViewer.java index 80e600c167d..7928c201ccb 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesViewer.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/ExecutablesViewer.java @@ -40,6 +40,12 @@ import org.eclipse.ui.progress.UIJob; */ public class ExecutablesViewer extends BaseViewer implements IExecutablesChangeListener { + private static final String P_COLUMN_ORDER_KEY_EXE = "columnOrderKeyEXE"; //$NON-NLS-1$ + private static final String P_SORTED_COLUMN_INDEX_KEY_EXE = "sortedColumnIndexKeyEXE"; //$NON-NLS-1$ + private static final String P_COLUMN_SORT_DIRECTION_KEY_EXE = "columnSortDirectionKeyEXE"; //$NON-NLS-1$ + private static final String P_VISIBLE_COLUMNS_KEY_EXE = "visibleColumnsKeyEXE"; //$NON-NLS-1$ + + /** * Handles dropping executable files into the view */ @@ -85,7 +91,6 @@ public class ExecutablesViewer extends BaseViewer implements IExecutablesChangeL executablesView.getSite().setSelectionProvider(this); createColumns(); - initializeSorter(); setInput(ExecutablesManager.getExecutablesManager()); @@ -143,89 +148,20 @@ public class ExecutablesViewer extends BaseViewer implements IExecutablesChangeL } - /** - * Initialize column ordering and sorting - */ - private void initializeSorter() { - byte orderType = getExecutablesView().getMemento().getInteger(ExecutablesView.P_ORDER_TYPE_EXE).byteValue(); - switch (orderType) { - case ExecutablesView.NAME: - column_order[ExecutablesView.NAME] = getExecutablesView().getMemento().getInteger(ExecutablesView.P_ORDER_VALUE_EXE).intValue(); - column_order[ExecutablesView.PROJECT] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.LOCATION] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.SIZE] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.MODIFIED] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.TYPE] = ExecutablesView.DESCENDING; - break; - case ExecutablesView.PROJECT: - column_order[ExecutablesView.PROJECT] = getExecutablesView().getMemento().getInteger(ExecutablesView.P_ORDER_VALUE_EXE).intValue(); - column_order[ExecutablesView.NAME] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.LOCATION] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.SIZE] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.MODIFIED] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.TYPE] = ExecutablesView.DESCENDING; - break; - case ExecutablesView.LOCATION: - column_order[ExecutablesView.LOCATION] = getExecutablesView().getMemento().getInteger(ExecutablesView.P_ORDER_VALUE_EXE).intValue(); - column_order[ExecutablesView.NAME] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.PROJECT] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.SIZE] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.MODIFIED] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.TYPE] = ExecutablesView.DESCENDING; - break; - case ExecutablesView.SIZE: - column_order[ExecutablesView.SIZE] = getExecutablesView().getMemento().getInteger(ExecutablesView.P_ORDER_VALUE_EXE).intValue(); - column_order[ExecutablesView.NAME] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.LOCATION] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.PROJECT] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.MODIFIED] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.TYPE] = ExecutablesView.DESCENDING; - break; - case ExecutablesView.MODIFIED: - column_order[ExecutablesView.MODIFIED] = getExecutablesView().getMemento().getInteger(ExecutablesView.P_ORDER_VALUE_EXE).intValue(); - column_order[ExecutablesView.NAME] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.PROJECT] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.SIZE] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.LOCATION] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.TYPE] = ExecutablesView.DESCENDING; - break; - default: - column_order[ExecutablesView.NAME] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.PROJECT] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.LOCATION] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.SIZE] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.MODIFIED] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.TYPE] = ExecutablesView.DESCENDING; - } - - ViewerComparator comparator = getViewerComparator(orderType); - setComparator(comparator); - if (orderType == ExecutablesView.NAME) - setColumnSorting(nameColumn, column_order[ExecutablesView.NAME]); - else if (orderType == ExecutablesView.PROJECT) - setColumnSorting(projectColumn, column_order[ExecutablesView.PROJECT]); - else if (orderType == ExecutablesView.LOCATION) - setColumnSorting(locationColumn, column_order[ExecutablesView.LOCATION]); - else if (orderType == ExecutablesView.SIZE) - setColumnSorting(projectColumn, column_order[ExecutablesView.SIZE]); - else if (orderType == ExecutablesView.MODIFIED) - setColumnSorting(locationColumn, column_order[ExecutablesView.MODIFIED]); - } - @Override protected ViewerComparator getViewerComparator(int sortType) { if (sortType == ExecutablesView.PROJECT) { - return new ExecutablesViewerComparator(sortType, column_order[ExecutablesView.PROJECT]) { + return new ExecutablesViewerComparator(sortType, column_sort_order[ExecutablesView.PROJECT]) { @SuppressWarnings("unchecked") //$NON-NLS-1$ public int compare(Viewer viewer, Object e1, Object e2) { Executable entry1 = (Executable) e1; Executable entry2 = (Executable) e2; return getComparator().compare(entry1.getProject().getName(), entry2.getProject().getName()) - * column_order[ExecutablesView.PROJECT]; + * column_sort_order[ExecutablesView.PROJECT]; } }; } - return new ExecutablesViewerComparator(sortType, column_order[sortType]); + return new ExecutablesViewerComparator(sortType, column_sort_order[sortType]); } /* @@ -248,4 +184,29 @@ public class ExecutablesViewer extends BaseViewer implements IExecutablesChangeL refreshJob.schedule(); } + @Override + protected String getColumnOrderKey() { + return P_COLUMN_ORDER_KEY_EXE; + } + + @Override + protected String getSortedColumnIndexKey() { + return P_SORTED_COLUMN_INDEX_KEY_EXE; + } + + @Override + protected String getSortedColumnDirectionKey() { + return P_COLUMN_SORT_DIRECTION_KEY_EXE; + } + + @Override + protected String getVisibleColumnsKey() { + return P_VISIBLE_COLUMNS_KEY_EXE; + } + + @Override + protected String getDefaultVisibleColumnsValue() { + // default visible columns + return "1,1,1,0,0,0"; //$NON-NLS-1$ + } } \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/Messages.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/Messages.java index 967c6cca84f..5b5bc94babf 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/Messages.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/Messages.java @@ -7,7 +7,6 @@ public class Messages extends NLS { public static String ExecutablesContentProvider_FetchingExecutables; public static String ExecutablesView_Columns; public static String ExecutablesView_ConfigureColumns; - public static String ExecutablesView_DefaultColumns; public static String ExecutablesView_ExeData; public static String ExecutablesView_ExeLocation; public static String ExecutablesView_ExeName; diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/SourceFilesViewer.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/SourceFilesViewer.java index bcd2378da20..8f4b5bf8b9d 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/SourceFilesViewer.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/SourceFilesViewer.java @@ -48,6 +48,12 @@ import org.eclipse.ui.progress.UIJob; */ public class SourceFilesViewer extends BaseViewer implements ISourceLookupParticipant { + private static final String P_COLUMN_ORDER_KEY_SF = "columnOrderKeySF"; //$NON-NLS-1$ + private static final String P_SORTED_COLUMN_INDEX_KEY_SF = "sortedColumnIndexKeySF"; //$NON-NLS-1$ + private static final String P_COLUMN_SORT_DIRECTION_KEY_SF = "columnSortDirectionKeySF"; //$NON-NLS-1$ + private static final String P_VISIBLE_COLUMNS_KEY_SF = "visibleColumnsKeySF"; //$NON-NLS-1$ + + TreeColumn originalLocationColumn; private Tree sourceFilesTree; @@ -69,8 +75,6 @@ public class SourceFilesViewer extends BaseViewer implements ISourceLookupPartic } }); - initializeSorter(); - // We implement ISourceLookupParticipant so we can listen for changes to // source lookup as this viewer shows both original and remapped // locations @@ -163,7 +167,7 @@ public class SourceFilesViewer extends BaseViewer implements ISourceLookupPartic protected ViewerComparator getViewerComparator(int sortType) { if (sortType == ExecutablesView.ORG_LOCATION) { - return new ExecutablesViewerComparator(sortType, column_order[ExecutablesView.ORG_LOCATION]) { + return new ExecutablesViewerComparator(sortType, column_sort_order[ExecutablesView.ORG_LOCATION]) { @SuppressWarnings("unchecked") //$NON-NLS-1$ public int compare(Viewer viewer, Object e1, Object e2) { @@ -173,75 +177,13 @@ public class SourceFilesViewer extends BaseViewer implements ISourceLookupPartic Executable exe = (Executable) getInput(); String originalLocation1 = exe.getOriginalLocation(entry1); String originalLocation2 = exe.getOriginalLocation(entry2); - return getComparator().compare(originalLocation1, originalLocation2) * column_order[ExecutablesView.ORG_LOCATION]; + return getComparator().compare(originalLocation1, originalLocation2) * column_sort_order[ExecutablesView.ORG_LOCATION]; } return super.compare(viewer, e1, e2); } }; } else - return new ExecutablesViewerComparator(sortType, column_order[sortType]); - } - - private void initializeSorter() { - byte orderType = getExecutablesView().getMemento().getInteger(ExecutablesView.P_ORDER_TYPE_SF).byteValue(); - switch (orderType) { - case ExecutablesView.NAME: - column_order[ExecutablesView.NAME] = getExecutablesView().getMemento().getInteger(ExecutablesView.P_ORDER_VALUE_SF).intValue(); - column_order[ExecutablesView.LOCATION] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.SIZE] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.ORG_LOCATION] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.MODIFIED] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.TYPE] = ExecutablesView.DESCENDING; - break; - case ExecutablesView.LOCATION: - column_order[ExecutablesView.LOCATION] = getExecutablesView().getMemento().getInteger(ExecutablesView.P_ORDER_VALUE_SF).intValue(); - column_order[ExecutablesView.NAME] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.SIZE] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.ORG_LOCATION] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.MODIFIED] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.TYPE] = ExecutablesView.DESCENDING; - break; - case ExecutablesView.ORG_LOCATION: - column_order[ExecutablesView.ORG_LOCATION] = getExecutablesView().getMemento().getInteger(ExecutablesView.P_ORDER_VALUE_SF).intValue(); - column_order[ExecutablesView.NAME] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.SIZE] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.LOCATION] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.MODIFIED] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.TYPE] = ExecutablesView.DESCENDING; - break; - case ExecutablesView.SIZE: - column_order[ExecutablesView.SIZE] = getExecutablesView().getMemento().getInteger(ExecutablesView.P_ORDER_VALUE_SF).intValue(); - column_order[ExecutablesView.NAME] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.MODIFIED] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.LOCATION] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.ORG_LOCATION] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.TYPE] = ExecutablesView.DESCENDING; - break; - case ExecutablesView.MODIFIED: - column_order[ExecutablesView.MODIFIED] = getExecutablesView().getMemento().getInteger(ExecutablesView.P_ORDER_VALUE_SF).intValue(); - column_order[ExecutablesView.NAME] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.SIZE] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.LOCATION] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.ORG_LOCATION] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.TYPE] = ExecutablesView.DESCENDING; - break; - default: - column_order[ExecutablesView.MODIFIED] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.NAME] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.SIZE] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.LOCATION] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.ORG_LOCATION] = ExecutablesView.DESCENDING; - column_order[ExecutablesView.TYPE] = ExecutablesView.DESCENDING; - } - - ViewerComparator comparator = getViewerComparator(orderType); - setComparator(comparator); - if (orderType == ExecutablesView.NAME) - setColumnSorting(nameColumn, column_order[ExecutablesView.NAME]); - else if (orderType == ExecutablesView.LOCATION) - setColumnSorting(locationColumn, column_order[ExecutablesView.LOCATION]); - else if (orderType == ExecutablesView.ORG_LOCATION) - setColumnSorting(originalLocationColumn, column_order[ExecutablesView.ORG_LOCATION]); + return new ExecutablesViewerComparator(sortType, column_sort_order[sortType]); } public void dispose() { @@ -273,4 +215,29 @@ public class SourceFilesViewer extends BaseViewer implements ISourceLookupPartic refreshJob.schedule(); } + @Override + protected String getColumnOrderKey() { + return P_COLUMN_ORDER_KEY_SF; + } + + @Override + protected String getSortedColumnIndexKey() { + return P_SORTED_COLUMN_INDEX_KEY_SF; + } + + @Override + protected String getSortedColumnDirectionKey() { + return P_COLUMN_SORT_DIRECTION_KEY_SF; + } + + @Override + protected String getVisibleColumnsKey() { + return P_VISIBLE_COLUMNS_KEY_SF; + } + + @Override + protected String getDefaultVisibleColumnsValue() { + // default visible columns + return "1,1,0,0,0,0"; //$NON-NLS-1$ + } } \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/messages.properties b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/messages.properties index 4592c4a4329..4c64fec1aef 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/messages.properties +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/executables/messages.properties @@ -1,7 +1,6 @@ ExecutablesContentProvider_FetchingExecutables=Fetching executables ExecutablesView_Columns=Columns ExecutablesView_ConfigureColumns=Configure Columns -ExecutablesView_DefaultColumns=Executable Name,Executable Project,Executable Location,Source File Name,Source File Location ExecutablesView_ExeData=Executable Date ExecutablesView_ExeLocation=Executable Location ExecutablesView_ExeName=Executable Name