protected void updatePreviewText(IStructuredSelection selection) { if (previewText == null) return; VariableTreeContentProvider contentProvider = (VariableTreeContentProvider) super.getTreeViewer().getContentProvider(); Object[] path = contentProvider.getPathToRoot(selection.getFirstElement()); String preview = "$"; // $NON-NLS-1$ if (path != null) { Variable var = null; for (int i = path.length - 1; i >= 0; i--) { String targetNamespace = null; String namespacePrefix = null; String segment = null; Object modelObject = BPELUtil.resolveXSDObject(((ITreeNode) path[i]).getModelObject()); ; if (modelObject instanceof Variable) { var = (Variable) modelObject; segment = var.getName(); } else if (modelObject instanceof XSDAttributeDeclaration) { XSDAttributeDeclaration att = (XSDAttributeDeclaration) modelObject; targetNamespace = att.getTargetNamespace(); if (targetNamespace != null) { namespacePrefix = BPELUtils.getNamespacePrefix(var, targetNamespace); Assert.isNotNull(namespacePrefix, XPathExpressionUtil.MSG_NS_PREFIX_NULL); segment = "/@" + namespacePrefix + ":" + att.getName(); // $NON-NLS-1$ //$NON-NLS-2$ } else { segment = "/@" + att.getName(); // $NON-NLS-1$ } } else if (modelObject instanceof XSDElementDeclaration) { XSDElementDeclaration elm = (XSDElementDeclaration) modelObject; targetNamespace = elm.getTargetNamespace(); XSDTypeDefinition typeDef = elm.getType(); XSDParticle particle = typeDef.getComplexType(); boolean isArray = particle != null && (particle.getMaxOccurs() == XSDParticle.UNBOUNDED || particle.getMaxOccurs() > 1); if (targetNamespace != null) { namespacePrefix = BPELUtils.getNamespacePrefix(var, targetNamespace); Assert.isNotNull(namespacePrefix, XPathExpressionUtil.MSG_NS_PREFIX_NULL); segment = "/" + namespacePrefix + ":" + elm.getName(); // $NON-NLS-1$ //$NON-NLS-2$ } else { segment = "/" + elm.getName(); // $NON-NLS-1$ } if (isArray) { segment += "[1]"; // $NON-NLS-1$ } } else if (modelObject instanceof Part) { Part part = (Part) modelObject; segment = "." + part.getName(); // $NON-NLS-1$ } if (segment != null) preview += segment; } // store away value previewText.setText(preview); thePreviewText = preview; } }