Skip to content

Commit 91f9022

Browse files
Remove OpenDeclareType & OpenTypeHierarchy for Primitive Types & Arrays (#666)
Removed the OpenDeclareType & OpenTypeHierarchy for the primitive types and the arrays from from the variable view Fixes: #665
1 parent 3771b55 commit 91f9022

2 files changed

Lines changed: 54 additions & 12 deletions

File tree

org.eclipse.jdt.debug.ui/plugin.xml

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -706,6 +706,31 @@
706706
id="org.eclipse.jdt.debug.ui.actions.OpenVariableConcreteType">
707707
</action>
708708
</objectContribution>
709+
<objectContribution
710+
objectClass="org.eclipse.jdt.debug.core.IJavaVariable"
711+
id="org.eclipse.jdt.debug.ui.FilteredJavaVariableActions">
712+
<filter
713+
name="PrimitiveVariableActionFilter"
714+
value="isPrimitive">
715+
</filter>
716+
<action
717+
label="%openDeclLocalVarNavigation.label"
718+
helpContextId="open_variable_declared_type_hierarchy_action_context"
719+
tooltip="%openDeclLocalVarNavigation.tooltip"
720+
class="org.eclipse.jdt.internal.debug.ui.actions.NavigateToVarDeclAction"
721+
menubarPath="emptyNavigationGroup"
722+
enablesFor="1"
723+
id="org.eclipse.jdt.debug.ui.actions.OpenDeclLocalVarNavigation">
724+
</action>
725+
<visibility>
726+
<not>
727+
<objectState
728+
name="JavaVariableFilter"
729+
value="isLocalVariableValue">
730+
</objectState>
731+
</not>
732+
</visibility>
733+
</objectContribution>
709734
<objectContribution
710735
objectClass="org.eclipse.jdt.debug.core.IJavaVariable"
711736
id="org.eclipse.jdt.debug.ui.FilteredJavaVariableActions">
@@ -747,20 +772,11 @@
747772
enablesFor="1"
748773
id="org.eclipse.jdt.debug.ui.actions.OpenVariableDeclaredType">
749774
</action>
750-
<action
751-
label="%openDeclLocalVarNavigation.label"
752-
helpContextId="open_variable_declared_type_hierarchy_action_context"
753-
tooltip="%openDeclLocalVarNavigation.tooltip"
754-
class="org.eclipse.jdt.internal.debug.ui.actions.NavigateToVarDeclAction"
755-
menubarPath="emptyNavigationGroup"
756-
enablesFor="1"
757-
id="org.eclipse.jdt.debug.ui.actions.OpenDeclLocalVarNavigation">
758-
</action>
759775
<visibility>
760776
<not>
761777
<objectState
762778
name="JavaVariableFilter"
763-
value="isLocalVariableValue">
779+
value="isNonPrimitiveNonArray">
764780
</objectState>
765781
</not>
766782
</visibility>

org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JavaVarActionFilter.java

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.eclipse.jdt.internal.debug.core.model.JDINullValue;
3232
import org.eclipse.jdt.internal.debug.core.model.JDIObjectValue;
3333
import org.eclipse.jdt.internal.debug.core.model.JDIPlaceholderValue;
34+
import org.eclipse.jdt.internal.debug.core.model.JDIPrimitiveValue;
3435
import org.eclipse.jdt.internal.debug.core.model.JDIReferenceListVariable;
3536
import org.eclipse.jdt.internal.debug.ui.display.JavaInspectExpression;
3637
import org.eclipse.ui.IActionFilter;
@@ -48,6 +49,7 @@ public class JavaVarActionFilter implements IActionFilter {
4849
* The set or primitive types
4950
*/
5051
private static final Set<String> fgPrimitiveTypes = initPrimitiveTypes();
52+
private static final Set<String> fgArrays = initArrays();
5153

5254
/**
5355
* The predefined set of primitive types
@@ -67,9 +69,29 @@ private static Set<String> initPrimitiveTypes() {
6769
return set;
6870
}
6971

72+
/**
73+
* The predefined set of primitive arrays
74+
*
75+
* @return the set of predefined primitive arrays types
76+
*/
77+
private static Set<String> initArrays() {
78+
HashSet<String> set = new HashSet<>(8);
79+
set.add("short[]"); //$NON-NLS-1$
80+
set.add("int[]"); //$NON-NLS-1$
81+
set.add("long[]"); //$NON-NLS-1$
82+
set.add("float[]"); //$NON-NLS-1$
83+
set.add("double[]"); //$NON-NLS-1$
84+
set.add("boolean[]"); //$NON-NLS-1$
85+
set.add("byte[]"); //$NON-NLS-1$
86+
set.add("char[]"); //$NON-NLS-1$
87+
return set;
88+
}
89+
7090
/**
7191
* Determines if the declared value is the same as the concrete value
72-
* @param var the variable to inspect
92+
*
93+
* @param var
94+
* the variable to inspect
7395
* @return true if the types are the same, false otherwise
7496
*/
7597
protected boolean isDeclaredSameAsConcrete(IJavaVariable var) {
@@ -211,6 +233,10 @@ else if (value.equals("isValuePrimitive")) { //$NON-NLS-1$
211233
if (value.equals("isLocalVariableValue")) { //$NON-NLS-1$
212234
return !(var instanceof JDILocalVariable);
213235
}
236+
if (value.equals("isNonPrimitiveNonArray")) { //$NON-NLS-1$
237+
boolean primArray = fgArrays.contains(var.getJavaType().getName());
238+
return (varValue instanceof JDIPrimitiveValue || primArray);
239+
}
214240
}
215241
else if (name.equals("ConcreteVariableActionFilter") && value.equals("isConcrete")) { //$NON-NLS-1$ //$NON-NLS-2$
216242
return isDeclaredSameAsConcrete(var);
@@ -279,4 +305,4 @@ else if (name.equals("DetailFormatterFilter")) { //$NON-NLS-1$
279305
protected boolean isInstanceRetrievalAvailable(IJavaVariable var) {
280306
return ((IJavaDebugTarget)var.getDebugTarget()).supportsInstanceRetrieval() && !(var instanceof JDIReferenceListVariable);
281307
}
282-
}
308+
}

0 commit comments

Comments
 (0)