1 package org
.argeo
.slc
.akb
.ui
.composites
;
4 import javax
.jcr
.Property
;
5 import javax
.jcr
.RepositoryException
;
6 import javax
.jcr
.Session
;
8 import org
.argeo
.eclipse
.ui
.ErrorFeedback
;
9 import org
.argeo
.eclipse
.ui
.utils
.CommandUtils
;
10 import org
.argeo
.slc
.akb
.AkbException
;
11 import org
.argeo
.slc
.akb
.AkbNames
;
12 import org
.argeo
.slc
.akb
.AkbService
;
13 import org
.argeo
.slc
.akb
.AkbTypes
;
14 import org
.argeo
.slc
.akb
.ui
.AkbImages
;
15 import org
.argeo
.slc
.akb
.ui
.AkbUiUtils
;
16 import org
.argeo
.slc
.akb
.ui
.commands
.DeleteAkbNodes
;
17 import org
.argeo
.slc
.akb
.ui
.wizards
.ActiveConnectorWizard
;
18 import org
.argeo
.slc
.akb
.utils
.AkbJcrUtils
;
19 import org
.eclipse
.jface
.dialogs
.MessageDialog
;
20 import org
.eclipse
.jface
.wizard
.WizardDialog
;
21 import org
.eclipse
.swt
.SWT
;
22 import org
.eclipse
.swt
.events
.SelectionAdapter
;
23 import org
.eclipse
.swt
.events
.SelectionEvent
;
24 import org
.eclipse
.swt
.layout
.GridData
;
25 import org
.eclipse
.swt
.layout
.GridLayout
;
26 import org
.eclipse
.swt
.widgets
.Composite
;
27 import org
.eclipse
.swt
.widgets
.Label
;
28 import org
.eclipse
.swt
.widgets
.Link
;
29 import org
.eclipse
.swt
.widgets
.Text
;
30 import org
.eclipse
.ui
.forms
.AbstractFormPart
;
31 import org
.eclipse
.ui
.forms
.IFormPart
;
32 import org
.eclipse
.ui
.forms
.IManagedForm
;
33 import org
.eclipse
.ui
.forms
.widgets
.FormToolkit
;
35 /** Default composite to display a connector alias. */
36 public class AliasListItemComposite
extends Composite
{
38 private final AkbService akbService
;
39 private final Node connectorAlias
;
40 private final Node activeEnv
;
41 private final boolean isActive
;
42 private final Node activeConnector
;
43 private final FormToolkit toolkit
;
44 private final IManagedForm form
;
46 // Don't forget to unregister on dispose
47 private AbstractFormPart formPart
;
49 // To enable set focus
50 private Text titleTxt
;
52 public AliasListItemComposite(Composite parent
, int style
,
53 FormToolkit toolkit
, IManagedForm form
, Node envNode
,
54 String aliasPath
, AkbService akbService
) {
56 this.activeEnv
= envNode
;
58 isActive
= activeEnv
.isNodeType(AkbTypes
.AKB_ENV
);
59 this.activeConnector
= akbService
.getActiveConnectorByAlias(
61 this.connectorAlias
= activeEnv
.getSession().getNode(aliasPath
);
62 } catch (RepositoryException e
) {
63 throw new AkbException("Unable to get activeConnector for node", e
);
65 this.toolkit
= toolkit
;
67 this.akbService
= akbService
;
72 private void populate() {
74 Composite parent
= this;
75 createConnectorAliasInfoCmp(parent
);
78 private void createConnectorAliasInfoCmp(Composite parent
) {
79 GridLayout gl
= AkbUiUtils
.gridLayoutNoBorder();
83 Composite firstLine
= toolkit
.createComposite(parent
, SWT
.NO_FOCUS
);
84 firstLine
.setLayoutData(new GridData(SWT
.FILL
, SWT
.TOP
, true, false));
85 firstLine
.setLayout(new GridLayout(6, false));
88 final Label image
= toolkit
.createLabel(firstLine
, "", SWT
.NONE
);
89 GridData gd
= new GridData(SWT
.LEFT
, SWT
.CENTER
, false, false);
91 image
.setImage(AkbImages
.getImageForAkbNodeType(activeConnector
92 .getPrimaryNodeType().getName()));
93 } catch (RepositoryException e2
) {
96 image
.setLayoutData(gd
);
99 final Text titleTxt
= toolkit
.createText(firstLine
, "", SWT
.NONE
);
100 gd
= new GridData(SWT
.LEFT
, SWT
.CENTER
, false, false);
102 titleTxt
.setLayoutData(gd
);
105 final Text descTxt
= toolkit
.createText(firstLine
, "", SWT
.NONE
);
106 gd
= new GridData(SWT
.LEFT
, SWT
.CENTER
, false, false);
108 descTxt
.setLayoutData(gd
);
110 final Link testBtn
= new Link(firstLine
, SWT
.NONE
);
111 toolkit
.adapt(testBtn
, false, false);
112 testBtn
.setText("<a>Test</a>");
113 testBtn
.setLayoutData(new GridData(SWT
.RIGHT
, SWT
.CENTER
, true, false));
115 final Link editActiveConnLk
= new Link(firstLine
, SWT
.NONE
);
116 toolkit
.adapt(editActiveConnLk
, false, false);
117 // editActiveConnLk.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER,
121 formPart
= new AbstractFormPart() {
122 public void refresh() {
124 if (titleTxt
.isDisposed())
126 // update display value
127 AkbUiUtils
.refreshFormTextWidget(titleTxt
, connectorAlias
,
128 Property
.JCR_TITLE
, "Name");
129 AkbUiUtils
.refreshFormTextWidget(descTxt
, connectorAlias
,
130 Property
.JCR_DESCRIPTION
, "Short description");
133 titleTxt
.setEditable(false);
134 descTxt
.setEditable(false);
135 editActiveConnLk
.setText("<a>Edit connector instance</a>");
137 titleTxt
.setEditable(true);
138 descTxt
.setEditable(true);
139 editActiveConnLk
.setText("<a>Edit default connector</a>");
145 final Link removeBtn
= new Link(firstLine
, SWT
.NONE
);
146 toolkit
.adapt(removeBtn
, false, false);
147 removeBtn
.setText("<a>Delete</a>");
148 removeBtn
.addSelectionListener(new SelectionAdapter() {
150 public void widgetSelected(SelectionEvent e
) {
154 connectorAlias
.getPath();
155 } catch (Exception ex
) {
156 // node has been removed.
161 // Manually check if corresponding node was really
163 Session session
= connectorAlias
.getSession();
164 String absPath
= connectorAlias
.getPath();
166 form
.removePart(formPart
);
168 CommandUtils
.CallCommandWithOneParameter(
170 DeleteAkbNodes
.PARAM_NODE_JCR_ID
, AkbJcrUtils
171 .getIdentifierQuietly(connectorAlias
));
173 if (session
.nodeExists(absPath
)) {
174 form
.addPart(formPart
);
176 for (IFormPart cpart
: form
.getParts())
180 } catch (RepositoryException re
) {
181 throw new AkbException(
182 "Error while removing connector Alias ", re
);
189 AkbUiUtils
.addTextModifyListener(titleTxt
, connectorAlias
,
190 Property
.JCR_TITLE
, formPart
);
191 AkbUiUtils
.addTextModifyListener(descTxt
, connectorAlias
,
192 Property
.JCR_DESCRIPTION
, formPart
);
194 testBtn
.addSelectionListener(new SelectionAdapter() {
196 public void widgetSelected(SelectionEvent e
) {
197 boolean testSuccesfull
;
199 testSuccesfull
= akbService
.testConnector(activeConnector
);
200 } catch (Exception e1
) {
201 testSuccesfull
= false;
202 ErrorFeedback
.show("Cannot test connection", e1
);
204 String name
= AkbJcrUtils
.get(activeConnector
,
206 String url
= AkbJcrUtils
.get(activeConnector
,
207 AkbNames
.AKB_CONNECTOR_URL
);
208 String msg
= " to " + name
+ " (" + url
+ ")";
210 MessageDialog
.openInformation(
211 getDisplay().getActiveShell(), "Test successful",
212 "Successfully connected " + msg
);
214 MessageDialog
.openError(getDisplay().getActiveShell(),
215 "Test failure", "Unable to connect" + msg
);
219 editActiveConnLk
.addSelectionListener(new SelectionAdapter() {
221 public void widgetSelected(final SelectionEvent event
) {
222 ActiveConnectorWizard wizard
= new ActiveConnectorWizard(
223 akbService
, activeConnector
);
224 WizardDialog dialog
= new WizardDialog(getShell(), wizard
);
229 // force refresh to initialize various fields on creation
231 form
.addPart(formPart
);
235 public boolean setFocus() {
236 if (titleTxt
!= null)
237 return titleTxt
.setFocus();
241 protected void disposePart(AbstractFormPart part
) {
243 form
.removePart(part
);
249 public void dispose() {
250 disposePart(formPart
);