Revision 1109c1c6
Added by Patrick Plitzner almost 10 years ago
- refactored DataImportEditor context menu
- removed extension point in plugin.xml
- added dynamic context menu
.gitattributes | ||
---|---|---|
491 | 491 |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/DataImportEditorInput.java -text |
492 | 492 |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/GbifImportEditor.java -text |
493 | 493 |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/GbifImportEditorInput.java -text |
494 |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/QueryOriginalRecordCommand.java -text |
|
495 | 494 |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/QueryType.java -text |
496 |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SaveSpecimenCommand.java -text |
|
497 | 495 |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SpecimenImportEditor.java -text |
498 | 496 |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SpecimenProviderSelectionWizardPage.java -text |
499 | 497 |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SpecimenSearchWizard.java -text |
eu.etaxonomy.taxeditor.editor/plugin.xml | ||
---|---|---|
577 | 577 |
</menuContribution> |
578 | 578 |
<menuContribution |
579 | 579 |
locationURI="popup:eu.etaxonomy.taxeditor.editor.view.dataimport.SpecimenImportEditor"> |
580 |
<command |
|
581 |
commandId="eu.etaxonomy.taxeditor.editor.view.dataimport.SaveSpecimenCommand" |
|
582 |
label="Save Specimen" |
|
583 |
style="push"> |
|
584 |
</command> |
|
580 |
<dynamic |
|
581 |
class="eu.etaxonomy.taxeditor.editor.view.dataimport.DataImportEditorContextMenu" |
|
582 |
id="eu.etaxonomy.taxeditor.editor.view.dataimport.DataImportEditorContextMenu"> |
|
583 |
</dynamic> |
|
585 | 584 |
</menuContribution> |
586 | 585 |
<menuContribution |
587 | 586 |
locationURI="popup:eu.etaxonomy.taxeditor.editor.view.dataimport.GbifImportEditor"> |
588 |
<command |
|
589 |
commandId="eu.etaxonomy.taxeditor.editor.view.dataimport.SaveSpecimenCommand" |
|
590 |
label="Save Specimen" |
|
591 |
style="push"> |
|
592 |
</command> |
|
593 |
<command |
|
594 |
commandId="eu.etaxonomy.taxeditor.editor.view.dataimport.QueryOriginalRecordCommand" |
|
595 |
label="Query original data record" |
|
596 |
style="push"> |
|
597 |
</command> |
|
587 |
<dynamic |
|
588 |
class="eu.etaxonomy.taxeditor.editor.view.dataimport.DataImportEditorContextMenu" |
|
589 |
id="eu.etaxonomy.taxeditor.editor.view.dataimport.DataImportEditorContextMenu"> |
|
590 |
</dynamic> |
|
598 | 591 |
</menuContribution> |
599 | 592 |
|
600 | 593 |
|
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/DataImportEditorContextMenu.java | ||
---|---|---|
1 | 1 |
package eu.etaxonomy.taxeditor.editor.view.dataimport; |
2 | 2 |
|
3 |
import java.io.IOException; |
|
4 |
|
|
5 |
import org.apache.http.client.ClientProtocolException; |
|
6 |
import org.apache.log4j.Logger; |
|
7 |
import org.eclipse.core.runtime.IProgressMonitor; |
|
8 |
import org.eclipse.core.runtime.IStatus; |
|
9 |
import org.eclipse.core.runtime.Status; |
|
10 |
import org.eclipse.core.runtime.jobs.Job; |
|
3 | 11 |
import org.eclipse.jface.action.ContributionItem; |
4 | 12 |
import org.eclipse.jface.action.IContributionItem; |
5 | 13 |
import org.eclipse.jface.viewers.ISelection; |
14 |
import org.eclipse.jface.viewers.StructuredSelection; |
|
6 | 15 |
import org.eclipse.swt.SWT; |
7 | 16 |
import org.eclipse.swt.widgets.Event; |
8 | 17 |
import org.eclipse.swt.widgets.Listener; |
... | ... | |
10 | 19 |
import org.eclipse.swt.widgets.MenuItem; |
11 | 20 |
import org.eclipse.ui.IEditorPart; |
12 | 21 |
import org.eclipse.ui.IWorkbenchWindow; |
22 |
import org.eclipse.ui.PartInitException; |
|
13 | 23 |
import org.eclipse.ui.PlatformUI; |
14 | 24 |
import org.eclipse.ui.actions.CompoundContributionItem; |
15 | 25 |
|
26 |
import eu.etaxonomy.cdm.api.service.IOccurrenceService; |
|
27 |
import eu.etaxonomy.cdm.ext.occurrence.OccurenceQuery; |
|
28 |
import eu.etaxonomy.cdm.ext.occurrence.gbif.DataSetResponse; |
|
29 |
import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifDataSetProtocol; |
|
30 |
import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifQueryServiceWrapper; |
|
31 |
import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse; |
|
32 |
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; |
|
33 |
import eu.etaxonomy.taxeditor.editor.EditorUtil; |
|
34 |
import eu.etaxonomy.taxeditor.store.CdmStore; |
|
35 |
|
|
16 | 36 |
public class DataImportEditorContextMenu extends CompoundContributionItem { |
17 | 37 |
|
38 |
private final Logger logger = Logger.getLogger(DataImportEditorContextMenu.class); |
|
39 |
|
|
18 | 40 |
/* (non-Javadoc) |
19 | 41 |
* @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems() |
20 | 42 |
*/ |
... | ... | |
27 | 49 |
final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); |
28 | 50 |
final IEditorPart activeEditor = window.getActivePage().getActiveEditor(); |
29 | 51 |
final ISelection selection = window.getActivePage().getSelection(); |
30 |
MenuItem item = new MenuItem(menu, SWT.NONE); |
|
31 |
item.setText("Save Specimen"); |
|
32 |
item.addListener(SWT.Selection, new Listener() { |
|
52 |
if(selection instanceof StructuredSelection){ |
|
53 |
final StructuredSelection structuredSelection = (StructuredSelection)selection; |
|
54 |
|
|
55 |
//Save Specimen |
|
56 |
MenuItem saveSpecimenItem = new MenuItem(menu, SWT.NONE); |
|
57 |
saveSpecimenItem.setText("Save Specimen"); |
|
58 |
saveSpecimenItem.addListener(SWT.Selection, new Listener() { |
|
59 |
|
|
60 |
@Override |
|
61 |
public void handleEvent(Event event) { |
|
62 |
if(structuredSelection.iterator().hasNext()){ |
|
63 |
Object next = structuredSelection.iterator().next(); |
|
64 |
if(next instanceof GbifResponse){ |
|
65 |
//unwrap DerivedUnit from GbifResponse |
|
66 |
next = ((GbifResponse) next).getDerivedUnitFacade().innerDerivedUnit(); |
|
67 |
} |
|
68 |
if(next instanceof SpecimenOrObservationBase){ |
|
69 |
if(activeEditor instanceof DataImportEditor){ |
|
70 |
DataImportEditor<?> dataImportEditor = (DataImportEditor<?>)activeEditor; |
|
71 |
CdmStore.getService(IOccurrenceService.class).saveOrUpdate((SpecimenOrObservationBase<?>) next); |
|
72 |
dataImportEditor.getConversationHolder().commit(true); |
|
73 |
System.out.println("commit"); |
|
74 |
} |
|
75 |
} |
|
76 |
} |
|
77 |
} |
|
78 |
}); |
|
79 |
|
|
80 |
//Query original data provider |
|
81 |
if(structuredSelection.size()==1 |
|
82 |
&& structuredSelection.iterator().next() instanceof GbifResponse |
|
83 |
&& ((GbifResponse)structuredSelection.iterator().next()).getDataSetProtocol()!=null |
|
84 |
&& ((GbifResponse)structuredSelection.iterator().next()).getDataSetProtocol()==GbifDataSetProtocol.BIOCASE){ |
|
85 |
final GbifResponse gbifResponse = (GbifResponse)structuredSelection.iterator().next(); |
|
86 |
MenuItem queryOriginalItem = new MenuItem(menu, SWT.NONE); |
|
87 |
queryOriginalItem.setText("Query original data provider"); |
|
88 |
queryOriginalItem.addListener(SWT.Selection, new Listener() { |
|
89 |
|
|
90 |
@Override |
|
91 |
public void handleEvent(Event event) { |
|
92 |
try{ |
|
93 |
DataSetResponse response = new GbifQueryServiceWrapper().queryOriginalDataSet(gbifResponse); |
|
94 |
final BioCaseEditorInput input = new BioCaseEditorInput(new OccurenceQuery(response.getUnitId()), response.getEndpoint()); |
|
95 |
EditorUtil.open(input); |
|
96 |
Job queryJob = new Job("Querying for original record...") { |
|
33 | 97 |
|
34 |
@Override |
|
35 |
public void handleEvent(Event event) { |
|
36 |
System.out.println("listener"); |
|
98 |
@Override |
|
99 |
protected IStatus run(IProgressMonitor monitor) { |
|
100 |
input.query(); |
|
101 |
return Status.OK_STATUS; |
|
102 |
} |
|
103 |
}; |
|
104 |
queryJob.schedule(); |
|
105 |
} catch (ClientProtocolException e) { |
|
106 |
logger.error("Query for single record failed.", e); |
|
107 |
} catch (IOException e) { |
|
108 |
logger.error("Query for single record failed.", e); |
|
109 |
} catch (PartInitException e) { |
|
110 |
logger.error("Could not open editor.", e); |
|
111 |
} |
|
112 |
} |
|
113 |
}); |
|
37 | 114 |
} |
38 |
}); |
|
39 |
System.out.println(activeEditor); |
|
40 |
System.out.println(selection); |
|
115 |
} |
|
41 | 116 |
} |
42 |
} |
|
43 |
}; |
|
117 |
}}; |
|
44 | 118 |
return contributionItems; |
45 | 119 |
} |
46 | 120 |
|
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/GbifImportEditor.java | ||
---|---|---|
32 | 32 |
*/ |
33 | 33 |
@Override |
34 | 34 |
protected String getTextForTableItem(GbifResponse item) { |
35 |
return item.getDerivedUnitFacade().innerDerivedUnit().generateTitle(); |
|
35 |
String text = ""; |
|
36 |
if(item.getDataSetProtocol()!=null){ |
|
37 |
text += "["+item.getDataSetProtocol()+"] "; |
|
38 |
} |
|
39 |
text += item.getDerivedUnitFacade().innerDerivedUnit().generateTitle(); |
|
40 |
return text; |
|
36 | 41 |
} |
37 | 42 |
|
38 | 43 |
} |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/QueryOriginalRecordCommand.java | ||
---|---|---|
1 |
package eu.etaxonomy.taxeditor.editor.view.dataimport; |
|
2 |
|
|
3 |
import java.io.IOException; |
|
4 |
|
|
5 |
import org.apache.http.client.ClientProtocolException; |
|
6 |
import org.apache.log4j.Logger; |
|
7 |
import org.eclipse.core.commands.AbstractHandler; |
|
8 |
import org.eclipse.core.commands.ExecutionEvent; |
|
9 |
import org.eclipse.core.commands.ExecutionException; |
|
10 |
import org.eclipse.core.runtime.IProgressMonitor; |
|
11 |
import org.eclipse.core.runtime.IStatus; |
|
12 |
import org.eclipse.core.runtime.Status; |
|
13 |
import org.eclipse.core.runtime.jobs.Job; |
|
14 |
import org.eclipse.jface.viewers.ISelection; |
|
15 |
import org.eclipse.jface.viewers.StructuredSelection; |
|
16 |
import org.eclipse.ui.IWorkbenchWindow; |
|
17 |
import org.eclipse.ui.PartInitException; |
|
18 |
import org.eclipse.ui.PlatformUI; |
|
19 |
|
|
20 |
import eu.etaxonomy.cdm.ext.occurrence.OccurenceQuery; |
|
21 |
import eu.etaxonomy.cdm.ext.occurrence.gbif.DataSetResponse; |
|
22 |
import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifQueryServiceWrapper; |
|
23 |
import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse; |
|
24 |
import eu.etaxonomy.taxeditor.editor.EditorUtil; |
|
25 |
|
|
26 |
public class QueryOriginalRecordCommand extends AbstractHandler { |
|
27 |
|
|
28 |
private final Logger logger = Logger.getLogger(QueryOriginalRecordCommand.class); |
|
29 |
|
|
30 |
/* (non-Javadoc) |
|
31 |
* @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
32 |
*/ |
|
33 |
@Override |
|
34 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
35 |
final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); |
|
36 |
final ISelection selection = window.getActivePage().getSelection(); |
|
37 |
if(selection instanceof StructuredSelection){ |
|
38 |
StructuredSelection structuredSelection = (StructuredSelection)selection; |
|
39 |
if(structuredSelection.size()==1){ |
|
40 |
Object next = structuredSelection.iterator().next(); |
|
41 |
if(next instanceof GbifResponse){ |
|
42 |
try{ |
|
43 |
DataSetResponse response = new GbifQueryServiceWrapper().queryOriginalDataSet((GbifResponse)next); |
|
44 |
final BioCaseEditorInput input = new BioCaseEditorInput(new OccurenceQuery(response.getUnitId()), response.getEndpoint()); |
|
45 |
EditorUtil.open(input); |
|
46 |
Job queryJob = new Job("Querying for original record...") { |
|
47 |
|
|
48 |
@Override |
|
49 |
protected IStatus run(IProgressMonitor monitor) { |
|
50 |
input.query(); |
|
51 |
return Status.OK_STATUS; |
|
52 |
} |
|
53 |
}; |
|
54 |
queryJob.schedule(); |
|
55 |
} catch (ClientProtocolException e) { |
|
56 |
logger.error("Query for single record failed.", e); |
|
57 |
} catch (IOException e) { |
|
58 |
logger.error("Query for single record failed.", e); |
|
59 |
} catch (PartInitException e) { |
|
60 |
logger.error("Could not open editor.", e); |
|
61 |
} |
|
62 |
} |
|
63 |
} |
|
64 |
} |
|
65 |
return null; |
|
66 |
} |
|
67 |
|
|
68 |
} |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/dataimport/SaveSpecimenCommand.java | ||
---|---|---|
1 |
package eu.etaxonomy.taxeditor.editor.view.dataimport; |
|
2 |
|
|
3 |
import java.util.Iterator; |
|
4 |
|
|
5 |
import org.eclipse.core.commands.AbstractHandler; |
|
6 |
import org.eclipse.core.commands.ExecutionEvent; |
|
7 |
import org.eclipse.core.commands.ExecutionException; |
|
8 |
import org.eclipse.jface.viewers.ISelection; |
|
9 |
import org.eclipse.jface.viewers.StructuredSelection; |
|
10 |
import org.eclipse.ui.IWorkbenchPart; |
|
11 |
import org.eclipse.ui.IWorkbenchWindow; |
|
12 |
import org.eclipse.ui.PlatformUI; |
|
13 |
|
|
14 |
import eu.etaxonomy.cdm.api.service.IOccurrenceService; |
|
15 |
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; |
|
16 |
import eu.etaxonomy.taxeditor.model.AbstractUtility; |
|
17 |
import eu.etaxonomy.taxeditor.store.CdmStore; |
|
18 |
|
|
19 |
|
|
20 |
public class SaveSpecimenCommand extends AbstractHandler { |
|
21 |
|
|
22 |
/* (non-Javadoc) |
|
23 |
* @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent) |
|
24 |
*/ |
|
25 |
@Override |
|
26 |
public Object execute(ExecutionEvent event) throws ExecutionException { |
|
27 |
final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); |
|
28 |
final ISelection selection = window.getActivePage().getSelection(); |
|
29 |
if(selection instanceof StructuredSelection){ |
|
30 |
StructuredSelection structuredSelection = (StructuredSelection)selection; |
|
31 |
Iterator<?> iterator = structuredSelection.iterator(); |
|
32 |
while(iterator.hasNext()){ |
|
33 |
Object next = iterator.next(); |
|
34 |
if(next instanceof SpecimenOrObservationBase){ |
|
35 |
IWorkbenchPart activePart = AbstractUtility.getActivePart(); |
|
36 |
if(activePart instanceof DataImportEditor){ |
|
37 |
DataImportEditor dataImportEditor = (DataImportEditor)activePart; |
|
38 |
CdmStore.getService(IOccurrenceService.class).saveOrUpdate((SpecimenOrObservationBase<?>) next); |
|
39 |
dataImportEditor.getConversationHolder().commit(true); |
|
40 |
} |
|
41 |
} |
|
42 |
} |
|
43 |
} |
|
44 |
return null; |
|
45 |
} |
|
46 |
|
|
47 |
} |
Also available in: Unified diff