@Override
 public void reset() {
   UiNotifyConnector.doWhenFirstShown(
       getPluginTable(),
       new Runnable() {
         @Override
         public void run() {
           loadAvailablePlugins();
         }
       });
   super.reset();
 }
  @Override
  protected void installTableActions(final PluginTable pluginTable) {
    super.installTableActions(pluginTable);
    new DoubleClickListener() {
      @Override
      protected boolean onDoubleClick(MouseEvent e) {
        if (pluginTable.columnAtPoint(e.getPoint()) < 0) return false;
        if (pluginTable.rowAtPoint(e.getPoint()) < 0) return false;
        return installSelected(pluginTable);
      }
    }.installOn(pluginTable);

    pluginTable.registerKeyboardAction(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            installSelected(pluginTable);
          }
        },
        KeyStroke.getKeyStroke(KeyEvent.VK_SPACE, 0),
        JComponent.WHEN_FOCUSED);
  }
 @Override
 protected void propagateUpdates(ArrayList<IdeaPluginDescriptor> list) {
   installed.modifyPluginsList(list); // propagate updates
 }