From: Patrick Plitzner Date: Mon, 29 Jun 2015 10:01:12 +0000 (+0200) Subject: Add MediaViewSwitch to media collection elements X-Git-Tag: 3.7.0~1^2~37 X-Git-Url: https://dev.e-taxonomy.eu/gitweb/taxeditor.git/commitdiff_plain/91eae82f431c5bf8c28324d8f3331aae6c84ab96 Add MediaViewSwitch to media collection elements Refactored code to use a static method that creates the IAction object. This can be added by the GUI element itself. --- diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionElement.java index 1060f986f..328b08593 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractEntityCollectionElement.java @@ -52,6 +52,9 @@ public abstract class AbstractEntityCollectionElement extends private final Composite container; + /** + * Composite "around" the actual content. Is used for control action like e.g. remove button + */ private final Composite box; private Button btnRemove; @@ -59,26 +62,6 @@ public abstract class AbstractEntityCollectionElement extends private Color backgroundColor; - /** - *

- * Constructor for AbstractEntityCollectionElement. - *

- * - * @param style - * a int. - * @param formFactory - * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} - * object. - * @param section - * a {@link eu.etaxonomy.taxeditor.ui.element.AbstractFormSection} - * object. - * @param entity - * a ENTITY object. - * @param removeListener - * a {@link org.eclipse.swt.events.SelectionListener} object. - * @param - * a ENTITY object. - */ public AbstractEntityCollectionElement(CdmFormFactory formFactory, AbstractFormSection section, ENTITY entity, SelectionListener removeListener, Color backgroundColor, int style) { @@ -97,7 +80,7 @@ public abstract class AbstractEntityCollectionElement extends box.setBackgroundMode(SWT.INHERIT_DEFAULT); addControl(box); - TableWrapLayout boxLayout = LayoutConstants.LAYOUT(3, false); + TableWrapLayout boxLayout = LayoutConstants.LAYOUT(4, false); boxLayout.topMargin = 4; boxLayout.bottomMargin = 4; box.setLayout(boxLayout); @@ -163,23 +146,8 @@ public abstract class AbstractEntityCollectionElement extends // default implementation is empty } - /** - *

- * Setter for the field entity. - *

- * - * @param entity - * a ENTITY object. - */ public abstract void setEntity(ENTITY entity); - /** - *

- * Getter for the field entity. - *

- * - * @return a ENTITY object. - */ @Override public ENTITY getEntity() { return entity; @@ -196,17 +164,6 @@ public abstract class AbstractEntityCollectionElement extends return null; } - /** - *

- * createControls - *

- * - * @param element - * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} - * object. - * @param style - * a int. - */ public abstract void createControls(ICdmFormElement element, int style); /** @@ -223,13 +180,6 @@ public abstract class AbstractEntityCollectionElement extends setBackground(selected ? SELECTED : getPersistentBackground()); } - /* - * (non-Javadoc) - * - * @see - * eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org - * .eclipse.jface.util.PropertyChangeEvent) - */ /** {@inheritDoc} */ @Override public void propertyChange(PropertyChangeEvent event) { @@ -242,14 +192,6 @@ public abstract class AbstractEntityCollectionElement extends } } - /** - *

- * handleEvent - *

- * - * @param eventSource - * a {@link java.lang.Object} object. - */ public abstract void handleEvent(Object eventSource); /** {@inheritDoc} */ @@ -282,25 +224,14 @@ public abstract class AbstractEntityCollectionElement extends return container; } - /** - *

- * Getter for the field backgroundColor. - *

- * - * @return the backgroundColor - */ public Color getBackgroundColor() { return backgroundColor; } - /** - *

- * getConversationHolder - *

- * - * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} - * object. - */ + public Composite getBox() { + return box; + } + @Override public ConversationHolder getConversationHolder() { if (getParentElement() instanceof IConversationEnabled) { diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementMediaSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementMediaSection.java index 60a2bd209..d39f91432 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementMediaSection.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/DescriptionElementMediaSection.java @@ -12,12 +12,6 @@ package eu.etaxonomy.taxeditor.ui.section.description; import java.util.Collection; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.action.IAction; -import org.eclipse.jface.action.ToolBarManager; -import org.eclipse.swt.SWT; -import org.eclipse.swt.widgets.Control; - import eu.etaxonomy.cdm.api.conversation.ConversationHolder; import eu.etaxonomy.cdm.model.description.DescriptionElementBase; import eu.etaxonomy.cdm.model.description.Feature; @@ -25,7 +19,6 @@ import eu.etaxonomy.cdm.model.media.Media; import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory; import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement; import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection; -import eu.etaxonomy.taxeditor.ui.section.media.ITogglableMediaElement; /** *

DescriptionElementMediaSection class.

@@ -87,27 +80,5 @@ public class DescriptionElementMediaSection extends getEntity().removeMedia(element); } - @Override - protected Control createToolbar() { - ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT); - - final String label = "Change View Type"; - - Action addAction = new Action(label, IAction.AS_PUSH_BUTTON) { - @Override - public void run() { - if(isExpanded()){ - if(getEntityCollectionElement() instanceof ITogglableMediaElement){ - ((ITogglableMediaElement) getEntityCollectionElement()).toggleAdvancedMediaView(); - } - } - } - }; - addAction.setToolTipText(label); - - toolBarManager.add(addAction); - - return toolBarManager.createControl(this); - } } diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/MediaDetailsSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/MediaDetailsSection.java index 5bb0e1b4a..502ceaae5 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/MediaDetailsSection.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/description/MediaDetailsSection.java @@ -19,7 +19,6 @@ 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.media.AbstractTogglableMediaDetailsSection; import eu.etaxonomy.taxeditor.ui.section.media.MediaMetaElement; /** @@ -29,7 +28,9 @@ import eu.etaxonomy.taxeditor.ui.section.media.MediaMetaElement; * @created Jun 15, 2010 * @version 1.0 */ -public class MediaDetailsSection extends AbstractTogglableMediaDetailsSection { +public class MediaDetailsSection extends AbstractCdmDetailSection { + + private MediaMetaElement mediaMetaElement; public MediaDetailsSection(CdmFormFactory formFactory, ConversationHolder conversation, ICdmFormElement parentElement, @@ -39,10 +40,10 @@ public class MediaDetailsSection extends AbstractTogglableMediaDetailsSection extends AbstractCdmDetailSection { - - private ITogglableMediaElement togglableMediaElement; - - public AbstractTogglableMediaDetailsSection(CdmFormFactory formFactory, ConversationHolder conversation, - ICdmFormElement parentElement, - ISelectionProvider selectionProvider, int style) { - super(formFactory, conversation, parentElement, selectionProvider, style); - } - - @Override - protected Control createToolbar() { - ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT); - - final String label = "Change View Type"; - - Action addAction = new Action(label, IAction.AS_PUSH_BUTTON) { - @Override - public void run() { - if(togglableMediaElement!=null){ - togglableMediaElement.toggleAdvancedMediaView(); - } - } - }; - addAction.setToolTipText(label); - - toolBarManager.add(addAction); - - return toolBarManager.createControl(this); - } - - public void setTogglableMediaElement(ITogglableMediaElement togglableMediaElement) { - this.togglableMediaElement = togglableMediaElement; - } - - public ITogglableMediaElement getTogglableMediaElement() { - return togglableMediaElement; - } - -} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaMetaElement.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaMetaElement.java index 67dd752cc..aa51d3605 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaMetaElement.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaMetaElement.java @@ -3,7 +3,11 @@ */ package eu.etaxonomy.taxeditor.ui.section.media; +import org.eclipse.jface.action.IAction; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.widgets.Button; import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper; import eu.etaxonomy.cdm.model.agent.AgentBase; @@ -41,7 +45,16 @@ public class MediaMetaElement extends AbstractEntityCollectionElement imp /** {@inheritDoc} */ @Override public void createControls(ICdmFormElement element, int style) { - + final IAction switchAction = MediaViewSwitch.createSwitch(MediaMetaElement.this); + Button btnToggleAdvancedMediaView = new Button(getBox(), style); + btnToggleAdvancedMediaView.setText(switchAction.getText()); + btnToggleAdvancedMediaView.setToolTipText(switchAction.getText()); + btnToggleAdvancedMediaView.addSelectionListener(new SelectionAdapter() { + @Override + public void widgetSelected(SelectionEvent e) { + switchAction.run(); + } + }); text_title = formFactory.createLanguageStringWithLabelElement(element, "Title", null, style); selection_artist = formFactory.createSelectionElement(AgentBase.class, getConversationHolder(), element, "Artist", null, EntitySelectionElement.ALL, style); text_description = formFactory.createLanguageStringWithLabelElement(element, "Description", null, 100, true, style); diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaViewSwitch.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaViewSwitch.java new file mode 100644 index 000000000..0506ebfa8 --- /dev/null +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/media/MediaViewSwitch.java @@ -0,0 +1,43 @@ +// $Id$ +/** +* Copyright (C) 2015 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.media; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.IAction; + +/** + * Adds a switch to a section with an {@link ITogglableMediaElement} + * to allow switching between simple and advanced media view + * @author pplitzner + * @date Jun 29, 2015 + * + */ +public class MediaViewSwitch { + + /** + * Creates an {@link IAction} for the given {@link ITogglableMediaElement} + * that switches between the two states of the element. + */ + public static IAction createSwitch(final ITogglableMediaElement togglableMediaElement) { + final String label = "Change View Type"; + + Action switchAction = new Action(label, IAction.AS_PUSH_BUTTON) { + @Override + public void run() { + if(togglableMediaElement!=null){ + togglableMediaElement.toggleAdvancedMediaView(); + } + } + }; + switchAction.setToolTipText(label); + + return switchAction; + } +} diff --git a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailSection.java b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailSection.java index fc9eb82dc..0a26d31e4 100644 --- a/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailSection.java +++ b/eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/occurrence/media/MediaSpecimenGeneralDetailSection.java @@ -9,7 +9,10 @@ */ package eu.etaxonomy.taxeditor.ui.section.occurrence.media; +import org.eclipse.jface.action.ToolBarManager; import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Control; import eu.etaxonomy.cdm.api.conversation.ConversationHolder; import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen; @@ -17,14 +20,17 @@ 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.media.AbstractTogglableMediaDetailsSection; +import eu.etaxonomy.taxeditor.ui.section.media.ITogglableMediaElement; +import eu.etaxonomy.taxeditor.ui.section.media.MediaViewSwitch; /** * @author pplitzner * @date 12.12.2013 * */ -public class MediaSpecimenGeneralDetailSection extends AbstractTogglableMediaDetailsSection { +public class MediaSpecimenGeneralDetailSection extends AbstractCdmDetailSection { + + private ITogglableMediaElement togglableMediaElement; public MediaSpecimenGeneralDetailSection(CdmFormFactory formFactory, ConversationHolder conversation, ICdmFormElement parentElement, @@ -45,8 +51,16 @@ public class MediaSpecimenGeneralDetailSection extends AbstractTogglableMediaDet @Override protected AbstractCdmDetailElement createCdmDetailElement(AbstractCdmDetailSection parentElement, int style) { MediaSpecimenGeneralDetailElement mediaSpecimenGeneralDetailElement = formFactory.createMediaSpecimenGeneralDetailElement(parentElement); - setTogglableMediaElement(mediaSpecimenGeneralDetailElement); + togglableMediaElement = mediaSpecimenGeneralDetailElement; return mediaSpecimenGeneralDetailElement; } + @Override + protected Control createToolbar() { + ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT); + toolBarManager.add(MediaViewSwitch.createSwitch(togglableMediaElement)); + return toolBarManager.createControl(this); + } + + }