List of usage examples for org.eclipse.jface.viewers TreePathViewerSorter TreePathViewerSorter
TreePathViewerSorter
From source file:org.talend.repository.viewer.ui.provider.RepositoryViewerProvider.java
License:Open Source License
@Override protected void checkSorter(TreeViewer treeViewer) { ViewerSorter sorter = null;//from w w w . ja v a 2 s. com if (getRepView() != null) { final StructuredViewer viewer = getRepView().getViewer(); sorter = viewer.getSorter(); } final ViewerSorter viewerSorter = sorter; // TDI-20528 // treeViewer.setSorter(sorter); treeViewer.setSorter(new TreePathViewerSorter() { @Override public int compare(Viewer viewer, TreePath parentPath, Object e1, Object e2) { if (e1 instanceof RepositoryNode && e2 instanceof RepositoryNode) { final RepositoryNode node1 = (RepositoryNode) e1; final RepositoryNode node2 = (RepositoryNode) e2; if (node1.isBin() || node1.getType().equals(ENodeType.REFERENCED_PROJECT)) { // recycle bin is // always in bottom return 1; } if (node2.isBin() || node2.getType().equals(ENodeType.REFERENCED_PROJECT)) { // recycle bin is // always in bottom return -1; } // do special for simple folder,TDI-20528 if (node1.getType() == IRepositoryNode.ENodeType.SIMPLE_FOLDER || node2.getType() == IRepositoryNode.ENodeType.SIMPLE_FOLDER) { return e1.toString().compareTo(e2.toString()); } else if (viewerSorter != null) { if (viewerSorter instanceof TreePathViewerSorter) { if (!node1.isInitialized() && !node2.isInitialized()) { return viewerSorter.compare(viewer, e1, e2); } return ((TreePathViewerSorter) viewerSorter).compare(viewer, parentPath, e1, e2); } else { return viewerSorter.compare(viewer, e1, e2); } } } return super.compare(viewer, parentPath, e1, e2); } }); }