1 package org
.argeo
.app
.swt
.terms
;
3 import org
.argeo
.api
.acr
.Content
;
4 import org
.argeo
.api
.cms
.ux
.CmsIcon
;
5 import org
.argeo
.app
.api
.Term
;
6 import org
.argeo
.app
.api
.TermsManager
;
7 import org
.argeo
.app
.api
.Typology
;
8 import org
.argeo
.cms
.Localized
;
9 import org
.argeo
.cms
.swt
.CmsSwtTheme
;
10 import org
.argeo
.cms
.swt
.CmsSwtUtils
;
11 import org
.argeo
.cms
.swt
.SwtEditablePart
;
12 import org
.argeo
.cms
.swt
.widgets
.ContextOverlay
;
13 import org
.argeo
.cms
.swt
.widgets
.StyledControl
;
14 import org
.argeo
.cms
.ux
.acr
.ContentPart
;
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
.Text
;
21 import org
.eclipse
.swt
.widgets
.ToolItem
;
23 /** Common logic between single and mutliple terms editable part. */
24 public abstract class AbstractTermsPart
extends StyledControl
implements SwtEditablePart
, ContentPart
{
25 private static final long serialVersionUID
= -5497097995341927710L;
26 protected final TermsManager termsManager
;
27 protected final Typology typology
;
29 private final boolean editable
;
31 private CmsIcon deleteIcon
;
32 private CmsIcon addIcon
;
33 private CmsIcon cancelIcon
;
35 private Color highlightColor
;
36 private Composite highlight
;
38 private boolean canDelete
= true;
40 protected final CmsSwtTheme theme
;
42 private int iconsSize
= 12;
44 private String message
;
46 @SuppressWarnings("rawtypes")
47 private Class
<?
extends Enum
> localized
;
49 public AbstractTermsPart(Composite parent
, int style
, Content item
, TermsManager termsManager
, String typology
) {
52 throw new IllegalArgumentException("Item cannot be null");
54 this.termsManager
= termsManager
;
55 this.typology
= termsManager
.getTypology(typology
);
56 this.theme
= CmsSwtUtils
.getCmsTheme(parent
);
57 editable
= !(SWT
.READ_ONLY
== (style
& SWT
.READ_ONLY
));
58 highlightColor
= parent
.getDisplay().getSystemColor(SWT
.COLOR_GRAY
);
61 public boolean isEditable() {
65 protected void createHighlight(Composite block
) {
66 highlight
= new Composite(block
, SWT
.NONE
);
67 highlight
.setBackground(highlightColor
);
68 GridData highlightGd
= new GridData(SWT
.FILL
, SWT
.FILL
, false, false);
69 highlightGd
.widthHint
= 5;
70 highlightGd
.heightHint
= 3;
71 highlight
.setLayoutData(highlightGd
);
75 protected String
getTermLabel(Term term
) {
76 if (term
instanceof Localized
) {
77 return ((Localized
) term
).lead();
79 if (localized
!= null) {
80 @SuppressWarnings("unchecked")
81 String msg
= ((Localized
) Enum
.valueOf(localized
, term
.getName())).lead();
84 return term
.getName();
90 protected abstract void refresh(ContextOverlay contextArea
, String filter
, Text txt
);
92 protected boolean isTermSelectable(Term term
) {
96 protected void processTermListLabel(Term term
, Text label
) {
100 protected void setControlLayoutData(Control control
) {
101 control
.setLayoutData(CmsSwtUtils
.fillAll());
104 protected void setContainerLayoutData(Composite composite
) {
105 composite
.setLayoutData(CmsSwtUtils
.fillAll());
111 public void setDeleteIcon(CmsIcon deleteIcon
) {
112 this.deleteIcon
= deleteIcon
;
115 public void setAddIcon(CmsIcon addIcon
) {
116 this.addIcon
= addIcon
;
119 public void setCancelIcon(CmsIcon cancelIcon
) {
120 this.cancelIcon
= cancelIcon
;
123 protected TermsManager
getTermsManager() {
127 protected void styleDelete(ToolItem deleteItem
) {
128 if (deleteIcon
!= null)
129 deleteItem
.setImage(theme
.getSmallIcon(deleteIcon
));
131 deleteItem
.setText("-");
134 protected void styleCancel(ToolItem cancelItem
) {
135 if (cancelIcon
!= null) {
136 // cancelItem.setImage(theme.getSmallIcon(cancelIcon));
137 cancelItem
.setImage(theme
.getIcon(cancelIcon
.name(), iconsSize
));
140 cancelItem
.setText("X");
144 protected void styleAdd(ToolItem addItem
) {
145 if (addIcon
!= null) {
146 // addItem.setImage(theme.getSmallIcon(addIcon));
147 addItem
.setImage(theme
.getIcon(addIcon
.name(), iconsSize
));
149 addItem
.setText("+");
154 public Content
getContent() {
155 return (Content
) getData();
158 public void setCanDelete(boolean canDelete
) {
159 this.canDelete
= canDelete
;
162 public boolean isCanDelete() {
166 @SuppressWarnings("rawtypes")
167 public void setLocalized(Class
<?
extends Enum
> localized
) {
168 this.localized
= localized
;
171 public String
getMessage() {
175 public void setMessage(String message
) {
176 this.message
= message
;