diff -r 43db124d472c openide.explorer/apichanges.xml --- a/openide.explorer/apichanges.xml Mon Dec 14 17:14:42 2009 +0100 +++ b/openide.explorer/apichanges.xml Mon Dec 14 17:58:10 2009 +0100 @@ -47,6 +47,17 @@ Explorer API + + + OutlineView.setTreeSortable added. + + + + + Added method to set or unset the tree column as sortable. + + + TreeView.setAutoWaitCursor added. diff -r 43db124d472c openide.explorer/nbproject/project.properties --- a/openide.explorer/nbproject/project.properties Mon Dec 14 17:14:42 2009 +0100 +++ b/openide.explorer/nbproject/project.properties Mon Dec 14 17:58:10 2009 +0100 @@ -44,4 +44,4 @@ javadoc.arch=${basedir}/arch.xml javadoc.apichanges=${basedir}/apichanges.xml -spec.version.base=6.23.0 +spec.version.base=6.24.0 diff -r 43db124d472c openide.explorer/src/org/openide/explorer/view/OutlineView.java --- a/openide.explorer/src/org/openide/explorer/view/OutlineView.java Mon Dec 14 17:14:42 2009 +0100 +++ b/openide.explorer/src/org/openide/explorer/view/OutlineView.java Mon Dec 14 17:58:10 2009 +0100 @@ -118,7 +118,7 @@ public class OutlineView extends JScrollPane { /** The table */ - private Outline outline; + private OutlineViewOutline outline; /** Explorer manager, valid when this view is showing */ ExplorerManager manager; /** not null if popup menu enabled */ @@ -284,6 +284,16 @@ popupListener = null; return; } + } + + /** + * Set the tree column as sortable + * @param treeSortable true to make the tree column sortable, + * false otherwise. The tree column is sortable by default. + * @since 6.24 + */ + public void setTreeSortable(boolean treeSortable) { + outline.setTreeSortable(treeSortable); } /** Initializes the component and lookup explorer manager. @@ -882,6 +892,9 @@ private static class OutlineViewOutline extends Outline { private final PropertiesRowModel rowModel; private static final String COLUMNS_SELECTOR_HINT = "ColumnsSelectorHint"; // NOI18N + + private boolean treeSortable = true; + public OutlineViewOutline(OutlineModel mdl, PropertiesRowModel rowModel) { super(mdl); this.rowModel = rowModel; @@ -993,6 +1006,14 @@ return new OutlineViewOutlineColumn(modelIndex); } + boolean isTreeSortable() { + return this.treeSortable; + } + + void setTreeSortable(boolean treeSortable) { + this.treeSortable = treeSortable; + } + /** * Extension of ETableColumn using TableViewRowComparator as * comparator. @@ -1006,20 +1027,17 @@ } @Override public boolean isSortingAllowed() { - boolean res = super.isSortingAllowed(); - TableModel model = getModel(); - if (model.getRowCount() <= 0) { - return res; + int index = getModelIndex(); + Object sortable; + if (index > 0) { + sortable = rowModel.getPropertyValue("SortableColumn", index - 1); // NOI18N + } else { + return isTreeSortable(); } - Object sampleValue = model.getValueAt(0, getModelIndex()); - if (sampleValue instanceof Node.Property) { - Node.Property prop = (Node.Property)sampleValue; - Object sortableColumnProperty = prop.getValue("SortableColumn"); - if (sortableColumnProperty instanceof Boolean) { - return ((Boolean)sortableColumnProperty).booleanValue(); - } + if (sortable != null) { + return Boolean.TRUE.equals(sortable); } - return res; + return super.isSortingAllowed(); } @Override diff -r 43db124d472c openide.explorer/src/org/openide/explorer/view/PropertiesRowModel.java --- a/openide.explorer/src/org/openide/explorer/view/PropertiesRowModel.java Mon Dec 14 17:14:42 2009 +0100 +++ b/openide.explorer/src/org/openide/explorer/view/PropertiesRowModel.java Mon Dec 14 17:58:10 2009 +0100 @@ -333,6 +333,10 @@ return -1; } + Object getPropertyValue(String propName, int column) { + return prop[column].getValue(propName); + } + /** * Changes the value of the boolean property. */