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