Project

General

Profile

« Previous | Next » 

Revision c8c645a2

Added by Patrick Plitzner over 9 years ago

  • added "isDirty" functionality to DerivateView to allow saving of edited derivates

View differences:

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