import javax.jcr.observation.ObservationManager;
import org.argeo.eclipse.ui.jcr.AsyncUiEventListener;
+import org.argeo.eclipse.ui.utils.CommandUtils;
import org.argeo.slc.akb.AkbException;
+import org.argeo.slc.akb.AkbNames;
import org.argeo.slc.akb.AkbTypes;
import org.argeo.slc.akb.ui.AkbUiPlugin;
import org.argeo.slc.akb.ui.AkbUiUtils;
+import org.argeo.slc.akb.ui.commands.ForceRefresh;
import org.argeo.slc.akb.ui.commands.OpenAkbNodeEditor;
-import org.argeo.slc.akb.ui.composites.ConnectorAliasSmallComposite;
+import org.argeo.slc.akb.ui.composites.AliasListItemComposite;
import org.argeo.slc.akb.ui.composites.MixTitleComposite;
+import org.argeo.slc.akb.utils.AkbJcrUtils;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.IMenuListener;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.forms.AbstractFormPart;
+import org.eclipse.ui.forms.IFormPart;
import org.eclipse.ui.forms.IManagedForm;
/**
menuManager.setRemoveAllWhenShown(true);
}
- private void aboutToShow(IMenuManager menu) {
+ protected void aboutToShow(IMenuManager menu) {
try {
// initialization
- String submenuID = "subMenu.addAlias";
IWorkbenchWindow window = AkbUiPlugin.getDefault().getWorkbench()
.getActiveWorkbenchWindow();
Node connectorParent = getAkbNode();
+
+ // Refresh
+ CommandUtils.refreshCommand(menu, window, ForceRefresh.ID,
+ "Refresh", null, true);
+
+ String submenuID = "subMenu.addAlias";
IContributionItem ici = menu.find(submenuID);
if (ici != null)
menu.remove(ici);
subMenu.add(AkbUiUtils.createContributionItem(subMenu, window,
currItemId, OpenAkbNodeEditor.ID, "SSH", null, tmpParams));
- menu.add(subMenu);
+ if (isTemplate())
+ menu.add(subMenu);
} catch (RepositoryException e) {
throw new AkbException("Unable to refresh context menu", e);
try {
super.refresh();
// first: initialise composite for new connectors
+
Node connectorPar = getAkbNode().getNode(
AkbTypes.AKB_CONNECTOR_FOLDER);
NodeIterator ni = connectorPar.getNodes();
- while (ni.hasNext()) {
+
+ boolean isTemplate = getEnvNode().isNodeType(
+ AkbTypes.AKB_ENV_TEMPLATE);
+
+ aliases: while (ni.hasNext()) {
Node currNode = ni.nextNode();
String currJcrId = currNode.getIdentifier();
if (!connectorsCmps.containsKey(currJcrId)) {
- Composite currCmp = new ConnectorAliasSmallComposite(
- panel, SWT.NO_FOCUS, getToolkit(),
- managedForm, currNode, getAkbService());
- currCmp.setLayoutData(new GridData(SWT.FILL,
- SWT.TOP, true, false));
- connectorsCmps.put(currJcrId, currCmp);
+ Composite currCmp;
+ if (isTemplate)
+ currCmp = new AliasListItemComposite(panel,
+ SWT.NO_FOCUS, getToolkit(),
+ managedForm, getAkbNode(),
+ currNode.getPath(), getAkbService());
+ else {
+ String aliasPath = AkbJcrUtils.get(currNode,
+ AkbNames.AKB_CONNECTOR_ALIAS_PATH);
+ if (AkbJcrUtils.isEmptyString(aliasPath)
+ || !getSession().nodeExists(aliasPath))
+ continue aliases;
+
+ currCmp = new AliasListItemComposite(panel,
+ SWT.NO_FOCUS, getToolkit(),
+ managedForm, getAkbNode(), aliasPath,
+ getAkbService());
+ currCmp.setLayoutData(new GridData(SWT.FILL,
+ SWT.TOP, true, false));
+ connectorsCmps.put(currJcrId, currCmp);
+ }
}
}
ObservationManager observationManager = getSession().getWorkspace()
.getObservationManager();
connectorObserver = new ConnectorObserver(panel.getDisplay(),
- formPart);
+ managedForm);
// observe tree changes under All results
observationManager.addEventListener(connectorObserver,
Event.NODE_ADDED | Event.NODE_REMOVED, getAkbNode()
class ConnectorObserver extends AsyncUiEventListener {
- private AbstractFormPart formPart;
+ private IManagedForm managedForm;
- public ConnectorObserver(Display display, AbstractFormPart formPart) {
+ public ConnectorObserver(Display display, IManagedForm managedForm) {
super(display);
- this.formPart = formPart;
+ this.managedForm = managedForm;
}
@Override
protected void onEventInUiThread(List<Event> events)
throws RepositoryException {
try {
- formPart.refresh();
+ for (IFormPart part : managedForm.getParts())
+ part.refresh();
} catch (Exception e) {
// silently fail
e.printStackTrace();