*/
package org.argeo.slc.client.ui.dist.editors;
+import java.net.URL;
import java.util.List;
import javax.jcr.Node;
import org.argeo.slc.SlcException;
import org.argeo.slc.client.ui.dist.DistConstants;
import org.argeo.slc.client.ui.dist.DistImages;
+import org.argeo.slc.client.ui.dist.utils.AbstractHyperlinkListener;
import org.argeo.slc.jcr.SlcNames;
import org.argeo.slc.jcr.SlcTypes;
+import org.argeo.slc.repo.RepoConstants;
+import org.argeo.slc.repo.RepoUtils;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Tree;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.browser.IWebBrowser;
+import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
import org.eclipse.ui.forms.IManagedForm;
import org.eclipse.ui.forms.editor.FormEditor;
import org.eclipse.ui.forms.editor.FormPage;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.Hyperlink;
import org.eclipse.ui.forms.widgets.ScrolledForm;
import org.eclipse.ui.forms.widgets.Section;
createField(details, "Symbolic name", SlcNames.SLC_SYMBOLIC_NAME);
createField(details, "Version", SlcNames.SLC_BUNDLE_VERSION);
createField(details, "Group Id", SlcNames.SLC_GROUP_ID);
- // Single sourcing issue: this does not works with rap
- // createHyperlink(details, "Licence",
- // DistConstants.SLC_BUNDLE_LICENCE);
- createField(details, "Licence", DistConstants.SLC_BUNDLE_LICENCE);
-
+ createHyperlink(details, "Licence", DistConstants.SLC_BUNDLE_LICENCE);
createField(details, "Vendor", DistConstants.SLC_BUNDLE_VENDOR);
+ addSourceAvailableLabel(details);
+
+ }
+ // helper to check if sources are available
+ private void addSourceAvailableLabel(Composite parent) {
+ Button srcChk = toolkit.createButton(parent, "Sources available",
+ SWT.CHECK);
+ srcChk.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 2, 1));
+
+ try {
+ String srcPath = RepoUtils.relatedPdeSourcePath(
+ RepoConstants.DEFAULT_ARTIFACTS_BASE_PATH, currBundle);
+ srcChk.setSelection(currBundle.getSession().nodeExists(srcPath));
+ } catch (RepositoryException e) {
+ throw new SlcException("Unable to check sources", e);
+ }
+ srcChk.setEnabled(false);
}
// Workaround to add an artificial level to the export package browser
public Image getImage(Object element) {
if (element instanceof Node) {
try {
-
Node node = (Node) element;
if (node.isNodeType(SlcTypes.SLC_EXPORTED_PACKAGE))
return DistImages.IMG_PACKAGE;
- else if (node.isNodeType(SlcTypes.SLC_JAVA_PACKAGE))
- return DistImages.IMG_PACKAGE;
-
} catch (RepositoryException e) {
throw new SlcException("Error retriving "
+ "image for the labelProvider", e);
public String getText(Object element) {
return JcrUtils.get((Node) element, SLC_NAME);
}
+
+ public Image getImage(Object element) {
+ return DistImages.IMG_PACKAGE;
+ }
+
});
// Version
public String getText(Object element) {
return JcrUtils.get((Node) element, SLC_SYMBOLIC_NAME);
}
+
+ @Override
+ public Image getImage(Object element) {
+ return DistImages.IMG_BUNDLE;
+ }
});
// Version
col = new TableViewerColumn(viewer, SWT.NONE);
- col.getColumn().setWidth(100);
+ col.getColumn().setWidth(140);
col.getColumn().setText("Version");
col.setLabelProvider(new ColumnLabelProvider() {
@Override
return section;
}
- // private void createHyperlink(Composite parent, String label,
- // String jcrPropName) throws RepositoryException {
- // toolkit.createLabel(parent, label, SWT.NONE);
- // if (currBundle.hasProperty(jcrPropName)) {
- // final Hyperlink link = toolkit.createHyperlink(parent, currBundle
- // .getProperty(jcrPropName).getString(), SWT.NONE);
- // link.addHyperlinkListener(new AbstractHyperlinkListener() {
- // @Override
- // public void linkActivated(HyperlinkEvent e) {
- // try {
- // IWorkbenchBrowserSupport browserSupport = PlatformUI
- // .getWorkbench().getBrowserSupport();
- // IWebBrowser browser = browserSupport
- // .createBrowser(
- // IWorkbenchBrowserSupport.LOCATION_BAR
- // | IWorkbenchBrowserSupport.NAVIGATION_BAR,
- // "SLC Distribution browser",
- // "SLC Distribution browser",
- // "A tool tip");
- // browser.openURL(new URL(link.getText()));
- // } catch (Exception ex) {
- // throw new SlcException("error opening browser", ex); //$NON-NLS-1$
- // }
- // }
- // });
- // } else
- // toolkit.createLabel(parent, "", SWT.NONE);
- // }
+ private void createHyperlink(Composite parent, String label,
+ String jcrPropName) throws RepositoryException {
+ toolkit.createLabel(parent, label, SWT.NONE);
+ if (currBundle.hasProperty(jcrPropName)) {
+ final Hyperlink link = toolkit.createHyperlink(parent, currBundle
+ .getProperty(jcrPropName).getString(), SWT.NONE);
+ link.addHyperlinkListener(new AbstractHyperlinkListener() {
+ @Override
+ public void linkActivated(HyperlinkEvent e) {
+ try {
+ IWorkbenchBrowserSupport browserSupport = PlatformUI
+ .getWorkbench().getBrowserSupport();
+ IWebBrowser browser = browserSupport
+ .createBrowser(
+ IWorkbenchBrowserSupport.LOCATION_BAR
+ | IWorkbenchBrowserSupport.NAVIGATION_BAR,
+ "SLC Distribution browser",
+ "SLC Distribution browser",
+ "A tool tip");
+ browser.openURL(new URL(link.getText()));
+ } catch (Exception ex) {
+ throw new SlcException("error opening browser", ex); //$NON-NLS-1$
+ }
+ }
+ });
+ } else
+ toolkit.createLabel(parent, "", SWT.NONE);
+ }
/** Creates a text area with corresponding maven snippet */
private void createMavenSnipet(Composite parent) {