Bug 106243 - clear detail formatter cache when 'max detail length' pref changes
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDetailFormattersManager.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDetailFormattersManager.java
index 2595611..b84877d 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDetailFormattersManager.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaDetailFormattersManager.java
@@ -29,8 +29,8 @@
import org.eclipse.debug.core.model.IStackFrame;
import org.eclipse.debug.core.model.IVariable;
import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector;
-import org.eclipse.debug.internal.ui.IInternalDebugUIConstants;
import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.debug.ui.IValueDetailListener;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
@@ -98,6 +98,7 @@
JDIDebugUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(this);
DebugPlugin.getDefault().getLaunchManager().addLaunchListener(this);
DebugPlugin.getDefault().addDebugEventListener(this);
+ DebugUITools.getPreferenceStore().addPropertyChangeListener(this);
fCacheMap= new HashMap();
}
@@ -361,7 +362,8 @@
public void propertyChange(PropertyChangeEvent event) {
String property = event.getProperty();
if (property.equals(IJDIPreferencesConstants.PREF_DETAIL_FORMATTERS_LIST) ||
- property.equals(IJDIPreferencesConstants.PREF_SHOW_DETAILS)) {
+ property.equals(IJDIPreferencesConstants.PREF_SHOW_DETAILS) ||
+ property.equals(IDebugUIConstants.PREF_MAX_DETAIL_LENGTH)) {
populateDetailFormattersMap();
fCacheMap.clear();
// If a Java stack frame is selected in the Debug view, fire a change event on
@@ -654,7 +656,7 @@
* @return
*/
private static int getMaxDetailLength() {
- return DebugUITools.getPreferenceStore().getInt(IInternalDebugUIConstants.PREF_MAX_DETAIL_LENGTH);
+ return DebugUITools.getPreferenceStore().getInt(IDebugUIConstants.PREF_MAX_DETAIL_LENGTH);
}
}
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/DisplayAction.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/DisplayAction.java
index 7cf6a5c..aeb92a6 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/DisplayAction.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/actions/DisplayAction.java
@@ -15,8 +15,8 @@
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IValue;
-import org.eclipse.debug.internal.ui.IInternalDebugUIConstants;
import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.debug.ui.IValueDetailListener;
import org.eclipse.jdt.debug.core.IJavaType;
import org.eclipse.jdt.debug.core.IJavaValue;
@@ -113,7 +113,7 @@
* TODO: illegal internal reference to IInternalDebugUIConstants
*/
public static String trimDisplayResult(String result) {
- int max = DebugUITools.getPreferenceStore().getInt(IInternalDebugUIConstants.PREF_MAX_DETAIL_LENGTH);
+ int max = DebugUITools.getPreferenceStore().getInt(IDebugUIConstants.PREF_MAX_DETAIL_LENGTH);
if (max > 0 && result.length() > max) {
result = result.substring(0, max) + "..."; //$NON-NLS-1$
}