eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamMemberSection.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamOrPersonBaseDetailSection.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/agent/TeamWizardPage.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/campanula/EntitySelectionField.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/campanula/EntitySelectionFieldController.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/campanula/FieldObservationDetailsView.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/campanula/FieldObservationGeneralElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/campanula/FieldObservationGeneralElementController.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/campanula/GatheringEventDetailsElement.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/campanula/GatheringEventDetailsElementController.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/campanula/NumberFieldController.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/campanula/TextFieldController.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/campanula/ToggleableTextField.java -text
+eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/campanula/ToggleableTextFieldController.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/ClassificationDetailElement.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/ClassificationDetailSection.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/classification/ClassificationWizardPage.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldObservationDetailSection.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/FieldObservationWizardPage.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventDetailElement.java -text
-eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventDetailElementComposite.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventDetailSection.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GatheringEventWizardPage.java -text
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/GeneralDetailElement.java -text
import eu.etaxonomy.taxeditor.ui.section.agent.TeamMemberElement;
import eu.etaxonomy.taxeditor.ui.section.agent.TeamMemberSection;
import eu.etaxonomy.taxeditor.ui.section.agent.TeamOrPersonBaseDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.campanula.FieldObservationGeneralElement;
+import eu.etaxonomy.taxeditor.ui.section.campanula.FieldObservationGeneralElementController;
import eu.etaxonomy.taxeditor.ui.section.campanula.GatheringEventDetailsElement;
+import eu.etaxonomy.taxeditor.ui.section.campanula.GatheringEventDetailsElementController;
import eu.etaxonomy.taxeditor.ui.section.classification.ClassificationDetailElement;
import eu.etaxonomy.taxeditor.ui.section.classification.ClassificationDetailSection;
import eu.etaxonomy.taxeditor.ui.section.classification.TaxonNodeDetailElement;
import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldObservationDetailElement;
import eu.etaxonomy.taxeditor.ui.section.occurrence.FieldObservationDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailElement;
-import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailElementComposite;
import eu.etaxonomy.taxeditor.ui.section.occurrence.GatheringEventDetailSection;
import eu.etaxonomy.taxeditor.ui.section.occurrence.GeneralDetailElement;
import eu.etaxonomy.taxeditor.ui.section.occurrence.GeneralDetailSection;
return element;
}
+ public FieldObservationGeneralElementController createFieldObservationGeneralElement(ICdmFormElement parentElement){
+ FieldObservationGeneralElementController element = new FieldObservationGeneralElementController(new FieldObservationGeneralElement(parentElement.getLayoutComposite(), SWT.NONE), this, parentElement);
+ addAndAdaptElement(parentElement, element);
+ return element;
+ }
+
public GatheringEventDetailElement createGatheringEventDetailElement(ICdmFormElement parentElement) {
GatheringEventDetailElement element = new GatheringEventDetailElement(this, parentElement);
addAndAdaptElement(parentElement, element);
return element;
}
- public GatheringEventDetailElementComposite createGatheringEventDetailElementComposite(ICdmFormElement parentElement) {
- GatheringEventDetailElementComposite element = new GatheringEventDetailElementComposite(parentElement.getLayoutComposite(), new GatheringEventDetailsElement(parentElement.getLayoutComposite(), SWT.NONE), this, parentElement, SWT.NONE);
+ public GatheringEventDetailsElementController createGatheringEventDetailsElementController(ICdmFormElement parentElement) {
+ GatheringEventDetailsElementController element = new GatheringEventDetailsElementController(new GatheringEventDetailsElement(parentElement.getLayoutComposite(), SWT.NONE), this, parentElement);
adapt(element);
parentElement.addElement(element);
return element;
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2013 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.section.campanula;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+import org.eclipse.wb.swt.ResourceManager;
+
+/**
+ * @author pplitzner
+ * @date 13.08.2013
+ *
+ */
+public class EntitySelectionField extends Composite {
+ private FormToolkit formToolkit = new FormToolkit(Display.getDefault());
+ private Label text;
+ private Button button_selection;
+ private Button button_edit;
+ private Button button_remove;
+
+ /**
+ * Create the composite.
+ * @param parent
+ * @param style
+ */
+ public EntitySelectionField(Composite parent, int style) {
+ super(parent, style);
+ {
+ TableWrapLayout tableWrapLayout = new TableWrapLayout();
+ tableWrapLayout.verticalSpacing = 0;
+ tableWrapLayout.topMargin = 0;
+ tableWrapLayout.rightMargin = 0;
+ tableWrapLayout.numColumns = 4;
+ tableWrapLayout.leftMargin = 0;
+ tableWrapLayout.horizontalSpacing = 0;
+ tableWrapLayout.bottomMargin = 0;
+ setLayout(tableWrapLayout);
+ }
+
+ text = formToolkit.createLabel(this, "", SWT.NONE);
+ text.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+
+ button_selection = formToolkit.createButton(this, "", SWT.NONE);
+ button_selection.setImage(ResourceManager.getPluginImage("eu.etaxonomy.taxeditor.store", "icons/prj_obj.gif"));
+
+ button_edit = formToolkit.createButton(this, "", SWT.NONE);
+ button_edit.setImage(ResourceManager.getPluginImage("eu.etaxonomy.taxeditor.store", "icons/text.gif"));
+
+ button_remove = formToolkit.createButton(this, "", SWT.NONE);
+ button_remove.setImage(ResourceManager.getPluginImage("eu.etaxonomy.taxeditor.store", "icons/trash.gif"));
+ }
+
+ @Override
+ protected void checkSubclass() {
+ // Disable the check that prevents subclassing of SWT components
+ }
+ public Label getText() {
+ return text;
+ }
+ public Button getButton_selection() {
+ return button_selection;
+ }
+ public Button getButton_edit() {
+ return button_edit;
+ }
+ public Button getButton_remove() {
+ return button_remove;
+ }
+}
--- /dev/null
+// $Id$
+/**
+ * Copyright (C) 2013 EDIT
+ * European Distributed Institute of Taxonomy
+ * http://www.e-taxonomy.eu
+ *
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+package eu.etaxonomy.taxeditor.ui.section.campanula;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Shell;
+import org.springframework.security.core.GrantedAuthority;
+
+import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
+import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.cdm.model.common.ICdmBase;
+import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
+import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.model.ImageResources;
+import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.SelectionDialogFactory;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
+import eu.etaxonomy.taxeditor.ui.element.IEntityElement;
+import eu.etaxonomy.taxeditor.ui.element.ILabeledElement;
+import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
+
+/**
+ * @author pplitzner
+ * @date 13.08.2013
+ *
+ */
+public class EntitySelectionFieldController<T extends ICdmBase> extends AbstractCdmFormElement implements SelectionListener, IEnableableFormElement, ISelectableElement, IEntityElement<T>, ILabeledElement, IConversationEnabled {
+
+ /**
+ * Bitmask for configuring functionality of selection element
+ */
+ public static final int NOTHING = 0; // 000
+ public static final int EDITABLE = 1 << 0; // 001
+ public static final int DELETABLE = 1 << 1; // 010
+ public static final int SELECTABLE = 1 << 2; // 100
+ public static final int ALL = EDITABLE | DELETABLE | SELECTABLE; // 111
+
+ protected T entity;
+
+ //TODO also control "label" with this class?
+// protected Label label;
+ protected Label text;
+ protected Button button_selection;
+
+ private SelectionArbitrator selectionArbitrator;
+
+ protected Button button_edit;
+
+ private final String labelString;
+
+ private Composite selectableComposite;
+
+ private Button button_remove;
+
+ private final boolean isEditable;
+
+ private final boolean isDeletable;
+
+ private final ConversationHolder conversation;
+ private Class<T> clazz;
+
+ /**
+ * <p>
+ * Constructor for AbstractSelectionElement.
+ * </p>
+ *
+ * @param formFactory
+ * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
+ * object.
+ * @param conversation
+ * TODO
+ * @param parentElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ * @param labelString
+ * a {@link java.lang.String} object.
+ * @param entity
+ * a T object.
+ * @param isEditable
+ * a boolean.
+ * @param isSelectable
+ * a boolean.
+ * @param isDeletable
+ * a boolean.
+ * @param style
+ * a int.
+ * @param <T>
+ * a T object.
+ */
+ public EntitySelectionFieldController(EntitySelectionField entitySelectionField, CdmFormFactory formFactory, ConversationHolder conversation, ICdmFormElement parentElement, String labelString, T entity, int mode, int style) {
+ super(formFactory, parentElement);
+
+ setPropertyChangeListeners(formFactory.getPropertyChangeListeners());
+ formFactory.addPropertyChangeListener(this);
+
+ this.isEditable = (mode & EDITABLE) == EDITABLE;
+ this.isDeletable = (mode & DELETABLE) == DELETABLE;
+ boolean isSelectable = (mode & SELECTABLE) == SELECTABLE;
+
+ this.labelString = labelString;
+
+ this.conversation = conversation;
+
+ if (isSelectable && formFactory.getSelectionProvider() != null) {
+ selectionArbitrator = formFactory.createSelectionArbitrator(this);
+ }
+
+ createControls(getLayoutComposite(), entitySelectionField, SWT.NULL);
+
+ setEntity(entity);
+ }
+
+ public EntitySelectionFieldController(EntitySelectionField entitySelectionField, CdmFormFactory formFactory, ConversationHolder conversation, ICdmFormElement parentElement, Class<T> clazz, String labelString, T entity, int mode, int style) {
+ this(entitySelectionField, formFactory, conversation, parentElement, labelString, entity, mode, style);
+ this.clazz = clazz;
+ }
+
+ private void createControls(Composite parent, EntitySelectionField entitySelectionField, int style) {
+
+// label = formFactory.createLabel(getLayoutComposite(), labelString, SWT.NULL);
+//
+// addControl(label);
+
+ selectableComposite = entitySelectionField;//formFactory.createComposite(getLayoutComposite());
+
+ int columns = 2;
+ if (isEditable) {
+ columns += 1;
+ }
+ if (isDeletable) {
+ columns += 1;
+ }
+
+ selectableComposite.setLayout(LayoutConstants.LAYOUT(columns, false));
+ selectableComposite.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
+
+ addControl(selectableComposite);
+
+ text = entitySelectionField.getText();//formFactory.createLabel(selectableComposite, null, SWT.WRAP);
+ addControl(text);
+
+ text.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
+ text.setBackground(AbstractUtility.getColor(Resources.COLOR_TEXT_DISABLED_BACKGROUND));
+
+ button_selection = entitySelectionField.getButton_selection();//formFactory.createButton(selectableComposite, null, SWT.PUSH);
+ button_selection.setImage(ImageResources.getImage(ImageResources.BROWSE_ICON));
+ button_selection.setToolTipText("Browse existing");
+
+ addControl(button_selection);
+ button_selection.addSelectionListener(this);
+
+ if (isEditable) {
+ button_edit = entitySelectionField.getButton_edit();//formFactory.createButton(selectableComposite, null, SWT.PUSH);
+ button_edit.setImage(ImageResources.getImage(ImageResources.EDIT_ICON));
+ button_edit.setToolTipText("Edit");
+ addControl(button_edit);
+// button_edit.addSelectionListener(new EditListener(this));
+ }
+
+ if (isDeletable) {
+ button_remove = entitySelectionField.getButton_remove();//formFactory.createButton(selectableComposite, null, SWT.PUSH);
+ button_remove.setImage(ImageResources.getImage(ImageResources.TRASH_ICON));
+ button_remove.setToolTipText("Remove");
+ addControl(button_remove);
+// button_remove.addSelectionListener(new DeleteListener(this));
+ }
+ }
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ T selection = SelectionDialogFactory.getSelectionFromDialog(clazz, getShell(), getConversationHolder(), getEntity());
+ setSelectionInternal(selection);
+ }
+
+ /**
+ * Return the selected object
+ *
+ * @return a T object.
+ */
+ public T getSelection() {
+ return entity;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * eu.etaxonomy.taxeditor.forms.IEnableableFormElement#setEnabled(boolean)
+ */
+ /** {@inheritDoc} */
+ @Override
+ public void setEnabled(boolean enabled) {
+ button_selection.setEnabled(enabled);
+ if (isEditable) {
+ button_edit.setEnabled(enabled && entity != null);
+ }
+ }
+
+ /**
+ * <p>
+ * setSelectionInternal
+ * </p>
+ *
+ * @param selection
+ * a T object.
+ */
+ protected void setSelectionInternal(T selection) {
+ if (selection != null && !selection.equals(this.entity)) {
+ setEntity(selection);
+ firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
+ }
+ }
+
+ /**
+ * <p>
+ * Setter for the field <code>entity</code>.
+ * </p>
+ *
+ * @param selection
+ * a T object.
+ */
+ public void setEntity(T selection) {
+ this.entity = selection;
+ updateElement();
+ }
+
+ /**
+ * Updates this elements view
+ */
+ protected void updateElement() {
+ String title = CdmUtils.Nz(getTitle());
+ // we have to duplicate ampersands otherwise they are treated as
+ // mnenomic (see Label.setText() documentation)
+ title = title.replace("&", "&&");
+ text.setText(title); // title can be null
+ if (isEditable) {
+ button_edit.setEnabled(entity != null);
+ }
+ }
+
+ /**
+ * <p>
+ * updateFromWizard
+ * </p>
+ */
+ protected void updateFromWizard() {
+ updateElement();
+ firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
+ }
+
+ /**
+ * <p>
+ * getTitle
+ * </p>
+ *
+ * @return a {@link java.lang.String} object.
+ */
+ protected String getTitle() {
+ if (entity != null) {
+ if (entity instanceof IIdentifiableEntity) {
+ return ((IIdentifiableEntity) entity).getTitleCache();
+ } else if (entity instanceof Group) {
+ return ((Group) entity).getName();
+ } else if (entity instanceof GrantedAuthority) {
+ return ((GrantedAuthority) entity).getAuthority();
+ }
+ }
+ return "";
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void setSelected(boolean selected) {
+ setBackground(selected ? SELECTED : getPersistentBackground());
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see eu.etaxonomy.taxeditor.forms.IEntityElement#getEntity()
+ */
+ /**
+ * <p>
+ * Getter for the field <code>entity</code>.
+ * </p>
+ *
+ * @return a T object.
+ */
+ @Override
+ public T getEntity() {
+ return entity;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see eu.etaxonomy.taxeditor.forms.section.cdmdetail.ISelectableElement#
+ * getSelectionArbitrator()
+ */
+ /**
+ * <p>
+ * Getter for the field <code>selectionArbitrator</code>.
+ * </p>
+ *
+ * @return a {@link eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator}
+ * object.
+ */
+ @Override
+ public SelectionArbitrator getSelectionArbitrator() {
+ return selectionArbitrator;
+ }
+
+ /**
+ * Convenient access to current shell
+ *
+ * @return a {@link org.eclipse.swt.widgets.Shell} object.
+ */
+ protected Shell getShell() {
+ return getLayoutComposite().getShell();
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void setIrrelevant(boolean irrelevant) {
+ String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT : Resources.COLOR_TEXT_DISABLED_BACKGROUND;
+
+ Color color = AbstractUtility.getColor(colorId);
+ text.setBackground(color);
+ }
+
+ private class DeleteListener extends SelectionAdapter {
+
+ private final EntitySelectionElement<T> selectionElement;
+
+ public DeleteListener(EntitySelectionElement<T> selectionElement) {
+ this.selectionElement = selectionElement;
+ }
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ setEntity(null);
+ firePropertyChangeEvent(new CdmPropertyChangeEvent(selectionElement, null));
+ }
+ }
+
+ private class EditListener extends SelectionAdapter {
+
+ private final EntitySelectionElement<T> selectionElement;
+
+ public EditListener(EntitySelectionElement<T> selectionElement) {
+ this.selectionElement = selectionElement;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+// WizardDialog dialog = new WizardDialog(selectionElement.getShell(), new EditFromSelectionWizard(selectionElement));
+// if (dialog.open() == IStatus.OK) {
+// selectionElement.updateFromWizard();
+// }
+ }
+ }
+
+ // not used
+ /** {@inheritDoc} */
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+ /**
+ * <p>
+ * getConversationHolder
+ * </p>
+ *
+ * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
+ * object.
+ */
+ @Override
+ public ConversationHolder getConversationHolder() {
+ return conversation;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void setBackground(Color color) {
+// label.setBackground(color);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void setLabel(String labelString) {
+// if (label != null) {
+// label.setText(labelString);
+// }
+ }
+
+ /**
+ * <p>
+ * Getter for the field <code>label</code>.
+ * </p>
+ *
+ * @return a {@link java.lang.String} object.
+ */
+ @Override
+ public String getLabel() {
+// if (label != null) {
+// return label.getText();
+// }
+ return null;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void update(CdmDataChangeMap changeEvents) {
+ }
+}
*/
public class FieldObservationGeneralElement extends Composite {
private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
- private final Text text;
- private final Text text_1;
- private final Text text_2;
- private final Text text_3;
- private final Text text_4;
- private final Text text_5;
- private final Text text_6;
- private final Text text_7;
+ private final Text textLocality;
+ private final Text textLatitude;
+ private final Text textLongitude;
+ private final Text textErrorRadius;
+ private final Text textElevation;
+ private final Text textCollectingNumber;
+ private EntitySelectionField countrySelectionField;
+ private EntitySelectionField collectorSelectionField;
+ private ToggleableTextField toggleableTextField;
/**
* Create the composite.
* @param style
*/
public FieldObservationGeneralElement(Composite parent, int style) {
- super(parent, style);
+ super(parent, SWT.NONE);
setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
{
TableWrapLayout tableWrapLayout = new TableWrapLayout();
Label lblTitleCache = formToolkit.createLabel(this, "Title Cache", SWT.NONE);
- text = formToolkit.createText(this, "New Text", SWT.NONE);
- text.setText("");
- text.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+ toggleableTextField = new ToggleableTextField(this, SWT.NONE);
+ TableWrapData twd_toggleableTextField = new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP, 1, 1);
+ twd_toggleableTextField.grabHorizontal = true;
+ toggleableTextField.setLayoutData(twd_toggleableTextField);
+ formToolkit.adapt(toggleableTextField);
+ formToolkit.paintBordersFor(toggleableTextField);
Label lblNewLabel = new Label(this, SWT.NONE);
formToolkit.adapt(lblNewLabel, true, true);
lblNewLabel.setText("Country");
- new Label(this, SWT.NONE);
+
+ countrySelectionField = new EntitySelectionField(this, SWT.NONE);
+ countrySelectionField.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+ formToolkit.adapt(countrySelectionField);
+ formToolkit.paintBordersFor(countrySelectionField);
Label lblLocality = formToolkit.createLabel(this, "Locality", SWT.NONE);
- text_1 = formToolkit.createText(this, "New Text", SWT.NONE);
- text_1.setText("");
- text_1.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+ textLocality = formToolkit.createText(this, "New Text", SWT.NONE);
+ textLocality.setText("");
+ textLocality.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
Label lblLatitude = formToolkit.createLabel(this, "Latitude", SWT.NONE);
- text_2 = formToolkit.createText(this, "New Text", SWT.NONE);
- text_2.setText("");
- text_2.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+ textLatitude = formToolkit.createText(this, "New Text", SWT.NONE);
+ textLatitude.setText("");
+ textLatitude.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
Label lblLongitude = formToolkit.createLabel(this, "Longitude", SWT.NONE);
- text_3 = formToolkit.createText(this, "New Text", SWT.NONE);
- text_3.setText("");
- text_3.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+ textLongitude = formToolkit.createText(this, "New Text", SWT.NONE);
+ textLongitude.setText("");
+ textLongitude.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
Label lblErrorRadiusm = formToolkit.createLabel(this, "Error Radius (m)", SWT.NONE);
- text_4 = formToolkit.createText(this, "New Text", SWT.NONE);
- text_4.setText("");
- text_4.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+ textErrorRadius = formToolkit.createText(this, "New Text", SWT.NONE);
+ textErrorRadius.setText("");
+ textErrorRadius.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
Label lblReferenceSystem = formToolkit.createLabel(this, "Reference System", SWT.NONE);
new Label(this, SWT.NONE);
Label lblAbsoluteElevationm = formToolkit.createLabel(this, "Absolute Elevation (m)", SWT.NONE);
- text_5 = formToolkit.createText(this, "New Text", SWT.NONE);
- text_5.setText("");
- text_5.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+ textElevation = formToolkit.createText(this, "New Text", SWT.NONE);
+ textElevation.setText("");
+ textElevation.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
Label lblDate = formToolkit.createLabel(this, "Date", SWT.NONE);
new Label(this, SWT.NONE);
Label lblCollector = formToolkit.createLabel(this, "Collector", SWT.NONE);
- text_6 = formToolkit.createText(this, "New Text", SWT.NONE);
- text_6.setText("");
- text_6.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+ collectorSelectionField = new EntitySelectionField(this, SWT.NONE);
+ collectorSelectionField.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+ formToolkit.adapt(collectorSelectionField);
+ formToolkit.paintBordersFor(collectorSelectionField);
+
Label lblCollectingNumber = formToolkit.createLabel(this, "Collecting Number", SWT.NONE);
- text_7 = formToolkit.createText(this, "New Text", SWT.NONE);
- text_7.setText("");
- text_7.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+ textCollectingNumber = formToolkit.createText(this, "New Text", SWT.NONE);
+ textCollectingNumber.setText("");
+ textCollectingNumber.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
}
protected void checkSubclass() {
// Disable the check that prevents subclassing of SWT components
}
+ public EntitySelectionField getCountrySelectionField() {
+ return countrySelectionField;
+ }
+ public EntitySelectionField getCollectorSelectionField() {
+ return collectorSelectionField;
+ }
+ public Text getTextElevation() {
+ return textElevation;
+ }
+ public Text getTextLocality() {
+ return textLocality;
+ }
+ public Text getTextLatitude() {
+ return textLatitude;
+ }
+ public Text getTextLongitude() {
+ return textLongitude;
+ }
+ public Text getTextErrorRadius() {
+ return textErrorRadius;
+ }
+ public Text getTextCollectingNumber() {
+ return textCollectingNumber;
+ }
+ public ToggleableTextField getToggleableTextField() {
+ return toggleableTextField;
+ }
}
--- /dev/null
+// $Id$
+/**
+ * Copyright (C) 2013 EDIT
+ * European Distributed Institute of Taxonomy
+ * http://www.e-taxonomy.eu
+ *
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+package eu.etaxonomy.taxeditor.ui.section.campanula;
+
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.common.LanguageString;
+import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LanguageStringWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.element.PointElement;
+import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
+
+/**
+ * @author pplitzner
+ * @date 13.08.2013
+ *
+ */
+public class FieldObservationGeneralElementController extends AbstractCdmDetailElement<DerivedUnitFacade> {
+
+ private ToggleableTextFieldController toggleableText_titleCache;
+
+ private EntitySelectionFieldController<NamedArea> selection_country;
+ private LanguageStringWithLabelElement languageText_locality;
+ private PointElement element_point;
+ private NumberFieldController number_elevation;
+ private TimePeriodElement element_date;
+ private EntitySelectionFieldController<AgentBase> selection_collector;
+ private TextFieldController text_collectingNumber;
+ private FieldObservationGeneralElement fieldObservationGeneralElement;
+
+ /**
+ * @param formFactory
+ * @param formElement
+ */
+ public FieldObservationGeneralElementController(FieldObservationGeneralElement fieldObservationGeneralElement, CdmFormFactory formFactory, ICdmFormElement formElement) {
+ super(formFactory, formElement);
+ this.fieldObservationGeneralElement = fieldObservationGeneralElement;
+ formFactory.addPropertyChangeListener(this);
+ formFactory.getPropertyChangeListeners().add(this);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
+ * (eu.etaxonomy.taxeditor.forms.ICdmFormElement, java.lang.Object, int)
+ */
+ @Override
+ protected void createControls(ICdmFormElement formElement, DerivedUnitFacade entity, int style) {
+ toggleableText_titleCache = new ToggleableTextFieldController(fieldObservationGeneralElement.getToggleableTextField(), getFormFactory(), formElement, entity.getTitleCache(), entity.isProtectedTitleCache(), style);
+
+ selection_country = new EntitySelectionFieldController<NamedArea>(fieldObservationGeneralElement.getCountrySelectionField(), getFormFactory(), getConversationHolder(), formElement, NamedArea.class, "Country", entity.getCountry(), EntitySelectionElement.NOTHING, style);
+// languageText_locality = formFactory.createLanguageStringWithLabelElement(formElement, "Locality", entity.getLocality(), style);
+// element_point = formFactory.createPointElement(formElement, entity.getExactLocation(), style);
+ number_elevation = new NumberFieldController(fieldObservationGeneralElement.getTextElevation(), getFormFactory(), formElement, entity.getAbsoluteElevation());
+// element_date = formFactory.createTimePeriodElement(formElement, "Date", entity.getGatheringPeriod(), style);
+ selection_collector = new EntitySelectionFieldController<AgentBase>(fieldObservationGeneralElement.getCollectorSelectionField(), getFormFactory(), getConversationHolder(), formElement, AgentBase.class, "Collector", entity.getCollector(), EntitySelectionElement.ALL, style);
+ text_collectingNumber = new TextFieldController(fieldObservationGeneralElement.getTextCollectingNumber(), getFormFactory(), formElement, entity.getFieldNumber(), null);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
+ * .lang.Object)
+ */
+ @Override
+ public void handleEvent(Object eventSource) {
+ if (eventSource == toggleableText_titleCache) {
+ getEntity().setTitleCache(toggleableText_titleCache.getText(), toggleableText_titleCache.getState());
+ } else if (eventSource == selection_country) {
+ getEntity().setCountry(selection_country.getSelection());
+ } else if (eventSource == languageText_locality) {
+ LanguageString locality = languageText_locality.getLanguageString();
+ getEntity().setLocality(locality);
+ } else if (eventSource == element_point) {
+ getEntity().setExactLocation(element_point.getPoint());
+ } else if (eventSource == number_elevation) {
+ getEntity().setAbsoluteElevation(number_elevation.getInteger());
+ } else if (eventSource == element_date) {
+ getEntity().setGatheringPeriod(element_date.getTimePeriod());
+ } else if (eventSource == selection_collector) {
+ getEntity().setCollector(selection_collector.getSelection());
+ } else if (eventSource == text_collectingNumber) {
+ getEntity().setFieldNumber(text_collectingNumber.getText());
+ }
+ if (eventSource != toggleableText_titleCache) {
+ toggleableText_titleCache.setText(getEntity().getTitleCache());
+ }
+ }
+
+}
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
import org.eclipse.ui.forms.widgets.FormToolkit;
import org.eclipse.ui.forms.widgets.TableWrapData;
import org.eclipse.ui.forms.widgets.TableWrapLayout;
*
*/
public class GatheringEventDetailsElement extends Composite {
- private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
- private final Text textElevationError;
- private final Text text_ElevationMinimum;
- private final Text text_ElevationMaximum;
- private final Text text_CollectingMethod;
- private final Text text_DistanceToGround;
- private final Text text_DistanceToWaterSurface;
- private final Text text_GatheringEventDescription;
+ private FormToolkit formToolkit = new FormToolkit(Display.getDefault());
+ private Text textElevationError;
+ private Text text_ElevationMinimum;
+ private Text text_ElevationMaximum;
+ private Text text_CollectingMethod;
+ private Text text_DistanceToGround;
+ private Text text_DistanceToWaterSurface;
+ private Text text_GatheringEventDescription;
+ private ExpandableComposite section_collectingAreas;
+ private Composite composite;
/**
* Create the composite.
setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
{
TableWrapLayout tableWrapLayout = new TableWrapLayout();
+ tableWrapLayout.verticalSpacing = 0;
+ tableWrapLayout.topMargin = 0;
+ tableWrapLayout.rightMargin = 0;
+ tableWrapLayout.leftMargin = 0;
+ tableWrapLayout.horizontalSpacing = 0;
+ tableWrapLayout.bottomMargin = 0;
tableWrapLayout.numColumns = 2;
setLayout(tableWrapLayout);
}
text_GatheringEventDescription.setText("");
text_GatheringEventDescription.setLayoutData(new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1));
+ section_collectingAreas = formToolkit.createExpandableComposite(this, ExpandableComposite.TWISTIE);
+ section_collectingAreas.setLayoutData(new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP, 1, 2));
+ formToolkit.paintBordersFor(section_collectingAreas);
+ section_collectingAreas.setText("Collecting Areas");
+ section_collectingAreas.setExpanded(true);
+
+ composite = formToolkit.createComposite(section_collectingAreas, SWT.NONE);
+ formToolkit.paintBordersFor(composite);
+ section_collectingAreas.setClient(composite);
+
}
@Override
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2013 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.section.campanula;
+
+import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+
+/**
+ * @author pplitzner
+ * @date 14.08.2013
+ *
+ */
+public class GatheringEventDetailsElementController extends AbstractCdmDetailElement<DerivedUnitFacade> {
+
+ private GatheringEventDetailsElement gatheringEventDetailsElement;
+
+ private NumberFieldController number_absoluteElevationError;
+
+ private NumberFieldController number_absoluteElevationMinimum;
+
+ private NumberFieldController number_absoluteElevationMaximum;
+
+ private TextFieldController text_collectingMethod;
+
+ private NumberFieldController number_distanceToGround;
+
+ private NumberFieldController number_distanceToWaterSurface;
+
+ private TextFieldController text_gatheringEventDescription;
+
+ // private CollectingAreasDetailSection section_collectingAreas;
+
+ /**
+ * <p>
+ * Constructor for GatheringEventDetailElement.
+ * </p>
+ *
+ * @param formFactory
+ * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
+ * object.
+ * @param formElement
+ * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
+ * object.
+ */
+ public GatheringEventDetailsElementController(GatheringEventDetailsElement gatheringEventDetailsElement, CdmFormFactory formFactory, ICdmFormElement formElement) {
+ super(formFactory, formElement);
+ this.gatheringEventDetailsElement = gatheringEventDetailsElement;
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ protected void createControls(ICdmFormElement formElement, DerivedUnitFacade entity, int style) {
+
+ number_absoluteElevationError = new NumberFieldController(gatheringEventDetailsElement.getTextElevationError(), formFactory, this, (Integer)null);
+ number_absoluteElevationMinimum = new NumberFieldController(gatheringEventDetailsElement.getText_ElevationMinimum(), formFactory, this, (Integer)null);
+ number_absoluteElevationMaximum = new NumberFieldController(gatheringEventDetailsElement.getText_ElevationMaximum(), formFactory, this, (Integer)null);
+ text_collectingMethod = new TextFieldController(gatheringEventDetailsElement.getText_CollectingMethod(), formFactory, this, null, null);
+ number_distanceToGround = new NumberFieldController(gatheringEventDetailsElement.getText_DistanceToGround(), formFactory, this, (Integer)null);
+ number_distanceToWaterSurface = new NumberFieldController(gatheringEventDetailsElement.getText_DistanceToWaterSurface(), formFactory, this, (Integer)null);
+ text_gatheringEventDescription = new TextFieldController(gatheringEventDetailsElement.getText_GatheringEventDescription(), formFactory, this, null, null);
+// section_collectingAreas = formFactory.createCollectingAreasDetailSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
+// section_collectingAreas.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+// section_collectingAreas.setEntity(entity);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void handleEvent(Object eventSource) {
+ if (eventSource == number_absoluteElevationError) {
+ getEntity().setAbsoluteElevationError(number_absoluteElevationError.getInteger());
+ } else if (eventSource == number_absoluteElevationMinimum) {
+ try {
+ getEntity().setAbsoluteElevationRange(number_absoluteElevationMinimum.getInteger(), number_absoluteElevationMaximum.getInteger());
+ number_absoluteElevationMinimum.setBackground(getColor(Resources.COLOR_COMPOSITE_BACKGROUND));
+ } catch (IllegalArgumentException e) {
+ number_absoluteElevationMinimum.setBackground(getColor(Resources.COLOR_PARSE_ERROR));
+ AbstractUtility.warn(getClass(), e.getLocalizedMessage());
+ }
+ } else if (eventSource == number_absoluteElevationMaximum) {
+ try {
+ getEntity().setAbsoluteElevationRange(number_absoluteElevationMinimum.getInteger(), number_absoluteElevationMaximum.getInteger());
+ number_absoluteElevationMaximum.setBackground(getColor(Resources.COLOR_COMPOSITE_BACKGROUND));
+ } catch (IllegalArgumentException e) {
+ number_absoluteElevationMaximum.setBackground(getColor(Resources.COLOR_PARSE_ERROR));
+ AbstractUtility.warn(getClass(), e.getLocalizedMessage());
+ }
+ } else if (eventSource == text_collectingMethod) {
+ getEntity().setCollectingMethod(text_collectingMethod.getText());
+ } else if (eventSource == number_distanceToGround) {
+ getEntity().setDistanceToGround(number_distanceToGround.getInteger());
+ } else if (eventSource == number_distanceToWaterSurface) {
+ getEntity().setDistanceToWaterSurface(number_distanceToWaterSurface.getInteger());
+ } else if (eventSource == text_gatheringEventDescription) {
+ getEntity().setGatheringEventDescription(text_gatheringEventDescription.getText());
+ }
+ }
+}
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Text;
* @param initialInteger a {@link java.lang.Integer} object.
* @param style a int.
*/
- public NumberFieldController(Composite parent, Text controlledText, CdmFormFactory formFactory, ICdmFormElement parentElement, Integer initialInteger, int style){
- super(parent, controlledText, formFactory, parentElement, null, null, style);
+ public NumberFieldController(Text controlledText, CdmFormFactory formFactory, ICdmFormElement parentElement, Integer initialInteger){
+ super(controlledText, formFactory, parentElement, null, null);
//WindowBuilder exception handling
if(initialInteger==null){
initialInteger = 0;
* @param style a int.
* @wbp.parser.constructor
*/
- public NumberFieldController(Composite parent, Text controlledText, CdmFormFactory formFactory,
- ICdmFormElement parentElement, Float initialFloat, int style) {
- super(parent, controlledText, formFactory, parentElement, null, null, style);
+ public NumberFieldController(Text controlledText, CdmFormFactory formFactory,
+ ICdmFormElement parentElement, Float initialFloat) {
+ super(controlledText, formFactory, parentElement, null, null);
//WindowBuilder exception handling
if(initialFloat==null){
initialFloat = 0f;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Color;
-import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
-import org.eclipse.ui.forms.widgets.TableWrapData;
import org.eclipse.wb.swt.SWTResourceManager;
import eu.etaxonomy.cdm.common.CdmUtils;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
import eu.etaxonomy.taxeditor.ui.element.ISelectable;
-import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
/**
* @author pplitzner
* @param initialText
* @param textHeight
*/
- public TextFieldController(Composite parent, Text controlledText, CdmFormFactory formFactory, ICdmFormElement parentFormElement, String initialText, Integer textHeight, int style) {
+ public TextFieldController(Text controlledText, CdmFormFactory formFactory, ICdmFormElement parentFormElement, String initialText, Integer textHeight) {
super(formFactory, parentFormElement);
setBackground(SWTResourceManager.getColor(SWT.COLOR_WHITE));
//vvvvvvvvvvvvv
setPropertyChangeListeners(formFactory.getPropertyChangeListeners());
+ formFactory.addPropertyChangeListener(this);
initialText = initialText==null?"":initialText;
-
- int scrollStyle = textHeight == null ? SWT.NULL : (SWT.V_SCROLL | SWT.MULTI);
-
- int combinedStyle = style | SWT.BORDER | scrollStyle;
-
- // SWT.PASSWORD does not work when SWT.WRAP is set.
- if (style != SWT.PASSWORD) {
- combinedStyle = combinedStyle | SWT.WRAP;
- }
+//
+// int scrollStyle = textHeight == null ? SWT.NULL : (SWT.V_SCROLL | SWT.MULTI);
+//
+// int combinedStyle = style | SWT.BORDER | scrollStyle;
+//
+// // SWT.PASSWORD does not work when SWT.WRAP is set.
+// if (style != SWT.PASSWORD) {
+// combinedStyle = combinedStyle | SWT.WRAP;
+// }
//^^^^^^^^^^^^^^
this.text = controlledText;
- TableWrapData twd_text_1 = new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP);
- twd_text_1.grabHorizontal = true;
+// TableWrapData twd_text_1 = new TableWrapData(TableWrapData.LEFT, TableWrapData.TOP);
+// twd_text_1.grabHorizontal = true;
text.setText(initialText);
- text.setLayoutData(twd_text_1);
+// text.setLayoutData(twd_text_1);
//vvvvvvvvvvvvvvvvvv
});
}
- TableWrapData layoutData = LayoutConstants.FILL();
- if (textHeight != null && textHeight > 0) {
- (layoutData).heightHint = textHeight;
- }
-
- text.setLayoutData(layoutData);
+// if (textHeight != null && textHeight > 0) {
+// TableWrapData layoutData = LayoutConstants.FILL();
+// (layoutData).heightHint = textHeight;
+// text.setLayoutData(layoutData);
+// }
text.addModifyListener(this);
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2013 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.section.campanula;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.widgets.FormToolkit;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+import org.eclipse.ui.forms.widgets.TableWrapLayout;
+
+/**
+ * @author pplitzner
+ * @date 14.08.2013
+ *
+ */
+public class ToggleableTextField extends Composite {
+ private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
+ private Text text;
+ private Button editButton;
+
+ /**
+ * Create the composite.
+ * @param parent
+ * @param style
+ */
+ public ToggleableTextField(Composite parent, int style) {
+ super(parent, style);
+ {
+ TableWrapLayout tableWrapLayout = new TableWrapLayout();
+ tableWrapLayout.numColumns = 2;
+ tableWrapLayout.verticalSpacing = 0;
+ tableWrapLayout.topMargin = 0;
+ tableWrapLayout.rightMargin = 0;
+ tableWrapLayout.leftMargin = 0;
+ tableWrapLayout.horizontalSpacing = 0;
+ tableWrapLayout.bottomMargin = 0;
+ setLayout(tableWrapLayout);
+ }
+
+ text = formToolkit.createText(this, "New Text", SWT.WRAP);
+ text.setText("");
+ TableWrapData twd_text = new TableWrapData(TableWrapData.FILL_GRAB, TableWrapData.TOP, 1, 1);
+ twd_text.grabVertical = true;
+ text.setLayoutData(twd_text);
+
+ editButton = formToolkit.createButton(this, "Edit", SWT.TOGGLE);
+
+ }
+
+ @Override
+ protected void checkSubclass() {
+ // Disable the check that prevents subclassing of SWT components
+ }
+
+ public Text getText() {
+ return text;
+ }
+ public Button getEditButton() {
+ return editButton;
+ }
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2013 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.section.campanula;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyAdapter;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Text;
+
+import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.element.AbstractCdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.CdmPropertyChangeEvent;
+import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.IEnableableFormElement;
+import eu.etaxonomy.taxeditor.ui.element.ISelectable;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+
+/**
+ * @author pplitzner
+ * @date 14.08.2013
+ *
+ */
+public class ToggleableTextFieldController extends AbstractCdmFormElement implements SelectionListener, ModifyListener, IEnableableFormElement, ISelectable {
+
+ private ToggleableTextField toggleableTextField;
+
+ private boolean state;
+ private Set<SelectionListener> selectionListener = new HashSet<SelectionListener>();
+ //TODO also connect label
+// private Label label;
+
+ /**
+ * <p>Constructor for ToggleableTextElement.</p>
+ *
+ * @param style a int.
+ * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
+ * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
+ * @param labelString a {@link java.lang.String} object.
+ * @param initialText a {@link java.lang.String} object.
+ * @param initialState a boolean.
+ */
+ protected ToggleableTextFieldController(ToggleableTextField toggleableTextField, CdmFormFactory formFactory, ICdmFormElement parentElement,
+ String initialText, boolean initialState, int style) {
+ super(formFactory, parentElement);
+ setPropertyChangeListeners(formFactory.getPropertyChangeListeners());
+ formFactory.addPropertyChangeListener(this);
+
+ this.toggleableTextField = toggleableTextField;
+
+// label = formFactory.createLabel(getLayoutComposite(), labelString, style);
+// addControl(label);
+
+ Text text = toggleableTextField.getText();
+ addControl(text);
+ text.addModifyListener(this);
+ text.setLayoutData(LayoutConstants.FILL());
+
+ // Don't accept carriage returns as input
+ text.addKeyListener( new KeyAdapter(){
+ @Override
+ public void keyPressed(KeyEvent e) {
+ if(e.character == SWT.CR) {
+ e.doit = false;
+ }
+ }
+ });
+
+ Button editButton = toggleableTextField.getEditButton();
+ addControl(editButton);
+ editButton.addSelectionListener(this);
+
+ setState(initialState);
+ }
+
+ /**
+ * <p>setText</p>
+ *
+ * @param text a {@link java.lang.String} object.
+ */
+ public void setText(String text){
+ if(text != null){
+ // store current caret position
+ Text textField = toggleableTextField.getText();
+ int caretPosition = textField.getCaretPosition();
+
+ textField.removeModifyListener(this);
+ textField.setText(text);
+ textField.addModifyListener(this);
+
+ // restore caret position
+ textField.setSelection(caretPosition);
+ }
+ }
+
+ /**
+ * <p>getText</p>
+ *
+ * @return a {@link java.lang.String} object.
+ */
+ public String getText(){
+ return toggleableTextField.getText().getText();
+ }
+
+ /**
+ * <p>Setter for the field <code>state</code>.</p>
+ *
+ * @param state a boolean.
+ */
+ public void setState(boolean state) {
+ this.state = state;
+ setEnabled(state);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void setEnabled(boolean enabled) {
+ toggleableTextField.getText().setEnabled(enabled);
+ String symbolicName = enabled ? Resources.COLOR_FONT_DEFAULT : Resources.COLOR_TEXT_DISABLED;
+ toggleableTextField.getText().setForeground(StoreUtil.getColor(symbolicName));
+ toggleableTextField.getEditButton().setSelection(enabled);
+ }
+
+ /**
+ * <p>Getter for the field <code>state</code>.</p>
+ *
+ * @return a boolean.
+ */
+ public boolean getState(){
+ return state;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
+ */
+ /** {@inheritDoc} */
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ setState(toggleableTextField.getEditButton().getSelection());
+ for(SelectionListener listener : selectionListener){
+ listener.widgetSelected(e);
+ }
+ firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
+ }
+
+ /**
+ * <p>addSelectionListener</p>
+ *
+ * @param listener a {@link org.eclipse.swt.events.SelectionListener} object.
+ */
+ public void addSelectionListener(SelectionListener listener){
+ selectionListener.add(listener);
+ }
+
+ /**
+ * <p>removeSelectionListener</p>
+ *
+ * @param listener a {@link org.eclipse.swt.events.SelectionListener} object.
+ */
+ public void removeSelectionListener(SelectionListener listener){
+ selectionListener.remove(listener);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {}
+
+ /** {@inheritDoc} */
+ @Override
+ public void modifyText(ModifyEvent e) {
+ firePropertyChangeEvent(new CdmPropertyChangeEvent(this, e));
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void setIrrelevant(boolean irrelevant) {
+ String colorId = irrelevant ? Resources.COLOR_COMPOSITE_IRRELEVANT : Resources.COLOR_COMPOSITE_BACKGROUND;
+
+ Color color = getColor(colorId);
+ toggleableTextField.getText().setBackground(color);
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public void setBackground(Color color) {
+// label.setBackground(color);
+ toggleableTextField.setBackground(color);
+ }
+
+ @Override
+ public void setSelected(boolean selected) {
+ setBackground(selected ? SELECTED : getPersistentBackground());
+ }
+}
+++ /dev/null
-// $Id$
-/**
- * Copyright (C) 2013 EDIT
- * European Distributed Institute of Taxonomy
- * http://www.e-taxonomy.eu
- *
- * The contents of this file are subject to the Mozilla Public License Version 1.1
- * See LICENSE.TXT at the top of this package for the full license terms.
- */
-package eu.etaxonomy.taxeditor.ui.section.occurrence;
-
-import org.eclipse.swt.widgets.Composite;
-
-import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
-import eu.etaxonomy.taxeditor.preference.Resources;
-import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
-import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElementComposite;
-import eu.etaxonomy.taxeditor.ui.section.campanula.GatheringEventDetailsElement;
-import eu.etaxonomy.taxeditor.ui.section.campanula.NumberFieldController;
-import eu.etaxonomy.taxeditor.ui.section.campanula.TextFieldController;
-
-/**
- * @author pplitzner
- * @date 25.07.2013
- *
- */
-public class GatheringEventDetailElementComposite extends AbstractCdmDetailElementComposite<DerivedUnitFacade> {
-
-
-
- private final NumberFieldController absoluteElevationError;
- private final NumberFieldController number_absoluteElevationMinimum;
- private final NumberFieldController number_absoluteElevationMaximum;
- private final TextFieldController collectingMethod;
- private final NumberFieldController number_distanceToGround;
- private final NumberFieldController number_distanceToWaterSurface;
- private final TextFieldController gatheringEventDescription;
- private CollectingAreasDetailSection section_collectingAreas;
-
- public GatheringEventDetailElementComposite(Composite parent, CdmFormFactory formFactory, ICdmFormElement parentFormElement, int style) {
- this(parent, null, formFactory, parentFormElement, style);
- }
- /**
- * <p>
- * Constructor for GatheringEventDetailElement.
- * </p>
- *
- * @param formFactory
- * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
- * object.
- * @param formElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- */
- public GatheringEventDetailElementComposite(Composite parent, GatheringEventDetailsElement controlledComposite, CdmFormFactory formFactory, ICdmFormElement parentFormElement, int style) {
- super(parent, formFactory, parentFormElement, style);
-
- absoluteElevationError = new NumberFieldController(getLayoutComposite(), controlledComposite.getTextElevationError(), formFactory, this, (Integer)null, 0);
- number_absoluteElevationMinimum = new NumberFieldController(getLayoutComposite(), controlledComposite.getText_ElevationMinimum(), formFactory, this, (Integer)null, 0);
- number_absoluteElevationMaximum = new NumberFieldController(getLayoutComposite(), controlledComposite.getText_ElevationMaximum(), formFactory, this, (Integer)null, 0);
- collectingMethod = new TextFieldController(getLayoutComposite(), controlledComposite.getText_CollectingMethod(), formFactory, this, null, null, 0);
- number_distanceToGround = new NumberFieldController(getLayoutComposite(), controlledComposite.getText_DistanceToGround(), formFactory, this, (Integer)null, 0);
- number_distanceToWaterSurface = new NumberFieldController(getLayoutComposite(), controlledComposite.getText_DistanceToWaterSurface(), formFactory, this, (Integer)null, 0);
- gatheringEventDescription = new TextFieldController(getLayoutComposite(), controlledComposite.getText_GatheringEventDescription(), formFactory, this, null, null, 0);
- }
-
- /** {@inheritDoc} */
- @Override
- protected void createControls(ICdmFormElement formElement, DerivedUnitFacade entity, int style) {
-
- absoluteElevationError.setText(String.valueOf(entity.getAbsoluteElevation()));
- number_absoluteElevationMinimum.setText(String.valueOf(entity.getAbsoluteElevationMinimum()));
- number_absoluteElevationMaximum.setText(String.valueOf(entity.getAbsoluteElevationMaximum()));
-
- collectingMethod.setText(entity.getCollectingMethod());
-
- number_distanceToGround.setText(String.valueOf(entity.getDistanceToGround()));
- number_distanceToWaterSurface.setText(String.valueOf(entity.getDistanceToWaterSurface()));
- gatheringEventDescription.setText(entity.getGatheringEventDescription());
-
-// section_collectingAreas = formFactory.createCollectingAreasDetailSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE);
-// section_collectingAreas.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
-// section_collectingAreas.setEntity(entity);
- }
-
- /** {@inheritDoc} */
- @Override
- public void handleEvent(Object eventSource) {
- if (eventSource == absoluteElevationError) {
- getEntity().setAbsoluteElevationError(absoluteElevationError.getInteger());
- } else if (eventSource == number_absoluteElevationMinimum) {
- try {
- getEntity().setAbsoluteElevationRange(number_absoluteElevationMinimum.getInteger(), number_absoluteElevationMaximum.getInteger());
- number_absoluteElevationMinimum.setBackground(getColor(Resources.COLOR_COMPOSITE_BACKGROUND));
- } catch (IllegalArgumentException e) {
- number_absoluteElevationMinimum.setBackground(getColor(Resources.COLOR_PARSE_ERROR));
- AbstractUtility.warn(getClass(), e.getLocalizedMessage());
- }
- } else if (eventSource == number_absoluteElevationMaximum) {
- try {
- getEntity().setAbsoluteElevationRange(number_absoluteElevationMinimum.getInteger(), number_absoluteElevationMaximum.getInteger());
- number_absoluteElevationMaximum.setBackground(getColor(Resources.COLOR_COMPOSITE_BACKGROUND));
- } catch (IllegalArgumentException e) {
- number_absoluteElevationMaximum.setBackground(getColor(Resources.COLOR_PARSE_ERROR));
- AbstractUtility.warn(getClass(), e.getLocalizedMessage());
- }
- } else if (eventSource == collectingMethod) {
- getEntity().setCollectingMethod(collectingMethod.getText());
- } else if (eventSource == number_distanceToGround) {
- getEntity().setDistanceToGround(number_distanceToGround.getInteger());
- } else if (eventSource == number_distanceToWaterSurface) {
- getEntity().setDistanceToWaterSurface(number_distanceToWaterSurface.getInteger());
- } else if (eventSource == gatheringEventDescription) {
- getEntity().setGatheringEventDescription(gatheringEventDescription.getText());
- }
- }
-}
*/
@Override
protected ICdmDetailElement<DerivedUnitFacade> createCdmDetailElement(AbstractCdmDetailSection<DerivedUnitFacade> parentElement, int style) {
- return formFactory.createGatheringEventDetailElementComposite(this);
+ return formFactory.createGatheringEventDetailsElementController(this);
}
}
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.ICdmDetailElement;
/**
* @author n.hoffmann
* @see eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection#createCdmDetailElement(eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection, int)
*/
@Override
- protected AbstractCdmDetailElement<DerivedUnitFacade> createCdmDetailElement(AbstractCdmDetailSection<DerivedUnitFacade> parentElement, int style) {
- return formFactory.createGeneralDetailElement(parentElement);
+ protected ICdmDetailElement<DerivedUnitFacade> createCdmDetailElement(AbstractCdmDetailSection<DerivedUnitFacade> parentElement, int style) {
+ return formFactory.createFieldObservationGeneralElement(parentElement);
}
}