id="eu.etaxonomy.taxeditor.editor.group.authority"
name="%editor.name.4">
</editor>
- <editor
- class="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView"
- default="false"
- icon="icons/derivate_view-16x16-32.png"
- id="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView"
- name="%editor.name.5">
- </editor>
<editor
class="eu.etaxonomy.taxeditor.editor.view.dataimport.SpecimenImportEditor"
default="false"
id="eu.etaxonomy.taxeditor.editor.view.validation.problems"
name="%view.name.6">
</view>
+ <view
+ class="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView"
+ icon="icons/derivate_view-16x16-32.png"
+ id="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView"
+ name="Derivative Editor"
+ restorable="true">
+ </view>
</extension>
<!-- VALIDATION RELATED STUFF -->
</and>
</visibleWhen>
</command>
- </menuContribution>
- <menuContribution
- allPopups="false"
- locationURI="menu:eu.etaxonomy.taxeditor.menu.showView?before=org.eclipse.ui.views.showView.occurenceView">
<separator
name="eu.etaxonomy.taxeditor.store.separator_derivative_start"
visible="true">
</reference>
</visibleWhen>
</command>
+ <separator
+ name="eu.etaxonomy.taxeditor.editor.separator1">
+ </separator>
</menuContribution>
<menuContribution
locationURI="menu:eu.etaxonomy.taxeditor.menu.showView?after=org.eclipse.ui.views.showView.supplemental">
locationURI="toolbar:eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView">
<command
commandId="eu.etaxonomy.taxeditor.editor.derivative.listenToSelectionChange"
+ icon="icons/synced.gif"
label="Link with Editor"
- style="push">
+ style="toggle">
</command>
</menuContribution>
</extension>
package eu.etaxonomy.taxeditor.editor.handler;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Set;
-import java.util.UUID;
-
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.handlers.HandlerUtil;
-import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
-import eu.etaxonomy.taxeditor.editor.EditorUtil;
-import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
-import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
public class OpenDerivateViewHandler extends AbstractHandler {
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
- Set<UUID> selectedElementUUIDs = new HashSet<UUID>();
- Object parameter = null;
- //check if parameter is set
- if(event.getParameter("eu.etaxonomy.taxeditor.specimenUuidParameter")!=null){
- parameter = event.getObjectParameterForExecution("eu.etaxonomy.taxeditor.specimenUuidParameter");
- }
- if(parameter instanceof UUID){
- selectedElementUUIDs.add((UUID) parameter);
- }
- else{
- //if not, try with current selection
- ISelection currentSelection = HandlerUtil.getCurrentSelection(event);
- if(currentSelection instanceof IStructuredSelection){
- Iterator<?> selectionIterator = ((IStructuredSelection) currentSelection).iterator();
- while(selectionIterator.hasNext()){
- Object object = selectionIterator.next();
- if(object instanceof SpecimenOrObservationBase<?>){
- selectedElementUUIDs.add(((SpecimenOrObservationBase<?>) object).getUuid());
- }
- else if(object instanceof IndividualsAssociation){
- SpecimenOrObservationBase specimen = ((IndividualsAssociation) object).getAssociatedSpecimenOrObservation();
- if(specimen!=null){
- selectedElementUUIDs.add(specimen.getUuid());
- }
- }
- }
- }
- }
- DerivateViewEditorInput input = new DerivateViewEditorInput(selectedElementUUIDs);
- try {
- EditorUtil.open(input);
- } catch (PartInitException e) {
- MessagingUtils.error(OpenDerivateViewHandler.class, "Could not open Derivative Editor", e);
- } catch (NullPointerException npe){
- MessagingUtils.messageDialog("Failed to open Editor", OpenDerivateViewHandler.class, "Could not open Derivative Editor. The derivate hierarchy is corrupted!", npe);
- }
+ AbstractUtility.showView(DerivateView.ID);
return null;
}
import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.viewers.AbstractTreeViewer;
import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TreeNode;
import org.eclipse.jface.viewers.TreeSelection;
import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
import eu.etaxonomy.taxeditor.model.IPartContentHasMedia;
import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
-import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
-import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.view.AbstractCdmViewPart;
import eu.etaxonomy.taxeditor.view.derivateSearch.DerivateContentProvider;
*
*/
public class DerivateView extends AbstractCdmViewPart implements IPartContentHasFactualData, ISaveablePart2,
- IPartContentHasDetails, IPartContentHasSupplementalData, IPartContentHasMedia,
-
- ISelectionChangedListener, IPostOperationEnabled, ICdmEntitySessionEnabled{
+ IPartContentHasDetails, IPartContentHasSupplementalData, IPartContentHasMedia {
public static final String ID = "eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView"; //$NON-NLS-1$
public static final String YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION = Messages.DerivateView_YOU_NEED_TO_SAVE;
viewer.setAutoExpandLevel(AbstractTreeViewer.ALL_LEVELS);
// Propagate selection from viewer
getSite().setSelectionProvider(viewer);
+
//listen to selection changes
- viewer.addSelectionChangedListener(this);
+ selectionService = getSite().getWorkbenchWindow().getSelectionService();
+ selectionService.addSelectionListener(this);
//create context menu
MenuManager menuManager = new MenuManager();
Menu menu = menuManager.createContextMenu(control);
control.setMenu(menu);
- //single read multi links
- generateMultiLinkSingleReads();
- labelProvider.setMultiLinkSingleReads(multiLinkSingleReads);
-
//init tree
updateRootEntities();
}
public void updateRootEntities(Collection<UUID> derivativeUuids) {
- if(derivativeUuids!=null){
- this.derivateToRootEntityMap = new HashMap<SpecimenOrObservationBase<?>, SpecimenOrObservationBase<?>>();
- this.rootElements = new HashSet<SpecimenOrObservationBase<?>>();
- for (UUID uuid : derivativeUuids) {
- SpecimenOrObservationBase<?> derivate = CdmStore.getService(IOccurrenceService.class).load(uuid, SPECIMEN_INIT_STRATEGY);
- if(derivate instanceof FieldUnit){
- derivateToRootEntityMap.put(derivate, derivate);
- }
- else {
- SpecimenOrObservationBase<?> topMostDerivate = EditorUtil.getTopMostDerivate(derivate);
- if(topMostDerivate!=null){
- derivateToRootEntityMap.put(derivate, topMostDerivate);
- }
- else{
+ if(conversation!=null){
+ if (!conversation.isBound()) {
+ conversation.bind();
+ }
+ if(derivativeUuids!=null){
+ this.derivateToRootEntityMap = new HashMap<SpecimenOrObservationBase<?>, SpecimenOrObservationBase<?>>();
+ this.rootElements = new HashSet<SpecimenOrObservationBase<?>>();
+ for (UUID uuid : derivativeUuids) {
+ SpecimenOrObservationBase<?> derivate = CdmStore.getService(IOccurrenceService.class).load(uuid, SPECIMEN_INIT_STRATEGY);
+ if(derivate instanceof FieldUnit){
derivateToRootEntityMap.put(derivate, derivate);
}
+ else {
+ SpecimenOrObservationBase<?> topMostDerivate = EditorUtil.getTopMostDerivate(derivate);
+ if(topMostDerivate!=null){
+ derivateToRootEntityMap.put(derivate, topMostDerivate);
+ }
+ else{
+ derivateToRootEntityMap.put(derivate, derivate);
+ }
+ }
+ }
+ for (SpecimenOrObservationBase<?> specimen : derivateToRootEntityMap.values()) {
+ rootElements.add(specimen);
}
}
- for (SpecimenOrObservationBase<?> specimen : derivateToRootEntityMap.values()) {
- rootElements.add(specimen);
- }
+ viewer.setInput(rootElements);
+ refreshTree();
}
- viewer.setInput(rootElements);
- refreshTree();
}
@Override
conversation.commit(true);
if(CdmStore.getCurrentSessionManager().isRemoting()) {
- CdmStore.getService(IOccurrenceService.class).merge(new ArrayList(getRootEntities()), true);
+ CdmStore.getService(IOccurrenceService.class).merge(new ArrayList<SpecimenOrObservationBase>(rootElements), true);
}
monitor.worked(1);
return this.multiLinkSingleReads;
}
- @Override
- public void selectionChanged(SelectionChangedEvent event) {
- this.selection = event.getSelection();
- }
-
public ISelection getSelection() {
return selection;
}