public void actionPerformed(ActionEvent e) {
   int index = tablePlugins.getSelectedRow();
   CompilerPlugin plugin = (CompilerPlugin) getPluginsModel().getItem(index);
   EditPathDialog dialog = new EditPathDialog(myEditorContext.getProject(), CHOOSER_DESCRIPTOR);
   dialog.setPath(plugin.path());
   dialog.show();
   if (dialog.isOK()) {
     String path =
         CompilerPlugin.pathTo(new File(dialog.getPath()), myEditorContext.getModule());
     myPlugins.set(index, new CompilerPlugin(path, myEditorContext.getModule()));
     getPluginsModel().fireTableRowsUpdated(index, index);
   }
 }
  private void update(ConfigurationData data) {
    data.setBasePackage(basePackageField.getText());
    data.setFsc(myFSCRadioButton.isSelected());
    data.setCompilerLibraryName(getCompilerLibraryName());
    data.setCompilerLibraryLevel(getCompilerLibraryLevel());

    try {
      data.setMaximumHeapSize(Integer.parseInt(myMaximumHeapSize.getText().trim()));
    } catch (NumberFormatException e) {
      data.setMaximumHeapSize(myData.getMaximumHeapSize());
    }

    data.setVmOptions(myVmParameters.getText().trim());

    data.setWarnings(myEnableWarnings.isSelected());
    data.setDeprecationWarnings(myDeprecationWarnings.isSelected());
    data.setUncheckedWarnings(myUncheckedWarnings.isSelected());
    data.setOptimiseBytecode(myOptimiseBytecode.isSelected());
    data.setExplainTypeErrors(myExplainTypeErrors.isSelected());
    data.setContinuations(myEnableContinuations.isSelected());

    data.setDebuggingInfoLevel((DebuggingInfoLevel) myDebuggingInfoLevel.getSelectedItem());
    data.setCompilerOptions(myCompilerOptions.getText().trim());

    data.setPluginPaths(CompilerPlugin.toPaths(myPlugins));

    updateCheckboxesState();
  }
  public void reset() {
    basePackageField.setText(myData.getBasePackage());
    myFSCRadioButton.setSelected(myData.getFsc());
    myRunSeparateCompilerRadioButton.setSelected(!myData.getFsc());
    updateLibrariesList();
    setCompilerLibraryById(
        new LibraryId(myData.getCompilerLibraryName(), myData.getCompilerLibraryLevel()));
    myMaximumHeapSize.setText(Integer.toString(myData.getMaximumHeapSize()));
    myVmParameters.setText(myData.getVmOptions());

    myEnableWarnings.setSelected(myData.getWarnings());
    myDeprecationWarnings.setSelected(myData.getDeprecationWarnings());
    myUncheckedWarnings.setSelected(myData.getUncheckedWarnings());
    myOptimiseBytecode.setSelected(myData.getOptimiseBytecode());
    myExplainTypeErrors.setSelected(myData.getExplainTypeErrors());
    myEnableContinuations.setSelected(myData.getContinuations());

    myDebuggingInfoLevel.setSelectedItem(myData.getDebuggingInfoLevel());
    myCompilerOptions.setText(myData.getCompilerOptions());

    myPlugins =
        new ArrayList(
            CompilerPlugin.fromPaths(myData.getPluginPaths(), myEditorContext.getModule()));
    getPluginsModel().setItems(myPlugins);
  }
 public void actionPerformed(ActionEvent e) {
   VirtualFile[] files =
       FileChooser.chooseFiles(myEditorContext.getProject(), CHOOSER_DESCRIPTOR);
   tablePlugins.clearSelection();
   for (VirtualFile file : files) {
     String path =
         CompilerPlugin.pathTo(VfsUtil.virtualToIoFile(file), myEditorContext.getModule());
     CompilerPlugin item = new CompilerPlugin(path, myEditorContext.getModule());
     getPluginsModel().addRow(item);
     tablePlugins.addSelection(item);
   }
   tablePlugins.requestFocusInWindow();
 }
 private static ValidationResult checkContinuationsPlugin(List<CompilerPlugin> plugins) {
   for (CompilerPlugin plugin : plugins) {
     if ("continuations".equals(plugin.name())) return ValidationResult.OK;
   }
   return new ValidationResult("No continuations compiler plugin jar added");
 }