package org.argeo.suite.studio.parts; import java.util.Collection; import java.util.Map; import java.util.TreeMap; import javax.annotation.PostConstruct; import javax.inject.Inject; import javax.servlet.Servlet; import org.argeo.eclipse.ui.AbstractTreeContentProvider; import org.eclipse.e4.core.di.extensions.OSGiBundle; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.TreeViewerColumn; import org.eclipse.rap.rwt.application.ApplicationConfiguration; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.widgets.Composite; import org.osgi.framework.BundleContext; import org.osgi.framework.InvalidSyntaxException; import org.osgi.framework.ServiceReference; /** Overview of the URL paths provides by the system. */ @SuppressWarnings("restriction") public class SiteMapPart { // private final static BundleContext bc = FrameworkUtil.getBundle(SiteMapPart.class).getBundleContext(); private TreeViewer viewer; @Inject @OSGiBundle BundleContext bc; @PostConstruct public void createPartControl(Composite parent) { // new Label(parent, SWT.NONE).setText("TEST"); // viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); // viewer.getTree().setHeaderVisible(true); // viewer.setLabelProvider(new ColumnLabelProvider()); TreeViewerColumn column = new TreeViewerColumn(viewer, SWT.NONE); column.getColumn().setWidth(200); column.getColumn().setText("Path"); column.setLabelProvider(new ColumnLabelProvider() { private static final long serialVersionUID = -3122136344359358605L; public String getText(Object element) { return ((SiteElem) element).getPath(); } @Override public Image getImage(Object element) { return super.getImage(element); } }); viewer.setContentProvider(new SitePathContentProvider()); viewer.setInput(bc); } class SitePathContentProvider extends AbstractTreeContentProvider { private static final long serialVersionUID = -5650173256183322051L; @Override public Object[] getElements(Object inputElement) { if (inputElement instanceof BundleContext) { BundleContext bundleContext = (BundleContext) inputElement; Map siteElems = new TreeMap<>(); try { Collection> rwtApps = bundleContext .getServiceReferences(ApplicationConfiguration.class, null); for (ServiceReference sr : rwtApps) { RwtAppElem elem = new RwtAppElem(sr); siteElems.put(elem.getPath(), elem); } Collection> plainServlets = bundleContext .getServiceReferences(Servlet.class, null); for (ServiceReference sr : plainServlets) { ServletElem elem = new ServletElem(sr); siteElems.put(elem.getPath(), elem); } } catch (InvalidSyntaxException e) { throw new IllegalArgumentException(e); } return siteElems.values().toArray(); } return null; } } }