From 9d7c7029e8b2e81d33cf9b92d3c1f8bb331a3531 Mon Sep 17 00:00:00 2001 From: Rustam Vishnyakov Date: Sat, 9 Oct 2010 18:47:31 +0400 Subject: [PATCH] WI-2477: Ability to specify to a file a JavaScript library/file to autocomplete from (in progress) --- .../scriptingContext/ui/EditLibraryDialog.java | 8 ++++++++ .../ui/ScriptingLibrariesPanel.java | 2 +- .../ui/ScriptingLibraryTableModel.java | 15 +++++++++++++-- 3 files changed, 22 insertions(+), 3 deletions(-) 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 746e65bed0d7..ee7429ff9b26 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 @@ -146,6 +146,10 @@ public class EditLibraryDialog extends DialogWrapper { fireTableDataChanged(); } } + + public VirtualFile[] getFiles() { + return files.toArray(new VirtualFile[files.size()]); + } } private void updateSelection() { @@ -162,4 +166,8 @@ public class EditLibraryDialog extends DialogWrapper { private void removeSelected() { myFileTableModel.removeFile(mySelectedFile); } + + public VirtualFile[] getFiles() { + return myFileTableModel.getFiles(); + } } diff --git a/platform/lang-impl/src/com/intellij/ide/scriptingContext/ui/ScriptingLibrariesPanel.java b/platform/lang-impl/src/com/intellij/ide/scriptingContext/ui/ScriptingLibrariesPanel.java index 2beb20cb7faf..a387873b712c 100644 --- a/platform/lang-impl/src/com/intellij/ide/scriptingContext/ui/ScriptingLibrariesPanel.java +++ b/platform/lang-impl/src/com/intellij/ide/scriptingContext/ui/ScriptingLibrariesPanel.java @@ -82,7 +82,7 @@ public class ScriptingLibrariesPanel { EditLibraryDialog editLibDialog = new EditLibraryDialog(myProvider, myProject); editLibDialog.show(); if (editLibDialog.isOK()) { - myLibTableModel.createLibrary(editLibDialog.getLibName()); + myLibTableModel.createLibrary(editLibDialog.getLibName(), editLibDialog.getFiles()); } } diff --git a/platform/lang-impl/src/com/intellij/ide/scriptingContext/ui/ScriptingLibraryTableModel.java b/platform/lang-impl/src/com/intellij/ide/scriptingContext/ui/ScriptingLibraryTableModel.java index 474645fddba3..65ea81993887 100644 --- a/platform/lang-impl/src/com/intellij/ide/scriptingContext/ui/ScriptingLibraryTableModel.java +++ b/platform/lang-impl/src/com/intellij/ide/scriptingContext/ui/ScriptingLibraryTableModel.java @@ -15,8 +15,11 @@ */ package com.intellij.ide.scriptingContext.ui; +import com.intellij.openapi.roots.OrderRootType; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryTable; +import com.intellij.openapi.vfs.VfsUtil; +import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.Nullable; import javax.swing.table.AbstractTableModel; @@ -29,10 +32,12 @@ public class ScriptingLibraryTableModel extends AbstractTableModel { private static final int LIB_NAME_COL = 0; private LibraryTable myLibTable; + private LibraryTable.ModifiableModel myLibTableModel; private boolean myTableChanged; public ScriptingLibraryTableModel(LibraryTable libTable) { myLibTable = libTable; + myLibTableModel = libTable.getModifiableModel(); myTableChanged = false; } @@ -71,8 +76,14 @@ public class ScriptingLibraryTableModel extends AbstractTableModel { return "?"; } - public void createLibrary(String name) { - myLibTable.createLibrary(name); + public void createLibrary(String name, VirtualFile[] files) { + Library lib = myLibTable.createLibrary(name); + Library.ModifiableModel libModel = lib.getModifiableModel(); + for (VirtualFile file : files) { + libModel.addRoot(file, OrderRootType.CLASSES); + } + libModel.commit(); + myLibTableModel.commit(); fireLibTableChanged(); }