/** * <copyright> * </copyright> * * */ package org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.debug; @SuppressWarnings("restriction") public class MtextAdapterFactory implements org.eclipse.core.runtime.IAdapterFactory { @SuppressWarnings("rawtypes") public Object getAdapter(Object adaptableObject, Class adapterType) { if (adaptableObject instanceof org.eclipse.ui.texteditor.ITextEditor) { org.eclipse.ui.texteditor.ITextEditor editorPart = (org.eclipse.ui.texteditor.ITextEditor) adaptableObject; org.eclipse.core.resources.IResource resource = (org.eclipse.core.resources.IResource) editorPart.getEditorInput().getAdapter(org.eclipse.core.resources.IResource.class); if (resource != null) { String extension = resource.getFileExtension(); if (extension != null && extension.equals(new org.feature.multi.perspective.mapping.viewmapping.resource.mtext.mopp.MtextMetaInformation().getSyntaxName())) { return new org.feature.multi.perspective.mapping.viewmapping.resource.mtext.ui.debug.MtextLineBreakpointAdapter(); } } } if (adapterType == org.eclipse.debug.internal.ui.viewers.model.provisional.IElementLabelProvider.class && adaptableObject instanceof org.feature.multi.perspective.mapping.viewmapping.resource.mtext.debug.MtextDebugVariable) { final org.feature.multi.perspective.mapping.viewmapping.resource.mtext.debug.MtextDebugVariable variable = (org.feature.multi.perspective.mapping.viewmapping.resource.mtext.debug.MtextDebugVariable) adaptableObject; return new org.eclipse.debug.internal.ui.viewers.model.provisional.IElementLabelProvider() { public void update(org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate[] updates) { for (org.eclipse.debug.internal.ui.viewers.model.provisional.ILabelUpdate update : updates) { try { update.setLabel(variable.getName(), 0); update.setLabel(variable.getValue().getValueString(), 1); update.done(); } catch (org.eclipse.debug.core.DebugException e) { } } } }; } if (adapterType == org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider.class && adaptableObject instanceof org.feature.multi.perspective.mapping.viewmapping.resource.mtext.debug.MtextDebugVariable) { final org.feature.multi.perspective.mapping.viewmapping.resource.mtext.debug.MtextDebugVariable variable = (org.feature.multi.perspective.mapping.viewmapping.resource.mtext.debug.MtextDebugVariable) adaptableObject; return new org.eclipse.debug.internal.ui.viewers.model.provisional.IElementContentProvider() { public void update(org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenCountUpdate[] updates) { try { for (org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenCountUpdate update : updates) { org.eclipse.debug.core.model.IValue value = variable.getValue(); org.feature.multi.perspective.mapping.viewmapping.resource.mtext.debug.MtextDebugValue castedValue = (org.feature.multi.perspective.mapping.viewmapping.resource.mtext.debug.MtextDebugValue) value; update.setChildCount(castedValue.getVariableCount()); update.done(); } } catch (org.eclipse.debug.core.DebugException e) { e.printStackTrace(); } } public void update(org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate[] updates) { try { org.eclipse.debug.core.model.IValue value = variable.getValue(); org.feature.multi.perspective.mapping.viewmapping.resource.mtext.debug.MtextDebugValue castedValue = (org.feature.multi.perspective.mapping.viewmapping.resource.mtext.debug.MtextDebugValue) value; for (org.eclipse.debug.internal.ui.viewers.model.provisional.IChildrenUpdate update : updates) { int offset = update.getOffset(); int length = update.getLength(); for (int i = offset; i < offset + length; i++) { org.eclipse.debug.core.model.IVariable variable = castedValue.getChild(i); update.setChild(variable, i); } update.done(); } } catch (org.eclipse.debug.core.DebugException e) { e.printStackTrace(); } } public void update(org.eclipse.debug.internal.ui.viewers.model.provisional.IHasChildrenUpdate[] updates) { for (org.eclipse.debug.internal.ui.viewers.model.provisional.IHasChildrenUpdate update : updates) { try { update.setHasChilren(variable.getValue().hasVariables()); update.done(); } catch (org.eclipse.debug.core.DebugException e) { e.printStackTrace(); } } } }; } return null; } @SuppressWarnings("rawtypes") public Class[] getAdapterList() { return new Class[] {org.eclipse.debug.ui.actions.IToggleBreakpointsTarget.class}; } }