]> git.argeo.org Git - gpl/argeo-suite.git/blob - core/org.argeo.entity.ui/src/org/argeo/entity/ui/forms/AbstractTermsPart.java
Use released Argeo Commons.
[gpl/argeo-suite.git] / core / org.argeo.entity.ui / src / org / argeo / entity / ui / forms / AbstractTermsPart.java
1 package org.argeo.entity.ui.forms;
2
3 import javax.jcr.Item;
4
5 import org.argeo.cms.Localized;
6 import org.argeo.cms.ui.CmsTheme;
7 import org.argeo.cms.ui.util.CmsIcon;
8 import org.argeo.cms.ui.viewers.EditablePart;
9 import org.argeo.cms.ui.widgets.ContextOverlay;
10 import org.argeo.cms.ui.widgets.StyledControl;
11 import org.argeo.entity.Term;
12 import org.argeo.entity.TermsManager;
13 import org.argeo.entity.Typology;
14 import org.eclipse.swt.SWT;
15 import org.eclipse.swt.graphics.Color;
16 import org.eclipse.swt.layout.GridData;
17 import org.eclipse.swt.widgets.Composite;
18 import org.eclipse.swt.widgets.Label;
19 import org.eclipse.swt.widgets.Text;
20 import org.eclipse.swt.widgets.ToolItem;
21
22 /** Common logic between single and mutliple terms editable part. */
23 public abstract class AbstractTermsPart extends StyledControl implements EditablePart {
24 private static final long serialVersionUID = -5497097995341927710L;
25 protected final TermsManager termsManager;
26 protected final Typology typology;
27
28 protected final boolean editable;
29
30 private CmsIcon deleteIcon;
31 private CmsIcon addIcon;
32 private CmsIcon cancelIcon;
33
34 private Color highlightColor;
35 private Composite highlight;
36
37 protected final CmsTheme theme;
38
39 public AbstractTermsPart(Composite parent, int style, Item item, TermsManager termsManager, String typology) {
40 super(parent, style, item);
41 if (item == null)
42 throw new IllegalArgumentException("Item cannot be null");
43 this.termsManager = termsManager;
44 this.typology = termsManager.getTypology(typology);
45 this.theme = CmsTheme.getCmsTheme(parent);
46 editable = !(SWT.READ_ONLY == (style & SWT.READ_ONLY));
47 highlightColor = parent.getDisplay().getSystemColor(SWT.COLOR_GRAY);
48 }
49
50 protected void createHighlight(Composite block) {
51 highlight = new Composite(block, SWT.NONE);
52 highlight.setBackground(highlightColor);
53 GridData highlightGd = new GridData(SWT.FILL, SWT.FILL, false, false);
54 highlightGd.widthHint = 5;
55 highlightGd.heightHint = 3;
56 highlight.setLayoutData(highlightGd);
57
58 }
59
60 protected String getTermLabel(Term term) {
61 if (term instanceof Localized)
62 return ((Localized) term).lead();
63 else
64 return term.getName();
65
66 }
67
68 protected abstract void refresh(ContextOverlay contextArea, String filter, Text txt);
69
70 protected boolean isTermSelectable(Term term) {
71 return true;
72 }
73
74 protected void processTermListLabel(Term term, Label label) {
75
76 }
77
78 //
79 // STYLING
80 //
81 public void setDeleteIcon(CmsIcon deleteIcon) {
82 this.deleteIcon = deleteIcon;
83 }
84
85 public void setAddIcon(CmsIcon addIcon) {
86 this.addIcon = addIcon;
87 }
88
89 public void setCancelIcon(CmsIcon cancelIcon) {
90 this.cancelIcon = cancelIcon;
91 }
92
93 protected TermsManager getTermsManager() {
94 return termsManager;
95 }
96
97 protected void styleDelete(ToolItem deleteItem) {
98 if (deleteIcon != null)
99 deleteItem.setImage(deleteIcon.getSmallIcon(theme));
100 else
101 deleteItem.setText("-");
102 }
103
104 protected void styleCancel(ToolItem cancelItem) {
105 if (cancelIcon != null)
106 cancelItem.setImage(cancelIcon.getSmallIcon(theme));
107 else
108 cancelItem.setText("X");
109 }
110
111 protected void styleAdd(ToolItem addItem) {
112 if (addIcon != null)
113 addItem.setImage(addIcon.getSmallIcon(theme));
114 else
115 addItem.setText("+");
116 }
117 }