summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJerome Gaillard <jgaillard@google.com>2021-05-04 19:30:56 +0100
committerJerome Gaillard <jgaillard@google.com>2021-05-10 13:56:53 +0000
commit7ee3b509fe7fccc27948bc68d2ceec397d4d810e (patch)
tree55c66c0848a3941725c4c02eee27ca94749ae42a
parent2c8b7c55cd16e88c58b24e9ad5d995f90ac1424b (diff)
downloadidea-7ee3b509fe7fccc27948bc68d2ceec397d4d810e.tar.gz
Create a design tools plugin
This new plugin is contains: - the designer module - the nav-editor module - the compose-designer module - the customview module - the layoutlib module - the layoutlib jar That corresponds to everything that needs direct access to layoutlib classes. It depends on the android plugin, and implements a new extension point, layoutLibraryProvider, defined in LayoutLibraryLoader. That allows the android plugin to still have access to a LayoutLibrary, while preventing it from accessing the internals of layoutlib. Bug: 187316741 Test: existing tests Change-Id: I264d82e14cb206fa7e1443cb85a0e2bc1f79c200
-rw-r--r--.idea/modules.xml3
-rw-r--r--android-plugin/BUILD4
-rw-r--r--android-plugin/intellij.android.plugin.iml4
-rwxr-xr-xandroid-plugin/src/META-INF/plugin.xml4
-rw-r--r--android/BUILD4
-rwxr-xr-xandroid/intellij.android.core.iml2
-rw-r--r--android/intellij.android.core.tests.iml2
-rw-r--r--android/src/META-INF/android-plugin.xml15
-rw-r--r--android/src/META-INF/layoutlib.xml21
-rw-r--r--android/src/com/android/tools/idea/res/ResourceIdManager.kt6
-rw-r--r--android/src/org/jetbrains/android/uipreview/ViewLoader.java36
-rw-r--r--android/testSrc/META-INF/plugin.xml1
-rw-r--r--design-plugin/BUILD18
-rw-r--r--design-plugin/intellij.android.design-plugin.iml17
-rw-r--r--design-plugin/src/META-INF/plugin.xml34
-rw-r--r--designer-perf-tests/BUILD3
-rw-r--r--designer-perf-tests/intellij.android.designer-perf-tests.iml3
-rw-r--r--designer-perf-tests/testSrc/META-INF/plugin.xml1
-rw-r--r--designer/BUILD1
-rw-r--r--designer/intellij.android.designer.iml2
-rw-r--r--designer/intellij.android.designer.tests.iml1
-rw-r--r--designer/src/META-INF/designer.xml18
-rw-r--r--designer/testSrc/META-INF/plugin.xml1
-rw-r--r--layoutlib-loader/BUILD16
-rw-r--r--layoutlib-loader/intellij.android.layoutlib-loader.iml1
-rw-r--r--layoutlib-loader/src/com/android/tools/idea/layoutlib/LayoutLibrary.java15
-rw-r--r--layoutlib-loader/src/com/android/tools/idea/layoutlib/LayoutLibraryLoader.java20
-rw-r--r--layoutlib/BUILD15
-rw-r--r--layoutlib/intellij.android.layoutlib.iml1
-rw-r--r--layoutlib/intellij.android.layoutlib.tests.iml (renamed from layoutlib-loader/intellij.android.layoutlib-loader.tests.iml)5
-rw-r--r--layoutlib/src/META-INF/layoutlib.xml (renamed from layoutlib/src/META-INF/plugin.xml)12
-rw-r--r--layoutlib/src/com/android/layoutlib/LayoutlibClassLoader.java (renamed from layoutlib-loader/src/com/android/tools/idea/layoutlib/LayoutlibClassLoader.java)2
-rw-r--r--layoutlib/src/com/android/layoutlib/LayoutlibProvider.kt30
-rw-r--r--layoutlib/testSrc/com/android/layoutlib/LayoutlibClassLoaderTest.java (renamed from layoutlib-loader/testSrc/com/android/tools/idea/layoutlib/LayoutlibClassLoaderTest.java)55
-rw-r--r--layoutlib/testSrc/com/android/layoutlib/LayoutlibPrebuiltTest.kt (renamed from layoutlib-loader/testSrc/com/android/tools/idea/layoutlib/LayoutlibPrebuiltTest.kt)2
-rw-r--r--layoutlib/testSrc/com/android/layoutlib/TestBuild.java (renamed from layoutlib-loader/testSrc/com/android/tools/idea/layoutlib/TestBuild.java)2
-rw-r--r--searchable-options/android/android.jar/search/android.jar.searchableOptions.xml185
-rw-r--r--searchable-options/design-tools/design-tools.jar/search/design-tools.jar.searchableOptions.xml191
-rw-r--r--studio/BUILD42
-rw-r--r--studio/studio.iml2
-rw-r--r--studio/tests/expected_linux.txt9
-rw-r--r--studio/tests/expected_mac.txt9
-rw-r--r--studio/tests/expected_mac_arm.txt9
-rw-r--r--studio/tests/expected_win.txt9
-rw-r--r--studio/tests/startup_test.py2
45 files changed, 456 insertions, 379 deletions
diff --git a/.idea/modules.xml b/.idea/modules.xml
index ecff51908c9..e01ffabd6f3 100644
--- a/.idea/modules.xml
+++ b/.idea/modules.xml
@@ -132,6 +132,7 @@
<module fileurl="file://$PROJECT_DIR$/debuggers/intellij.android.debuggers.iml" filepath="$PROJECT_DIR$/debuggers/intellij.android.debuggers.iml" />
<module fileurl="file://$PROJECT_DIR$/debuggers/intellij.android.debuggers.tests.iml" filepath="$PROJECT_DIR$/debuggers/intellij.android.debuggers.tests.iml" />
<module fileurl="file://$PROJECT_DIR$/deploy/intellij.android.deploy.iml" filepath="$PROJECT_DIR$/deploy/intellij.android.deploy.iml" />
+ <module fileurl="file://$PROJECT_DIR$/design-plugin/intellij.android.design-plugin.iml" filepath="$PROJECT_DIR$/design-plugin/intellij.android.design-plugin.iml" />
<module fileurl="file://$PROJECT_DIR$/designer/intellij.android.designer.iml" filepath="$PROJECT_DIR$/designer/intellij.android.designer.iml" />
<module fileurl="file://$PROJECT_DIR$/designer-perf-tests/intellij.android.designer-perf-tests.iml" filepath="$PROJECT_DIR$/designer-perf-tests/intellij.android.designer-perf-tests.iml" />
<module fileurl="file://$PROJECT_DIR$/designer/customview/intellij.android.designer.customview.iml" filepath="$PROJECT_DIR$/designer/customview/intellij.android.designer.customview.iml" />
@@ -162,8 +163,8 @@
<module fileurl="file://$PROJECT_DIR$/layout-inspector/intellij.android.layout-inspector.tests.iml" filepath="$PROJECT_DIR$/layout-inspector/intellij.android.layout-inspector.tests.iml" />
<module fileurl="file://$PROJECT_DIR$/layout-ui/intellij.android.layout-ui.iml" filepath="$PROJECT_DIR$/layout-ui/intellij.android.layout-ui.iml" />
<module fileurl="file://$PROJECT_DIR$/layoutlib/intellij.android.layoutlib.iml" filepath="$PROJECT_DIR$/layoutlib/intellij.android.layoutlib.iml" />
+ <module fileurl="file://$PROJECT_DIR$/layoutlib/intellij.android.layoutlib.tests.iml" filepath="$PROJECT_DIR$/layoutlib/intellij.android.layoutlib.tests.iml" />
<module fileurl="file://$PROJECT_DIR$/layoutlib-loader/intellij.android.layoutlib-loader.iml" filepath="$PROJECT_DIR$/layoutlib-loader/intellij.android.layoutlib-loader.iml" />
- <module fileurl="file://$PROJECT_DIR$/layoutlib-loader/intellij.android.layoutlib-loader.tests.iml" filepath="$PROJECT_DIR$/layoutlib-loader/intellij.android.layoutlib-loader.tests.iml" />
<module fileurl="file://$PROJECT_DIR$/mlkit/intellij.android.mlkit.iml" filepath="$PROJECT_DIR$/mlkit/intellij.android.mlkit.iml" />
<module fileurl="file://$PROJECT_DIR$/mlkit/intellij.android.mlkit.tests.iml" filepath="$PROJECT_DIR$/mlkit/intellij.android.mlkit.tests.iml" />
<module fileurl="file://$PROJECT_DIR$/nav/editor/intellij.android.nav.editor.iml" filepath="$PROJECT_DIR$/nav/editor/intellij.android.nav.editor.iml" />
diff --git a/android-plugin/BUILD b/android-plugin/BUILD
index 366424900d5..81e9a822a53 100644
--- a/android-plugin/BUILD
+++ b/android-plugin/BUILD
@@ -18,7 +18,6 @@ iml_module(
"//tools/adt/idea/android:intellij.android.core[module]",
"//tools/adt/idea/emulator:intellij.android.emulator[module]",
"//tools/adt/idea/sdk-updates:intellij.android.sdkUpdates[module]",
- "//tools/adt/idea/designer:intellij.android.designer[module]",
"//tools/adt/idea/app-inspection/ide:intellij.android.app-inspection.ide[module]",
"//tools/adt/idea/profilers-android:intellij.android.profilersAndroid[module]",
"//tools/adt/idea/android-adb:intellij.android.adb[module]",
@@ -35,10 +34,7 @@ iml_module(
"//tools/adt/idea/android-lang-databinding:intellij.android.lang-databinding[module]",
"//tools/adt/idea/databinding:intellij.android.databinding[module]",
"//tools/adt/idea/mlkit:intellij.android.mlkit[module]",
- "//tools/adt/idea/nav/editor:intellij.android.nav.editor[module]",
"//tools/adt/idea/layout-inspector:intellij.android.layout-inspector[module]",
- "//tools/adt/idea/compose-designer:intellij.android.compose-designer[module]",
- "//tools/adt/idea/designer/customview:intellij.android.designer.customview[module]",
"//tools/adt/idea/room:intellij.android.room[module]",
"//tools/base/wizard/template-impl:studio.intellij.android.wizardTemplate.impl[module]",
"//tools/adt/idea/build-attribution:intellij.android.build-attribution[module]",
diff --git a/android-plugin/intellij.android.plugin.iml b/android-plugin/intellij.android.plugin.iml
index 320147a059c..c1d55f9127b 100644
--- a/android-plugin/intellij.android.plugin.iml
+++ b/android-plugin/intellij.android.plugin.iml
@@ -12,7 +12,6 @@
<orderEntry type="module" module-name="intellij.android.core" />
<orderEntry type="module" module-name="intellij.android.emulator" />
<orderEntry type="module" module-name="intellij.android.sdkUpdates" />
- <orderEntry type="module" module-name="intellij.android.designer" />
<orderEntry type="module" module-name="intellij.android.app-inspection.ide" />
<orderEntry type="module" module-name="intellij.android.profilersAndroid" />
<orderEntry type="module" module-name="intellij.android.adb" />
@@ -29,10 +28,7 @@
<orderEntry type="module" module-name="intellij.android.lang-databinding" />
<orderEntry type="module" module-name="intellij.android.databinding" />
<orderEntry type="module" module-name="intellij.android.mlkit" />
- <orderEntry type="module" module-name="intellij.android.nav.editor" />
<orderEntry type="module" module-name="intellij.android.layout-inspector" />
- <orderEntry type="module" module-name="intellij.android.compose-designer" />
- <orderEntry type="module" module-name="intellij.android.designer.customview" />
<orderEntry type="module" module-name="intellij.android.room" />
<orderEntry type="module" module-name="intellij.android.wizardTemplate.impl" />
<orderEntry type="module" module-name="intellij.android.build-attribution" />
diff --git a/android-plugin/src/META-INF/plugin.xml b/android-plugin/src/META-INF/plugin.xml
index 7091239a89e..bfe1e7b2476 100755
--- a/android-plugin/src/META-INF/plugin.xml
+++ b/android-plugin/src/META-INF/plugin.xml
@@ -24,8 +24,6 @@
<xi:include href="/META-INF/databinding.xml" xpointer="xpointer(/idea-plugin/*)"/>
<xi:include href="/META-INF/mlkit.xml" xpointer="xpointer(/idea-plugin/*)"/>
<xi:include href="/META-INF/sdk-updates.xml" xpointer="xpointer(/idea-plugin/*)"/>
- <xi:include href="/META-INF/designer.xml" xpointer="xpointer(/idea-plugin/*)"/>
- <xi:include href="/META-INF/naveditor.xml" xpointer="xpointer(/idea-plugin/*)"/>
<xi:include href="/META-INF/safeargs.xml" xpointer="xpointer(/idea-plugin/*)"/>
<xi:include href="/META-INF/pipeline.xml" xpointer="xpointer(/idea-plugin/*)"/>
<xi:include href="/META-INF/profilers.xml" xpointer="xpointer(/idea-plugin/*)"/>
@@ -37,8 +35,6 @@
<xi:include href="/META-INF/connection-assistant.xml" xpointer="xpointer(/idea-plugin/*)"/>
<xi:include href="/META-INF/whats-new-assistant.xml" xpointer="xpointer(/idea-plugin/*)"/>
<xi:include href="/META-INF/layout-inspector.xml" xpointer="xpointer(/idea-plugin/*)"/>
- <xi:include href="/META-INF/compose-designer.xml" xpointer="xpointer(/idea-plugin/*)"/>
- <xi:include href="/META-INF/customview.xml" xpointer="xpointer(/idea-plugin/*)"/>
<xi:include href="/META-INF/app-inspection.xml" xpointer="xpointer(/idea-plugin/*)"/>
<xi:include href="/META-INF/app-inspector.xml" xpointer="xpointer(/idea-plugin/*)"/>
<xi:include href="/META-INF/workmanager-inspector.xml" xpointer="xpointer(/idea-plugin/*)"/>
diff --git a/android/BUILD b/android/BUILD
index 117cac95571..c0dc8208289 100644
--- a/android/BUILD
+++ b/android/BUILD
@@ -68,6 +68,7 @@ iml_module(
"//tools/adt/idea/gradle-tooling/studio-gradle-tooling-api:intellij.android.gradle-tooling.api[module]",
"//tools/adt/idea/gradle-tooling/studio-gradle-tooling-impl:intellij.android.gradle-tooling.impl[module]",
"//tools/base/sdk-common:studio.android.sdktools.sdk-common[module]",
+ "//tools/base/layoutlib-api:studio.android.sdktools.layoutlib-api[module]",
"//tools/base/flags:studio.android.sdktools.flags[module]",
"//tools/adt/idea/observable-ui:intellij.android.observable.ui[module]",
"//tools/adt/idea/artwork:intellij.android.artwork[module]",
@@ -87,7 +88,6 @@ iml_module(
"//tools/adt/idea/resources-base:intellij.android.resources-base[module]",
"//tools/adt/idea/.idea/libraries:studio-proto",
"//tools/adt/idea/.idea/libraries:perfetto-proto",
- "//tools/adt/idea/.idea/libraries:layoutlib",
"//tools/base/wizard/template-plugin:studio.intellij.android.wizardTemplate.plugin[module]",
"//tools/adt/idea/lint:intellij.lint[module]",
"//tools/adt/idea/gradle-dsl:intellij.android.gradle.dsl[module]",
@@ -370,6 +370,8 @@ iml_module(
"//tools/adt/idea/project-system-gradle-repository-search:intellij.android.projectSystem.gradle.repositorySearch[module, test]",
"//tools/adt/idea/project-system-gradle-sync:intellij.android.projectSystem.gradle.sync[module, test]",
"//tools/adt/idea/utp[module, test]",
+ "//tools/adt/idea/layoutlib:intellij.android.layoutlib[module, test]",
+ "//tools/adt/idea/.idea/libraries:layoutlib[test]",
],
)
diff --git a/android/intellij.android.core.iml b/android/intellij.android.core.iml
index b84866de1f3..7d61b7f840b 100755
--- a/android/intellij.android.core.iml
+++ b/android/intellij.android.core.iml
@@ -74,6 +74,7 @@
<orderEntry type="module" module-name="intellij.android.gradle-tooling.api" />
<orderEntry type="module" module-name="intellij.android.gradle-tooling.impl" />
<orderEntry type="module" module-name="android.sdktools.sdk-common" />
+ <orderEntry type="module" module-name="android.sdktools.layoutlib-api" />
<orderEntry type="module" module-name="android.sdktools.flags" />
<orderEntry type="module" module-name="intellij.android.observable.ui" />
<orderEntry type="module" module-name="intellij.android.artwork" />
@@ -109,7 +110,6 @@
<orderEntry type="module" module-name="intellij.android.resources-base" />
<orderEntry type="library" name="studio-proto" level="project" />
<orderEntry type="library" name="perfetto-proto" level="project" />
- <orderEntry type="library" scope="PROVIDED" name="layoutlib" level="project" />
<orderEntry type="module" module-name="intellij.android.wizardTemplate.plugin" />
<orderEntry type="module" module-name="intellij.lint" />
<orderEntry type="module" module-name="intellij.android.gradle.dsl" />
diff --git a/android/intellij.android.core.tests.iml b/android/intellij.android.core.tests.iml
index 967f6d94b57..1bcfe99e379 100644
--- a/android/intellij.android.core.tests.iml
+++ b/android/intellij.android.core.tests.iml
@@ -135,5 +135,7 @@
<orderEntry type="module" module-name="intellij.android.projectSystem.gradle.repositorySearch" scope="TEST" />
<orderEntry type="module" module-name="intellij.android.projectSystem.gradle.sync" scope="TEST" />
<orderEntry type="module" module-name="utp" scope="TEST" />
+ <orderEntry type="module" module-name="intellij.android.layoutlib" scope="TEST" />
+ <orderEntry type="library" scope="TEST" name="layoutlib" level="project" />
</component>
</module> \ No newline at end of file
diff --git a/android/src/META-INF/android-plugin.xml b/android/src/META-INF/android-plugin.xml
index c25a5e4e45f..f84bd93f06e 100644
--- a/android/src/META-INF/android-plugin.xml
+++ b/android/src/META-INF/android-plugin.xml
@@ -24,8 +24,6 @@
<depends>com.android.tools.idea.smali</depends>
<depends>org.jetbrains.kotlin</depends>
- <depends optional="true" config-file="layoutlib.xml">com.android.layoutlib</depends>
-
<depends optional="true" config-file="androidstudio.xml">com.intellij.modules.androidstudio</depends>
<depends optional="true" config-file="database-support.xml">com.intellij.database</depends>
@@ -97,9 +95,6 @@
<action id="Android.CreateResourceDirectory" class="org.jetbrains.android.actions.CreateResourceDirectoryAction">
<add-to-group group-id="NewGroup" anchor="after" relative-to-action="Android.CreateResourcesActionGroup"/>
</action>
- <action id="Android.CreateSampleDataDirectory" class="com.android.tools.idea.actions.CreateSampleDataDirectory">
- <add-to-group group-id="NewGroup" anchor="after" relative-to-action="Android.CreateResourceDirectory"/>
- </action>
<action id="Android.ConvertToNinePatch" class="com.android.tools.idea.actions.ConvertToNinePatchAction">
<add-to-group group-id="ProjectViewPopupMenu" anchor="last" />
</action>
@@ -148,7 +143,6 @@
<action internal="true" id="Android.StopGradleDaemons" class="com.android.tools.idea.gradle.actions.StopGradleDaemonsAction" />
<action internal="true" id="Android.GetAdbAction" class="com.android.tools.idea.ddms.actions.GetAdbAction" />
<action internal="true" id="Android.TerminateAdbAction" class="com.android.tools.idea.ddms.actions.TerminateAdbAction" />
- <action internal="true" id="Android.GenerateLayoutTestSkeletonAction" class="com.android.tools.idea.uibuilder.actions.GenerateLayoutTestSkeletonAction"/>
<action internal="true" id="StatisticsViewer" class="com.android.tools.idea.stats.ShowStatisticsViewerAction" text="Show statistics viewer"/>
<action internal="true" id="Android.EditFlags" class="com.android.tools.idea.flags.ShowStudioFlagsDialogAction"/>
<action internal="true" id="Android.ServerFlags" class="com.android.tools.idea.serverflags.ServerFlagsMenuAction" />
@@ -267,8 +261,6 @@
overrides="true"
text="Submit _Feedback"
description="Submit feedback to the Android Studio team"/>
- <action id="StoreDefaultLayout" class="com.android.tools.idea.common.actions.StoreDefaultWindowLayoutAction" overrides="true"/>
- <action id="RestoreDefaultLayout" class="com.android.tools.idea.common.actions.RestoreDefaultWindowLayoutAction" overrides="true"/>
<action class="com.android.tools.idea.rendering.webp.ConvertToWebpAction" id="ConvertToWebp" text="Convert to WebP...">
<add-to-group group-id="ProjectViewPopupMenu"/>
<add-to-group group-id="Images.EditorPopupMenu" relative-to-action="RefactoringMenu" anchor="after"/>
@@ -386,9 +378,6 @@
<applicationService serviceImplementation="com.android.tools.idea.run.DeploymentApplicationService" />
<applicationService serviceImplementation="com.android.tools.idea.gradle.repositories.RepositoryUrlManager"/>
<applicationService serviceImplementation="org.jetbrains.android.uipreview.AndroidEditorSettings"/>
- <projectService serviceImplementation="com.android.tools.idea.common.surface.DesignSurfaceSettings"/>
- <applicationService serviceImplementation="com.android.tools.idea.uibuilder.visual.VisualizationToolSettings"/>
- <projectService serviceImplementation="com.android.tools.idea.uibuilder.visual.VisualizationToolProjectSettings"/>
<applicationService serviceImplementation="com.android.tools.idea.profiling.capture.CaptureTypeService"/>
<applicationService serviceInterface="org.jetbrains.android.facet.AndroidFacetConfiguration$EditorTabProvider"
serviceImplementation="org.jetbrains.android.facet.AndroidFacetEditorTab$Provider"/>
@@ -405,8 +394,6 @@
provider="com.android.tools.idea.explorer.options.DeviceFileExplorerConfigurableProvider"/>
<applicationService serviceImplementation="com.android.tools.idea.explorer.options.DeviceFileExplorerSettings"/>
- <applicationConfigurable groupId="editor" groupWeight="115" id="nele.options"
- provider="com.android.tools.idea.uibuilder.options.NlOptionsConfigurableProvider"/>
<applicationConfigurable groupId="build" id="instant.run"
provider="com.android.tools.idea.deploy.DeploymentConfigurableProvider"/>
<applicationService serviceImplementation="com.android.tools.idea.deploy.DeploymentConfiguration"/>
@@ -944,6 +931,8 @@
interface="com.android.tools.idea.ndk.NativeWorkspaceProvider"/>
<extensionPoint qualifiedName="com.android.tools.idea.analytics.ideBrandProvider"
interface="com.android.tools.idea.analytics.IdeBrandProvider" />
+ <extensionPoint qualifiedName="com.android.tools.idea.layoutlib.layoutLibraryProvider"
+ interface="com.android.tools.idea.layoutlib.LayoutLibraryLoader$LayoutLibraryProvider" />
</extensionPoints>
<extensions defaultExtensionNs="com.android">
diff --git a/android/src/META-INF/layoutlib.xml b/android/src/META-INF/layoutlib.xml
deleted file mode 100644
index add10e390f9..00000000000
--- a/android/src/META-INF/layoutlib.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<!--
- ~ Copyright (C) 2019 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.
- -->
-<idea-plugin>
-
- <!-- Required config file for optional plugin
- It is empty as layoutlib does not need any particular configuration -->
-
-</idea-plugin> \ No newline at end of file
diff --git a/android/src/com/android/tools/idea/res/ResourceIdManager.kt b/android/src/com/android/tools/idea/res/ResourceIdManager.kt
index f78345a96d3..1ee9c10390b 100644
--- a/android/src/com/android/tools/idea/res/ResourceIdManager.kt
+++ b/android/src/com/android/tools/idea/res/ResourceIdManager.kt
@@ -34,6 +34,7 @@ import com.android.resources.ResourceType.STRING
import com.android.resources.ResourceType.STYLE
import com.android.resources.ResourceType.STYLEABLE
import com.android.tools.idea.experimental.codeanalysis.datastructs.Modifier
+import com.android.tools.idea.layoutlib.LayoutLibraryLoader
import com.android.tools.idea.model.Namespacing
import com.intellij.openapi.module.Module
import gnu.trove.TIntObjectHashMap
@@ -207,7 +208,10 @@ class ResourceIdManager private constructor(val module: Module) : ResourceClassG
toIdMap[STYLE] = TObjectIntHashMap(781)
}
- loadIdsFromResourceClass(com.android.internal.R::class.java, into = frameworkIds, lookForAttrsInStyleables = true)
+ val rClass = LayoutLibraryLoader.LayoutLibraryProvider.EP_NAME.computeSafeIfAny { provider -> provider.frameworkRClass }
+ if (rClass != null) {
+ loadIdsFromResourceClass(rClass, into = frameworkIds, lookForAttrsInStyleables = true)
+ }
return frameworkIds
}
diff --git a/android/src/org/jetbrains/android/uipreview/ViewLoader.java b/android/src/org/jetbrains/android/uipreview/ViewLoader.java
index a580457e40e..6c1a1a029f4 100644
--- a/android/src/org/jetbrains/android/uipreview/ViewLoader.java
+++ b/android/src/org/jetbrains/android/uipreview/ViewLoader.java
@@ -20,16 +20,13 @@ import static com.android.SdkConstants.CLASS_ATTRIBUTE_SET;
import static com.android.SdkConstants.CLASS_RECYCLER_VIEW_ADAPTER;
import static com.android.SdkConstants.R_CLASS;
import static com.android.SdkConstants.VIEW_FRAGMENT;
-import static com.android.SdkConstants.VIEW_INCLUDE;
import static com.android.tools.idea.LogAnonymizerUtil.anonymize;
import static com.android.tools.idea.LogAnonymizerUtil.anonymizeClassName;
import static com.intellij.lang.annotation.HighlightSeverity.WARNING;
-import android.view.Gravity;
import com.android.annotations.NonNull;
import com.google.common.annotations.VisibleForTesting;
import com.android.ide.common.rendering.api.ILayoutLog;
-import com.android.layoutlib.bridge.MockView;
import com.android.tools.idea.layoutlib.LayoutLibrary;
import com.android.tools.idea.rendering.IRenderLogger;
import com.android.tools.idea.rendering.classloading.InconvertibleClassError;
@@ -155,9 +152,9 @@ public class ViewLoader {
if (o != null) {
return o;
}
- return createMockView(className, constructorSignature, constructorArgs);
+ return myLayoutLibrary.createMockView(getShortClassName(className), constructorSignature, constructorArgs);
}
- catch (ClassNotFoundException | InvocationTargetException | IllegalAccessException | InstantiationException | NoSuchFieldException | NoSuchMethodException e) {
+ catch (InvocationTargetException | IllegalAccessException | InstantiationException | NoSuchMethodException e) {
throw new ClassNotFoundException(className, e);
}
}
@@ -263,35 +260,6 @@ public class ViewLoader {
}
@NotNull
- private MockView createMockView(@NotNull String className, @Nullable Class<?>[] constructorSignature, @Nullable Object[] constructorArgs)
- throws
- ClassNotFoundException,
- InvocationTargetException,
- NoSuchMethodException,
- InstantiationException,
- IllegalAccessException,
- NoSuchFieldException {
- MockView mockView = (MockView)createNewInstance(MockView.class, constructorSignature, constructorArgs, true);
- String label = getShortClassName(className);
- switch (label) {
- case VIEW_FRAGMENT:
- label = "<fragment>";
- // TODO:
- // Append "\nPick preview layout from the \"Fragment Layout\" context menu"
- // when used from the layout editor
- break;
- case VIEW_INCLUDE:
- label = "Text";
- break;
- }
-
- mockView.setText(label);
- mockView.setGravity(Gravity.CENTER);
-
- return mockView;
- }
-
- @NotNull
public Module getModule() {
return myModule;
}
diff --git a/android/testSrc/META-INF/plugin.xml b/android/testSrc/META-INF/plugin.xml
index c95a0cad192..320717d97db 100644
--- a/android/testSrc/META-INF/plugin.xml
+++ b/android/testSrc/META-INF/plugin.xml
@@ -28,4 +28,5 @@
<xi:include href="/META-INF/project-system-gradle-plugin.xml" xpointer="xpointer(/idea-plugin/*)"/>
<xi:include href="/META-INF/project-system-gradle-psd-plugin.xml" xpointer="xpointer(/idea-plugin/*)"/>
<xi:include href="/META-INF/lint-plugin.xml" xpointer="xpointer(/idea-plugin/*)"/>
+ <xi:include href="/META-INF/layoutlib.xml" xpointer="xpointer(/idea-plugin/*)"/>
</idea-plugin>
diff --git a/design-plugin/BUILD b/design-plugin/BUILD
new file mode 100644
index 00000000000..a85e3989585
--- /dev/null
+++ b/design-plugin/BUILD
@@ -0,0 +1,18 @@
+load("//tools/base/bazel:bazel.bzl", "iml_module")
+
+# managed by go/iml_to_build
+iml_module(
+ name = "intellij.android.design-plugin",
+ srcs = ["src"],
+ iml_files = ["intellij.android.design-plugin.iml"],
+ visibility = ["//visibility:public"],
+ # do not sort: must match IML order
+ deps = [
+ "//tools/adt/idea/designer:intellij.android.designer[module]",
+ "//tools/adt/idea/nav/editor:intellij.android.nav.editor[module]",
+ "//tools/adt/idea/compose-designer:intellij.android.compose-designer[module]",
+ "//tools/adt/idea/designer/customview:intellij.android.designer.customview[module]",
+ "//tools/adt/idea/layoutlib:intellij.android.layoutlib[module]",
+ "//tools/adt/idea/.idea/libraries:layoutlib",
+ ],
+)
diff --git a/design-plugin/intellij.android.design-plugin.iml b/design-plugin/intellij.android.design-plugin.iml
new file mode 100644
index 00000000000..466a4066360
--- /dev/null
+++ b/design-plugin/intellij.android.design-plugin.iml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="JAVA_MODULE" version="4">
+ <component name="NewModuleRootManager" inherit-compiler-output="true">
+ <exclude-output />
+ <content url="file://$MODULE_DIR$">
+ <sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
+ </content>
+ <orderEntry type="inheritedJdk" />
+ <orderEntry type="sourceFolder" forTests="false" />
+ <orderEntry type="module" module-name="intellij.android.designer" />
+ <orderEntry type="module" module-name="intellij.android.nav.editor" />
+ <orderEntry type="module" module-name="intellij.android.compose-designer" />
+ <orderEntry type="module" module-name="intellij.android.designer.customview" />
+ <orderEntry type="module" module-name="intellij.android.layoutlib" />
+ <orderEntry type="library" name="layoutlib" level="project" />
+ </component>
+</module> \ No newline at end of file
diff --git a/design-plugin/src/META-INF/plugin.xml b/design-plugin/src/META-INF/plugin.xml
new file mode 100644
index 00000000000..90216591545
--- /dev/null
+++ b/design-plugin/src/META-INF/plugin.xml
@@ -0,0 +1,34 @@
+<!--
+ ~ Copyright (C) 2021 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.
+ -->
+<idea-plugin xmlns:xi="http://www.w3.org/2001/XInclude">
+ <id>com.android.tools.design</id>
+ <name>Design Tools</name>
+ <version>1.0</version>
+ <vendor>Google</vendor>
+
+ <description>Provides a suite of design tools for Android Studio</description>
+
+ <depends>com.intellij.platform.images</depends>
+ <depends>org.jetbrains.android</depends>
+ <depends>org.jetbrains.kotlin</depends>
+
+ <xi:include href="/META-INF/designer.xml" xpointer="xpointer(/idea-plugin/*)"/>
+ <xi:include href="/META-INF/naveditor.xml" xpointer="xpointer(/idea-plugin/*)"/>
+ <xi:include href="/META-INF/compose-designer.xml" xpointer="xpointer(/idea-plugin/*)"/>
+ <xi:include href="/META-INF/customview.xml" xpointer="xpointer(/idea-plugin/*)"/>
+ <xi:include href="/META-INF/layoutlib.xml" xpointer="xpointer(/idea-plugin/*)"/>
+
+</idea-plugin> \ No newline at end of file
diff --git a/designer-perf-tests/BUILD b/designer-perf-tests/BUILD
index 1a555346b0b..ccb3dae0756 100644
--- a/designer-perf-tests/BUILD
+++ b/designer-perf-tests/BUILD
@@ -52,8 +52,9 @@ iml_module(
"//tools/adt/idea/android-kotlin:intellij.android.kotlin.extensions[module, test]",
"//tools/adt/idea/compose-designer:intellij.android.compose-designer[module, test]",
"//tools/adt/idea/android-test-framework:intellij.android.testFramework[module, test]",
- "//tools/adt/idea/.idea/libraries:layoutlib",
+ "//tools/adt/idea/.idea/libraries:layoutlib[test]",
"//tools/adt/idea/intellij.android.compose-common[module]",
"//tools/adt/idea/designer:intellij.android.designer[module, test]",
+ "//tools/adt/idea/layoutlib:intellij.android.layoutlib[module, test]",
],
)
diff --git a/designer-perf-tests/intellij.android.designer-perf-tests.iml b/designer-perf-tests/intellij.android.designer-perf-tests.iml
index 8312f0fdcee..2dc89bc5f10 100644
--- a/designer-perf-tests/intellij.android.designer-perf-tests.iml
+++ b/designer-perf-tests/intellij.android.designer-perf-tests.iml
@@ -20,8 +20,9 @@
<orderEntry type="module" module-name="intellij.android.kotlin.extensions" scope="TEST" />
<orderEntry type="module" module-name="intellij.android.compose-designer" scope="TEST" />
<orderEntry type="module" module-name="intellij.android.testFramework" scope="TEST" />
- <orderEntry type="library" scope="PROVIDED" name="layoutlib" level="project" />
+ <orderEntry type="library" scope="TEST" name="layoutlib" level="project" />
<orderEntry type="module" module-name="intellij.android.compose-common" />
<orderEntry type="module" module-name="intellij.android.designer" scope="TEST" />
+ <orderEntry type="module" module-name="intellij.android.layoutlib" scope="TEST" />
</component>
</module> \ No newline at end of file
diff --git a/designer-perf-tests/testSrc/META-INF/plugin.xml b/designer-perf-tests/testSrc/META-INF/plugin.xml
index db8f8958a29..c7d48441bed 100644
--- a/designer-perf-tests/testSrc/META-INF/plugin.xml
+++ b/designer-perf-tests/testSrc/META-INF/plugin.xml
@@ -20,4 +20,5 @@
<xi:include href="/META-INF/android-plugin.xml" xpointer="xpointer(/idea-plugin/*)"/>
<xi:include href="/META-INF/project-system-plugin.xml" xpointer="xpointer(/idea-plugin/*)"/>
<xi:include href="/META-INF/project-system-gradle-plugin.xml" xpointer="xpointer(/idea-plugin/*)"/>
+ <xi:include href="/META-INF/layoutlib.xml" xpointer="xpointer(/idea-plugin/*)"/>
</idea-plugin>
diff --git a/designer/BUILD b/designer/BUILD
index 07121bc77f6..4c81be4c270 100644
--- a/designer/BUILD
+++ b/designer/BUILD
@@ -108,5 +108,6 @@ iml_module(
"//tools/adt/idea/.idea/libraries:layoutlib[test]",
"//tools/adt/idea/lint:intellij.lint[module, test]",
"//prebuilts/studio/intellij-sdk:studio-sdk-plugin-Kotlin",
+ "//tools/adt/idea/layoutlib:intellij.android.layoutlib[module, test]",
],
)
diff --git a/designer/intellij.android.designer.iml b/designer/intellij.android.designer.iml
index 7e47f8a18b5..647b8c04aee 100644
--- a/designer/intellij.android.designer.iml
+++ b/designer/intellij.android.designer.iml
@@ -31,7 +31,7 @@
<orderEntry type="module" module-name="intellij.android.layout-ui" />
<orderEntry type="module" module-name="intellij.android.wizardTemplate.plugin" />
<orderEntry type="module" module-name="intellij.android.wizardTemplate.impl" />
- <orderEntry type="library" scope="PROVIDED" name="layoutlib" level="project" />
+ <orderEntry type="library" name="layoutlib" level="project" />
<orderEntry type="module" module-name="intellij.lint" />
<orderEntry type="module" module-name="android.sdktools.lint-checks" />
<orderEntry type="module" module-name="intellij.android.compose-common" />
diff --git a/designer/intellij.android.designer.tests.iml b/designer/intellij.android.designer.tests.iml
index 33a64f0145b..a02fda630cb 100644
--- a/designer/intellij.android.designer.tests.iml
+++ b/designer/intellij.android.designer.tests.iml
@@ -38,5 +38,6 @@
<orderEntry type="library" scope="TEST" name="layoutlib" level="project" />
<orderEntry type="module" module-name="intellij.lint" scope="TEST" />
<orderEntry type="library" name="studio-plugin-Kotlin" level="project" />
+ <orderEntry type="module" module-name="intellij.android.layoutlib" scope="TEST" />
</component>
</module> \ No newline at end of file
diff --git a/designer/src/META-INF/designer.xml b/designer/src/META-INF/designer.xml
index 6fb89022d06..619ff78f9fa 100644
--- a/designer/src/META-INF/designer.xml
+++ b/designer/src/META-INF/designer.xml
@@ -56,12 +56,20 @@
<extensions defaultExtensionNs="com.intellij">
<applicationService serviceImplementation="com.android.tools.idea.common.model.NlDependencyManager"/>
+ <applicationConfigurable groupId="editor" groupWeight="115" id="nele.options"
+ provider="com.android.tools.idea.uibuilder.options.NlOptionsConfigurableProvider"/>
</extensions>
<extensions defaultExtensionNs="com.intellij">
<keymapExtension implementation="com.android.tools.idea.DesignerKeymapExtension"/>
</extensions>
+ <extensions defaultExtensionNs="com.intellij">
+ <projectService serviceImplementation="com.android.tools.idea.common.surface.DesignSurfaceSettings"/>
+ <applicationService serviceImplementation="com.android.tools.idea.uibuilder.visual.VisualizationToolSettings"/>
+ <projectService serviceImplementation="com.android.tools.idea.uibuilder.visual.VisualizationToolProjectSettings"/>
+ </extensions>
+
<module-components>
<component>
<implementation-class>com.android.tools.idea.uibuilder.palette.NlPaletteModel</implementation-class>
@@ -174,6 +182,16 @@
<add-to-group group-id="Android.Designer.ToolsActions"/>
</group>
+
+ <action id="Android.CreateSampleDataDirectory" class="com.android.tools.idea.actions.CreateSampleDataDirectory">
+ <add-to-group group-id="NewGroup" anchor="after" relative-to-action="Android.CreateResourceDirectory"/>
+ </action>
+ <action id="StoreDefaultLayout" class="com.android.tools.idea.common.actions.StoreDefaultWindowLayoutAction" overrides="true"/>
+ <action id="RestoreDefaultLayout" class="com.android.tools.idea.common.actions.RestoreDefaultWindowLayoutAction" overrides="true"/>
+
+ <action internal="true" id="Android.GenerateLayoutTestSkeletonAction" class="com.android.tools.idea.uibuilder.actions.GenerateLayoutTestSkeletonAction">
+ <add-to-group group-id="Internal.Android" anchor="after" relative-to-action="Android.TerminateAdbAction"/>
+ </action>
</actions>
<extensions defaultExtensionNs="com.android.tools.idea.assistant">
diff --git a/designer/testSrc/META-INF/plugin.xml b/designer/testSrc/META-INF/plugin.xml
index 6e7b5b33371..53603ed4eed 100644
--- a/designer/testSrc/META-INF/plugin.xml
+++ b/designer/testSrc/META-INF/plugin.xml
@@ -25,4 +25,5 @@
<xi:include href="/META-INF/project-system-gradle-plugin.xml" xpointer="xpointer(/idea-plugin/*)"/>
<xi:include href="/META-INF/android-lang-databinding.xml" xpointer="xpointer(/idea-plugin/*)"/>
<xi:include href="/META-INF/lint-plugin.xml" xpointer="xpointer(/idea-plugin/*)"/>
+ <xi:include href="/META-INF/layoutlib.xml" xpointer="xpointer(/idea-plugin/*)"/>
</idea-plugin>
diff --git a/layoutlib-loader/BUILD b/layoutlib-loader/BUILD
index 36a55d16e4f..8cb88ce0086 100644
--- a/layoutlib-loader/BUILD
+++ b/layoutlib-loader/BUILD
@@ -14,21 +14,5 @@ iml_module(
"//tools/base/sdk-common:studio.android.sdktools.sdk-common[module]",
"//tools/adt/idea/android-common:intellij.android.common[module]",
"//tools/base/layoutlib-api:studio.android.sdktools.layoutlib-api[module]",
- "//tools/adt/idea/.idea/libraries:layoutlib",
- ],
-)
-
-# managed by go/iml_to_build
-iml_module(
- name = "intellij.android.layoutlib-loader.tests",
- iml_files = ["intellij.android.layoutlib-loader.tests.iml"],
- test_srcs = ["testSrc"],
- visibility = ["//visibility:public"],
- # do not sort: must match IML order
- deps = [
- "//prebuilts/studio/intellij-sdk:studio-sdk",
- "//prebuilts/studio/intellij-sdk:studio-sdk-plugin-gradle",
- "//tools/adt/idea/layoutlib-loader:intellij.android.layoutlib-loader[module, test]",
- "//tools/adt/idea/.idea/libraries:layoutlib[test]",
],
)
diff --git a/layoutlib-loader/intellij.android.layoutlib-loader.iml b/layoutlib-loader/intellij.android.layoutlib-loader.iml
index d5ef9d0d9fd..3fc7f6e85fa 100644
--- a/layoutlib-loader/intellij.android.layoutlib-loader.iml
+++ b/layoutlib-loader/intellij.android.layoutlib-loader.iml
@@ -12,6 +12,5 @@
<orderEntry type="module" module-name="android.sdktools.sdk-common" />
<orderEntry type="module" module-name="intellij.android.common" />
<orderEntry type="module" module-name="android.sdktools.layoutlib-api" />
- <orderEntry type="library" scope="PROVIDED" name="layoutlib" level="project" />
</component>
</module> \ No newline at end of file
diff --git a/layoutlib-loader/src/com/android/tools/idea/layoutlib/LayoutLibrary.java b/layoutlib-loader/src/com/android/tools/idea/layoutlib/LayoutLibrary.java
index da5a05e26b5..7a040773a00 100644
--- a/layoutlib-loader/src/com/android/tools/idea/layoutlib/LayoutLibrary.java
+++ b/layoutlib-loader/src/com/android/tools/idea/layoutlib/LayoutLibrary.java
@@ -29,6 +29,7 @@ import com.intellij.openapi.Disposable;
import java.awt.image.BufferedImage;
import java.io.File;
+import java.lang.reflect.InvocationTargetException;
import java.util.Map;
/**
@@ -58,7 +59,7 @@ public class LayoutLibrary implements Disposable {
/**
* Returns a {@link LayoutLibrary} instance using the given {@link Bridge} and {@link ClassLoader}
*/
- static LayoutLibrary load(Bridge bridge, ClassLoader classLoader) {
+ public static LayoutLibrary load(Bridge bridge, ClassLoader classLoader) {
return new LayoutLibrary(bridge, classLoader);
}
@@ -206,6 +207,18 @@ public class LayoutLibrary implements Disposable {
return mBridge != null && mBridge.isRtl(locale);
}
+ /**
+ * Returns a mock view displaying the given label. This mock view should be created by passing
+ * the provided arguments to its constructor.
+ */
+ public Object createMockView(String label, Class<?>[] constructorSignature, Object[] constructorArgs)
+ throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException {
+ if (mBridge != null) {
+ return mBridge.createMockView(label, constructorSignature, constructorArgs);
+ }
+ return null;
+ }
+
@VisibleForTesting
protected LayoutLibrary() {
mBridge = null;
diff --git a/layoutlib-loader/src/com/android/tools/idea/layoutlib/LayoutLibraryLoader.java b/layoutlib-loader/src/com/android/tools/idea/layoutlib/LayoutLibraryLoader.java
index b2e7926fad5..a5385a91bcd 100644
--- a/layoutlib-loader/src/com/android/tools/idea/layoutlib/LayoutLibraryLoader.java
+++ b/layoutlib-loader/src/com/android/tools/idea/layoutlib/LayoutLibraryLoader.java
@@ -24,6 +24,7 @@ import com.android.sdklib.internal.project.ProjectProperties;
import com.android.tools.idea.io.BufferingFileWrapper;
import com.android.utils.ILogger;
import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.LocalFileSystem;
@@ -78,9 +79,8 @@ public class LayoutLibraryLoader {
String dataPath = FileUtil.toSystemIndependentName(target.getPath(IAndroidTarget.DATA).toString());
// We instantiate the local Bridge implementation and pass it to the LayoutLibrary instance
- library =
- LayoutLibrary.load(new com.android.layoutlib.bridge.Bridge(), new LayoutlibClassLoader(LayoutLibraryLoader.class.getClassLoader()));
- if (!library.init(buildPropMap, new File(fontFolder.getPath()), getNativeLibraryPath(dataPath), dataPath + "/icu/icudt66l.dat", enumMap, layoutLog)) {
+ library = LayoutLibraryProvider.EP_NAME.computeSafeIfAny(LayoutLibraryProvider::getLibrary);
+ if (library == null || !library.init(buildPropMap, new File(fontFolder.getPath()), getNativeLibraryPath(dataPath), dataPath + "/icu/icudt66l.dat", enumMap, layoutLog)) {
throw new RenderingException(LayoutlibBundle.message("layoutlib.init.failed"));
}
return library;
@@ -116,4 +116,18 @@ public class LayoutLibraryLoader {
return library;
}
+
+ /**
+ * Extension point for the Android plugin to have access to layoutlib in a separate plugin.
+ */
+ public static abstract class LayoutLibraryProvider {
+ public static final ExtensionPointName<LayoutLibraryProvider> EP_NAME =
+ new ExtensionPointName<>("com.android.tools.idea.layoutlib.layoutLibraryProvider");
+
+ @NotNull
+ public abstract LayoutLibrary getLibrary();
+
+ @NotNull
+ public abstract Class<?> getFrameworkRClass();
+ }
}
diff --git a/layoutlib/BUILD b/layoutlib/BUILD
index 1aefed9ec93..7e56559133a 100644
--- a/layoutlib/BUILD
+++ b/layoutlib/BUILD
@@ -10,6 +10,21 @@ iml_module(
deps = [
"//prebuilts/studio/intellij-sdk:studio-sdk",
"//tools/base/layoutlib-api:studio.android.sdktools.layoutlib-api[module]",
+ "//tools/adt/idea/layoutlib-loader:intellij.android.layoutlib-loader[module]",
"//tools/adt/idea/.idea/libraries:layoutlib",
],
)
+
+# managed by go/iml_to_build
+iml_module(
+ name = "intellij.android.layoutlib.tests",
+ iml_files = ["intellij.android.layoutlib.tests.iml"],
+ test_srcs = ["testSrc"],
+ visibility = ["//visibility:public"],
+ # do not sort: must match IML order
+ deps = [
+ "//prebuilts/studio/intellij-sdk:studio-sdk",
+ "//tools/adt/idea/layoutlib:intellij.android.layoutlib[module, test]",
+ "//tools/adt/idea/.idea/libraries:layoutlib[test]",
+ ],
+)
diff --git a/layoutlib/intellij.android.layoutlib.iml b/layoutlib/intellij.android.layoutlib.iml
index d6ed5c8a505..070e027727f 100644
--- a/layoutlib/intellij.android.layoutlib.iml
+++ b/layoutlib/intellij.android.layoutlib.iml
@@ -9,6 +9,7 @@
<orderEntry type="library" name="studio-sdk" level="project" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module" module-name="android.sdktools.layoutlib-api" />
+ <orderEntry type="module" module-name="intellij.android.layoutlib-loader" />
<orderEntry type="library" name="layoutlib" level="project" />
</component>
</module> \ No newline at end of file
diff --git a/layoutlib-loader/intellij.android.layoutlib-loader.tests.iml b/layoutlib/intellij.android.layoutlib.tests.iml
index 51a0d1edc09..a4ef8d3eeaa 100644
--- a/layoutlib-loader/intellij.android.layoutlib-loader.tests.iml
+++ b/layoutlib/intellij.android.layoutlib.tests.iml
@@ -6,10 +6,9 @@
<sourceFolder url="file://$MODULE_DIR$/testSrc" isTestSource="true" />
</content>
<orderEntry type="inheritedJdk" />
- <orderEntry type="library" name="studio-sdk" level="project" />
- <orderEntry type="library" name="studio-plugin-gradle" level="project" />
<orderEntry type="sourceFolder" forTests="false" />
- <orderEntry type="module" module-name="intellij.android.layoutlib-loader" scope="TEST" />
+ <orderEntry type="library" name="studio-sdk" level="project" />
+ <orderEntry type="module" module-name="intellij.android.layoutlib" scope="TEST" />
<orderEntry type="library" scope="TEST" name="layoutlib" level="project" />
</component>
</module> \ No newline at end of file
diff --git a/layoutlib/src/META-INF/plugin.xml b/layoutlib/src/META-INF/layoutlib.xml
index 5b0b1b975f7..3cb64d86951 100644
--- a/layoutlib/src/META-INF/plugin.xml
+++ b/layoutlib/src/META-INF/layoutlib.xml
@@ -1,5 +1,5 @@
<!--
- ~ Copyright (C) 2019 The Android Open Source Project
+ ~ Copyright (C) 2021 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.
@@ -14,12 +14,9 @@
~ limitations under the License.
-->
<idea-plugin>
- <id>com.android.layoutlib</id>
- <name>Layoutlib</name>
- <version>1.0</version>
- <vendor>Google</vendor>
-
- <description>Provides a library for rendering Android resources</description>
+ <extensions defaultExtensionNs="com.android.tools.idea.layoutlib">
+ <layoutLibraryProvider implementation="com.android.layoutlib.LayoutlibProvider"/>
+ </extensions>
<application-components>
<component>
@@ -27,5 +24,4 @@
<headless-implementation-class/>
</component>
</application-components>
-
</idea-plugin> \ No newline at end of file
diff --git a/layoutlib-loader/src/com/android/tools/idea/layoutlib/LayoutlibClassLoader.java b/layoutlib/src/com/android/layoutlib/LayoutlibClassLoader.java
index 559d2083692..35790f71062 100644
--- a/layoutlib-loader/src/com/android/tools/idea/layoutlib/LayoutlibClassLoader.java
+++ b/layoutlib/src/com/android/layoutlib/LayoutlibClassLoader.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.tools.idea.layoutlib;
+package com.android.layoutlib;
import android.os._Original_Build;
import com.google.common.annotations.VisibleForTesting;
diff --git a/layoutlib/src/com/android/layoutlib/LayoutlibProvider.kt b/layoutlib/src/com/android/layoutlib/LayoutlibProvider.kt
new file mode 100644
index 00000000000..93d531ee89f
--- /dev/null
+++ b/layoutlib/src/com/android/layoutlib/LayoutlibProvider.kt
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2021 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.layoutlib
+
+import com.android.layoutlib.bridge.Bridge
+import com.android.tools.idea.layoutlib.LayoutLibrary
+import com.android.tools.idea.layoutlib.LayoutLibraryLoader
+
+class LayoutlibProvider : LayoutLibraryLoader.LayoutLibraryProvider() {
+ override fun getLibrary(): LayoutLibrary {
+ return LayoutLibrary.load(Bridge(), LayoutlibClassLoader(LayoutlibProvider::class.java.classLoader))
+ }
+
+ override fun getFrameworkRClass(): Class<*> {
+ return com.android.internal.R::class.java
+ }
+} \ No newline at end of file
diff --git a/layoutlib-loader/testSrc/com/android/tools/idea/layoutlib/LayoutlibClassLoaderTest.java b/layoutlib/testSrc/com/android/layoutlib/LayoutlibClassLoaderTest.java
index 43be07cd830..f7919e750be 100644
--- a/layoutlib-loader/testSrc/com/android/tools/idea/layoutlib/LayoutlibClassLoaderTest.java
+++ b/layoutlib/testSrc/com/android/layoutlib/LayoutlibClassLoaderTest.java
@@ -13,11 +13,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.tools.idea.layoutlib;
+package com.android.layoutlib;
import com.google.common.io.CharSource;
import org.jetbrains.org.objectweb.asm.ClassReader;
import org.jetbrains.org.objectweb.asm.util.TraceClassVisitor;
+import org.junit.Assert;
import org.junit.Test;
import java.io.IOException;
@@ -27,8 +28,6 @@ import java.util.HashMap;
import java.util.Map;
import java.util.stream.Collectors;
-import static org.junit.Assert.assertEquals;
-
public class LayoutlibClassLoaderTest {
/**
@@ -47,7 +46,7 @@ public class LayoutlibClassLoaderTest {
@Test
- public void generateBuildFile() throws Exception {
+ public void generateBuildFile() {
Map<String, String> definedClasses = new HashMap<>();
LayoutlibClassLoader.generate(TestBuild.class, (name, classBytes) -> {
StringWriter writer = new StringWriter();
@@ -58,31 +57,31 @@ public class LayoutlibClassLoaderTest {
definedClasses.put(name, simplify(writer.toString()));
});
- assertEquals(3, definedClasses.size()); // Outer class + 2 inner classes
- assertEquals("public class android/os/Build {\n" +
- " public static INNERCLASS android/os/Build$InnerClass2 android/os/Build InnerClass2\n" +
- " public static INNERCLASS android/os/Build$InnerClass android/os/Build InnerClass\n" +
- " public final static Ljava/lang/String; TEST_FIELD = \"TestValue\"\n" +
- " public <init>()V\n" +
- " private static privateMethod()Ljava/lang/String;\n" +
- " public static getSerial()Ljava/lang/String;\n" +
- "}",
- definedClasses.get("android.os.Build"));
+ Assert.assertEquals(3, definedClasses.size()); // Outer class + 2 inner classes
+ Assert.assertEquals("public class android/os/Build {\n" +
+ " public static INNERCLASS android/os/Build$InnerClass2 android/os/Build InnerClass2\n" +
+ " public static INNERCLASS android/os/Build$InnerClass android/os/Build InnerClass\n" +
+ " public final static Ljava/lang/String; TEST_FIELD = \"TestValue\"\n" +
+ " public <init>()V\n" +
+ " private static privateMethod()Ljava/lang/String;\n" +
+ " public static getSerial()Ljava/lang/String;\n" +
+ "}",
+ definedClasses.get("android.os.Build"));
- assertEquals("public class android/os/Build$InnerClass {\n" +
- " public static INNERCLASS android/os/Build$InnerClass android/os/Build InnerClass\n" +
- " public final static Ljava/lang/String; TEST_INNER_FIELD = \"TestInnerValue\"\n" +
- " public final static I INNER_VALUE = 1\n" +
- " public <init>()V\n" +
- "}",
- definedClasses.get("android.os.Build$InnerClass"));
+ Assert.assertEquals("public class android/os/Build$InnerClass {\n" +
+ " public static INNERCLASS android/os/Build$InnerClass android/os/Build InnerClass\n" +
+ " public final static Ljava/lang/String; TEST_INNER_FIELD = \"TestInnerValue\"\n" +
+ " public final static I INNER_VALUE = 1\n" +
+ " public <init>()V\n" +
+ "}",
+ definedClasses.get("android.os.Build$InnerClass"));
- assertEquals("public class android/os/Build$InnerClass2 {\n" +
- " public static INNERCLASS android/os/Build$InnerClass2 android/os/Build InnerClass2\n" +
- " public final static Ljava/lang/String; TEST_INNER_FIELD2\n" +
- " public <init>()V\n" +
- " static <clinit>()V\n" +
- "}",
- definedClasses.get("android.os.Build$InnerClass2"));
+ Assert.assertEquals("public class android/os/Build$InnerClass2 {\n" +
+ " public static INNERCLASS android/os/Build$InnerClass2 android/os/Build InnerClass2\n" +
+ " public final static Ljava/lang/String; TEST_INNER_FIELD2\n" +
+ " public <init>()V\n" +
+ " static <clinit>()V\n" +
+ "}",
+ definedClasses.get("android.os.Build$InnerClass2"));
}
} \ No newline at end of file
diff --git a/layoutlib-loader/testSrc/com/android/tools/idea/layoutlib/LayoutlibPrebuiltTest.kt b/layoutlib/testSrc/com/android/layoutlib/LayoutlibPrebuiltTest.kt
index 21204a05cbf..9d646de7e1c 100644
--- a/layoutlib-loader/testSrc/com/android/tools/idea/layoutlib/LayoutlibPrebuiltTest.kt
+++ b/layoutlib/testSrc/com/android/layoutlib/LayoutlibPrebuiltTest.kt
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.tools.idea.layoutlib
+package com.android.layoutlib
import com.android.layoutlib.bridge.BridgeConstants
import org.junit.Test
diff --git a/layoutlib-loader/testSrc/com/android/tools/idea/layoutlib/TestBuild.java b/layoutlib/testSrc/com/android/layoutlib/TestBuild.java
index d8575a69059..5b03c78381b 100644
--- a/layoutlib-loader/testSrc/com/android/tools/idea/layoutlib/TestBuild.java
+++ b/layoutlib/testSrc/com/android/layoutlib/TestBuild.java
@@ -13,7 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package com.android.tools.idea.layoutlib;
+package com.android.layoutlib;
public class TestBuild {
public static final String TEST_FIELD = "TestValue";
diff --git a/searchable-options/android/android.jar/search/android.jar.searchableOptions.xml b/searchable-options/android/android.jar/search/android.jar.searchableOptions.xml
index 9ab298f571f..d2ba1239f21 100644
--- a/searchable-options/android/android.jar/search/android.jar.searchableOptions.xml
+++ b/searchable-options/android/android.jar/search/android.jar.searchableOptions.xml
@@ -5,8 +5,6 @@
<option name="agp" path="ActionManager" hit="AGP Upgrade Assistant..." />
<option name="assistant" path="ActionManager" hit="AGP Upgrade Assistant..." />
<option name="upgrade" path="ActionManager" hit="AGP Upgrade Assistant..." />
- <option name="action" path="ActionManager" hit="Add Action" />
- <option name="add" path="ActionManager" hit="Add Action" />
<option name="add" path="ActionManager" hit="Add As Library..." />
<option name="as" path="ActionManager" hit="Add As Library..." />
<option name="library" path="ActionManager" hit="Add As Library..." />
@@ -25,26 +23,10 @@
<option name="this" path="ActionManager" hit="Add C/C++ code built with CMake or ndk-build to this module" />
<option name="to" path="ActionManager" hit="Add C/C++ code built with CMake or ndk-build to this module" />
<option name="with" path="ActionManager" hit="Add C/C++ code built with CMake or ndk-build to this module" />
- <option name="add" path="ActionManager" hit="Add Deep Link" />
- <option name="deep" path="ActionManager" hit="Add Deep Link" />
- <option name="link" path="ActionManager" hit="Add Deep Link" />
<option name="add" path="ActionManager" hit="Add Right-to-Left (RTL) Support..." />
<option name="right-to-left" path="ActionManager" hit="Add Right-to-Left (RTL) Support..." />
<option name="rtl" path="ActionManager" hit="Add Right-to-Left (RTL) Support..." />
<option name="support" path="ActionManager" hit="Add Right-to-Left (RTL) Support..." />
- <option name="action" path="ActionManager" hit="Add action to the selected item" />
- <option name="add" path="ActionManager" hit="Add action to the selected item" />
- <option name="item" path="ActionManager" hit="Add action to the selected item" />
- <option name="selected" path="ActionManager" hit="Add action to the selected item" />
- <option name="the" path="ActionManager" hit="Add action to the selected item" />
- <option name="to" path="ActionManager" hit="Add action to the selected item" />
- <option name="add" path="ActionManager" hit="Add deep link to the selected item" />
- <option name="deep" path="ActionManager" hit="Add deep link to the selected item" />
- <option name="item" path="ActionManager" hit="Add deep link to the selected item" />
- <option name="link" path="ActionManager" hit="Add deep link to the selected item" />
- <option name="selected" path="ActionManager" hit="Add deep link to the selected item" />
- <option name="the" path="ActionManager" hit="Add deep link to the selected item" />
- <option name="to" path="ActionManager" hit="Add deep link to the selected item" />
<option name="add" path="ActionManager" hit="Add right-to-left (RTL) support where possible" />
<option name="possible" path="ActionManager" hit="Add right-to-left (RTL) support where possible" />
<option name="right-to-left" path="ActionManager" hit="Add right-to-left (RTL) support where possible" />
@@ -92,16 +74,6 @@
<option name="apply" path="ActionManager" hit="Apply Code Changes" />
<option name="changes" path="ActionManager" hit="Apply Code Changes" />
<option name="code" path="ActionManager" hit="Apply Code Changes" />
- <option name="assign" path="ActionManager" hit="Assign Start Destination" />
- <option name="destination" path="ActionManager" hit="Assign Start Destination" />
- <option name="start" path="ActionManager" hit="Assign Start Destination" />
- <option name="assign" path="ActionManager" hit="Assign the start point of navigation graph" />
- <option name="graph" path="ActionManager" hit="Assign the start point of navigation graph" />
- <option name="navigation" path="ActionManager" hit="Assign the start point of navigation graph" />
- <option name="of" path="ActionManager" hit="Assign the start point of navigation graph" />
- <option name="point" path="ActionManager" hit="Assign the start point of navigation graph" />
- <option name="start" path="ActionManager" hit="Assign the start point of navigation graph" />
- <option name="the" path="ActionManager" hit="Assign the start point of navigation graph" />
<option name="android" path="ActionManager" hit="Attach Debugger to Android Process" />
<option name="attach" path="ActionManager" hit="Attach Debugger to Android Process" />
<option name="debugger" path="ActionManager" hit="Attach Debugger to Android Process" />
@@ -125,8 +97,6 @@
<option name="resource" path="ActionManager" hit="Attempt to apply resource and code changes and restart activity." />
<option name="restart" path="ActionManager" hit="Attempt to apply resource and code changes and restart activity." />
<option name="to" path="ActionManager" hit="Attempt to apply resource and code changes and restart activity." />
- <option name="arrange" path="ActionManager" hit="Auto Arrange" />
- <option name="auto" path="ActionManager" hit="Auto Arrange" />
<option name="available" path="ActionManager" hit="Available devices" />
<option name="devices" path="ActionManager" hit="Available devices" />
<option name="back" path="ActionManager" hit="Back" />
@@ -140,30 +110,12 @@
<option name="build" path="ActionManager" hit="Build Bundle(s) / APK(s)" />
<option name="bundle" path="ActionManager" hit="Build Bundle(s) / APK(s)" />
<option name="s" path="ActionManager" hit="Build Bundle(s) / APK(s)" />
- <option name="change" path="ActionManager" hit="Change to next device in the device menu" />
- <option name="device" path="ActionManager" hit="Change to next device in the device menu" />
- <option name="in" path="ActionManager" hit="Change to next device in the device menu" />
- <option name="menu" path="ActionManager" hit="Change to next device in the device menu" />
- <option name="next" path="ActionManager" hit="Change to next device in the device menu" />
- <option name="the" path="ActionManager" hit="Change to next device in the device menu" />
- <option name="to" path="ActionManager" hit="Change to next device in the device menu" />
- <option name="change" path="ActionManager" hit="Change to previous device in the device menu" />
- <option name="device" path="ActionManager" hit="Change to previous device in the device menu" />
- <option name="in" path="ActionManager" hit="Change to previous device in the device menu" />
- <option name="menu" path="ActionManager" hit="Change to previous device in the device menu" />
- <option name="previous" path="ActionManager" hit="Change to previous device in the device menu" />
- <option name="the" path="ActionManager" hit="Change to previous device in the device menu" />
- <option name="to" path="ActionManager" hit="Change to previous device in the device menu" />
<option name="and" path="ActionManager" hit="Choose and profile configuration" />
<option name="choose" path="ActionManager" hit="Choose and profile configuration" />
<option name="configuration" path="ActionManager" hit="Choose and profile configuration" />
<option name="profile" path="ActionManager" hit="Choose and profile configuration" />
<option name="clean" path="ActionManager" hit="Clean Project" />
<option name="project" path="ActionManager" hit="Clean Project" />
- <option name="constraint" path="ActionManager" hit="Constraint Layout Help Panel" />
- <option name="help" path="ActionManager" hit="Constraint Layout Help Panel" />
- <option name="layout" path="ActionManager" hit="Constraint Layout Help Panel" />
- <option name="panel" path="ActionManager" hit="Constraint Layout Help Panel" />
<option name="convert" path="ActionManager" hit="Convert to PNG..." />
<option name="png" path="ActionManager" hit="Convert to PNG..." />
<option name="to" path="ActionManager" hit="Convert to PNG..." />
@@ -173,20 +125,6 @@
<option name="9-patch" path="ActionManager" hit="Create 9-Patch file..." />
<option name="create" path="ActionManager" hit="Create 9-Patch file..." />
<option name="file" path="ActionManager" hit="Create 9-Patch file..." />
- <option name="constraint" path="ActionManager" hit="Create Help Panel for Constraint Layout Editor" />
- <option name="create" path="ActionManager" hit="Create Help Panel for Constraint Layout Editor" />
- <option name="editor" path="ActionManager" hit="Create Help Panel for Constraint Layout Editor" />
- <option name="for" path="ActionManager" hit="Create Help Panel for Constraint Layout Editor" />
- <option name="help" path="ActionManager" hit="Create Help Panel for Constraint Layout Editor" />
- <option name="layout" path="ActionManager" hit="Create Help Panel for Constraint Layout Editor" />
- <option name="panel" path="ActionManager" hit="Create Help Panel for Constraint Layout Editor" />
- <option name="create" path="ActionManager" hit="Create Help Panel for Motion Layout Editor" />
- <option name="editor" path="ActionManager" hit="Create Help Panel for Motion Layout Editor" />
- <option name="for" path="ActionManager" hit="Create Help Panel for Motion Layout Editor" />
- <option name="help" path="ActionManager" hit="Create Help Panel for Motion Layout Editor" />
- <option name="layout" path="ActionManager" hit="Create Help Panel for Motion Layout Editor" />
- <option name="motion" path="ActionManager" hit="Create Help Panel for Motion Layout Editor" />
- <option name="panel" path="ActionManager" hit="Create Help Panel for Motion Layout Editor" />
<option name="a" path="ActionManager" hit="Create a new Android object from the Other category" />
<option name="android" path="ActionManager" hit="Create a new Android object from the Other category" />
<option name="category" path="ActionManager" hit="Create a new Android object from the Other category" />
@@ -196,11 +134,6 @@
<option name="object" path="ActionManager" hit="Create a new Android object from the Other category" />
<option name="other" path="ActionManager" hit="Create a new Android object from the Other category" />
<option name="the" path="ActionManager" hit="Create a new Android object from the Other category" />
- <option name="create" path="ActionManager" hit="Create new Sample Data directory" />
- <option name="data" path="ActionManager" hit="Create new Sample Data directory" />
- <option name="directory" path="ActionManager" hit="Create new Sample Data directory" />
- <option name="new" path="ActionManager" hit="Create new Sample Data directory" />
- <option name="sample" path="ActionManager" hit="Create new Sample Data directory" />
<option name="create" path="ActionManager" hit="Create new resource file" />
<option name="file" path="ActionManager" hit="Create new resource file" />
<option name="new" path="ActionManager" hit="Create new resource file" />
@@ -255,14 +188,6 @@
<option name="resource" path="ActionManager" hit="Enable Resource Update Tracing" />
<option name="tracing" path="ActionManager" hit="Enable Resource Update Tracing" />
<option name="update" path="ActionManager" hit="Enable Resource Update Tracing" />
- <option name="disable" path="ActionManager" hit="Enable or disable the Night mode of preview" />
- <option name="enable" path="ActionManager" hit="Enable or disable the Night mode of preview" />
- <option name="mode" path="ActionManager" hit="Enable or disable the Night mode of preview" />
- <option name="night" path="ActionManager" hit="Enable or disable the Night mode of preview" />
- <option name="of" path="ActionManager" hit="Enable or disable the Night mode of preview" />
- <option name="or" path="ActionManager" hit="Enable or disable the Night mode of preview" />
- <option name="preview" path="ActionManager" hit="Enable or disable the Night mode of preview" />
- <option name="the" path="ActionManager" hit="Enable or disable the Night mode of preview" />
<option name="a" path="ActionManager" hit="Enables Instant Apps Support for a Module" />
<option name="apps" path="ActionManager" hit="Enables Instant Apps Support for a Module" />
<option name="enables" path="ActionManager" hit="Enables Instant Apps Support for a Module" />
@@ -287,9 +212,6 @@
<option name="views" path="ActionManager" hit="Extracts one or more views into a separate layout" />
<option name="fold" path="ActionManager" hit="Fold/Unfold" />
<option name="unfold" path="ActionManager" hit="Fold/Unfold" />
- <option name="force" path="ActionManager" hit="Force Refresh Layout" />
- <option name="layout" path="ActionManager" hit="Force Refresh Layout" />
- <option name="refresh" path="ActionManager" hit="Force Refresh Layout" />
<option name="apk" path="ActionManager" hit="Generate Signed Bundle / APK..." />
<option name="bundle" path="ActionManager" hit="Generate Signed Bundle / APK..." />
<option name="generate" path="ActionManager" hit="Generate Signed Bundle / APK..." />
@@ -426,10 +348,6 @@
<option name="to" path="ActionManager" hit="Migrates to resource namespaces" />
<option name="modularize" path="ActionManager" hit="Modularize..." />
<option name="module" path="ActionManager" hit="Module" />
- <option name="help" path="ActionManager" hit="Motion Layout Help Panel" />
- <option name="layout" path="ActionManager" hit="Motion Layout Help Panel" />
- <option name="motion" path="ActionManager" hit="Motion Layout Help Panel" />
- <option name="panel" path="ActionManager" hit="Motion Layout Help Panel" />
<option name="and" path="ActionManager" hit="Moves classes and their associated resources to another module" />
<option name="another" path="ActionManager" hit="Moves classes and their associated resources to another module" />
<option name="associated" path="ActionManager" hit="Moves classes and their associated resources to another module" />
@@ -554,12 +472,6 @@
<option name="the" path="ActionManager" hit="Press the Volume Up button" />
<option name="up" path="ActionManager" hit="Press the Volume Up button" />
<option name="volume" path="ActionManager" hit="Press the Volume Up button" />
- <option name="device" path="ActionManager" hit="Preview Next Device" />
- <option name="next" path="ActionManager" hit="Preview Next Device" />
- <option name="preview" path="ActionManager" hit="Preview Next Device" />
- <option name="device" path="ActionManager" hit="Preview Previous Device" />
- <option name="preview" path="ActionManager" hit="Preview Previous Device" />
- <option name="previous" path="ActionManager" hit="Preview Previous Device" />
<option name="apk" path="ActionManager" hit="Profile or Debug APK" />
<option name="debug" path="ActionManager" hit="Profile or Debug APK" />
<option name="or" path="ActionManager" hit="Profile or Debug APK" />
@@ -578,18 +490,12 @@
<option name="style" path="ActionManager" hit="Pulls out style-related attributes from layout and extract them as a new style" />
<option name="style-related" path="ActionManager" hit="Pulls out style-related attributes from layout and extract them as a new style" />
<option name="them" path="ActionManager" hit="Pulls out style-related attributes from layout and extract them as a new style" />
- <option name="items" path="ActionManager" hit="Rearrange the items" />
- <option name="rearrange" path="ActionManager" hit="Rearrange the items" />
- <option name="the" path="ActionManager" hit="Rearrange the items" />
<option name="project" path="ActionManager" hit="Rebuild Project" />
<option name="rebuild" path="ActionManager" hit="Rebuild Project" />
<option name="c" path="ActionManager" hit="Refresh Linked C++ Projects" />
<option name="linked" path="ActionManager" hit="Refresh Linked C++ Projects" />
<option name="projects" path="ActionManager" hit="Refresh Linked C++ Projects" />
<option name="refresh" path="ActionManager" hit="Refresh Linked C++ Projects" />
- <option name="preview" path="ActionManager" hit="Refresh preview(s)" />
- <option name="refresh" path="ActionManager" hit="Refresh preview(s)" />
- <option name="s" path="ActionManager" hit="Refresh preview(s)" />
<option name="remove" path="ActionManager" hit="Remove Unused Resources..." />
<option name="resources" path="ActionManager" hit="Remove Unused Resources..." />
<option name="unused" path="ActionManager" hit="Remove Unused Resources..." />
@@ -606,9 +512,6 @@
<option name="where" path="ActionManager" hit="Replaces attributes by Android style reference where possible" />
<option name="manager" path="ActionManager" hit="Resource Manager" />
<option name="resource" path="ActionManager" hit="Resource Manager" />
- <option name="default" path="ActionManager" hit="Restore Default Layout" />
- <option name="layout" path="ActionManager" hit="Restore Default Layout" />
- <option name="restore" path="ActionManager" hit="Restore Default Layout" />
<option name="left" path="ActionManager" hit="Rotate Left" />
<option name="rotate" path="ActionManager" hit="Rotate Left" />
<option name="right" path="ActionManager" hit="Rotate Right" />
@@ -635,9 +538,6 @@
<option name="running" path="ActionManager" hit="Running devices" />
<option name="manager" path="ActionManager" hit="SDK Manager" />
<option name="sdk" path="ActionManager" hit="SDK Manager" />
- <option name="data" path="ActionManager" hit="Sample Data Directory" />
- <option name="directory" path="ActionManager" hit="Sample Data Directory" />
- <option name="sample" path="ActionManager" hit="Sample Data Directory" />
<option name="build" path="ActionManager" hit="Select Build Variant..." />
<option name="select" path="ActionManager" hit="Select Build Variant..." />
<option name="variant" path="ActionManager" hit="Select Build Variant..." />
@@ -651,15 +551,6 @@
<option name="set" path="ActionManager" hit="Set up Android Test Retention" />
<option name="test" path="ActionManager" hit="Set up Android Test Retention" />
<option name="up" path="ActionManager" hit="Set up Android Test Retention" />
- <option name="help" path="ActionManager" hit="Show Help Panel" />
- <option name="panel" path="ActionManager" hit="Show Help Panel" />
- <option name="show" path="ActionManager" hit="Show Help Panel" />
- <option name="editor" path="ActionManager" hit="Show Help Panel for Navigation Editor" />
- <option name="for" path="ActionManager" hit="Show Help Panel for Navigation Editor" />
- <option name="help" path="ActionManager" hit="Show Help Panel for Navigation Editor" />
- <option name="navigation" path="ActionManager" hit="Show Help Panel for Navigation Editor" />
- <option name="panel" path="ActionManager" hit="Show Help Panel for Navigation Editor" />
- <option name="show" path="ActionManager" hit="Show Help Panel for Navigation Editor" />
<option name="in" path="ActionManager" hit="Show In Resource Manager" />
<option name="manager" path="ActionManager" hit="Show In Resource Manager" />
<option name="resource" path="ActionManager" hit="Show In Resource Manager" />
@@ -670,19 +561,7 @@
<option name="controls" path="ActionManager" hit="Show folding controls" />
<option name="folding" path="ActionManager" hit="Show folding controls" />
<option name="show" path="ActionManager" hit="Show folding controls" />
- <option name="editor" path="ActionManager" hit="Show/Hide Help Panel for Layout Editor" />
- <option name="for" path="ActionManager" hit="Show/Hide Help Panel for Layout Editor" />
- <option name="help" path="ActionManager" hit="Show/Hide Help Panel for Layout Editor" />
- <option name="hide" path="ActionManager" hit="Show/Hide Help Panel for Layout Editor" />
- <option name="layout" path="ActionManager" hit="Show/Hide Help Panel for Layout Editor" />
- <option name="panel" path="ActionManager" hit="Show/Hide Help Panel for Layout Editor" />
- <option name="show" path="ActionManager" hit="Show/Hide Help Panel for Layout Editor" />
<option name="snapshots" path="ActionManager" hit="Snapshots" />
- <option name="as" path="ActionManager" hit="Store Current Layout as Default" />
- <option name="current" path="ActionManager" hit="Store Current Layout as Default" />
- <option name="default" path="ActionManager" hit="Store Current Layout as Default" />
- <option name="layout" path="ActionManager" hit="Store Current Layout as Default" />
- <option name="store" path="ActionManager" hit="Store Current Layout as Default" />
<option name="style" path="ActionManager" hit="Style..." />
<option name="feedback" path="ActionManager" hit="Submit Feedback" />
<option name="submit" path="ActionManager" hit="Submit Feedback" />
@@ -693,17 +572,6 @@
<option name="team" path="ActionManager" hit="Submit feedback to the Android Studio team" />
<option name="the" path="ActionManager" hit="Submit feedback to the Android Studio team" />
<option name="to" path="ActionManager" hit="Submit feedback to the Android Studio team" />
- <option name="design" path="ActionManager" hit="Switch Design Mode" />
- <option name="mode" path="ActionManager" hit="Switch Design Mode" />
- <option name="switch" path="ActionManager" hit="Switch Design Mode" />
- <option name="and" path="ActionManager" hit="Switch the design mode cycling within Design, Blueprint, and Design + Blueprint" />
- <option name="blueprint" path="ActionManager" hit="Switch the design mode cycling within Design, Blueprint, and Design + Blueprint" />
- <option name="cycling" path="ActionManager" hit="Switch the design mode cycling within Design, Blueprint, and Design + Blueprint" />
- <option name="design" path="ActionManager" hit="Switch the design mode cycling within Design, Blueprint, and Design + Blueprint" />
- <option name="mode" path="ActionManager" hit="Switch the design mode cycling within Design, Blueprint, and Design + Blueprint" />
- <option name="switch" path="ActionManager" hit="Switch the design mode cycling within Design, Blueprint, and Design + Blueprint" />
- <option name="the" path="ActionManager" hit="Switch the design mode cycling within Design, Blueprint, and Design + Blueprint" />
- <option name="within" path="ActionManager" hit="Switch the design mode cycling within Design, Blueprint, and Design + Blueprint" />
<option name="files" path="ActionManager" hit="Sync Project with Gradle Files" />
<option name="gradle" path="ActionManager" hit="Sync Project with Gradle Files" />
<option name="project" path="ActionManager" hit="Sync Project with Gradle Files" />
@@ -716,16 +584,6 @@
<option name="take" path="ActionManager" hit="Take a screenshot" />
<option name="history" path="ActionManager" hit="Test History" />
<option name="test" path="ActionManager" hit="Test History" />
- <option name="device" path="ActionManager" hit="Toggle Device Night Mode" />
- <option name="mode" path="ActionManager" hit="Toggle Device Night Mode" />
- <option name="night" path="ActionManager" hit="Toggle Device Night Mode" />
- <option name="toggle" path="ActionManager" hit="Toggle Device Night Mode" />
- <option name="device" path="ActionManager" hit="Toggle Device Orientation" />
- <option name="orientation" path="ActionManager" hit="Toggle Device Orientation" />
- <option name="toggle" path="ActionManager" hit="Toggle Device Orientation" />
- <option name="issue" path="ActionManager" hit="Toggle Issue Panel" />
- <option name="panel" path="ActionManager" hit="Toggle Issue Panel" />
- <option name="toggle" path="ActionManager" hit="Toggle Issue Panel" />
<option name="decorations" path="ActionManager" hit="Toggle literals decorations" />
<option name="literals" path="ActionManager" hit="Toggle literals decorations" />
<option name="toggle" path="ActionManager" hit="Toggle literals decorations" />
@@ -735,20 +593,6 @@
<option name="literals" path="ActionManager" hit="Toggle literals decorations in the editor" />
<option name="the" path="ActionManager" hit="Toggle literals decorations in the editor" />
<option name="toggle" path="ActionManager" hit="Toggle literals decorations in the editor" />
- <option name="and" path="ActionManager" hit="Toggle the preview orientation between portrait and landscape" />
- <option name="between" path="ActionManager" hit="Toggle the preview orientation between portrait and landscape" />
- <option name="landscape" path="ActionManager" hit="Toggle the preview orientation between portrait and landscape" />
- <option name="orientation" path="ActionManager" hit="Toggle the preview orientation between portrait and landscape" />
- <option name="portrait" path="ActionManager" hit="Toggle the preview orientation between portrait and landscape" />
- <option name="preview" path="ActionManager" hit="Toggle the preview orientation between portrait and landscape" />
- <option name="the" path="ActionManager" hit="Toggle the preview orientation between portrait and landscape" />
- <option name="toggle" path="ActionManager" hit="Toggle the preview orientation between portrait and landscape" />
- <option name="issue" path="ActionManager" hit="Toggle the visibility of Issue Panel" />
- <option name="of" path="ActionManager" hit="Toggle the visibility of Issue Panel" />
- <option name="panel" path="ActionManager" hit="Toggle the visibility of Issue Panel" />
- <option name="the" path="ActionManager" hit="Toggle the visibility of Issue Panel" />
- <option name="toggle" path="ActionManager" hit="Toggle the visibility of Issue Panel" />
- <option name="visibility" path="ActionManager" hit="Toggle the visibility of Issue Panel" />
<option name="connections" path="ActionManager" hit="Troubleshoot Device Connections" />
<option name="device" path="ActionManager" hit="Troubleshoot Device Connections" />
<option name="troubleshoot" path="ActionManager" hit="Troubleshoot Device Connections" />
@@ -895,35 +739,6 @@
<option name="download" hit="Download location" />
<option name="location" hit="Download location" />
</configurable>
- <configurable id="nele.options" configurable_name="Design Tools">
- <option name="code" hit="Code" />
- <option name="compose" hit="Compose files:" />
- <option name="files" hit="Compose files:" />
- <option name="default" hit="Default Editor Mode" />
- <option name="editor" hit="Default Editor Mode" />
- <option name="mode" hit="Default Editor Mode" />
- <option name="design" hit="Design" />
- <option name="design" hit="Design Tools" />
- <option name="tools" hit="Design Tools" />
- <option name="drawables" hit="Drawables:" />
- <option name="files" hit="Other Kotlin files:" />
- <option name="kotlin" hit="Other Kotlin files:" />
- <option name="other" hit="Other Kotlin files:" />
- <option name="e" hit="Other Resources (e.g. Layout, Menu, Navigation):" />
- <option name="g" hit="Other Resources (e.g. Layout, Menu, Navigation):" />
- <option name="layout" hit="Other Resources (e.g. Layout, Menu, Navigation):" />
- <option name="menu" hit="Other Resources (e.g. Layout, Menu, Navigation):" />
- <option name="navigation" hit="Other Resources (e.g. Layout, Menu, Navigation):" />
- <option name="other" hit="Other Resources (e.g. Layout, Menu, Navigation):" />
- <option name="resources" hit="Other Resources (e.g. Layout, Menu, Navigation):" />
- <option name="design" hit="Show lint icons on design surface" />
- <option name="icons" hit="Show lint icons on design surface" />
- <option name="lint" hit="Show lint icons on design surface" />
- <option name="on" hit="Show lint icons on design surface" />
- <option name="show" hit="Show lint icons on design surface" />
- <option name="surface" hit="Show lint icons on design surface" />
- <option name="split" hit="Split" />
- </configurable>
<configurable id="instant.run" configurable_name="Deployment">
<option name="apply" hit="Automatically perform &quot;Run&quot; when Apply Changes fails" />
<option name="automatically" hit="Automatically perform &quot;Run&quot; when Apply Changes fails" />
diff --git a/searchable-options/design-tools/design-tools.jar/search/design-tools.jar.searchableOptions.xml b/searchable-options/design-tools/design-tools.jar/search/design-tools.jar.searchableOptions.xml
new file mode 100644
index 00000000000..ab20d9882cc
--- /dev/null
+++ b/searchable-options/design-tools/design-tools.jar/search/design-tools.jar.searchableOptions.xml
@@ -0,0 +1,191 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<options>
+ <configurable id="preferences.keymap" configurable_name="Keymap">
+ <option name="action" path="ActionManager" hit="Add Action" />
+ <option name="add" path="ActionManager" hit="Add Action" />
+ <option name="add" path="ActionManager" hit="Add Deep Link" />
+ <option name="deep" path="ActionManager" hit="Add Deep Link" />
+ <option name="link" path="ActionManager" hit="Add Deep Link" />
+ <option name="action" path="ActionManager" hit="Add action to the selected item" />
+ <option name="add" path="ActionManager" hit="Add action to the selected item" />
+ <option name="item" path="ActionManager" hit="Add action to the selected item" />
+ <option name="selected" path="ActionManager" hit="Add action to the selected item" />
+ <option name="the" path="ActionManager" hit="Add action to the selected item" />
+ <option name="to" path="ActionManager" hit="Add action to the selected item" />
+ <option name="add" path="ActionManager" hit="Add deep link to the selected item" />
+ <option name="deep" path="ActionManager" hit="Add deep link to the selected item" />
+ <option name="item" path="ActionManager" hit="Add deep link to the selected item" />
+ <option name="link" path="ActionManager" hit="Add deep link to the selected item" />
+ <option name="selected" path="ActionManager" hit="Add deep link to the selected item" />
+ <option name="the" path="ActionManager" hit="Add deep link to the selected item" />
+ <option name="to" path="ActionManager" hit="Add deep link to the selected item" />
+ <option name="assign" path="ActionManager" hit="Assign Start Destination" />
+ <option name="destination" path="ActionManager" hit="Assign Start Destination" />
+ <option name="start" path="ActionManager" hit="Assign Start Destination" />
+ <option name="assign" path="ActionManager" hit="Assign the start point of navigation graph" />
+ <option name="graph" path="ActionManager" hit="Assign the start point of navigation graph" />
+ <option name="navigation" path="ActionManager" hit="Assign the start point of navigation graph" />
+ <option name="of" path="ActionManager" hit="Assign the start point of navigation graph" />
+ <option name="point" path="ActionManager" hit="Assign the start point of navigation graph" />
+ <option name="start" path="ActionManager" hit="Assign the start point of navigation graph" />
+ <option name="the" path="ActionManager" hit="Assign the start point of navigation graph" />
+ <option name="arrange" path="ActionManager" hit="Auto Arrange" />
+ <option name="auto" path="ActionManager" hit="Auto Arrange" />
+ <option name="change" path="ActionManager" hit="Change to next device in the device menu" />
+ <option name="device" path="ActionManager" hit="Change to next device in the device menu" />
+ <option name="in" path="ActionManager" hit="Change to next device in the device menu" />
+ <option name="menu" path="ActionManager" hit="Change to next device in the device menu" />
+ <option name="next" path="ActionManager" hit="Change to next device in the device menu" />
+ <option name="the" path="ActionManager" hit="Change to next device in the device menu" />
+ <option name="to" path="ActionManager" hit="Change to next device in the device menu" />
+ <option name="change" path="ActionManager" hit="Change to previous device in the device menu" />
+ <option name="device" path="ActionManager" hit="Change to previous device in the device menu" />
+ <option name="in" path="ActionManager" hit="Change to previous device in the device menu" />
+ <option name="menu" path="ActionManager" hit="Change to previous device in the device menu" />
+ <option name="previous" path="ActionManager" hit="Change to previous device in the device menu" />
+ <option name="the" path="ActionManager" hit="Change to previous device in the device menu" />
+ <option name="to" path="ActionManager" hit="Change to previous device in the device menu" />
+ <option name="constraint" path="ActionManager" hit="Constraint Layout Help Panel" />
+ <option name="help" path="ActionManager" hit="Constraint Layout Help Panel" />
+ <option name="layout" path="ActionManager" hit="Constraint Layout Help Panel" />
+ <option name="panel" path="ActionManager" hit="Constraint Layout Help Panel" />
+ <option name="constraint" path="ActionManager" hit="Create Help Panel for Constraint Layout Editor" />
+ <option name="create" path="ActionManager" hit="Create Help Panel for Constraint Layout Editor" />
+ <option name="editor" path="ActionManager" hit="Create Help Panel for Constraint Layout Editor" />
+ <option name="for" path="ActionManager" hit="Create Help Panel for Constraint Layout Editor" />
+ <option name="help" path="ActionManager" hit="Create Help Panel for Constraint Layout Editor" />
+ <option name="layout" path="ActionManager" hit="Create Help Panel for Constraint Layout Editor" />
+ <option name="panel" path="ActionManager" hit="Create Help Panel for Constraint Layout Editor" />
+ <option name="create" path="ActionManager" hit="Create Help Panel for Motion Layout Editor" />
+ <option name="editor" path="ActionManager" hit="Create Help Panel for Motion Layout Editor" />
+ <option name="for" path="ActionManager" hit="Create Help Panel for Motion Layout Editor" />
+ <option name="help" path="ActionManager" hit="Create Help Panel for Motion Layout Editor" />
+ <option name="layout" path="ActionManager" hit="Create Help Panel for Motion Layout Editor" />
+ <option name="motion" path="ActionManager" hit="Create Help Panel for Motion Layout Editor" />
+ <option name="panel" path="ActionManager" hit="Create Help Panel for Motion Layout Editor" />
+ <option name="create" path="ActionManager" hit="Create new Sample Data directory" />
+ <option name="data" path="ActionManager" hit="Create new Sample Data directory" />
+ <option name="directory" path="ActionManager" hit="Create new Sample Data directory" />
+ <option name="new" path="ActionManager" hit="Create new Sample Data directory" />
+ <option name="sample" path="ActionManager" hit="Create new Sample Data directory" />
+ <option name="disable" path="ActionManager" hit="Enable or disable the Night mode of preview" />
+ <option name="enable" path="ActionManager" hit="Enable or disable the Night mode of preview" />
+ <option name="mode" path="ActionManager" hit="Enable or disable the Night mode of preview" />
+ <option name="night" path="ActionManager" hit="Enable or disable the Night mode of preview" />
+ <option name="of" path="ActionManager" hit="Enable or disable the Night mode of preview" />
+ <option name="or" path="ActionManager" hit="Enable or disable the Night mode of preview" />
+ <option name="preview" path="ActionManager" hit="Enable or disable the Night mode of preview" />
+ <option name="the" path="ActionManager" hit="Enable or disable the Night mode of preview" />
+ <option name="force" path="ActionManager" hit="Force Refresh Layout" />
+ <option name="layout" path="ActionManager" hit="Force Refresh Layout" />
+ <option name="refresh" path="ActionManager" hit="Force Refresh Layout" />
+ <option name="help" path="ActionManager" hit="Motion Layout Help Panel" />
+ <option name="layout" path="ActionManager" hit="Motion Layout Help Panel" />
+ <option name="motion" path="ActionManager" hit="Motion Layout Help Panel" />
+ <option name="panel" path="ActionManager" hit="Motion Layout Help Panel" />
+ <option name="device" path="ActionManager" hit="Preview Next Device" />
+ <option name="next" path="ActionManager" hit="Preview Next Device" />
+ <option name="preview" path="ActionManager" hit="Preview Next Device" />
+ <option name="device" path="ActionManager" hit="Preview Previous Device" />
+ <option name="preview" path="ActionManager" hit="Preview Previous Device" />
+ <option name="previous" path="ActionManager" hit="Preview Previous Device" />
+ <option name="items" path="ActionManager" hit="Rearrange the items" />
+ <option name="rearrange" path="ActionManager" hit="Rearrange the items" />
+ <option name="the" path="ActionManager" hit="Rearrange the items" />
+ <option name="preview" path="ActionManager" hit="Refresh preview(s)" />
+ <option name="refresh" path="ActionManager" hit="Refresh preview(s)" />
+ <option name="s" path="ActionManager" hit="Refresh preview(s)" />
+ <option name="default" path="ActionManager" hit="Restore Default Layout" />
+ <option name="layout" path="ActionManager" hit="Restore Default Layout" />
+ <option name="restore" path="ActionManager" hit="Restore Default Layout" />
+ <option name="data" path="ActionManager" hit="Sample Data Directory" />
+ <option name="directory" path="ActionManager" hit="Sample Data Directory" />
+ <option name="sample" path="ActionManager" hit="Sample Data Directory" />
+ <option name="help" path="ActionManager" hit="Show Help Panel" />
+ <option name="panel" path="ActionManager" hit="Show Help Panel" />
+ <option name="show" path="ActionManager" hit="Show Help Panel" />
+ <option name="editor" path="ActionManager" hit="Show Help Panel for Navigation Editor" />
+ <option name="for" path="ActionManager" hit="Show Help Panel for Navigation Editor" />
+ <option name="help" path="ActionManager" hit="Show Help Panel for Navigation Editor" />
+ <option name="navigation" path="ActionManager" hit="Show Help Panel for Navigation Editor" />
+ <option name="panel" path="ActionManager" hit="Show Help Panel for Navigation Editor" />
+ <option name="show" path="ActionManager" hit="Show Help Panel for Navigation Editor" />
+ <option name="editor" path="ActionManager" hit="Show/Hide Help Panel for Layout Editor" />
+ <option name="for" path="ActionManager" hit="Show/Hide Help Panel for Layout Editor" />
+ <option name="help" path="ActionManager" hit="Show/Hide Help Panel for Layout Editor" />
+ <option name="hide" path="ActionManager" hit="Show/Hide Help Panel for Layout Editor" />
+ <option name="layout" path="ActionManager" hit="Show/Hide Help Panel for Layout Editor" />
+ <option name="panel" path="ActionManager" hit="Show/Hide Help Panel for Layout Editor" />
+ <option name="show" path="ActionManager" hit="Show/Hide Help Panel for Layout Editor" />
+ <option name="as" path="ActionManager" hit="Store Current Layout as Default" />
+ <option name="current" path="ActionManager" hit="Store Current Layout as Default" />
+ <option name="default" path="ActionManager" hit="Store Current Layout as Default" />
+ <option name="layout" path="ActionManager" hit="Store Current Layout as Default" />
+ <option name="store" path="ActionManager" hit="Store Current Layout as Default" />
+ <option name="design" path="ActionManager" hit="Switch Design Mode" />
+ <option name="mode" path="ActionManager" hit="Switch Design Mode" />
+ <option name="switch" path="ActionManager" hit="Switch Design Mode" />
+ <option name="and" path="ActionManager" hit="Switch the design mode cycling within Design, Blueprint, and Design + Blueprint" />
+ <option name="blueprint" path="ActionManager" hit="Switch the design mode cycling within Design, Blueprint, and Design + Blueprint" />
+ <option name="cycling" path="ActionManager" hit="Switch the design mode cycling within Design, Blueprint, and Design + Blueprint" />
+ <option name="design" path="ActionManager" hit="Switch the design mode cycling within Design, Blueprint, and Design + Blueprint" />
+ <option name="mode" path="ActionManager" hit="Switch the design mode cycling within Design, Blueprint, and Design + Blueprint" />
+ <option name="switch" path="ActionManager" hit="Switch the design mode cycling within Design, Blueprint, and Design + Blueprint" />
+ <option name="the" path="ActionManager" hit="Switch the design mode cycling within Design, Blueprint, and Design + Blueprint" />
+ <option name="within" path="ActionManager" hit="Switch the design mode cycling within Design, Blueprint, and Design + Blueprint" />
+ <option name="device" path="ActionManager" hit="Toggle Device Night Mode" />
+ <option name="mode" path="ActionManager" hit="Toggle Device Night Mode" />
+ <option name="night" path="ActionManager" hit="Toggle Device Night Mode" />
+ <option name="toggle" path="ActionManager" hit="Toggle Device Night Mode" />
+ <option name="device" path="ActionManager" hit="Toggle Device Orientation" />
+ <option name="orientation" path="ActionManager" hit="Toggle Device Orientation" />
+ <option name="toggle" path="ActionManager" hit="Toggle Device Orientation" />
+ <option name="issue" path="ActionManager" hit="Toggle Issue Panel" />
+ <option name="panel" path="ActionManager" hit="Toggle Issue Panel" />
+ <option name="toggle" path="ActionManager" hit="Toggle Issue Panel" />
+ <option name="and" path="ActionManager" hit="Toggle the preview orientation between portrait and landscape" />
+ <option name="between" path="ActionManager" hit="Toggle the preview orientation between portrait and landscape" />
+ <option name="landscape" path="ActionManager" hit="Toggle the preview orientation between portrait and landscape" />
+ <option name="orientation" path="ActionManager" hit="Toggle the preview orientation between portrait and landscape" />
+ <option name="portrait" path="ActionManager" hit="Toggle the preview orientation between portrait and landscape" />
+ <option name="preview" path="ActionManager" hit="Toggle the preview orientation between portrait and landscape" />
+ <option name="the" path="ActionManager" hit="Toggle the preview orientation between portrait and landscape" />
+ <option name="toggle" path="ActionManager" hit="Toggle the preview orientation between portrait and landscape" />
+ <option name="issue" path="ActionManager" hit="Toggle the visibility of Issue Panel" />
+ <option name="of" path="ActionManager" hit="Toggle the visibility of Issue Panel" />
+ <option name="panel" path="ActionManager" hit="Toggle the visibility of Issue Panel" />
+ <option name="the" path="ActionManager" hit="Toggle the visibility of Issue Panel" />
+ <option name="toggle" path="ActionManager" hit="Toggle the visibility of Issue Panel" />
+ <option name="visibility" path="ActionManager" hit="Toggle the visibility of Issue Panel" />
+ </configurable>
+ <configurable id="nele.options" configurable_name="Design Tools">
+ <option name="code" hit="Code" />
+ <option name="compose" hit="Compose files:" />
+ <option name="files" hit="Compose files:" />
+ <option name="default" hit="Default Editor Mode" />
+ <option name="editor" hit="Default Editor Mode" />
+ <option name="mode" hit="Default Editor Mode" />
+ <option name="design" hit="Design" />
+ <option name="design" hit="Design Tools" />
+ <option name="tools" hit="Design Tools" />
+ <option name="drawables" hit="Drawables:" />
+ <option name="files" hit="Other Kotlin files:" />
+ <option name="kotlin" hit="Other Kotlin files:" />
+ <option name="other" hit="Other Kotlin files:" />
+ <option name="e" hit="Other Resources (e.g. Layout, Menu, Navigation):" />
+ <option name="g" hit="Other Resources (e.g. Layout, Menu, Navigation):" />
+ <option name="layout" hit="Other Resources (e.g. Layout, Menu, Navigation):" />
+ <option name="menu" hit="Other Resources (e.g. Layout, Menu, Navigation):" />
+ <option name="navigation" hit="Other Resources (e.g. Layout, Menu, Navigation):" />
+ <option name="other" hit="Other Resources (e.g. Layout, Menu, Navigation):" />
+ <option name="resources" hit="Other Resources (e.g. Layout, Menu, Navigation):" />
+ <option name="design" hit="Show lint icons on design surface" />
+ <option name="icons" hit="Show lint icons on design surface" />
+ <option name="lint" hit="Show lint icons on design surface" />
+ <option name="on" hit="Show lint icons on design surface" />
+ <option name="show" hit="Show lint icons on design surface" />
+ <option name="surface" hit="Show lint icons on design surface" />
+ <option name="split" hit="Split" />
+ </configurable>
+</options>
+
diff --git a/studio/BUILD b/studio/BUILD
index 314de00ce8b..f494ab10364 100644
--- a/studio/BUILD
+++ b/studio/BUILD
@@ -28,6 +28,7 @@ studio_plugin(
"//tools/adt/idea/.idea/libraries:dexlib2",
"//tools/adt/idea/.idea/libraries:emulator-proto",
"//tools/adt/idea/.idea/libraries:javax-inject",
+ "//tools/adt/idea/.idea/libraries:kxml2",
"//tools/adt/idea/.idea/libraries:layoutinspector-compose-proto",
"//tools/adt/idea/.idea/libraries:layoutinspector-skia-proto",
"//tools/adt/idea/.idea/libraries:layoutinspector-view-proto",
@@ -109,7 +110,6 @@ studio_plugin(
"//tools/adt/idea/app-inspection/inspectors/workmanager/model:intellij.android.app-inspection.inspectors.workmanager.model",
"//tools/adt/idea/app-inspection/inspectors/workmanager/view:intellij.android.app-inspection.inspectors.workmanager.view",
"//tools/adt/idea/build-attribution:intellij.android.build-attribution",
- "//tools/adt/idea/compose-designer:intellij.android.compose-designer",
"//tools/adt/idea/intellij.android.compose-common:intellij.android.compose-common",
"//tools/adt/idea/android:intellij.android.core",
"//tools/adt/idea/dagger:intellij.android.dagger",
@@ -117,8 +117,6 @@ studio_plugin(
"//tools/adt/idea/app-inspection/inspectors/database:intellij.android.app-inspection.inspectors.database",
"//tools/adt/idea/debuggers:intellij.android.debuggers",
"//tools/adt/idea/deploy:intellij.android.deploy",
- "//tools/adt/idea/designer/customview:intellij.android.designer.customview",
- "//tools/adt/idea/designer:intellij.android.designer",
"//tools/adt/idea/emulator:intellij.android.emulator",
"//tools/adt/idea/gradle-tooling/studio-gradle-tooling-api:intellij.android.gradle-tooling.api",
"//tools/adt/idea/gradle-tooling/studio-gradle-tooling-impl:intellij.android.gradle-tooling.impl",
@@ -128,7 +126,6 @@ studio_plugin(
"//tools/adt/idea/layout-inspector:intellij.android.layout-inspector",
"//tools/adt/idea/layout-ui:intellij.android.layout-ui",
"//tools/adt/idea/mlkit:intellij.android.mlkit",
- "//tools/adt/idea/nav/editor:intellij.android.nav.editor",
"//tools/adt/idea/nav/safeargs:intellij.android.nav.safeargs",
"//tools/adt/idea/android-npw:intellij.android.newProjectWizard",
"//tools/adt/idea/observable-ui:intellij.android.observable.ui",
@@ -238,14 +235,13 @@ studio_plugin(
"android-base-common.jar": [
"//tools/base/common:studio.android.sdktools.common",
],
+ "layoutlib-api.jar": [
+ "//tools/base/layoutlib-api:studio.android.sdktools.layoutlib-api",
+ ],
},
# List of modules and libraries we expect to be provided by the platform
provided = [
- "//tools/adt/idea/.idea/libraries:layoutlib", # Plugins :com.android.layoutlib.*" are optional
- "//tools/adt/idea/.idea/libraries:kxml2",
"//tools/adt/idea/android-kotlin:dx", # TODO
- "//tools/base/annotations:studio.android.sdktools.android-annotations",
- "//tools/base/layoutlib-api:studio.android.sdktools.layoutlib-api", # Plugins :com.android.layoutlib.*" are optional
],
resources = {
"resources": [
@@ -314,23 +310,28 @@ studio_plugin(
)
studio_plugin(
- name = "com.android.layoutlib",
- directory = "android-layoutlib",
+ name = "com.android.tools.design",
+ directory = "design-tools",
libs = [
"//tools/adt/idea/.idea/libraries:layoutlib",
- "//tools/adt/idea/.idea/libraries:kxml2",
],
licenses = [
"//prebuilts/studio/layoutlib:licenses",
],
modules = {
- "android-layoutlib.jar": ["//tools/adt/idea/layoutlib:intellij.android.layoutlib"],
- "layoutlib-api.jar": ["//tools/base/layoutlib-api:studio.android.sdktools.layoutlib-api"],
- "android-annotations.jar": ["//tools/base/annotations:studio.android.sdktools.android-annotations"],
+ "design-tools.jar": [
+ "//tools/adt/idea/compose-designer:intellij.android.compose-designer",
+ "//tools/adt/idea/design-plugin:intellij.android.design-plugin",
+ "//tools/adt/idea/designer/customview:intellij.android.designer.customview",
+ "//tools/adt/idea/designer:intellij.android.designer",
+ "//tools/adt/idea/layoutlib:intellij.android.layoutlib",
+ "//tools/adt/idea/nav/editor:intellij.android.nav.editor",
+ ],
},
- provided = [
- "//tools/adt/idea/.idea/libraries:kxml2",
- "//tools/base/annotations:studio.android.sdktools.android-annotations",
+ deps = [
+ ":org.jetbrains.android",
+ "//prebuilts/studio/intellij-sdk:studio-sdk-plugin-Kotlin",
+ "//prebuilts/studio/intellij-sdk:studio-sdk-plugin-platform-images",
],
)
@@ -338,9 +339,6 @@ studio_plugin(
name = "androidx.compose.plugins.idea",
directory = "android-compose-ide-plugin",
modules = {"android-compose-ide-plugin.jar": ["//tools/adt/idea/compose-ide-plugin:intellij.android.compose-ide-plugin"]},
- provided = [
- "//tools/base/layoutlib-api:studio.android.sdktools.layoutlib-api", # layout plugins are optional.
- ],
deps = [
":org.jetbrains.android",
"//prebuilts/studio/intellij-sdk:studio-sdk-plugin-Kotlin",
@@ -516,7 +514,7 @@ android_studio(
":org.jetbrains.android",
":com.android.tools.apk",
":com.android.tools.ndk",
- ":com.android.layoutlib",
+ ":com.android.tools.design",
":androidx.compose.plugins.idea",
":com.google.services.firebase",
":com.google.gct.testing",
@@ -639,7 +637,7 @@ iml_module(
"//tools/adt/idea/android-plugin:intellij.android.plugin[module]",
"//tools/vendor/google/android-apk[module]",
"//tools/adt/idea/compose-ide-plugin:intellij.android.compose-ide-plugin[module]",
- "//tools/adt/idea/layoutlib:intellij.android.layoutlib[module]",
+ "//tools/adt/idea/design-plugin:intellij.android.design-plugin[module]",
"//tools/vendor/google/android-ndk[module]",
"//tools/studio/google/cloud/tools/android-studio-plugin:google-cloud-tools-as[module]",
"//tools/vendor/google/firebase[module]",
diff --git a/studio/studio.iml b/studio/studio.iml
index 7f523aab22f..fcb707b180f 100644
--- a/studio/studio.iml
+++ b/studio/studio.iml
@@ -10,7 +10,7 @@
<orderEntry type="module" module-name="intellij.android.plugin" />
<orderEntry type="module" module-name="android-apk" />
<orderEntry type="module" module-name="intellij.android.compose-ide-plugin" />
- <orderEntry type="module" module-name="intellij.android.layoutlib" />
+ <orderEntry type="module" module-name="intellij.android.design-plugin" />
<orderEntry type="module" module-name="android-ndk" />
<orderEntry type="module" module-name="google-cloud-tools-as" />
<orderEntry type="module" module-name="firebase" />
diff --git a/studio/tests/expected_linux.txt b/studio/tests/expected_linux.txt
index 107f2c860b1..652668436be 100644
--- a/studio/tests/expected_linux.txt
+++ b/studio/tests/expected_linux.txt
@@ -1001,11 +1001,6 @@ android-studio/plugins/Kotlin/lib/parcelize-compiler-plugin-for-ide.jar
android-studio/plugins/Kotlin/lib/sam-with-receiver-compiler-plugin-for-ide.jar
android-studio/plugins/android-apk/lib/android-apk.jar
android-studio/plugins/android-compose-ide-plugin/lib/android-compose-ide-plugin.jar
-android-studio/plugins/android-layoutlib/lib/android-annotations.jar
-android-studio/plugins/android-layoutlib/lib/android-layoutlib.jar
-android-studio/plugins/android-layoutlib/lib/kxml2-2.3.0.jar
-android-studio/plugins/android-layoutlib/lib/layoutlib-api.jar
-android-studio/plugins/android-layoutlib/lib/layoutlib.jar
android-studio/plugins/android-ndk/lib/android-ndk.jar
android-studio/plugins/android-ndk/lib/org.eclipse.cdt.core_6.8.1.201907021957.jar
android-studio/plugins/android-ndk/lib/org.eclipse.equinox.common_3.10.500.v20190621-0852.jar
@@ -2063,9 +2058,11 @@ android-studio/plugins/android/lib/jetifier-core-1.0.0-beta09.jar
android-studio/plugins/android/lib/jps/android-jps-plugin.jar
android-studio/plugins/android/lib/juniversalchardet-1.0.3.jar
android-studio/plugins/android/lib/kotlinx-coroutines-guava-1.3.9.jar
+android-studio/plugins/android/lib/kxml2-2.3.0.jar
android-studio/plugins/android/lib/layout_inspector_compose_java_proto.jar
android-studio/plugins/android/lib/layout_inspector_skia_java_proto.jar
android-studio/plugins/android/lib/layout_inspector_view_java_proto.jar
+android-studio/plugins/android/lib/layoutlib-api.jar
android-studio/plugins/android/lib/layoutlib-loader.jar
android-studio/plugins/android/lib/libam-instrumentation-data-proto.jar
android-studio/plugins/android/lib/libandroid-core-proto.jar
@@ -2776,6 +2773,8 @@ android-studio/plugins/coverage/lib/freemarker.jar
android-studio/plugins/coverage/lib/jacocoagent.jar
android-studio/plugins/coverage/lib/jacocoant.jar
android-studio/plugins/coverage/lib/resources_en.jar
+android-studio/plugins/design-tools/lib/design-tools.jar
+android-studio/plugins/design-tools/lib/layoutlib.jar
android-studio/plugins/editorconfig/lib/editorconfig-core-java.jar
android-studio/plugins/editorconfig/lib/editorconfig.jar
android-studio/plugins/editorconfig/lib/resources_en.jar
diff --git a/studio/tests/expected_mac.txt b/studio/tests/expected_mac.txt
index 663d41fbcec..0d02be87cfc 100644
--- a/studio/tests/expected_mac.txt
+++ b/studio/tests/expected_mac.txt
@@ -987,11 +987,6 @@ Android Studio Preview.app/Contents/plugins/Kotlin/lib/parcelize-compiler-plugin
Android Studio Preview.app/Contents/plugins/Kotlin/lib/sam-with-receiver-compiler-plugin-for-ide.jar
Android Studio Preview.app/Contents/plugins/android-apk/lib/android-apk.jar
Android Studio Preview.app/Contents/plugins/android-compose-ide-plugin/lib/android-compose-ide-plugin.jar
-Android Studio Preview.app/Contents/plugins/android-layoutlib/lib/android-annotations.jar
-Android Studio Preview.app/Contents/plugins/android-layoutlib/lib/android-layoutlib.jar
-Android Studio Preview.app/Contents/plugins/android-layoutlib/lib/kxml2-2.3.0.jar
-Android Studio Preview.app/Contents/plugins/android-layoutlib/lib/layoutlib-api.jar
-Android Studio Preview.app/Contents/plugins/android-layoutlib/lib/layoutlib.jar
Android Studio Preview.app/Contents/plugins/android-ndk/lib/android-ndk.jar
Android Studio Preview.app/Contents/plugins/android-ndk/lib/org.eclipse.cdt.core_6.8.1.201907021957.jar
Android Studio Preview.app/Contents/plugins/android-ndk/lib/org.eclipse.equinox.common_3.10.500.v20190621-0852.jar
@@ -2059,9 +2054,11 @@ Android Studio Preview.app/Contents/plugins/android/lib/jetifier-core-1.0.0-beta
Android Studio Preview.app/Contents/plugins/android/lib/jps/android-jps-plugin.jar
Android Studio Preview.app/Contents/plugins/android/lib/juniversalchardet-1.0.3.jar
Android Studio Preview.app/Contents/plugins/android/lib/kotlinx-coroutines-guava-1.3.9.jar
+Android Studio Preview.app/Contents/plugins/android/lib/kxml2-2.3.0.jar
Android Studio Preview.app/Contents/plugins/android/lib/layout_inspector_compose_java_proto.jar
Android Studio Preview.app/Contents/plugins/android/lib/layout_inspector_skia_java_proto.jar
Android Studio Preview.app/Contents/plugins/android/lib/layout_inspector_view_java_proto.jar
+Android Studio Preview.app/Contents/plugins/android/lib/layoutlib-api.jar
Android Studio Preview.app/Contents/plugins/android/lib/layoutlib-loader.jar
Android Studio Preview.app/Contents/plugins/android/lib/libam-instrumentation-data-proto.jar
Android Studio Preview.app/Contents/plugins/android/lib/libandroid-core-proto.jar
@@ -2769,6 +2766,8 @@ Android Studio Preview.app/Contents/plugins/coverage/lib/freemarker.jar
Android Studio Preview.app/Contents/plugins/coverage/lib/jacocoagent.jar
Android Studio Preview.app/Contents/plugins/coverage/lib/jacocoant.jar
Android Studio Preview.app/Contents/plugins/coverage/lib/resources_en.jar
+Android Studio Preview.app/Contents/plugins/design-tools/lib/design-tools.jar
+Android Studio Preview.app/Contents/plugins/design-tools/lib/layoutlib.jar
Android Studio Preview.app/Contents/plugins/editorconfig/lib/editorconfig-core-java.jar
Android Studio Preview.app/Contents/plugins/editorconfig/lib/editorconfig.jar
Android Studio Preview.app/Contents/plugins/editorconfig/lib/resources_en.jar
diff --git a/studio/tests/expected_mac_arm.txt b/studio/tests/expected_mac_arm.txt
index ac92a574d93..689931a1ebb 100644
--- a/studio/tests/expected_mac_arm.txt
+++ b/studio/tests/expected_mac_arm.txt
@@ -1011,11 +1011,6 @@ Android Studio Preview.app/Contents/plugins/Kotlin/lib/parcelize-compiler-plugin
Android Studio Preview.app/Contents/plugins/Kotlin/lib/sam-with-receiver-compiler-plugin-for-ide.jar
Android Studio Preview.app/Contents/plugins/android-apk/lib/android-apk.jar
Android Studio Preview.app/Contents/plugins/android-compose-ide-plugin/lib/android-compose-ide-plugin.jar
-Android Studio Preview.app/Contents/plugins/android-layoutlib/lib/android-annotations.jar
-Android Studio Preview.app/Contents/plugins/android-layoutlib/lib/android-layoutlib.jar
-Android Studio Preview.app/Contents/plugins/android-layoutlib/lib/kxml2-2.3.0.jar
-Android Studio Preview.app/Contents/plugins/android-layoutlib/lib/layoutlib-api.jar
-Android Studio Preview.app/Contents/plugins/android-layoutlib/lib/layoutlib.jar
Android Studio Preview.app/Contents/plugins/android-ndk/lib/android-ndk.jar
Android Studio Preview.app/Contents/plugins/android-ndk/lib/org.eclipse.cdt.core_6.8.1.201907021957.jar
Android Studio Preview.app/Contents/plugins/android-ndk/lib/org.eclipse.equinox.common_3.10.500.v20190621-0852.jar
@@ -1066,9 +1061,11 @@ Android Studio Preview.app/Contents/plugins/android/lib/jetifier-core-1.0.0-beta
Android Studio Preview.app/Contents/plugins/android/lib/jps/android-jps-plugin.jar
Android Studio Preview.app/Contents/plugins/android/lib/juniversalchardet-1.0.3.jar
Android Studio Preview.app/Contents/plugins/android/lib/kotlinx-coroutines-guava-1.3.9.jar
+Android Studio Preview.app/Contents/plugins/android/lib/kxml2-2.3.0.jar
Android Studio Preview.app/Contents/plugins/android/lib/layout_inspector_compose_java_proto.jar
Android Studio Preview.app/Contents/plugins/android/lib/layout_inspector_skia_java_proto.jar
Android Studio Preview.app/Contents/plugins/android/lib/layout_inspector_view_java_proto.jar
+Android Studio Preview.app/Contents/plugins/android/lib/layoutlib-api.jar
Android Studio Preview.app/Contents/plugins/android/lib/layoutlib-loader.jar
Android Studio Preview.app/Contents/plugins/android/lib/libam-instrumentation-data-proto.jar
Android Studio Preview.app/Contents/plugins/android/lib/libandroid-core-proto.jar
@@ -1773,6 +1770,8 @@ Android Studio Preview.app/Contents/plugins/coverage/lib/freemarker.jar
Android Studio Preview.app/Contents/plugins/coverage/lib/jacocoagent.jar
Android Studio Preview.app/Contents/plugins/coverage/lib/jacocoant.jar
Android Studio Preview.app/Contents/plugins/coverage/lib/resources_en.jar
+Android Studio Preview.app/Contents/plugins/design-tools/lib/design-tools.jar
+Android Studio Preview.app/Contents/plugins/design-tools/lib/layoutlib.jar
Android Studio Preview.app/Contents/plugins/editorconfig/lib/editorconfig-core-java.jar
Android Studio Preview.app/Contents/plugins/editorconfig/lib/editorconfig.jar
Android Studio Preview.app/Contents/plugins/editorconfig/lib/resources_en.jar
diff --git a/studio/tests/expected_win.txt b/studio/tests/expected_win.txt
index 7b5784ac1b2..fa403f7ddf6 100644
--- a/studio/tests/expected_win.txt
+++ b/studio/tests/expected_win.txt
@@ -1010,11 +1010,6 @@ android-studio/plugins/Kotlin/lib/parcelize-compiler-plugin-for-ide.jar
android-studio/plugins/Kotlin/lib/sam-with-receiver-compiler-plugin-for-ide.jar
android-studio/plugins/android-apk/lib/android-apk.jar
android-studio/plugins/android-compose-ide-plugin/lib/android-compose-ide-plugin.jar
-android-studio/plugins/android-layoutlib/lib/android-annotations.jar
-android-studio/plugins/android-layoutlib/lib/android-layoutlib.jar
-android-studio/plugins/android-layoutlib/lib/kxml2-2.3.0.jar
-android-studio/plugins/android-layoutlib/lib/layoutlib-api.jar
-android-studio/plugins/android-layoutlib/lib/layoutlib.jar
android-studio/plugins/android-ndk/lib/android-ndk.jar
android-studio/plugins/android-ndk/lib/org.eclipse.cdt.core_6.8.1.201907021957.jar
android-studio/plugins/android-ndk/lib/org.eclipse.equinox.common_3.10.500.v20190621-0852.jar
@@ -1591,9 +1586,11 @@ android-studio/plugins/android/lib/jetifier-core-1.0.0-beta09.jar
android-studio/plugins/android/lib/jps/android-jps-plugin.jar
android-studio/plugins/android/lib/juniversalchardet-1.0.3.jar
android-studio/plugins/android/lib/kotlinx-coroutines-guava-1.3.9.jar
+android-studio/plugins/android/lib/kxml2-2.3.0.jar
android-studio/plugins/android/lib/layout_inspector_compose_java_proto.jar
android-studio/plugins/android/lib/layout_inspector_skia_java_proto.jar
android-studio/plugins/android/lib/layout_inspector_view_java_proto.jar
+android-studio/plugins/android/lib/layoutlib-api.jar
android-studio/plugins/android/lib/layoutlib-loader.jar
android-studio/plugins/android/lib/libam-instrumentation-data-proto.jar
android-studio/plugins/android/lib/libandroid-core-proto.jar
@@ -2307,6 +2304,8 @@ android-studio/plugins/coverage/lib/freemarker.jar
android-studio/plugins/coverage/lib/jacocoagent.jar
android-studio/plugins/coverage/lib/jacocoant.jar
android-studio/plugins/coverage/lib/resources_en.jar
+android-studio/plugins/design-tools/lib/design-tools.jar
+android-studio/plugins/design-tools/lib/layoutlib.jar
android-studio/plugins/editorconfig/lib/editorconfig-core-java.jar
android-studio/plugins/editorconfig/lib/editorconfig.jar
android-studio/plugins/editorconfig/lib/resources_en.jar
diff --git a/studio/tests/startup_test.py b/studio/tests/startup_test.py
index 09f27337f59..f1df76a29b3 100644
--- a/studio/tests/startup_test.py
+++ b/studio/tests/startup_test.py
@@ -112,6 +112,7 @@ class StartUpTest(unittest.TestCase):
"Compose",
"Configuration Script",
"Copyright",
+ "Design Tools",
"EditorConfig",
"Emoji Picker",
"Firebase App Indexing",
@@ -137,7 +138,6 @@ class StartUpTest(unittest.TestCase):
"JetBrains Repository Search",
"JetBrains maven model api classes",
"Kotlin",
- "Layoutlib",
"Machine Learning Code Completion",
"Machine Learning Code Completion Models",
"Mercurial",