]> git.argeo.org Git - gpl/argeo-slc.git/blob - plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/ConnectorAliasEditor.java
Some work in progress on AKB UI. Does not work. Must be yet committed to easily switc...
[gpl/argeo-slc.git] / plugins / org.argeo.slc.akb.ui / src / main / java / org / argeo / slc / akb / ui / editors / ConnectorAliasEditor.java
1 package org.argeo.slc.akb.ui.editors;
2
3 import javax.jcr.Node;
4 import javax.jcr.Property;
5 import javax.jcr.RepositoryException;
6
7 import org.argeo.eclipse.ui.ErrorFeedback;
8 import org.argeo.slc.akb.AkbException;
9 import org.argeo.slc.akb.AkbNames;
10 import org.argeo.slc.akb.ui.AkbUiPlugin;
11 import org.argeo.slc.akb.ui.AkbUiUtils;
12 import org.argeo.slc.akb.utils.AkbJcrUtils;
13 import org.eclipse.jface.dialogs.MessageDialog;
14 import org.eclipse.swt.SWT;
15 import org.eclipse.swt.events.SelectionAdapter;
16 import org.eclipse.swt.events.SelectionEvent;
17 import org.eclipse.swt.layout.GridData;
18 import org.eclipse.swt.layout.GridLayout;
19 import org.eclipse.swt.widgets.Button;
20 import org.eclipse.swt.widgets.Composite;
21 import org.eclipse.swt.widgets.Group;
22 import org.eclipse.swt.widgets.Text;
23 import org.eclipse.ui.forms.AbstractFormPart;
24 import org.eclipse.ui.forms.IManagedForm;
25
26 /**
27 * Display and edit a connector Alias
28 */
29 public class ConnectorAliasEditor extends AbstractAkbNodeEditor {
30 // private final static Log log = LogFactory
31 // .getLog(AkbConnectorAliasEditor.class);
32
33 public final static String ID = AkbUiPlugin.PLUGIN_ID
34 + ".connectorAliasEditor";
35
36 private IManagedForm managedForm;
37 private Node activeConnector;
38
39 /* CONTENT CREATION */
40 @Override
41 public void populateMainPage(Composite parent, IManagedForm managedForm) {
42 parent.setLayout(AkbUiUtils.gridLayoutNoBorder());
43
44 // TODO clean this
45 // Initialization
46 this.managedForm = managedForm;
47 // enable dynamic change of the active connector
48 try {
49 activeConnector = getAkbNode().getNode(
50 AkbNames.AKB_DEFAULT_TEST_CONNECTOR);
51 } catch (RepositoryException e) {
52 throw new AkbException("unable to retrieve active connector node",
53 e);
54 }
55
56 // First line main info
57 Composite firstLine = getToolkit()
58 .createComposite(parent, SWT.NO_FOCUS);
59 firstLine.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
60 createConnectorAliasInfoCmp(firstLine);
61
62 // Second line define defaut connector and test abilities
63 Composite secondLine = getToolkit().createComposite(parent,
64 SWT.NO_FOCUS);
65 secondLine.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
66 createDefaultTestConnectorCmp(secondLine);
67
68 }
69
70 private void createConnectorAliasInfoCmp(Composite parent) {
71 parent.setLayout(new GridLayout(2, false));
72
73 // Name
74 final Text titleTxt = getToolkit().createText(parent, "", SWT.BORDER);
75 GridData gd = new GridData(SWT.FILL, SWT.TOP, false, false);
76 gd.minimumWidth = 200;
77 gd.widthHint = 200;
78 titleTxt.setLayoutData(gd);
79
80 // Description
81 final Text descTxt = getToolkit().createText(parent, "", SWT.BORDER);
82 gd = new GridData(SWT.FILL, SWT.TOP, true, false);
83 descTxt.setLayoutData(gd);
84
85 // Part Management
86 final AbstractFormPart part = new AbstractFormPart() {
87 public void refresh() {
88 super.refresh();
89 // update display value
90 AkbUiUtils.refreshFormTextWidget(titleTxt, getAkbNode(),
91 Property.JCR_TITLE, "Name");
92 AkbUiUtils.refreshFormTextWidget(descTxt, getAkbNode(),
93 Property.JCR_DESCRIPTION, "Short description");
94 }
95 };
96 // Listeners
97 AkbUiUtils.addTextModifyListener(titleTxt, getAkbNode(),
98 Property.JCR_TITLE, part);
99 AkbUiUtils.addTextModifyListener(descTxt, getAkbNode(),
100 Property.JCR_DESCRIPTION, part);
101
102 managedForm.addPart(part);
103 }
104
105 protected void updatePartNameAndToolTip() {
106 super.updatePartNameAndToolTip();
107 // TODO update editor image
108 }
109
110 private void createDefaultTestConnectorCmp(Composite parent) {
111 String groupTitle = "Default test instance";
112 parent.setLayout(new GridLayout());
113 Group group = new Group(parent, SWT.NONE);
114 group.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
115 getToolkit().adapt(group, false, false);
116
117 group.setText(groupTitle);
118 group.setLayout(AkbUiUtils.gridLayoutNoBorder());
119
120 // 1st line: the URL
121 Composite firstLine = getToolkit().createComposite(group);
122 firstLine.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
123 firstLine.setLayout(new GridLayout(2, false));
124
125 getToolkit().createLabel(firstLine, "URL");
126 final Text urlTxt = getToolkit().createText(firstLine, "", SWT.BORDER);
127 urlTxt.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
128
129 getToolkit().createLabel(firstLine, "User");
130 final Text userTxt = getToolkit().createText(firstLine, "", SWT.BORDER);
131 userTxt.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
132
133 final Button testBtn = getToolkit().createButton(firstLine,
134 "Test connection", SWT.PUSH);
135 // testBtn.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false,
136 // false));
137
138 // Part Management
139 final AbstractFormPart part = new AbstractFormPart() {
140 public void refresh() {
141 super.refresh();
142 // update display value
143 AkbUiUtils.refreshFormTextWidget(urlTxt, activeConnector,
144 AkbNames.AKB_CONNECTOR_URL);
145 AkbUiUtils.refreshFormTextWidget(userTxt, activeConnector,
146 AkbNames.AKB_CONNECTOR_USER);
147 }
148 };
149 // Listeners
150 AkbUiUtils.addTextModifyListener(urlTxt, activeConnector,
151 AkbNames.AKB_CONNECTOR_URL, part);
152 AkbUiUtils.addTextModifyListener(userTxt, activeConnector,
153 AkbNames.AKB_CONNECTOR_USER, part);
154
155 testBtn.addSelectionListener(new SelectionAdapter() {
156 @Override
157 public void widgetSelected(SelectionEvent e) {
158 boolean testSuccesfull;
159
160 try {
161 testSuccesfull = getAkbService().testConnector(
162 activeConnector);
163 } catch (Exception e1) {
164 testSuccesfull = false;
165 ErrorFeedback.show("Cannot test connection", e1);
166 }
167
168 String name = AkbJcrUtils.get(activeConnector,
169 Property.JCR_TITLE);
170 String url = AkbJcrUtils.get(activeConnector,
171 AkbNames.AKB_CONNECTOR_URL);
172
173 String msg = "to " + name + " (" + url + ")";
174 if (testSuccesfull)
175 MessageDialog.openInformation(getSite().getShell(),
176 "Test successful", "Successfully connected " + msg);
177 else
178 MessageDialog.openError(getSite().getShell(),
179 "Test failure", "Unable to connect" + msg);
180 }
181 });
182
183 managedForm.addPart(part);
184
185 }
186
187 @Override
188 protected String getEditorId() {
189 return ID;
190 }
191 }