package org.teiid.designer.datatools.ui.dialogs; import java.util.ArrayList; import org.eclipse.datatools.connectivity.ICategory; import org.eclipse.datatools.connectivity.IConnectionProfile; import org.eclipse.datatools.connectivity.ProfileManager; import org.eclipse.jface.viewers.ILabelProviderListener; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.osgi.util.TextProcessor; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.ISharedImages; import org.eclipse.ui.PlatformUI; /** * @since 8.0 */ public class ConnectionProfileTreeProvider extends LabelProvider implements ITreeContentProvider { /** * @since 5.0 */ public ConnectionProfileTreeProvider() { super(); } @Override public Object[] getChildren(Object parentElement) { Object[] children = new Object[0]; if( parentElement instanceof ProfileManager ) { return ((ProfileManager)parentElement).getRootCategories(); } if (parentElement instanceof ICategory) { ICategory icat = (ICategory) parentElement; ArrayList arry = new ArrayList(); arry.addAll(icat.getChildCategories()); arry.addAll(icat.getAssociatedProfiles()); children = arry.toArray(); } else if (parentElement instanceof IConnectionProfile) { children = new Object[0]; } return children; } @Override public Object getParent(Object element) { Object parent = null; if (element instanceof ICategory) { parent = ((ICategory) element).getParent(); } else if (element instanceof IConnectionProfile) { parent = ((IConnectionProfile) element).getCategory(); } return parent; } @Override public boolean hasChildren(Object element) { return getChildren(element).length > 0; } @Override public Object[] getElements(Object inputElement) { return getChildren(inputElement); } @Override public void dispose() { // TODO Auto-generated method stub } @Override public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { // TODO Auto-generated method stub } @Override public Image getImage(Object element) { Image image; if (element instanceof ICategory) { image = PlatformUI.getWorkbench().getSharedImages().getImage( ISharedImages.IMG_OBJ_FOLDER); } else if (element instanceof IConnectionProfile) { image = PlatformUI.getWorkbench().getSharedImages().getImage( ISharedImages.IMG_OBJ_ELEMENT); } else { image = null; } return image; } @Override public String getText(Object element) { String text = null; if (element instanceof ProfileManager) { text = "Profile Manager"; //$NON-NLS-1$ } else if (element instanceof IConnectionProfile) { IConnectionProfile profile = (IConnectionProfile) element; text = profile.getName(); } else if (element instanceof ICategory) { text = ((ICategory)element).getName(); } else { text = super.getText(element); } if (text != null && text.trim().length() > 0) { text = TextProcessor.process(text); } return text; } @Override public void addListener(ILabelProviderListener listener) { // TODO Auto-generated method stub } @Override public boolean isLabelProperty(Object element, String property) { // TODO Auto-generated method stub return false; } @Override public void removeListener(ILabelProviderListener listener) { // TODO Auto-generated method stub } }