diff --git a/editor.macros/src/org/netbeans/modules/editor/macros/storage/ui/MacrosPanel.java b/editor.macros/src/org/netbeans/modules/editor/macros/storage/ui/MacrosPanel.java --- a/editor.macros/src/org/netbeans/modules/editor/macros/storage/ui/MacrosPanel.java +++ b/editor.macros/src/org/netbeans/modules/editor/macros/storage/ui/MacrosPanel.java @@ -464,7 +464,12 @@ if (DialogDisplayer.getDefault().notify(descriptor)==DialogDescriptor.OK_OPTION) { String macroName = panel.getNameValue().trim(); - return model.createMacro(MimePath.EMPTY, macroName); + final Macro macro = model.createMacro(MimePath.EMPTY, macroName); + sorter.resortAfterModelChange(); + int sel = sorter.viewIndex(model.getAllMacros().size() - 1); + tMacros.getSelectionModel().setSelectionInterval(sel, sel); + tMacros.scrollRectToVisible(tMacros.getCellRect(sel, 0, true)); + return macro; } return null; } diff --git a/editor.macros/src/org/netbeans/modules/editor/macros/storage/ui/TableSorter.java b/editor.macros/src/org/netbeans/modules/editor/macros/storage/ui/TableSorter.java --- a/editor.macros/src/org/netbeans/modules/editor/macros/storage/ui/TableSorter.java +++ b/editor.macros/src/org/netbeans/modules/editor/macros/storage/ui/TableSorter.java @@ -176,6 +176,13 @@ tableHeader.repaint(); } } + /** + * Sorts the table after the model has changed. The current sort column and + * direction is used. + */ + public final void resortAfterModelChange() { + sortingStatusChanged(); + } public void setSortingStatus(int column, int status) { Directive directive = getDirective(column); @@ -242,6 +249,10 @@ public int modelIndex(int viewIndex) { return getViewToModel()[viewIndex].modelIndex; } + + public int viewIndex(int modelIndex) { + return getModelToView()[modelIndex]; + } private int[] getModelToView() { if (modelToView == null) {