Revision c8c645a2
Added by Patrick Plitzner over 9 years ago
- added "isDirty" functionality to DerivateView to allow saving of edited derivates
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/CreateDerivateContextMenu.java | ||
---|---|---|
2 | 2 |
|
3 | 3 |
import java.util.UUID; |
4 | 4 |
|
5 |
import org.eclipse.core.runtime.NullProgressMonitor; |
|
6 | 5 |
import org.eclipse.jface.action.ContributionItem; |
7 | 6 |
import org.eclipse.jface.action.IContributionItem; |
8 | 7 |
import org.eclipse.jface.viewers.ISelection; |
... | ... | |
73 | 72 |
if(activePart instanceof DerivateView){ |
74 | 73 |
DerivateView derivateView = (DerivateView)activePart; |
75 | 74 |
derivateView.viewer.refresh(); |
76 |
derivateView.doSave(new NullProgressMonitor()); |
|
77 | 75 |
} |
78 | 76 |
} |
79 | 77 |
|
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateContentProvider.java | ||
---|---|---|
5 | 5 |
import java.util.List; |
6 | 6 |
import java.util.Set; |
7 | 7 |
|
8 |
import org.eclipse.jface.viewers.IStructuredSelection; |
|
9 | 8 |
import org.eclipse.jface.viewers.ITreeContentProvider; |
10 | 9 |
import org.eclipse.jface.viewers.Viewer; |
11 | 10 |
|
... | ... | |
28 | 27 |
|
29 | 28 |
@Override |
30 | 29 |
public Object[] getElements(Object inputElement) { |
31 |
if(inputElement instanceof IStructuredSelection){
|
|
32 |
inputElement = ((IStructuredSelection) inputElement).getFirstElement();
|
|
30 |
if(inputElement instanceof DerivateViewEditorInput){
|
|
31 |
inputElement = ((DerivateViewEditorInput) inputElement).getDerivate();
|
|
33 | 32 |
} |
34 | 33 |
// return the parent FieldUnit if element is a DerivedUnit |
35 | 34 |
if(inputElement instanceof DerivedUnit){ |
... | ... | |
53 | 52 |
|
54 | 53 |
@Override |
55 | 54 |
public Object[] getChildren(Object parentElement) { |
56 |
if(parentElement instanceof IStructuredSelection){
|
|
57 |
parentElement = ((IStructuredSelection) parentElement).getFirstElement();
|
|
55 |
if(parentElement instanceof DerivateViewEditorInput){
|
|
56 |
parentElement = ((DerivateViewEditorInput) parentElement).getDerivate();
|
|
58 | 57 |
} |
59 | 58 |
if(parentElement instanceof SpecimenOrObservationBase){ |
60 | 59 |
return getDerivates((SpecimenOrObservationBase) parentElement).toArray(); |
... | ... | |
64 | 63 |
|
65 | 64 |
@Override |
66 | 65 |
public Object getParent(Object element) { |
67 |
if(element instanceof IStructuredSelection){
|
|
68 |
element = ((IStructuredSelection) element).getFirstElement();
|
|
66 |
if(element instanceof DerivateViewEditorInput){
|
|
67 |
element = ((DerivateViewEditorInput) element).getDerivate();
|
|
69 | 68 |
} |
70 | 69 |
if(element instanceof DerivedUnit){ |
71 | 70 |
DerivedUnit derivedUnit = (DerivedUnit)element; |
... | ... | |
76 | 75 |
|
77 | 76 |
@Override |
78 | 77 |
public boolean hasChildren(Object element) { |
79 |
if(element instanceof IStructuredSelection){
|
|
80 |
element = ((IStructuredSelection) element).getFirstElement();
|
|
78 |
if(element instanceof DerivateViewEditorInput){
|
|
79 |
element = ((DerivateViewEditorInput) element).getDerivate();
|
|
81 | 80 |
} |
82 | 81 |
if(element instanceof SpecimenOrObservationBase){ |
83 | 82 |
SpecimenOrObservationBase specimenOrObservation = (SpecimenOrObservationBase)element; |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/derivate/DerivateView.java | ||
---|---|---|
9 | 9 |
import org.eclipse.swt.widgets.Menu; |
10 | 10 |
import org.eclipse.swt.widgets.Tree; |
11 | 11 |
import org.eclipse.ui.IEditorInput; |
12 |
import org.eclipse.ui.IEditorPart; |
|
12 | 13 |
import org.eclipse.ui.IEditorSite; |
13 | 14 |
import org.eclipse.ui.PartInitException; |
14 | 15 |
import org.eclipse.ui.part.EditorPart; |
15 | 16 |
|
17 |
import eu.etaxonomy.cdm.api.conversation.ConversationHolder; |
|
18 |
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled; |
|
16 | 19 |
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeCacheStrategy; |
17 | 20 |
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase; |
21 |
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap; |
|
22 |
import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider; |
|
18 | 23 |
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails; |
19 | 24 |
import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData; |
25 |
import eu.etaxonomy.taxeditor.store.CdmStore; |
|
20 | 26 |
|
21 | 27 |
/** |
22 | 28 |
* Displays the derivate hierarchy of all derivates belonging to a taxon. |
23 | 29 |
* |
24 | 30 |
*/ |
25 |
public class DerivateView extends EditorPart implements IPartContentHasDetails, IPartContentHasSupplementalData { |
|
31 |
public class DerivateView extends EditorPart implements IDirtyMarkableSelectionProvider, IConversationEnabled, IPartContentHasDetails, IPartContentHasSupplementalData {
|
|
26 | 32 |
|
27 | 33 |
/** Constant <code>ID="eu.etaxonomy.taxeditor.editor.view.desc"{trunked}</code> */ |
28 | 34 |
public static final String ID = "eu.etaxonomy.taxeditor.editor.view.derivate.DerivateView"; |
29 | 35 |
|
36 |
private ConversationHolder conversation; |
|
37 |
|
|
30 | 38 |
protected TreeViewer viewer; |
31 | 39 |
|
32 | 40 |
private SpecimenOrObservationBase<DerivedUnitFacadeCacheStrategy> derivate; |
33 | 41 |
|
42 |
private boolean isDirty; |
|
43 |
|
|
34 | 44 |
/* (non-Javadoc) |
35 | 45 |
* @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite) |
36 | 46 |
*/ |
... | ... | |
54 | 64 |
control.setMenu(menu); |
55 | 65 |
|
56 | 66 |
|
57 |
viewer.setInput(derivate);
|
|
67 |
viewer.setInput(getEditorInput());
|
|
58 | 68 |
} |
59 | 69 |
|
60 | 70 |
/* (non-Javadoc) |
... | ... | |
62 | 72 |
*/ |
63 | 73 |
@Override |
64 | 74 |
public void doSave(IProgressMonitor monitor) { |
65 |
// TODO Auto-generated method stub |
|
75 |
monitor.beginTask("Saving Derivates", 3); |
|
76 |
if (!conversation.isBound()) { |
|
77 |
conversation.bind(); |
|
78 |
} |
|
79 |
monitor.worked(1); |
|
66 | 80 |
|
81 |
// commit the conversation and start a new transaction immediately |
|
82 |
conversation.commit(true); |
|
83 |
monitor.worked(1); |
|
84 |
|
|
85 |
this.setDirty(false); |
|
86 |
monitor.worked(1); |
|
87 |
monitor.done(); |
|
88 |
firePropertyChange(PROP_DIRTY); |
|
67 | 89 |
} |
68 | 90 |
|
69 | 91 |
/* (non-Javadoc) |
... | ... | |
89 | 111 |
*/ |
90 | 112 |
@Override |
91 | 113 |
public void init(IEditorSite site, IEditorInput input) throws PartInitException { |
114 |
conversation = CdmStore.createConversation(); |
|
92 | 115 |
setSite(site); |
93 | 116 |
setInput(input); |
94 | 117 |
if(input instanceof DerivateViewEditorInput){ |
... | ... | |
104 | 127 |
*/ |
105 | 128 |
@Override |
106 | 129 |
public boolean isDirty() { |
107 |
// TODO Auto-generated method stub |
|
108 |
return false; |
|
130 |
return isDirty; |
|
131 |
} |
|
132 |
|
|
133 |
/** |
|
134 |
* @param isDirty the isDirty to set |
|
135 |
*/ |
|
136 |
public void setDirty(boolean isDirty) { |
|
137 |
this.isDirty = isDirty; |
|
109 | 138 |
} |
110 | 139 |
|
111 | 140 |
/* (non-Javadoc) |
... | ... | |
127 | 156 |
|
128 | 157 |
} |
129 | 158 |
|
159 |
/* (non-Javadoc) |
|
160 |
* @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap) |
|
161 |
*/ |
|
162 |
@Override |
|
163 |
public void update(CdmDataChangeMap changeEvents) { |
|
164 |
// TODO Auto-generated method stub |
|
165 |
|
|
166 |
} |
|
167 |
|
|
168 |
/* (non-Javadoc) |
|
169 |
* @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder() |
|
170 |
*/ |
|
171 |
@Override |
|
172 |
public ConversationHolder getConversationHolder() { |
|
173 |
return conversation; |
|
174 |
} |
|
175 |
|
|
176 |
/* (non-Javadoc) |
|
177 |
* @see eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider#changed(java.lang.Object) |
|
178 |
*/ |
|
179 |
@Override |
|
180 |
public void changed(Object element) { |
|
181 |
firePropertyChange(IEditorPart.PROP_DIRTY); |
|
182 |
viewer.setInput(getEditorInput()); |
|
183 |
setDirty(true); |
|
184 |
} |
|
185 |
|
|
130 | 186 |
} |
Also available in: Unified diff