diff --git a/source/com/intellij/ide/structureView/impl/VisibilityComparator.java b/source/com/intellij/ide/structureView/impl/VisibilityComparator.java index 7fe966feb875..b2ae7cf07d5e 100644 --- a/source/com/intellij/ide/structureView/impl/VisibilityComparator.java +++ b/source/com/intellij/ide/structureView/impl/VisibilityComparator.java @@ -12,6 +12,7 @@ public class VisibilityComparator implements Comparator { private static final int GROUP_ACCESS_SUBLEVEL = 1; public static Comparator THEN_SOURCE = new VisibilityComparator(SourceComparator.INSTANCE); public static Comparator THEN_ALPHA = new VisibilityComparator(AlphaComparator.INSTANCE); + public static Comparator IMSTANCE = new VisibilityComparator(null); private Comparator myNextComparator; public static final int UNKNOWN_ACCESS_LEVEL = -1; diff --git a/source/com/intellij/ide/structureView/impl/java/JavaFileTreeModel.java b/source/com/intellij/ide/structureView/impl/java/JavaFileTreeModel.java index 84fc6db93e91..f18dd2c15e2e 100644 --- a/source/com/intellij/ide/structureView/impl/java/JavaFileTreeModel.java +++ b/source/com/intellij/ide/structureView/impl/java/JavaFileTreeModel.java @@ -34,7 +34,7 @@ public class JavaFileTreeModel implements StructureViewModel { } public Sorter[] getSorters() { - return new Sorter[]{KindSorter.INSTANCE, Sorter.ALPHA_SORTER}; + return new Sorter[]{KindSorter.INSTANCE, Sorter.ALPHA_SORTER, VisibilitySorter.INSTANCE}; } public Object getCurrentEditorElement() { diff --git a/source/com/intellij/ide/structureView/impl/java/VisibilitySorter.java b/source/com/intellij/ide/structureView/impl/java/VisibilitySorter.java new file mode 100644 index 000000000000..d35486dd0840 --- /dev/null +++ b/source/com/intellij/ide/structureView/impl/java/VisibilitySorter.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2004 JetBrains s.r.o. All Rights Reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * -Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * -Redistribution in binary form must reproduct the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the distribution. + * + * Neither the name of JetBrains or IntelliJ IDEA + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * This software is provided "AS IS," without a warranty of any kind. ALL + * EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING + * ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE + * OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. JETBRAINS AND ITS LICENSORS SHALL NOT + * BE LIABLE FOR ANY DAMAGES OR LIABILITIES SUFFERED BY LICENSEE AS A RESULT + * OF OR RELATING TO USE, MODIFICATION OR DISTRIBUTION OF THE SOFTWARE OR ITS + * DERIVATIVES. IN NO EVENT WILL JETBRAINS OR ITS LICENSORS BE LIABLE FOR ANY LOST + * REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, + * INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY + * OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE, EVEN + * IF JETBRAINS HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + * + */ +package com.intellij.ide.structureView.impl.java; + +import com.intellij.ide.util.treeView.smartTree.Sorter; +import com.intellij.ide.util.treeView.smartTree.ActionPresentation; +import com.intellij.ide.structureView.impl.VisibilityComparator; +import com.intellij.openapi.util.IconLoader; + +import javax.swing.*; +import java.util.Comparator; + +public class VisibilitySorter implements Sorter{ + + public static final Sorter INSTANCE = new VisibilitySorter(); + + private static final Icon ICON = IconLoader.getIcon("/objectBrowser/visibilitySort.png"); + private static final ActionPresentation PRESENTATION = new ActionPresentation() { + public String getText() { + return "Sort by Visibility"; + } + + public String getDescription() { + return null; + } + + public Icon getIcon() { + return ICON; + } + }; + public static final String ID = "VISIBILITY_SORTER"; + + public Comparator getComparator() { + return VisibilityComparator.IMSTANCE; + } + + public ActionPresentation getPresentation() { + return PRESENTATION; + } + + public String getName() { + return ID; + } +}