+++ /dev/null
-package org.argeo.entity.ui.forms;
-
-import javax.jcr.Item;
-
-import org.argeo.cms.Localized;
-import org.argeo.cms.ui.CmsTheme;
-import org.argeo.cms.ui.util.CmsIcon;
-import org.argeo.cms.ui.util.CmsUiUtils;
-import org.argeo.cms.ui.viewers.EditablePart;
-import org.argeo.cms.ui.widgets.ContextOverlay;
-import org.argeo.cms.ui.widgets.StyledControl;
-import org.argeo.entity.Term;
-import org.argeo.entity.TermsManager;
-import org.argeo.entity.Typology;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.ToolItem;
-
-/** Common logic between single and mutliple terms editable part. */
-public abstract class AbstractTermsPart extends StyledControl implements EditablePart {
- private static final long serialVersionUID = -5497097995341927710L;
- protected final TermsManager termsManager;
- protected final Typology typology;
-
- private final boolean editable;
-
- private CmsIcon deleteIcon;
- private CmsIcon addIcon;
- private CmsIcon cancelIcon;
-
- private Color highlightColor;
- private Composite highlight;
-
- protected final CmsTheme theme;
-
- public AbstractTermsPart(Composite parent, int style, Item item, TermsManager termsManager, String typology) {
- super(parent, style, item);
- if (item == null)
- throw new IllegalArgumentException("Item cannot be null");
- this.termsManager = termsManager;
- this.typology = termsManager.getTypology(typology);
- this.theme = CmsTheme.getCmsTheme(parent);
- editable = !(SWT.READ_ONLY == (style & SWT.READ_ONLY));
- highlightColor = parent.getDisplay().getSystemColor(SWT.COLOR_GRAY);
- }
-
- public boolean isEditable() {
- return editable;
- }
-
- protected void createHighlight(Composite block) {
- highlight = new Composite(block, SWT.NONE);
- highlight.setBackground(highlightColor);
- GridData highlightGd = new GridData(SWT.FILL, SWT.FILL, false, false);
- highlightGd.widthHint = 5;
- highlightGd.heightHint = 3;
- highlight.setLayoutData(highlightGd);
-
- }
-
- protected String getTermLabel(Term term) {
- if (term instanceof Localized)
- return ((Localized) term).lead();
- else
- return term.getName();
-
- }
-
- protected abstract void refresh(ContextOverlay contextArea, String filter, Text txt);
-
- protected boolean isTermSelectable(Term term) {
- return true;
- }
-
- protected void processTermListLabel(Term term, Label label) {
-
- }
-
- protected void setControlLayoutData(Control control) {
- control.setLayoutData(CmsUiUtils.fillAll());
- }
-
- protected void setContainerLayoutData(Composite composite) {
- composite.setLayoutData(CmsUiUtils.fillAll());
- }
-
- //
- // STYLING
- //
- public void setDeleteIcon(CmsIcon deleteIcon) {
- this.deleteIcon = deleteIcon;
- }
-
- public void setAddIcon(CmsIcon addIcon) {
- this.addIcon = addIcon;
- }
-
- public void setCancelIcon(CmsIcon cancelIcon) {
- this.cancelIcon = cancelIcon;
- }
-
- protected TermsManager getTermsManager() {
- return termsManager;
- }
-
- protected void styleDelete(ToolItem deleteItem) {
- if (deleteIcon != null)
- deleteItem.setImage(deleteIcon.getSmallIcon(theme));
- else
- deleteItem.setText("-");
- }
-
- protected void styleCancel(ToolItem cancelItem) {
- if (cancelIcon != null)
- cancelItem.setImage(cancelIcon.getSmallIcon(theme));
- else
- cancelItem.setText("X");
- }
-
- protected void styleAdd(ToolItem addItem) {
- if (addIcon != null)
- addItem.setImage(addIcon.getSmallIcon(theme));
- else
- addItem.setText("+");
- }
-}