Project

General

Profile

« Previous | Next » 

Revision 2d8daa57

Added by Patrick Plitzner almost 7 years ago

ref #6566 Migrate "Open in" context menu for specimen editor

View differences:

eu.etaxonomy.taxeditor.bulkeditor/META-INF/MANIFEST.MF
21 21
 eu.etaxonomy.taxeditor.store,
22 22
 eu.etaxonomy.taxeditor.cdmlib,
23 23
 org.eclipse.e4.ui.model.workbench;bundle-version="1.2.0.v20160229-1459",
24
 org.eclipse.e4.ui.workbench
24
 org.eclipse.e4.ui.workbench,
25
 org.eclipse.e4.core.di.annotations;bundle-version="1.5.0"
25 26
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
26 27
Import-Package: eu.etaxonomy.taxeditor.editor,
27 28
 org.eclipse.core.runtime,
eu.etaxonomy.taxeditor.bulkeditor/src/main/java/eu/etaxonomy/taxeditor/bulkeditor/handler/defaultHandler/OpenBulkEditorForIdentifiableEntityE4.java
2 2

  
3 3
import java.util.UUID;
4 4

  
5
import org.eclipse.e4.core.di.annotations.Execute;
6
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
5 7
import org.eclipse.ui.PartInitException;
6 8

  
7 9
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
8 10
import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorUtil;
9
import eu.etaxonomy.taxeditor.handler.defaultHandler.DefaultOpenHandlerBaseE4;
10 11
import eu.etaxonomy.taxeditor.model.MessagingUtils;
11 12
import eu.etaxonomy.taxeditor.store.CdmStore;
12 13

  
13
public class OpenBulkEditorForIdentifiableEntityE4 extends DefaultOpenHandlerBaseE4<IdentifiableEntity> {
14
public class OpenBulkEditorForIdentifiableEntityE4 {
14 15

  
15
	@Override
16
	protected IdentifiableEntity getEntity(UUID uuid) {
17
		return CdmStore.getCommonService().find(IdentifiableEntity.class, uuid);
18
	}
19

  
20
	@Override
21
	protected void open(IdentifiableEntity entity) {
16
	@Execute
17
	public void execute(MHandledMenuItem menuItem) {
18
	    String commandId = menuItem.getCommand().getElementId();
19
        UUID uuid = (UUID) menuItem.getTransientData().get(commandId+".uuid");
20
	    IdentifiableEntity entity = CdmStore.getCommonService().find(IdentifiableEntity.class, uuid);
22 21
		try {
23 22
			BulkEditorUtil.openEditor(entity);
24 23
		} catch (PartInitException e) {
......
26 25
		}
27 26
	}
28 27

  
29

  
30 28
}
eu.etaxonomy.taxeditor.editor/fragment.e4xmi
3 3
  <imports xsi:type="commands:Command" xmi:id="_WPjpoDSnEeek0dKsFNy--Q" elementId="eu.etaxonomy.taxeditor.command.openPart"/>
4 4
  <imports xsi:type="commands:Command" xmi:id="_Qz6EMD62EeekvPZafWEv7w" elementId="eu.etaxonomy.taxeditor.bulkeditor.openBulkEditorForIdentifiableEntity"/>
5 5
  <fragments xsi:type="fragment:StringModelFragment" xmi:id="_gSpRsDQDEeeTNOFVGI4q2w" featurename="descriptors" parentElementId="xpath:/">
6
    <elements xsi:type="basic:PartDescriptor" xmi:id="_gSpRsTQDEeeTNOFVGI4q2w" elementId="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView" label="%command.label.DERIVATIVE_EDITOR" iconURI="platform:/plugin/eu.etaxonomy.taxeditor.editor/icons/derivate_view-16x16-32.png" tooltip="" allowMultiple="true" category="Sample Category" closeable="true" dirtyable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView">
6
    <elements xsi:type="basic:PartDescriptor" xmi:id="_gSpRsTQDEeeTNOFVGI4q2w" elementId="eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView" label="%command.label.DERIVATIVE_EDITOR" iconURI="platform:/plugin/eu.etaxonomy.taxeditor.editor/icons/derivate_view-16x16-32.png" tooltip="%command.label.DERIVATIVE_EDITOR" allowMultiple="true" category="Sample Category" closeable="true" dirtyable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView">
7 7
      <tags>View</tags>
8 8
      <tags>categoryTag:Sample Category</tags>
9 9
      <handlers xmi:id="_E5l4wDVqEee_b7RlBzTDRw" elementId="eu.etaxonomy.taxeditor.editor.view.derivate.handler.CreateFieldUnitHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.view.derivate.handler.CreateFieldUnitHandler" command="_BjF3ADVqEee_b7RlBzTDRw"/>
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java
84 84
    private static final String SPECIMEN_EDITOR = Messages.DerivateView_SPECIMEN_EDITOR;
85 85

  
86 86
    public static final String ID = "eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView"; //$NON-NLS-1$
87
    public static final String INPUT_ID = ID+".editorInput"; //$NON-NLS-1$
87 88

  
88 89
    public static final String YOU_NEED_TO_SAVE_BEFORE_PERFORMING_THIS_ACTION = Messages.DerivateView_YOU_NEED_TO_SAVE;
89 90
    public static final String VIEW_HAS_UNSAVED_CHANGES = Messages.DerivateView_UNSAVED_CHANGES;
......
155 156
    public DerivateView() {
156 157
    }
157 158

  
158

  
159 159
    /**
160 160
     * {@inheritDoc}
161 161
     */
162
    private void init(){
162
    public void init(DerivateViewEditorInput editorInput){
163 163
        this.derivateToRootEntityMap = new HashMap<SpecimenOrObservationBase<?>, SpecimenOrObservationBase<?>>();
164 164
        this.rootElements = new HashSet<SpecimenOrObservationBase<?>>();
165 165

  
166
        //init tree
167
        Collection<UUID> derivativeUuids = editorInput.getDerivativeUuids();
168
        checkWarnThreshold(derivativeUuids);
169
        updateRootEntities(derivativeUuids);
170
        //set taxon filter
171
        derivateSearchCompositeController.setTaxonFilter(editorInput.getTaxonUuid());
172
        //reset status bar
173
        //TODO e4
174
//        getEditorSite().getActionBars().getStatusLineManager().setMessage(""); //$NON-NLS-1$
175
    }
176

  
177
    @PostConstruct
178
    public void createPartControl(Composite parent, EMenuService menuService) {
166 179
        if (CdmStore.isActive() && conversation == null) {
167 180
            conversation = CdmStore.createConversation();
168 181
        }
......
171 184
        }
172 185
        //listen to context changes
173 186
        CdmStore.getContextManager().addContextListener(this);
174
    }
175

  
176
    @PostConstruct
177
    public void createPartControl(Composite parent, EMenuService menuService) {
178
        init();
179 187

  
180 188
        parent.setLayout(new GridLayout());
181 189

  
......
211 219

  
212 220
        //create context menu
213 221
        menuService.registerContextMenu(viewer.getControl(), "eu.etaxonomy.taxeditor.editor.popupmenu.specimeneditor");
214
//        MenuManager menuManager = new MenuManager();
215
//        menuManager.setRemoveAllWhenShown(true);
216
//        getSite().registerContextMenu(menuManager, viewer);
217
//        Control control = viewer.getControl();
218
//        Menu menu = menuManager.createContextMenu(control);
219
//        control.setMenu(menu);
220

  
221
        //init tree
222
        //TODO e4
223
//        Collection<UUID> derivativeUuids = ((DerivateViewEditorInput)getEditorInput()).getDerivativeUuids();
224
//        checkWarnThreshold(derivativeUuids);
225
//        updateRootEntities(derivativeUuids);
226
//        set taxon filter
227
		//TODO e4
228
//        derivateSearchCompositeController.setTaxonFilter(((DerivateViewEditorInput) getEditorInput()).getTaxonUuid());
229
        //reset status bar
230
        //TODO e4
231
//        getEditorSite().getActionBars().getStatusLineManager().setMessage(""); //$NON-NLS-1$
232 222

  
233 223
        //add drag'n'drop support
234 224
        Transfer[] transfers = new Transfer[] {LocalSelectionTransfer.getTransfer(),};
......
342 332
        refreshTree();
343 333
    }
344 334

  
345
//    @Override
346
//    public String getTitleToolTip() {
347
    //TODO e4
348
//        return Messages.DerivateView_DERIVATIVE_EDITOR;
349
//    }
350

  
351 335
    /**
352 336
     * @param isDirty the isDirty to set
353 337
     */
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/ListenToSelectionChangeHandler.java
1
package eu.etaxonomy.taxeditor.editor.view.derivate.handler;
2

  
3
import org.eclipse.core.commands.AbstractHandler;
4
import org.eclipse.core.commands.ExecutionEvent;
5
import org.eclipse.core.commands.ExecutionException;
6
import org.eclipse.ui.IWorkbenchPart;
7
import org.eclipse.ui.handlers.HandlerUtil;
8

  
9
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
10

  
11
public class ListenToSelectionChangeHandler extends AbstractHandler {
12

  
13
    @Override
14
    public Object execute(ExecutionEvent event) throws ExecutionException {
15
        IWorkbenchPart activePart = HandlerUtil.getActivePart(event);
16
        if(activePart instanceof DerivateView){
17
            DerivateView derivativeEditor = (DerivateView)activePart;
18
            derivativeEditor.toggleListenToSelectionChange();
19
        }
20
        return null;
21
    }
22

  
23
}
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/OpenDerivativeEditorForDescriptionElement.java
3 3
import java.util.Collections;
4 4
import java.util.UUID;
5 5

  
6
import org.eclipse.core.commands.ExecutionEvent;
7
import org.eclipse.ui.PartInitException;
8

  
9 6
import eu.etaxonomy.cdm.api.service.IDescriptionService;
10 7
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
11 8
import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
12 9
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
13
import eu.etaxonomy.taxeditor.editor.EditorUtil;
14
import eu.etaxonomy.taxeditor.editor.handler.OpenDerivateViewHandler;
10
import eu.etaxonomy.taxeditor.editor.AppModelId;
15 11
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
12
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
16 13
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
17
import eu.etaxonomy.taxeditor.handler.defaultHandler.DefaultOpenHandlerBase;
14
import eu.etaxonomy.taxeditor.handler.defaultHandler.DefaultOpenHandlerBaseE4;
18 15
import eu.etaxonomy.taxeditor.model.MessagingUtils;
19 16
import eu.etaxonomy.taxeditor.store.CdmStore;
20 17

  
21
public class OpenDerivativeEditorForDescriptionElement extends DefaultOpenHandlerBase<IndividualsAssociation> {
18
public class OpenDerivativeEditorForDescriptionElement extends DefaultOpenHandlerBaseE4<IndividualsAssociation, DerivateView> {
22 19

  
23 20
    @Override
24 21
    protected IndividualsAssociation getEntity(UUID uuid) {
......
30 27
    }
31 28

  
32 29
    @Override
33
    protected void open(ExecutionEvent event, IndividualsAssociation entity) {
34
    	if(entity==null || entity.getAssociatedSpecimenOrObservation()==null){
35
    		MessagingUtils.messageDialog(Messages.OpenDerivativeEditorForDescriptionElement_NO_SPECIMENS, this, Messages.OpenDerivativeEditorForDescriptionElement_NO_SPECIMENS_MESSAGE);
36
    		return;
37
    	}
30
    protected void initPart(IndividualsAssociation entity, DerivateView part) {
31
        if(entity==null || entity.getAssociatedSpecimenOrObservation()==null){
32
            MessagingUtils.messageDialog(Messages.OpenDerivativeEditorForDescriptionElement_NO_SPECIMENS, this, Messages.OpenDerivativeEditorForDescriptionElement_NO_SPECIMENS_MESSAGE);
33
            return;
34
        }
38 35
        SpecimenOrObservationBase associatedSpecimenOrObservation = entity.getAssociatedSpecimenOrObservation();
39 36
        if(associatedSpecimenOrObservation!=null){
40 37
            UUID specimenUuid = associatedSpecimenOrObservation.getUuid();
41
            try {
42
                EditorUtil.open(new DerivateViewEditorInput(Collections.singletonList(specimenUuid)));
43
            } catch (PartInitException e) {
44
                MessagingUtils.error(OpenDerivateViewHandler.class, OpenDerivativeEditorForTaxonNode.OPEN_DERIVATIVE_EDITOR_FOR_TAXON_NODE_COULD_NOT_OPEN, e);
45
            }
38
            part.init(new DerivateViewEditorInput(Collections.singletonList(specimenUuid)));
46 39
        }
40
    }
47 41

  
42
    @Override
43
    protected String getPartId() {
44
        return AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_DERIVATE_DERIVATEVIEW;
48 45
    }
49 46

  
50 47
}
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/OpenDerivativeEditorForSpecimenOrOBservationBase.java
2 2

  
3 3
import java.util.UUID;
4 4

  
5
import org.eclipse.core.commands.ExecutionEvent;
6
import org.eclipse.ui.PartInitException;
7

  
8 5
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
9 6
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
10
import eu.etaxonomy.taxeditor.editor.EditorUtil;
11
import eu.etaxonomy.taxeditor.editor.handler.OpenDerivateViewHandler;
7
import eu.etaxonomy.taxeditor.editor.AppModelId;
12 8
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
9
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
13 10
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
14
import eu.etaxonomy.taxeditor.handler.defaultHandler.DefaultOpenHandlerBase;
15
import eu.etaxonomy.taxeditor.model.MessagingUtils;
11
import eu.etaxonomy.taxeditor.handler.defaultHandler.DefaultOpenHandlerBaseE4;
16 12
import eu.etaxonomy.taxeditor.store.CdmStore;
17 13

  
18
public class OpenDerivativeEditorForSpecimenOrOBservationBase extends DefaultOpenHandlerBase<SpecimenOrObservationBase<?>>{
14
public class OpenDerivativeEditorForSpecimenOrOBservationBase extends DefaultOpenHandlerBaseE4<SpecimenOrObservationBase<?>, DerivateView>{
19 15

  
20 16
    protected static final String OPEN_DERIVATIVE_EDITOR_FOR_TAXON_NODE_COULD_NOT_OPEN = Messages.OpenDerivativeEditorForTaxonNode_COULD_NOT_OPEN;
21 17

  
......
28 24
    }
29 25

  
30 26
    @Override
31
    protected void open(ExecutionEvent event, SpecimenOrObservationBase<?> entity) {
32
        try {
33
            EditorUtil.open(new DerivateViewEditorInput(entity.getUuid()));
34
        } catch (PartInitException e) {
35
            MessagingUtils.error(OpenDerivateViewHandler.class, OPEN_DERIVATIVE_EDITOR_FOR_TAXON_NODE_COULD_NOT_OPEN, e);
36
        }
27
    protected void initPart(SpecimenOrObservationBase<?> entity, DerivateView part) {
28
        part.init(new DerivateViewEditorInput(entity.getUuid()));
29
    }
37 30

  
31
    @Override
32
    protected String getPartId() {
33
        return AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_DERIVATE_DERIVATEVIEW;
38 34
    }
39 35

  
40 36

  
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/handler/OpenDerivativeEditorForTaxonNode.java
5 5
import java.util.List;
6 6
import java.util.UUID;
7 7

  
8
import org.eclipse.core.commands.ExecutionEvent;
9
import org.eclipse.ui.PartInitException;
10

  
11 8
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
12 9
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
13 10
import eu.etaxonomy.cdm.api.service.config.FindOccurrencesConfigurator;
14 11
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
15 12
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
16
import eu.etaxonomy.taxeditor.editor.EditorUtil;
17
import eu.etaxonomy.taxeditor.editor.handler.OpenDerivateViewHandler;
13
import eu.etaxonomy.taxeditor.editor.AppModelId;
18 14
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
15
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView;
19 16
import eu.etaxonomy.taxeditor.editor.view.derivate.DerivateViewEditorInput;
20
import eu.etaxonomy.taxeditor.handler.defaultHandler.DefaultOpenHandlerBase;
21
import eu.etaxonomy.taxeditor.model.MessagingUtils;
17
import eu.etaxonomy.taxeditor.handler.defaultHandler.DefaultOpenHandlerBaseE4;
22 18
import eu.etaxonomy.taxeditor.store.CdmStore;
23 19

  
24
public class OpenDerivativeEditorForTaxonNode extends DefaultOpenHandlerBase<TaxonNode> {
20
public class OpenDerivativeEditorForTaxonNode extends DefaultOpenHandlerBaseE4<TaxonNode, DerivateView> {
25 21

  
26 22
    protected static final String OPEN_DERIVATIVE_EDITOR_FOR_TAXON_NODE_COULD_NOT_OPEN = Messages.OpenDerivativeEditorForTaxonNode_COULD_NOT_OPEN;
27 23

  
......
31 27
    }
32 28

  
33 29
    @Override
34
    protected void open(ExecutionEvent event, TaxonNode entity) {
30
    protected void initPart(TaxonNode entity, DerivateView part) {
35 31
        FindOccurrencesConfigurator config = new FindOccurrencesConfigurator();
36 32
        UUID taxonUuid = entity.getTaxon().getUuid();
37 33
        config.setAssociatedTaxonUuid(taxonUuid);
......
40 36
        for (SpecimenOrObservationBase specimenOrObservationBase : specimens) {
41 37
            specimenUuids.add(specimenOrObservationBase.getUuid());
42 38
        }
43
        try {
44
            EditorUtil.open(new DerivateViewEditorInput(specimenUuids, taxonUuid));
45
        } catch (PartInitException e) {
46
            MessagingUtils.error(OpenDerivateViewHandler.class, OPEN_DERIVATIVE_EDITOR_FOR_TAXON_NODE_COULD_NOT_OPEN, e);
47
        }
39
        part.init(new DerivateViewEditorInput(specimenUuids, taxonUuid));
40
    }
48 41

  
42
    @Override
43
    protected String getPartId() {
44
        return AppModelId.PARTDESCRIPTOR_EU_ETAXONOMY_TAXEDITOR_EDITOR_VIEW_DERIVATE_DERIVATEVIEW;
49 45
    }
50 46

  
51 47
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/handler/defaultHandler/DefaultOpenHandlerBaseE4.java
4 4

  
5 5
import org.eclipse.e4.core.di.annotations.Execute;
6 6
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
7
import org.eclipse.e4.ui.workbench.modeling.EPartService;
8
import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
7 9

  
8
public abstract class DefaultOpenHandlerBaseE4 <T> {
10
public abstract class DefaultOpenHandlerBaseE4 <ENTITY, PART> {
9 11

  
10 12
    @Execute
11
    public Object execute(MHandledMenuItem menuItem){
13
    public void execute(MHandledMenuItem menuItem, EPartService partService){
14
        String partId = getPartId();
15
        PART part= (PART) partService.createPart(partId).getObject();
16

  
17
        ENTITY entity = null;
12 18
        String commandId = menuItem.getCommand().getElementId();
13 19
        UUID uuid = (UUID) menuItem.getTransientData().get(commandId+".uuid");
14 20
        //check if uuid parameter is set
15 21
        if(uuid!=null){
16
            T entity = getEntity(uuid);
17
            open(entity);
22
            entity = getEntity(uuid);
18 23
        }
19
        return null;
24
        initPart(entity, part);
25
        partService.showPart(partId, PartState.ACTIVATE);
20 26
    }
21 27

  
28
    protected abstract void initPart(ENTITY entity, PART part);
22 29

  
23
    protected abstract T getEntity(UUID uuid);
30
    protected abstract String getPartId();
24 31

  
25
    protected abstract void open(T entity);
32
    protected abstract ENTITY getEntity(UUID uuid);
26 33

  
27 34
}

Also available in: Unified diff