]> git.argeo.org Git - gpl/argeo-slc.git/blob - plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/composites/ActiveItemHeaderComposite.java
Fix environment editor
[gpl/argeo-slc.git] / plugins / org.argeo.slc.akb.ui / src / main / java / org / argeo / slc / akb / ui / composites / ActiveItemHeaderComposite.java
1 package org.argeo.slc.akb.ui.composites;
2
3 import javax.jcr.Node;
4 import javax.jcr.Property;
5 import javax.jcr.RepositoryException;
6
7 import org.argeo.eclipse.ui.utils.CommandUtils;
8 import org.argeo.slc.akb.AkbException;
9 import org.argeo.slc.akb.AkbNames;
10 import org.argeo.slc.akb.AkbService;
11 import org.argeo.slc.akb.ui.commands.ForceRefresh;
12 import org.argeo.slc.akb.ui.wizards.ActiveConnectorWizard;
13 import org.argeo.slc.akb.utils.AkbJcrUtils;
14 import org.eclipse.jface.wizard.WizardDialog;
15 import org.eclipse.swt.SWT;
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.Composite;
21 import org.eclipse.swt.widgets.Label;
22 import org.eclipse.swt.widgets.Link;
23 import org.eclipse.ui.forms.AbstractFormPart;
24 import org.eclipse.ui.forms.IManagedForm;
25 import org.eclipse.ui.forms.widgets.FormToolkit;
26
27 public class ActiveItemHeaderComposite extends Composite {
28
29 private final AkbService akbService;
30 private final Node envNode;
31 private final Node itemNode;
32 private final FormToolkit toolkit;
33 private final IManagedForm form;
34 // Don't forget to unregister on dispose
35 private AbstractFormPart formPart;
36
37 /**
38 *
39 * @param parent
40 * @param style
41 * @param toolkit
42 * @param form
43 * @param envNode
44 * @param itemNode
45 * @param akbService
46 */
47 public ActiveItemHeaderComposite(Composite parent, int style,
48 FormToolkit toolkit, IManagedForm form, Node envNode,
49 Node itemNode, AkbService akbService) {
50 super(parent, style);
51 this.envNode = envNode;
52 this.itemNode = itemNode;
53 this.toolkit = toolkit;
54 this.form = form;
55 this.akbService = akbService;
56 populate();
57 toolkit.adapt(this);
58 }
59
60 private void populate() {
61 // Initialization
62 Composite parent = this;
63
64 parent.setLayout(new GridLayout(3, false));
65
66 final Label envLbl = toolkit.createLabel(parent, "");
67
68 final Link editActiveConnLk = new Link(parent, SWT.NONE);
69 toolkit.adapt(editActiveConnLk, false, false);
70 editActiveConnLk.setText("<a>Edit Connector</a>");
71 editActiveConnLk.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, true,
72 false));
73
74 final Link refreshLk = new Link(parent, SWT.NONE);
75 toolkit.adapt(refreshLk, false, false);
76 refreshLk.setText("<a>Refresh</a>");
77
78 new Label(parent, SWT.SEPARATOR | SWT.SHADOW_OUT | SWT.HORIZONTAL)
79 .setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false,
80 3, 1));
81
82 // Part Management
83 final AbstractFormPart part = new AbstractFormPart() {
84 public void refresh() {
85 super.refresh();
86 // update display value
87 envLbl.setText("Environment: "
88 + AkbJcrUtils.get(envNode, Property.JCR_TITLE)
89 + " - Connector:"
90 + AkbJcrUtils.get(itemNode, Property.JCR_TITLE));
91
92 // Node activeConnector =
93 // akbService.getActiveConnectorByAlias(envNode,
94 // AkbJcrUtils.get(itemNode,
95 // AkbNames.AKB_CONNECTOR_ALIAS_PATH));
96 // if
97 // (AkbJcrUtils.isEmptyString(AkbJcrUtils.get(activeConnector,
98 // AkbNames.AKB_CONNECTOR_URL)))
99 // conLbl.setImage(SWT.);
100 }
101 };
102
103 // Listeners
104 editActiveConnLk.addSelectionListener(new SelectionAdapter() {
105 @Override
106 public void widgetSelected(final SelectionEvent event) {
107 try {
108 String pathId = AkbJcrUtils.get(itemNode,
109 AkbNames.AKB_USED_CONNECTOR);
110
111 Node activeConnector = akbService
112 .getActiveConnectorByAlias(envNode, pathId);
113
114 ActiveConnectorWizard wizard = new ActiveConnectorWizard(
115 akbService, activeConnector);
116 WizardDialog dialog = new WizardDialog(getShell(), wizard);
117 dialog.open();
118
119 // String id = AkbJcrUtils
120 // .getIdentifierQuietly(activeConnector);
121 // Map<String, String> params = new HashMap<String,
122 // String>();
123 // params.put(OpenAkbNodeEditor.PARAM_NODE_JCR_ID, id);
124 // params.put(OpenAkbNodeEditor.PARAM_CURR_ENV_JCR_ID,
125 // AkbJcrUtils.getIdentifierQuietly(envNode));
126 //
127 // CommandUtils.callCommand(OpenAkbNodeEditor.ID, params);
128 } catch (RepositoryException e) {
129 throw new AkbException("Error opening active connector", e);
130 }
131 }
132 });
133
134 refreshLk.addSelectionListener(new SelectionAdapter() {
135 @Override
136 public void widgetSelected(final SelectionEvent event) {
137 CommandUtils.callCommand(ForceRefresh.ID);
138 }
139 });
140 form.addPart(part);
141 }
142
143 @Override
144 public boolean setFocus() {
145 return true;
146 }
147
148 protected void disposePart(AbstractFormPart part) {
149 if (part != null) {
150 form.removePart(part);
151 part.dispose();
152 }
153 }
154
155 @Override
156 public void dispose() {
157 disposePart(formPart);
158 super.dispose();
159 }
160 }