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
.Label
;
21 import org
.eclipse
.swt
.widgets
.Text
;
22 import org
.eclipse
.swt
.widgets
.ToolItem
;
24 /** Common logic between single and mutliple terms editable part. */
25 public abstract class AbstractTermsPart
extends StyledControl
implements SwtEditablePart
, ContentPart
{
26 private static final long serialVersionUID
= -5497097995341927710L;
27 protected final TermsManager termsManager
;
28 protected final Typology typology
;
30 private final boolean editable
;
32 private CmsIcon deleteIcon
;
33 private CmsIcon addIcon
;
34 private CmsIcon cancelIcon
;
36 private Color highlightColor
;
37 private Composite highlight
;
39 private boolean canDelete
= true;
41 protected final CmsSwtTheme theme
;
43 @SuppressWarnings("rawtypes")
44 private Class
<?
extends Enum
> localized
;
46 public AbstractTermsPart(Composite parent
, int style
, Content item
, TermsManager termsManager
, String typology
) {
49 throw new IllegalArgumentException("Item cannot be null");
51 this.termsManager
= termsManager
;
52 this.typology
= termsManager
.getTypology(typology
);
53 this.theme
= CmsSwtUtils
.getCmsTheme(parent
);
54 editable
= !(SWT
.READ_ONLY
== (style
& SWT
.READ_ONLY
));
55 highlightColor
= parent
.getDisplay().getSystemColor(SWT
.COLOR_GRAY
);
58 public boolean isEditable() {
62 protected void createHighlight(Composite block
) {
63 highlight
= new Composite(block
, SWT
.NONE
);
64 highlight
.setBackground(highlightColor
);
65 GridData highlightGd
= new GridData(SWT
.FILL
, SWT
.FILL
, false, false);
66 highlightGd
.widthHint
= 5;
67 highlightGd
.heightHint
= 3;
68 highlight
.setLayoutData(highlightGd
);
72 protected String
getTermLabel(Term term
) {
73 if (term
instanceof Localized
) {
74 return ((Localized
) term
).lead();
76 if (localized
!= null) {
77 @SuppressWarnings("unchecked")
78 String msg
= ((Localized
) Enum
.valueOf(localized
, term
.getName())).lead();
81 return term
.getName();
87 protected abstract void refresh(ContextOverlay contextArea
, String filter
, Text txt
);
89 protected boolean isTermSelectable(Term term
) {
93 protected void processTermListLabel(Term term
, Label label
) {
97 protected void setControlLayoutData(Control control
) {
98 control
.setLayoutData(CmsSwtUtils
.fillAll());
101 protected void setContainerLayoutData(Composite composite
) {
102 composite
.setLayoutData(CmsSwtUtils
.fillAll());
108 public void setDeleteIcon(CmsIcon deleteIcon
) {
109 this.deleteIcon
= deleteIcon
;
112 public void setAddIcon(CmsIcon addIcon
) {
113 this.addIcon
= addIcon
;
116 public void setCancelIcon(CmsIcon cancelIcon
) {
117 this.cancelIcon
= cancelIcon
;
120 protected TermsManager
getTermsManager() {
124 protected void styleDelete(ToolItem deleteItem
) {
125 if (deleteIcon
!= null)
126 deleteItem
.setImage(theme
.getSmallIcon(deleteIcon
));
128 deleteItem
.setText("-");
131 protected void styleCancel(ToolItem cancelItem
) {
132 if (cancelIcon
!= null)
133 cancelItem
.setImage(theme
.getSmallIcon(cancelIcon
));
135 cancelItem
.setText("X");
138 protected void styleAdd(ToolItem addItem
) {
140 addItem
.setImage(theme
.getSmallIcon(addIcon
));
142 addItem
.setText("+");
146 public Content
getContent() {
147 return (Content
) getData();
150 public void setCanDelete(boolean canDelete
) {
151 this.canDelete
= canDelete
;
154 public boolean isCanDelete() {
158 @SuppressWarnings("rawtypes")
159 public void setLocalized(Class
<?
extends Enum
> localized
) {
160 this.localized
= localized
;