Revision 872d7328
Added by Cherian Mathew almost 9 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/editor/definedterm/DefinedTermEditor.java | ||
---|---|---|
15 | 15 |
import org.eclipse.jface.viewers.ISelection; |
16 | 16 |
import org.eclipse.jface.viewers.StructuredSelection; |
17 | 17 |
import org.eclipse.jface.viewers.TreeViewer; |
18 |
import org.eclipse.jface.viewers.Viewer; |
|
18 | 19 |
import org.eclipse.jface.viewers.ViewerSorter; |
19 | 20 |
import org.eclipse.swt.SWT; |
20 | 21 |
import org.eclipse.swt.dnd.DND; |
... | ... | |
35 | 36 |
import eu.etaxonomy.cdm.api.conversation.ConversationHolder; |
36 | 37 |
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled; |
37 | 38 |
import eu.etaxonomy.cdm.model.common.CdmBase; |
39 |
import eu.etaxonomy.cdm.model.common.OrderedTermBase; |
|
38 | 40 |
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap; |
39 | 41 |
import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput; |
40 | 42 |
import eu.etaxonomy.taxeditor.model.IDirtyMarkable; |
... | ... | |
84 | 86 |
viewer.getControl().setLayoutData(LayoutConstants.FILL()); |
85 | 87 |
viewer.setContentProvider(new TermContentProvider()); |
86 | 88 |
viewer.setLabelProvider(new TermLabelProvider()); |
87 |
viewer.setSorter(new ViewerSorter());
|
|
89 |
viewer.setSorter(new DefinedTermSorter());
|
|
88 | 90 |
|
89 | 91 |
Transfer[] transfers = new Transfer[] { TermTransfer.getInstance() }; |
90 | 92 |
viewer.addDragSupport(dndOperations, transfers, new DefinedTermDragListener(viewer)); |
... | ... | |
231 | 233 |
return viewer; |
232 | 234 |
} |
233 | 235 |
|
236 |
private class DefinedTermSorter extends ViewerSorter { |
|
237 |
|
|
238 |
@Override |
|
239 |
public int compare(Viewer viewer, Object e1, Object e2) { |
|
240 |
// the comparison value in this method determines the |
|
241 |
// location <-> add term method used in the MoveDefinedTermOperation |
|
242 |
// execute call |
|
243 |
if(e1 instanceof OrderedTermBase && e2 instanceof OrderedTermBase) { |
|
244 |
OrderedTermBase otbe1 = (OrderedTermBase)e1; |
|
245 |
OrderedTermBase otbe2 = (OrderedTermBase)e2; |
|
246 |
if(otbe1.getOrderIndex() == otbe2.getOrderIndex()) { |
|
247 |
return 0; |
|
248 |
} else if(otbe1.isHigher(otbe2)) { |
|
249 |
return 1; |
|
250 |
} else { |
|
251 |
return -1; |
|
252 |
} |
|
253 |
} else { |
|
254 |
return super.compare(viewer, e1, e2); |
|
255 |
} |
|
256 |
} |
|
257 |
} |
|
234 | 258 |
|
235 | 259 |
|
236 | 260 |
} |
Also available in: Unified diff
DefinedTermDropAdapter : added selection of source objects after drop and disabled insert feedback for non OrderedTermBase objects
DefinedTermEditor : added custom sorter for OrderedTermBase (descending)
MoveDefinedTermOperation : added possibility to move term when cursor is in the insert part of the list