X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=plugins%2Forg.argeo.slc.akb.ui%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fakb%2Fui%2Fcomposites%2FItemTemplateTitleComposite.java;h=0c21c7e7cef557c86dc45286eecfdd404a2bc356;hb=83ab33f078ffc1e8d8bd8a34743090eff5d3b051;hp=3b73d0939fbe9afe7f4288cb1d99b253368fd7fe;hpb=20f77667758d42da2ff45aa005738cf678990e06;p=gpl%2Fargeo-slc.git diff --git a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/composites/ItemTemplateTitleComposite.java b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/composites/ItemTemplateTitleComposite.java index 3b73d0939..0c21c7e7c 100644 --- a/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/composites/ItemTemplateTitleComposite.java +++ b/plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/composites/ItemTemplateTitleComposite.java @@ -1,15 +1,18 @@ package org.argeo.slc.akb.ui.composites; +import java.util.HashMap; import java.util.List; +import java.util.Map; import javax.jcr.Node; import javax.jcr.Property; import javax.jcr.RepositoryException; -import javax.jcr.Session; import org.argeo.eclipse.ui.utils.CommandUtils; +import org.argeo.jcr.JcrUtils; import org.argeo.slc.akb.AkbException; import org.argeo.slc.akb.AkbNames; +import org.argeo.slc.akb.AkbService; import org.argeo.slc.akb.ui.AkbUiUtils; import org.argeo.slc.akb.ui.commands.OpenAkbNodeEditor; import org.argeo.slc.akb.utils.AkbJcrUtils; @@ -34,7 +37,9 @@ public class ItemTemplateTitleComposite extends Composite { // private final static Log log = // LogFactory.getLog(MixTitleComposite.class); - private final Node akbNode; + 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 @@ -42,16 +47,29 @@ public class ItemTemplateTitleComposite extends Composite { // To enable set focus private Text titleTxt; - private Combo typeCmb; + private Combo aliasCmb; private List definedAliases; + /** + * + * @param parent + * @param style + * @param toolkit + * @param form + * @param envNode + * @param itemNode + * @param akbService + */ public ItemTemplateTitleComposite(Composite parent, int style, - FormToolkit toolkit, IManagedForm form, Node akbNode) { + FormToolkit toolkit, IManagedForm form, Node envNode, + Node itemNode, AkbService akbService) { super(parent, style); - this.akbNode = akbNode; + this.envNode = envNode; + this.itemNode = itemNode; this.toolkit = toolkit; this.form = form; + this.akbService = akbService; populate(); toolkit.adapt(this); } @@ -70,39 +88,32 @@ public class ItemTemplateTitleComposite extends Composite { // Second line: alias management toolkit.createLabel(parent, "Alias"); - typeCmb = new Combo(parent, SWT.READ_ONLY); - toolkit.adapt(typeCmb, false, false); + aliasCmb = new Combo(parent, SWT.READ_ONLY); + toolkit.adapt(aliasCmb, false, false); gd = new GridData(SWT.FILL, SWT.TOP, true, false, 3, 1); - typeCmb.setLayoutData(gd); + aliasCmb.setLayoutData(gd); final Link openAliasLk = new Link(parent, SWT.NONE); toolkit.adapt(openAliasLk, false, false); - openAliasLk.setText(" Edit Alias "); + openAliasLk.setText("Edit Alias"); openAliasLk.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(final SelectionEvent event) { - int index = typeCmb.getSelectionIndex(); + int index = aliasCmb.getSelectionIndex(); if (index != -1) { Node currAlias = definedAliases.get(index); String id = AkbJcrUtils.getIdentifierQuietly(currAlias); - CommandUtils.callCommand(OpenAkbNodeEditor.ID, - OpenAkbNodeEditor.PARAM_NODE_JCR_ID, id); + 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); } else MessageDialog.openError(getShell(), "Error", "No selected alias"); } }); - // - // final Link testAliasLk= new Link(parent, SWT.NONE); - // openAliasLk.setText(" Edit Alias "); - // openAliasLk.addSelectionListener(new SelectionAdapter() { - // private static final long serialVersionUID = 1L; - // - // @Override - // public void widgetSelected(final SelectionEvent event) { - // MessageDialog.openInformation(getShell(), "test", "test"); - // } - // }); // 3rd line: description Label lbl = toolkit.createLabel(parent, "Description"); @@ -117,29 +128,29 @@ public class ItemTemplateTitleComposite extends Composite { public void refresh() { super.refresh(); // update display value - AkbUiUtils.refreshFormTextWidget(titleTxt, akbNode, + AkbUiUtils.refreshFormTextWidget(titleTxt, itemNode, Property.JCR_TITLE); - AkbUiUtils.refreshFormTextWidget(descTxt, akbNode, + AkbUiUtils.refreshFormTextWidget(descTxt, itemNode, Property.JCR_DESCRIPTION); refreshTypeCmbValues(); - typeCmb.select(getCurrAliasIndex()); - typeCmb.setEnabled(AkbJcrUtils.isNodeCheckedOutByMe(akbNode)); + aliasCmb.select(getCurrAliasIndex()); + aliasCmb.setEnabled(AkbJcrUtils.isNodeCheckedOutByMe(itemNode)); } }; // Listeners - AkbUiUtils.addTextModifyListener(titleTxt, akbNode, Property.JCR_TITLE, - part); - AkbUiUtils.addTextModifyListener(descTxt, akbNode, + AkbUiUtils.addTextModifyListener(titleTxt, itemNode, + Property.JCR_TITLE, part); + AkbUiUtils.addTextModifyListener(descTxt, itemNode, Property.JCR_DESCRIPTION, part); - typeCmb.addModifyListener(new ModifyListener() { + aliasCmb.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent event) { try { int oldIndex = getCurrAliasIndex(); - int selIndex = typeCmb.getSelectionIndex(); + int selIndex = aliasCmb.getSelectionIndex(); // insure something has really been modified if (selIndex < 0 || oldIndex == selIndex) @@ -147,7 +158,9 @@ public class ItemTemplateTitleComposite extends Composite { // set new alias Node newAlias = definedAliases.get(selIndex); - akbNode.setProperty(AkbNames.AKB_USED_CONNECTOR, + + // Only relies on the alias + itemNode.setProperty(AkbNames.AKB_USED_CONNECTOR, newAlias.getPath()); part.markDirty(); } catch (RepositoryException e) { @@ -161,7 +174,16 @@ public class ItemTemplateTitleComposite extends Composite { } private void refreshTypeCmbValues() { - List newAliases = AkbJcrUtils.getDefinedAliasForNode(akbNode); + List newAliases; + try { + newAliases = JcrUtils.nodeIteratorToList(akbService + .getDefinedAliases( + AkbJcrUtils.getCurrentTemplate(itemNode), + AkbJcrUtils.getAliasTypeForNode(itemNode))); + } catch (RepositoryException e) { + throw new AkbException("Unable to get defined aliases for node " + + itemNode, e); + } boolean hasChanged = false; // manually ckeck if something has changed if (definedAliases == null @@ -183,7 +205,7 @@ public class ItemTemplateTitleComposite extends Composite { int i = 0; for (Node node : definedAliases) names[i++] = AkbJcrUtils.get(node, Property.JCR_TITLE); - typeCmb.setItems(names); + aliasCmb.setItems(names); } } @@ -194,25 +216,13 @@ public class ItemTemplateTitleComposite extends Composite { */ private int getCurrAliasIndex() { try { - String path = null; - int currAliasIndex = -1; - if (akbNode.hasProperty(AkbNames.AKB_USED_CONNECTOR)) - path = akbNode.getProperty(AkbNames.AKB_USED_CONNECTOR) - .getString(); - - Session session = akbNode.getSession(); - if (path != null && session.nodeExists(path)) { - for (int i = 0; i < definedAliases.size(); i++) { - if (path.equals(definedAliases.get(i).getPath())) { - currAliasIndex = i; - break; - } - } - // does not work - // Node chosenAlias = session.getNode(path); - // currAliasIndex = definedAliases.indexOf(chosenAlias); - } - return currAliasIndex; + if (itemNode.hasProperty(AkbNames.AKB_USED_CONNECTOR)) { + String aliasPath = itemNode.getProperty( + AkbNames.AKB_USED_CONNECTOR).getString(); + Node alias = itemNode.getSession().getNode(aliasPath); + return aliasCmb.indexOf(alias.getProperty(Property.JCR_TITLE).getString()); + } else + return -1; } catch (RepositoryException re) { throw new AkbException("Unable to retrieve current Alias", re); }