/******************************************************************************* * Copyright (c) 2005, 2012 eBay Inc. * 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 * *******************************************************************************/ /** * */ package org.eclipse.vjet.eclipse.internal.ui.view.scriptunit; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.vjet.dsf.jst.BaseJstNode; import org.eclipse.vjet.dsf.jst.IJstType; /** * * */ class ScriptUnitTreeContentProvider implements ITreeContentProvider { private IJstType scriptUnit; /* (non-Javadoc) * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object) */ public Object[] getChildren(Object parentElement) { if (parentElement.getClass().isArray()) { return (Object[])parentElement; } // if (parentElement instanceof IJstType) { // return this.getScriptUnitChildren((IJstType)parentElement); // } if (parentElement instanceof IJstType) { IJstType jstType = (IJstType)parentElement; List children = new ArrayList(); //add embeded types if(jstType.getEmbededTypes() != null) { Collections.addAll(children, jstType.getEmbededTypes().toArray()); } //add children Collections.addAll(children, jstType.getChildren().toArray()); return children.toArray(); } if (parentElement instanceof BaseJstNode) { List<BaseJstNode> children = ((BaseJstNode)parentElement).getChildren(); return children.toArray(new BaseJstNode[children.size()]); } return new Object[0]; } private Object[] getScriptUnitChildren(IJstType scriptUnit) { List children = new ArrayList(); //add jst type if (scriptUnit != null) children.add(scriptUnit); // //syntax root // if (scriptUnit.getSyntaxRoot() != null) // children.add(scriptUnit.getSyntaxRoot()); //jst block list if (scriptUnit.getJstBlockList()!=null && scriptUnit.getJstBlockList().size() > 0) children.addAll(scriptUnit.getJstBlockList()); // //problem // if (scriptUnit.getProblems().size() > 0) // children.add(scriptUnit.getProblems()); return children.toArray(); } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object) */ public Object getParent(Object element) { if (element instanceof IJstType) { if (((IJstType)element).getOuterType() != null) return ((IJstType)element).getOuterType(); return this.scriptUnit; } if (element instanceof BaseJstNode) return ((BaseJstNode)element).getParentNode(); return null; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object) */ public boolean hasChildren(Object element) { return this.getChildren(element).length > 0; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object) */ public Object[] getElements(Object inputElement) { return this.getChildren(inputElement); } /* (non-Javadoc) * @see org.eclipse.jface.viewers.IContentProvider#dispose() */ public void dispose() { // TODO Auto-generated method stub } /* (non-Javadoc) * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) */ public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { // TODO Auto-generated method stub } /** * @param scriptUnit the scriptUnit to set */ public void setScriptUnit(IJstType scriptUnit) { this.scriptUnit = scriptUnit; } }