]>
git.argeo.org Git - gpl/argeo-slc.git/blob - plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/editors/AkbConnectorAliasEditor.java
1 package org
.argeo
.slc
.akb
.ui
.editors
;
3 import javax
.jcr
.Property
;
4 import javax
.jcr
.RepositoryException
;
6 import org
.argeo
.slc
.akb
.AkbException
;
7 import org
.argeo
.slc
.akb
.AkbNames
;
8 import org
.argeo
.slc
.akb
.AkbTypes
;
9 import org
.argeo
.slc
.akb
.ui
.AkbUiPlugin
;
10 import org
.argeo
.slc
.akb
.ui
.AkbUiUtils
;
11 import org
.argeo
.slc
.akb
.utils
.AkbJcrUtils
;
12 import org
.eclipse
.jface
.dialogs
.MessageDialog
;
13 import org
.eclipse
.swt
.SWT
;
14 import org
.eclipse
.swt
.events
.ModifyEvent
;
15 import org
.eclipse
.swt
.events
.ModifyListener
;
16 import org
.eclipse
.swt
.events
.SelectionAdapter
;
17 import org
.eclipse
.swt
.events
.SelectionEvent
;
18 import org
.eclipse
.swt
.layout
.GridData
;
19 import org
.eclipse
.swt
.layout
.GridLayout
;
20 import org
.eclipse
.swt
.widgets
.Button
;
21 import org
.eclipse
.swt
.widgets
.Combo
;
22 import org
.eclipse
.swt
.widgets
.Composite
;
23 import org
.eclipse
.swt
.widgets
.Group
;
24 import org
.eclipse
.swt
.widgets
.Text
;
25 import org
.eclipse
.ui
.forms
.AbstractFormPart
;
26 import org
.eclipse
.ui
.forms
.IManagedForm
;
29 * Display and edit a connector Alias
31 public class AkbConnectorAliasEditor
extends AbstractAkbNodeEditor
{
32 // private final static Log log = LogFactory
33 // .getLog(AkbConnectorAliasEditor.class);
35 public final static String ID
= AkbUiPlugin
.PLUGIN_ID
36 + ".akbConnectorAliasEditor";
38 private String
[] connectorTypesLbl
= new String
[] { "JDBC", "SSH", "JCR" };
39 private String
[] connectorTypes
= new String
[] {
40 AkbTypes
.AKB_JDBC_CONNECTOR
, AkbTypes
.AKB_SSH_CONNECTOR
,
41 AkbTypes
.AKB_JCR_CONNECTOR
};
43 private IManagedForm managedForm
;
45 /* CONTENT CREATION */
47 public void populateMainPage(Composite parent
, IManagedForm managedForm
) {
48 parent
.setLayout(AkbUiUtils
.gridLayoutNoBorder());
49 this.managedForm
= managedForm
;
51 // First line main info
52 Composite firstLine
= getToolkit()
53 .createComposite(parent
, SWT
.NO_FOCUS
);
54 firstLine
.setLayoutData(new GridData(SWT
.FILL
, SWT
.TOP
, true, false));
55 createConnectorAliasInfoCmp(firstLine
);
57 // Second line define defaut connector and test abilities
58 Composite secondLine
= getToolkit().createComposite(parent
,
60 secondLine
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
61 createDefaultTestConnectorCmp(secondLine
);
65 private void createConnectorAliasInfoCmp(Composite parent
) {
66 parent
.setLayout(new GridLayout(4, false));
68 // first line: connector type and name
69 getToolkit().createLabel(parent
, "Connector Type");
70 final Combo typeCmb
= new Combo(parent
, SWT
.READ_ONLY
);
71 typeCmb
.setItems(connectorTypesLbl
);
73 getToolkit().createLabel(parent
, "Name");
74 final Text titleTxt
= getToolkit().createText(parent
, "", SWT
.BORDER
);
75 GridData gd
= new GridData(SWT
.FILL
, SWT
.TOP
, true, false);
76 titleTxt
.setLayoutData(gd
);
78 // 2nd line: description
79 getToolkit().createLabel(parent
, "Short Description");
80 final Text descTxt
= getToolkit().createText(parent
, "", SWT
.BORDER
);
81 gd
= new GridData(SWT
.FILL
, SWT
.TOP
, true, false, 3, 1);
82 descTxt
.setLayoutData(gd
);
85 final AbstractFormPart part
= new AbstractFormPart() {
86 public void refresh() {
88 // update display value
89 AkbUiUtils
.refreshFormTextWidget(titleTxt
, getAkbNode(),
91 AkbUiUtils
.refreshFormTextWidget(descTxt
, getAkbNode(),
92 Property
.JCR_DESCRIPTION
);
96 AkbUiUtils
.addTextModifyListener(titleTxt
, getAkbNode(),
97 Property
.JCR_TITLE
, part
);
98 AkbUiUtils
.addTextModifyListener(descTxt
, getAkbNode(),
99 Property
.JCR_DESCRIPTION
, part
);
101 typeCmb
.addModifyListener(new ModifyListener() {
103 public void modifyText(ModifyEvent event
) {
105 try { // TODO enhance this
107 // retrieve old and new node type
109 for (int i
= 0; i
< connectorTypes
.length
; i
++) {
110 if (getAkbNode().isNodeType(connectorTypes
[i
])) {
115 int selIndex
= typeCmb
.getSelectionIndex();
117 // insure something has really been modified
118 if (selIndex
< 0 || oldIndex
== selIndex
)
121 // remove old mixin, add new and notify form
123 getAkbNode().removeMixin(connectorTypes
[oldIndex
]);
124 getAkbNode().addMixin(connectorTypes
[selIndex
]);
126 } catch (RepositoryException e
) {
127 throw new AkbException(
128 "Error while updating connector type", e
);
133 managedForm
.addPart(part
);
136 private void createDefaultTestConnectorCmp(Composite parent
) {
137 String groupTitle
= "Default test instance";
138 parent
.setLayout(new GridLayout());
139 Group group
= new Group(parent
, SWT
.NONE
);
140 group
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
141 getToolkit().adapt(group
, false, false);
143 group
.setText(groupTitle
);
144 group
.setLayout(AkbUiUtils
.gridLayoutNoBorder());
147 Composite firstLine
= getToolkit().createComposite(group
);
148 firstLine
.setLayoutData(new GridData(SWT
.FILL
, SWT
.FILL
, true, true));
149 firstLine
.setLayout(new GridLayout(3, false));
151 getToolkit().createLabel(firstLine
, "URL");
152 final Text urlTxt
= getToolkit().createText(firstLine
, "", SWT
.BORDER
);
153 urlTxt
.setLayoutData(new GridData(SWT
.FILL
, SWT
.TOP
, true, false));
155 final Button testBtn
= getToolkit().createButton(firstLine
,
156 "Test connection", SWT
.PUSH
);
157 // testBtn.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, false,
161 final AbstractFormPart part
= new AbstractFormPart() {
162 public void refresh() {
164 // update display value
165 AkbUiUtils
.refreshFormTextWidget(urlTxt
, getAkbNode(),
166 AkbNames
.AKB_CONNECTOR_URL
);
170 AkbUiUtils
.addTextModifyListener(urlTxt
, getAkbNode(),
171 AkbNames
.AKB_CONNECTOR_URL
, part
);
173 testBtn
.addSelectionListener(new SelectionAdapter() {
175 public void widgetSelected(SelectionEvent e
) {
176 boolean testSuccesfull
= getAkbService().testConnector(
179 String name
= AkbJcrUtils
.get(getAkbNode(), Property
.JCR_TITLE
);
180 String url
= AkbJcrUtils
.get(getAkbNode(),
181 AkbNames
.AKB_CONNECTOR_URL
);
183 String msg
= "to " + name
+ " (" + url
+ ")";
185 MessageDialog
.openInformation(getSite().getShell(),
186 "Test successful", "Successfully connected " + msg
);
188 MessageDialog
.openError(getSite().getShell(),
189 "Test failure", "Unable to connect" + msg
);
193 managedForm
.addPart(part
);
198 protected String
getEditorId() {