IDEA-141792 Alternative source available for the class ... should be closable and/or disabled

This commit is contained in:
Egor.Ushakov
2015-11-26 19:23:26 +03:00
parent e9bc846a5a
commit ffd322b62f
4 changed files with 27 additions and 3 deletions
@@ -43,6 +43,7 @@ import java.awt.event.ItemListener;
*/
public class DebuggerDataViewsConfigurable implements SearchableConfigurable {
private JCheckBox myCbAutoscroll;
private JCheckBox myCbShowAlternative;
private JCheckBox myCbShowSyntheticFields;
private StateRestoringCheckBox myCbShowValFieldsAsLocalVariables;
private JCheckBox myCbHideNullArrayElements;
@@ -89,6 +90,7 @@ public class DebuggerDataViewsConfigurable implements SearchableConfigurable {
final JPanel panel = new JPanel(new GridBagLayout());
myCbAutoscroll = new JCheckBox(DebuggerBundle.message("label.base.renderer.configurable.autoscroll"));
myCbShowAlternative = new JCheckBox(DebuggerBundle.message("label.base.renderer.configurable.alternative"));
myCbShowSyntheticFields = new JCheckBox(DebuggerBundle.message("label.base.renderer.configurable.show.synthetic.fields"));
myCbShowValFieldsAsLocalVariables = new StateRestoringCheckBox(DebuggerBundle.message("label.base.renderer.configurable.show.val.fields.as.locals"));
myCbHideNullArrayElements = new JCheckBox(DebuggerBundle.message("label.base.renderer.configurable.hide.null.array.elements"));
@@ -147,7 +149,7 @@ public class DebuggerDataViewsConfigurable implements SearchableConfigurable {
});
panel.add(myCbAutoscroll, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(4, 0, 0, 0), 0, 0));
panel.add(myCbShowAlternative, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(4, 0, 0, 0), 0, 0));
final JPanel showPanel = new JPanel(new GridBagLayout());
showPanel.setBorder(IdeBorderFactory.createTitledBorder("Show", true));
@@ -190,6 +192,7 @@ public class DebuggerDataViewsConfigurable implements SearchableConfigurable {
final NodeRendererSettings rendererSettings = NodeRendererSettings.getInstance();
generalSettings.AUTOSCROLL_TO_NEW_LOCALS = myCbAutoscroll.isSelected();
generalSettings.SHOW_ALTERNATIVE_SOURCE = myCbShowAlternative.isSelected();
rendererSettings.setAlternateCollectionViewsEnabled(myCbEnableAlternateViews.isSelected());
generalSettings.HIDE_NULL_ARRAY_ELEMENTS = myCbHideNullArrayElements.isSelected();
@@ -220,6 +223,7 @@ public class DebuggerDataViewsConfigurable implements SearchableConfigurable {
final NodeRendererSettings rendererSettings = NodeRendererSettings.getInstance();
myCbAutoscroll.setSelected(generalSettings.AUTOSCROLL_TO_NEW_LOCALS);
myCbShowAlternative.setSelected(generalSettings.SHOW_ALTERNATIVE_SOURCE);
myCbHideNullArrayElements.setSelected(generalSettings.HIDE_NULL_ARRAY_ELEMENTS);
myCbEnableAlternateViews.setSelected(rendererSettings.areAlternateCollectionViewsEnabled());
@@ -263,6 +267,7 @@ public class DebuggerDataViewsConfigurable implements SearchableConfigurable {
private boolean areGeneralSettingsModified() {
ViewsGeneralSettings generalSettings = ViewsGeneralSettings.getInstance();
return generalSettings.AUTOSCROLL_TO_NEW_LOCALS != myCbAutoscroll.isSelected() ||
generalSettings.SHOW_ALTERNATIVE_SOURCE != myCbShowAlternative.isSelected() ||
generalSettings.HIDE_NULL_ARRAY_ELEMENTS != myCbHideNullArrayElements.isSelected();
}
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
* Copyright 2000-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -26,6 +26,7 @@ public class ViewsGeneralSettings implements PersistentStateComponent<ViewsGener
public boolean SHOW_OBJECTID = true;
public boolean HIDE_NULL_ARRAY_ELEMENTS = true;
public boolean AUTOSCROLL_TO_NEW_LOCALS = true;
public boolean SHOW_ALTERNATIVE_SOURCE = true;
public static ViewsGeneralSettings getInstance() {
return ServiceManager.getService(ViewsGeneralSettings.class);
@@ -46,6 +47,7 @@ public class ViewsGeneralSettings implements PersistentStateComponent<ViewsGener
ViewsGeneralSettings generalSettings = ((ViewsGeneralSettings)object);
return SHOW_OBJECTID == generalSettings.SHOW_OBJECTID &&
HIDE_NULL_ARRAY_ELEMENTS == generalSettings.HIDE_NULL_ARRAY_ELEMENTS &&
AUTOSCROLL_TO_NEW_LOCALS == generalSettings.AUTOSCROLL_TO_NEW_LOCALS;
AUTOSCROLL_TO_NEW_LOCALS == generalSettings.AUTOSCROLL_TO_NEW_LOCALS &&
SHOW_ALTERNATIVE_SOURCE == generalSettings.SHOW_ALTERNATIVE_SOURCE;
}
}
@@ -17,6 +17,7 @@ package com.intellij.debugger.ui;
import com.intellij.debugger.DebuggerBundle;
import com.intellij.debugger.impl.DebuggerUtilsEx;
import com.intellij.debugger.settings.ViewsGeneralSettings;
import com.intellij.ide.highlighter.JavaClassFileType;
import com.intellij.ide.util.ModuleRendererFactory;
import com.intellij.openapi.fileEditor.FileEditor;
@@ -65,6 +66,9 @@ public class AlternativeSourceNotificationProvider extends EditorNotifications.P
@Nullable
@Override
public EditorNotificationPanel createNotificationPanel(@NotNull VirtualFile file, @NotNull FileEditor fileEditor) {
if (!ViewsGeneralSettings.getInstance().SHOW_ALTERNATIVE_SOURCE) {
return null;
}
XDebugSession session = XDebuggerManager.getInstance(myProject).getCurrentSession();
if (session == null) {
FILE_PROCESSED_KEY.set(file, null);
@@ -170,6 +174,18 @@ public class AlternativeSourceNotificationProvider extends EditorNotifications.P
}
});
myLinksPanel.add(switcher);
createActionLabel(DebuggerBundle.message("action.disable.text"), new Runnable() {
@Override
public void run() {
ViewsGeneralSettings.getInstance().SHOW_ALTERNATIVE_SOURCE = false;
FILE_PROCESSED_KEY.set(file, null);
FileEditorManager fileEditorManager = FileEditorManager.getInstance(project);
FileEditor editor = fileEditorManager.getSelectedEditor(file);
if (editor != null) {
fileEditorManager.removeTopComponent(editor, AlternativeSourceNotificationPanel.this);
}
}
});
}
}
}
@@ -189,6 +189,7 @@ label.array.renderer.configurable.end.index=en&d index:
label.array.renderer.configurable.max.count1=Show &maximum
label.array.renderer.configurable.max.count2=array elements
label.base.renderer.configurable.autoscroll=Autoscroll to new &local variables
label.base.renderer.configurable.alternative=Show alternative source switcher
label.base.renderer.configurable.show.synthetic.fields=S&ynthetic fields
label.base.renderer.configurable.show.val.fields.as.locals=$val fields as local &variables
label.base.renderer.configurable.sort.alphabetically=Sort a&lphabetically