import java.util.Collection;
import java.util.Set;
-import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.DoubleClickEvent;
import org.eclipse.jface.viewers.IDoubleClickListener;
+import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.dnd.Clipboard;
+import org.eclipse.swt.dnd.TextTransfer;
+import org.eclipse.swt.dnd.Transfer;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Menu;
-import org.eclipse.ui.handlers.HandlerUtil;
+import org.eclipse.swt.widgets.MenuItem;
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
/** {@inheritDoc} */
@Override
protected void createControls(ICdmFormElement formElement, DerivedUnitFacade entity, int style) {
-
- //TODO add context menu for deleting associations
-
Collection<TaxonBase<?>> associatedTaxa = CdmStore.getService(IOccurrenceService.class).listIndividualsAssociationTaxa(entity.innerDerivedUnit(), null, null, null, null);
Collection<SpecimenTypeDesignation> typeDesignations = CdmStore.getService(IOccurrenceService.class).listTypeDesignations(entity.innerDerivedUnit(), null, null, null, null);
Collection<DeterminationEvent> determinationEvents = CdmStore.getService(IOccurrenceService.class).listDeterminationEvents(entity.innerDerivedUnit(), null, null, null, null);
associations.addAll(associatedTaxa);
associations.addAll(typeDesignations);
associations.addAll(determinationEvents);
-
+
if(associatedTaxa.isEmpty() && typeDesignations.isEmpty() && determinationEvents.isEmpty()){
Label label = formFactory.createLabel(getLayoutComposite(), "No associations");
label.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
return;
}
if(!associations.isEmpty()){
- ListViewer viewer = new ListViewer(getLayoutComposite(), SWT.SINGLE);
+ final ListViewer viewer = new ListViewer(getLayoutComposite(), SWT.SINGLE);
viewer.getList().setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
viewer.setContentProvider(new ArrayContentProvider());
viewer.setLabelProvider(new LabelProvider(){
});
viewer.setInput(associations);
viewer.addDoubleClickListener(this);
+
+ //TODO add context menu for deleting associations
+ //context menu
+ Menu menu = new Menu(viewer.getControl());
+ MenuItem copyItem = new MenuItem(menu, SWT.PUSH);
+ copyItem.setText("Copy");
+ copyItem.addSelectionListener(new SelectionListener() {
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ ISelection selection = viewer.getSelection();
+ if(!selection.isEmpty() && selection instanceof IStructuredSelection){
+ Object firstElement = ((IStructuredSelection) selection).getFirstElement();
+ Object[] data = new Object[]{firstElement.toString()};
+ Clipboard clipboard = new Clipboard(viewer.getControl().getDisplay());
+ clipboard.setContents(data, new Transfer[]{TextTransfer.getInstance()});
+ }
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+ });
+ viewer.getControl().setMenu(menu);
}
}