/** * This file is protected by Copyright. * Please refer to the COPYRIGHT file distributed with this source distribution. * * This file is part of REDHAWK IDE. * * 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 gov.redhawk.ui.views.namebrowser.view.internal; import gov.redhawk.ui.views.namebrowser.NameBrowserPlugin; import gov.redhawk.ui.views.namebrowser.view.BindingNode; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.ISchedulingRule; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.SWT; import org.eclipse.swt.widgets.Display; import org.eclipse.ui.progress.IDeferredWorkbenchAdapter; import org.eclipse.ui.progress.IElementCollector; /** * */ public class BindingNodeDefferedWorkbenchAdapter implements IDeferredWorkbenchAdapter { /** * {@inheritDoc} */ @Override public Object[] getChildren(final Object o) { return ((BindingNode) o).getContents(); } /** * {@inheritDoc} */ @Override public ImageDescriptor getImageDescriptor(final Object object) { final BindingNode bind = (BindingNode) object; switch (bind.getType()) { case CONTEXT: return NameBrowserPlugin.getDefault().getImageRegistry().getDescriptor(NameBrowserPlugin.CONTEXT); case OBJECT: return NameBrowserPlugin.getDefault().getImageRegistry().getDescriptor(NameBrowserPlugin.OBJECT); case ROOT: return NameBrowserPlugin.getDefault().getImageRegistry().getDescriptor(NameBrowserPlugin.NAMESERVER); default: return null; } } /** * {@inheritDoc} */ @Override public String getLabel(final Object element) { String text = ""; if (element instanceof BindingNode) { final BindingNode n = (BindingNode) element; if (n.getBinding() == null) { return n.getHost().substring(n.getHost().indexOf("::") + 2); } else { text = n.getBinding().binding_name[0].id; } } return text; } /** * {@inheritDoc} */ @Override public Object getParent(final Object o) { return ((BindingNode) o).getParent(); } /** * {@inheritDoc} */ @Override public void fetchDeferredChildren(final Object object, final IElementCollector collector, final IProgressMonitor monitor) { final BindingNode node = (BindingNode) object; try { if (Display.getCurrent() != null) { Display.getCurrent().asyncExec(new Runnable() { @Override public void run() { collector.add(node.fetchContents(), monitor); } }); } else { if (SWT.getPlatform().startsWith("rap")) { Display display = NameBrowserPlugin.getDefault().getDisplay(); if (display != null) { display.asyncExec(new Runnable() { @Override public void run() { collector.add(node.fetchContents(), monitor); } }); } else { NameBrowserPlugin.getDefault().getLog().log(new Status( Status.ERROR, NameBrowserPlugin.PLUGIN_ID, "Unable to retrieve defrrred children from non-UI thread")); } } else { collector.add(node.fetchContents(), monitor); } } } finally { if (Display.getCurrent() != null) { Display.getCurrent().asyncExec(new Runnable() { @Override public void run() { collector.done(); } }); } else { if (SWT.getPlatform().startsWith("rap")) { Display display = NameBrowserPlugin.getDefault().getDisplay(); if (display != null) { display.asyncExec(new Runnable() { @Override public void run() { collector.add(node.fetchContents(), monitor); } }); } else { NameBrowserPlugin.getDefault().getLog().log(new Status( Status.ERROR, NameBrowserPlugin.PLUGIN_ID, "Unable to retrieve defrrred children from non-UI thread")); } } else { collector.done(); } } } } /** * {@inheritDoc} */ @Override public boolean isContainer() { return true; } /** * {@inheritDoc} */ @Override public ISchedulingRule getRule(final Object object) { return null; } }