<menuContribution
locationURI="popup:eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView">
<menu
- label="New">
+ label="New Derivate">
<dynamic
- class="eu.etaxonomy.taxeditor.bulkeditor.command.DynamicNewObjectMenu"
- id="eu.etaxonomy.taxeditor.bulkeditor.dynamicNewMenu">
+ class="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu"
+ id="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu">
</dynamic>
<visibleWhen
checkEnabled="true">
- <or>
- <reference
- definitionId="isFieldUnit">
- </reference>
- <reference
- definitionId="isDerivedUnit">
- </reference>
- </or>
+ <reference
+ definitionId="isSpecimenOrObservation">
+ </reference>
</visibleWhen>
</menu>
- <separator
- name="eu.etaxonomy.taxeditor.editor.separator1"
- visible="true">
- </separator>
- <dynamic
- class="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu"
- id="eu.etaxonomy.taxeditor.editor.view.derivate.CreateDerivateContextMenu">
- </dynamic>
</menuContribution>
</with>
</definition>
<definition
- id="isFieldUnit">
- <with
- variable="selection">
- <test
- property="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester.isFieldUnit">
- </test>
- </with>
- </definition>
- <definition
- id="isDerivedUnit">
+ id="isSpecimenOrObservation">
<with
variable="selection">
<test
- property="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester.isSpecimen">
+ property="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester.isSpecimenOrObservation">
</test>
</with>
</definition>
class="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester"
id="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester"
namespace="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateMenuPropertyTester"
- properties="isFieldUnit,isSpecimen"
+ properties="isSpecimenOrObservation"
type="org.eclipse.jface.viewers.TreeSelection">
</propertyTester>
</extension>
import org.eclipse.jface.action.ContributionItem;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.actions.CompoundContributionItem;
+import org.eclipse.ui.handlers.IHandlerService;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.occurrence.DerivationEvent;
+import eu.etaxonomy.cdm.model.occurrence.DerivationEventType;
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
public class CreateDerivateContextMenu extends CompoundContributionItem {
+ private final IHandlerService handlerService = (IHandlerService) EditorUtil.getService(IHandlerService.class);
+ private final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+ private final ISelection selection = window.getActivePage().getSelection();
+
/* (non-Javadoc)
* @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
*/
new ContributionItem() {
@Override
public void fill(Menu menu, int index) {
- IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
- ISelection selection = window.getActivePage().getSelection();
- MenuItem menuItem = new MenuItem(menu, SWT.None);
- menuItem.setText("menuItem");
- //selection is intance of TreeSelection
- if(selection instanceof FieldUnit){
- menuItem.setText("fieldUnit");
- }
- else if(selection instanceof DerivedUnit){
- menuItem.setText("derivedUnit");
+ if(selection instanceof TreeSelection){
+ final Object selectedElement = ((TreeSelection) selection).getFirstElement();
+ //context menu for FieldUnit
+ if(selectedElement instanceof FieldUnit){
+ MenuItem createSpecimen = new MenuItem(menu, SWT.None);
+ createSpecimen.setText("Specimen");
+ createSpecimen.addSelectionListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ FieldUnit fieldUnit = HibernateProxyHelper.deproxy(selectedElement, FieldUnit.class);
+ DerivedUnit specimen = DerivedUnit.NewInstance(SpecimenOrObservationType.PreservedSpecimen);
+ fieldUnit.addDerivationEvent(DerivationEvent.NewSimpleInstance(fieldUnit, specimen, DerivationEventType.GATHERING_IN_SITU()));
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ // TODO Auto-generated method stub
+
+ }
+ });
+ MenuItem createLivingPlantPhoto = new MenuItem(menu, SWT.None);
+ createLivingPlantPhoto.setText("Living Plant Photo");
+ }
+ //context menu for Specimen
+ else if(selectedElement instanceof DerivedUnit && ((DerivedUnit)selectedElement).getRecordBasis()==SpecimenOrObservationType.PreservedSpecimen){
+ MenuItem createTissueSample = new MenuItem(menu, SWT.None);
+ createTissueSample.setText("Tissue Sample");
+ MenuItem createDNASample = new MenuItem(menu, SWT.None);
+ createDNASample.setText("DNA Sample");
+ MenuItem createSpecimenScan = new MenuItem(menu, SWT.None);
+ createSpecimenScan.setText("Specimen Scan");
+ MenuItem createArtwork = new MenuItem(menu, SWT.None);
+ createArtwork.setText("Artwork");
+ MenuItem createLivingPlantPhoto = new MenuItem(menu, SWT.None);
+ createLivingPlantPhoto.setText("Living Plant Photo");
+ }
+ else{
+ MenuItem menuItem = new MenuItem(menu, SWT.None);
+ menuItem.setText("No child derivates");
+ menuItem.setEnabled(false);
+ }
}
}
}
*/
package eu.etaxonomy.taxeditor.editor.view.derivate;
-import java.util.Arrays;
-
import org.eclipse.core.expressions.PropertyTester;
import org.eclipse.jface.viewers.IStructuredSelection;
-import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
-import eu.etaxonomy.cdm.model.occurrence.FieldUnit;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
/**
* Property tester used by the DerivateView tree menu.
*/
public class DerivateMenuPropertyTester extends PropertyTester {
- private static final String IS_FIELD_UNIT = "isFieldUnit";
- private static final String IS_SPECIMEN = "isSpecimen";
+ private static final String IS_SPECIMEN_OR_OBSERVATION = "isSpecimenOrObservation";
/* (non-Javadoc)
* @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
/** {@inheritDoc} */
@Override
public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
- System.out.println(receiver.toString() + receiver.getClass().toString());
- System.out.println(property);
- System.out.println(Arrays.asList(args));
- System.out.println(expectedValue);
+ //TODO: these simple instanceof-checks can be unified in one class because there are several
+ // PropertyTesters that do the same, that is just checking which class the selection is of
- Object[] selectedElements = ((IStructuredSelection) receiver).toArray();
+ Object[] selectedElements = ((IStructuredSelection) receiver).toArray();
if(selectedElements.length == 0){
// nothing selected so all tests should fail
return false;
}
- if(IS_FIELD_UNIT.equals(property)){
- return isFieldUnit(selectedElements);
- }
- else if(IS_SPECIMEN.equals(property)){
- return isSpecimen(selectedElements);
+ if(IS_SPECIMEN_OR_OBSERVATION.equals(property)){
+ return isSpecimenOrObservation(selectedElements);
}
else{
return false;
}
}
- private boolean isFieldUnit(Object[] selectedElements) {
- for (Object object : selectedElements){
- if(!(object instanceof FieldUnit)){
- return false;
- }
- }
- return true;
- }
-
- private boolean isSpecimen(Object[] selectedElements) {
+ private boolean isSpecimenOrObservation(Object[] selectedElements) {
for (Object object : selectedElements){
- if(!(object instanceof DerivedUnit)){
+ if(!(object instanceof SpecimenOrObservationBase)){
return false;
}
}
return true;
}
+
}