]> git.argeo.org Git - gpl/argeo-slc.git/blob - plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/SshFileTemplateEditor.java
Prepare SLC v1.1.15 release
[gpl/argeo-slc.git] / plugins / org.argeo.slc.akb.ui / src / main / java / org / argeo / slc / akb / ui / editors / SshFileTemplateEditor.java
1 package org.argeo.slc.akb.ui.editors;
2
3 import org.argeo.slc.akb.AkbNames;
4 import org.argeo.slc.akb.ui.AkbUiPlugin;
5 import org.argeo.slc.akb.ui.AkbUiUtils;
6 import org.argeo.slc.akb.ui.composites.ActiveItemHeaderComposite;
7 import org.argeo.slc.akb.ui.utils.Refreshable;
8 import org.argeo.slc.akb.utils.AkbJcrUtils;
9 import org.eclipse.swt.SWT;
10 import org.eclipse.swt.graphics.Font;
11 import org.eclipse.swt.layout.GridData;
12 import org.eclipse.swt.layout.GridLayout;
13 import org.eclipse.swt.widgets.Composite;
14 import org.eclipse.swt.widgets.Group;
15 import org.eclipse.swt.widgets.Text;
16 import org.eclipse.ui.forms.AbstractFormPart;
17 import org.eclipse.ui.forms.IManagedForm;
18
19 /**
20 * Display and edit a connection to a file on a distant accessible by SSH server
21 */
22 public class SshFileTemplateEditor extends AkbItemTemplateEditor implements
23 Refreshable {
24
25 public final static String ID = AkbUiPlugin.PLUGIN_ID
26 + ".sshFileTemplateEditor";
27
28 private Text outputDisplay;
29
30 @Override
31 protected String getEditorId() {
32 return ID;
33 }
34
35 @Override
36 protected void populateTestPage(Composite parent, IManagedForm managedForm) {
37 parent.setLayout(AkbUiUtils.gridLayoutNoBorder());
38
39 ActiveItemHeaderComposite header = new ActiveItemHeaderComposite(
40 parent, SWT.NONE, getToolkit(), managedForm, getEnvNode(),
41 getAkbNode(), getAkbService());
42 header.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
43
44 outputDisplay = getToolkit().createText(parent, "", SWT.MULTI);
45 outputDisplay.setFont(new Font(parent.getDisplay(), "Monospaced", 10,
46 SWT.NONE));
47 outputDisplay.setEditable(false);
48 outputDisplay
49 .setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
50
51 forceRefresh(null);
52 }
53
54 public void forceRefresh(Object object) {
55 String output = getAkbService()
56 .retrieveFile(getEnvNode(), getAkbNode());
57 if (AkbJcrUtils.checkNotEmptyString(output))
58 outputDisplay.setText(output);
59 else
60 outputDisplay.setText("");
61 }
62
63 @Override
64 protected void populateBottomPart(Composite parent, IManagedForm managedForm) {
65 parent.setLayout(AkbUiUtils.gridLayoutNoBorder());
66 Group group = new Group(parent, SWT.NO_FOCUS);
67 getToolkit().adapt(group, false, false);
68 group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
69
70 group.setLayout(new GridLayout(1, false));
71
72 // first line: Description
73 getToolkit().createLabel(group,
74 "Enter below a valid path in the target server");
75
76 // 2nd line: the path
77 final Text pathTxt = getToolkit().createText(group, "",
78 SWT.BORDER | SWT.SINGLE);
79 GridData gd = new GridData(SWT.FILL, SWT.TOP, true, false);
80 pathTxt.setLayoutData(gd);
81
82 // Part Management
83 final AbstractFormPart part = new AbstractFormPart() {
84 public void refresh() {
85 super.refresh();
86 // update display value
87 AkbUiUtils.refreshFormTextWidget(pathTxt, getAkbNode(),
88 AkbNames.AKB_FILE_PATH);
89 }
90 };
91 // Listeners
92 AkbUiUtils.addTextModifyListener(pathTxt, getAkbNode(),
93 AkbNames.AKB_FILE_PATH, part);
94 managedForm.addPart(part);
95 }
96 }