/** * Դ�������ƣ�ReferenceTreeContentProvider.java * �������Ȩ���������ӹɷ����޹�˾ ��Ȩ���� * ϵͳ���ƣ�JRES Studio * ģ�����ƣ�com.hundsun.ares.studio.jres.ui * ����˵����JRES Studio�Ľ���չ�ֻ�����ܺͱ༭��ع��� * ����ĵ��� * ���ߣ� */ package com.hundsun.ares.studio.ui.editor.viewers; import java.util.Collection; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EReference; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; /** * @author gongyf * */ public class ReferenceTreeContentProvider implements ITreeContentProvider { static Object[] NONE = new Object[0]; EReference reference; /** * @param reference */ public ReferenceTreeContentProvider(EReference reference) { super(); this.reference = reference; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.IContentProvider#dispose() */ @Override public void dispose() { } /* (non-Javadoc) * @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) */ @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ITreeContentProvider#getElements(java.lang.Object) */ @Override public Object[] getElements(Object inputElement) { if (inputElement instanceof EObject) { if (!((EObject) inputElement).eClass().getEAllContainments().contains(reference)) { return NONE; } Object children = ((EObject) inputElement).eGet(reference); if (children instanceof Collection) { return ((Collection) children).toArray(); } } return NONE; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object) */ @Override public Object[] getChildren(Object parentElement) { if (parentElement instanceof EObject) { if (!((EObject) parentElement).eClass().getEAllContainments().contains(reference)) { return NONE; } Object children = ((EObject) parentElement).eGet(reference); if (children instanceof Collection) { return ((Collection) children).toArray(); } } return NONE; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object) */ @Override public Object getParent(Object element) { if (element instanceof EObject) { return ((EObject) element).eContainer(); } return null; } /* (non-Javadoc) * @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object) */ @Override public boolean hasChildren(Object element) { if (element instanceof EObject) { if (!((EObject) element).eClass().getEAllContainments().contains(reference)) { return false; } Object children = ((EObject) element).eGet(reference); if (children instanceof Collection) { return !((Collection) children).isEmpty(); } } return false; } }