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() {
57 private boolean doUpdate() {
61 boolean changed
= true;
62 changed
&= AkbUiUtils
.setJcrProperty(activeConnector
,
63 AkbNames
.AKB_CONNECTOR_URL
, PropertyType
.STRING
,
64 editConnectorPage
.getUrl());
65 changed
&= AkbUiUtils
.setJcrProperty(activeConnector
,
66 AkbNames
.AKB_CONNECTOR_USER
, PropertyType
.STRING
,
67 editConnectorPage
.getUser());
69 activeConnector
.getSession().save();
71 } catch (RepositoryException re
) {
72 throw new AkbException("Unable to update active connector", re
);
76 private boolean doTest() {
77 boolean testSuccesfull
;
79 testSuccesfull
= akbService
.testConnector(activeConnector
);
80 } catch (Exception e1
) {
81 testSuccesfull
= false;
82 ErrorFeedback
.show("Cannot test connection", e1
);
84 String name
= AkbJcrUtils
.get(activeConnector
, Property
.JCR_TITLE
);
85 String url
= AkbJcrUtils
.get(activeConnector
,
86 AkbNames
.AKB_CONNECTOR_URL
);
87 String msg
= " to " + name
+ " (" + url
+ ")";
88 Shell shell
= ActiveConnectorWizard
.this.getShell();
90 MessageDialog
.openInformation(shell
, "Test successful",
91 "Successfully connected " + msg
);
93 MessageDialog
.openError(shell
, "Test failure", "Unable to connect"
95 return testSuccesfull
;
98 public boolean canFinish() {
99 if (AkbJcrUtils
.isEmptyString(editConnectorPage
.getUrl())
100 || AkbJcrUtils
.isEmptyString(editConnectorPage
.getUser()))
106 // //////////////////////
109 * Displays a combo box that enables user to choose which action to perform
111 private class EditConnectorPage
extends WizardPage
{
113 private Text userTxt
;
115 public EditConnectorPage() {
116 super("Edit connector");
117 setTitle("Edit connector");
118 setDescription("Edit or create an active connector");
122 public void createControl(Composite parent
) {
123 Composite container
= new Composite(parent
, SWT
.NO_FOCUS
);
124 GridLayout gl
= new GridLayout(2, false);
125 container
.setLayout(gl
);
127 new Label(container
, NONE
).setText("URL");
128 urlTxt
= new Text(container
, SWT
.NONE
);
129 urlTxt
.setLayoutData(new GridData(SWT
.FILL
, SWT
.TOP
, true, false));
130 AkbUiUtils
.refreshFormTextWidget(urlTxt
, activeConnector
,
131 AkbNames
.AKB_CONNECTOR_URL
);
132 urlTxt
.addModifyListener(new ModifyListener() {
134 public void modifyText(ModifyEvent e
) {
135 // TODO implement here name validation.
136 getWizard().getContainer().updateButtons();
140 new Label(container
, NONE
).setText("User");
141 userTxt
= new Text(container
, SWT
.NONE
);
142 userTxt
.setLayoutData(new GridData(SWT
.FILL
, SWT
.TOP
, true, false));
143 AkbUiUtils
.refreshFormTextWidget(userTxt
, activeConnector
,
144 AkbNames
.AKB_CONNECTOR_USER
);
145 userTxt
.addModifyListener(new ModifyListener() {
147 public void modifyText(ModifyEvent e
) {
148 // TODO implement here name validation.
149 getWizard().getContainer().updateButtons();
153 new Label(container
, SWT
.SEPARATOR
| SWT
.SHADOW_OUT
154 | SWT
.HORIZONTAL
).setLayoutData(new GridData(SWT
.FILL
,
155 SWT
.FILL
, false, false, 2, 1));
157 Link testBtn
= new Link(container
, SWT
.NONE
);
158 testBtn
.setText("<a>Save and test</a>");
160 testBtn
.addSelectionListener(new SelectionAdapter() {
162 public void widgetSelected(SelectionEvent e
) {
168 setControl(container
);
171 protected String
getUrl() {
175 // if (AkbJcrUtils.isEmptyString(url))
181 protected String
getUser() {
182 return userTxt
.getText();