Bug 516374 - [variables] Hide "Logical Structure" overlay when logical
structures are disabled

Change-Id: Ibea62493959f260e7aecb65ba0523f435156e3dd
diff --git a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JDIModelPresentation.java b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JDIModelPresentation.java
index 71350ff..5750161 100644
--- a/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JDIModelPresentation.java
+++ b/org.eclipse.jdt.debug.ui/ui/org/eclipse/jdt/internal/debug/ui/JDIModelPresentation.java
@@ -36,6 +36,7 @@
 import org.eclipse.debug.core.sourcelookup.containers.ZipEntryStorage;
 import org.eclipse.debug.internal.ui.DebugUIPlugin;
 import org.eclipse.debug.internal.ui.DefaultLabelProvider;
+import org.eclipse.debug.internal.ui.views.variables.VariablesView;
 import org.eclipse.debug.ui.DebugUITools;
 import org.eclipse.debug.ui.IDebugModelPresentation;
 import org.eclipse.debug.ui.IDebugModelPresentationExtension;
@@ -97,6 +98,8 @@
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.ui.IEditorDescriptor;
 import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IViewPart;
+import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.PlatformUI;
@@ -1146,9 +1149,25 @@
             try {
                 IValue value= ((IVariable) element).getValue();
                 ILogicalStructureType[] types = DebugPlugin.getLogicalStructureTypes(value);
-		        if (types.length > 0) {
-		        	return flags |= JDIImageDescriptor.LOGICAL_STRUCTURE;
+				if (types.length == 0) {
+					return flags; // no logical structure is defined for the value type
 		        }
+				ILogicalStructureType enabledType = DebugPlugin.getDefaultStructureType(types);
+				if (enabledType == null) {
+					return flags; // no logical structure is enabled for this type
+				}
+				IWorkbenchWindow[] windows = PlatformUI.getWorkbench().getWorkbenchWindows();
+				for (IWorkbenchWindow window : windows) {
+					IWorkbenchPage page = window.getActivePage();
+					IViewPart viewPart = page.findView(IDebugUIConstants.ID_VARIABLE_VIEW);
+					if (viewPart instanceof VariablesView) {
+						if (((VariablesView) viewPart).isShowLogicalStructure()) {
+							// a logical structure is enabled for this type and global toggle to show logical structure is on
+							return flags |= JDIImageDescriptor.LOGICAL_STRUCTURE;
+						}
+						return flags;
+					}
+				}
             }catch (DebugException e) {
 				DebugUIPlugin.log(e.getStatus());
             }