import com.intellij.openapi.util.*;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.ui.JBColor;
+import com.intellij.util.ArrayUtil;
+import com.intellij.util.Function;
import com.intellij.util.PlatformUtils;
+import com.intellij.util.containers.ContainerUtil;
import org.jdom.Document;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
private String myHelpRootName = "idea";
private String myWebHelpUrl = "https://www.jetbrains.com/idea/webhelp/";
private List<PluginChooserPage> myPluginChooserPages = new ArrayList<PluginChooserPage>();
+ private String[] myEssentialPluginsIds;
private String myStatisticsSettingsUrl;
private String myStatisticsServiceUrl;
private String myStatisticsServiceKey;
private static final String STEPS_PROVIDER = "provider";
private static final String ELEMENT_EVALUATION = "evaluation";
private static final String ATTRIBUTE_EVAL_LICENSE_URL = "license-url";
+ private static final String ESSENTIAL_PLUGIN = "essential-plugin";
private static final String DEFAULT_PLUGINS_HOST = "http://plugins.jetbrains.com";
myPluginChooserPages.add(new PluginChooserPageImpl((Element) child));
}
+ List<Element> essentialPluginsElements = JDOMUtil.getChildren(parentNode, ESSENTIAL_PLUGIN);
+ Collection<String> essentialPluginsIds = ContainerUtil.mapNotNull(essentialPluginsElements, new Function<Element, String>() {
+ @Override
+ public String fun(Element element) {
+ String id = element.getTextTrim();
+ return StringUtil.isNotEmpty(id) ? id : null;
+ }
+ });
+ myEssentialPluginsIds = ArrayUtil.toStringArray(essentialPluginsIds);
+
Element statisticsElement = parentNode.getChild(ELEMENT_STATISTICS);
if (statisticsElement != null) {
myStatisticsSettingsUrl = statisticsElement.getAttributeValue(ATTRIBUTE_STATISTICS_SETTINGS);
return myPluginChooserPages;
}
+ @Override
+ public boolean isEssentialPlugin(@NotNull String pluginId) {
+ return PluginManagerCore.CORE_PLUGIN_ID.equals(pluginId) || ArrayUtil.contains(pluginId, myEssentialPluginsIds);
+ }
+
@Override
@NotNull
public String getComponentName() {
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ApplicationNamesInfo;
import com.intellij.openapi.application.ex.ApplicationEx;
+import com.intellij.openapi.application.ex.ApplicationInfoEx;
import com.intellij.openapi.application.ex.ApplicationManagerEx;
import com.intellij.openapi.diagnostic.*;
import com.intellij.openapi.extensions.ExtensionException;
}
PluginId pluginId = findPluginId(message.getThrowable());
- return pluginId != null;
+ return pluginId != null && !ApplicationInfoEx.getInstanceEx().isEssentialPlugin(pluginId.getIdString());
}
private void updateCountLabel() {
*/
package com.intellij.ide.plugins;
+import com.intellij.openapi.application.ex.ApplicationInfoEx;
import com.intellij.openapi.extensions.PluginId;
import com.intellij.openapi.ui.Messages;
import com.intellij.openapi.util.Condition;
final EnabledPluginInfo enabledColumn = new EnabledPluginInfo();
columns = SystemInfo.isMac ? new ColumnInfo[]{infoColumn, enabledColumn, new Spacer()} : new ColumnInfo[]{infoColumn, enabledColumn};
+ final ApplicationInfoEx appInfo = ApplicationInfoEx.getInstanceEx();
view.addAll(ContainerUtil.filter(PluginManagerCore.getPlugins(), new Condition<IdeaPluginDescriptor>() {
@Override
public boolean value(IdeaPluginDescriptor descriptor) {
- return !PluginManagerCore.CORE_PLUGIN_ID.equals(descriptor.getPluginId().getIdString());
+ return !appInfo.isEssentialPlugin(descriptor.getPluginId().getIdString());
}
}));
view.addAll(ourState.getInstalledPlugins());