Project

General

Profile

« Previous | Next » 

Revision 39fb1444

Added by Katja Luther almost 4 years ago

ref #8903: fix remember expand level in factual data view

View differences:

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/DescriptiveContentProvider.java
238 238
	/** {@inheritDoc} */
239 239
	@Override
240 240
    public Object getParent(Object element) {
241
	    if (element instanceof FeatureNodeContainer){
242
	        return ((FeatureNodeContainer)element).getDescription();
243
	    }
241 244
		return null;
242 245
	}
243 246

  
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/FactualDataPartE4.java
23 23
import org.eclipse.e4.ui.di.UIEventTopic;
24 24
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
25 25
import org.eclipse.e4.ui.services.EMenuService;
26
import org.eclipse.jface.viewers.AbstractTreeViewer;
27 26
import org.eclipse.jface.viewers.IStructuredSelection;
28 27
import org.eclipse.jface.viewers.ITreeContentProvider;
29 28
import org.eclipse.jface.viewers.StructuredSelection;
30 29
import org.eclipse.jface.viewers.TreeNode;
31 30
import org.eclipse.jface.viewers.TreeViewer;
31
import org.eclipse.jface.viewers.Viewer;
32 32
import org.eclipse.swt.SWT;
33 33
import org.eclipse.swt.dnd.DND;
34 34
import org.eclipse.swt.dnd.Transfer;
......
138 138

  
139 139

  
140 140
        if(partObject instanceof IPartContentHasFactualData ){
141

  
141 142
            if (!viewer.getControl().isDisposed()){
142 143
                viewer.getControl().setEnabled(isEnabled());
144

  
143 145
            }
146

  
144 147
            IStructuredSelection structuredSelection = createSelection(selection);
145 148
            if(structuredSelection==null || structuredSelection.isEmpty()){
146 149
                showEmptyPage();
......
167 170
                }else{
168 171
                    thisPart.setLabel(Messages.FactualDataView_Lable);
169 172
                }
170
                featureNodeContainerCache.clear();
173
//                featureNodeContainerCache.clear();
171 174
                showViewer(structuredSelection, activePart, viewer);
172 175
                if ( viewer.getControl() != null &&!this.viewer.getControl().isDisposed()){
173 176
                    this.viewer.getControl().setEnabled(isEnabled());
174 177
                }
178

  
175 179
                return;
176 180
            }
177 181
        }
......
187 191
    /** {@inheritDoc} */
188 192
    @Override
189 193
    public void changed(Object object) {
194
        Object[] expandedObjects = null;
195
        if (!viewer.getControl().isDisposed()){
196
            expandedObjects = ((TreeViewer)viewer).getExpandedElements();
197
        }
190 198
        for(FeatureNodeContainerTree containerTree : featureNodeContainerCache.values()){
191 199
            containerTree.buildTree();
192 200
        }
......
199 207
            FeatureNodeContainerTree containerTree = featureNodeContainerCache.get(description);
200 208

  
201 209
            FeatureNodeContainer featureNodeContainer = containerTree.getFeatureNodeContainerForDescriptionElement(descriptionElement);
202
            ((AbstractTreeViewer) viewer).expandToLevel(featureNodeContainer, 1);
210
//            ((AbstractTreeViewer) viewer).expandToLevel(featureNodeContainer, 1);
203 211

  
204 212
        }
205
        ((AbstractTreeViewer) viewer).expandToLevel(2);
206
        viewer.refresh();
207 213

  
208 214

  
215
        viewer.refresh();
216
        ((TreeViewer) viewer).setExpandedElements(expandedObjects);
217

  
209 218
        if(object != null){
210 219
            StructuredSelection selection = new StructuredSelection(object);
211 220
            viewer.setSelection(selection, true);
......
218 227
    @Optional
219 228
    private void updateView(@UIEventTopic(WorkbenchEventConstants.SAVE_TAXON)boolean refresh){
220 229
        if(refresh){
230
            Object[] expandedObjects = ((TreeViewer)viewer).getExpandedElements();
221 231
            viewer.refresh();
232
            ((TreeViewer)viewer).collapseAll();
233
            if (expandedObjects.length>0){
234
                ((TreeViewer)viewer).setExpandedElements(expandedObjects);
235
            }
222 236
        }
223 237
    }
224 238

  
......
264 278
        return null;
265 279
    }
266 280

  
281
    @Override
282
    protected void showViewer(IStructuredSelection selection, MPart activePart, Viewer viewer){
283
        Object[] expandedObjects = null;
284
        if (!((TreeViewer)this.getViewer()).getControl().isDisposed()){
285
            expandedObjects = ((TreeViewer)this.getViewer()).getExpandedElements();
286
        }
287
        super.showViewer(selection, activePart, viewer);
288
        if (expandedObjects == null || expandedObjects.length == 0){
289
            ((TreeViewer)this.viewer).expandToLevel(2);
290
        }else{
291
            ((TreeViewer)this.viewer).setExpandedElements(expandedObjects);
292
        }
293
    }
294

  
267 295

  
268 296

  
269 297
}
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/view/descriptive/e4/handler/DeleteHandlerE4.java
26 26
import org.eclipse.e4.ui.services.IServiceConstants;
27 27
import org.eclipse.jface.viewers.ISelection;
28 28
import org.eclipse.jface.viewers.IStructuredSelection;
29
import org.eclipse.jface.viewers.TreeViewer;
29 30
import org.eclipse.swt.widgets.Shell;
30 31

  
31 32
import eu.etaxonomy.cdm.api.service.DeleteResult;
......
73 74
        if(selectionProvidingPart instanceof ICdmEntitySessionEnabled){
74 75
            cdmEntitySessionEnabled = (ICdmEntitySessionEnabled) selectionProvidingPart;
75 76
        }
77
        TreeViewer viewer = (TreeViewer)factualDataPart.getViewer();
78
        Object[] expandedElements = viewer.getExpandedElements();
76 79

  
77 80
		String label = menuItem.getLocalizedLabel();
78 81

  
......
95 98
                description = ((DescriptionElementBase)object).getInDescription();
96 99
            }
97 100
            if (result.getStatus().equals(Status.OK)){
101
                List<Object> expandedElementsList = new ArrayList<>();
102

  
103
                for (Object o: expandedElements){
104
                    if(!o.equals(object)){
105
                        expandedElementsList.add(o);
106
                    }
107
                }
108
                expandedElements = expandedElementsList.toArray();
98 109
                // TaxonDescription
99 110
                if(object instanceof TaxonDescription ){
100 111

  
......
102 113

  
103 114
                        ((TaxonDescription) object).getTaxon().removeDescription((TaxonDescription) object);
104 115

  
116

  
105 117
                } else if(object instanceof TaxonNameDescription ){
106 118
                    operation = new DeleteTaxonNameDescriptionOperation(label, undoContext, (TaxonNameDescription) object, factualDataPart, cdmEntitySessionEnabled);
107 119

  
......
127 139
//                if (operation != null){
128 140
//                    operation.getPostOperationEnabled().postOperation(object);
129 141
//                }
142

  
143

  
130 144
                if (factualDataPart.getSelectionProvidingPart().getObject() instanceof TaxonNameEditorE4){
131 145
                    ((TaxonNameEditorE4)factualDataPart.getSelectionProvidingPart().getObject()).getEditorInput().addOperation(operation);
132 146
                    ((TaxonNameEditorE4)factualDataPart.getSelectionProvidingPart().getObject()).setDirty();
133 147
                    ((TaxonNameEditorE4)factualDataPart.getSelectionProvidingPart().getObject()).redraw();
148

  
134 149
                }
135 150
                if (factualDataPart.getSelectionProvidingPart().getObject() instanceof DerivateView){
136 151
                    ((DerivateView)factualDataPart.getSelectionProvidingPart().getObject()).addOperation(operation);
......
150 165
                    ((BulkEditorE4)factualDataPart.getSelectionProvidingPart().getObject()).setDirty(true);
151 166
                    ((BulkEditorE4)factualDataPart.getSelectionProvidingPart().getObject()).changed(((SpecimenDescription)object).getDescribedSpecimenOrObservation());
152 167
                }
168
                viewer.refresh();
169
//                viewer.collapseAll();
153 170

  
171
                if (expandedElements.length>0){
172
                    viewer.setExpandedElements(expandedElements);
173
                }
154 174
            }
155 175
            else{
156 176
                Exception e = result.getExceptions() != null && !result.getExceptions().isEmpty()? result.getExceptions().iterator().next() : null;

Also available in: Unified diff