2 * Copyright 2000-2014 JetBrains s.r.o.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package com.intellij.openapi.updateSettings.impl.pluginsAdvertisement;
18 import com.intellij.ide.plugins.*;
19 import com.intellij.openapi.diagnostic.Logger;
20 import com.intellij.openapi.project.Project;
21 import com.intellij.openapi.ui.DialogWrapper;
22 import com.intellij.openapi.updateSettings.impl.DetectedPluginsPanel;
23 import com.intellij.openapi.updateSettings.impl.PluginDownloader;
24 import com.intellij.ui.TableUtil;
25 import org.jetbrains.annotations.Nullable;
28 import java.io.IOException;
34 public class PluginsAdvertiserDialog extends DialogWrapper {
35 private static final Logger LOG = Logger.getInstance("#" + PluginsAdvertiserDialog.class.getName());
37 @Nullable private final Project myProject;
38 private final PluginDownloader[] myUploadedPlugins;
39 private final List<IdeaPluginDescriptor> myAllPlugins;
40 private final Set<String> mySkippedPlugins = new HashSet<String>();
42 PluginsAdvertiserDialog(@Nullable Project project, PluginDownloader[] plugins, List<IdeaPluginDescriptor> allPlugins) {
45 Arrays.sort(plugins, new Comparator<PluginDownloader>() {
47 public int compare(PluginDownloader o1, PluginDownloader o2) {
48 return o1.getPluginName().compareToIgnoreCase(o2.getPluginName());
51 myUploadedPlugins = plugins;
52 myAllPlugins = allPlugins;
53 setTitle("Choose Plugins to Install or Enable");
59 protected JComponent createCenterPanel() {
60 final DetectedPluginsPanel foundPluginsPanel = new DetectedPluginsPanel() {
62 protected Set<String> getSkippedPlugins() {
63 return mySkippedPlugins;
67 for (PluginDownloader uploadedPlugin : myUploadedPlugins) {
68 foundPluginsPanel.add(uploadedPlugin);
70 TableUtil.ensureSelectionExists(foundPluginsPanel.getEntryTable());
71 return foundPluginsPanel;
75 protected void doOKAction() {
76 final Set<String> pluginsToEnable = new HashSet<String>();
77 final List<PluginNode> nodes = new ArrayList<PluginNode>();
78 for (PluginDownloader downloader : myUploadedPlugins) {
79 String pluginId = downloader.getPluginId();
80 if (!mySkippedPlugins.contains(pluginId)) {
81 pluginsToEnable.add(pluginId);
82 if (!PluginManagerCore.getDisabledPlugins().contains(pluginId)) {
83 final PluginNode pluginNode = PluginDownloader.createPluginNode(null, downloader);
84 if (pluginNode != null) {
85 nodes.add(pluginNode);
90 final Runnable notifyRunnable = new Runnable() {
93 PluginManagerMain.notifyPluginsWereInstalled(null, myProject);
96 for (String pluginId : pluginsToEnable) {
97 PluginManagerCore.enablePlugin(pluginId);
99 if (!nodes.isEmpty()) {
101 PluginManagerMain.downloadPlugins(nodes, myAllPlugins, notifyRunnable, null);
103 catch (IOException e) {
108 if (!pluginsToEnable.isEmpty()) {
109 notifyRunnable.run();