Commit 799dc447 authored by Dmitry Jemerov's avatar Dmitry Jemerov
Browse files

API for replacing term "project" used in the UI

parent 42a95a9f
Branches unavailable Tags unavailable
No related merge requests found
Showing with 74 additions and 11 deletions
+74 -11
......@@ -672,7 +672,7 @@ public class SearchEverywhereAction extends AnAction implements CustomComponentA
UIManager.getColor("SearchEverywhere.shortcutForeground") : foregroundColor;
StringBuilder cbText = new StringBuilder("<html>");
cbText.append(IdeBundle.message("checkbox.include.non.project.items"));
cbText.append(ProjectUICustomization.replaceProjectConceptName(IdeBundle.message("checkbox.include.non.project.items")));
cbText.append(" ");
if (!UIUtil.isUnderWin10LookAndFeel()) cbText.append("<b>");
cbText.append("<font color=#").append(ColorUtil.toHex(shortcutColor)).append(">").append(getShortcut()).append("</font>");
......
......@@ -27,6 +27,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.psi.PsiElement;
import com.intellij.ui.ProjectUICustomization;
import com.intellij.util.ArrayUtil;
import com.intellij.util.containers.ContainerUtil;
import com.intellij.util.indexing.FileBasedIndex;
......@@ -68,12 +69,12 @@ public class GotoClassModel2 extends FilteringGotoByModel<Language> {
@Override
public String getCheckBoxName() {
return IdeBundle.message("checkbox.include.non.project.classes");
return ProjectUICustomization.replaceProjectConceptName(IdeBundle.message("checkbox.include.non.project.classes"));
}
@Override
public String getNotInMessage() {
return IdeBundle.message("label.no.matches.found.in.project");
return ProjectUICustomization.replaceProjectConceptName(IdeBundle.message("label.no.matches.found.in.project"));
}
@Override
......
......@@ -24,6 +24,7 @@ import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiFileSystemItem;
import com.intellij.psi.codeStyle.MinusculeMatcher;
import com.intellij.psi.codeStyle.NameUtil;
import com.intellij.ui.ProjectUICustomization;
import com.intellij.util.containers.JBIterable;
import com.intellij.util.indexing.FileBasedIndex;
import org.jetbrains.annotations.NotNull;
......@@ -94,7 +95,7 @@ public class GotoFileModel extends FilteringGotoByModel<FileType> implements Dum
if (NonProjectScopeDisablerEP.isSearchInNonProjectDisabled()) {
return null;
}
return IdeBundle.message("checkbox.include.non.project.files");
return ProjectUICustomization.replaceProjectConceptName(IdeBundle.message("checkbox.include.non.project.files"));
}
@Override
......
......@@ -26,6 +26,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.psi.PsiElement;
import com.intellij.psi.presentation.java.SymbolPresentationUtil;
import com.intellij.ui.ProjectUICustomization;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
......@@ -66,12 +67,12 @@ public class GotoSymbolModel2 extends FilteringGotoByModel<Language> {
@Override
public String getCheckBoxName() {
return IdeBundle.message("checkbox.include.non.project.symbols");
return ProjectUICustomization.replaceProjectConceptName(IdeBundle.message("checkbox.include.non.project.symbols"));
}
@Override
public String getNotInMessage() {
return IdeBundle.message("label.no.matches.found.in.project");
return ProjectUICustomization.replaceProjectConceptName(IdeBundle.message("label.no.matches.found.in.project"));
}
@Override
......
// 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.ui;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.util.text.StringUtil;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;
/**
* Allows to apply IDE-specific customizations to the terms used in platform UI features.
*/
public class ProjectUICustomization {
public static ProjectUICustomization getInstance() {
return ServiceManager.getService(ProjectUICustomization.class);
}
/**
* Returns the name to be displayed in the UI for the "project" concept (Rider changes this to "solution").
*/
public String getProjectConceptName() {
return "project";
}
public static String replaceProjectConceptName(String text) {
return text.replace("project", getInstance().getProjectConceptName());
}
public static void replaceProjectConceptName(AbstractButton component) {
component.setText(component.getText().replace("project", getInstance().getProjectConceptName()));
}
public static void replaceProjectConceptName(Border border) {
if (border instanceof TitledBorder) {
TitledBorder titledBorder = (TitledBorder)border;
titledBorder.setTitle(titledBorder.getTitle().replace("project", getInstance().getProjectConceptName()));
}
}
public static String replaceProjectConceptNameForAction(String actionName) {
String name = getInstance().getProjectConceptName();
if (name.equals("project")) {
return actionName;
}
return actionName.replace("_", "").replace("project", name).replace("Project", StringUtil.capitalize(name));
}
}
......@@ -25,6 +25,7 @@ import com.intellij.openapi.options.ConfigurationException;
import com.intellij.openapi.options.SearchableConfigurable;
import com.intellij.openapi.options.ex.ConfigurableWrapper;
import com.intellij.openapi.ui.TextFieldWithBrowseButton;
import com.intellij.ui.ProjectUICustomization;
import com.intellij.ui.components.JBRadioButton;
import com.intellij.util.PlatformUtils;
import org.jetbrains.annotations.NotNull;
......@@ -216,8 +217,15 @@ public class GeneralSettingsConfigurable extends CompositeConfigurable<Searchabl
private JBRadioButton myDisconnectJBRadioButton;
private JBRadioButton myAskJBRadioButton;
private TextFieldWithBrowseButton myProjectDirectoryTextField;
public MyComponent() { }
private JPanel myProjectOpeningPanel;
public MyComponent() {
ProjectUICustomization.replaceProjectConceptName(myChkReopenLastProject);
ProjectUICustomization.replaceProjectConceptName(myProjectOpeningPanel.getBorder());
ProjectUICustomization.replaceProjectConceptName(myOpenProjectInNewWindow);
ProjectUICustomization.replaceProjectConceptName(myOpenProjectInSameWindow);
ProjectUICustomization.replaceProjectConceptName(myConfirmWindowToOpenProject);
}
private void createUIComponents() {
myProjectDirectoryTextField = new TextFieldWithBrowseButton();
......
......@@ -181,7 +181,7 @@
<border type="none"/>
<children/>
</grid>
<grid id="dab62" layout-manager="GridLayoutManager" row-count="5" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<grid id="dab62" binding="myProjectOpeningPanel" layout-manager="GridLayoutManager" row-count="5" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
......
......@@ -26,6 +26,7 @@ import com.intellij.openapi.project.DumbAware;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame;
import com.intellij.projectImport.ProjectAttachProcessor;
import com.intellij.ui.ProjectUICustomization;
public class CloseProjectAction extends AnAction implements DumbAware {
@Override
......@@ -43,10 +44,10 @@ public class CloseProjectAction extends AnAction implements DumbAware {
Project project = event.getData(CommonDataKeys.PROJECT);
presentation.setEnabled(project != null);
if (ProjectAttachProcessor.canAttachToProject() && project != null && ModuleManager.getInstance(project).getModules().length > 1) {
presentation.setText(IdeBundle.message("action.close.projects.in.current.window"));
presentation.setText(ProjectUICustomization.replaceProjectConceptNameForAction(IdeBundle.message("action.close.projects.in.current.window")));
}
else {
presentation.setText(IdeBundle.message("action.close.project"));
presentation.setText(ProjectUICustomization.replaceProjectConceptNameForAction(IdeBundle.message("action.close.project")));
}
}
}
......@@ -294,6 +294,8 @@
<postStartupActivity implementation="com.intellij.internal.IconsLoadTime$StartupLoadTime"/>
<applicationService serviceImplementation="com.intellij.ui.ProjectUICustomization"/>
<!-- General -->
<applicationConfigurable groupId="appearance" groupWeight="120" key="title.general" bundle="messages.IdeBundle" id="preferences.general"
instance="com.intellij.ide.GeneralSettingsConfigurable"/>
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment