X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.entity.ui%2Fsrc%2Forg%2Fargeo%2Fentity%2Fui%2Fforms%2FSingleTermPart.java;h=da238198ab0d7cf4714c13d0100c3228117716cc;hb=41e9998f7f1c87c747c57f60c6bec65fa20757a6;hp=e9fad048f5aeabf7962c37d109b191fd3acdfda6;hpb=5401f7a23b5251bb37514f5495b75f79320bedc0;p=gpl%2Fargeo-suite.git diff --git a/org.argeo.entity.ui/src/org/argeo/entity/ui/forms/SingleTermPart.java b/org.argeo.entity.ui/src/org/argeo/entity/ui/forms/SingleTermPart.java index e9fad04..da23819 100644 --- a/org.argeo.entity.ui/src/org/argeo/entity/ui/forms/SingleTermPart.java +++ b/org.argeo.entity.ui/src/org/argeo/entity/ui/forms/SingleTermPart.java @@ -4,13 +4,14 @@ import java.util.List; import javax.jcr.Item; +import org.argeo.cms.swt.CmsSwtUtils; +import org.argeo.cms.swt.MouseDoubleClick; +import org.argeo.cms.swt.MouseDown; +import org.argeo.cms.swt.Selected; import org.argeo.cms.ui.forms.FormStyle; -import org.argeo.cms.ui.util.CmsUiUtils; import org.argeo.cms.ui.viewers.EditablePart; import org.argeo.cms.ui.widgets.ContextOverlay; -import org.argeo.eclipse.ui.MouseDoubleClick; -import org.argeo.eclipse.ui.MouseDown; -import org.argeo.eclipse.ui.Selected; +import org.argeo.entity.Term; import org.argeo.entity.TermsManager; import org.argeo.jcr.Jcr; import org.eclipse.swt.SWT; @@ -36,19 +37,18 @@ public class SingleTermPart extends AbstractTermsPart { protected Control createControl(Composite box, String style) { if (isEditing()) { Composite block = new Composite(box, SWT.NONE); - block.setLayout(CmsUiUtils.noSpaceGridLayout(3)); + block.setLayout(CmsSwtUtils.noSpaceGridLayout(3)); createHighlight(block); Text txt = new Text(block, SWT.SINGLE | SWT.BORDER); - CmsUiUtils.style(txt, style == null ? FormStyle.propertyText.style() : style); + CmsSwtUtils.style(txt, style == null ? FormStyle.propertyText.style() : style); ToolBar toolBar = new ToolBar(block, SWT.HORIZONTAL); ToolItem deleteItem = new ToolItem(toolBar, SWT.PUSH); styleDelete(deleteItem); deleteItem.addSelectionListener((Selected) (e) -> { - Jcr.set(getNode(), typology, null); - Jcr.save(getNode()); + setValue(null); stopEditing(); }); ToolItem cancelItem = new ToolItem(toolBar, SWT.PUSH); @@ -94,24 +94,28 @@ public class SingleTermPart extends AbstractTermsPart { return block; } else { Composite block = new Composite(box, SWT.NONE); - block.setLayout(CmsUiUtils.noSpaceGridLayout(2)); - String currentValue = Jcr.get(getNode(), typology); + block.setLayout(CmsSwtUtils.noSpaceGridLayout(2)); + Term currentValue = getValue(); if (currentValue != null) { Label lbl = new Label(block, SWT.SINGLE); String display = getTermLabel(currentValue); lbl.setText(display); - CmsUiUtils.style(lbl, style == null ? FormStyle.propertyText.style() : style); - - lbl.addMouseListener((MouseDoubleClick) (e) -> { - startEditing(); - }); + CmsSwtUtils.style(lbl, style == null ? FormStyle.propertyText.style() : style); + processTermListLabel(currentValue, lbl); + if (isEditable()) { + lbl.addMouseListener((MouseDoubleClick) (e) -> { + startEditing(); + }); + } } else { - ToolBar toolBar = new ToolBar(block, SWT.HORIZONTAL); - ToolItem addItem = new ToolItem(toolBar, SWT.FLAT); - styleAdd(addItem); - addItem.addSelectionListener((Selected) (e) -> { - startEditing(); - }); + if (isEditable()) { + ToolBar toolBar = new ToolBar(block, SWT.HORIZONTAL); + ToolItem addItem = new ToolItem(toolBar, SWT.FLAT); + styleAdd(addItem); + addItem.addSelectionListener((Selected) (e) -> { + startEditing(); + }); + } } return block; } @@ -119,9 +123,9 @@ public class SingleTermPart extends AbstractTermsPart { @Override protected void refresh(ContextOverlay contextArea, String filter, Text txt) { - CmsUiUtils.clear(contextArea); - List terms = termsManager.listAllTerms(typology); - terms: for (String term : terms) { + CmsSwtUtils.clear(contextArea); + List terms = termsManager.listAllTerms(typology.getId()); + terms: for (Term term : terms) { String display = getTermLabel(term); if (filter != null && !display.toLowerCase().contains(filter)) continue terms; @@ -130,8 +134,7 @@ public class SingleTermPart extends AbstractTermsPart { processTermListLabel(term, termL); if (isTermSelectable(term)) termL.addMouseListener((MouseDown) (e) -> { - Jcr.set(getNode(), typology, term); - Jcr.save(getNode()); + setValue(term); contextArea.hide(); stopEditing(); }); @@ -140,4 +143,17 @@ public class SingleTermPart extends AbstractTermsPart { // txt.setFocus(); } + protected Term getValue() { + String property = typology.getId(); + String id = Jcr.get(getNode(), property); + Term term = termsManager.getTerm(id); + + return term; + } + + protected void setValue(Term value) { + String property = typology.getId(); + Jcr.set(getNode(), property, value != null ? value.getId() : null); + Jcr.save(getNode()); + } }