X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=systems%2Forg.argeo.suite.studio%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fstudio%2Fparts%2FSiteMapPart.java;fp=systems%2Forg.argeo.suite.studio%2Fsrc%2Forg%2Fargeo%2Fsuite%2Fstudio%2Fparts%2FSiteMapPart.java;h=db7911f888df2aa1460734b7b5e8bb37b2834caa;hb=baf563976c7595d5e50f2e38bb684196618b402f;hp=0000000000000000000000000000000000000000;hpb=129a2170cfbfaa6a972f79068d6892f9c2bb1d08;p=gpl%2Fargeo-suite.git diff --git a/systems/org.argeo.suite.studio/src/org/argeo/suite/studio/parts/SiteMapPart.java b/systems/org.argeo.suite.studio/src/org/argeo/suite/studio/parts/SiteMapPart.java new file mode 100644 index 0000000..db7911f --- /dev/null +++ b/systems/org.argeo.suite.studio/src/org/argeo/suite/studio/parts/SiteMapPart.java @@ -0,0 +1,96 @@ +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; + } + + } +}