1 package org
.argeo
.slc
.akb
.ui
.wizards
;
4 import javax
.jcr
.Property
;
5 import javax
.jcr
.PropertyType
;
6 import javax
.jcr
.RepositoryException
;
8 import org
.argeo
.eclipse
.ui
.ErrorFeedback
;
9 import org
.argeo
.slc
.akb
.AkbException
;
10 import org
.argeo
.slc
.akb
.AkbNames
;
11 import org
.argeo
.slc
.akb
.AkbService
;
12 import org
.argeo
.slc
.akb
.ui
.AkbUiUtils
;
13 import org
.argeo
.slc
.akb
.utils
.AkbJcrUtils
;
14 import org
.eclipse
.jface
.dialogs
.MessageDialog
;
15 import org
.eclipse
.jface
.wizard
.Wizard
;
16 import org
.eclipse
.jface
.wizard
.WizardPage
;
17 import org
.eclipse
.swt
.SWT
;
18 import org
.eclipse
.swt
.events
.ModifyEvent
;
19 import org
.eclipse
.swt
.events
.ModifyListener
;
20 import org
.eclipse
.swt
.events
.SelectionAdapter
;
21 import org
.eclipse
.swt
.events
.SelectionEvent
;
22 import org
.eclipse
.swt
.layout
.GridData
;
23 import org
.eclipse
.swt
.layout
.GridLayout
;
24 import org
.eclipse
.swt
.widgets
.Composite
;
25 import org
.eclipse
.swt
.widgets
.Label
;
26 import org
.eclipse
.swt
.widgets
.Link
;
27 import org
.eclipse
.swt
.widgets
.Shell
;
28 import org
.eclipse
.swt
.widgets
.Text
;
30 /** Creates or edit a connector instance */
31 public class ActiveConnectorWizard
extends Wizard
{
33 // private Session session;
34 private AkbService akbService
;
35 private Node activeConnector
;
36 // private Node createdNode;
39 private EditConnectorPage editConnectorPage
;
41 public ActiveConnectorWizard(AkbService akbService
, Node activeConnector
) {
42 this.akbService
= akbService
;
43 this.activeConnector
= activeConnector
;
47 public void addPages() {
48 editConnectorPage
= new EditConnectorPage();
49 addPage(editConnectorPage
);
53 public boolean performFinish() {
60 private void doUpdate() {
62 boolean changed
= false;
63 changed
|= AkbUiUtils
.setJcrProperty(activeConnector
,
64 AkbNames
.AKB_CONNECTOR_URL
, PropertyType
.STRING
,
65 editConnectorPage
.getUrl());
66 changed
|= AkbUiUtils
.setJcrProperty(activeConnector
,
67 AkbNames
.AKB_CONNECTOR_USER
, PropertyType
.STRING
,
68 editConnectorPage
.getUser());
70 activeConnector
.getSession().save();
72 } catch (RepositoryException re
) {
73 throw new AkbException("Unable to update active connector", re
);
77 private boolean doTest() {
78 boolean testSuccesfull
;
80 testSuccesfull
= akbService
.testConnector(activeConnector
);
81 } catch (Exception e1
) {
82 testSuccesfull
= false;
83 ErrorFeedback
.show("Cannot test connection", e1
);
85 String name
= AkbJcrUtils
.get(activeConnector
, Property
.JCR_TITLE
);
86 String url
= AkbJcrUtils
.get(activeConnector
,
87 AkbNames
.AKB_CONNECTOR_URL
);
88 String msg
= " to " + name
+ " (" + url
+ ")";
89 Shell shell
= ActiveConnectorWizard
.this.getShell();
91 MessageDialog
.openInformation(shell
, "Test successful",
92 "Successfully connected " + msg
);
94 MessageDialog
.openError(shell
, "Test failure", "Unable to connect"
96 return testSuccesfull
;
99 public boolean canFinish() {
100 if (AkbJcrUtils
.isEmptyString(editConnectorPage
.getUrl())
101 || AkbJcrUtils
.isEmptyString(editConnectorPage
.getUser()))
107 // //////////////////////
110 * Displays a combo box that enables user to choose which action to perform
112 private class EditConnectorPage
extends WizardPage
{
114 private Text userTxt
;
116 public EditConnectorPage() {
117 super("Edit connector");
118 setTitle("Edit connector");
119 setDescription("Edit or create an active connector");
123 public void createControl(Composite parent
) {
124 Composite container
= new Composite(parent
, SWT
.NO_FOCUS
);
125 GridLayout gl
= new GridLayout(2, false);
126 container
.setLayout(gl
);
128 new Label(container
, NONE
).setText("URL");
129 urlTxt
= new Text(container
, SWT
.NONE
);
130 urlTxt
.setLayoutData(new GridData(SWT
.FILL
, SWT
.TOP
, true, false));
131 AkbUiUtils
.refreshFormTextWidget(urlTxt
, activeConnector
,
132 AkbNames
.AKB_CONNECTOR_URL
);
133 urlTxt
.addModifyListener(new ModifyListener() {
135 public void modifyText(ModifyEvent e
) {
136 // TODO implement here name validation.
137 getWizard().getContainer().updateButtons();
141 new Label(container
, NONE
).setText("User");
142 userTxt
= new Text(container
, SWT
.NONE
);
143 userTxt
.setLayoutData(new GridData(SWT
.FILL
, SWT
.TOP
, true, false));
144 AkbUiUtils
.refreshFormTextWidget(userTxt
, activeConnector
,
145 AkbNames
.AKB_CONNECTOR_USER
);
146 userTxt
.addModifyListener(new ModifyListener() {
148 public void modifyText(ModifyEvent e
) {
149 // TODO implement here name validation.
150 getWizard().getContainer().updateButtons();
154 new Label(container
, SWT
.SEPARATOR
| SWT
.SHADOW_OUT
155 | SWT
.HORIZONTAL
).setLayoutData(new GridData(SWT
.FILL
,
156 SWT
.FILL
, false, false, 2, 1));
158 Link testBtn
= new Link(container
, SWT
.NONE
);
159 testBtn
.setText("<a>Save and test</a>");
161 testBtn
.addSelectionListener(new SelectionAdapter() {
163 public void widgetSelected(SelectionEvent e
) {
169 setControl(container
);
172 protected String
getUrl() {
176 // if (AkbJcrUtils.isEmptyString(url))
182 protected String
getUser() {
183 return userTxt
.getText();