Revision 39fb1444
Added by Katja Luther almost 4 years ago
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
ref #8903: fix remember expand level in factual data view