| /* |
| * Copyright (C) 2013 The Android Open Source Project |
| * |
| * 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.android.tools.idea.startup; |
| |
| import com.intellij.psi.codeStyle.CodeStyleSettings; |
| import com.intellij.psi.codeStyle.PackageEntry; |
| import com.intellij.psi.codeStyle.PackageEntryTable; |
| import org.jetbrains.android.formatter.AndroidXmlCodeStyleSettings; |
| import org.jetbrains.android.formatter.AndroidXmlPredefinedCodeStyle; |
| |
| public class AndroidCodeStyleSettingsModifier { |
| public static void modify(CodeStyleSettings settings) { |
| // Use Android XML formatter by default |
| AndroidXmlCodeStyleSettings.getInstance(settings).USE_CUSTOM_SETTINGS = true; |
| |
| // XML: |
| // Copy Android code style |
| AndroidXmlPredefinedCodeStyle xmlStyle = new AndroidXmlPredefinedCodeStyle(); |
| xmlStyle.apply(settings); |
| |
| // Java: |
| // Set Import order |
| settings.IMPORT_LAYOUT_TABLE.copyFrom(getAndroidImportOrder()); |
| |
| // Don't use wildcard imports |
| settings.PACKAGES_TO_USE_IMPORT_ON_DEMAND.copyFrom(new PackageEntryTable()); |
| settings.CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND = 99; // Class count to use import with "*" |
| settings.NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND = 99; // Name count to use static import with "*" |
| |
| // set margin to 100 columns |
| settings.setDefaultRightMargin(100); |
| } |
| |
| private static PackageEntryTable getAndroidImportOrder() { |
| PackageEntryTable table = new PackageEntryTable(); |
| // From http://s.android.com/source/code-style.html, the order should be: |
| // 1. Android imports |
| // 2. Imports from 3rd parties (com, junit, net, org) |
| // 3. java and javax |
| table.addEntry(new PackageEntry(false, "android", true)); |
| table.addEntry(PackageEntry.BLANK_LINE_ENTRY); |
| |
| table.addEntry(new PackageEntry(false, "com", true)); |
| table.addEntry(PackageEntry.BLANK_LINE_ENTRY); |
| |
| table.addEntry(new PackageEntry(false, "junit", true)); |
| table.addEntry(PackageEntry.BLANK_LINE_ENTRY); |
| |
| table.addEntry(new PackageEntry(false, "net", true)); |
| table.addEntry(PackageEntry.BLANK_LINE_ENTRY); |
| |
| table.addEntry(new PackageEntry(false, "org", true)); |
| table.addEntry(PackageEntry.BLANK_LINE_ENTRY); |
| |
| table.addEntry(new PackageEntry(false, "java", true)); |
| table.addEntry(PackageEntry.BLANK_LINE_ENTRY); |
| |
| table.addEntry(new PackageEntry(false, "javax", true)); |
| table.addEntry(PackageEntry.BLANK_LINE_ENTRY); |
| |
| // handle any other conditions |
| table.addEntry(PackageEntry.ALL_OTHER_IMPORTS_ENTRY); |
| table.addEntry(PackageEntry.BLANK_LINE_ENTRY); |
| |
| // location of static imports is not defined, we put it last |
| table.addEntry(PackageEntry.ALL_OTHER_STATIC_IMPORTS_ENTRY); |
| table.addEntry(PackageEntry.BLANK_LINE_ENTRY); |
| |
| return table; |
| } |
| } |