// ============================================================================
//
// Copyright (C) 2006-2012 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.designer.core.ui.hierarchy;
import org.eclipse.jdt.internal.ui.viewsupport.ProblemTreeViewer;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchPartSite;
import org.talend.designer.core.i18n.Messages;
/**
* DOC bqian class global comment. Detailled comment
*/
public abstract class JobHierarchyViewer extends ProblemTreeViewer {
private JobHierarchyLabelProvider fLabelProvider;
public JobHierarchyViewer(Composite parent, IContentProvider contentProvider, JobHierarchyLifeCycle lifeCycle,
IWorkbenchPart part) {
super(new Tree(parent, SWT.SINGLE));
fLabelProvider = new JobHierarchyLabelProvider(lifeCycle);
setLabelProvider(fLabelProvider);
setUseHashlookup(true);
setContentProvider(contentProvider);
// setComparator(new HierarchyViewerSorter(lifeCycle));
// fOpen = new OpenAction(part.getSite());
// addOpenListener(new IOpenListener() {
//
// public void open(OpenEvent event) {
// fOpen.run();
// }
// });
}
/**
* Returns true if the hierarchy contains elements. Returns one of them With member filtering it is possible that no
* elements are visible
*
* @return one of the elements contained
*/
public Object containsElements() {
JobHierarchyContentProvider contentProvider = getHierarchyContentProvider();
if (contentProvider != null) {
Object[] elements = contentProvider.getElements(null);
if (elements.length > 0) {
return elements[0];
}
}
return null;
}
/**
* Attaches a contextmenu listener to the tree
*
* @param menuListener the menu listener
* @param popupId the popup id
* @param viewSite the view site
*/
public void initContextMenu(IMenuListener menuListener, IWorkbenchPartSite viewSite) {
String popupId = "JobHierarchyViewer_ContextMenu"; //$NON-NLS-1$
MenuManager menuMgr = new MenuManager();
menuMgr.setRemoveAllWhenShown(true);
menuMgr.addMenuListener(menuListener);
Menu menu = menuMgr.createContextMenu(getTree());
getTree().setMenu(menu);
viewSite.registerContextMenu(popupId, menuMgr, this);
}
/**
* DOC bqian Comment method "getHierarchyContentProvider".
*
* @return
*/
private JobHierarchyContentProvider getHierarchyContentProvider() {
return (JobHierarchyContentProvider) getContentProvider();
}
/**
* Returns the title for the current view
*
* @return the title
*/
public String getTitle() {
return Messages.getString("JobHierarchyViewer.hirarchy"); //$NON-NLS-1$
}
/*
* @see TypeHierarchyViewer#updateContent
*/
public abstract void updateContent(boolean expand);
}