/******************************************************************************* * Copyright (c) 2005, 2012 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.bpel.ui.details.tree; import java.util.Vector; import org.eclipse.bpel.ui.util.BPELUtil; import org.eclipse.xsd.XSDComplexTypeDefinition; import org.eclipse.xsd.XSDElementDeclaration; import org.eclipse.xsd.XSDTypeDefinition; public class XSDElementDeclarationTreeNode extends XSDTreeNode { public XSDElementDeclarationTreeNode(XSDElementDeclaration element, boolean isCondensed) { super(element, isCondensed); } public XSDElementDeclaration getResolvedModelObject() { return (XSDElementDeclaration)BPELUtil.resolveXSDObject(modelObject); } @Override public Object[] getChildren() { XSDTypeDefinition xsdType = getResolvedModelObject().getType(); if (xsdType instanceof XSDComplexTypeDefinition) { Vector<TreeNode> v = new Vector<TreeNode>(); XSDComplexTypeDefinition comp = (XSDComplexTypeDefinition) xsdType; addComplexTypeContent(comp, v); return v.toArray(); } return EMPTY_ARRAY; } @Override public boolean hasChildren() { XSDElementDeclaration element = getResolvedModelObject(); XSDTypeDefinition xsdType = element.getType(); if (xsdType == null) { xsdType = element.getTypeDefinition(); } if (xsdType instanceof XSDComplexTypeDefinition) { XSDComplexTypeDefinition comp = (XSDComplexTypeDefinition) xsdType; return complexTypeHasChildren(comp); } return false; } @Override public String getLabel() { XSDElementDeclaration element = getResolvedModelObject(); String name = element.getName(); return (name != null) ? name : ""; //$NON-NLS-1$ } @Override public String getLabelSuffix() { XSDElementDeclaration element = getResolvedModelObject(); XSDTypeDefinition type = element.getType(); return (type != null) ? type.getName() : null; // note: null, not "" } }