Example usage for org.eclipse.jface.viewers TreePathViewerSorter TreePathViewerSorter

List of usage examples for org.eclipse.jface.viewers TreePathViewerSorter TreePathViewerSorter

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers TreePathViewerSorter TreePathViewerSorter.

Prototype

TreePathViewerSorter

Source Link

Usage

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);

        }

    });
}