/** * <copyright> * </copyright> * * */ package ssl.resource.ssl.mopp; public class SslLayoutInformation { private final ssl.resource.ssl.grammar.SslSyntaxElement syntaxElement; private final int startOffset; private final String hiddenTokenText; private final String visibleTokenText; private Object object; private boolean wasResolved; public SslLayoutInformation(ssl.resource.ssl.grammar.SslSyntaxElement syntaxElement, Object object, int startOffset, String hiddenTokenText, String visibleTokenText) { super(); this.syntaxElement = syntaxElement; this.object = object; this.startOffset = startOffset; this.hiddenTokenText = hiddenTokenText; this.visibleTokenText = visibleTokenText; } public ssl.resource.ssl.grammar.SslSyntaxElement getSyntaxElement() { return syntaxElement; } public int getStartOffset() { return startOffset; } public Object getObject(org.eclipse.emf.ecore.EObject container) { if (wasResolved) { return object; } // we need to try to resolve proxy objects again, because the proxy might have // been resolved before this adapter existed, which means we missed the // replaceProxy() notification if (object instanceof org.eclipse.emf.ecore.InternalEObject) { org.eclipse.emf.ecore.InternalEObject internalObject = (org.eclipse.emf.ecore.InternalEObject) object; if (internalObject.eIsProxy()) { if (container instanceof org.eclipse.emf.ecore.InternalEObject) { org.eclipse.emf.ecore.InternalEObject internalContainer = (org.eclipse.emf.ecore.InternalEObject) container; org.eclipse.emf.ecore.EObject resolvedObject = internalContainer.eResolveProxy(internalObject); if (resolvedObject != internalObject) { object = resolvedObject; wasResolved = true; } } } } else { wasResolved = true; } return object; } public String getHiddenTokenText() { return hiddenTokenText; } public String getVisibleTokenText() { return visibleTokenText; } public void replaceProxy(org.eclipse.emf.ecore.EObject proxy, org.eclipse.emf.ecore.EObject target) { if (this.object == proxy) { this.object = target; } } }