package org.argeo.slc.akb.ui.composites; import javax.jcr.Node; import javax.jcr.Property; import javax.jcr.RepositoryException; import org.argeo.eclipse.ui.utils.CommandUtils; import org.argeo.slc.akb.AkbException; import org.argeo.slc.akb.AkbNames; import org.argeo.slc.akb.AkbService; import org.argeo.slc.akb.ui.commands.ForceRefresh; import org.argeo.slc.akb.ui.wizards.ActiveConnectorWizard; import org.argeo.slc.akb.utils.AkbJcrUtils; import org.eclipse.jface.wizard.WizardDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Link; import org.eclipse.ui.forms.AbstractFormPart; import org.eclipse.ui.forms.IManagedForm; import org.eclipse.ui.forms.widgets.FormToolkit; public class ActiveItemHeaderComposite extends Composite { private final AkbService akbService; private final Node envNode; private final Node itemNode; private final FormToolkit toolkit; private final IManagedForm form; // Don't forget to unregister on dispose private AbstractFormPart formPart; /** * * @param parent * @param style * @param toolkit * @param form * @param envNode * @param itemNode * @param akbService */ public ActiveItemHeaderComposite(Composite parent, int style, FormToolkit toolkit, IManagedForm form, Node envNode, Node itemNode, AkbService akbService) { super(parent, style); this.envNode = envNode; this.itemNode = itemNode; this.toolkit = toolkit; this.form = form; this.akbService = akbService; populate(); toolkit.adapt(this); } private void populate() { // Initialization Composite parent = this; parent.setLayout(new GridLayout(3, false)); final Label envLbl = toolkit.createLabel(parent, ""); final Link editActiveConnLk = new Link(parent, SWT.NONE); toolkit.adapt(editActiveConnLk, false, false); editActiveConnLk.setText("Edit Connector"); editActiveConnLk.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, true, false)); final Link refreshLk = new Link(parent, SWT.NONE); toolkit.adapt(refreshLk, false, false); refreshLk.setText("Refresh"); new Label(parent, SWT.SEPARATOR | SWT.SHADOW_OUT | SWT.HORIZONTAL) .setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 3, 1)); // Part Management final AbstractFormPart part = new AbstractFormPart() { public void refresh() { super.refresh(); // update display value envLbl.setText("Environment: " + AkbJcrUtils.get(envNode, Property.JCR_TITLE) + " - Connector:" + AkbJcrUtils.get(itemNode, Property.JCR_TITLE)); // Node activeConnector = // akbService.getActiveConnectorByAlias(envNode, // AkbJcrUtils.get(itemNode, // AkbNames.AKB_CONNECTOR_ALIAS_PATH)); // if // (AkbJcrUtils.isEmptyString(AkbJcrUtils.get(activeConnector, // AkbNames.AKB_CONNECTOR_URL))) // conLbl.setImage(SWT.); } }; // Listeners editActiveConnLk.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { try { String pathId = AkbJcrUtils.get(itemNode, AkbNames.AKB_USED_CONNECTOR); Node activeConnector = akbService .getActiveConnectorByAlias(envNode, pathId); ActiveConnectorWizard wizard = new ActiveConnectorWizard( akbService, activeConnector); WizardDialog dialog = new WizardDialog(getShell(), wizard); dialog.open(); // String id = AkbJcrUtils // .getIdentifierQuietly(activeConnector); // Map params = new HashMap(); // params.put(OpenAkbNodeEditor.PARAM_NODE_JCR_ID, id); // params.put(OpenAkbNodeEditor.PARAM_CURR_ENV_JCR_ID, // AkbJcrUtils.getIdentifierQuietly(envNode)); // // CommandUtils.callCommand(OpenAkbNodeEditor.ID, params); } catch (RepositoryException e) { throw new AkbException("Error opening active connector", e); } } }); refreshLk.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { CommandUtils.callCommand(ForceRefresh.ID); } }); form.addPart(part); } @Override public boolean setFocus() { return true; } protected void disposePart(AbstractFormPart part) { if (part != null) { form.removePart(part); part.dispose(); } } @Override public void dispose() { disposePart(formPart); super.dispose(); } }