diff --git a/dsf/org.eclipse.cdt.dsf.ui/plugin.properties b/dsf/org.eclipse.cdt.dsf.ui/plugin.properties
index 57dbdb4c60f..081621470b7 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/plugin.properties
+++ b/dsf/org.eclipse.cdt.dsf.ui/plugin.properties
@@ -48,3 +48,8 @@ action.refresh.label=Refresh
debugCallStack = Debug Call Stack
debugCurrentInstructionPointer = Debug Current Instruction Pointer
+StaleData.foreground.label=Stale data foreground color
+StaleData.foreground.description=This color is used to indicate that a given element of data in a view is stale. User should refresh the view to see current data. The foreground color is used only when the view is showing data in columns.
+
+StaleData.background.label=Stale data background color
+StaleData.background.description=This color is used to indicate that a given element of data in a view is stale. User should refresh the view to see current data. The background color is used only when the view is in no-columns mode.
diff --git a/dsf/org.eclipse.cdt.dsf.ui/plugin.xml b/dsf/org.eclipse.cdt.dsf.ui/plugin.xml
index aefb3f23b7f..dfdf23d7a91 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/plugin.xml
+++ b/dsf/org.eclipse.cdt.dsf.ui/plugin.xml
@@ -606,6 +606,51 @@
+
+
+
+
+
+
+
+
+
+
+
+ %StaleData.foreground.description
+
+
+
+
+
+
+
+
+
+
+ %StaleData.background.description
+
+
+
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/IDsfDebugHelpContextIds.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/IDsfDebugHelpContextIds.java
new file mode 100644
index 00000000000..917c9b5ac83
--- /dev/null
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/IDsfDebugHelpContextIds.java
@@ -0,0 +1,32 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Wind River Systems and others.
+ * All rights reserved. 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 available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.debug.internal.ui;
+
+import org.eclipse.debug.ui.IDebugUIConstants;
+
+/**
+ * @since 2.0
+ */
+public interface IDsfDebugHelpContextIds {
+
+ public static final String PREFIX = IDebugUIConstants.PLUGIN_ID + "."; //$NON-NLS-1$
+
+ public static final String DETAIL_PANE = PREFIX + "detail_pane_context"; //$NON-NLS-1$
+ public static final String DETAIL_PANE_ASSIGN_VALUE_ACTION = PREFIX + "detail_pane_assign_value_action_context"; //$NON-NLS-1$
+ public static final String DETAIL_PANE_CONTENT_ASSIST_ACTION = PREFIX + "detail_pane_content_assist_action_context"; //$NON-NLS-1$
+ public static final String DETAIL_PANE_CUT_ACTION = PREFIX + "detail_pane_cut_action_context"; //$NON-NLS-1$
+ public static final String DETAIL_PANE_COPY_ACTION = PREFIX + "detail_pane_copy_action_context"; //$NON-NLS-1$
+ public static final String DETAIL_PANE_PASTE_ACTION = PREFIX + "detail_pane_paste_action_context"; //$NON-NLS-1$
+ public static final String DETAIL_PANE_SELECT_ALL_ACTION = PREFIX + "detail_pane_select_all_action_context"; //$NON-NLS-1$
+ public static final String DETAIL_PANE_FIND_REPLACE_ACTION = PREFIX + "detail_pane_find_replace_action_context"; //$NON-NLS-1$
+ public static final String DETAIL_PANE_WORD_WRAP_ACTION = PREFIX + "detail_pane_word_wrap_action_context"; //$NON-NLS-1$
+ public static final String DETAIL_PANE_MAX_LENGTH_ACTION = PREFIX + "detail_pane_max_length_action_context"; //$NON-NLS-1$
+}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/IInternalDsfDebugUIConstants.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/IInternalDsfDebugUIConstants.java
new file mode 100644
index 00000000000..18fb9081652
--- /dev/null
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/IInternalDsfDebugUIConstants.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Wind River Systems and others.
+ * All rights reserved. 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 available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.debug.internal.ui;
+
+import org.eclipse.cdt.dsf.debug.ui.IDsfDebugUIConstants;
+
+/**
+ * @since 2.0
+ */
+public interface IInternalDsfDebugUIConstants {
+ /**
+ * Boolean preference controlling whether the text in the detail panes is
+ * wrapped. When true the text in the detail panes will be
+ * wrapped in new variable view.
+ */
+ public static final String PREF_DETAIL_PANE_WORD_WRAP = IDsfDebugUIConstants.PLUGIN_ID + ".detail_pane_word_wrap"; //$NON-NLS-1$
+}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/PreferenceInitializer.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/PreferenceInitializer.java
index 49495969f13..0af969812f5 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/PreferenceInitializer.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/PreferenceInitializer.java
@@ -13,10 +13,7 @@ package org.eclipse.cdt.dsf.debug.internal.ui;
import org.eclipse.cdt.dsf.debug.ui.IDsfDebugUIConstants;
import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
-import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferenceConverter;
-import org.eclipse.swt.graphics.RGB;
public class PreferenceInitializer extends AbstractPreferenceInitializer {
@@ -31,28 +28,6 @@ public class PreferenceInitializer extends AbstractPreferenceInitializer {
public void initializeDefaultPreferences() {
IPreferenceStore prefs = DsfUIPlugin.getDefault().getPreferenceStore();
-
- /*
- * Common to all views.
- */
- PreferenceConverter.setDefault(prefs, IDebugUIConstants.PREF_CHANGED_DEBUG_ELEMENT_COLOR, new RGB(255, 0, 0));
- prefs.setDefault(IDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP, false);
- prefs.setDefault(IDsfDebugUIConstants.PREF_MAX_DETAIL_LENGTH, 10000);
-
- /*
- * Variables view
- */
- prefs.setDefault(IDsfDebugUIConstants.VARIABLES_DETAIL_PANE_ORIENTATION, IDsfDebugUIConstants.VARIABLES_DETAIL_PANE_UNDERNEATH);
-
- /*
- * Registers View
- */
- prefs.setDefault(IDsfDebugUIConstants.REGISTERS_DETAIL_PANE_ORIENTATION, IDsfDebugUIConstants.VARIABLES_DETAIL_PANE_UNDERNEATH);
-
- /*
- * Expressions View
- */
- prefs.setDefault(IDsfDebugUIConstants.EXPRESSIONS_DETAIL_PANE_ORIENTATION, IDsfDebugUIConstants.VARIABLES_DETAIL_PANE_UNDERNEATH);
/*
* Debug View
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/detailsupport/DetailPaneMaxLengthAction.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/detailsupport/DetailPaneMaxLengthAction.java
index b6ac175becc..bd6cf22f45b 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/detailsupport/DetailPaneMaxLengthAction.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/detailsupport/DetailPaneMaxLengthAction.java
@@ -11,7 +11,7 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.debug.internal.ui.viewmodel.detailsupport;
-import org.eclipse.cdt.dsf.debug.ui.IDsfDebugUIConstants;
+import org.eclipse.cdt.dsf.debug.internal.ui.IDsfDebugHelpContextIds;
import org.eclipse.jface.action.Action;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
@@ -31,7 +31,7 @@ public class DetailPaneMaxLengthAction extends Action {
super(MessagesForDetailPane.PaneMaxLengthAction_MaxLength);
fDialogShell = dialogShell;
- PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IDsfDebugUIConstants.DETAIL_PANE_MAX_LENGTH_ACTION);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IDsfDebugHelpContextIds.DETAIL_PANE_MAX_LENGTH_ACTION);
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/detailsupport/DetailPaneMaxLengthDialog.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/detailsupport/DetailPaneMaxLengthDialog.java
index 6d12c00ace1..ca01bd63a15 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/detailsupport/DetailPaneMaxLengthDialog.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/detailsupport/DetailPaneMaxLengthDialog.java
@@ -11,8 +11,9 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.debug.internal.ui.viewmodel.detailsupport;
-import org.eclipse.cdt.dsf.debug.ui.IDsfDebugUIConstants;
+import org.eclipse.cdt.dsf.debug.internal.ui.IDsfDebugHelpContextIds;
import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin;
+import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.dialogs.IInputValidator;
@@ -51,7 +52,7 @@ public class DetailPaneMaxLengthDialog extends TrayDialog {
public DetailPaneMaxLengthDialog(Shell parent) {
super(parent);
setShellStyle(getShellStyle() | SWT.RESIZE);
- fValue = Integer.toString(DsfUIPlugin.getDefault().getPreferenceStore().getInt(IDsfDebugUIConstants.PREF_MAX_DETAIL_LENGTH));
+ fValue = Integer.toString(DsfUIPlugin.getDefault().getPreferenceStore().getInt(IDebugUIConstants.PREF_MAX_DETAIL_LENGTH));
fValidator = new IInputValidator() {
public String isValid(String newText) {
try {
@@ -88,7 +89,7 @@ public class DetailPaneMaxLengthDialog extends TrayDialog {
protected Control createContents(Composite parent) {
getShell().setText(MessagesForDetailPane.PaneMaxLengthDialog_ConfigureDetails);
Control contents = super.createContents(parent);
- PlatformUI.getWorkbench().getHelpSystem().setHelp(getDialogArea(), IDsfDebugUIConstants.DETAIL_PANE_MAX_LENGTH_ACTION);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(getDialogArea(), IDsfDebugHelpContextIds.DETAIL_PANE_MAX_LENGTH_ACTION);
return contents;
}
@@ -129,7 +130,7 @@ public class DetailPaneMaxLengthDialog extends TrayDialog {
protected void okPressed() {
String text = getValue();
try {
- DsfUIPlugin.getDefault().getPreferenceStore().setValue(IDsfDebugUIConstants.PREF_MAX_DETAIL_LENGTH, Integer.parseInt(text));
+ DsfUIPlugin.getDefault().getPreferenceStore().setValue(IDebugUIConstants.PREF_MAX_DETAIL_LENGTH, Integer.parseInt(text));
}
catch (NumberFormatException e) {
DsfUIPlugin.log(e);
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/detailsupport/DetailPaneWordWrapAction.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/detailsupport/DetailPaneWordWrapAction.java
index 1458aeb22fc..ec6cfaa8607 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/detailsupport/DetailPaneWordWrapAction.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/detailsupport/DetailPaneWordWrapAction.java
@@ -11,7 +11,8 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.debug.internal.ui.viewmodel.detailsupport;
-import org.eclipse.cdt.dsf.debug.ui.IDsfDebugUIConstants;
+import org.eclipse.cdt.dsf.debug.internal.ui.IDsfDebugHelpContextIds;
+import org.eclipse.cdt.dsf.debug.internal.ui.IInternalDsfDebugUIConstants;
import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.IAction;
@@ -29,12 +30,12 @@ public class DetailPaneWordWrapAction extends Action {
public DetailPaneWordWrapAction(ITextViewer textViewer) {
super(MessagesForDetailPane.PaneWordWrapAction_WrapText,IAction.AS_CHECK_BOX);
- PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IDsfDebugUIConstants.DETAIL_PANE_WORD_WRAP_ACTION);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IDsfDebugHelpContextIds.DETAIL_PANE_WORD_WRAP_ACTION);
fTextViewer = textViewer;
setEnabled(true);
- boolean prefSetting = DsfUIPlugin.getDefault().getPreferenceStore().getBoolean(IDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP);
+ boolean prefSetting = DsfUIPlugin.getDefault().getPreferenceStore().getBoolean(IInternalDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP);
fTextViewer.getTextWidget().setWordWrap(prefSetting);
setChecked(prefSetting);
@@ -47,7 +48,7 @@ public class DetailPaneWordWrapAction extends Action {
@Override
public void run() {
fTextViewer.getTextWidget().setWordWrap(isChecked());
- DsfUIPlugin.getDefault().getPreferenceStore().setValue(IDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP,isChecked());
+ DsfUIPlugin.getDefault().getPreferenceStore().setValue(IInternalDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP,isChecked());
DsfUIPlugin.getDefault().savePluginPreferences();
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/numberformat/detail/NumberFormatDetailPane.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/numberformat/detail/NumberFormatDetailPane.java
index cb48e97130a..9cf7538b0b9 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/numberformat/detail/NumberFormatDetailPane.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/viewmodel/numberformat/detail/NumberFormatDetailPane.java
@@ -23,11 +23,12 @@ import java.util.Set;
import java.util.concurrent.Executor;
import org.eclipse.cdt.dsf.concurrent.DataRequestMonitor;
+import org.eclipse.cdt.dsf.debug.internal.ui.IDsfDebugHelpContextIds;
+import org.eclipse.cdt.dsf.debug.internal.ui.IInternalDsfDebugUIConstants;
import org.eclipse.cdt.dsf.debug.internal.ui.viewmodel.detailsupport.DetailPaneMaxLengthAction;
import org.eclipse.cdt.dsf.debug.internal.ui.viewmodel.detailsupport.DetailPaneWordWrapAction;
import org.eclipse.cdt.dsf.debug.internal.ui.viewmodel.detailsupport.MessagesForDetailPane;
import org.eclipse.cdt.dsf.debug.internal.ui.viewmodel.detailsupport.TextViewerAction;
-import org.eclipse.cdt.dsf.debug.ui.IDsfDebugUIConstants;
import org.eclipse.cdt.dsf.debug.ui.viewmodel.IDebugVMConstants;
import org.eclipse.cdt.dsf.debug.ui.viewmodel.numberformat.FormattedValueVMUtil;
import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin;
@@ -379,7 +380,7 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
insert = CRLF + result;
}
try {
- int max = DsfUIPlugin.getDefault().getPreferenceStore().getInt(IDsfDebugUIConstants.PREF_MAX_DETAIL_LENGTH);
+ int max = DsfUIPlugin.getDefault().getPreferenceStore().getInt(IDebugUIConstants.PREF_MAX_DETAIL_LENGTH);
if (max > 0 && insert.length() > max) {
insert = insert.substring(0, max) + DOTS;
}
@@ -455,10 +456,10 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
// Create & configure a TextViewer
fTextViewer = new TextViewer(parent, SWT.V_SCROLL | SWT.H_SCROLL);
fTextViewer.setDocument(getDetailDocument());
- fTextViewer.getTextWidget().setFont(JFaceResources.getFont(IDsfDebugUIConstants.DETAIL_PANE_FONT));
- fTextViewer.getTextWidget().setWordWrap(DsfUIPlugin.getDefault().getPreferenceStore().getBoolean(IDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP));
+ fTextViewer.getTextWidget().setFont(JFaceResources.getFont(IDebugUIConstants.PREF_DETAIL_PANE_FONT));
+ fTextViewer.getTextWidget().setWordWrap(DsfUIPlugin.getDefault().getPreferenceStore().getBoolean(IInternalDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP));
fTextViewer.setEditable(false);
- PlatformUI.getWorkbench().getHelpSystem().setHelp(fTextViewer.getTextWidget(), IDsfDebugUIConstants.DETAIL_PANE);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(fTextViewer.getTextWidget(), IDsfDebugHelpContextIds.DETAIL_PANE);
Control control = fTextViewer.getControl();
GridData gd = new GridData(GridData.FILL_BOTH);
control.setLayoutData(gd);
@@ -522,13 +523,13 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
TextViewerAction textAction= new TextViewerAction(fTextViewer, ITextOperationTarget.SELECT_ALL);
textAction.configureAction(MessagesForDetailPane.DetailPane_Select_All, "", ""); //$NON-NLS-1$ //$NON-NLS-2$
textAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.SELECT_ALL);
- PlatformUI.getWorkbench().getHelpSystem().setHelp(textAction, IDsfDebugUIConstants.DETAIL_PANE_SELECT_ALL_ACTION);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(textAction, IDsfDebugHelpContextIds.DETAIL_PANE_SELECT_ALL_ACTION);
setAction(DETAIL_SELECT_ALL_ACTION, textAction);
textAction= new TextViewerAction(fTextViewer, ITextOperationTarget.COPY);
textAction.configureAction(MessagesForDetailPane.DetailPane_Copy, "", ""); //$NON-NLS-1$ //$NON-NLS-2$
textAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.COPY);
- PlatformUI.getWorkbench().getHelpSystem().setHelp(textAction, IDsfDebugUIConstants.DETAIL_PANE_COPY_ACTION);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(textAction, IDsfDebugHelpContextIds.DETAIL_PANE_COPY_ACTION);
setAction(DETAIL_COPY_ACTION, textAction);
setSelectionDependantAction(DETAIL_COPY_ACTION);
@@ -749,13 +750,13 @@ public class NumberFormatDetailPane implements IDetailPane, IAdaptable, IPropert
*/
public void propertyChange(PropertyChangeEvent event) {
String propertyName= event.getProperty();
- if (propertyName.equals(IDsfDebugUIConstants.DETAIL_PANE_FONT)) {
- fTextViewer.getTextWidget().setFont(JFaceResources.getFont(IDsfDebugUIConstants.DETAIL_PANE_FONT));
- } else if (propertyName.equals(IDsfDebugUIConstants.PREF_MAX_DETAIL_LENGTH)) {
+ if (propertyName.equals(IDebugUIConstants.PREF_DETAIL_PANE_FONT)) {
+ fTextViewer.getTextWidget().setFont(JFaceResources.getFont(IDebugUIConstants.PREF_DETAIL_PANE_FONT));
+ } else if (propertyName.equals(IDebugUIConstants.PREF_MAX_DETAIL_LENGTH)) {
display(fLastDisplayed);
- } else if (propertyName.equals(IDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP)) {
- fTextViewer.getTextWidget().setWordWrap(DsfUIPlugin.getDefault().getPreferenceStore().getBoolean(IDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP));
- getAction(DETAIL_WORD_WRAP_ACTION).setChecked(DsfUIPlugin.getDefault().getPreferenceStore().getBoolean(IDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP));
+ } else if (propertyName.equals(IInternalDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP)) {
+ fTextViewer.getTextWidget().setWordWrap(DsfUIPlugin.getDefault().getPreferenceStore().getBoolean(IInternalDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP));
+ getAction(DETAIL_WORD_WRAP_ACTION).setChecked(DsfUIPlugin.getDefault().getPreferenceStore().getBoolean(IInternalDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP));
}
}
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/IDsfDebugUIConstants.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/IDsfDebugUIConstants.java
index 76f4391c7f7..b77138a5b3f 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/IDsfDebugUIConstants.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/IDsfDebugUIConstants.java
@@ -10,7 +10,7 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.debug.ui;
-import org.eclipse.debug.ui.IDebugUIConstants;
+import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin;
/**
* @noimplement This interface is not intended to be implemented by clients.
@@ -20,9 +20,9 @@ import org.eclipse.debug.ui.IDebugUIConstants;
public interface IDsfDebugUIConstants {
/**
- * Debug UI plug-in identifier (value "org.eclipse.cdt.dsf.debug.ui").
+ * Debug UI plug-in identifier (value "org.eclipse.cdt.dsf.ui").
*/
- public static final String PLUGIN_ID = "org.eclipse.cdt.dsf.debug.ui"; //$NON-NLS-1$;
+ public static final String PLUGIN_ID = DsfUIPlugin.PLUGIN_ID;
/** Loaded shared library symbols image identifier. */
public static final String IMG_OBJS_SHARED_LIBRARY_SYMBOLS_LOADED = "icons/library_syms_obj.gif"; //$NON-NLS-1$
@@ -30,37 +30,6 @@ public interface IDsfDebugUIConstants {
/** Unloaded Shared library symbols image identifier. */
public static final String IMG_OBJS_SHARED_LIBRARY_SYMBOLS_UNLOADED = "icons/library_obj.gif"; //$NON-NLS-1$
- /*
- * The orientation of the detail view in the VariablesView
- * Note: these constants should be removed from API. See bug 246005.
- */
- public static final String VARIABLES_DETAIL_PANE_ORIENTATION = "Variables.detail.orientation"; //$NON-NLS-1$
- public static final String EXPRESSIONS_DETAIL_PANE_ORIENTATION = "Expressions.detail.orientation"; //$NON-NLS-1$
- public static final String REGISTERS_DETAIL_PANE_ORIENTATION = "Registers.detail.orientation"; //$NON-NLS-1$
- public static final String MODULES_DETAIL_PANE_ORIENTATION = "Modules.detail.orientation"; //$NON-NLS-1$
- public static final String VARIABLES_DETAIL_PANE_RIGHT = "Variables.detail.orientation.right"; //$NON-NLS-1$
- public static final String VARIABLES_DETAIL_PANE_UNDERNEATH = "Variables.detail.orientation.underneath"; //$NON-NLS-1$
- public static final String VARIABLES_DETAIL_PANE_HIDDEN = "Variables.detail.orientation.hidden"; //$NON-NLS-1$
-
- /**
- * Boolean preference controlling whether the text in the detail panes is
- * wrapped. When true the text in the detail panes will be
- * wrapped in new variable view.
- */
- public static final String PREF_DETAIL_PANE_WORD_WRAP = PLUGIN_ID + ".detail_pane_word_wrap"; //$NON-NLS-1$
-
- /**
- * Maximum number of characters to display in the details area of the variables
- * view, or 0 if unlimited.
- */
- public static final String PREF_MAX_DETAIL_LENGTH = PLUGIN_ID + ".max_detail_length"; //$NON-NLS-1$
-
- /**
- * The name of the font to use for detail panes. This font is managed via
- * the workbench font preference page.
- */
- public static final String DETAIL_PANE_FONT= PLUGIN_ID + "DetailPaneFont"; //$NON-NLS-1$
-
/**
* Integer preference to control the maximum amount of stack frames to
* retrieve from the backend. Default value is 10.
@@ -92,24 +61,22 @@ public interface IDsfDebugUIConstants {
*/
public static final String PREF_MIN_STEP_INTERVAL= "minStepInterval"; //$NON-NLS-1$
- /**
- * Help prefixes.
- */
- public static final String PREFIX = IDebugUIConstants.PLUGIN_ID + "."; //$NON-NLS-1$
-
- public static final String DETAIL_PANE = PREFIX + "detail_pane_context"; //$NON-NLS-1$
- public static final String DETAIL_PANE_ASSIGN_VALUE_ACTION = PREFIX + "detail_pane_assign_value_action_context"; //$NON-NLS-1$
- public static final String DETAIL_PANE_CONTENT_ASSIST_ACTION = PREFIX + "detail_pane_content_assist_action_context"; //$NON-NLS-1$
- public static final String DETAIL_PANE_CUT_ACTION = PREFIX + "detail_pane_cut_action_context"; //$NON-NLS-1$
- public static final String DETAIL_PANE_COPY_ACTION = PREFIX + "detail_pane_copy_action_context"; //$NON-NLS-1$
- public static final String DETAIL_PANE_PASTE_ACTION = PREFIX + "detail_pane_paste_action_context"; //$NON-NLS-1$
- public static final String DETAIL_PANE_SELECT_ALL_ACTION = PREFIX + "detail_pane_select_all_action_context"; //$NON-NLS-1$
- public static final String DETAIL_PANE_FIND_REPLACE_ACTION = PREFIX + "detail_pane_find_replace_action_context"; //$NON-NLS-1$
- public static final String DETAIL_PANE_WORD_WRAP_ACTION = PREFIX + "detail_pane_word_wrap_action_context"; //$NON-NLS-1$
- public static final String DETAIL_PANE_MAX_LENGTH_ACTION = PREFIX + "detail_pane_max_length_action_context"; //$NON-NLS-1$
-
/**
* @since 1.1
*/
- public static final String PREFERENCE_PAGE= PREFIX + "preference_page_context"; //$NON-NLS-1$
+ public static final String PREFERENCE_PAGE= PLUGIN_ID + ".preference_page_context"; //$NON-NLS-1$
+
+ /**
+ * Stale data foreground color preference key.
+ *
+ * @since 2.0
+ */
+ public static final String PREF_COLOR_STALE_DATA_FOREGROUND= PLUGIN_ID + ".staledata.foreground"; //$NON-NLS-1$
+
+ /**
+ * Stale data foreground color preference key.
+ *
+ * @since 2.0
+ */
+ public static final String PREF_COLOR_STALE_DATA_BACKGROUND= PLUGIN_ID + ".staledata.background"; //$NON-NLS-1$
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/launch/DelayedStackRefreshUpdatePolicy.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/launch/DelayedStackRefreshUpdatePolicy.java
index 8cdfc04d8d7..96334d9ba19 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/launch/DelayedStackRefreshUpdatePolicy.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/launch/DelayedStackRefreshUpdatePolicy.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.debug.ui.viewmodel.launch;
+import java.util.Map;
+
import org.eclipse.cdt.dsf.datamodel.IDMContext;
import org.eclipse.cdt.dsf.debug.service.IRunControl.IContainerDMContext;
import org.eclipse.cdt.dsf.debug.service.IRunControl.IExecutionDMContext;
@@ -171,5 +173,12 @@ public class DelayedStackRefreshUpdatePolicy extends UpdatePolicyDecorator {
return new ThreadsUpdateTester(super.getElementUpdateTester(event), false);
}
}
+
+ public Object[] getInitialRootElementChildren(Object rootElement) {
+ return null;
+ }
+ public Map getInitialRootElementProperties(Object rootElement) {
+ return null;
+ }
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/modules/ModulesVMNode.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/modules/ModulesVMNode.java
index 01d6f722ab0..0edc6ed4045 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/modules/ModulesVMNode.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/modules/ModulesVMNode.java
@@ -38,6 +38,7 @@ import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelColumnInfo;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelFont;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelText;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.PropertiesBasedLabelProvider;
+import org.eclipse.cdt.dsf.ui.viewmodel.update.StaleDataLabelBackground;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate;
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementLabelProvider;
@@ -103,6 +104,7 @@ public class ModulesVMNode extends AbstractDMVMNode
};
},
new DsfUILabelImage(IDsfDebugUIConstants.IMG_OBJS_SHARED_LIBRARY_SYMBOLS_UNLOADED),
+ new StaleDataLabelBackground(),
new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
}));
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/modules/detail/ModuleDetailPane.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/modules/detail/ModuleDetailPane.java
index f014c8f4c7b..d75114af617 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/modules/detail/ModuleDetailPane.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/modules/detail/ModuleDetailPane.java
@@ -22,12 +22,13 @@ import org.eclipse.cdt.dsf.concurrent.IDsfStatusConstants;
import org.eclipse.cdt.dsf.concurrent.Query;
import org.eclipse.cdt.dsf.datamodel.DMContexts;
import org.eclipse.cdt.dsf.datamodel.IDMContext;
+import org.eclipse.cdt.dsf.debug.internal.ui.IDsfDebugHelpContextIds;
+import org.eclipse.cdt.dsf.debug.internal.ui.IInternalDsfDebugUIConstants;
import org.eclipse.cdt.dsf.debug.internal.ui.viewmodel.detailsupport.MessagesForDetailPane;
import org.eclipse.cdt.dsf.debug.internal.ui.viewmodel.detailsupport.TextViewerAction;
import org.eclipse.cdt.dsf.debug.service.IModules;
import org.eclipse.cdt.dsf.debug.service.IModules.IModuleDMContext;
import org.eclipse.cdt.dsf.debug.service.IModules.IModuleDMData;
-import org.eclipse.cdt.dsf.debug.ui.IDsfDebugUIConstants;
import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin;
import org.eclipse.cdt.dsf.service.DsfServicesTracker;
import org.eclipse.cdt.dsf.service.DsfSession;
@@ -37,6 +38,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
+import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.debug.ui.IDebugView;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
@@ -183,8 +185,8 @@ public class ModuleDetailPane extends ModulesAbstractDetailPane implements IAdap
public void propertyChange(PropertyChangeEvent event) {
String propertyName= event.getProperty();
- if (propertyName.equals(IDsfDebugUIConstants.DETAIL_PANE_FONT)) {
- fSourceViewer.getTextWidget().setFont(JFaceResources.getFont(IDsfDebugUIConstants.DETAIL_PANE_FONT));
+ if (propertyName.equals(IDebugUIConstants.PREF_DETAIL_PANE_FONT)) {
+ fSourceViewer.getTextWidget().setFont(JFaceResources.getFont(IDebugUIConstants.PREF_DETAIL_PANE_FONT));
}
}
@@ -199,10 +201,10 @@ public class ModuleDetailPane extends ModulesAbstractDetailPane implements IAdap
// Create & configure a SourceViewer
fSourceViewer = new SourceViewer(parent, null, SWT.V_SCROLL | SWT.H_SCROLL);
fSourceViewer.setDocument(getDetailDocument());
- fSourceViewer.getTextWidget().setFont(JFaceResources.getFont(IDsfDebugUIConstants.DETAIL_PANE_FONT));
- fSourceViewer.getTextWidget().setWordWrap(DsfUIPlugin.getDefault().getPreferenceStore().getBoolean(IDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP));
+ fSourceViewer.getTextWidget().setFont(JFaceResources.getFont(IDebugUIConstants.PREF_DETAIL_PANE_FONT));
+ fSourceViewer.getTextWidget().setWordWrap(DsfUIPlugin.getDefault().getPreferenceStore().getBoolean(IInternalDsfDebugUIConstants.PREF_DETAIL_PANE_WORD_WRAP));
fSourceViewer.setEditable(false);
- PlatformUI.getWorkbench().getHelpSystem().setHelp(fSourceViewer.getTextWidget(), IDsfDebugUIConstants.DETAIL_PANE);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(fSourceViewer.getTextWidget(), IDsfDebugHelpContextIds.DETAIL_PANE);
Control control = fSourceViewer.getControl();
GridData gd = new GridData(GridData.FILL_BOTH);
control.setLayoutData(gd);
@@ -316,13 +318,13 @@ public class ModuleDetailPane extends ModulesAbstractDetailPane implements IAdap
TextViewerAction textAction= new TextViewerAction(fSourceViewer, ITextOperationTarget.SELECT_ALL);
textAction.configureAction(MessagesForDetailPane.DetailPane_Select_All, "", ""); //$NON-NLS-1$ //$NON-NLS-2$
textAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.SELECT_ALL);
- PlatformUI.getWorkbench().getHelpSystem().setHelp(textAction, IDsfDebugUIConstants.DETAIL_PANE_SELECT_ALL_ACTION);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(textAction, IDsfDebugHelpContextIds.DETAIL_PANE_SELECT_ALL_ACTION);
setAction(DETAIL_SELECT_ALL_ACTION, textAction);
textAction= new TextViewerAction(fSourceViewer, ITextOperationTarget.COPY);
textAction.configureAction(MessagesForDetailPane.DetailPane_Copy, "", ""); //$NON-NLS-1$ //$NON-NLS-2$
textAction.setActionDefinitionId(IWorkbenchActionDefinitionIds.COPY);
- PlatformUI.getWorkbench().getHelpSystem().setHelp(textAction, IDsfDebugUIConstants.DETAIL_PANE_COPY_ACTION);
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(textAction, IDsfDebugHelpContextIds.DETAIL_PANE_COPY_ACTION);
setAction(DETAIL_COPY_ACTION, textAction);
setSelectionDependantAction(DETAIL_COPY_ACTION);
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/register/RegisterBitFieldVMNode.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/register/RegisterBitFieldVMNode.java
index 2090437a839..fd37a7c9733 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/register/RegisterBitFieldVMNode.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/register/RegisterBitFieldVMNode.java
@@ -40,6 +40,7 @@ import org.eclipse.cdt.dsf.debug.ui.viewmodel.numberformat.FormattedValueLabelTe
import org.eclipse.cdt.dsf.debug.ui.viewmodel.numberformat.FormattedValueVMUtil;
import org.eclipse.cdt.dsf.debug.ui.viewmodel.numberformat.IFormattedValueVMContext;
import org.eclipse.cdt.dsf.debug.ui.viewmodel.register.RegisterBitFieldCellModifier.BitFieldEditorStyle;
+import org.eclipse.cdt.dsf.debug.ui.viewmodel.variable.VariableLabelFont;
import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin;
import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.cdt.dsf.ui.concurrent.ViewerDataRequestMonitor;
@@ -49,13 +50,15 @@ import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.IDMVMContext;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.IElementPropertiesProvider;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.IPropertiesUpdate;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelAttribute;
-import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelColor;
+import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelBackground;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelColumnInfo;
-import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelFont;
+import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelForeground;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelImage;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelText;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.PropertiesBasedLabelProvider;
import org.eclipse.cdt.dsf.ui.viewmodel.update.ICachingVMProvider;
+import org.eclipse.cdt.dsf.ui.viewmodel.update.StaleDataLabelBackground;
+import org.eclipse.cdt.dsf.ui.viewmodel.update.StaleDataLabelForeground;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -73,7 +76,6 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationCont
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.debug.ui.actions.IWatchExpressionFactoryAdapter2;
-import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ComboBoxCellEditor;
@@ -196,7 +198,8 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
MessagesForRegisterVM.RegisterBitFieldVMNode_Name_column__text_format,
new String[] { PROP_NAME }),
new LabelImage(DebugUITools.getImageDescriptor(IDebugUIConstants.IMG_OBJS_REGISTER)),
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
// The description column contains a brief description of the bit field.
@@ -206,7 +209,8 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
new LabelText(
MessagesForRegisterVM.RegisterBitFieldVMNode_Description_column__text_format,
new String[] { IRegisterVMConstants.PROP_DESCRIPTION }),
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
// In the type column add information about bit field read/write/fload flags.
@@ -245,7 +249,8 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
}
}
},
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
// Value column shows the value in the active value format, followed by the active mnemonic if one is
@@ -266,7 +271,7 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
IRegisterVMConstants.PROP_CURRENT_MNEMONIC_LONG_NAME}),
new FormattedValueLabelText(),
new ErrorLabelText(),
- new LabelColor(new RGB(255, 0, 0), null) // TODO: replace with preference error color
+ new LabelForeground(new RGB(255, 0, 0)) // TODO: replace with preference error color
{
{ setPropertyNames(new String[] { PROP_NAME }); }
@@ -275,8 +280,7 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
return !status.isOK();
}
},
- new LabelColor(
- null,
+ new LabelBackground(
DebugUITools.getPreferenceColor(IDebugUIConstants.PREF_CHANGED_VALUE_BACKGROUND).getRGB())
{
{
@@ -296,7 +300,8 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
return Boolean.TRUE.equals(activeChanged) && !Boolean.TRUE.equals(activeFormatChanged);
}
},
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
// Expression column is visible only in the expressions view. It shows the expression string that the user
@@ -308,7 +313,8 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
MessagesForRegisterVM.RegisterBitFieldVMNode_Expression_column__text_format,
new String[] { PROP_ELEMENT_EXPRESSION }),
new LabelImage(DebugUITools.getImageDescriptor(IDebugUIConstants.IMG_OBJS_REGISTER)),
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
provider.setColumnInfo(
@@ -329,9 +335,8 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
MessagesForRegisterVM.RegisterBitFieldVMNode_No_columns__Error__text_format,
new String[] { PROP_NAME }),
new LabelImage(DebugUITools.getImageDescriptor(IDebugUIConstants.IMG_OBJS_REGISTER)),
- new LabelColor(
- DebugUITools.getPreferenceColor(IDebugUIConstants.PREF_CHANGED_DEBUG_ELEMENT_COLOR).getRGB(),
- null)
+ new LabelForeground(
+ DebugUITools.getPreferenceColor(IDebugUIConstants.PREF_CHANGED_DEBUG_ELEMENT_COLOR).getRGB())
{
{
setPropertyNames(new String[] {
@@ -350,7 +355,8 @@ public class RegisterBitFieldVMNode extends AbstractExpressionVMNode
return Boolean.TRUE.equals(activeChanged) && !Boolean.TRUE.equals(activeFormatChanged);
}
},
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelBackground(),
+ new VariableLabelFont(),
}));
return provider;
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/register/RegisterGroupVMNode.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/register/RegisterGroupVMNode.java
index 05eccace6d9..a82b2bb2964 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/register/RegisterGroupVMNode.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/register/RegisterGroupVMNode.java
@@ -29,6 +29,7 @@ import org.eclipse.cdt.dsf.debug.service.IRunControl.ISuspendedDMEvent;
import org.eclipse.cdt.dsf.debug.ui.viewmodel.IDebugVMConstants;
import org.eclipse.cdt.dsf.debug.ui.viewmodel.expression.AbstractExpressionVMNode;
import org.eclipse.cdt.dsf.debug.ui.viewmodel.expression.WatchExpressionCellModifier;
+import org.eclipse.cdt.dsf.debug.ui.viewmodel.variable.VariableLabelFont;
import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin;
import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.cdt.dsf.ui.concurrent.ViewerDataRequestMonitor;
@@ -39,10 +40,11 @@ import org.eclipse.cdt.dsf.ui.viewmodel.properties.IElementPropertiesProvider;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.IPropertiesUpdate;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelAttribute;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelColumnInfo;
-import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelFont;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelImage;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelText;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.PropertiesBasedLabelProvider;
+import org.eclipse.cdt.dsf.ui.viewmodel.update.StaleDataLabelBackground;
+import org.eclipse.cdt.dsf.ui.viewmodel.update.StaleDataLabelForeground;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -60,7 +62,6 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationCont
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.debug.ui.actions.IWatchExpressionFactoryAdapter2;
-import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ICellModifier;
import org.eclipse.jface.viewers.TextCellEditor;
@@ -222,7 +223,8 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
MessagesForRegisterVM.RegisterGroupVMNode_Name_column__text_format,
new String[] { PROP_NAME }),
new LabelImage(DebugUITools.getImageDescriptor(IDebugUIConstants.IMG_OBJS_REGISTER_GROUP)),
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
// The description column contains a brief description of the register group.
@@ -231,7 +233,8 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
new LabelColumnInfo(new LabelAttribute[] {
new LabelText(MessagesForRegisterVM.RegisterGroupVMNode_Description_column__text_format,
new String[] { PROP_REGISTER_GROUP_DESCRIPTION }),
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
// Expression column is visible only in the expressions view. It shows the expression string that the user
@@ -243,7 +246,8 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
MessagesForRegisterVM.RegisterGroupVMNode_Expression_column__text_format,
new String[] { PROP_ELEMENT_EXPRESSION }),
new LabelImage(DebugUITools.getImageDescriptor(IDebugUIConstants.IMG_OBJS_REGISTER_GROUP)),
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
provider.setColumnInfo(
@@ -252,7 +256,8 @@ public class RegisterGroupVMNode extends AbstractExpressionVMNode
new LabelText(MessagesForRegisterVM.RegisterGroupVMNode_No_columns__text_format,
new String[] { PROP_NAME, PROP_REGISTER_GROUP_DESCRIPTION}),
new LabelImage(DebugUITools.getImageDescriptor(IDebugUIConstants.IMG_OBJS_REGISTER_GROUP)),
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelBackground(),
+ new VariableLabelFont(),
}));
return provider;
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/register/RegisterVMNode.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/register/RegisterVMNode.java
index d67829156fa..13a46f6f7b2 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/register/RegisterVMNode.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/register/RegisterVMNode.java
@@ -36,6 +36,7 @@ import org.eclipse.cdt.dsf.debug.ui.viewmodel.expression.AbstractExpressionVMNod
import org.eclipse.cdt.dsf.debug.ui.viewmodel.numberformat.FormattedValueLabelText;
import org.eclipse.cdt.dsf.debug.ui.viewmodel.numberformat.FormattedValueVMUtil;
import org.eclipse.cdt.dsf.debug.ui.viewmodel.numberformat.IFormattedValueVMContext;
+import org.eclipse.cdt.dsf.debug.ui.viewmodel.variable.VariableLabelFont;
import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin;
import org.eclipse.cdt.dsf.service.DsfSession;
import org.eclipse.cdt.dsf.ui.concurrent.ViewerDataRequestMonitor;
@@ -45,13 +46,15 @@ import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.IDMVMContext;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.IElementPropertiesProvider;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.IPropertiesUpdate;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelAttribute;
-import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelColor;
+import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelBackground;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelColumnInfo;
-import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelFont;
+import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelForeground;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelImage;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelText;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.PropertiesBasedLabelProvider;
import org.eclipse.cdt.dsf.ui.viewmodel.update.ICachingVMProvider;
+import org.eclipse.cdt.dsf.ui.viewmodel.update.StaleDataLabelBackground;
+import org.eclipse.cdt.dsf.ui.viewmodel.update.StaleDataLabelForeground;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -70,7 +73,6 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationCont
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.debug.ui.actions.IWatchExpressionFactoryAdapter2;
-import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ICellModifier;
@@ -187,7 +189,8 @@ public class RegisterVMNode extends AbstractExpressionVMNode
MessagesForRegisterVM.RegisterVMNode_Name_column__text_format,
new String[] { PROP_NAME }),
new LabelImage(DebugUITools.getImageDescriptor(IDebugUIConstants.IMG_OBJS_REGISTER)),
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
// The description column contains a brief description of the register.
@@ -197,7 +200,8 @@ public class RegisterVMNode extends AbstractExpressionVMNode
new LabelText(
MessagesForRegisterVM.RegisterVMNode_Description_column__text_format,
new String[] { IRegisterVMConstants.PROP_DESCRIPTION }),
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
// In the type column add information about register read/write/fload flags.
@@ -241,7 +245,8 @@ public class RegisterVMNode extends AbstractExpressionVMNode
}
}
},
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
// Value column shows the value in the active value format.
@@ -256,7 +261,7 @@ public class RegisterVMNode extends AbstractExpressionVMNode
new LabelColumnInfo(new LabelAttribute[] {
new FormattedValueLabelText(),
new ErrorLabelText(),
- new LabelColor(new RGB(255, 0, 0), null) // TODO: replace with preference error color
+ new LabelForeground(new RGB(255, 0, 0)) // TODO: replace with preference error color
{
{ setPropertyNames(new String[] { PROP_NAME }); }
@@ -265,8 +270,7 @@ public class RegisterVMNode extends AbstractExpressionVMNode
return !status.isOK();
}
},
- new LabelColor(
- null,
+ new LabelBackground(
DebugUITools.getPreferenceColor(IDebugUIConstants.PREF_CHANGED_VALUE_BACKGROUND).getRGB())
{
{
@@ -286,7 +290,8 @@ public class RegisterVMNode extends AbstractExpressionVMNode
return Boolean.TRUE.equals(activeChanged) && !Boolean.TRUE.equals(activeFormatChanged);
}
},
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
// Expression column is visible only in the expressions view. It shows the expression string that the user
@@ -298,7 +303,8 @@ public class RegisterVMNode extends AbstractExpressionVMNode
MessagesForRegisterVM.RegisterVMNode_Expression_column__text_format,
new String[] { PROP_ELEMENT_EXPRESSION }),
new LabelImage(DebugUITools.getImageDescriptor(IDebugUIConstants.IMG_OBJS_REGISTER)),
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
provider.setColumnInfo(
@@ -311,9 +317,8 @@ public class RegisterVMNode extends AbstractExpressionVMNode
MessagesForRegisterVM.RegisterVMNode_No_columns__Error__text_format,
new String[] { PROP_NAME }),
new LabelImage(DebugUITools.getImageDescriptor(IDebugUIConstants.IMG_OBJS_REGISTER)),
- new LabelColor(
- DebugUITools.getPreferenceColor(IDebugUIConstants.PREF_CHANGED_DEBUG_ELEMENT_COLOR).getRGB(),
- null)
+ new LabelForeground(
+ DebugUITools.getPreferenceColor(IDebugUIConstants.PREF_CHANGED_DEBUG_ELEMENT_COLOR).getRGB())
{
{
setPropertyNames(new String[] {
@@ -332,7 +337,8 @@ public class RegisterVMNode extends AbstractExpressionVMNode
return Boolean.TRUE.equals(activeChanged) && !Boolean.TRUE.equals(activeFormatChanged);
}
},
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelBackground(),
+ new VariableLabelFont(),
}));
return provider;
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableLabelFont.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableLabelFont.java
new file mode 100644
index 00000000000..17b4a963e64
--- /dev/null
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableLabelFont.java
@@ -0,0 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2008 Wind River Systems and others.
+ * All rights reserved. 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 available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.debug.ui.viewmodel.variable;
+
+import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelFont;
+import org.eclipse.debug.ui.IDebugUIConstants;
+import org.eclipse.jface.resource.JFaceResources;
+
+/**
+ * @since 2.0
+ */
+public class VariableLabelFont extends LabelFont {
+
+ public VariableLabelFont() {
+ super(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0]);
+ }
+}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableVMNode.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableVMNode.java
index 05a52b9fef4..4cb26709365 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableVMNode.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/ui/viewmodel/variable/VariableVMNode.java
@@ -58,13 +58,15 @@ import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.IDMVMContext;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.IElementPropertiesProvider;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.IPropertiesUpdate;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelAttribute;
-import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelColor;
+import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelBackground;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelColumnInfo;
-import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelFont;
+import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelForeground;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelImage;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelText;
import org.eclipse.cdt.dsf.ui.viewmodel.properties.PropertiesBasedLabelProvider;
import org.eclipse.cdt.dsf.ui.viewmodel.update.ICachingVMProvider;
+import org.eclipse.cdt.dsf.ui.viewmodel.update.StaleDataLabelBackground;
+import org.eclipse.cdt.dsf.ui.viewmodel.update.StaleDataLabelForeground;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
@@ -83,7 +85,6 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate;
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.debug.ui.actions.IWatchExpressionFactoryAdapter2;
-import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ICellModifier;
@@ -255,7 +256,8 @@ public class VariableVMNode extends AbstractExpressionVMNode
pointerLabelImage,
aggregateLabelImage,
simpleLabelImage,
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
// Expression column is visible only in the expressions view. It shows the expression string that the user
@@ -269,7 +271,8 @@ public class VariableVMNode extends AbstractExpressionVMNode
pointerLabelImage,
aggregateLabelImage,
simpleLabelImage,
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
// Type column only contains the type name.
@@ -280,7 +283,8 @@ public class VariableVMNode extends AbstractExpressionVMNode
MessagesForVariablesVM.VariableVMNode_Type_column__text_format,
new String[] { PROP_VARIABLE_TYPE_NAME }),
new LabelText( MessagesForVariablesVM.VariableVMNode_Type_column__Error__text_format, new String[] {}),
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
// Value column is more complicated:
@@ -319,7 +323,7 @@ public class VariableVMNode extends AbstractExpressionVMNode
},
new FormattedValueLabelText(),
new ErrorLabelText(),
- new LabelColor(new RGB(255, 0, 0), null) // TODO: replace with preference error color
+ new LabelForeground(new RGB(255, 0, 0)) // TODO: replace with preference error color
{
{ setPropertyNames(new String[] { PROP_NAME }); }
@@ -329,8 +333,7 @@ public class VariableVMNode extends AbstractExpressionVMNode
}
},
//
- new LabelColor(
- null,
+ new LabelBackground(
DebugUITools.getPreferenceColor(IDebugUIConstants.PREF_CHANGED_VALUE_BACKGROUND).getRGB())
{
{
@@ -355,7 +358,8 @@ public class VariableVMNode extends AbstractExpressionVMNode
( Boolean.TRUE.equals(activeChanged) && !Boolean.TRUE.equals(activeFormatChanged));
};
},
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
// Address column shows the variable's address. It is highlighted with the change background color when the
@@ -367,8 +371,7 @@ public class VariableVMNode extends AbstractExpressionVMNode
MessagesForVariablesVM.VariableVMNode_Address_column__text_format,
new String[] { PROP_VARIABLE_ADDRESS }),
new LabelText(MessagesForVariablesVM.VariableVMNode_Address_column__Error__text_format, new String[] {}),
- new LabelColor(
- null,
+ new LabelBackground(
DebugUITools.getPreferenceColor(IDebugUIConstants.PREF_CHANGED_VALUE_BACKGROUND).getRGB())
{
{ setPropertyNames(new String[] { PROP_VARIABLE_ADDRESS, PROP_VARIABLE_ADDRESS_CHANGED}); }
@@ -379,7 +382,8 @@ public class VariableVMNode extends AbstractExpressionVMNode
return Boolean.TRUE.equals(changed);
};
},
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0]),
+ new StaleDataLabelForeground(),
+ new VariableLabelFont(),
}));
// Description column is shown in the expression view, but is not supported for variables.
@@ -387,9 +391,8 @@ public class VariableVMNode extends AbstractExpressionVMNode
IDebugVMConstants.COLUMN_ID__DESCRIPTION,
new LabelColumnInfo(new LabelAttribute[] {
- new LabelText(MessagesForVariablesVM.VariableVMNode_Description_column__text_format, new String[] {}) {
- },
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new LabelText(MessagesForVariablesVM.VariableVMNode_Description_column__text_format, new String[] {}),
+ new VariableLabelFont(),
}));
// Configure the case where there are no columns visible. It basically combines the name and the value columns only.
@@ -433,7 +436,7 @@ public class VariableVMNode extends AbstractExpressionVMNode
pointerLabelImage,
aggregateLabelImage,
simpleLabelImage,
- new LabelColor(new RGB(255, 0, 0), null) // TODO: replace with preference error color
+ new LabelForeground(new RGB(255, 0, 0)) // TODO: replace with preference error color
{
{ setPropertyNames(new String[] { PROP_NAME }); }
@@ -442,9 +445,8 @@ public class VariableVMNode extends AbstractExpressionVMNode
return !status.isOK();
}
},
- new LabelColor(
- DebugUITools.getPreferenceColor(IDebugUIConstants.PREF_CHANGED_DEBUG_ELEMENT_COLOR).getRGB(),
- null)
+ new LabelForeground(
+ DebugUITools.getPreferenceColor(IDebugUIConstants.PREF_CHANGED_DEBUG_ELEMENT_COLOR).getRGB())
{
{
setPropertyNames(new String[] {
@@ -462,7 +464,8 @@ public class VariableVMNode extends AbstractExpressionVMNode
return Boolean.TRUE.equals(stringChanged) || Boolean.TRUE.equals(activeChanged);
};
},
- new LabelFont(JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0])
+ new StaleDataLabelBackground(),
+ new VariableLabelFont(),
}));
return provider;
@@ -573,7 +576,9 @@ public class VariableVMNode extends AbstractExpressionVMNode
protected void handleCompleted() {
if (isSuccess()) {
fillAddressDataProperties(update, getData());
- } else {
+ } else if (getStatus().getCode() != IDsfStatusConstants.NOT_SUPPORTED &&
+ getStatus().getCode() != IDsfStatusConstants.INVALID_STATE)
+ {
update.setStatus(getStatus());
}
countingRm.done();
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/AbstractVMNode.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/AbstractVMNode.java
index 07665a290d7..2355f37f86f 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/AbstractVMNode.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/AbstractVMNode.java
@@ -31,10 +31,10 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate;
*/
abstract public class AbstractVMNode implements IVMNode {
- private final AbstractVMProvider fProvider;
+ private final IVMProvider fProvider;
private boolean fDisposed = false;
- public AbstractVMNode(AbstractVMProvider provider) {
+ public AbstractVMNode(IVMProvider provider) {
fProvider = provider;
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/LabelBackground.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/LabelBackground.java
new file mode 100644
index 00000000000..c3a88ffa68f
--- /dev/null
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/LabelBackground.java
@@ -0,0 +1,52 @@
+/*******************************************************************************
+ * Copyright (c) 2007 Wind River Systems and others.
+ * All rights reserved. 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 available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Wind River Systems - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.cdt.dsf.ui.viewmodel.properties;
+
+import java.util.Map;
+
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate;
+import org.eclipse.swt.graphics.RGB;
+
+/**
+ * The color attribute of a label. It determines what background color to use
+ * for the given label.
+ *
+ * @see LabelAttribute
+ * @see LabelColumnInfo
+ * @see PropertiesBasedLabelProvider
+ *
+ * @since 2.0
+ */
+
+public class LabelBackground extends LabelAttribute {
+ private RGB fBackground;
+
+ public LabelBackground(RGB background) {
+ fBackground = background;
+ }
+
+ public RGB getBackground() {
+ return fBackground;
+ }
+
+ public void setBackground(RGB background) {
+ fBackground = background;
+ }
+
+ @Override
+ public void updateAttribute(ILabelUpdate update, int columnIndex, IStatus status, Map properties) {
+ RGB background = getBackground();
+ if (background != null) {
+ update.setBackground(background, columnIndex);
+ }
+ }
+}
\ No newline at end of file
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/LabelColumnInfo.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/LabelColumnInfo.java
index 2e9f6866cbf..07fd4fe52ee 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/LabelColumnInfo.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/LabelColumnInfo.java
@@ -98,7 +98,8 @@ public class LabelColumnInfo {
boolean textSet = false;
boolean imageSet = false;
boolean fontSet = false;
- boolean colorSet = false;
+ boolean foregroundSet = false;
+ boolean backgroundSet = false;
LabelAttribute[] labelAttributes = getLabelAttributes();
for (LabelAttribute info : labelAttributes) {
@@ -106,14 +107,16 @@ public class LabelColumnInfo {
if (!(info instanceof LabelText && textSet) &&
!(info instanceof LabelImage && imageSet) &&
!(info instanceof LabelFont && fontSet) &&
- !(info instanceof LabelColor && colorSet) &&
+ !(info instanceof LabelForeground && foregroundSet) &&
+ !(info instanceof LabelBackground && backgroundSet) &&
info.isEnabled(status, properties))
{
info.updateAttribute(update, columnIndex, status, properties);
textSet = textSet || info instanceof LabelText;
imageSet = imageSet || info instanceof LabelImage;
fontSet = fontSet || info instanceof LabelFont;
- colorSet = colorSet || info instanceof LabelColor;
+ foregroundSet = foregroundSet || info instanceof LabelForeground;
+ backgroundSet = backgroundSet || info instanceof LabelBackground;
}
}
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/LabelColor.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/LabelForeground.java
similarity index 70%
rename from dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/LabelColor.java
rename to dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/LabelForeground.java
index 7d65da3e7e8..06ff6222c06 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/LabelColor.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/properties/LabelForeground.java
@@ -17,55 +17,36 @@ import org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate;
import org.eclipse.swt.graphics.RGB;
/**
- * The color attribute of a label. It determines what foreground and
- * background color to use for the given label.
+ * The color attribute of a label. It determines what foreground color to use
+ * for the given label.
*
* @see LabelAttribute
* @see LabelColumnInfo
* @see PropertiesBasedLabelProvider
*
- * @since 1.0
+ * @since 2.0
*/
-public class LabelColor extends LabelAttribute {
+public class LabelForeground extends LabelAttribute {
private RGB fForeground;
- private RGB fBackground;
- public LabelColor() {
- this(null, null);
- }
-
- public LabelColor(RGB foreground, RGB background) {
+ public LabelForeground(RGB foreground) {
fForeground = foreground;
- fBackground = background;
}
public RGB getForeground() {
return fForeground;
}
- public RGB getBackground() {
- return fBackground;
- }
-
public void setForeground(RGB foreground) {
fForeground = foreground;
}
- public void setBackground(RGB background) {
- fBackground = background;
- }
-
@Override
public void updateAttribute(ILabelUpdate update, int columnIndex, IStatus status, Map properties) {
RGB foreground = getForeground();
if (foreground != null) {
update.setForeground(foreground, columnIndex);
}
-
- RGB background = getBackground();
- if (background != null) {
- update.setBackground(background, columnIndex);
- }
}
}
\ No newline at end of file
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/AbstractCachingVMProvider.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/AbstractCachingVMProvider.java
index 1a7c63edfcb..fa5675aed25 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/AbstractCachingVMProvider.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/AbstractCachingVMProvider.java
@@ -426,7 +426,9 @@ public class AbstractCachingVMProvider extends AbstractVMProvider
// Find or create the cache entry for the element of this update.
ElementDataKey key = makeEntryKey(node, update);
final ElementDataEntry entry = getElementDataEntry(key);
+ updateRootElementMarker(key.fRootElement, node, update);
+ // Check if the cache entry has this request result cached.
if (entry.fHasChildren != null) {
// Cache Hit! Just return the value.
if (DEBUG_CACHE && (DEBUG_PRESENTATION_ID == null || getPresentationContext().getId().equals(DEBUG_PRESENTATION_ID))) {
@@ -473,7 +475,9 @@ public class AbstractCachingVMProvider extends AbstractVMProvider
// Find or create the cache entry for the element of this update.
ElementDataKey key = makeEntryKey(node, update);
final ElementDataEntry entry = getElementDataEntry(key);
+ updateRootElementMarker(key.fRootElement, node, update);
+ // Check if the cache entry has this request result cached.
if(entry.fChildrenCount != null) {
// Cache Hit! Just return the value.
if (DEBUG_CACHE && (DEBUG_PRESENTATION_ID == null || getPresentationContext().getId().equals(DEBUG_PRESENTATION_ID))) {
@@ -489,7 +493,7 @@ public class AbstractCachingVMProvider extends AbstractVMProvider
new ViewerDataRequestMonitor(getExecutor(), update) {
@Override
protected void handleCompleted() {
- // Update completed. Write value to cache only if update successed
+ // Update completed. Write value to cache only if update succeeded
// and the cache entry wasn't flushed in the mean time.
if(isSuccess()) {
if (flushCounter == entry.fFlushCounter) {
@@ -514,6 +518,7 @@ public class AbstractCachingVMProvider extends AbstractVMProvider
// Find or create the cache entry for the element of this update.
ElementDataKey key = makeEntryKey(node, update);
final ElementDataEntry entry = getElementDataEntry(key);
+ updateRootElementMarker(key.fRootElement, node, update);
final int flushCounter = entry.fFlushCounter;
if (entry.fChildren == null || (update.getOffset() < 0 && !entry.fAllChildrenKnown)) {
@@ -732,6 +737,9 @@ public class AbstractCachingVMProvider extends AbstractVMProvider
elementDataEntry.fDirty = false;
} else if ((updateFlags & IVMUpdatePolicy.DIRTY) != 0) {
elementDataEntry.fDirty = true;
+ if (elementDataEntry.fProperties != null) {
+ elementDataEntry.fProperties.put(PROP_CACHE_ENTRY_DIRTY, Boolean.TRUE);
+ }
}
}
entry = entry.fPrevious;
@@ -853,6 +861,7 @@ public class AbstractCachingVMProvider extends AbstractVMProvider
// See bug 241024.
proxy.init(context);
}
+
return proxy;
}
@@ -916,14 +925,21 @@ public class AbstractCachingVMProvider extends AbstractVMProvider
entry.reinsert(fCacheListHead);
}
+
+ return entry;
+ }
+
+ private void updateRootElementMarker(Object rootElement, IVMNode node, IViewerUpdate update) {
+ boolean created = false;
// Update the root element marker:
// - ensure that the root marker is root markers' map,
// - ensure that the root marker is in the cache map,
// - and ensure that it's at the end of the cache.
- RootElementMarkerKey rootMarker = fRootMarkers.get(key.fRootElement);
+ RootElementMarkerKey rootMarker = fRootMarkers.get(rootElement);
if (rootMarker == null) {
- rootMarker = new RootElementMarkerKey(key.fRootElement);
- fRootMarkers.put(key.fRootElement, rootMarker);
+ rootMarker = new RootElementMarkerKey(rootElement);
+ fRootMarkers.put(rootElement, rootMarker);
+ created = true;
}
Entry rootMarkerEntry = fCacheData.get(rootMarker);
if (rootMarkerEntry == null) {
@@ -931,11 +947,36 @@ public class AbstractCachingVMProvider extends AbstractVMProvider
addEntry(rootMarker, rootMarkerEntry);
} else if (rootMarkerEntry.fNext != fCacheListHead) {
rootMarkerEntry.reinsert(fCacheListHead);
- }
+ }
- return entry;
+ if (created) {
+ ElementDataKey rootElementDataKey =
+ new ElementDataKey(rootElement, node, update.getViewerInput(), update.getElementPath());
+ ElementDataEntry entry = getElementDataEntry(rootElementDataKey);
+
+ Object[] rootElementChildren = getActiveUpdatePolicy().getInitialRootElementChildren(rootElement);
+ if (rootElementChildren != null) {
+ entry.fHasChildren = rootElementChildren.length > 0;
+ entry.fChildrenCount = rootElementChildren.length;
+ entry.fChildren = new HashMap(entry.fChildrenCount * 4/3);
+ for (int i = 0; i < rootElementChildren.length; i++) {
+ entry.fChildren.put(i, rootElementChildren[i]);
+ }
+ entry.fAllChildrenKnown = true;
+ entry.fDirty = true;
+ }
+
+ Map rootElementProperties = getActiveUpdatePolicy().getInitialRootElementProperties(rootElement);
+
+ if (rootElementProperties != null) {
+ entry.fProperties = new HashMap((rootElementProperties.size() + 1) * 4/3);
+ entry.fProperties.putAll(rootElementProperties);
+ entry.fProperties.put(PROP_CACHE_ENTRY_DIRTY, true);
+ entry.fDirty = true;
+ }
+ }
}
-
+
/**
* Convenience method used by {@link #getElementDataEntry(ElementDataKey)}
*/
@@ -1025,17 +1066,27 @@ public class AbstractCachingVMProvider extends AbstractVMProvider
// Find or create the cache entry for the element of this update.
ElementDataKey key = makeEntryKey(node, update);
final ElementDataEntry entry = getElementDataEntry(key);
+ updateRootElementMarker(key.fRootElement, node, update);
// The request can be retrieved from cache if all the properties that were requested in the update are
// found in the map.
if (entry.fProperties != null && entry.fProperties.keySet().containsAll(update.getProperties())) {
// Cache Hit! Just return the value.
if (DEBUG_CACHE && (DEBUG_PRESENTATION_ID == null || getPresentationContext().getId().equals(DEBUG_PRESENTATION_ID))) {
- DsfUIPlugin.debug("cacheHitHasChildren(node = " + node + ", update = " + update + ", " + entry.fHasChildren + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ DsfUIPlugin.debug("cacheHitProperties(node = " + node + ", update = " + update + ", " + entry.fProperties + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
}
update.setAllProperties(entry.fProperties);
update.setStatus((IStatus)entry.fProperties.get(PROP_UPDATE_STATUS));
update.done();
+ } else if (entry.fProperties != null && entry.fDirty) {
+ // Cache miss, BUT the entry is dirty already. Rather then fetch new data from model, return
+ // incomplete data to user. User can refresh the view to get the complete data set.
+ if (DEBUG_CACHE && (DEBUG_PRESENTATION_ID == null || getPresentationContext().getId().equals(DEBUG_PRESENTATION_ID))) {
+ DsfUIPlugin.debug("cacheHitPropertiesPartialStaleData(node = " + node + ", update = " + update + ", " + entry.fProperties + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ }
+ update.setAllProperties(entry.fProperties);
+ update.setStatus(DsfUIPlugin.newErrorStatus(IDsfStatusConstants.INVALID_STATE, "Cache contains partial stale data for this request.", null)); //$NON-NLS-1$
+ update.done();
} else {
// Cache miss! Save the flush counter of the entry and create a proxy update.
final int flushCounter = entry.fFlushCounter;
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/AutomaticUpdatePolicy.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/AutomaticUpdatePolicy.java
index f636a7fa3b7..6ff0e95c997 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/AutomaticUpdatePolicy.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/AutomaticUpdatePolicy.java
@@ -10,6 +10,8 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.ui.viewmodel.update;
+import java.util.Map;
+
import org.eclipse.jface.viewers.TreePath;
/**
@@ -49,4 +51,12 @@ public class AutomaticUpdatePolicy implements IVMUpdatePolicy {
public IElementUpdateTester getElementUpdateTester(Object event) {
return fgUpdateTester;
}
+
+ public Object[] getInitialRootElementChildren(Object rootElement) {
+ return null;
+ }
+
+ public Map getInitialRootElementProperties(Object rootElement) {
+ return null;
+ }
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/IVMUpdatePolicy.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/IVMUpdatePolicy.java
index 99a8051eec3..3088371c9a7 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/IVMUpdatePolicy.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/IVMUpdatePolicy.java
@@ -10,6 +10,9 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.ui.viewmodel.update;
+import java.util.Map;
+
+
/**
* Interface for an update policy. The main function of an update policy is
@@ -52,4 +55,38 @@ public interface IVMUpdatePolicy {
* Creates an element tester for the given event.
*/
public IElementUpdateTester getElementUpdateTester(Object event);
+
+ /**
+ * Returns the array of elements that should be used to initially populate
+ * the cache, or null if this update policy does not need to
+ * pre-populate the cache. These elements will be shown as children
+ * of the root element in the view.
+ *
+ * This method allows an update policy to prevent the UI from reading the
+ * model when the UI first appears and the cache has not been populated yet.
+ *
+ * @param rootElement The rootElement for which the cache is being
+ * pre-populated.
+ *
+ * @since 2.0
+ */
+ public Object[] getInitialRootElementChildren(Object rootElement);
+
+ /**
+ * Returns the properties that should be used to initially populate
+ * the cache, or null if the cache should not be pre-populated
+ * for this update policy. These properties may be used by the
+ * view model to generate the label for the root element.
+ *
+ * This method allows an update policy to prevent the UI from reading the
+ * model when the UI first appears and the cache has not been populated
+ * yet. Note however that if the root element is the view input it is
+ * not shown in the view.
+ *
+ * @param rootElement The rootElement for which the cache is being
+ * pre-populated.
+ *
+ * @since 2.0
+ */
+ public Map getInitialRootElementProperties(Object rootElement);
}
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/ManualUpdatePolicy.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/ManualUpdatePolicy.java
index af34d89ed79..eb7ef70ef3e 100644
--- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/ManualUpdatePolicy.java
+++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/ui/viewmodel/update/ManualUpdatePolicy.java
@@ -10,9 +10,20 @@
*******************************************************************************/
package org.eclipse.cdt.dsf.ui.viewmodel.update;
+import java.util.Collections;
+import java.util.Map;
import java.util.Set;
+import org.eclipse.cdt.dsf.debug.ui.IDsfDebugUIConstants;
+import org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenCountUpdate;
+import org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate;
+import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider;
+import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementLabelProvider;
+import org.eclipse.debug.internal.ui.viewers.model.provisional.IHasChildrenUpdate;
+import org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate;
+import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.viewers.TreePath;
+import org.eclipse.swt.graphics.RGB;
/**
@@ -27,6 +38,47 @@ public class ManualUpdatePolicy implements IVMUpdatePolicy {
public static Object REFRESH_EVENT = new Object();
+ private static class BlankDataElement implements IElementContentProvider, IElementLabelProvider {
+
+ public void update(IHasChildrenUpdate[] updates) {
+ for (IHasChildrenUpdate update : updates) {
+ update.setHasChilren(false);
+ update.done();
+ }
+ }
+
+ public void update(IChildrenCountUpdate[] updates) {
+ for (IChildrenCountUpdate update : updates) {
+ update.setChildCount(0);
+ update.done();
+ }
+ }
+
+ public void update(IChildrenUpdate[] updates) {
+ for (IChildrenUpdate update : updates) {
+ update.done();
+ }
+ }
+
+ public void update(ILabelUpdate[] updates) {
+ RGB staleDataForeground = JFaceResources.getColorRegistry().getRGB(
+ IDsfDebugUIConstants.PREF_COLOR_STALE_DATA_FOREGROUND);
+ RGB staleDataBackground = JFaceResources.getColorRegistry().getRGB(
+ IDsfDebugUIConstants.PREF_COLOR_STALE_DATA_BACKGROUND);
+ for (ILabelUpdate update : updates) {
+ update.setLabel(ViewModelUpdateMessages.ManualUpdatePolicy_InitialDataElement__label, 0);
+ // Set the stale data color to the label. Use foreground color if column modes are enabled, and
+ // background color when there are no columns.
+ if (update.getColumnIds() != null) {
+ update.setForeground(staleDataForeground, 0);
+ } else {
+ update.setBackground(staleDataBackground, 0);
+ }
+ update.done();
+ }
+ }
+ }
+
private static class UserEditEventUpdateTester implements IElementUpdateTester {
private final Set