diff --git a/platform/lang-impl/src/com/intellij/ide/scriptingContext/LangScriptingContextProvider.java b/platform/lang-impl/src/com/intellij/ide/scriptingContext/LangScriptingContextProvider.java index 1d72952a1162..33a6324db490 100644 --- a/platform/lang-impl/src/com/intellij/ide/scriptingContext/LangScriptingContextProvider.java +++ b/platform/lang-impl/src/com/intellij/ide/scriptingContext/LangScriptingContextProvider.java @@ -41,5 +41,8 @@ public abstract class LangScriptingContextProvider { @Nullable public abstract String getLibraryTypeName(OrderRootType rootType); + + @Nullable + public abstract String getDefaultDocUrl(VirtualFile file); } diff --git a/platform/lang-impl/src/com/intellij/ide/scriptingContext/ui/EditLibraryDialog.java b/platform/lang-impl/src/com/intellij/ide/scriptingContext/ui/EditLibraryDialog.java index 32cc32ee5981..7dc2ac05c2ed 100644 --- a/platform/lang-impl/src/com/intellij/ide/scriptingContext/ui/EditLibraryDialog.java +++ b/platform/lang-impl/src/com/intellij/ide/scriptingContext/ui/EditLibraryDialog.java @@ -419,13 +419,21 @@ public class EditLibraryDialog extends DialogWrapper { fireIntervalRemoved(this, index, index); } + public boolean contains(String url) { + return myDocUrls.contains(url); + } + public String[] getDocUrls() { return ArrayUtil.toStringArray(myDocUrls); } } private void specifyDocUrl() { - VirtualFile vf = Util.showSpecifyJavadocUrlDialog(contentPane); + String defaultUrl = findUnspecifiedMatchingDocUrl(myFileTableModel.getSourceFiles()); + if (defaultUrl == null) { + defaultUrl = findUnspecifiedMatchingDocUrl(myFileTableModel.getCompactFiles()); + } + VirtualFile vf = Util.showSpecifyJavadocUrlDialog(contentPane, defaultUrl != null ? defaultUrl : ""); if (vf != null && vf.isValid()) { String url = vf.getUrl(); int index = myDocUrlListModel.addUrl(url); @@ -433,6 +441,21 @@ public class EditLibraryDialog extends DialogWrapper { myDocUrlList.setSelectedIndex(index); } } + + @Override + public JComponent getPreferredFocusedComponent() { + return myLibName; + } + + @Nullable + private String findUnspecifiedMatchingDocUrl(VirtualFile[] files) { + String docUrl; + for (VirtualFile file : files) { + docUrl = myProvider.getDefaultDocUrl(file); + if (docUrl != null && !myDocUrlListModel.contains(docUrl)) return docUrl; + } + return null; + } private void removeDocUrl() { myDocUrlListModel.remove((String)myDocUrlList.getSelectedValue()); diff --git a/platform/lang-impl/src/com/intellij/openapi/roots/libraries/scripting/ScriptingLibraryManager.java b/platform/lang-impl/src/com/intellij/openapi/roots/libraries/scripting/ScriptingLibraryManager.java index 4733e71051e7..921a0ae1c703 100644 --- a/platform/lang-impl/src/com/intellij/openapi/roots/libraries/scripting/ScriptingLibraryManager.java +++ b/platform/lang-impl/src/com/intellij/openapi/roots/libraries/scripting/ScriptingLibraryManager.java @@ -147,7 +147,7 @@ public class ScriptingLibraryManager { } @Nullable - public Library createSourceLibrary(String libName, String sourceUrl, LibraryLevel libraryLevel) { + public Library createSourceLibrary(String libName, String sourceUrl, String docUrl, LibraryLevel libraryLevel) { LibraryTable libraryTable = getLibraryTable(myProject, libraryLevel); if (libraryTable == null) return null; LibraryTable.ModifiableModel libTableModel = libraryTable.getModifiableModel(); @@ -156,6 +156,9 @@ public class ScriptingLibraryManager { if (library != null) { Library.ModifiableModel libModel = library.getModifiableModel(); libModel.addRoot(sourceUrl, OrderRootType.SOURCES); + if (docUrl != null && docUrl.trim().length() > 0) { + libModel.addRoot(docUrl, OrderRootType.DOCUMENTATION); + } libModel.commit(); libTableModel.commit(); return library;