diff --git a/platform/platform-api/src/com/intellij/ui/components/fields/ExtendableTextComponent.java b/platform/platform-api/src/com/intellij/ui/components/fields/ExtendableTextComponent.java index f2efc6a1da387..77be0a624e5b7 100644 --- a/platform/platform-api/src/com/intellij/ui/components/fields/ExtendableTextComponent.java +++ b/platform/platform-api/src/com/intellij/ui/components/fields/ExtendableTextComponent.java @@ -2,6 +2,7 @@ package com.intellij.ui.components.fields; import com.intellij.ui.scale.JBUIScale; +import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import javax.swing.*; @@ -61,7 +62,7 @@ static Extension create(@NotNull Icon icon, String tooltip, Runnable action) { return create(icon, icon, tooltip, action); } - static Extension create(@NotNull Icon defaultIcon, @NotNull Icon hoveredIcon, String tooltip, Runnable action) { + static Extension create(@NotNull Icon defaultIcon, @NotNull Icon hoveredIcon, @Nls String tooltip, Runnable action) { return new Extension() { @Override public Icon getIcon(boolean hovered) { diff --git a/platform/platform-api/src/com/intellij/ui/components/labels/LinkLabel.java b/platform/platform-api/src/com/intellij/ui/components/labels/LinkLabel.java index e777854e12b61..1559a09ab7e3e 100644 --- a/platform/platform-api/src/com/intellij/ui/components/labels/LinkLabel.java +++ b/platform/platform-api/src/com/intellij/ui/components/labels/LinkLabel.java @@ -12,6 +12,7 @@ import com.intellij.util.ui.UIUtil; import com.intellij.util.ui.accessibility.ScreenReader; import gnu.trove.THashSet; +import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -47,16 +48,16 @@ public LinkLabel() { this("", AllIcons.Ide.Link); } - public LinkLabel(String text, @Nullable Icon icon) { + public LinkLabel(@Nls String text, @Nullable Icon icon) { this(text, icon, null, null, null); } - public LinkLabel(String text, @Nullable Icon icon, @Nullable LinkListener aListener) { + public LinkLabel(@Nls String text, @Nullable Icon icon, @Nullable LinkListener aListener) { this(text, icon, aListener, null, null); } @NotNull - public static LinkLabel create(@Nullable String text, @Nullable Runnable action) { + public static LinkLabel create(@Nullable @Nls String text, @Nullable Runnable action) { return new LinkLabel<>(text, null, action == null ? null : new LinkListener() { @Override public void linkSelected(LinkLabel source, Object linkData) { @@ -65,11 +66,11 @@ public void linkSelected(LinkLabel source, Object linkData) { }, null, null); } - public LinkLabel(String text, @Nullable Icon icon, @Nullable LinkListener aListener, @Nullable T aLinkData) { + public LinkLabel(@Nls String text, @Nullable Icon icon, @Nullable LinkListener aListener, @Nullable T aLinkData) { this(text, icon, aListener, aLinkData, null); } - public LinkLabel(String text, + public LinkLabel(@Nls String text, @Nullable Icon icon, @Nullable LinkListener aListener, @Nullable T aLinkData, diff --git a/platform/platform-api/src/com/intellij/util/ui/StatusText.java b/platform/platform-api/src/com/intellij/util/ui/StatusText.java index a9cf2a9a03095..88804a72198e1 100644 --- a/platform/platform-api/src/com/intellij/util/ui/StatusText.java +++ b/platform/platform-api/src/com/intellij/util/ui/StatusText.java @@ -10,6 +10,7 @@ import com.intellij.ui.scale.JBUIScale; import com.intellij.util.ObjectUtils; import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -178,11 +179,11 @@ public String getText() { return myText; } - public StatusText setText(String text) { + public StatusText setText(@Nls String text) { return setText(text, DEFAULT_ATTRIBUTES); } - public StatusText setText(String text, SimpleTextAttributes attrs) { + public StatusText setText(@Nls String text, SimpleTextAttributes attrs) { return clear().appendText(text, attrs); } @@ -230,7 +231,7 @@ public void setIsVerticalFlow(boolean isVerticalFlow) { } @NotNull - public StatusText appendSecondaryText(@NotNull String text, @NotNull SimpleTextAttributes attrs, @Nullable ActionListener listener) { + public StatusText appendSecondaryText(@NotNull @Nls String text, @NotNull SimpleTextAttributes attrs, @Nullable ActionListener listener) { mySecondaryComponent.append(text, attrs); mySecondaryListeners.add(listener); if (listener != null) { diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerConfigurable.java b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerConfigurable.java index f0016cd92a949..679e2a4abe3d2 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerConfigurable.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerConfigurable.java @@ -49,6 +49,7 @@ import com.intellij.util.containers.ContainerUtil; import com.intellij.util.net.HttpConfigurable; import com.intellij.util.ui.*; +import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -250,7 +251,7 @@ public void actionPerformed(@NotNull AnActionEvent e) { return actions; } - private static void showRightBottomPopup(@NotNull Component component, @NotNull String title, @NotNull ActionGroup group) { + private static void showRightBottomPopup(@NotNull Component component, @NotNull @Nls String title, @NotNull ActionGroup group) { DefaultActionGroup actions = new GroupByActionGroup(); actions.addSeparator(" " + title); actions.addAll(group); @@ -367,10 +368,10 @@ protected JComponent createPluginsPanel(@NotNull Consumer> customRepositoriesMap = pair.second; try { - addGroup(groups, allRepositoriesMap, "Featured", "is_featured_search=true", "/sortBy:featured"); - addGroup(groups, allRepositoriesMap, "New and Updated", "orderBy=update+date", "/sortBy:updated"); - addGroup(groups, allRepositoriesMap, "Top Downloads", "orderBy=downloads", "/sortBy:downloads"); - addGroup(groups, allRepositoriesMap, "Top Rated", "orderBy=rating", "/sortBy:rating"); + addGroup(groups, allRepositoriesMap, IdeBundle.message("plugins.configurable.featured"), "is_featured_search=true", "/sortBy:featured"); + addGroup(groups, allRepositoriesMap, IdeBundle.message("plugins.configurable.new.and.updated"), "orderBy=update+date", "/sortBy:updated"); + addGroup(groups, allRepositoriesMap, IdeBundle.message("plugins.configurable.top.downloads"), "orderBy=downloads", "/sortBy:downloads"); + addGroup(groups, allRepositoriesMap, IdeBundle.message("plugins.configurable.top.rated"), "orderBy=rating", "/sortBy:rating"); } catch (IOException e) { PluginManagerMain.LOG @@ -380,7 +381,7 @@ protected JComponent createPluginsPanel(@NotNull Consumer allDescriptors = customRepositoriesMap.get(host); if (allDescriptors != null) { - addGroup(groups, "Repository: " + host, "/repository:\"" + host + "\"", descriptors -> { + addGroup(groups, IdeBundle.message("plugins.configurable.repository.0", host), "/repository:\"" + host + "\"", descriptors -> { int allSize = allDescriptors.size(); descriptors.addAll(ContainerUtil.getFirstItems(allDescriptors, ITEMS_PER_GROUP)); PluginsGroup.sortByName(descriptors); @@ -414,7 +415,7 @@ protected JComponent createPluginsPanel(@NotNull Consumer myMarketplaceRunnable.run()); @@ -539,7 +540,7 @@ private Icon getIcon() { //noinspection unchecked myMarketplaceSortByAction.setListener( - (component, __) -> showRightBottomPopup(component.getParent().getParent(), "Sort By", myMarketplaceSortByGroup), null); + (component, __) -> showRightBottomPopup(component.getParent().getParent(), IdeBundle.message("plugins.configurable.sort.by"), myMarketplaceSortByGroup), null); myMarketplaceSortByCallback = updateAction -> { MarketplaceSortByAction removeAction = null; @@ -716,8 +717,9 @@ protected void handleQuery(@NotNull String query, @NotNull PluginsGroup result) catch (IOException e) { PluginManagerMain.LOG.info(e); - ApplicationManager.getApplication().invokeLater(() -> myPanel.getEmptyText().setText("Search result are not loaded.") - .appendSecondaryText("Check the internet connection.", StatusText.DEFAULT_ATTRIBUTES, null), ModalityState.any()); + ApplicationManager.getApplication().invokeLater(() -> myPanel.getEmptyText().setText( + IdeBundle.message("plugins.configurable.search.result.not.loaded")) + .appendSecondaryText(IdeBundle.message("plugins.configurable.check.internet"), StatusText.DEFAULT_ATTRIBUTES, null), ModalityState.any()); } } }; @@ -735,14 +737,15 @@ private void createInstalledTab() { } myInstalledTab = new PluginsTab() { + @SuppressWarnings("HardCodedStringLiteral") @Override protected void createSearchTextField(int flyDelay) { super.createSearchTextField(flyDelay); JBTextField textField = mySearchTextField.getTextEditor(); textField.putClientProperty("search.extension", ExtendableTextComponent.Extension - .create(AllIcons.Actions.More, AllIcons.Actions.More, "Search Options", // TODO: icon - () -> showRightBottomPopup(textField, "Show", myInstalledSearchGroup))); + .create(AllIcons.Actions.More, AllIcons.Actions.More, IdeBundle.message("plugins.configurable.search.options"), // TODO: icon + () -> showRightBottomPopup(textField, IdeBundle.message("plugins.configurable.show"), myInstalledSearchGroup))); textField.putClientProperty("JTextField.variant", null); textField.putClientProperty("JTextField.variant", "search"); @@ -773,7 +776,7 @@ protected JComponent createPluginsPanel(@NotNull Consumer> bundledGroups = new HashMap<>(); - PluginsGroup bundled = new PluginsGroup("Bundled"); + PluginsGroup bundled = new PluginsGroup(IdeBundle.message("plugins.configurable.bundled")); ApplicationInfoEx appInfo = ApplicationInfoEx.getInstanceEx(); int bundledEnabled = 0; @@ -794,6 +797,7 @@ protected JComponent createPluginsPanel(@NotNull Consumer groupDescriptors = bundledGroups.get(category); if (groupDescriptors == null) { bundledGroups.put(category, groupDescriptors = new ArrayList<>()); @@ -868,7 +872,7 @@ public void titleWithCount(int enabled) { } ContainerUtil.sort(groups, (o1, o2) -> StringUtil.compare(o1.title, o2.title, true)); - PluginsGroup otherGroup = ContainerUtil.find(groups, group -> group.title.equals("Other Bundled")); + PluginsGroup otherGroup = ContainerUtil.find(groups, group -> group.title.equals(otherCategoryTitle)); if (otherGroup != null) { groups.remove(otherGroup); groups.add(otherGroup); @@ -1006,8 +1010,8 @@ protected void handleAttribute(@NotNull String name, @NotNull String value) { myInstalledSearchPanel = new SearchResultPanel(installedController, panel, 0, 0) { @Override protected void setEmptyText() { - myPanel.getEmptyText().setText("Nothing found."); - myPanel.getEmptyText().appendSecondaryText("Search in Marketplace", SimpleTextAttributes.LINK_PLAIN_ATTRIBUTES, + myPanel.getEmptyText().setText(IdeBundle.message("plugins.configurable.nothing.found")); + myPanel.getEmptyText().appendSecondaryText(IdeBundle.message("plugins.configurable.search.in.marketplace"), SimpleTextAttributes.LINK_PLAIN_ATTRIBUTES, e -> myTabHeaderComponent.setSelectionWithEvents(MARKETPLACE_TAB)); } @@ -1561,7 +1565,7 @@ private Pair, Map groups, - @NotNull String name, + @NotNull @Nls String name, @NotNull String showAllQuery, @NotNull ThrowableNotNullFunction, Boolean, ? extends IOException> function) throws IOException { @@ -1569,7 +1573,7 @@ private void addGroup(@NotNull List groups, if (Boolean.TRUE.equals(function.fun(group.descriptors))) { //noinspection unchecked - group.rightAction = new LinkLabel("Show All", null, myMarketplaceTab.mySearchListener, showAllQuery); + group.rightAction = new LinkLabel(IdeBundle.message("plugins.configurable.show.all"), null, myMarketplaceTab.mySearchListener, showAllQuery); group.rightAction.setBorder(JBUI.Borders.emptyRight(5)); } @@ -1580,7 +1584,7 @@ private void addGroup(@NotNull List groups, private void addGroup(@NotNull List groups, @NotNull Map allRepositoriesMap, - @NotNull String name, + @NotNull @Nls String name, @NotNull String query, @NotNull String showAllQuery) throws IOException { addGroup(groups, name, showAllQuery, descriptors -> PluginRepositoryRequests.loadPlugins(descriptors, allRepositoriesMap, query)); diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/newui/InstallButton.java b/platform/platform-impl/src/com/intellij/ide/plugins/newui/InstallButton.java index 1a72e08a0b670..785357c168417 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/newui/InstallButton.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/newui/InstallButton.java @@ -1,8 +1,10 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ide.plugins.newui; +import com.intellij.ide.IdeBundle; import com.intellij.ide.plugins.PluginManagerConfigurable; import com.intellij.ui.JBColor; +import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.Nullable; import java.awt.*; @@ -44,7 +46,7 @@ public InstallButton(boolean fill) { } protected void setTextAndSize() { - setText("Install"); + setText(IdeBundle.message("action.AnActionButton.text.install")); setWidth72(this); } @@ -53,7 +55,7 @@ public void setEnabled(boolean b) { super.setEnabled(b); } - public void setEnabled(boolean enabled, @Nullable String statusText) { + public void setEnabled(boolean enabled, @Nullable @Nls String statusText) { super.setEnabled(enabled); if (enabled) { setTextAndSize(); diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/newui/ListPluginComponent.java b/platform/platform-impl/src/com/intellij/ide/plugins/newui/ListPluginComponent.java index 4366cb634c6cc..c836b8d43d7d1 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/newui/ListPluginComponent.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/newui/ListPluginComponent.java @@ -2,6 +2,7 @@ package com.intellij.ide.plugins.newui; import com.intellij.icons.AllIcons; +import com.intellij.ide.IdeBundle; import com.intellij.ide.plugins.*; import com.intellij.openapi.actionSystem.*; import com.intellij.openapi.application.ApplicationManager; @@ -152,7 +153,8 @@ private void createButtons() { myInstallButton .addActionListener(e -> myPluginModel.installOrUpdatePlugin(this, myPlugin, null, ModalityState.stateForComponent(myInstallButton))); - myInstallButton.setEnabled(PluginManagerCore.getPlugin(myPlugin.getPluginId()) == null, "Installed"); + myInstallButton.setEnabled(PluginManagerCore.getPlugin(myPlugin.getPluginId()) == null, + IdeBundle.message("plugin.status.installed")); ColorButton.setWidth72(myInstallButton); } } @@ -234,7 +236,8 @@ private void createMetricsPanel() { } } else { - String version = !myPlugin.isBundled() || myPlugin.allowBundledUpdate() ? myPlugin.getVersion() : "bundled"; + String version = !myPlugin.isBundled() || myPlugin.allowBundledUpdate() ? myPlugin.getVersion() : IdeBundle.message("plugin.status.bundled"); + if (!StringUtil.isEmptyOrSpaces(version)) { myVersion = createRatingLabel(panel, version, null); } @@ -480,11 +483,11 @@ public void hideProgress(boolean success, boolean restartRequired) { enableRestart(); } else if (myInstallButton != null) { - myInstallButton.setEnabled(false, "Installed"); + myInstallButton.setEnabled(false, IdeBundle.message("plugin.status.installed")); } else if (myUpdateButton != null) { myUpdateButton.setEnabled(false); - myUpdateButton.setText("Installed"); + myUpdateButton.setText(IdeBundle.message("plugin.status.installed")); } } diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginsGroup.java b/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginsGroup.java index 38c6e9a5bc2b8..15002b4b22730 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginsGroup.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/newui/PluginsGroup.java @@ -5,6 +5,7 @@ import com.intellij.openapi.util.text.StringUtil; import com.intellij.ui.components.labels.LinkLabel; import com.intellij.util.containers.ContainerUtil; +import org.jetbrains.annotations.Nls; import org.jetbrains.annotations.NotNull; import javax.swing.*; @@ -24,7 +25,7 @@ public class PluginsGroup { public UIPluginGroup ui; public Runnable clearCallback; - public PluginsGroup(@NotNull String title) { + public PluginsGroup(@NotNull @Nls String title) { myTitlePrefix = title; this.title = title; } diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/newui/RestartButton.java b/platform/platform-impl/src/com/intellij/ide/plugins/newui/RestartButton.java index 571f9476e2d32..522d0ce84b0a7 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/newui/RestartButton.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/newui/RestartButton.java @@ -1,6 +1,7 @@ // Copyright 2000-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ide.plugins.newui; +import com.intellij.ide.IdeBundle; import com.intellij.ide.plugins.PluginManagerConfigurable; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.options.newEditor.SettingsDialog; @@ -32,6 +33,6 @@ public RestartButton(@NotNull MyPluginModel pluginModel) { @Override protected void setTextAndSize() { - setText("Restart IDE"); + setText(IdeBundle.message("plugins.configurable.restart.ide.button")); } } \ No newline at end of file diff --git a/platform/platform-impl/src/com/intellij/ide/plugins/newui/UpdateButton.java b/platform/platform-impl/src/com/intellij/ide/plugins/newui/UpdateButton.java index 09b1aba47dff6..b262d198fdd2d 100644 --- a/platform/platform-impl/src/com/intellij/ide/plugins/newui/UpdateButton.java +++ b/platform/platform-impl/src/com/intellij/ide/plugins/newui/UpdateButton.java @@ -1,6 +1,7 @@ // Copyright 2000-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.ide.plugins.newui; +import com.intellij.ide.IdeBundle; import com.intellij.ui.JBColor; import java.awt.*; @@ -19,7 +20,7 @@ public UpdateButton() { setBgColor(BackgroundColor); setBorderColor(BorderColor); - setText("Update"); + setText(IdeBundle.message("plugins.configurable.update.button")); setWidth72(this); } } \ No newline at end of file diff --git a/platform/platform-resources-en/src/messages/IdeBundle.properties b/platform/platform-resources-en/src/messages/IdeBundle.properties index 586b47c795fd7..9df79bcf9b058 100644 --- a/platform/platform-resources-en/src/messages/IdeBundle.properties +++ b/platform/platform-resources-en/src/messages/IdeBundle.properties @@ -551,6 +551,7 @@ progress.download.plugins=Downloading Plugins button.http.proxy.settings=&HTTP Proxy Settings... group.vendor=Vendor plugin.status.installed=Installed +plugin.status.bundled=bundled progress.downloading.plugin=Downloading plugin ''{0}'' error.cannot.create.temp.dir=Unable to create temp directory ''{0}'' error.connection.failed.with.http.code.N=Connection failed with HTTP code {0} @@ -1759,4 +1760,24 @@ plugins.configurable.disable.all.downloaded=Disable All Downloaded Plugins plugins.configurable.enable.all.downloaded=Enable All Downloaded Plugins plugins.configurable.update.available=Update Available plugins.configurable.disable.all=Disable All -plugins.configurable.enable.all=Enable All \ No newline at end of file +plugins.configurable.enable.all=Enable All +plugins.configurable.show=Show +plugins.configurable.search.options=Search Options +plugins.configurable.other.bundled=Other Bundled +plugins.configurable.bundled=Bundled +plugins.configurable.downloaded=Downloaded +plugins.configurable.installing=Installing +plugins.configurable.sort.by=Sort By +plugins.configurable.show.all=Show All +plugins.configurable.top.rated=Top Rated +plugins.configurable.top.downloads=Top Downloads +plugins.configurable.new.and.updated=New and Updated +plugins.configurable.featured=Featured +plugins.configurable.repository.0=Repository: {0} +plugins.configurable.search.in.marketplace=Search in Marketplace +plugins.configurable.nothing.found=Nothing found. +plugins.configurable.check.internet=Check the internet connection. +plugins.configurable.search.result.not.loaded=Search result are not loaded. +plugins.configurable.marketplace.plugins.not.loaded=Marketplace plugins are not loaded. +plugins.configurable.restart.ide.button=Restart IDE +plugins.configurable.update.button=Update \ No newline at end of file