]> git.argeo.org Git - gpl/argeo-slc.git/blob - plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/editors/ModularDistVersionDetailPage.java
Fix distribution editor after further testing with maven produced releases
[gpl/argeo-slc.git] / plugins / org.argeo.slc.client.ui.dist / src / main / java / org / argeo / slc / client / ui / dist / editors / ModularDistVersionDetailPage.java
1 /*
2 * Copyright (C) 2007-2012 Argeo GmbH
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.argeo.slc.client.ui.dist.editors;
17
18 import javax.jcr.Node;
19 import javax.jcr.RepositoryException;
20
21 import org.argeo.ArgeoException;
22 import org.argeo.slc.SlcException;
23 import org.argeo.slc.jcr.SlcNames;
24 import org.eclipse.swt.SWT;
25 import org.eclipse.swt.layout.GridData;
26 import org.eclipse.swt.layout.GridLayout;
27 import org.eclipse.swt.widgets.Composite;
28 import org.eclipse.swt.widgets.Text;
29 import org.eclipse.ui.forms.IManagedForm;
30 import org.eclipse.ui.forms.editor.FormEditor;
31 import org.eclipse.ui.forms.editor.FormPage;
32 import org.eclipse.ui.forms.widgets.FormToolkit;
33 import org.eclipse.ui.forms.widgets.ScrolledForm;
34 import org.eclipse.ui.forms.widgets.Section;
35
36 /**
37 * Show the details for a given bundle.
38 */
39 public class ModularDistVersionDetailPage extends FormPage implements SlcNames {
40
41 final static String PAGE_ID = "ModularDistVersionDetailPage";
42
43 // Business Objects
44 private Node modularDistVersion;
45
46 // This page widgets
47 private FormToolkit tk;
48
49 public ModularDistVersionDetailPage(FormEditor formEditor, String title,
50 Node modularDistVersion) {
51 super(formEditor, PAGE_ID, title);
52 this.modularDistVersion = modularDistVersion;
53 }
54
55 @Override
56 protected void createFormContent(IManagedForm managedForm) {
57 // General settings for this page
58 ScrolledForm form = managedForm.getForm();
59 tk = managedForm.getToolkit();
60 Composite body = form.getBody();
61
62 GridLayout layout = new GridLayout(1, false);
63 layout.marginWidth = 5;
64 layout.marginRight = 15;
65 layout.verticalSpacing = 0;
66 body.setLayout(layout);
67 try {
68 form.setText(modularDistVersion.hasProperty(SLC_NAME) ? modularDistVersion
69 .getProperty(SLC_NAME).getString() : "");
70 } catch (RepositoryException re) {
71 throw new SlcException("Unable to get slc:name for node "
72 + modularDistVersion, re);
73 }
74
75 // Main layout
76 Composite mavenSnipet = tk.createComposite(body);
77 mavenSnipet.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
78 populateMavenSnippetPart(mavenSnipet);
79 }
80
81 private void populateMavenSnippetPart(Composite parent) {
82 GridLayout layout = new GridLayout(1, false);
83 layout.marginWidth = layout.horizontalSpacing = layout.horizontalSpacing = layout.marginHeight = 0;
84 parent.setLayout(layout);
85
86 Section section = tk.createSection(parent, Section.TITLE_BAR
87 | Section.DESCRIPTION);
88 section.setText("Maven");
89 section.setDescription("In order to rely on the versions defined by this distribution, "
90 + "add the below tag to the dependency management of your parent pom.");
91 section.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
92 Text snippetTxt = createMavenSnippet(section);
93 section.setClient(snippetTxt);
94 }
95
96 // /////////////////////
97 // HELPERS
98 /** Creates a text area with corresponding maven snippet */
99 private Text createMavenSnippet(Composite parent) {
100 Text mavenSnippet = new Text(parent, SWT.MULTI | SWT.WRAP);
101 GridData gd = new GridData(GridData.FILL_HORIZONTAL);
102 gd.grabExcessHorizontalSpace = true;
103 gd.heightHint = 100;
104 mavenSnippet.setLayoutData(gd);
105 mavenSnippet.setText(generateXmlSnippet());
106 mavenSnippet.setEditable(false);
107 return mavenSnippet;
108 }
109
110 private String generateXmlSnippet() {
111 try {
112 StringBuffer sb = new StringBuffer();
113 sb.append("<dependency>\n");
114 sb.append("\t<groupId>");
115 sb.append(modularDistVersion.getProperty(SLC_GROUP_ID).getString());
116 sb.append("</groupId>\n");
117 sb.append("\t<artifactId>");
118 sb.append(modularDistVersion.getProperty(SLC_ARTIFACT_ID)
119 .getString());
120 sb.append("</artifactId>\n");
121 sb.append("\t<version>");
122 sb.append(modularDistVersion.getProperty(SLC_ARTIFACT_VERSION)
123 .getString());
124 sb.append("</version>\n");
125 sb.append("\t<type>pom</type>\n");
126 sb.append("\t<scope>import</scope>\n");
127 sb.append("</dependency>");
128 return sb.toString();
129 } catch (RepositoryException re) {
130 throw new ArgeoException(
131 "unexpected error while generating maven snippet");
132 }
133 }
134 }