diff --git a/images/src/META-INF/ImagesPlugin.xml b/images/src/META-INF/ImagesPlugin.xml index 2c234ffe0e34..ef623446c56a 100644 --- a/images/src/META-INF/ImagesPlugin.xml +++ b/images/src/META-INF/ImagesPlugin.xml @@ -4,7 +4,7 @@ - + extends AbstractExten @Attribute("id") public String id; + @Attribute("groupId") + public String groupId; /** Marks project level configurables that do not apply to the default project. */ @Attribute("nonDefaultProject") diff --git a/platform/platform-impl/src/com/intellij/ide/actions/ShowSettingsUtilImpl.java b/platform/platform-impl/src/com/intellij/ide/actions/ShowSettingsUtilImpl.java index 1e135e707e0f..4df11f7261ca 100644 --- a/platform/platform-impl/src/com/intellij/ide/actions/ShowSettingsUtilImpl.java +++ b/platform/platform-impl/src/com/intellij/ide/actions/ShowSettingsUtilImpl.java @@ -22,6 +22,7 @@ import com.intellij.openapi.options.SearchableConfigurable; import com.intellij.openapi.options.ShowSettingsUtil; import com.intellij.openapi.options.ex.ConfigurableExtensionPointUtil; import com.intellij.openapi.options.ex.IdeConfigurablesGroup; +import com.intellij.openapi.options.ex.MixedConfigurableGroup; import com.intellij.openapi.options.ex.ProjectConfigurablesGroup; import com.intellij.openapi.options.ex.SingleConfigurableEditor; import com.intellij.openapi.options.newEditor.OptionsEditor; @@ -64,13 +65,17 @@ public class ShowSettingsUtilImpl extends ShowSettingsUtil { @NotNull public static ConfigurableGroup[] getConfigurableGroups(@Nullable Project project, boolean withIdeSettings) { - return !withIdeSettings + ConfigurableGroup[] groups = !withIdeSettings ? new ConfigurableGroup[]{new ProjectConfigurablesGroup(getProject(project))} : (project == null) ? new ConfigurableGroup[]{new IdeConfigurablesGroup()} : new ConfigurableGroup[]{ new ProjectConfigurablesGroup(project), new IdeConfigurablesGroup()}; + + return Registry.is("ide.file.settings.order.new") + ? MixedConfigurableGroup.getGroups(getConfigurables(groups, true)) + : groups; } @NotNull diff --git a/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableWrapper.java b/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableWrapper.java index ed72e27e8c22..8f975cbae7ba 100644 --- a/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableWrapper.java +++ b/platform/platform-impl/src/com/intellij/openapi/options/ex/ConfigurableWrapper.java @@ -141,9 +141,12 @@ public class ConfigurableWrapper implements SearchableConfigurable { @NotNull @Override public String getId() { - return myEp.id == null ? myEp.instanceClass : myEp.id; + return myEp.id == null ? myEp.instanceClass == null ? myEp.providerClass : myEp.instanceClass : myEp.id; } + public String getGroupId() { + return myEp.groupId; + } public String getParentId() { return myEp.parentId; diff --git a/platform/platform-impl/src/com/intellij/openapi/options/ex/MixedConfigurableGroup.java b/platform/platform-impl/src/com/intellij/openapi/options/ex/MixedConfigurableGroup.java new file mode 100644 index 000000000000..f465e2d0fecb --- /dev/null +++ b/platform/platform-impl/src/com/intellij/openapi/options/ex/MixedConfigurableGroup.java @@ -0,0 +1,83 @@ +/* + * Copyright 2000-2014 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.intellij.openapi.options.ex; + +import com.intellij.openapi.options.Configurable; +import com.intellij.openapi.options.ConfigurableGroup; +import com.intellij.openapi.options.OptionsBundle; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map.Entry; + +public final class MixedConfigurableGroup implements ConfigurableGroup { + private final String myGroupId; + private Configurable[] myConfigurables; + + private MixedConfigurableGroup(String groupId, ArrayList configurables) { + myGroupId = groupId; + myConfigurables = (configurables != null) + ? configurables.toArray(new Configurable[configurables.size()]) + : new Configurable[0]; + } + + private MixedConfigurableGroup(String groupId, HashMap> configurables) { + this(groupId, configurables.remove(groupId)); + } + + @Override + public String getDisplayName() { + return OptionsBundle.message("configurable.group." + myGroupId + ".settings.display.name"); + } + + @Override + public String getShortName() { + return getDisplayName(); + } + + @Override + public Configurable[] getConfigurables() { + return myConfigurables; + } + + public static ConfigurableGroup[] getGroups(Configurable... configurables) { + HashMap> map = new HashMap>(); + for (Configurable configurable : configurables) { + String groupId = null; + if (configurable instanceof ConfigurableWrapper) { + groupId = ((ConfigurableWrapper)configurable).getGroupId(); + } + ArrayList list = map.get(groupId); + if (list == null) { + map.put(groupId, list = new ArrayList()); + } + list.add(configurable); + } + ArrayList groups = new ArrayList(map.size()); + groups.add(new MixedConfigurableGroup("appearance", map)); + groups.add(new MixedConfigurableGroup("editor", map)); + groups.add(new MixedConfigurableGroup("project", map)); + groups.add(new MixedConfigurableGroup("build", map)); + groups.add(new MixedConfigurableGroup("language", map)); + groups.add(new MixedConfigurableGroup("tools", map)); + ConfigurableGroup other = new MixedConfigurableGroup(null, map); + for(Entry>entry: map.entrySet()){ + groups.add(new MixedConfigurableGroup(entry.getKey(), entry.getValue())); + } + groups.add(other); + return groups.toArray(new ConfigurableGroup[groups.size()]); + } +} diff --git a/platform/platform-resources-en/src/messages/IdeBundle.properties b/platform/platform-resources-en/src/messages/IdeBundle.properties index 7a3e4e2f03c0..016c62b9f601 100644 --- a/platform/platform-resources-en/src/messages/IdeBundle.properties +++ b/platform/platform-resources-en/src/messages/IdeBundle.properties @@ -23,7 +23,7 @@ button.wizard.previous=&Previous button.wizard.next=&Next title.system.error=System Error title.select.path.to.browser=Select Path to Browser -title.general=General +title.general=System Settings editbox.default.encoding.for.properties.files=Default encoding for properties files: checkbox.transparent.native.to.ascii.conversion=Transparent native-to-ascii conversion checkbox.autodetect.utf=Autodetect UTF-encoded files diff --git a/platform/platform-resources-en/src/messages/OptionsBundle.properties b/platform/platform-resources-en/src/messages/OptionsBundle.properties index b1c60ece9896..98fa13a46d14 100644 --- a/platform/platform-resources-en/src/messages/OptionsBundle.properties +++ b/platform/platform-resources-en/src/messages/OptionsBundle.properties @@ -198,6 +198,14 @@ options.xml.display.name=XML settings.panel.title=Settings +configurable.group.appearance.settings.display.name=Appearance, Behavior +configurable.group.editor.settings.display.name=Editor +configurable.group.project.settings.display.name=Current Project +configurable.group.build.settings.display.name=Build, Execution, Deployment +configurable.group.language.settings.display.name=Languages, Frameworks +configurable.group.tools.settings.display.name=Tools +configurable.group.null.settings.display.name=Other Settings + control.panel.classic.view.button=Classic &View options.page.modified.save.message.text=The page has been modified. Save changes made on this page? options.save.changes.message.title=Save Changes diff --git a/platform/platform-resources-en/src/misc/registry.properties b/platform/platform-resources-en/src/misc/registry.properties index d2150ba5d609..30ff95dd95e2 100644 --- a/platform/platform-resources-en/src/misc/registry.properties +++ b/platform/platform-resources-en/src/misc/registry.properties @@ -409,6 +409,7 @@ console.too.much.text.buffer.ratio=10 console.too.much.text.buffer.ratio.description=Used for disabling of console processing(console filters for highlights, foldings...),\n\ when there is too much of text to process.\n\ The ratio is used against the console cycle buffer size (idea.cycle.buffer.size/theRatio=maxTextLength). +ide.file.settings.order.new=false ide.new.project.settings=false ide.new.project.settings.description=Temporary key for new project settings dialog UI diff --git a/platform/platform-resources/src/META-INF/LangExtensions.xml b/platform/platform-resources/src/META-INF/LangExtensions.xml index 6aa90e42aa9f..70aad1362a3b 100644 --- a/platform/platform-resources/src/META-INF/LangExtensions.xml +++ b/platform/platform-resources/src/META-INF/LangExtensions.xml @@ -361,25 +361,25 @@ serviceImplementation="com.intellij.codeInspection.ex.ProjectInspectionProfilesVisibleTreeState"/> - - + - - + - @@ -387,15 +387,15 @@ serviceImplementation="com.intellij.codeInsight.template.impl.TemplateManagerImpl"/> - - - @@ -753,8 +753,8 @@ - - + + diff --git a/platform/platform-resources/src/META-INF/PlatformExtensions.xml b/platform/platform-resources/src/META-INF/PlatformExtensions.xml index 851a91d314ab..98fadf7b851a 100644 --- a/platform/platform-resources/src/META-INF/PlatformExtensions.xml +++ b/platform/platform-resources/src/META-INF/PlatformExtensions.xml @@ -124,7 +124,7 @@ serviceImplementation="com.intellij.ide.passwordSafe.config.PasswordSafeSettings"/> - @@ -193,32 +193,32 @@ - + - - - - - + - - - - + + + @@ -226,7 +226,7 @@ - - @@ -262,7 +262,7 @@ - diff --git a/platform/platform-resources/src/META-INF/PlatformLangPlugin.xml b/platform/platform-resources/src/META-INF/PlatformLangPlugin.xml index baee8add1483..b7a11c39ecae 100644 --- a/platform/platform-resources/src/META-INF/PlatformLangPlugin.xml +++ b/platform/platform-resources/src/META-INF/PlatformLangPlugin.xml @@ -81,8 +81,8 @@ - - + + diff --git a/platform/platform-resources/src/META-INF/VcsExtensions.xml b/platform/platform-resources/src/META-INF/VcsExtensions.xml index 9d40b359f59b..10b2a7f6a44e 100644 --- a/platform/platform-resources/src/META-INF/VcsExtensions.xml +++ b/platform/platform-resources/src/META-INF/VcsExtensions.xml @@ -25,7 +25,7 @@ - + diff --git a/platform/platform-resources/src/META-INF/XmlPlugin.xml b/platform/platform-resources/src/META-INF/XmlPlugin.xml index 9da1e3317e13..9a737df77ef6 100644 --- a/platform/platform-resources/src/META-INF/XmlPlugin.xml +++ b/platform/platform-resources/src/META-INF/XmlPlugin.xml @@ -182,7 +182,7 @@ serviceImplementation="com.intellij.application.options.editor.WebEditorOptions"/> - + @@ -527,7 +527,7 @@ - diff --git a/platform/platform-resources/src/META-INF/xdebugger.xml b/platform/platform-resources/src/META-INF/xdebugger.xml index 013a4d881a12..7adf4aaf7a77 100644 --- a/platform/platform-resources/src/META-INF/xdebugger.xml +++ b/platform/platform-resources/src/META-INF/xdebugger.xml @@ -29,7 +29,7 @@ - + diff --git a/platform/remote-servers/impl/src/META-INF/RemoteServers.xml b/platform/remote-servers/impl/src/META-INF/RemoteServers.xml index c18f18d43304..41067b075460 100644 --- a/platform/remote-servers/impl/src/META-INF/RemoteServers.xml +++ b/platform/remote-servers/impl/src/META-INF/RemoteServers.xml @@ -17,7 +17,7 @@ serviceImplementation="com.intellij.remoteServer.agent.impl.RemoteAgentManagerImpl"/> - + diff --git a/plugins/IntelliLang/src/META-INF/plugin.xml b/plugins/IntelliLang/src/META-INF/plugin.xml index a7f600958250..8f8806a8b2ec 100644 --- a/plugins/IntelliLang/src/META-INF/plugin.xml +++ b/plugins/IntelliLang/src/META-INF/plugin.xml @@ -45,7 +45,7 @@ - + diff --git a/plugins/copyright/src/META-INF/plugin.xml b/plugins/copyright/src/META-INF/plugin.xml index ea667615982f..a5e91315ff1f 100644 --- a/plugins/copyright/src/META-INF/plugin.xml +++ b/plugins/copyright/src/META-INF/plugin.xml @@ -11,7 +11,7 @@ com.intellij.modules.java - + - + diff --git a/plugins/gradle/src/META-INF/plugin.xml b/plugins/gradle/src/META-INF/plugin.xml index 67ca15f5d679..de6937c18c6c 100644 --- a/plugins/gradle/src/META-INF/plugin.xml +++ b/plugins/gradle/src/META-INF/plugin.xml @@ -83,7 +83,7 @@ - diff --git a/plugins/groovy/src/META-INF/plugin.xml b/plugins/groovy/src/META-INF/plugin.xml index fc54c5e268cd..6df2ec403343 100644 --- a/plugins/groovy/src/META-INF/plugin.xml +++ b/plugins/groovy/src/META-INF/plugin.xml @@ -274,7 +274,7 @@ - diff --git a/plugins/javaFX/src/META-INF/common-javaFX-plugin.xml b/plugins/javaFX/src/META-INF/common-javaFX-plugin.xml index c03a5f4bff9c..1256121f509f 100644 --- a/plugins/javaFX/src/META-INF/common-javaFX-plugin.xml +++ b/plugins/javaFX/src/META-INF/common-javaFX-plugin.xml @@ -25,7 +25,7 @@ enabledByDefault="true" level="WARNING" displayName="JavaFX unused imports" groupName="JavaFX"/> - + diff --git a/plugins/maven/src/main/resources/META-INF/plugin.xml b/plugins/maven/src/main/resources/META-INF/plugin.xml index 960cb1c5df24..0261f132277c 100644 --- a/plugins/maven/src/main/resources/META-INF/plugin.xml +++ b/plugins/maven/src/main/resources/META-INF/plugin.xml @@ -46,7 +46,7 @@ - + - + diff --git a/plugins/terminal/resources/META-INF/terminal.xml b/plugins/terminal/resources/META-INF/terminal.xml index ed2a2b56ec64..11a18e18d81f 100644 --- a/plugins/terminal/resources/META-INF/terminal.xml +++ b/plugins/terminal/resources/META-INF/terminal.xml @@ -11,7 +11,7 @@ - + diff --git a/plugins/ui-designer/src/META-INF/plugin.xml b/plugins/ui-designer/src/META-INF/plugin.xml index 6724c40198dd..bca8934330a4 100644 --- a/plugins/ui-designer/src/META-INF/plugin.xml +++ b/plugins/ui-designer/src/META-INF/plugin.xml @@ -33,7 +33,7 @@ - diff --git a/plugins/xpath/xpath-view/src/META-INF/plugin.xml b/plugins/xpath/xpath-view/src/META-INF/plugin.xml index 65a942a56ba3..2030b75c8d0a 100644 --- a/plugins/xpath/xpath-view/src/META-INF/plugin.xml +++ b/plugins/xpath/xpath-view/src/META-INF/plugin.xml @@ -59,7 +59,7 @@ serviceInterface="org.intellij.lang.xpath.xslt.psi.XsltElementFactory" serviceImplementation="org.intellij.lang.xpath.xslt.psi.impl.XsltElementFactoryImpl" /> - + XSLT - - + diff --git a/resources/src/idea/RichPlatformPlugin.xml b/resources/src/idea/RichPlatformPlugin.xml index b2b041a7426f..709a3a238ccc 100644 --- a/resources/src/idea/RichPlatformPlugin.xml +++ b/resources/src/idea/RichPlatformPlugin.xml @@ -242,10 +242,10 @@ - + - @@ -257,20 +257,20 @@ key="rmi.compiler.description" bundle="messages.CompilerBundle"/> - + - + - - diff --git a/spellchecker/src/META-INF/SpellCheckerPlugin.xml b/spellchecker/src/META-INF/SpellCheckerPlugin.xml index a6108edac1ff..bd6be663f155 100644 --- a/spellchecker/src/META-INF/SpellCheckerPlugin.xml +++ b/spellchecker/src/META-INF/SpellCheckerPlugin.xml @@ -23,7 +23,7 @@ - +