]> git.argeo.org Git - gpl/argeo-slc.git/blob - cms/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/editors/ModularDistVersionDetailPage.java
Clarify SLC project structure.
[gpl/argeo-slc.git] / cms / org.argeo.slc.client.ui.dist / src / org / argeo / slc / client / ui / dist / editors / ModularDistVersionDetailPage.java
1 package org.argeo.slc.client.ui.dist.editors;
2
3 import javax.jcr.Node;
4 import javax.jcr.RepositoryException;
5
6 import org.argeo.slc.SlcException;
7 import org.argeo.slc.SlcNames;
8 import org.eclipse.swt.SWT;
9 import org.eclipse.swt.layout.GridData;
10 import org.eclipse.swt.layout.GridLayout;
11 import org.eclipse.swt.widgets.Composite;
12 import org.eclipse.swt.widgets.Text;
13 import org.eclipse.ui.forms.IManagedForm;
14 import org.eclipse.ui.forms.editor.FormEditor;
15 import org.eclipse.ui.forms.editor.FormPage;
16 import org.eclipse.ui.forms.widgets.FormToolkit;
17 import org.eclipse.ui.forms.widgets.ScrolledForm;
18 import org.eclipse.ui.forms.widgets.Section;
19
20 /** Show the details for a given bundle. */
21 public class ModularDistVersionDetailPage extends FormPage implements SlcNames {
22
23 final static String PAGE_ID = "ModularDistVersionDetailPage";
24
25 // Business Objects
26 private Node modularDistVersion;
27
28 // This page widgets
29 private FormToolkit tk;
30
31 public ModularDistVersionDetailPage(FormEditor formEditor, String title,
32 Node modularDistVersion) {
33 super(formEditor, PAGE_ID, title);
34 this.modularDistVersion = modularDistVersion;
35 }
36
37 @Override
38 protected void createFormContent(IManagedForm managedForm) {
39 // General settings for this page
40 ScrolledForm form = managedForm.getForm();
41 tk = managedForm.getToolkit();
42 Composite body = form.getBody();
43
44 GridLayout layout = new GridLayout(1, false);
45 layout.marginWidth = 5;
46 layout.marginRight = 15;
47 layout.verticalSpacing = 0;
48 body.setLayout(layout);
49 try {
50 form.setText(modularDistVersion.hasProperty(SLC_NAME) ? modularDistVersion
51 .getProperty(SLC_NAME).getString() : "");
52 } catch (RepositoryException re) {
53 throw new SlcException("Unable to get slc:name for node "
54 + modularDistVersion, re);
55 }
56
57 // Main layout
58 Composite mavenSnipet = tk.createComposite(body);
59 mavenSnipet.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
60 populateMavenSnippetPart(mavenSnipet);
61 }
62
63 private void populateMavenSnippetPart(Composite parent) {
64 GridLayout layout = new GridLayout(1, false);
65 layout.marginWidth = layout.horizontalSpacing = layout.horizontalSpacing = layout.marginHeight = 0;
66 parent.setLayout(layout);
67
68 Section section = tk.createSection(parent, Section.TITLE_BAR
69 | Section.DESCRIPTION);
70 section.setText("Maven");
71 section.setDescription("In order to rely on the versions defined by this distribution, "
72 + "add the below tag to the dependency management of your parent pom.");
73 section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
74 Text snippetTxt = createMavenSnippet(section);
75 section.setClient(snippetTxt);
76 }
77
78 // /////////////////////
79 // HELPERS
80 /** Creates a text area with corresponding maven snippet */
81 private Text createMavenSnippet(Composite parent) {
82 Text mavenSnippet = new Text(parent, SWT.MULTI | SWT.WRAP);
83 GridData gd = new GridData(GridData.FILL_HORIZONTAL);
84 gd.grabExcessHorizontalSpace = true;
85 gd.heightHint = 100;
86 mavenSnippet.setLayoutData(gd);
87 mavenSnippet.setText(generateXmlSnippet());
88 mavenSnippet.setEditable(false);
89 return mavenSnippet;
90 }
91
92 private String generateXmlSnippet() {
93 try {
94 StringBuffer sb = new StringBuffer();
95 sb.append("<dependency>\n");
96 sb.append("\t<groupId>");
97 sb.append(modularDistVersion.getProperty(SLC_GROUP_ID).getString());
98 sb.append("</groupId>\n");
99 sb.append("\t<artifactId>");
100 sb.append(modularDistVersion.getProperty(SLC_ARTIFACT_ID)
101 .getString());
102 sb.append("</artifactId>\n");
103 sb.append("\t<version>");
104 sb.append(modularDistVersion.getProperty(SLC_ARTIFACT_VERSION)
105 .getString());
106 sb.append("</version>\n");
107 sb.append("\t<type>pom</type>\n");
108 sb.append("\t<scope>import</scope>\n");
109 sb.append("</dependency>");
110 return sb.toString();
111 } catch (RepositoryException re) {
112 throw new SlcException(
113 "unexpected error while generating maven snippet");
114 }
115 }
116 }