diff --git a/appinventor/appengine-backend/build.gradle.kts b/appinventor/appengine-backend/build.gradle.kts
new file mode 100644
index 00000000000..8ebe7a1c8d8
--- /dev/null
+++ b/appinventor/appengine-backend/build.gradle.kts
@@ -0,0 +1,31 @@
+plugins {
+ java
+ war
+ id("com.google.cloud.tools.appengine-standard") version "2.4.4"
+}
+
+group = "com.google.appinventor"
+version = "unspecified"
+
+java {
+ toolchain {
+ languageVersion.set(JavaLanguageVersion.of(8))
+ }
+}
+
+appengine {
+ tools {
+ setCloudSdkHome("C:\\Program Files (x86)\\Google\\Cloud SDK\\google-cloud-sdk")
+ cloudSdkVersion = "405.0.1"
+ }
+ deploy {
+ version = "1"
+ projectId = "your GCP project ID"
+ }
+}
+
+dependencies {
+ implementation(projects.appengineShared)
+ implementation("com.google.appengine:appengine-api-1.0-sdk:2.0.9")
+ providedCompile("javax.servlet:javax.servlet-api:3.1.0")
+}
diff --git a/appinventor/appengine/src/com/google/appinventor/server/AdminInfoServiceImpl.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/AdminInfoServiceImpl.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/AdminInfoServiceImpl.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/AdminInfoServiceImpl.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/BlobUpgradeServlet.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/BlobUpgradeServlet.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/BlobUpgradeServlet.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/BlobUpgradeServlet.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/BuildOutputServlet.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/BuildOutputServlet.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/BuildOutputServlet.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/BuildOutputServlet.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/ComponentServiceImpl.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/ComponentServiceImpl.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/ComponentServiceImpl.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/ComponentServiceImpl.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/CrashReport.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/CrashReport.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/CrashReport.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/CrashReport.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/DownloadServlet.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/DownloadServlet.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/DownloadServlet.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/DownloadServlet.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/FeedbackServlet.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/FeedbackServlet.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/FeedbackServlet.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/FeedbackServlet.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/FileExporter.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/FileExporter.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/FileExporter.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/FileExporter.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/FileExporterImpl.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/FileExporterImpl.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/FileExporterImpl.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/FileExporterImpl.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/FileImporter.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/FileImporter.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/FileImporter.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/FileImporter.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/FileImporterException.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/FileImporterException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/FileImporterException.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/FileImporterException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/FileImporterImpl.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/FileImporterImpl.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/FileImporterImpl.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/FileImporterImpl.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/GalleryEmail.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/GalleryEmail.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/GalleryEmail.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/GalleryEmail.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/GetMotdServiceImpl.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/GetMotdServiceImpl.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/GetMotdServiceImpl.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/GetMotdServiceImpl.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/LocalUser.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/LocalUser.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/LocalUser.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/LocalUser.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/LoginServlet.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/LoginServlet.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/LoginServlet.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/LoginServlet.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/LogoutServlet.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/LogoutServlet.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/LogoutServlet.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/LogoutServlet.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/OdeAuthFilter.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/OdeAuthFilter.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/OdeAuthFilter.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/OdeAuthFilter.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/OdeRemoteServiceServlet.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/OdeRemoteServiceServlet.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/OdeRemoteServiceServlet.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/OdeRemoteServiceServlet.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/OdeServlet.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/OdeServlet.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/OdeServlet.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/OdeServlet.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/ProjectServiceImpl.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/ProjectServiceImpl.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/ProjectServiceImpl.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/ProjectServiceImpl.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/ReceiveBuildServlet.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/ReceiveBuildServlet.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/ReceiveBuildServlet.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/ReceiveBuildServlet.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/RestServlet.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/RestServlet.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/RestServlet.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/RestServlet.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/Server.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/Server.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/Server.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/Server.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/TosServlet.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/TosServlet.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/TosServlet.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/TosServlet.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/UploadServlet.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/UploadServlet.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/UploadServlet.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/UploadServlet.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/UserInfoServiceImpl.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/UserInfoServiceImpl.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/UserInfoServiceImpl.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/UserInfoServiceImpl.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/Whitelist.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/Whitelist.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/Whitelist.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/Whitelist.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/components/FirebaseAuthServiceImpl.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/components/FirebaseAuthServiceImpl.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/components/FirebaseAuthServiceImpl.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/components/FirebaseAuthServiceImpl.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/cookieauth/CookieAuth.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/cookieauth/CookieAuth.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/cookieauth/CookieAuth.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/cookieauth/CookieAuth.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/cookieauth/cookie.proto b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/cookieauth/cookie.proto
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/cookieauth/cookie.proto
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/cookieauth/cookie.proto
diff --git a/appinventor/appengine/src/com/google/appinventor/server/encryption/EncryptionException.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/encryption/EncryptionException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/encryption/EncryptionException.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/encryption/EncryptionException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/encryption/EncryptionStrategy.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/encryption/EncryptionStrategy.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/encryption/EncryptionStrategy.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/encryption/EncryptionStrategy.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/encryption/Encryptor.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/encryption/Encryptor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/encryption/Encryptor.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/encryption/Encryptor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/encryption/KeyczarEncryptor.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/encryption/KeyczarEncryptor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/encryption/KeyczarEncryptor.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/encryption/KeyczarEncryptor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/encryption/NopEncryptor.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/encryption/NopEncryptor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/encryption/NopEncryptor.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/encryption/NopEncryptor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/flags/Flag.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/flags/Flag.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/flags/Flag.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/flags/Flag.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/flags/IllegalFlagValueException.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/flags/IllegalFlagValueException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/flags/IllegalFlagValueException.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/flags/IllegalFlagValueException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/loginmessages_en.properties b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/loginmessages_en.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/loginmessages_en.properties
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/loginmessages_en.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/server/loginmessages_lt.properties b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/loginmessages_lt.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/loginmessages_lt.properties
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/loginmessages_lt.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/server/loginmessages_pt.properties b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/loginmessages_pt.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/loginmessages_pt.properties
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/loginmessages_pt.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/server/loginmessages_zh_cn.properties b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/loginmessages_zh_cn.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/loginmessages_zh_cn.properties
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/loginmessages_zh_cn.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/server/project/CommonProjectService.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/project/CommonProjectService.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/project/CommonProjectService.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/project/CommonProjectService.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/project/utils/Security.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/project/utils/Security.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/project/utils/Security.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/project/utils/Security.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/project/utils/TempFiles.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/project/utils/TempFiles.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/project/utils/TempFiles.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/project/utils/TempFiles.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/project/youngandroid/GalleryProtobuf.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/project/youngandroid/GalleryProtobuf.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/project/youngandroid/GalleryProtobuf.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/project/youngandroid/GalleryProtobuf.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/project/youngandroid/GalleryToken.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/project/youngandroid/GalleryToken.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/project/youngandroid/GalleryToken.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/project/youngandroid/GalleryToken.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/project/youngandroid/YoungAndroidProjectService.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/project/youngandroid/YoungAndroidProjectService.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/project/youngandroid/YoungAndroidProjectService.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/project/youngandroid/YoungAndroidProjectService.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/project/youngandroid/YoungAndroidSettingsBuilder.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/project/youngandroid/YoungAndroidSettingsBuilder.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/project/youngandroid/YoungAndroidSettingsBuilder.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/project/youngandroid/YoungAndroidSettingsBuilder.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/project/youngandroid/gallerytoken.proto b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/project/youngandroid/gallerytoken.proto
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/project/youngandroid/gallerytoken.proto
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/project/youngandroid/gallerytoken.proto
diff --git a/appinventor/appengine/src/com/google/appinventor/server/properties/json/ServerJsonArray.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/properties/json/ServerJsonArray.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/properties/json/ServerJsonArray.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/properties/json/ServerJsonArray.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/properties/json/ServerJsonBoolean.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/properties/json/ServerJsonBoolean.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/properties/json/ServerJsonBoolean.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/properties/json/ServerJsonBoolean.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/properties/json/ServerJsonNumber.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/properties/json/ServerJsonNumber.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/properties/json/ServerJsonNumber.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/properties/json/ServerJsonNumber.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/properties/json/ServerJsonObject.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/properties/json/ServerJsonObject.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/properties/json/ServerJsonObject.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/properties/json/ServerJsonObject.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/properties/json/ServerJsonParser.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/properties/json/ServerJsonParser.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/properties/json/ServerJsonParser.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/properties/json/ServerJsonParser.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/properties/json/ServerJsonString.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/properties/json/ServerJsonString.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/properties/json/ServerJsonString.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/properties/json/ServerJsonString.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/properties/json/ServerJsonValue.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/properties/json/ServerJsonValue.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/properties/json/ServerJsonValue.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/properties/json/ServerJsonValue.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/storage/BlobReadException.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/BlobReadException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/storage/BlobReadException.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/BlobReadException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/storage/BlobWriteException.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/BlobWriteException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/storage/BlobWriteException.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/BlobWriteException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/storage/ObjectifyException.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/ObjectifyException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/storage/ObjectifyException.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/ObjectifyException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/storage/ObjectifyStorageIo.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/ObjectifyStorageIo.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/storage/ObjectifyStorageIo.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/ObjectifyStorageIo.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/storage/StorageIo.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/StorageIo.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/storage/StorageIo.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/StorageIo.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/storage/StorageIoInstanceHolder.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/StorageIoInstanceHolder.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/storage/StorageIoInstanceHolder.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/StorageIoInstanceHolder.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/storage/StoredData.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/StoredData.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/storage/StoredData.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/StoredData.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/storage/UnauthorizedAccessException.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/UnauthorizedAccessException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/storage/UnauthorizedAccessException.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/UnauthorizedAccessException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/storage/UserAlreadyExistsException.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/UserAlreadyExistsException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/storage/UserAlreadyExistsException.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/storage/UserAlreadyExistsException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/tokenauth/CloudDBTokenAuth.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokenauth/CloudDBTokenAuth.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/tokenauth/CloudDBTokenAuth.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokenauth/CloudDBTokenAuth.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/tokenauth/TokenAuthServiceImpl.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokenauth/TokenAuthServiceImpl.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/tokenauth/TokenAuthServiceImpl.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokenauth/TokenAuthServiceImpl.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/tokenauth/TranslatorToken.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokenauth/TranslatorToken.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/tokenauth/TranslatorToken.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokenauth/TranslatorToken.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/tokenauth/clouddb.proto b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokenauth/clouddb.proto
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/tokenauth/clouddb.proto
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokenauth/clouddb.proto
diff --git a/appinventor/appengine/src/com/google/appinventor/server/tokenauth/tr.proto b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokenauth/tr.proto
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/tokenauth/tr.proto
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokenauth/tr.proto
diff --git a/appinventor/appengine/src/com/google/appinventor/server/tokens/Token.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokens/Token.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/tokens/Token.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokens/Token.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/tokens/TokenException.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokens/TokenException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/tokens/TokenException.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokens/TokenException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/tokens/TokenProto.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokens/TokenProto.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/tokens/TokenProto.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokens/TokenProto.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/tokens/token.proto b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokens/token.proto
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/tokens/token.proto
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/tokens/token.proto
diff --git a/appinventor/appengine/src/com/google/appinventor/server/util/BuildData.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/BuildData.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/util/BuildData.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/BuildData.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/util/CacheHeaders.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/CacheHeaders.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/util/CacheHeaders.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/CacheHeaders.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/util/CacheHeadersImpl.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/CacheHeadersImpl.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/util/CacheHeadersImpl.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/CacheHeadersImpl.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/util/CsvParser.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/CsvParser.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/util/CsvParser.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/CsvParser.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/util/FileUtil.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/FileUtil.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/util/FileUtil.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/FileUtil.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/util/ModifiedHeaders.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/ModifiedHeaders.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/util/ModifiedHeaders.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/ModifiedHeaders.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/util/PasswordHash.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/PasswordHash.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/util/PasswordHash.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/PasswordHash.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/util/UriBuilder.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/UriBuilder.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/util/UriBuilder.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/UriBuilder.java
diff --git a/appinventor/appengine/src/com/google/appinventor/server/util/VersionString.java b/appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/VersionString.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/server/util/VersionString.java
rename to appinventor/appengine-backend/src/main/java/com/google/appinventor/server/util/VersionString.java
diff --git a/appinventor/appengine/war/WEB-INF/appengine-web.xml b/appinventor/appengine-backend/src/main/webapp/WEB-INF/appengine-web.xml
similarity index 100%
rename from appinventor/appengine/war/WEB-INF/appengine-web.xml
rename to appinventor/appengine-backend/src/main/webapp/WEB-INF/appengine-web.xml
diff --git a/appinventor/appengine/war/WEB-INF/log4j.properties b/appinventor/appengine-backend/src/main/webapp/WEB-INF/log4j.properties
similarity index 100%
rename from appinventor/appengine/war/WEB-INF/log4j.properties
rename to appinventor/appengine-backend/src/main/webapp/WEB-INF/log4j.properties
diff --git a/appinventor/appengine/war/WEB-INF/logging.properties b/appinventor/appengine-backend/src/main/webapp/WEB-INF/logging.properties
similarity index 100%
rename from appinventor/appengine/war/WEB-INF/logging.properties
rename to appinventor/appengine-backend/src/main/webapp/WEB-INF/logging.properties
diff --git a/appinventor/appengine/war/WEB-INF/queue.xml b/appinventor/appengine-backend/src/main/webapp/WEB-INF/queue.xml
similarity index 100%
rename from appinventor/appengine/war/WEB-INF/queue.xml
rename to appinventor/appengine-backend/src/main/webapp/WEB-INF/queue.xml
diff --git a/appinventor/appengine/war/WEB-INF/web.xml b/appinventor/appengine-backend/src/main/webapp/WEB-INF/web.xml
similarity index 100%
rename from appinventor/appengine/war/WEB-INF/web.xml
rename to appinventor/appengine-backend/src/main/webapp/WEB-INF/web.xml
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/Bad-Extension.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/Bad-Extension.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/Bad-Extension.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/Bad-Extension.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/BarOld.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/BarOld.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/BarOld.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/BarOld.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/Buggy.zip b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/Buggy.zip
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/Buggy.zip
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/Buggy.zip
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/ComponentServiceTest.java b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/ComponentServiceTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/ComponentServiceTest.java
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/ComponentServiceTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/Corrupt-Extension.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/Corrupt-Extension.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/Corrupt-Extension.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/Corrupt-Extension.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/CorruptExtensionTestMissingDescriptors.aia b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/CorruptExtensionTestMissingDescriptors.aia
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/CorruptExtensionTestMissingDescriptors.aia
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/CorruptExtensionTestMissingDescriptors.aia
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/DownloadServletTest.java b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/DownloadServletTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/DownloadServletTest.java
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/DownloadServletTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/EmptyZip.zip b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/EmptyZip.zip
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/EmptyZip.zip
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/EmptyZip.zip
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/Extension-Bundle-With-2-Extensions.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/Extension-Bundle-With-2-Extensions.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/Extension-Bundle-With-2-Extensions.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/Extension-Bundle-With-2-Extensions.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/Extension-Bundle.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/Extension-Bundle.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/Extension-Bundle.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/Extension-Bundle.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/FCQN-Single-Extension.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/FCQN-Single-Extension.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/FCQN-Single-Extension.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/FCQN-Single-Extension.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/FileExporterImplTest.java b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/FileExporterImplTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/FileExporterImplTest.java
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/FileExporterImplTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/FileImporterImplTest.java b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/FileImporterImplTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/FileImporterImplTest.java
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/FileImporterImplTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/FooBar.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/FooBar.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/FooBar.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/FooBar.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/FooOld.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/FooOld.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/FooOld.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/FooOld.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/LocalDatastoreTestCase.java b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/LocalDatastoreTestCase.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/LocalDatastoreTestCase.java
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/LocalDatastoreTestCase.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/NotAValidProjectArchive.zip b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/NotAValidProjectArchive.zip
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/NotAValidProjectArchive.zip
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/NotAValidProjectArchive.zip
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/OdeAuthFilterTest.java b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/OdeAuthFilterTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/OdeAuthFilterTest.java
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/OdeAuthFilterTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/OldExtensionTest.aia b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/OldExtensionTest.aia
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/OldExtensionTest.aia
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/OldExtensionTest.aia
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/Project1.zip b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/Project1.zip
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/Project1.zip
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/Project1.zip
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/ProjectServiceTest.java b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/ProjectServiceTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/ProjectServiceTest.java
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/ProjectServiceTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/ProjectWithAssets.zip b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/ProjectWithAssets.zip
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/ProjectWithAssets.zip
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/ProjectWithAssets.zip
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/Transition-Extension-Bundle.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/Transition-Extension-Bundle.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/Transition-Extension-Bundle.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/Transition-Extension-Bundle.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/Transition-Extension-With-Files-Reversed.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/Transition-Extension-With-Files-Reversed.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/Transition-Extension-With-Files-Reversed.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/Transition-Extension-With-Files-Reversed.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/WEB-INF/whitelist b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/WEB-INF/whitelist
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/WEB-INF/whitelist
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/WEB-INF/whitelist
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/WhitelistTest.java b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/WhitelistTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/WhitelistTest.java
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/WhitelistTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/encryption/KeyczarEncryptorTest.java b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/encryption/KeyczarEncryptorTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/encryption/KeyczarEncryptorTest.java
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/encryption/KeyczarEncryptorTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/flags/FlagTest.java b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/flags/FlagTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/flags/FlagTest.java
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/flags/FlagTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/package.Component.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/package.Component.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/package.Component.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/package.Component.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/project/utils/SecurityTest.java b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/project/utils/SecurityTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/project/utils/SecurityTest.java
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/project/utils/SecurityTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/project/utils/TempFilesTest.java b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/project/utils/TempFilesTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/project/utils/TempFilesTest.java
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/project/utils/TempFilesTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/project/youngandroid/YoungAndroidProjectServiceTest.java b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/project/youngandroid/YoungAndroidProjectServiceTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/project/youngandroid/YoungAndroidProjectServiceTest.java
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/project/youngandroid/YoungAndroidProjectServiceTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/storage/ObjectifyStorageIoTest.java b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/storage/ObjectifyStorageIoTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/storage/ObjectifyStorageIoTest.java
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/storage/ObjectifyStorageIoTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/test.EmptyComponentDescriptor.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/test.EmptyComponentDescriptor.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/test.EmptyComponentDescriptor.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/test.EmptyComponentDescriptor.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/test.Extension1.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/test.Extension1.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/test.Extension1.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/test.Extension1.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/test.Extension3.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/test.Extension3.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/test.Extension3.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/test.Extension3.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/test.Extension4.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/test.Extension4.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/test.Extension4.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/test.Extension4.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/test.NoComponentDescriptor.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/test.NoComponentDescriptor.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/test.NoComponentDescriptor.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/test.NoComponentDescriptor.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/test2.Extension2.aix b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/test2.Extension2.aix
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/test2.Extension2.aix
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/test2.Extension2.aix
diff --git a/appinventor/appengine/tests/com/google/appinventor/server/util/VersionStringTest.java b/appinventor/appengine-backend/src/test/java/com/google/appinventor/server/util/VersionStringTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/server/util/VersionStringTest.java
rename to appinventor/appengine-backend/src/test/java/com/google/appinventor/server/util/VersionStringTest.java
diff --git a/appinventor/appengine-frontend/build.gradle.kts b/appinventor/appengine-frontend/build.gradle.kts
new file mode 100644
index 00000000000..63856ed5e69
--- /dev/null
+++ b/appinventor/appengine-frontend/build.gradle.kts
@@ -0,0 +1,75 @@
+plugins {
+// java
+ war
+ id("org.docstr.gwt")
+}
+
+group = "com.google.appinventor"
+version = "unspecified"
+
+java {
+ toolchain {
+ languageVersion.set(JavaLanguageVersion.of(8))
+ }
+ sourceSets {
+ main {
+ java {
+ // FIXME: This requires us to run :components:assembleRelease first.
+ // Adds the annotation processor output to the classpath
+ // - AutogeneratedOdeMessages.java
+ // - ComponentTranslation.java
+ srcDirs("../components/build/generated/ap_generated_sources/release/out/")
+ exclude("*.md", "*.json", "*.txt")
+ }
+ }
+ }
+}
+
+tasks.withType {
+ options.encoding = "UTF-8"
+}
+
+//project(":components").afterEvaluate {
+// java.sourceSets["main"].java.srcDir(
+// project(":components").sourceSets["main"].output.generatedSourcesDirs.files.filter {
+// it.name in listOf(
+// "AutogeneratedOdeMessages.java",
+// "ComponentsTranslation.java"
+// )
+// }
+// )
+//}
+
+gwt {
+ gwtVersion = "2.10.0"
+ modules("com.google.appinventor.YaClient")
+ devModules("com.google.appinventor.YaClient-dev")
+
+ maxHeapSize = "1G"
+ compiler.strict = true
+ println("##### SRC: ${src.files}")
+// println("##### CLASSPATH: ${}")
+ println("##### MODULES: ${modules}")
+// logLevel = org.docstr.gradle.plugins.gwt.LogLevel.ALL
+
+// src += files(tasks.compileJava.get().options.generatedSourceOutputDirectory)
+// src += files(project(":common-utils").sourceSets["main"].allJava) + files(project(":common-utils").sourceSets["main"].resources)
+}
+
+dependencies {
+ gwt(projects.commonUtils)
+ gwt(projects.commonVersion)
+ gwt(projects.componentConstants)
+ gwt(projects.appengineShared)
+ implementation(projects.commonUtils)
+ implementation(projects.commonVersion)
+ implementation(projects.componentConstants)
+ implementation(projects.appengineShared)
+ implementation("com.google.gwt:gwt-user:2.10.0")
+ implementation("com.google.gwt:gwt-dev:2.10.0")
+ implementation("com.allen-sauer.gwt.dnd:gwt-dnd:3.2.3")
+ implementation("com.googlecode.gwtquery:gwtquery:1.5-beta1")
+ implementation("com.google.gwt:gwt-incubator:2.0.1")
+ implementation("org.pepstock:charba:2.5")
+ implementation("org.json:json:20220320")
+}
diff --git a/appinventor/appengine/src/com/google/appinventor/client/AdminUserList.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/AdminUserList.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/AdminUserList.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/AdminUserList.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/AssetManager.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/AssetManager.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/AssetManager.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/AssetManager.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/BugReport.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/BugReport.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/BugReport.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/BugReport.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/ConnectProgressBar.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/ConnectProgressBar.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/ConnectProgressBar.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/ConnectProgressBar.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/DesignToolbar.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/DesignToolbar.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/DesignToolbar.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/DesignToolbar.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/ErrorReporter.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/ErrorReporter.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/ErrorReporter.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/ErrorReporter.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/ExtendedServiceProxy.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/ExtendedServiceProxy.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/ExtendedServiceProxy.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/ExtendedServiceProxy.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/Images.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/Images.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/Images.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/Images.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/LoadGalleryProject.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/LoadGalleryProject.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/LoadGalleryProject.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/LoadGalleryProject.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/Log.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/Log.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/Log.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/Log.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/Logger.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/Logger.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/Logger.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/Logger.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/MotdFetcher.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/MotdFetcher.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/MotdFetcher.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/MotdFetcher.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/MultiRegistry.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/MultiRegistry.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/MultiRegistry.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/MultiRegistry.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/Ode.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/Ode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/Ode.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/Ode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeAsyncCallback.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeAsyncCallback.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeAsyncCallback.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeAsyncCallback.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeBoxRegistry.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeBoxRegistry.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeBoxRegistry.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeBoxRegistry.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages.java
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_ca.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_ca.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_ca.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_ca.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_de.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_de.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_de.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_de.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_es_ES.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_es_ES.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_es_ES.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_es_ES.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_fr_FR.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_fr_FR.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_fr_FR.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_fr_FR.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_hu.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_hu.properties
old mode 100755
new mode 100644
similarity index 98%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_hu.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_hu.properties
index 1a823c9f3b4..24118c4903a
--- a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_hu.properties
+++ b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_hu.properties
@@ -1,1681 +1,1681 @@
-defaultText = Alapértelmezett
-cancelButton = Mégse
-okButton = OK
-dismissButton = Elvetés
-oldNameLabel = Jelenlegi név:
-newNameLabel = Új név:
-noneCaption = Nincs
-deleteButton = Törlés
-deleteProjectButton = Projekt törlése
-publishToGalleryButton = Megosztás a Galériában
-updateGalleryAppButton = Alkalmazás új verziójának feltöltése a Galériába
-showWarnings = Figyelmeztetések mutatása
-hideWarnings = Figyelmeztetések elrejtése
-addButton = Fájl feltöltése...
-projectNameHeader = Név
-projectDateCreatedHeader = Készítés dátuma
-projectDateModifiedHeader = Módosítás dátuma
-projectPublishedHeader = Megosztva a Galériában
-saveButton = Mentés
-saveAsButton = Mentés másként
-checkpointButton = Mentett verzió ...
-toggleTutorialButton = Segédlet váltása
-addFormButton = Képernyő hozzáadása ...
-removeFormButton = Képernyő törlése
-connectButton = Kapcsolat
-reallyDeleteForm = A képernyő eltávolításával az összes hozzá tartozó komponens és blokk is törlődik.\nA törlés később nem vonható vissza.\nBiztosan el akarod távolítani a {0} képernyőt a projektből?
-openBlocksEditorButton = Blokk szerkesztő megnyitása
-screensButton = Képernyők ...
-switchToBlocksEditorButton = Parancsok
-switchToFormEditorButton = Képernyő
-isBuildingButton = Folyamatban az alkalmazás csomagolása ...
-cancelBlocksEditorButton = Folyamatban a Képernyő Szerkesztő megnyitása ... (kattints ide ha mégsem akarod megnyitni)
-blocksEditorIsOpenButton = A Blokk Szerkesztő nyitva van
-switchLanguageButton = Nyelv
-deleteComponentButton = Komponens törlése
-publishButton = Megosztás
-switchLanguageEnglishButton = Angol
-switchLanguageChineseCNButton = Kínai
-switchLanguageGermanButton = Német
-switchLanguageVietnameseButton = Vietnámi
-moderationDotDotDot = ...
-moderationReportTextHeader = Jelentés
-moderationAppHeader = App
-moderationReportDateCreatedHeader = Jelentve ekkor
-moderationAppAuthorHeader = App készítője
-moderationReporterHeader = Jelentő
-inappropriateAppContentRemoveTitle = Helytelen app tartalom: törlés
-inappropriateAppContentTitle = Helytelen app tartalom
-inappropriateUserProfileContentTitle = Helytelen felhasználói profil leírás
-labelChooseTemplate = Válassz egy sablont
-emailSentFrom = Küldő:
-emailSentTo = Címzett:
-buttonSendEmail = E-mail küldése
-labelDeactivateApp = App inaktiválása
-labelReactivateApp = App újraaktiválása
-labelDeactivateAppAndSendEmail = Alkalmazás inaktiválás és e-mail küldése
-labelmarkAsResolved = Jelölés megoldottként
-labelmarkAsUnresolved = Jelölés megoldatlanként
-labelSeeAllActions = Előző műveletek
-titleSeeAllActionsPopup = Előző jelentéshez kapcsolódó műveletek
-galleryMoreReports = További Jelentések
-symbolX = X
-labelCancel = Mégse
-labelConfirm = Megerősítés
-inappropriateAppContentRemoveEmail = A(z) \"{0}\" alkalmazásodat eltávolítottuk a Galériából, mert nem odaillő tartalmat találtunk benne. Kérlek nézd át az erre vonatkozó szabályokat a http://ai2.appinventor.mit.edu/about/termsofservice.html címen. Ha úgy érzed igazságtalanul jártunk el veled szemben küldj róla egy e-mailt nekünk.\n
-inappropriateAppContentEmail = A(z) \"{0}\" alkalmazásodban nem odaillő tartalmat találtunk. Kérlek nézd át az erre vonatkozó szabályokat és módosítsd az alkalmazásodat annak megfelelően.
-inappropriateUserProfileContentEmail = A profilod leírása nem odaillő szöveget tartalmaz. Kérlek javítsd!
-seeMoreLink = több mutatása ...
-hideLink = elrejtés
-moderationActionSendAnEmail = e-mail küldése:
-moderationActionDeactivateThisAppWithEmail = inaktiválja az alkalmazást és elküld egy emailt:
-moderationActionReactivateThisApp = újraaktiválja ezt az alkalmazást
-moderationActionMarkThisReportAsResolved = a jelentés megjelölése megoldottként
-moderationActionMarkThisReportAsUnresolved = a jelentés megjelölése megoldatlanként
-moderationShowResolvedReports = Mutasd a megoldott jelentéseket
-moderationSendEmailTitle = E-mail küldése
-moderationAppReactivatedTitle = App Inventor Galéria: Alkalmazás aktiválva
-moderationAppReactivateBody = A(z) \"{0}\" alkalmazásod újra lett aktiválva.
-moderationAppDeactivatedTitle = App Inventor Galéria: Alkalmazás deaktiválva
-moderationErrorFailToSendEmail = Nem sikerült elküldeni az e-mailt, kérlek próbálkozz újra később.
-getMotdFailed = Nem sikerült letölteni a szerverről a Mai Nap Üzenetét.
-titleYoungAndroid = MIT App Inventor
-internalErrorReportBug = Belső hiba történt. Szeretnéd jelenteni a hibát?
-internalError = Belső hiba történt.
-internalErrorSeeDebuggingView = Belső hiba történt. A hibakereső nézetben visszakereshető.
-internalErrorClickOkDebuggingView = Belső hiba történt. További tudnivalókért kattints az \"ok\" gombra.
-serverUnavailable = A kiszolgáló pillanatnyilag nem elérhető. Kérlek próbáld újra később.
-noprojectDialogTitle = Nincs projekt kijelölve
-noprojectDuringConnect = Kapcsolódás előtt létre kell hozni vagy kijelölni egy projektet!
-galleryIdNotExist = Nincs alkalmazás a Galériában ilyen azonosítóval.
-defaultRpcMessage = Töltés ...
-savingRpcMessage = Mentés ...
-copyingRpcMessage = Másolás ...
-deletingRpcMessage = Törlés ...
-packagingRpcMessage = Csomagolás ...
-downloadingRpcMessage = Letöltés a telefonra...
-gitBuildId = Fordítás dátuma: {0} Verzió: {1}
-privacyLink = Adatvédelmi irányelvek
-termsLink = Feltételek
-privacyTermsLink = Adatvédelmi irányelvek és felhasználási feltételek
-projectsTabName = Projektek
-projectMenuItem = Projektjeim
-newProjectMenuItem = Új projekt létrehozása
-importProjectMenuItem = Projekt importálása (.aia) saját gépről ...
-trashProjectMenuItem = Projekt törlése
-saveMenuItem = Projekt mentése
-saveAsMenuItem = Projekt mentése másként...
-checkpointMenuItem = Pillanatnyi állapot mentése
-importTemplateButton = Projekt (.aia) betöltése a tárolóból...
-exportProjectMenuItem = Kijelölt projekt (.aia) exportálása a számítógépemre
-exportAllProjectsMenuItem = Összes projekt exportálása
-downloadKeystoreMenuItem = Kulcstár exportálása
-uploadKeystoreMenuItem = Kulcstár importálása
-deleteKeystoreMenuItem = Kulcstár törlése
-componentsTabName = Komponensek
-myComponentsMenuItem = Saját komponensek
-startNewComponentMenuItem = Új komponens létrehozása
-importComponentMenuItem = Komponens importálása a projektbe...
-importExtensionMenuItem = Kiegészítő komponens importálása
-buildComponentMenuItem = Komponens csomagolása
-uploadComponentMenuItem = Komponens (.aix) feltöltése saját gépről...
-componentUploadWizardCaption = Komponens feltöltése...
-componentImportWizardCaption = Kiegészítő komponens importálása a projektbe
-componentRenameWizardCaption = Kiegészítő komponens átnevezése
-componentNameLabel = Kiegészítő neve
-componentImportError = A kiegészítő komponenst nem sikerült importálni!
-componentImportUnknownURLError = Ismeretlen URL! Nem sikerült importálni a komponenst!
-componentUpgradedAlert = Kiegészítő komponens frissítésre került:
-notComponentArchiveError = A kiválasztott fájl nem tartalmaz komponenst!\nA komponens fájlok kiterjesztése aix.
-noComponentSelectedError = Válaszd ki az importálandó komponenst
-noComponentFound = Nem találom a \"{0}\" komponenst a \"{1}\" projekt betöltése során.
-noUrlError = Adj meg egy URL-t
-componentNameHeader = Név
-componentVersionHeader = Verzió
-confirmDeleteComponents = Biztosan törölni akarod az alábbi komponens(eke)t: {0}?
-componentImportFromComputer = Saját gépről
-componentImportFromURL = URL
-componentDatabaseCorrupt = Hibás a \"{0}\" projekthez tartozó komponens adatbázis.
-extensionDescriptorCorrupt = Hibás a \"{0}\" projekthez tartozó \"{1}\" komponens leírása.
-invalidExtensionInProject = A \"{0}\" projekt hibás kiegészítő komponenst tartalmaz. Az App Inventor megpróbálja azt figyelmen kívül hagyni és folytatni a betöltést.
-connectTabName = Adatkapcsolat
-AICompanionMenuItem = AI Companion
-emulatorMenuItem = Emulátor
-feedbackLink = Hiba Jelentése
-tabNameGallery = Galéria
-tabNameModeration = Moderáció
-privateProfileLink = Profil
-tabNameProjects = Projektjeim
-usbMenuItem = USB
-resetConnectionsMenuItem = Kapcsolat bontása
-hardResetConnectionsMenuItem = Emulátor alaphelyzetbe állítása
-buildTabName = Apk fájl létrehozása
-showBarcodeMenuItem = App (QR kód létrehozása .apk-hoz)
-showBarcodeMenuItem2 = Google Play App (QR kód létrehozása .apk-hoz)
-downloadToComputerMenuItem = App (.apk mentése a számítógépre)
-downloadToComputerMenuItem2 = Google Play App (.apk mentése a számítógépre)
-generateYailMenuItem = YAIL Forráskód Generálása
-helpTabName = Súgó
-aboutMenuItem = Névjegy
-companionInformation = Companion segédalkalmazás adatai
-companionUpdate = Companion segédalkalmazás frissítése
-companionUpdateMustHaveProject = Létre kell hoznod egy projektet a Companion segédalkalmazás frissítéséhez
-showSplashMenuItem = Indító képernyő megjelenítése
-libraryMenuItem = Könyvtár
-getStartedMenuItem = Kezdjünk hozzá
-extensionsMenuItem = Kiegészítő komponensek
-tutorialsMenuItem = Segédletek
-troubleshootingMenuItem = Hibaelhárítás
-forumsMenuItem = Fórumok
-feedbackMenuItem = Hiba jelentése
-adminTabName = Adminisztrátor
-downloadUserSourceMenuItem = Felhasználói forráskód letöltése
-switchToDebugMenuItem = Váltás a hibakereső panelre
-myProjectsTabName = Projektjeim
-guideTabName = Útmutató
-feedbackTabName = Hiba jelentése
-galleryTabName = Galéria
-signOutLink = Kijelentkezés
-tabNameDesign = Design
-tabNameDebugging = (Hibakeresés)
-chooseProject = Kérlek, válassz egy projektet megnyitásra, vagy hozz létre egy új projektet!
-emailInboxTitle = E-mailek
-emailSendTitle = E-mail küldése
-componentListBoxCaption = Saját komponensek
-assetListBoxCaption = Média
-messagesOutputBoxCaption = Üzenetek
-motdBoxCaption = Üdvözöllek az App Inventorban!
-odeLogBoxCaption = Fejlesztői Üzenetek
-paletteBoxCaption = Paletta
-projectListBoxCaption = Projektjeim
-studioListBoxCaption = Studióim
-profilePageBoxCaption = Profilom
-moderationPageBoxCaption = Riportok
-galleryListBoxCaption = Galéria
-galleryAppBoxCaption = Alkalmazás a Galériában
-userProfileBoxCaption = Felhasználói profil
-propertiesBoxCaption = Tulajdonságok
-sourceStructureBoxCaption = Komponensek
-blockSelectorBoxCaption = Parancsok
-builtinBlocksLabel = Beépített
-builtinControlLabel = Vezérlés
-builtinLogicLabel = Logika
-builtinTextLabel = Szöveg
-builtinListsLabel = Listák
-builtinColorsLabel = Színek
-builtinVariablesLabel = Változók
-builtinProceduresLabel = Eljárások
-anyComponentLabel = Bármilyen komponens
-textAnyComponentLabel = Bármely
-viewerBoxCaption = Megjelenítő
-savedProject = Az App Inventor elmentette a projekt módosításait ({0})
-saveErrorMultipleFiles = Szerverhiba: nem sikerült elmenteni egy vagy több fájlt. Kérlek próbáld újra később!
-yailGenerationError = Hiba történt a(z) {0} képernyőn a YAIL generálása során: {1}. A hiba javítása után próbáld újra a YAIL kód generálást.
-nonVisibleComponentsHeader = Rejtett komponensek
-showHiddenComponentsCheckbox = Rejtett komponensek megjelenítése
-previewTabletSize = Tablet mérete
-previewPhoneSize = Telefonméret
-renameTitle = komponens átnevezése
-malformedComponentNameError = A komponens neve csak betűt, számot és alul vonást tartalmazhat, és betűvel kell kezdődnie
-duplicateComponentNameError = Már van ilyen nevű komponens!
-sameAsComponentTypeNameError = A komponens neve nem lehet azonos egy komponenstípus nevével
-sameAsComponentInstanceNameError = A komponens típusának neve nem egyezhet meg egy már létező komponens példány nevével!
-reservedNameError = A név nem lehet egyik sem a következők közül: CsvUtil, Double, Float, Integer, JavaCollection, JavaIterator, KawaEnvironment, Long, Short, SimpleForm, String, Pattern, YailList, YailNumberToString, YailRuntimeError, abstract, continue, for, new, switch, assert, default, goto, package, synchronized, boolean, do, if, private, this, break, double, implements, protected, throw, byte, else, import, public, throws, case, enum, instanceof, return, transient, catch, extends, int, short, try, char, final, interface, static, void, class, finally, long, strictfp, volatile, const, float, native, super, while
-reallyDeleteComponent = A komponens eltávolításával törlődni fog az összes hozzá tartozó blokk is. Biztosan el akarod távolítani?
-reallyRemoveComponent = A komponens típus eltávolításával törlődni fog az összes példánya és a hozzájuk tartozó blokkok is. Biztosan el akarod távolítani?
-textPropertyValue = {0} felirat
-badValueForHorizontalAlignment = Rendszerhiba: hibás érték - {0} - a vízszintes elrendezésre.
-badValueForVerticalAlignment = Rendszerhiba: hibás érték - {0} - a függőleges elrendezésre.
-widthPropertyCaption = Szélesség
-heightPropertyCaption = Magasság
-hintPropertyValue = Tipp a {0} értékhez
-externalComponentVersion = Kiegészítő Komponens Verziója:
-dateBuilt = Szerkesztés dátuma:
-moreInformation = További információ
-loadError = Szerverhiba: fájl betöltése sikertelen. Próbáld újra később!
-saveError = Szerverhiba: fájl mentése sikertelen. Próbáld újra később!
-blocksEditorTabName = {0} blokk
-blocksNotSaved = Nem sikerült betölteni a blokkokat. A {0} képernyőn található blokkok nem lesznek elmentve.
-blocksLoadFailure = A {0} képernyőhöz tartozó blokkokat nem sikerült betölteni. Amíg a probléma fennáll, nem fogsz tudni szerkeszteni a blokk szerkesztőben.
-weakAccelerometerSensitivity = alacsony
-moderateAccelerometerSensitivity = közepes
-strongAccelerometerSensitivity = magas
-LegacyModeProperties = Kompatibilitási mód
-fixedSizing = Fix méretezés
-responsiveSizing = Reszponzív méretezés
-leftTextAlignment = balra zárt
-centerTextAlignment = középre zárt
-rightTextAlignment = jobbra zárt
-horizontalAlignmentChoiceLeft = balra
-horizontalAlignmentChoiceRight = jobbra
-horizontalAlignmentChoiceCenter = középre
-verticalAlignmentChoiceTop = fel
-verticalAlignmentChoiceCenter = középre
-verticalAlignmentChoiceBottom = le
-defaultButtonShape = alapértelmezett
-roundedButtonShape = lekerekített
-rectButtonShape = négyszögletű
-ovalButtonShape = ovális
-noAssetSelected = Válassz ki egy erőforrást!
-noComponentSelected = Válassz ki egy komponenst!
-noneColor = Nincs
-blackColor = Fekete
-blueColor = Kék
-cyanColor = Ciánkék
-defaultColor = Alapértelmezett
-darkGrayColor = Sötétszürke
-grayColor = Szürke
-greenColor = Zöld
-lightGrayColor = Világos szürke
-magentaColor = Bíborvörös
-orangeColor = Narancssárga
-pinkColor = Rózsaszín
-redColor = Piros
-whiteColor = Fehér
-yellowColor = Sárga
-defaultFontTypeface = alapértelmezett
-sansSerifFontTypeface = sans serif (talp nélküli)
-serifFontTypeface = serif (talpas)
-monospaceFontTypeface = azonos szélességű
-automaticCaption = Automatikus
-fillParentCaption = Szülő komponens kitöltése
-percentCaption = százalék
-pixelsCaption = képpont
-pixelsSummary = {0} képpont
-percentSummary = {0} százalék
-nonnumericInputError = Az érték csak pozitív egész szám lehet
-nonvalidPercentValue = A százalékos érték csak 0 és 100 között lehet
-defaultScreenAnimation = Alapbeállítás
-fadeScreenAnimation = Áttűnés
-zoomScreenAnimation = Nagyítás
-slideHorizontalScreenAnimation = Vízszintes csúsztatás
-slideVerticalScreenAnimation = Függőleges csúsztatás
-noneScreenAnimation = Nincs
-unspecifiedScreenOrientation = Nem meghatározott
-portraitScreenOrientation = Portré
-landscapeScreenOrientation = Tájkép
-sensorScreenOrientation = Érzékelő
-userScreenOrientation = Felhasználó
-shortToastLength = Rövid
-longToastLength = Hosszú
-renameButton = Átnevezés
-addScreenButton = Hozzáadás
-cancelScreenButton = Ne add hozzá
-newFormTitle = Új képernyő
-formNameLabel = Képernyő neve:
-formCountErrorLabel = Figyelmeztetés: a képernyők száma meghaladhatja az App Inventor képességeit. Kattints Biztosan szeretnél új képernyőt hozzáadni?
-malformedFormNameError = A képernyő neve csak betűt, számot és alulvonást tartalmazhat, és betűvel kell kezdődnie
-duplicateFormNameError = Már van ilyen nevű képernyő!
-addFormError = Szerverhiba: képernyő hozzáadása sikertelen. Próbáld újra később!
-buildRequestedMessage = Kérés a(z) {0} alkalmazás fordítására {1} időpontban.
-buildError = Szerverhiba: nem sikerült lefordítani az alkalmazást. Próbáld újra később!
-buildFailedError = Nem sikerült lefordítani az alkalmazást!
-buildServerBusyError = Az alkalmazás fordító szerver elfoglalt. Kérlek próbáld újra pár perc múlva.
-buildServerDifferentVersion = Az alkalmazás fordító szerver nem kompatibilis az App Inventornak ezzel a verziójával.
-errorGeneratingYail = Nem sikerült a(z) {0} alkalmazáshoz a kód generálása.
-deleteFileCommand = Törlés...
-downloadFileCommand = Letöltés a számítógépemre
-checkpointTitle = Pillanatnyi állapot - {0}
-saveAsTitle = Mentés Másként - {0}
-defaultCheckpointProjectName = {0}_állapot{1}
-previousCheckpointsLabel = Korábbi állapotok:
-defaultSaveAsProjectName = {0}_másolat
-checkpointNameLabel = Projekt állapot elnevezése:
-copyProjectError = Szerverhiba: projekt másolása sikertelen. Próbáld újra később!
-reallyDeleteFile = Biztosan törölni szeretnéd a fájlt? Ez az App Inventor szerverről való végleges törlést jelent. Az alkalmazásod egyes részei továbbra is hivatkozhatnak a törölt fájlra, ezeket meg kell majd változtatnod.
-deleteFileError = Szerverhiba: fájl törlése sikertelen. Próbáld újra később!
-phoneNotConnected = A készülék nincs csatlakoztatva.
-barcodeTitle = A {0} hivatkozás vonalkódja
-barcodeWarning = Figyelem: a vonalkód csak 2 óráig érvényes. Ld. {0} a gyakran ismételt kérdést {1} arról, hogy hogyan lehet megosztani az alkalmazásodat másokkal.
-projectLoadError = Szerverhiba: nem sikerült betölteni a projektet. Próbáld újra később!
-projectInformationRetrievalError = Szerverhiba: nem sikerült elérni a projekt adatait. Próbáld újra később!
-downloadAllAlert = A projektek letöltése eltarthat egy ideig. Kérlek, várj türelmesen...
-moreActionsButton = További akciók
-downloadUserSourceDialogTitle = Felhasználói forráskód letöltése
-userIdLabel = Felhasználó azonosító vagy e-mail (kis-nagybetű érzékeny):
-projectIdLabel = Projekt azonosító vagy név:
-invalidUserIdOrProjectIdError = Kérlek add meg az e-mail címedet/felhasználói azonosítódat és a projekt nevét/azonosítóját hogy letölthesd azt.
-noProjectSelectedForDelete = Válassz egy projektet, hogy töröljük
-confirmDeleteSingleProject = Biztosan törölni akarod ezt a projektet: {0}
-confirmDeleteSinglePublishedProject = Biztosan törölni akarod ezt a projektet: {0}? Ha az alkalmazást a Galériába is feltöltötted, akkor onnan is törlődni fog.
-confirmDeleteManyProjects = Biztosan törölni akarod ezeket a projekteket: {0}
-confirmDeleteManyProjectsWithGalleryOn = Biztosan törölni akarod ezeket a projekteket: {0}? Ha bármelyiket közülük feltöltötted a Galériába, akkor onnan is törlődni fognak.
-deleteProjectError = Szerverhiba: nem sikerült törölni a projektet. Próbáld újra később!
-wrongNumberProjectsSelected = Egyetlen projektet válassz ki.
-wrongNumberProjectSelectedForPublishOrUpdate = Csak egy projektet válassz ki publikálásra vagy frissítésre.
-downloadKeystoreError = Szerverhiba: nem sikerült letölteni a kulcstár fájlt.
-noKeystoreToDownload = Nincs kulcstár amit le lehetne tölteni.
-uploadKeystoreError = Szerverhiba: nem sikerült feltölteni a kulcsfájlt.
-confirmOverwriteKeystore = Biztosan felül akarod írni a kulcsfájlodat?\n\nHa igen, akkor a korábbi kulcsfájlod el lesz távolítva az App Inventor szerverről.\n\nHa vannak alkalmazásaid a Google Play Áruházban amelyek a felülírandó kulcstárat használják, akkor nem leszel képes frissíteni azokat a programokat.\n\nEzt követően minden projekt, amelyből alkalmazás csomagot készítesz az új kulcstár fájl felhasználásával lesz aláírva. A kulcstár fájl megváltoztatása miatt lehet hogy bizonyos régebbi alkalmazásokat nem tudsz majd újratelepíteni a készülékedre. Ha nem vagy biztos benne le akarod-e cserélni, olvasd el a kulcstárakról szóló dokumentációt a \"Súgó\" (Help) menü \"Hibakeresés\" (Troubleshooting) menüpontjában, a \"Kulcstárak és Alkalmazások aláírása\" (Keystores and Signing of Applications).\n\nA kulcstár fájl lecserélése nem visszavonható művelet.
-deleteKeystoreError = Szerverhiba: nem sikerült törölni a kulcstár fájlt.
-confirmDeleteKeystore = Biztosan le akarod törölni a kulcsfájlodat?\n\nHa igen, akkor a kulclfájlod el lesz távolítva az App Inventor szerverről és automatikusan egy új készül helyette.\n\nHa vannak alkalmazásaid a Google Play Áruházban amelyek a régi kulcstárat használják, akkor nem leszel képes frissíteni azokat a programokat.\n\nEzt követően minden projekt, amelyből alkalmazás csomagot készítesz az új kulcstár fájl felhasználásával lesz aláírva. A kulcstár fájl megváltoztatása miatt lehet hogy bizonyos régebbi alkalmazásokat nem tudsz majd újratelepíteni a készülékedre. Ha nem vagy biztos benne le akarod-e törölni, olvasd el a kulcstárakról szóló dokumentációt a \"Súgó\" (Help) menü \"Hibakeresés\" (Troubleshooting) menüpontjában, a \"Kulcstárak és Alkalmazások aláírása\" (Keystores and Signing of Applications).\n\nA kulcstár fájl törlése nem visszavonható művelet.
-clearButton = Törlés
-settingsLoadError = Szerverhiba: a beállítások betöltése sikertelen. Próbáld újra később!
-settingsSaveError = Szerverhiba: a beállítások mentése sikertelen. Próbáld újra később!
-done = Kész
-hdrClose = Bezár
-hdrMinimize = Zsugorítás
-hdrSettings = Beállítás
-cmMinimize = Zsugorít
-cmRestore = Kibővít
-cmResize = Átméretez
-hdrRestore = Kibővít
-notAFloat = {0} az nem szám
-notAnInteger = {0} az nem egy egész szám
-malformedInputError = Hibásan bevitt adat!
-fileUploadWizardCaption = Fájl feltöltése...
-malformedFilenameTitle = Hiba: nem megfelelő fájlnév
-malformedFilename = A fájl neve csak az alábbiakat tartalmazhatja: ékezet nélküli betűk, számok, valamint a \"-\", \"_\", \".\", \"!\", \"~\", \"*\", \"(\", és \")\" karakterek
-filenameBadSizeTitle = Hiba: nem megfelelő fájlméret
-filenameBadSize = A fájlnevek legalább 1, legfeljebb 100 karakterből állhatnak.
-fileUploadingMessage = {0} feltöltése az App Inventor szerverre
-fileUploadError = Szerverhiba: nem sikerült feltölteni a fájlt. Kérlek próbáld újra később!
-fileTooLargeError = Hiba: nem sikerült a fájl feltöltés, mert az túl nagy
-noFileSelectedTitle = Hiba: nem választottál ki egyetlen fájlt sem
-noFileSelected = Válaszd ki a feltöltendő fájlt.
-aiaMediaAssetTitle = Hiba: nem sikerült .aia média erőforrásként feltölteni a fájlt
-aiaMediaAsset = A fájl használatához kattints az alábbi menüpontra: Projektek > Projekt importálása (.aia) saját gépről...
-aiaMediaAssetHelp = http://appinventor.mit.edu/explore/ai2/share.html
-confirmOverwrite = Probléma akadt {1} mentése során\n\nMár van a projektben egy {0} nevű fájl.\nTörölni akarod a régi fájlt?\nEzzel minden olyan fájlt eltávolítasz, amely ütközik a(z) {1} fájllal.
-keystoreUploadWizardCaption = KulcsTár feltöltése...
-keystoreUploadError = Szerverhiba: nem sikerült feltölteni a kulcstárat. Próbáld újra később!
-notKeystoreError = A megadott fájl nem kucstár formátumú!
-createProjectError = Szerverhiba: projekt létrehozása sikertelen. Próbáld újra később!
-templateUploadWizardCaption = Projekt létrehozása sablon alapján
-templateUploadNewUrlCaption = Új sablon URL megadása
-inputNewUrlCaption = Adj meg egy URL-t...
-newUrlLabel = Sablonok Url:
-projectUploadWizardCaption = Projekt import...
-gallerySearch = Keresés
-galleryEmptyText =
-galleryFeaturedText = Kiemelt
-galleryUnfeaturedText = Nem kiemelt
-galleryTutorialText = Segédlet
-galleryUntutorialText = Nem segédlet
-gallerySingleSpaceText =
-galleryByAuthorText = Szerző neve alapján
-galleryOpenText = Alkalmazás megnyitása
-galleryPublishText = Közzététel
-galleryUpdateText = Frissítés
-galleryRemoveText = Visszavonás
-galleryRemoveConfirmText = Biztosan el akarod távolítani az alkalmazást a Galériából?
-galleryEditText = Szerkesztés
-galleryCancelText = Mégse
-galleryNoScreenShotMessage = Kérlek tölts fel egy képet az alkalmazásod képernyőjéről mielőtt nyilvánossá tennéd
-galleryNotEnoughDescriptionMessage = Kérlek adj meg egy részletesebb leírást az alkalmazásodról mielőtt nyilvánossá tennéd
-galleryByDeveloperPrefixedText = Szerző
-galleryCreatedDateLabel = Létrehozás Dátuma:
-galleryChangedDateLabel = Változtatás Dátuma:
-galleryMoreInfoLabel = Tananyag/Videó
-galleryCreditLabel = Köszönet:
-galleryMoreInfoHint = Ha az alkalmazáshoz tartozik tananyag vagy videó, add meg az URL-jét!
-galleryCcLicenseRef = A Galériába való feltöltéssel az alkalmazást a Creative Commons Attribution Licensznek megfelelően teszed közzé.
-galleryCreditHint = Másvalaki appját remixeled? Ha igen, említsd meg itt őket.
-galleryDescriptionHint = Az alkalmazás leírása.
-galleryAppOpening = Megnyitás...
-galleryAppPublishing = Megosztás...
-galleryAppUpdating = Frissítés...
-galleryAppRemoving = Eltávolítás...
-galleryAppsLike = Tetszik
-galleryAppsAlreadyLike = Mégsem tetszik
-galleryAppsByAuthorSidebar = Az alkalmazás készítője:
-galleryAppCreatedPrefix = Készítés dátuma:
-galleryAppChangedPrefix = Szerkesztés dátuma:
-galleryRemixedFrom = Remix alapja:
-galleryRemixChildren = Kattints ide a remixekért!
-galleryAppsRemixesSidebar = Remixek a felhasználótól:
-galleryReportPrompt = Kérlek indokold miért találod sértőnek ezt az alkalmazást, vagy hogy milyen módon nem tartja be az App Inventor Galéria Szabályait.
-gallerySharePrompt = Másolás és link megosztása
-galleryCopyButton = Másolás
-galleryGalleryIdAction = /?galleryId=
-galleryVisitGalleryAppLinkLabel = \n\nNézd meg a közzétett alkalmazásod: {0}/?galleryId={1}
-galleryReportButton = Jelentés elküldése
-galleryReportCompletionPrompt = Köszönjük a jelentést, egy adminisztrátor hamarosan feldolgozza azt.
-galleryAlreadyReportedPrompt = Erről az alkalmazásról már küldtél jelentést. Egy adminisztrátor hamarosan feldolgozza azt.
-galleryCommentError = Szerverhiba: nem sikerült letölteni a megjegyzéseket
-galleryAppLikeError = Szerverhiba: nem sikerült letölteni a lájkok számát
-galleryDeveloperAppError = Szerverhiba: nem sikerült letölteni a fejlesztői alkalmazások listáját a Galériából
-galleryFeaturedAppError = Szerverhiba: nem sikerült letölteni a kiemelt alkalmazások listáját a Galériából
-galleryTutorialAppError = Szerverhiba: nem sikerült letölteni az oktató alkalmazások listáját a Galériából
-gallerySearchError = Szerverhiba: sikertelen keresés a Galériában
-galleryRecentAppsError = Szerverhiba: nem sikerült letölteni a legújabb alkalmazások listáját a Galériából
-galleryDownloadedAppsError = Szerverhiba: nem sikerült letölteni a legtöbbet letöltött alkalmazások listáját a Galériából
-galleryLikedAppsError = Szerverhiba: nem sikerült letölteni a legnépszerűbb alkalmazások listáját
-galleryDeleteError = Szerverhiba: sikertelen törlés a galériából
-gallerySetProjectIdError = Szerverhiba: hiba történt az alkalmazás galéria azonosítójának beállításakor
-projectUploadError = Szerverhiba: projekt feltöltése sikertelen. Próbáld újra később!
-galleryNoExtensionsPlease = Nem tölthetsz fel olyan alkalmazást a Galériába amely kiegészítő komponenseket használ
-notProjectArchiveError = A kiválasztott fájl nem egy projekt forrásfájl!\nA projekt forrásfájlok aia kiterjesztésűek.
-loadingAppIndicatorText = Alkalmazás betöltése...
-buttonEditProfile = Profil szerkesztése
-buttonUpdateProfile = Módosítások mentése
-labelEditYourProfile = Profil szerkesztése
-labelYourDisplayName = A megjelenített neved
-labelMoreInfoLink = További információk rólad (link)
-labelEmailDescription = Az App Invetor rendszeresen üzenetet küld róla ha az alkalmazásodat kedvelik vagy letöltik. Itt meg tudod adni milyen gyakran szeretnél erről értesítést kapni.
-labelEmailFrequencyPrefix = Kérek e-mailt minden
-labelEmailFrequencySuffix = új lájk vagy letöltés esetén.
-errorEmailFrequency = Ide egy pozitív egész számot kell beírnod
-gallerySearchForAppsButton = Keresés az alkalmazások között
-galleryMoreApps = További alkalmazások
-gallerySearchResultsPrefix = a \"
-gallerySearchResultsInfix = \" címre való keresés
-gallerySearchResultsSuffix = darab eredménnyel tért vissza
-galleryError = Szerverhiba: a Galéria nem elérhető
-noResultsFound = Nincs találat
-gallerySettingsError = Szerverhiba: a Galéria beállításai nem elérhetők
-backButton = Vissza
-nextButton = Következő
-newYoungAndroidProjectWizardCaption = Új App Inventor projekt létrehozása
-remixedYoungAndroidProjectWizardCaption = Az App Inventor projekt neve
-projectNameLabel = Projekt neve:
-malformedProjectNameError = A projekt neve betűvel kell hogy kezdődjön és csak betűket, számokat és aláhúzás karaktereket tartalmazhat
-duplicateProjectNameError = Már létezik {0} nevű projekt. Nem hozhatsz létre projektet ugyanazzal a névvel.
-whitespaceProjectNameError = A projekt neve nem tartalmazhat szóközt
-firstCharProjectNameError = A projekt neve betűvel kell hogy kezdődjön
-invalidCharProjectNameError = Hibás karakter. A projekt neve csak betűket, számokat és aláhúzás karaktereket tartalmazhat
-projectWasUpgraded = A projekt az App Inventor egy régebbi verziójával készült és most frissítésre került\n{0}
-unexpectedProblem = Hiba történt a projekt betöltésekor. {0}
-newerVersionProject = A projektet az App Inventor egy újabb verziójával hozták létre. Megkíséreljük megnyitni, de előfordulhatnak kompatibilitási problémák.
-veryOldProject = A projektet az App Inventor még ki nem adott verziójával hozták létre. Megkíséreljük megnyitni, de előfordulhatnak kompatibilitási problémák.
-upgradeDetailLoggerReplacedWithNotifier = A {0} nevű Jegyzetelő (Logger) komponens típusa FelugróÜzenetre változott.\n
-newerVersionComponentException = Nem sikerült betölteni a(z) {0} projektet (a projekt App Inventor verziója {1}, a legfrissebb ismert verzió viszont {2}).
-noUpgradeStrategyException = Nem létezik frissítési stratégia a(z) {0} projekt számára ({1} verzióról {2} verzióra).
-badAlignmentPropertyEditorForArrangement = Rendszerhiba: hibás érték a vízszintes vagy függőleges elrendezésre.
-textReceivingChoiceOff = kikapcsolva
-textReceivingChoiceForeground = csak ha előtérben az alkalmazás
-textReceivingChoiceAlways = mindig
-startingConnectionDialog = 0 elindul
-loadingAsset = {0} erőforrás letöltése az App Inventor szerverről...
-sendingAssetToCompanion = {0} küldése az AI Companion segédalkalmazásnak...
-unableToCompile = Az App Inventor nem tudta lefordítani a projektet. A fordító hibaüzenete: {0}.
-apkSavedToComputer = Az APK fájl a számítógép letöltési könyvtárába lesz másolva.
-apkInstalledToPhone = Az APK fájl telepítésre kerül a készülékre.
-waitingForBarcode = Várakozás a vonalkód megjelenésére.
-preparingApplicationIcon = Alkalmazás ikon előkészítése
-determiningPermissions = Szükséges engedélyek meghatározása
-generatingApplicationInformation = Alkalmazás információ előállítása
-compilingPart1 = Fordítás első része
-compilingPart2 = Fordítás második része (kérlek várj)
-preparingFinalPackage = Végső alkalmazás csomag előkészítése
-buildingApk = APK felépítése
-HTMLFormatProperties = HTML megjelenítés
-userInterfaceComponentPallette = Felhasználói felület
-layoutComponentPallette = Elrendezés
-mediaComponentPallette = Média
-drawingAndAnimationComponentPallette = Rajz és animáció
-mapsComponentPallette = Térkép
-sensorsComponentPallette = Érzékelők
-socialComponentPallette = Közösségi (média)
-storageComponentPallette = Adattárolás
-forInternalUseOnlyComponentPallette = Csak belső használatra
-formComponentPallette = Űrlap
-builtinMathLabel = Matematika
-connectivityComponentPallette = Hálózat
-legoMindstormsComponentPallette = LEGO\u00AE MINDSTORMS\u00AE
-extensionComponentPallette = Kiegészítők
-externalComponentPalette = Külső komponensek
-experimentalComponentPallette = Kísérleti jellegű
-internalUseComponentPallette = Csak belső használatra
-uninitializedComponentPallette = Nem inicializált
-buttonComponentPallette = Gomb
-canvasComponentPallette = Rajzvászon
-checkBoxComponentPallette = Jelölőnégyzet
-clockComponentPallette = Óra
-datePickerComponentPallette = Dátumválasztó
-imageComponentPallette = Kép
-labelComponentPallette = Címke
-listPickerComponentPallette = Teljes képernyős lista
-listViewComponentPallette = Lista
-passwordTextBoxComponentPallette = Jelszó bevitel
-pedometerComponentPallette = Lépésszámláló
-sliderComponentPallette = Csúszka
-spinnerComponentPallette = Felugrólista
-textBoxComponentPallette = Szövegbeviteli mező
-timePickerComponentPallette = Időpontválasztó
-tinyDBComponentPallette = TinyDB
-camcorderComponentPallette = Videófelvevő
-cameraComponentPallette = Kamera
-imagePickerComponentPallette = Képválasztó
-playerComponentPallette = Zenelejátszó
-soundComponentPallette = Hanglejátszó
-videoPlayerComponentPallette = Videólejátszó
-yandexTranslateComponentPallette = Yandex fordító
-ballComponentPallette = Labda
-imageSpriteComponentPallette = Szereplő
-contactPickerComponentPallette = Névjegyválasztó
-emailPickerComponentPallette = E-mail cím választó
-phoneCallComponentPallette = Telefonhívás
-phoneNumberPickerComponentPallette = Telefonszám választó
-phoneStatusComponentPallette = Telefon adatai
-sharingComponentPallette = Megosztás
-textingComponentPallette = SMS
-twitterComponentPallette = Twitter
-accelerometerSensorComponentPallette = Gyorsulásmérő
-barcodeScannerComponentPallette = Vonalkód beolvasó
-gyroscopeSensorComponentPallette = Giroszkóp
-locationSensorComponentPallette = Helyzetérzékelő
-mediaStoreComponentPallette = Médiatárhely
-nearFieldComponentPallette = NFC
-orientationSensorComponentPallette = Irányérzékelő
-horizontalArrangementComponentPallette = Vízszintes elrendezés
-horizontalScrollArrangementComponentPallette = Vízszintes görgethető elrendezés
-tableArrangementComponentPallette = Táblázatos elrendezés
-verticalArrangementComponentPallette = Függőleges elrendezés
-verticalScrollArrangementComponentPallette = Függőleges görgethető elrendezés
-nxtColorSensorComponentPallette = Nxt színérzékelő
-nxtDirectCommandsComponentPallette = Nxt közvetlen parancs
-nxtDriveComponentPallette = Nxt irányító
-nxtLightSensorComponentPallette = Nxt fényérzékelő
-nxtSoundSensorComponentPallette = Nxt hangérzékelő
-nxtTouchSensorComponentPallette = Nxt érintésszenzor
-nxtUltrasonicSensorComponentPallette = Nxt ultrahang érzékelő
-ev3CommandsComponentPallette = Ev3 parancs
-ev3UIComponentPallette = Ev3 grafika
-ev3SoundComponentPallette = Ev3 hang
-ev3MotorsComponentPallette = Ev3 motor
-ev3TouchSensorComponentPallette = Ev3 érintésérzékelő
-ev3ColorSensorComponentPallette = Ev3 színérzékelő
-ev3GyroSensorComponentPallette = Ev3 giroszkóp
-ev3UltrasonicSensorComponentPallette = Ev3 ultrahang érzékelő
-activityStarterComponentPallette = Aktivitás indító
-bluetoothClientComponentPallette = Bluetoth kliens
-bluetoothServerComponentPallette = Bluetooth szerver
-notifierComponentPallette = Felugró üzenet
-speechRecognizerComponentPallette = Beszédfelismerő
-textToSpeechComponentPallette = Szövegfelolvasó
-tinyWebDBComponentPallette = TinyWebDB
-webComponentPallette = Internet
-fileComponentPallette = Fájl
-firebaseDBComponentPallette = Firebase adatbázis
-fusiontablesControlComponentPallette = Fusion tábla vezérlés
-gameClientComponentPallette = Játék kliens
-passwordParams = jelszó
-soundRecorderComponentPallette = Hangrögzítő
-votingComponentPallette = Szavazás
-webViewerComponentPallette = Webböngésző
-AboutScreenProperties = Névjegy ablak
-ShowStatusBarProperties = Állapot sor látható
-TitleVisibleProperties = Cím látható
-AboveRangeEventEnabledProperties = Érzékelési tartomány feletti érték esemény bekapcsolva
-ActionProperties = Akció
-ActivityClassProperties = Aktivitás osztály
-ActivityPackageProperties = Aktivitás csomagja
-AlignHorizontalProperties = Vízszintes igazítás
-AlignVerticalProperties = Függőleges igazítás
-AllowCookiesProperties = Sütik engedélyezése
-ApiKeyProperties = API kulcs
-AppNameProperties = Alkalmazás neve
-AvailableCountriesProperties = Elérhető országok
-AvailableLanguagesProperties = Elérhető nyelvek
-BackgroundColorProperties = Háttérszín
-BackgroundImageProperties = Háttérkép
-BelowRangeEventEnabledProperties = Érzékelési tartomány alatti érték esemény bekapcsolva
-BluetoothClientProperties = Bluetooth kliens
-BottomOfRangeProperties = Érzékelési tartomány alsó határa
-CalibrateStrideLengthProperties = Lépéshossz kalibrálás
-CharacterEncodingProperties = Karakterkódolás
-CheckedProperties = Bekapcsolt
-CloseScreenAnimationProperties = Képernyő animáció bezárása
-ColorChangedEventEnabledProperties = Színváltozás esemény engedélyezve
-ColumnsProperties = Oszlopok száma
-ConsumerKeyProperties = Felhasználói kulcs
-ConsumerSecretProperties = Titkos kulcs
-CountryProperties = Ország
-DataTypeProperties = Adattípus
-DataUriProperties = Adat URI
-DelimiterByteProperties = Elválasztó bájt
-DetectColorProperties = Színek érzékelése
-DistanceIntervalProperties = Frissítéshez szükséges minimális távolság
-DriveMotorsProperties = Motor portok
-EnabledProperties = Engedélyezett
-ExtraKeyProperties = Extra kulcs
-ExtraValueProperties = Extra érték
-ExtrasProperties = Extra értékek
-FollowLinksProperties = Hivatkozások engedélyezése
-FontBoldProperties = Félkövér betűtípus
-FontItalicProperties = Dőlt betűtípus
-FontSizeProperties = Betűméret
-FontTypefaceProperties = Betűtípus
-GameIdProperties = Játékazonosító
-GenerateColorProperties = Generált szín
-GenerateLightProperties = Generált fény
-GoogleVoiceEnabledProperties = Google Asszisztens engedélyezve
-HasMarginsProperties = Van margója
-HeadingProperties = Irány
-HighByteFirstProperties = Magasabb helyi értékű bájtok álljanak elöl
-HintProperties = Segítség/Tipp
-HomeUrlProperties = Kezdőoldal URL
-IconProperties = Ikon
-InstantProperties = Pillanat
-IgnoreSslErrorsProperties = SSL hibák mellőzése
-ImageProperties = Kép forrása
-IntervalProperties = Intervallum
-IsLoopingProperties = Ismétlés
-KeyFileProperties = Kulcsfájl
-LanguageProperties = Nyelv
-LineWidthProperties = Vonalvastagság
-LoadingDialogMessageProperties = Párbeszéd üzenet betöltése
-MessageProperties = Üzenet
-MinimumIntervalProperties = Minimális frissítési intervallum (ms)
-MultiLineProperties = Többsoros
-NamespaceProperties = Névtér
-NumbersOnlyProperties = Csak számok
-OpenScreenAnimationProperties = Nyitó képernyő animáció
-PaintColorProperties = Rajzolási szín
-PhoneNumberProperties = Telefonszám
-phoneNumberParams = Telefonszám
-PhoneNumberListProperties = Telefonszám lista
-PictureProperties = Kép
-PressedEventEnabledProperties = Lenyomás esemény engedélyezve
-PromptforPermissionProperties = Földrajzi helyzet engedély kérése
-QueryProperties = Lekérdezés
-RadiusProperties = Sugár
-ReadModeProperties = Olvasás mód
-ReceivingEnabledProperties = Üzenet fogadási mód
-ReleasedEventEnabledProperties = Elengedés esemény engedélyezve
-ResponseFileNameProperties = Elmentett HTTP válasz fájl neve
-ResultNameProperties = Eredmény neve
-RowsProperties = Sorok száma
-SavedRecordingProperties = Hangfelvétel elérési útja
-SaveResponseProperties = HTTP válasz elmentése fájlba
-ScalePictureToFitProperties = Képarányos átméretezés
-SensorPortProperties = Érzékelő port
-ScreenOrientationProperties = Képernyőirány
-SecureProperties = Biztonságos kapcsolat
-ServiceAccountEmailProperties = Szolgáltatási e-mail cím
-ServiceURLProperties = Szolgáltatás URL
-ShowLoadingDialogProperties = Párbeszéd betöltést megmutat
-FirebaseURLProperties = Firebase URL
-PersistProperties = Offline működés
-ProjectBucketProperties = Projekt konténer neve
-DeveloperBucketProperties = Fejlesztői konténer neve
-FirebaseTokenProperties = Firebase Token
-PrivateUserStorageProperties = Privát felhasználói tárhely
-ScrollableProperties = Görgethető
-ShapeProperties = Alak
-ShowFeedbackProperties = Animált kattintás
-ShowTablesProperties = táblázatok mutatása
-SourceProperties = Forrás
-SpeedProperties = Sebesség
-StopBeforeDisconnectProperties = Kapcsolat bontása előtt álljon le a motor
-StopDetectionTimeoutProperties = Megállási idő
-StrideLengthProperties = Lépéshossz
-TextProperties = Szöveg
-TextAlignmentProperties = Szöveg vízszintes igazítás
-TextColorProperties = Szövegszín
-TimerAlwaysFiresProperties = Háttérben is működik
-TimerEnabledProperties = Időzítő bekapcsolva
-TimerIntervalProperties = Időzítő intervallum
-TitleProperties = Cím
-TopOfRangeProperties = Érzékelési tartomány felső határa
-UrlProperties = URL
-UseFrontProperties = Elülső kamera használata
-UseGPSProperties = GPS használata
-UseServiceAuthenticationProperties = Belépés szolgáltatási e-mail címmel
-UsesLocationVisibleProperties = Felhasználó földrajzi helyzete látható
-VersionCodeProperties = Verzió kód
-VersionNameProperties = Verzió név
-TutorialURLProperties = Oktatási segédlet URL
-SizingProperties = Képernyő méretezés
-ShowListsAsJsonProperties = Listák megjelenítése JSON formátumban
-VisibleProperties = Látható
-VolumeProperties = Hangerő
-WheelDiameterProperties = Kerék átmérő
-WithinRangeEventEnabledProperties = Érzékelési tartományon belüli érték esemény bekapcsolva
-XProperties = X
-YProperties = Y
-ZProperties = Z
-VisibilityShowingProperties = látható
-VisibilityHiddenProperties = rejtett
-ElementsFromStringProperties = Lista elemek mint szöveg
-RotatesProperties = Képes forgásra
-RotationAngleProperties = Forgásszög
-SelectionProperties = Kiválasztott elem
-TimeIntervalProperties = Frissítéshez szükséges minimális idő
-UsesLocationProperties = Földrajzi helyzet használata
-ShowFilterBarProperties = Lista szűrés bekapcsolva
-TextSizeProperties = Szövegméret
-NotifierLengthProperties = Megjelenési idő
-LoopProperties = Lejátszás automatikus újraindítása
-PitchProperties = Y elfordulás
-SpeechRateProperties = Beszéd tempó
-SensitivityProperties = Érzékenység
-TwitPic_API_KeyProperties = TwitPic API kulcs
-PromptProperties = Cím
-ColorLeftProperties = Csúszka baloldali színe
-ColorRightProperties = Csúszka jobboldali színe
-MaxValueProperties = Maximum érték
-MinValueProperties = Minimum érték
-ThumbPositionProperties = Csúszka érték
-ThumbEnabled = Engedélyezett
-DayProperties = Nap
-MonthProperties = Hónap
-MonthInTextProperties = Hónap neve
-YearProperties = Év
-LastMessageProperties = Utolsó üzenet
-TextToWriteProperties = Elküldendő üzenet
-WriteTypeProperties = Írási mód
-ElapsedTimeProperties = Eltelt idő
-SimpleStepsProperties = Lépések száma
-WalkStepsProperties = Előre lépések száma
-MovingProperties = Mozgásban van
-HourProperties = Óra
-MinuteProperties = Perc
-DistanceProperties = Távolság
-DirectMessagesProperties = Közvetlen üzenetek
-ContactNameProperties = Névjegy név
-CurrentAddressProperties = Jelenlegi cím
-CurrentPageTitleProperties = Jelenlegi oldal címe
-CurrentUrlProperties = Jelenlegi URL
-AccuracyProperties = Pontosság
-AddressesAndNamesProperties = Párosított nevek és címek
-AltitudeProperties = Magasság
-AngleProperties = Szög
-AnimationProperties = Animáció
-AvailableProperties = Elérhető
-AvailableProvidersProperties = Elérhető szolgáltatók
-AzimuthProperties = Z elfordulás
-BallotOptionsProperties = Szavazás beállítások
-BallotQuestionProperties = Szavazás tárgya
-ContactUriProperties = Névjegy URI
-EmailAddressProperties = E-mail cím
-EmailAddressListProperties = E-mail címlista
-ElementsProperties = Lista elemek
-FollowersProperties = Követők
-FriendTimelineProperties = Barátok üzenetei
-FullScreenProperties = Teljes képernyős
-HasAccuracyProperties = Van pontossága
-HasAltitudeProperties = Van magassága
-HasLongitudeLatitudeProperties = Van hosszúsága és szélessége
-HeightProperties = Magasság
-HeightPercentProperties = Magasság százalék
-InstanceIdProperties = Példány azonosító
-InvitedInstancesProperties = Meghívott példányok
-IsAcceptingProperties = Kapcsolódásra vár
-IsConnectedProperties = Kapcsolódott
-IsPlayingProperties = Tart a lejátszás
-JoinedInstancesProperties = Csatlakozott példányok
-LatitudeProperties = Szélesség
-LeaderProperties = Vezető
-LongitudeProperties = Hosszúság
-MagnitudeProperties = Lejtési sebesség
-MentionsProperties = Említések
-PasswordVisibleProperties = Jelszó látható
-ProviderLockedProperties = Szolgáltató zárolva
-ProviderNameProperties = Szolgáltató neve
-PublicInstancesProperties = Nyilvános példányok
-PlayOnlyInForegroundProperties = Lejátszás csak akkor, ha az alkalmazás előtérben van
-PlayersProperties = Játékosok
-RequestHeadersProperties = HTTP Kérés fejléc értékek
-ResultProperties = Eredmény
-UseExternalScannerProperties = Külső beolvasó program használata
-ResultTypeProperties = Eredmény típusa
-ResultUriProperties = Eredmény URI
-RollProperties = X elfordulás
-ScalingProperties = Képméretezés
-SearchResultsProperties = Keresés eredményei
-ServiceUrlProperties = Szolgáltatás URL
-SelectionIndexProperties = Kiválasztott elem indexe
-uriParams = URI
-UserChoiceProperties = Felhasználó választása
-UserEmailAddressProperties = Felhasználó e-mail cím
-UserIdProperties = Felhasználó azonosító
-UsernameProperties = Felhasználónév
-usernameParams = felhasználónév
-XAccelProperties = X gyorsulás
-XAngularVelocityProperties = X szögsebesség
-YAccelProperties = Y gyorsulás
-YAngularVelocityProperties = Y szögsebesség
-ZAccelProperties = Z gyorsulás
-ZAngularVelocityProperties = Z Szögsebesség
-WidthProperties = Szélesség
-WidthPercentProperties = Szélesség százalék
-WebViewStringProperties = Web nézet szöveg
-WebViewStringChangeEvents = Web nézet szöveg változás
-EnableSpeedRegulationProperties = Sebesség szabályozás
-ModeProperties = Működési mód
-MotorPortsProperties = Motor portok
-ReverseDirectionProperties = Visszafelé mozog
-SensorValueChangedEventEnabledProperties = Érzékelővel mért érték változott esemény engedélyezve
-TachoCountChangedEventEnabledProperties = Tachométer érték változott esemény engedélyezve
-UnitProperties = Egység
-xAccelParams = x gyorsulás
-yAccelParams = y gyorsulás
-zAccelParams = z gyorsulás
-resultParams = eredmény
-tableIdParams = táblázat azonosító
-columnsParams = oszlopok
-conditionsParams = feltételek
-valuesParams = értékek
-otherParams = másik
-componentParams = komponens
-startXParams = start X
-startYParams = start Y
-prevXParams = előző X
-prevYParams = előző Y
-currentXParams = jelenlegi X
-currentYParams = jelenlegi Y
-edgeParams = oldal
-speedParams = sebesség
-headingParams = irány
-xvelParams = x sebesség
-yvelParams = y sebesség
-targetParams = cél
-addressParams = cím
-uuidParams = UUID
-numberOfBytesParams = bájtok száma
-numberParams = szám
-listParams = lista
-textParams = szöveg
-clipParams = videófájl elérési útja
-imageParams = kép
-draggedSpriteParams = elhúzott szereplő
-draggedAnySpriteParams = van elhúzott szereplő
-flungSpriteParams = elhajított szereplő
-touchedSpriteParams = megérintett szereplő
-touchedAnySpriteParams = van megérintett szereplő
-xParams = x
-yParams = y
-centerXParams = középpont X
-centerYParams = középpont Y
-rParams = r
-radiusParams = sugár
-x1Params = x1
-x2Params = x2
-y1Params = y1
-y2Params = y2
-angleParams = szög
-fileNameParams = fájlnév
-colorParams = szín
-yearParams = év
-monthParams = hónap
-dayParams = nap
-hourParams = óra
-minuteParams = perc
-instantParams = pillanat
-daysParams = nap
-hoursParams = óra
-minutesParams = perc
-monthsParams = hónap
-secondsParams = másodperc
-weeksParams = hét
-quantityParams = mennyiség
-durationParams = időtartam
-patternParams = minta
-yearsParams = év
-InstantInTimeParams = Időpillanat
-fromParams = kezdő időpont
-millisParams = ezredmásodperc
-functionNameParams = függvénynév
-permissionNameParams = engedélynév
-errorNumberParams = hibaszám
-messageParams = üzenet
-mediafileParams = médiafájl paraméterek
-otherScreenNameParams = másik képernyő neve
-animTypeParams = animáció típusa
-senderParams = küldő
-contentsParams = tartalom
-instanceIdParams = példány azonosító
-playerIdParams = játékos azonosító
-commandParams = parancs
-argumentsParams = paraméter
-responseParams = válasz
-emailAddressParams = e-mail cím
-typeParams = típus
-countParams = mennyiség
-makePublicParams = publikussá tesz
-recipientsParams = címzettek
-playerEmailParams = játékos e-mail
-latitudeParams = szélességi fok
-longitudeParams = hosszúsági fok
-altitudeParams = magasság
-providerParams = szolgáltató
-statusParams = állapot
-locationNameParams = hely neve
-choiceParams = választás
-noticeParams = üzenet
-titleParams = cím
-buttonTextParams = gomb szövege
-cancelableParams = van mégse gomb
-button1TextParams = első gomb szövege
-button2TextParams = második gomb szövege
-sourceParams = forrás
-destinationParams = cél
-sensorPortLetterParams = érzékelő port betűje
-rxDataLengthParams = rx adat hossz
-wildcardParams = fájlnév helyettesítő karakterekkel
-motorPortLetterParams = motorport betűje
-mailboxParams = levelezési fiók
-durationMsParams = időtartam ezredmásodpercben
-relativeParams = relatív
-sensorTypeParams = érzékelő típus
-sensorModeParams = érzékelő üzemmód
-powerParams = sebesség
-modeParams = üzemmód
-regulationModeParams = szabályozási mód
-turnRatioParams = fordulási arány
-runStateParams = mozgási állapot
-tachoLimitParams = tachométer határ
-programNameParams = program neve
-distanceParams = távolság
-azimuthParams = z elfordulás
-pitchParams = y elfordulás
-rollParams = x elfordulás
-simpleStepsParams = lépések száma
-walkStepsParams = lépések száma
-seedParams = mag
-rendezvousServerParams = randi szerver
-millisecsParams = ezredmásodpercek
-soundParams = hang
-messageTextParams = üzenet
-tagParams = címke
-valueParams = érték
-valueToStoreParams = tárolandó érték
-valueToAddParams = hozzáadandó érték
-tagFromWebDBParams = címke
-valueFromWebDBParams = érték
-followers2Params = követők
-timelineParams = legutóbbi üzenetek
-mentionsParams = említések
-searchResultsParams = keresési eredmények
-userParams = felhasználó
-urlParams = URL
-responseCodeParams = válaszkód
-responseTypeParams = válasz típusa
-responseContentParams = válasz tartalma
-htmlTextParams = HTML szöveg
-jsonTextParams = JSON szöveg
-pathParams = elérési út
-encodingParams = szöveg kódolás
-xmlTextParams = XML szöveg
-nameParams = név
-serviceNameParams = szolgáltatás neve
-millisecondsParams = ezredmásodpercek
-messagesParams = üzenetek
-startParams = kezdete
-endParams = vége
-frequencyHzParams = frekvencia Hz
-secureParams = biztonságos
-fileParams = fájl
-thumbPositionParams = csúszka érték
-selectionParams = kiválasztott elem
-valueIfTagNotThereParams = érték ha címke nem található
-queryParams = keresési szöveg
-imagePathParams = kép útvonal
-msParams = ezredmásodperc
-translationParams = fordítás
-languageToTranslateToParams = célnyelv
-textToTranslateParams = lefordítandó szöveg
-xAngularVelocityParams = x szögsebesség
-yAngularVelocityParams = y szögsebesség
-zAngularVelocityParams = z szögsebesség
-timestampParams = időbélyeg
-colorCodeParams = színkód
-colorNameParams = színneve
-fillParams = kitöltés
-frequencyParams = frekvencia
-heightParams = magasság
-noParams = sorszám
-rateParams = ráta
-sensorValueParams = érzékelő érték
-tachoCountParams = tachométer érték
-tachoCountsParams = tachométer értékek
-useBrakeParams = fék használata
-volumeParams = hangerő
-widthParams = szélesség
-AccelerationChangedEvents = Gyorsulás megváltozott
-ActivityCanceledEvents = Aktivitást megszakították
-AfterActivityEvents = Aktivitás befejeződött
-CollidedWithEvents = Ütközött egy másik szereplővel
-DraggedEvents = Arrébb húzták
-EdgeReachedEvents = Elérte a rajzvászon szélét
-FlungEvents = Elhajították
-NoLongerCollidingWithEvents = Már nem ütközik a másik szereplővel
-TouchDownEvents = Lenyomták
-TouchUpEvents = Felengedték
-TouchedEvents = Megérintették
-AfterScanEvents = Vonalkód beolvasása megtörtént
-ConnectionAcceptedEvents = Kapcsolódás megtörtént
-ClickEvents = Kattintottak
-GotFocusEvents = Fókuszba került
-LongClickEvents = Hosszan kattintottak
-RequestFocusMethods = Kerüljön fókuszba
-LostFocusEvents = Elvesztette a fókuszt
-ViewContactMethods = Névjegy megtekintése
-AfterRecordingEvents = Elkészült a felvétel
-AfterPictureEvents = Elkészült a fotó
-ChangedEvents = Megváltozott
-TimerEvents = Időzítőesemény
-AfterPickingEvents = Elem ki lett választva
-BeforePickingEvents = Lista elemek meg fognak jelenni
-BackPressedEvents = Vissza gomb le lett nyomva
-ErrorOccurredEvents = Hiba történt
-InitializeEvents = Alkalmazás elindult
-OtherScreenClosedEvents = Másik képernyő bezárult
-PermissionDeniedEvents = Engedély megtagadva
-PermissionGrantedEvents = Engedély megadva
-ScreenOrientationChangedEvents = Képernyő iránya megváltozott
-GotResultEvents = Megérkezett a lekérdezés eredménye
-FunctionCompletedEvents = Befejeződött
-GotMessageEvents = Üzenet érkezett
-InfoEvents = Információ
-InstanceIdChangedEvents = példány azonosító megváltozott
-InvitedEvents = Meghívót kapott
-NewInstanceMadeEvents = Új példány létrejött
-NewLeaderEvents = Új vezető lett megválasztva
-PlayerJoinedEvents = Új játékos csatlakozott
-PlayerLeftEvents = Játékos távozott
-ServerCommandFailureEvents = Szerverparancs hiba
-ServerCommandSuccessEvents = Szerverparancs sikeresen végrehajtódott
-UserEmailAddressSetEvents = Felhasználó e-mail címe be lett állítva
-WebServiceErrorEvents = Webszolgáltatás hiba
-FirebaseErrorEvents = Firebase hiba
-LocationChangedEvents = Helyzet megváltozott
-StatusChangedEvents = Állapot változott
-AfterChoosingEvents = Megtörtént a választás
-AfterTextInputEvents = Megtörtént a szövegbevitel
-ChoosingCanceledEvents = Kiválasztás megszakítva
-TextInputCanceledEvents = Szövegbevitel megszakítva
-AboveRangeEvents = Érzékelési tartomány feletti érték
-BelowRangeEvents = Érzékelési tartomány alatti érték
-ColorChangedEvents = Szín megváltozott
-WithinRangeEvents = Érzékelési tartományon belüli érték
-PressedEvents = Lenyomták
-ReleasedEvents = Felengedték
-OrientationChangedEvents = Készülék iránya változott
-CalibrationFailedEvents = Kalibráció nem sikerült
-GPSAvailableEvents = GPS elérhetővé vált
-GPSLostEvents = GPS jel elveszett
-SimpleStepEvents = Egy lépés
-StartedMovingEvents = Mozgás elindult
-StoppedMovingEvents = Mozgás megállt
-WalkStepEvents = Előre lépés
-CompletedEvents = Befejeződött
-AfterSoundRecordedEvents = Hangfelvétel elkészült
-StartedRecordingEvents = Hangrögzítés elindult
-StoppedRecordingEvents = Hangrögzítés megállt
-AfterGettingTextEvents = Beszédfelismerés befejeződött
-BeforeGettingTextEvents = Beszédfelismerés elkezdődött
-AfterSpeakingEvents = Felolvasás véget ért
-BeforeSpeakingEvents = Felolvasás el fog kezdődni
-MessageReceivedEvents = Üzenet érkezett
-SendMessageEvents = Üzenet küldése
-GotValueEvents = Megérkezett a lekérdezés eredménye
-TagListEvents = Címke lista megérkezett
-ValueStoredEvents = Adat írása befejeződött
-DataChangedEvents = Adat megváltozott
-DirectMessagesReceivedEvents = Közvetlen üzenet érkezett
-FollowersReceivedEvents = Követők listája megérkezett
-FriendTimelineReceivedEvents = Barátok legutóbbi üzenetei megérkeztek
-IsAuthorizedEvents = Sikeresen bejelentkezett
-MentionsReceivedEvents = Említések listája megérkezett
-SearchSuccessfulEvents = Keresés sikeresen befejeződött
-GotBallotEvents = Van szavazás
-GotBallotConfirmationEvents = Megérkezett a szavazatod
-NoOpenPollEvents = Nincs szavazás
-GotFileEvents = Fájl letöltés befejeződött
-GotTextEvents = Szöveges tartalom beolvasása befejeződött
-AfterFileSavedEvents = Fájl írása befejeződött
-AfterDateSetEvents = Dátum ki lett választva
-TagReadEvents = Üzenet érkezett
-TagWrittenEvents = Üzenet el lett küldve
-PositionChangedEvents = Pozíció megváltozott
-AfterSelectingEvents = Lista elem ki lett választva
-AfterTimeSetEvents = Időpont ki lett választva
-GotTranslationEvents = Elkészült a fordítás
-ShakingEvents = Rázkódik
-GyroscopeChangedEvents = Giroszkóp által mért értékek megváltoztak
-TachoCountChangedEvents = Tachométer érték megváltozott
-SensorValueChangedEvents = Érzékelt érték megváltozott
-ResolveActivityMethods = Elérhető aktivitás nevének lekérdezése
-StartActivityMethods = Aktivitás indítása
-ConnectMethods = Kapcsolódás
-ConnectWithUUIDMethods = Kapcsolódás UUID azonosítóval
-DisconnectMethods = Kapcsolat bontása
-IsDevicePairedMethods = Össze van-e párosítva
-ReceiveSigned1ByteNumberMethods = Fogadás előjeles 1 bájtból szám
-ReceiveSigned2ByteNumberMethods = Fogadás előjeles 2 bájtból szám
-ReceiveSigned4ByteNumberMethods = Fogadás előjeles 4 bájtból szám
-ReceiveSignedBytesMethods = Fogadás előjeles bájtok
-ReceiveTextMethods = Fogadás szöveg
-ReceiveUnsigned1ByteNumberMethods = Fogadás előjel nélküli 1 bájtból szám
-ReceiveUnsigned2ByteNumberMethods = Fogadás előjel nélküli 2 bájtból szám
-ReceiveUnsigned4ByteNumberMethods = Fogadás előjel nélküli 4 bájtból szám
-ReceiveUnsignedBytesMethods = Fogadás előjel nélküli bájtok
-Send1ByteNumberMethods = Küldés 1 bájtból szám
-Send2ByteNumberMethods = Küldés 2 bájtból szám
-Send4ByteNumberMethods = Küldés 4 bájtból szám
-SendBytesMethods = Küldés 1 bájt
-SendTextMethods = Küldés szöveg
-AcceptConnectionMethods = Kapcsolódási kísérlet fogadása
-AcceptConnectionWithUUIDMethods = Kapcsolódási kísérlet fogadása UUID-vel
-BytesAvailableToReceiveMethods = Érkezett bájtok száma
-StopAcceptingMethods = Üzenet fogadás befejezése
-RecordVideoMethods = Készíts felvételt
-TakePictureMethods = Készíts fotót
-ClearMethods = Törlés
-DrawCircleMethods = Kör rajzolás
-DrawLineMethods = Vonal rajzolás
-DrawPointMethods = Pont rajzolás
-DrawTextMethods = Szöveg rajzolás
-DrawTextAtAngleMethods = Elforgatott szöveg rajzolás
-GetBackgroundPixelColorMethods = Háttér képpont színének lekérdezése
-GetPixelColorMethods = Képpont színének lekérdezése
-SaveMethods = Mentés
-SaveAsMethods = Mentés másként
-SetBackgroundPixelColorMethods = Háttér képpont kiszínezése
-AddDurationMethods = Időtartam hozzáadása
-AddDaysMethods = Napok hozzáadása
-AddHoursMethods = Órák hozzáadása
-AddMinutesMethods = Percek hozzáadása
-AddMonthsMethods = Hónapok hozzáadása
-AddSecondsMethods = Másodpercek hozzáadása
-AddWeeksMethods = Hetek hozzáadása
-AddYearsMethods = Évek hozzáadása
-DayOfMonthMethods = Hónap hányadik napja
-DurationMethods = Időtartam
-DurationToSecondsMethods = Eltelt időből másodpercek
-DurationToMinutesMethods = Eltelt időből percek
-DurationToHoursMethods = Eltelt időből órák
-DurationToDaysMethods = Eltelt időből napok
-DurationToWeeksMethods = Eltelt időből hetek
-FormatDateMethods = Dátum szöveggé alakítása
-FormatDateTimeMethods = Dátum és idő szöveggé alakítása
-FormatTimeMethods = Idő szöveggé alakítása
-GetMillisMethods = Ezredmásodpercekre váltás
-HourMethods = Óra
-InstantMethods = Pillanat érték
-MakeInstantMethods = Pillanat érték létrehozása
-MakeInstantFromMillisMethods = Pillanat érték létrehozása ezredmásodpercekből
-MinuteMethods = Perc
-MonthMethods = Hónap
-MonthNameMethods = Hónap neve
-NowMethods = Most
-SecondMethods = Másodperc
-SystemTimeMethods = Rendszeridő
-WeekdayMethods = Hét hányadik napja
-WeekdayNameMethods = Nap neve
-YearMethods = Év
-OpenMethods = Megnyitás
-CloseScreenAnimationMethods = Záró animáció típusa
-OpenScreenAnimationMethods = Nyitó animáció típusa
-DoQueryMethods = Fusion table parancs
-ForgetLoginMethods = Kijelentkezés
-SendQueryMethods = Lekérdezés elküldése
-GetInstanceListsMethods = Példányok lekérdezése
-GetMessagesMethods = Üzenetek lekérdezése
-InviteMethods = Meghívás
-LeaveInstanceMethods = Példány elhagyása
-MakeNewInstanceMethods = Új példány létrehozása
-ServerCommandMethods = Szerver parancs küldése
-SetInstanceMethods = Példány beállítása
-SetLeaderMethods = Vezető kinevezése
-BounceMethods = Pattanj vissza
-CollidingWithMethods = Ütköznek-e
-MoveIntoBoundsMethods = Helyezkedj a rajzvászon belsejébe
-MoveToMethods = Ugorj helyre
-PointInDirectionMethods = Nézz egy megadott pont irányába
-PointTowardsMethods = Nézz egy célszereplő irányába
-LatitudeFromAddressMethods = Cím hosszúsági foka
-LongitudeFromAddressMethods = Cím szélességi foka
-LogErrorMethods = Hibaüzenet naplózása
-LogInfoMethods = Információ üzenet naplózása
-LogWarningMethods = Figyelmeztető üzenet naplózása
-ShowAlertMethods = Ideiglenes figyelmeztető ablak
-ShowChooseDialogMethods = Választás ablak megjelenítése
-ShowMessageDialogMethods = Szöveges üzenet ablak megjelenítése
-ShowTextDialogMethods = Szövegbevitel ablak megjelenítése
-ShowProgressDialogMethods = Folyamatábrázoló ablak megjelenítése
-DismissProgressDialogMethods = Folyamatábrázoló ablak eltüntetése
-GetColorMethods = Szín lekérdezése
-GetLightLevelMethods = Fényerő lekérdezése
-DeleteFileMethods = Fájl törlése
-DownloadFileMethods = Fájl letöltése
-GetBatteryLevelMethods = Akkumulátor töltöttségi szint lekérdezése
-GetBrickNameMethods = Tégla név lekérdezése
-GetCurrentProgramNameMethods = Aktuális program nevének lekérdezése
-GetFirmwareVersionMethods = Firmware verzió lekérdezése
-GetInputValuesMethods = Szenzor bemeneti értékek lekérdezése
-GetOutputStateMethods = Motor kimeneti állapotának lekérdezése
-KeepAliveMethods = Maradj ébren
-ListFilesMethods = Fájlok listázása
-LsGetStatusMethods = Beolvasásra váró bájtok száma
-LsReadMethods = Beolvasás portról
-MessageReadMethods = Üzenet olvasása
-MessageWriteMethods = Üzenet írása
-PlaySoundFileMethods = Hangfájl lejátszása
-PlayToneMethods = Tónus lejátszása
-ResetInputScaledValueMethods = Érzékelő bemenet alaphelyzetbe állítása
-ResetMotorPositionMethods = Motor alaphelyzetbe állítása
-SetBrickNameMethods = Tégla név beállítása
-SetInputModeMethods = Érzékelő bemeneti mód beállítása
-SetOutputStateMethods = Kimeneti állapot beállítása
-StartProgramMethods = Program indítása
-StopProgramMethods = Program leállítása
-StopSoundPlaybackMethods = Hanglejátszás leállítása
-LsWriteMethods = Írás portra
-MoveBackwardMethods = Tolatás
-MoveBackwardIndefinitelyMethods = Tolatás meghatározatlan ideig
-MoveForwardMethods = Mozgás előre
-MoveForwardIndefinitelyMethods = Mozgás előre meghatározatlan ideig
-StopMethods = Megállás
-TurnClockwiseIndefinitelyMethods = Fordulás óramutató járásával megegyező irányban
-TurnCounterClockwiseIndefinitelyMethods = Fordulás óramutató járásával ellentétes irányban
-GetSoundLevelMethods = Hangerő lekérdezése
-IsPressedMethods = Le van nyomva
-GetDistanceMethods = Távolság lekérdezése
-PauseMethods = Megállítás
-ResetMethods = Újrakezdés
-ResumeMethods = Folytatás
-StartMethods = Indítás
-MakePhoneCallMethods = Telefonhívás indítása
-GetWifiIpAddressMethods = Wifi IP cím lekérdezése
-isConnectedMethods = csatlakozvaVan
-setHmacSeedReturnCodeMethods = HMAC mag visszatérési kód beállítása
-startHTTPDMethods = HTTPD indítása
-VibrateMethods = Rezgetés
-GetTextMethods = Beszédfelismerés
-HideKeyboardMethods = Billentyűzet elrejtése
-AskForPermissionMethods = Engedély kérése
-SpeakMethods = Felolvasás
-SendMessageMethods = Üzenetküldés
-GetValueMethods = Adat lekérdezése
-StoreValueMethods = Adat írása
-GetTagListMethods = Címke lista lekérdezése
-AppendValueMethods = Új elem beillesztése
-RemoveFirstMethods = Első elem törlése
-AppendValueToListMethods = Elem hozzáadása listához
-RemoveFirstFromListMethods = Első lista elem törlése
-FirstRemovedEvents = Első elem el lett távolítva
-InitializeValueMethods = Kezdő értékadás
-AuthorizeMethods = Bejelentkezés
-CheckAuthorizedMethods = Be van-e jelentkezve
-DeAuthorizeMethods = Kiléptetés
-DirectMessageMethods = Közvetlen üzenet küldés
-FollowMethods = Követés
-RequestDirectMessagesMethods = Közvetlen üzenetek lekérdezése
-RequestFollowersMethods = Követők lekérdezése
-RequestFriendTimelineMethods = Barátok üzeneteinek lekérdezése
-RequestMentionsMethods = Említések lekérdezése
-SearchTwitterMethods = Twitter keresés
-SetStatusMethods = Státusz beállítása
-StopFollowingMethods = Követés leállítása
-GetDurationMethods = Videó hosszának lekérdezése
-SeekToMethods = Ugrás
-DoScanMethods = Vonalkód beolvasás
-RequestBallotMethods = Szavazás kérvényezése
-SendBallotMethods = Szavazási adatok küldése
-BuildPostDataMethods = Feltöltési adatok felépítése
-ClearCookiesMethods = Sütik törlése
-GetMethods = Letöltés (GET)
-HtmlTextDecodeMethods = HTML szöveg dekódolása
-JsonTextDecodeMethods = JSON szöveg dekódolása
-xmlTextDecodeMethods = XML szöveg dekódolása
-PostFileMethods = Fájl küldése (POST)
-PostTextMethods = Szöveg küldése (POST)
-PostTextWithEncodingMethods = Szöveg küldése kódolással (POST)
-UriEncodeMethods = URI kódolás
-UriDecodeMethods = URI dekódolás
-CanGoBackMethods = Vissza tud lépni
-CanGoForwardMethods = Előre tud lépni
-ClearLocationsMethods = Elmentett földrajzi helyek törlése
-ClearCachesMethods = Gyorsítótár törlése
-GoBackMethods = Visszalépés
-GoForwardMethods = Előrelépés
-GoHomeMethods = Kezdőlapra ugrás
-GoToUrlMethods = Weboldal betöltése
-AppendToFileMethods = Hozzáfűzés fájl végéhez
-DeleteMethods = Törlés
-ReadFromMethods = Fájlból olvasás
-SaveFileMethods = Fájl mentése
-doFaultMethods = hiba
-getVersionNameMethods = verziónév
-installURLMethods = telepítési URL
-isDirectMethods = közvetlen
-setAssetsLoadedMethods = betöltendő erőforrások
-shutdownMethods = leállítás
-ShareFileMethods = Fájl megosztása
-ShareFileWithMessageMethods = Fájl megosztása üzenettel
-ShareMessageMethods = Üzenet megosztása
-PlayMethods = Lejátszás
-DisplayDropdownMethods = Lista megjelenítése
-ClearAllMethods = Minden adat törlése
-ClearTagMethods = Adat törlése
-GetTagsMethods = Címkék lekérdezése
-TweetMethods = Tweet
-TweetWithImageMethods = Tweet képpel
-BuildRequestDataMethods = Szöveges HTTP kérés előállítása
-PutFileMethods = Fájl feltöltés (PUT)
-PutTextMethods = Szöveg feltöltés (PUT)
-PutTextWithEncodingMethods = Szöveg feltöltés kódolással (PUT)
-RequestTranslationMethods = Fordítás elindítása
-GetBatteryCurrentMethods = Akkumulátor áram lekérdezése
-GetBatteryVoltageMethods = Akkumulátor feszültségszint lekérdezése
-GetHardwareVersionMethods = Hardver verzió lekérdezése
-SetAngleModeMethods = Orientáció mérési üzemmód beállítása
-SetRateModeMethods = Szögsebesség mérési üzemmód beállítása
-SetCmUnitMethods = Centiméter mértékegység beállítása
-SetInchUnitMethods = Hüvelyk mértékegység beállítása
-SetColorModeMethods = Színérzékelési mód beállítása
-SetReflectedModeMethods = Reflektált fényérzékelési mód beállítása
-SetAmbientModeMethods = Környező fényérzékelési mód beállítása
-RotateIndefinitelyMethods = Forgás meghatározatlan ideig
-RotateInDistanceMethods = Forgás távolság alapján
-RotateInDurationMethods = Forgás időtartam alapján
-RotateInTachoCountsMethods = Forgás tachométer érték alapján
-RotateSyncIndefinitelyMethods = Forgás azonos sebességgel meghatározatlan ideig
-RotateSyncInDistanceMethods = Forgás azonos sebességgel távolság alapján
-RotateSyncInDurationMethods = Forgás azonos sebességgel időtartam alapján
-RotateSyncInTachoCountsMethods = Forgás azonos sebességgel tachométer érték alapján
-ToggleDirectionMethods = Irányváltoztatás
-GetTachoCountMethods = Tachométer érték lekérdezése
-ResetTachoCountMethods = Tachométer alaphelyzetbe állítása
-GetSensorValueMethods = Érzékelő érték lekérdezése
-GetColorCodeMethods = Színkód lekérdezése
-GetColorNameMethods = Szín nevének lekérdezése
-FillScreenMethods = Képernyő kitöltése
-DrawRectMethods = Téglalap rajzolás
-DrawIconMethods = Ikon rajzolás
-GetOSVersionMethods = Operációs rendszer verzió lekérdezése
-GetOSBuildMethods = Operációs rendszer építési számának lekérdezése
-GetFirmwareBuildMethods = Firmware építési számának lekérdezése
-SetPowerMethods = Sebesség beállítása
-StopSoundMethods = Hanglejátszás leállítása
-MockSpinnerAddItems = elemek hozzáadása...
-AccelerometerSensorHelpStringComponentPallette = Láthatatlan komponens, amely képes érzékelni ha valaki rázza a telefont és a készülék gyorsulását három dimenzióban (m/s2). A három dimenziót az alábbi változók képviselik:
\n
x-gyorsulás: 0 ha a készülék sima felszínen fekszik mozdulatlanul, pozitív szám ha jobb oldalra dől (vagyis a bal széle emelkedik), és negatív szám ha bal oldalra dől (vagyis a jobb széle emelkedik).
\n
y-gyorsulás: 0 ha a készülék sima felszínen fekszik mozdulatlanul, pozitív szám ha a készülék alja emelkedik, negatív ha a teteje.
\n
z-gyorsulás: -9.8 m/s2 (a Föld gravitációs erejének megfelelő nagyságú) ha a készülék párhuzamos helyzetben van a földdel és a képernyője felfelé néz, 0 ha merőleges a földre (valamelyik élén áll), és +9.8 ha lefelé néz. Az is befolyásolja ezt az értéket ha a telefont a föld irányába vagy azzal ellentétesen mozgatjuk.
-ActivityStarterHelpStringComponentPallette =
A komponens AktivitásIndítása parancsával egy Androidos aktivitást indíthatunk el (egy aktivitás nagyon sokféle tevékenységet jelenthet, lásd a példákat).
Ezt több célra is felhasználhatjuk:
\n
egy másik App Inventorban létrehozott alkalmazás elindítása
\n
a kamera alkalmazás elindítása
\n
webes keresés elindítása
\n
a böngésző megnyitása egy megadott URL-el
\n
a térkép alkalmazás megnyitása egy konkrét hellyel
\nOlyan Androidos aktivitás is elindítható vele, amely szöveges adattal tér vissza.
-BallHelpStringComponentPallette =
Egy kör alakú \"szereplő\", amelyet ha egy Rajzvászon komponensre helyezünk, akkor képes reagálni a tapintásra és húzásra, valamint kapcsolatba léphet a többi szereplővel (pl: ütközés vizsgálata).
A labda mozgása az Irány, FrissítésiIntervallum és a Sebesség tulajdonságokon keresztül. Ha például azt akarjuk hogy a labda felfelé mozogjon másodpercenként 4 képpontnyival, akkor az elérhető úgy, hogy az Irány 90 [fok], a FrissítésiIntervallum 1000 [ezredmásodperc], a a Sebesség pedig 4.
A labda kinézetét csak a Sugár és a Szín tulajdonságokkal állítható be (teljesen egyedi kinézethez használd a Szereplő komponenst és állítsd be annak Kép tulajdonságát.
-BarcodeScannerHelpStringComponentPallette = A komponens grafikus vonalkódokat képes beolvasni és szöveggé alakítani.
-BluetoothClientHelpStringComponentPallette = Bluetooth kliens komponens. Egy Bluetooth szerverhez lehet vele kapcsolódni.
-BluetoothServerHelpStringComponentPallette = Bluetooth szerver komponens. Egy vagy több Bluetooth kliens kapcsolódhat hozzá.
-ButtonHelpStringComponentPallette = Gomb vezérlő, amely képes érzékelni ha rákattintanak. A képernyő szerkesztőben vagy akár a blokk szerkesztőben is testre szabható a kinézete, de akár az is hogy képes legyen-e kattintások érzékelésére (Enabled).
-CamcorderHelpStringComponentPallette = A komponens segítségével videó felvételt készíthetünk a készülék kamerájával. A felvétel elkészülte után kerül végrehajtásra az ElkészültAFelvétel esemény, amelynek paramétereként megkapjuk a videót tároló fájl teljes elérési útját. Ezt később felhasználhatjuk például arra, hogy egy videó lejátszó komponens MédiaTartalomElérésiÚtja tulajdonságát beállítsuk rá.
-CameraHelpStringComponentPallette = A komponens segítségével egy fotót készíthetünk a készülék kamerájával. A felvétel elkészülte után kerül végrehajtásra az elkészült a fotó esemény, amelynek paramétereként megkapjuk a fotót tároló fájl nevét. Ezt később felhasználhatjuk például arra, hogy egy Kép komponens Kép forrása tulajdonságát beállítsuk rá.
-CanvasHelpStringComponentPallette =
Egy téglalap alakú terület a képernyőn, amelyre szereplőket lehet rajzolni és reagál az érintésekre.
A szereplők helyzetét (X, Y) koordinátákkal lehet megadni, ahol:
X a szereplő vízszintes távolsága (képpontban) a rajzvászon bal szélétől
Y a szereplő függőleges távolsága (képpontban) a rajzvászon tetejétől
Érintésre/húzásra eseményekkel reagál, amelyeket a Blokk Szerkesztőben lehet kezelni.
Vonalakat, téglalapokat, köröket és más alakzatokat lehet rá rajzolni.
-CheckBoxHelpStringComponentPallette = Jelelő négyzet vezérlő, amely képes érzékelni ha rákattintanak. Kétféle állapota lehet: vagy ki van pipálva vagy nincs. A Képernyő Szerkesztőben és Blokk Szerkesztőben is testre szabható a kinézete.
-ClockHelpStringComponentPallette =
Láthatatlan komponens, amellyel lekérdezhető az aktuális idő és időzítésre is használható (adott időközönként végrehajtani egy feladatot).
Ugyancsak képes dátumok szöveggé alakítására, ahol ha nem adunk meg formátumot, akkor az alapértelmezettet használja: \"MMM d, yyyy HH:mm:ss a\" (pl: Jan 8, 2008 11:35:00 AM). A lehetséges formátumokról itt olvashatsz.
-ContactPickerHelpStringComponentPallette =
Egy gomb, amelyet ha lenyomunk, megjeleníti a készüléken található névjegyek listáját. Miután a felhasználó kiválasztott közülük egyet, az alábbi információk állnak rendelkezésre a NévjegyKiLettVálasztva blokkban:
\n
Névjegy név: a névjegyhez tartozó személy/cég neve
\n
E-mail cím: a névjegyhez tartozó elsődleges e-mail cím
\n
NévjegyUri: névjegy erőforrás azonosítója (URI) a készüléken
\n
Kép: a névjegyhez tartozó kép fájl elérési útja, amely értéket felhasználhatjuk egy Kép vagy egy Szereplő komponens Kép forrása mezőjének beállításánál.
\n
Vannak egyéb tulajdonságai, amelyek a gomb kinézetét módosítják (Szöveg víszintes igazítás, Háttérszín, stb.), illetve az hogy a gombra rá lehet-e kattintani (Engedélyezett).
Nem mindegyik készülék támogatja a névjegyek kiválasztását. Hiba esetén egy felugró üzenetablakban lesz látható a hiba oka, de ezt a viselkedést felülírhatjuk a Képernyő komponens HibaTörtént blokkjában.
-DatePickerHelpStringComponentPallette =
Egy gomb, amely kattintásra egy felugró ablakot jelenít meg, amelyben egy dátumot választhatunk ki.
-EmailPickerHelpStringComponentPallette =
Az EmailCímVálasztó egy szöveges beviteli mező, amelybe ha elkezdünk írni, akkor megjeleníti azoknak a tárolt e-mail címeket, amelyek a már begépelt szöveggel kezdődnek. Ha a list túl hosszú a lista, akkor több másodpercet is igénybe vehet annak betöltése. Ilyenkor egy ideiglenes eredményt jelenít meg a rendszer, amíg a teljes lista el nem készül.
A begépelt szöveg a Szöveg mezőben található, ha ez üres, akkor pedig Segítség/Tipp mező tartalma lesz látható.
\n
Vannak egyéb tulajdonságai, amelyek a gomb kinézetét módosítják (SzövegVíszintesIgazítás, Háttérszín, stb.), illetve az hogy a gombra rá lehet-e kattintani (Engedélyezett).
A szöveges beviteli mezőket sokszor használjuk a Gomb komponenssel együtt, amikor is a felhasználó a szöveg beírása után rákattint egy gombra.
-Ev3MotorsHelpStringComponentPallette = Magas és alacsony szintű hozzáférést is biztosít a LEGO MINDSTORMS EV3 robot mozgását irányító motorhoz.
-Ev3TouchSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS EV3 roboton található érintés érzékelőhöz.
-Ev3GyroSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS EV3 roboton található giroszkóphoz.
-Ev3ColorSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS EV3 roboton található színérzékelő eszközhöz.
-Ev3UltrasonicSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS EV3 roboton található ultrahang érzékelőhöz.
-Ev3CommandsHelpStringComponentPallette = Alcsony szintű hozzáférést biztosít a LEGO MINDSTORMS EV3 robothoz, közvetlen parancsokat küldhetünk vele az eszközre.
-Ev3UIHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS EV3 robot grafikus képességeihez.
-Ev3SoundHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS EV3 roboton található hanglejátszóhoz.
-FileHelpStringComponentPallette = Láthatatlan komponens, amellyel fájlokat írhatunk és olvashatunk. Alapértelmezetten az alkalmazáshoz rendelt privát adatkönyvtárba írja az állományokat. A Companion segédalkalmazás az /sdcard/AppInventor/data könyvtárt használja fájlok írására, a hibakövetés (debugging) elősegítésére. Ha a fájl elérési útja perjellel (/) kezdődik, akkor a program azt az /sdcard mappához viszonyítva értelmezi. Például /alma.txt esetén a tényleges elérési út /sdcard/alma.txt lesz.
-FormHelpStringComponentPallette = Legfelsőbb szintű komponens, amely magába foglal minden más komponenst az alkalmazásban.
-FusiontablesControlHelpStringComponentPallette =
Láthatatlan komponens, amellyel Google Fusion Tables adatabázisokat használhatunk, új táblákat hozhatunk létre, módosíthatjuk a már meglévőket és lekérdezhetjük a bennük tárolt adatokat.
Ha használni akarjuk ezt a komponenst, akkor ehhez be kell jelentkezni a Google megfelelő szerverére. Ezt kétféleképpen lehet megtenni. Egyrészt be lehet jelentkezni az API Kulcs használatával, amit fejlesztőként igényelhetünk (lásd lejjebb). Ha ezt a megoldást választjuk akkor az alkalmazás felhasználójának is be kell jelentkeznie a Fusion Tables használata előtt. A másik lehetőség az ún. Szolgáltatási Fiókkal (Service Account) történő bejelentkezés. Ehhez először létre kell hozni egy ún. Szolgáltatási E-mail Címet (Service Account E-mail Address), amelyet a Google API Konzol felületén lehet megtenni. Ezután Fusion Table Vezérlőn (Fusion Table Control) be kell állítani a Szolgáltatási E-mail Címet, majd a mobilalkalmazás erőforrásként feltölteni a titkos kulcsot és beállítani rá a KulcsFájl tulajdonságát a komponensnek. Legvégül pedig a \"belépés szolgáltatási e-mail címmel\" mezőt ki kell pipálni. Szolgáltatási Fiók használata esetén a Fusion Tables adatabázisokhoz való összes azon keresztül történik majd, a mobilalkalmazás felhasználójának nem kell hozzá bejelentkeznie.
Az API Kulcs megszerzéséhez az alábbiakat kell tenni:
Nyisd meg a Google API Konzolt és jelentkezz be amennyiben az szükséges.
Válaszd ki a Szolgáltatások (Services) menüpontot a bal oldali menüből.
Válaszd ki a Fusion tables szolgáltatást a listából és kapcsold be.
Menj vissza a főmenübe és válaszd ki a API Hozzáférés (API Access) menüpontot.
Az API Kulcsod a panel alján, az Egyszerű API Hozzáférés (Simple API Access) szekcióban. Ezt az értéket kell megadnod a komponens APIKulcs mezőjében a Fusion Tables technológiát használó alkalmazásodban.
Az API Kulcs beállítása után, írj be a Lekérdezés mezőbe egy érvényes Fusiontables SQL lekérdező parancsot és hívd meg a LekérdezésElküldése blokkot a parancs lefuttatásához. Az App Inventor ekkor elküldi a parancsot a Fusion Tables szervernek, majd a MegérkezettALekérdezésEredménye esemény meghívásával jelzi hogy megjött az eredmény. A lekérdezés eredményét CSV formában kapjuk vissza, amely listává alakítható a \"készíts listát CSV táblázatból\" or \"készíts listát CSV sorból\" blokkokkal.
A parancs szövegének UTF-kódolásával nem kell külön foglalkozni, viszont követni kell a Fusion Tables Kézikönyvben megadott szintaxist, amely többek között azt jelenti, hogy az oszlopok neveinél meg kell különböztetnünk a kis- és nagy betűket, valamint aposztrófok közé kell tenni azokat, ha szóközt tartalmaznak.
-GameClientHelpStringComponentPallette = Lehetővé teszi hogy az alkalmazás internetes játékszerverekkel kommunikáljon.
-GyroscopeSensorHelpStringComponentPallette =
Láthatatlan komponens, amely a készülék szögsebességét (fok / sec) méri három dimenzióban.
A helyes működéshez a készüléknek rendelkeznie kell giroszkóppal, valamint az Engedélyezett mezőt Igaz értékre kell állítani.
Egy olyan elrendező elem, amely a belé rakott komponenseket balról jobbra jeleníti meg. Ha azt szeretnéd, hogy a komponenseket inkább egymás alá helyezze, akkor a FüggőlegesElrendezés vezérlőt érdemes használnod.
Egy olyan elrendező elem, amely a belé rakott komponenseket balról jobbra jeleníti meg. Ha azt szeretnéd, hogy a komponenseket inkább egymás alá helyezze, akkor a FüggőlegesElrendezés vezérlőt érdemes használnod.
Ez a komponens görgethető (ha a benne lévő elemek nem férnek mind ki).
-ImageHelpStringComponentPallette = Képek ábrázolására szolgáló komponens. A Képernyő Szerkesztőben és a Blokk Szerkesztőben is beállítható a kép forrása, szélessége, magassága és egyéb tulajdonságai is.
-ImagePickerHelpStringComponentPallette = Egy olyan gomb, amely megnyitja a készülék fotógalériáját és lehetőséget ad egy kép kiválasztására. Ezután a kiválasztott képet elmenti egy fájlba, amelynek elérési útját a komponens KépElérésiÚtja tulajdonsága tartalmazza majd. Legfeljebb 10 fotót lehet ezzel elmenteni. Ha azon felül is kijelölünk egyet, akkor az felülírja a legrégebben kiválasztott képet.
-ImageSpriteHelpStringComponentPallette =
Egy kétdimenziós kép, amelyet ha egy Rajzvászon komponensre helyezünk, akkor képes reagálni a tapintásra és húzásra, valamint kapcsolatba léphet a többi szereplővel (pl: ütközés vizsgálata).
A labda mozgása az Irány, FrissítésiIntervallum és a Sebesség tulajdonságokon keresztül. Ha például azt akarjuk hogy a labda felfelé mozogjon másodpercenként 4 képpontnyival, akkor az elérhető úgy, hogy az Irány 90 [fok], a FrissítésiIntervallum 1000 [ezredmásodperc], a a Sebesség pedig 4.
Ha a KépesForgásra tulajdonság Igaz értékre van beállítva, akkor a szereplőnek beállított kép az Irány tulajdonság szerint megadott irányba fordul.
Ha ütközés vizsgálatakor a szereplő el van forgatva, akkor is valójában az el nem forgatott változatot használja a rendszer a vizsgálathoz, ezért az nem biztos hogy mindig pontos lesz.
-LabelHelpStringComponentPallette = A Címke komponens egy szöveg ábrázolására szolgál. A Képernyő Szerkesztőben és a Blokk Szerkesztőben is beállítható a tartalma a Szöveg tulajdonságán keresztül, valamint az elhelyezése, a betűk mérete és egyéb jellemzői is.
-ListPickerHelpStringComponentPallette =
Egy gomb, amely kattintásra egy szöveges listát jelenít meg, amelyből a felhasználó kiválaszthat egy listaelemet. A lista elemei a ListaElemekMintSzöveg tulajdonságon keresztül állíthatók be (vesszővel elválasztva, pl: első elem, második elem, harmadik elem) a Képernyő Szerkesztőben vagy a Blokk Szerkesztőben. Ugyancsak beállíthatjuk, ha a Blokk Szerkesztőben egy lista értéket rendelünk a ListaElemek mezőhöz.
A ListaSzűrésBekapcsolva tulajdonságot igaz értékre állítva lehetővé tehetjük a keresést a listaelemek között. További tulajdonságaival állítható például a gomb megjelenítése (SzövegVíszintesIgazítás, HáttérSzín, stb.) és hogy rá reagál-e kattintásra (Engedélyezett).
-ListViewHelpStringComponentPallette =
Egy szöveges listát megjelenítő komponens. A lista elemei a ListaElemekMintSzöveg tulajdonságon keresztül állíthatók be, vagy a Blokk Szerkesztőben a ListaElemek mezőnek értéket adva.
-LocationSensorHelpStringComponentPallette =
Láthatatlan komponens, amely a készülék földrajzi helyzetéről ad információt, többek között a szélességi és hosszúsági fokról, magasságról (ha az eszköz támogatja), sebességéről, valamint címéről. Képes \"geokódolásra\" is, vagyis a szövegesen megadott címnek visszaadja a földrajzi koordinátáit: a szélességi fokát a CímSzélességiFoka blokk, a hosszúsági fokot pedig CímHosszúságiFoka blokk adja vissza.
Működéséhez az Engedélyezett tulajdonságot Igaz értékre kell állítani, valamint a készülék képes kell hogy legyen GPS-en vagy mobil hálózaton keresztül meghatározni a jelenlegi földrajzi koordinátákat.
Az alkalmazás indításakor még nem biztos hogy rendelkezésre állnak ezek az információk, lehet hogy várni kell rá egy kicsit, érdemes lehet feliratkozni a HelyzetMegváltozott eseményre.
-MediaStoreHelpStringComponentPallette =
A MédiaTárhely komponens segítségével egy webszolgáltatáson keresztül média fájlokat tárolhatunk. Egyetlen metódusa van, amellyel a szolgáltatás BLOB tárhelyére tölthetünk fel egy média objektumot, majd visszakapjuk a letárolt fájl URL-jét.
-NearFieldHelpStringComponentPallette =
Láthatatlan komponens, amely rövidtávú vezeték nélküli kommunikációra képes.
Jelenleg csak szöveges üznetek küldésére és fogadására képes (amennyiben a készülék támogatja).
Az üzenetek olvasásához az OlvasásMód mezőt Igaz értékre, írásához pedig Hamis értékre kell állítani
Figyelem: a komponens csak az alkalmazás kezdő képernyőjén képes működni.
-NotifierHelpStringComponentPallette = A felugró üzenet komponensen keresztül figyelmeztető üzeneteket, ideiglenes felugró ablakokat és az Android naplózási lehetőségeit tudjuk használni:
SzövegesÜzenetAblak: egy üzenetet jelenít meg, amelyet a felhasználó egy gomb megnyomásával tüntethet el
VálasztásAblak: egy üzenetet és két szöveges gombot jelenít meg, a felhasználó két gomb közül az egyik megnyomásával tüntetheti el az ablakot, amelynek hatására a MegtörténtAVálasztás esemény következik be
SzövegBevitelAblak: a felhasználó a megjelenő üzenetre egy szöveg bevitelével válaszolhat, amelynek hatására a MegtörténtASzövegBevitel esemény következik be
IdeiglenesFigyelmeztetőAblak: egy ideiglenes figyelmeztető üzenetet jelenít meg, amely rövid idő után magától eltűnik
FolyamatÁbrázolóAblak: egy üzenetet és egy forgó animációt jelenít meg, jelezve hogy egy befejezetlen folyamat megy a háttérben. Csak a FolyamatÁbrázolóAblakBezárása paranccsal lehet eltüntetni.
FolyamatÁbrázolóAblakBezárása: eltünteti azt az ablakot amelyet a FolyamatÁbrázolóAblak parancs hozott elő.
HibaÜzenetNaplózása: egy hibaüzenetet ír az Android rendszer szöveges eseménynaplójába.
FigyelmeztetőÜzenetNaplózása: egy figyelmeztető üzenetet ír az Android rendszer szöveges eseménynaplójába.
InformációÜzenetNaplózása: egy egyszerű szöveges üzenetet ír az Android rendszer szöveges eseménynaplójába.
Bármelyik ablakban megjelenő üzenet formázható az alábbi HTML elemekkel:<b>, <big>, <blockquote>, <br>, <cite>, <dfn>, <div>, <em>, <small>, <strong>, <sub>, <sup>, <tt>. <u>
Ugyancsak használható a <font> elem a szöveg színének beállítására, pl: <font color=\"blue\">. A szöveg nevét angolul kell megadni. A használható szín nevek: aqua, black, blue, fuchsia, green, grey, lime, maroon, navy, olive, purple, red, silver, teal, white, yellow, stb.
-NxtColorSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS NXT robot színérzékelő eszközéhez.
-NxtDirectCommandsHelpStringComponentPallette = Alacsony szintű hozzáférést biztosít a LEGO MINDSTORM NXT robothoz, közvetlen parancsok küldhetők vele a készülékre.
-NxtDriveHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS NXT eszközhöz, a parancsaival mozgathatjuk és forgathatjuk a robotot.
-NxtLightSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS NXT robot fényérzékelő eszközéhez.
-NxtSoundSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS NXT hangerő mérő eszközéhez.
-NxtTouchSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS NXT érintés érzékelő eszközéhez.
-NxtUltrasonicSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS NXT ultrahang érzékelő eszközéhez.
-OrientationSensorHelpStringComponentPallette =
Láthatatlan komponens, amely a készülék fizikai irányáról ad információkat három dimenzióban:
x elfordulás: 0 fok ha a készülék a földön fekszik, 90 fok ha a bal oldalán áll, és -90 fok ha a jobb oldalán.
y elfordulás: 0 fok ha a készülék a földön fekszik, 90 fok ha a készülék teteje néz függőlegesen lefele, 180 fok ha a képernyő függőlegesen lefele néz. Hasonlóképp -90 fok ha a készülék alja néz lefelé, -180 fok ha a képernyő függőlegesen lefele néz.
z elfordulás: 0 fok ha a észak felé néz, 90 fok ha keletre, 180 fok ha dél irányába, 270 fok ha nyugatra.
Ezek az értékek akkor lehetnek pontosak, ha a készülék nem mozog.
-PasswordTextBoxHelpStringComponentPallette =
Egy szöveges beviteli mező, ahová jelszavakat lehet beírni. Hasonlóan működik mint a Szövegbeviteli mező komponens, de itt nem láthatók a felhasználó által begépelt karakterek.
A beírt szöveg lekérdezhető vagy beállítható a Szöveg tulajdonságon keresztül. Ha a beviteli mező üres, akkor a Segítő szöveg tartalma jelenik meg, amellyel segítő utalást adhatunk mit is kell oda beírni.
A szöveges beviteli mezőket sokszor használjuk a Gomb komponenssel együtt, amikor is a felhasználó a szöveg beírása után rákattint egy gombra.
-PedometerHelpStringComponentPallette = A LépésSzámláló a beépített GyorsulásMérő segítségével számon tartja hány lépést tett meg a készüléket használó személy, illetve hogy az mekkora földrajzi távolságnak felel meg.
-PhoneCallHelpStringComponentPallette =
Egy láthatatlan komponens, amellyel telefon hívásokat kezdeményezhetünk a Telefonszám mezőben megadott számra (pl: "36301234567"), amelyet a Képernyő Szerkesztőben és a Blokk Szerkesztőben is beállíthatunk. A szövegként megadott telefonszám tartalmazhat kötőjel, zárójel és pont karaktereket, de szóközt nem.
A komponens TelefonHívásIndítása blokkjával indíthatjuk el ténylegesen a hívást.
Gyakran használjuk a Névjegy választó vezérlővel együtt, amely lehetővé teszi hogy a felhasználó kiválasszon egy lementett névjegyet és a hozzá tartozó telefonszámot.
-PhoneNumberPickerHelpStringComponentPallette =
Egy gomb, amelyet ha lenyomunk, megjeleníti a készüléken található elmentett telefonszámok listáját. Miután a felhasználó kiválasztott közülük egyet, az alábbi információk állnak rendelkezésre a Névjegy ki lett választva blokkban:
\n
Névjegy név: a névjegyhez tartozó személy/cég neve
\n
E-mail cím: a névjegyhez tartozó elsődleges email cím
\n
Telefonszám: névjegyhez tartozó telefonszám
\n
Kép: a névjegyhez tartozó kép fájl elérési útja, amely értéket felhasználhatjuk egy Kép vagy egy Szereplő komponens Kép forrása mezőjének beállításánál.
\n
Vannak egyéb tulajdonságai, amelyek a gomb kinézetét módosítják (Szöveg víszintes igazítás, Háttérszín, stb.), illetve az hogy a gombra rá lehet-e kattintani (Engedélyezett).
Nem mindegyik készülék támogatja a telefonszám kiválasztását. Hiba esetén egy felugró üzenetablakban lesz látható a hiba oka, de ezt a viselkedést felülírhatjuk a Képernyő komponens HibaTörtént blokkjában.
-PhoneStatusHelpStringComponentPallette = A komponens a telefon állapotáról ad vissza információkat.
-PlayerHelpStringComponentPallette =
Egy multimédia komponens, amely zenék és hosszabb hangfájlok lejátszására képes, valamint a telefont rezgetésére (a Blokk Szerkesztőben megadott időtartamra). A hang/zene forrása (fájlnév, URL) a Képernyő Szerkesztőben és a Blokk Szerkesztőben is megadható. A támogatott fájl formátumról itt található információ: Android Supported Media Formats.
A zene lejátszóval zenéket és hosszabb hangokat érdemes lejátszani, rövidebb hangfájlokhoz használjuk inkább a hang lejátszó komponenst.
-SharingHelpStringComponentPallette =
Egy láthatatlan komponens, amely fájlok és üzenetek megosztását teszi lehetővé a te alkalmazásod és a többi készülékre telepített alkalmazás között. Használatkor a komponens megjeleníti azon alkalmazások listáját, amelyek a megosztásra szánt adatot képesek kezelni, a felhasználó pedig kiválaszthat közülük egyet (pl. egy email alkalmazást vagy egy SMS alkalmazást).
A megosztandó fájl elérési útja lekérdezhető közvetlenül egy KépVálasztó vagy egy Kamera komponenstől, de akár egy már a lászülék tárhelyén lévő fájlt is felhasználhatunk.
Különböző készülékek különböző módon tárolhatják ugyanazt a fájlt, például ha van egy alma.gif állomány a Appinventor/assets könyvtárban, akkor ennek a teljes elérési útja lehet akár:
\"file:///sdcard/Appinventor/assets/alma.gif\"
vagy
\"/storage/Appinventor/assets/alma.gif\"
-SliderHelpStringComponentPallette = A Csúszka egy víszintes rúd, amelynek van egy mozgatható része. Ez képviseli a Csúszka értéktartományán belül felvett értéket, a felhasználó pedig jobbra vagy balra mozgathatja az ujjai segítségével. Ha megváltozik a helyzete/értéke, akkor bekövetkezik az CsúszkaÉrtékMegváltozott esemény. Ez felhasználható például arra hogy a változásra reagálva módosítsuk egy másik komponens tulajdonságát (pl: egy SzövegbeviteliMező betűméretét vagy egy Labda komponens átmérőjét).
-SoundHelpStringComponentPallette =
Egy multimédia komponens, amely hangok lejátszására képes, valamint a telefont rezgetésére (a Blokk Szerkesztőben megadott időtartamra). A hangfájl neve a Képernyő Szerkesztőben és a Blokk Szerkesztőben is megadható. A támogatott fájl formátumról itt található információ: Android Supported Media Formats.
A Hanglejátszóval rövid hangokat érdemes lejátszásani, hoszabb zenékhez használjuk inkább a ZeneLejátszó komponenst.
-SoundRecorderHelpStringComponentPallette =
Hangfelvétel készítésére képes a készülék mikrofonjával.
-SpeechRecognizerHelpStringComponentPallette = Hangfelismerő algoritmus segítségével a rögzített beszédet írott szöveggé alakítja.
-SpinnerHelpStringComponentPallette =
A FelugróLista komponens egy szöveges listát tartalmazó felugró ablak, amelyből a felhasználó kiválaszthat egy elemet. A lista elemei a ListaElemekMintSzöveg tulajdonságon keresztül állíthatók be (vesszővel elválasztva, pl: első elem, második elem, harmadik elem) a Képernyő Szerkesztőben vagy a Blokk Szerkesztőben. Ugyancsak beállíthatjuk, ha a Blokk Szerkesztőben egy lista értéket rendelünk a ListaElemek mezőhöz.
-TableArrangementHelpStringComponentPallette =
Egy olyan elrendező elem, amely táblázatos formában (sor-oszlop szerint) jeleníti meg a belé helyezett elemeket.
-TextBoxHelpStringComponentPallette =
Egy komponens, amelybe a felhasználó szöveget írhat be. A beírt szöveg lekérdezhető vagy beállítható a Szöveg tulajdonságon keresztül. Ha a beviteli mező üres, akkor a SegítőSzöveg tartalma jelenik meg, amellyel segítő utalást adhatunk mit is kell oda beírni.
A Többsoros tulajdonsággal állíthatjuk be hogy a szöveg több sorba is átnyúlhat-e. Egysoros bevitel esetén a billentyűzet automatikusan bezárul, ha a felhasználó a Done/Kész gombot lenyomja. Többsoros szövegmezőknél ezt a BillentyűzetElrejtése paranccsal lehet elérni, vagy a Vissza gomb lenyomásával a felhasználó által.
A CsakSzámok tulajdonsággal beállítható hogy a szövegmezőbe csak szám karaktereket lehessen beírni.
A többi tulajdonság a szöveg mező megjelenését szabályozza (pl: HáttérSzín), vagy azt hogy lehet-e bele írni (Engedélyezett).
A szöveges beviteli mezőket sokszor használjuk a Gomb komponenssel együtt, amikor is a felhasználó a szöveg beírása után rákattint egy gombra.
Ha azt akarod hogy a beírt szöveg ne legyen látható, akkor használd inkább a JelszóBevitel komponenst.
-TextToSpeechHelpStringComponentPallette = Az írott szöveget hangos beszéddé alakítja és lejátsza.
-TextingHelpStringComponentPallette =
Egy láthatatlan komponens, amely üzenet küldés paranccsal el tudja küldeni az Üzenet mezőben megadott szöveget a TelefonSzám mezőben megadott számra.
Ha az üzenet fogadási mód mező értéke 1-re (Kikapcsolva) van beállítva, akkor az alkalmazás egyáltalán nem fog üzeneteket fogadni. Ha a üzenet fogadási mód mező értéke 2-re (csak ha előtérben az alkalmazás) van beállítva, akkor az alkalmazás csak akkor fogad SMS üzeneteket ha az előtérben fut. És végül ha az üzenet fogadási mód mező értéke 3-ra (mindig) van beállítva, akkor az alkalmazás az előtérben futva és kikapcsolva is képes üzeneteket fogadni. Az az alkalmazás amely használja ezt a komponenst, akkor is fogad üzeneteket amikor a háttérben van (vagyis nincs az adott pillanatban a készülék képernyőjén), sőt, még akkor is ha nem is fut, csak telepítve van a készüléken. Ha üzenet érkezik a telefonra amikor az alkalmazás nincs az előtérben, akkor az értesítési sávban megjelenik egy értesítés, amelyre tapintva elindul majd az alkalmazás. Fejlesztőként valószínű hogy azt akarod hogy a felhasználó is képes legyen szabályozni az üzenet fogadási mód mező értékét, hogy ne legyen kötelező az alkalmazásnak fogadnia minden üzenetet.
Amikor üzenet érkezik, az üzenet érkezett esemény kerül meghívásra, amelyben megkapjuk a küldő fél telefonszámát és az üzenet tartalmát.
Ha a Google asszisztens engedélyezve tulajdonság be van kapcsolva, akkor a Google Asszisztens segítségével akár wifin keresztül is küldhetünk üzenetet. Ez viszont csak akkor működik ha rendelkezünk Google Asszisztens fiókkal és a készülékünkön Android 2.0 (Eclair) vagy frissebb operációs rendszer fut.
A címzett számát (pl., 361-555-1212) a telefonszám mezőn keresztül állíthatjuk be (pl., 3615551212). Tartalmazhat pont, kötőjel és zárójel karaktereket (de figyelmen kívül lesznek hagyva), viszont szóközt nem.
A címzett beállításánál felhasználhatjuk a telefonszám választó komponenst, megengedve a felhasználónak hogy a telefonon rögzített kapcsolatok listájából válasszon telefonszámot.
-TimePickerHelpStringComponentPallette =
Egy gomb, amely kattintásra egy ablakot jelenít meg, amelyben a felhasználó kiválaszthat egy tetszőleges időpontot.
-TinyDBHelpStringComponentPallette =
A TinyDB egy helyi adatbázis az alkalmazás számára.
Az App Inventorban készített alkalmazások nem mentik el automatikusan a használt változók értékeit. Az alkalmazás bezárásával az összesnek törlődik az értéke. Ezzel szemben a TinyDB perzisztens adattárolást tesz lehetővé, az ide mentett adatok az alkalmazás bezárása után is megmaradnak és elérhetők lesznek a program újboli indítása során. Egy jó példa erre egy játék során elért pontszámok (high score) elmentése.
Az adatbázisba szöveges elemeket írhatunk, mindegyikhez egy címkét rendelve. Később pedig lekérdezhetjük hogy az adatbázisban az adott címkéhez milyen adat tartozik.
Egy alkalmazáshoz csak egyetlen TinyDB adatbázis tartozhat, még ha több TinyDB komponenst is használunk a programban, az ugyanarra az adattárra fog hivatkozni. Ha azt a hatást akarjuk elérni hogy több adatbázisunk akkor használjunk különböző címkéket. Mindegyik alkalmazás saját TinyDB adatbázissal rendelkezik, ezért a TinyDB nem használható alkalmazások közötti adatmegosztásra, arra viszont igen hogy egy több képernyős program képernyői között adatot osszon meg.
Fejlesztés közben az AI Companion alatt futó összes alkalmazás ugyanazt a TinyDB adatbázist használja, de ez csak addig tart amíg különálló alkalmazás nem lesz a fejlesztés alatt álló programból (külön .apk fájlba csomagolva). Addig is érdemes figyelni mikor és mit törlünk a TinyDB adatbázisból.
-TinyWebDBHelpStringComponentPallette = Láthatatlan komponens, amellyel egy webes adatbázisban tárolhatunk adatokat és olvashatjuk azokat vissza.
-TwitterHelpStringComponentPallette =
Egy láthatatlan komponens, amelynek segítségével a Twitteren küldhetünk üzeneteket. Amint a felhasználó bejelentkezett a Twitter fiókjába (és meghívódott az ennek sikerességét jelző SikeresenBejelentkezett esemény), több parancs is elérhetővé válik:
keresés a tweetek között szöveg vagy címke alapján (TwitterKeresés)
\n
Tweet küldése (Tweet)
\n
Tweet küldése képpel együtt (TweetKéppel)
\n
Közvetlen üzenet egy felhasználónak (KözvetlenÜzenet)
\n
A legutóbbi üzenetek olvasása, amit közvetlenül a te Twitter fiókodnak címeztek (KözvetlenÜzenetekLekérdezése)
\n
Egy felhasználó követése (Követés)
\n
Egy felhasználó követésének leállítása (KövetésLeállítása)
Az általad követett felhasználók legújabb üzeneteinek lekérdezése (BarátokÜzeneteinekLekérdezése)
\n
A legutóbbi üzenetek lekérdezése amelyekben megemlítették a felhasználódat (EmlítésekLekérdezése)
\n
A komponens használatához szükséged lesz egy Felhasználói Kulcsra (Consumer Key) és egy Titkos Kulcsra (Consumer Secret). Ezeket a kulcsokat az alábbi címen lehet létrehozni és az alkalmazáshoz rendelni: http://twitter.com/oauth_clients/new
-VerticalArrangementHelpStringComponentPallette =
Egy olyan elrendező elem, amely a belé rakott komponenseket függőlegesen, egymás alá rendezve jeleníti meg. Ha azt szeretnéd, hogy a komponenseket inkább víszintesen egymás mellé helyezze, akkor a VíszintesElrendezés vezérlőt érdemes használnod.
Egy olyan elrendező elem, amely a belé rakott komponenseket függőlegesen, egymás alá rendezve jeleníti meg. Ha azt szeretnéd, hogy a komponenseket inkább víszintesen egymás mellé helyezze, akkor a VíszintesElrendezés vezérlőt érdemes használnod.
Ez a komponens görgethető (ha a benne lévő elemek nem férnek mind ki).
-VideoPlayerHelpStringComponentPallette =
Egy videók lejátászára képes komponens. Amíg az alkalmazás fut, addig egy téglalap alakú területet foglal el a képernyőről. Ha a felhasználó hozzáér ehhez a lejátszó területéhez, akkor megjelennek a lejátszás/szünet, előretekerés és visszatekerés gombjai a képernyőn. Ugyanezek a funkciók elérhetők a BlokkSzerkesztőben is a Start, Pause, és SeekTo parancsokkal.
Az alábbi formátumú videók lejátszására képes: Windows Media Video (.wmv), 3GPP (.3gpp) és MPEG-4 (.mp4). A támogatott formátumokról itt található további információ: Android Supported Media Formats
Az App Inventorban készült alkalmazások maximális mérete 5 MB, ezért ennél nagyobb videó fájlokat sem lehet fordításkor hozzáadni a projekthez. Ha mégis nagy méretű videót szeretnél lejátszani, akkor állítsd a videó forrását egy URL-re.
-VotingHelpStringComponentPallette =
A Szavazó komponens segítségével több felhasználó dönthet többségi szavazással egy vagy több kérdésről egy webszolgáltatáson keresztül.
-WebHelpStringComponentPallette = Egy láthatatlan komponens, amellyel HTTP GET, POST, PUT és DELETE parancsokat adhatunk ki.
-WebViewerHelpStringComponentPallette = Weboldalak böngészésére szolgáló komponens. A kezdő weboldal címe a Képernyő Szerkesztőben és Blokk Szerkesztőben is beállítható a KezdőOldalURL tulajdonságon keresztül. Figyelem: komponens nem rendelkezik a hagyományos asztali böngészők összes képességével.
-YandexTranslateHelpStringComponentPallette =
Tetszőleges szöveget fordíthatunk vele egyik nyelvről a másikra. A fordító a Yandex webes szolgáltatását használja, ezért működő internetes kapcsolat szükséges hozzá.
A nyelvet amelyről fordítunk és a nyelvet amelyre fordítunk kétbetűs kódokkal kell megadni (pl: \"en-hu\" az angolról magyarra fordítás kódja). Ha a fordítandó nyelvet üresen hagyjuk (pl: \"es\" kód esetén spanyolra fordítunk) akkor a fordító megpróbálja a szöveg alapján kitalálni azt.
A Yandex fordítóról további információkat - többek között az elérhető nyelvek listáját - a http://api.yandex.com/translate/ címen találhatsz.
Megjegyzés: a fordítás aszinkron módon, a háttérben történik. Amint elkészült, meghívódik a ElkészültAFordítás esemény.
-FirebaseDBHelpStringComponentPallette = Láthatatlan komponens, amellyel adatokat tárolhatunk egy webes Firebase adatbázisban. Ezen keresztül akár több alkalmazás is meg tud osztani adatokat egymással. Alapértelmezetten az adatok az App Inventor közös Firebase adatbázisában lesznek eltárolva, de a \"FirebaseURL\" mezőn keresztül akár a saját adatbázisodra is beállíthatod. További információt a Firebase.com oldalon találhatsz.
-createNoProjectsDialogText = Üdvözöllek az App Inventor 2 oldalán!
-createNoProjectsDialogMessage1 = Még nincs egyetlen App Inventor projekted sem. Az App Inventor használatának bemutatásához kattints az \"Útmutató\" gombra az oldal felső részén. Ha pedig új projektet szeretnél létrehozni, akkor kattints a \"Új projekt létrehozása\" gombra az oldal bal felső sarkában.
-createNoprojectsDialogMessage2 = Kellemes mobilprogramozást!
-createWelcomeDialogText = Üdvözöllek az App Inventorban!
-createWelcomeDialogButton = Tovább
-doNotShow = Többet ezt ne mutasd meg
-showSurveySplashMessage =
Kérlek töltsd ki ezt a rövid kérdőívet, hogy megismerjük a véleményedet és jobbá tehessük az App Inventort.
-showSurveySplashButtonNow = Most kitöltöm
-showSurveySplashButtonLater = Később töltöm ki
-showSurveySplashButtonNever = Soha nem akarom kitölteni
-invalidSessionDialogText = A jelenlegi munkamenet ideje lejárt
-invalidSessionDialogMessage =
Figyelem: Ez a munkamenet lejárt.
Ezt az App Inventor fiókot egy másik helyről is megnyitották. Ugyanannak a fióknak az egyszerre több helyről való használata kárt tehet a projektben.
Válassz az alábbiak közül:
Ennek a munkamenetnek a befejezése.
A másik munkamenet befejezése.
Folytatás két párhuzamos munkamenettel.
-invalidSessionDialogButtonEnd = Munkamenet bezárása
-invalidSessionDialogButtonCurrent = Legyen ez az aktuális munkamenet
-invalidSessionDialogButtonContinue = Folytatás mind a két munkamenettel
-bashWarningDialogText = Folytatás két párhuzamos munkamenettel?
-bashWarningDialogMessage =
FIGYELEM: Egy második App Inventor munkamenet is létrejött ehhez a fiókhoz. Használhatod mind a két munkamenetet párhuzamosan, de könnyen lehet hogy emiatt több változás is elveszik majd a projektedben.
Nem ajánlott egyszerre több munkamenetet használni. De ha mégis így szeretnél dolgozni, akkor mindenképpen érdemes gyakran mentéseket készítened a saját gépedre, hogy legyen az App Inventor szerverétől független másolatod. Ehhez használd a \"Kijelölt projekt (.aia) exportálása a számítógépemre\" menüpontot a Projekt menüből.
-bashWarningDialogButtonContinue = Folytatás több párhuzamos munkamenettel
-bashWarningDialogButtonNo = Ne használj egyszerre töb munkamenetet
-finalDialogText = A munkameneted lezárult
-accountDisabledMessage = A fiókod zárolva van
-finalDialogMessage =
A munkameneted befejeződött, most már bezárhatod ezt az ablakot
-corruptionDialogText = Projekt Olvasási Hiba
-corruptionDialogMessage =
Hiba történt a projekt fájl beolvasása közben
Lezártuk a munkamenetet, hogy ne keletkezzen több kár a projektben. Bezárhatod ezt az ablakot.
-blocksTruncatedDialogText = Nincs egyetlen blokk sem a képernyőhöz rendelve
-blocksTruncatedDialogMessage =
Úgy tűnik minden blokkot töröltél a %1 képernyőről.
Elmentheted az üres képernyőt, és akkor az eltávolított blokkok véglegesen törölve lesznek a projektből.
Vagy visszaállíthatod a projekt legutoljára elmentett változatát.
-blocksTruncatedDialogButtonSave = Üres képernyő mentése.
-blocksTruncatedDialogButtonNoSave = Előző verzió visszaállítása
-blocksTruncatedDialogButtonHTML = Kérlek várj %1 másodpercet...
-InsertRowMethods = Sor beszúrása
-GetRowsMethods = Sorok lekérdezése
-GetRowsWithConditionsMethods = Sorok lekérdezése feltétellel
-SwitchToSimplifiedChinese = 简体中文
-SwitchToTraditionalChinese = 繁体中文
-SwitchToSpanish = Español
-SwitchToFrench = Français
-SwitchToItalian = Italiano
-SwitchToRussian = Pусский
-SwitchToKorean = 한국어
-SwitchToSwedish = Svenska
-switchToPortugueseBR = Português do Brasil
-switchToPortuguese = Português
-switchToDutch = Nederlands
-ProgressBarFor = Folyamat Sáv
-proximitySensorComponentPallette = Közelség érzékelő
-ProximitySensorHelpStringComponentPallette = Láthatatlan komponens, amely a tárgyak távolságát méri a készülék képernyőjétől. A legtöbb készülék az abszolút távolságot adja vissza centiméterben, de van amelyik csak azt állapítja meg hogy a tárgy a megadott maximális távolságon (Maximális távolság mező) belül vagy kívül van. Gyakran használják arra hogy megállapítsa a felhasználó a füléhez nyomva tartja-e a telefont.
-MaximumRangeProperties = Maximális távolság
-KeepRunningWhenOnPauseProperties = Háttérben is működik
-ProximityChangedPropertiesProperties = Távolság változott mező
-ProximityChangedMethods = Távolság változott
-MaximumRangeMethods = Maximális távolság parancs
-ItemTextColorProperties = Listaelem szöveg színe
-ItemBackgroundColorProperties = Listaelem háttérszíne
-FusionTablesStandardErrorMessage = Fusion Tables lekérdezési hiba
-FusionTablesDeprecated = FIGYELEM: a Google elavulttá tette a Fusion Tables Szolgáltatást. 2019. december 3-án le fog állni További információ (angolul)
-SelectionColorProperties = Kiválasztott elem címe
-LaunchPickerMethods = Választó ablak megjelenítése
-SetDateToDisplayMethods = Dátum beállítása
-SetDateToDisplayFromInstantMethods = Dátum beállítása pillanat érték alapján
-IncomingCallAnsweredEvents = Bejövő hívásra válasz
-PhoneCallEndedEvents = Telefonhívás véget ért
-PhoneCallStartedEvents = Telefonhívás elkezdődött
-OnSettingsEvents = Beállítások menü
-OtherPlayerStartedEvents = Másik lejátszás is elindult
-ProximityChangedEvents = Távolság megváltozott
-ThumbEnabledProperties = Engedélyezett
-SetTimeToDisplayMethods = Időpont beállítása
-SetTimeToDisplayFromInstantMethods = Időpont beállítása pillanat érték alapján
-XMLTextDecodeMethods = XML szöveg dekódolása
-extraKeyValueWarning = Az Extra kulcs és Extra érték mezők elavultnak számítanak és a jövőben nem lesznek támogatva. Használd helyettük az Extra értékek mezőt a blokk szerkesztőben.\n
-MediaStoredEvents = Média fájl el lett mentve
-PostMediaMethods = Média tárolása
-scaleProportionally = Képarányos méretezés
-scaleToFit = Mérethez igazítás
-UnauthenticateMethods = Kijelentkezés
-useDefault = Alapértelmezett adatbázis szerver használata
-DefaultURLProperties = Alapértelmezett URL
-warningDialogTitle = Figyelem!
-useFrontDeprecated = Az Elülső kamera használata mező el lett távolítva a Kamera komponensből
-firebaseExperimentalWarning = A FirebaseAdatbázis kísérleti jelleggel került be az App Inventorba, így előfordulhatnak a jövőben olyan változtatások is, amelyek nem biztosítják a visszafele kompatibilitást. Nincs garancia rá hogy azok a különálló (saját .apk csomaggal rendelkező) alkalmazások, amelyek ezzel a komponenssel beépítve készültek, a jövőben is működni fognak.
-readOnlyMode = Csak olvasható módban vagy
-sessionDead = Vagy lejárt a munkameneted, vagy miközben dolgoztál az App Inventort frissítették. Újra kell indítanod a munkamenetedet hogy folytathasd a munkádat. Kattints az \"Újratöltés\" gombra.
-reloadWindow = Újratöltés
-AccountNameProperties = Felhasználó fiók neve
-ProjectIDProperties = Projekt azonosító
-CloudDBErrorEvents = Felhő adatbázis hiba történt
-cloudDBComponentPallette = Felhő adatbázis
-CloudDBHelpStringComponentPallette = Láthatatlan komponens, amellyel adatokat tárolhatunk egy internetes adatbázis szerveren (amelyen a Redis adatbázis szoftver fut). Ezzel adatokat oszthatunk meg akár több alkalmazás között is. Alapértelmezés szerint az adatok az MIT szerverén lesznek eltárolva, de akár te is létrehozhatsz egy ilyen adatbázis szervert. Ha saját adatbázist használsz, akkor állítsd be a \"RedisSzerver\" és \"RedisPort\" mezőket a megfelelő értékekre.
-RedisServerProperties = Redis szerver
-DefaultRedisServerProperties = Alapértelmezett Redis szerver
-RedisPortProperties = Redis port
-TokenProperties = Token
-GetValuesMethods = Értékek lekérdezése
-itemToAddParams = hozzáadandó érték
-UseSSLProperties = SSL használata
-CloudConnectedMethods = Csatlakozott az adatbázishoz
-PrimaryColorProperties = Elsődleges szín
-PrimaryColorDarkProperties = Elsődleges sötét szín
-AccentColorProperties = Másodlagos szín
-ThemeProperties = Téma
-classicTheme = Klasszikus
-defaultTheme = Alapértelmezett téma
-blackTitleTheme = Sötét szöveg
-darkTheme = Sötét
-MapHelpStringComponentPallette =
Egy kétdimenziós panel, amely egy térkép lapjait jeleníti meg és Jelölő elemeket helyezhetünk rá az egyes helyek azonosítására. A térkép lapjait és adatait az OpenStreetMap biztosítja.
A Képernyő Szerkesztőben három gomb látható egymás alatt a képernyőre helyezett térképen, amelyek segítségével annak a földrajzi határait állíthatjuk be.
Az elsőn egy lakat látható: ha zárva van, és a térképet egérrel elhúzzuk, akkor a komponens helyzetét változtatjuk meg a többi képernyőn lévő vezérlőhöz képest. Ha nyitva van, akkor egérrel húzva a térkép földrajzi határait változtatjuk meg.
A második gombbal a térkép aktuális helyzetét (szélességi és hosszúsági fokait) menti el alapértelmezett pozíciónak (az alkalmazás betöltésekor ez a hely jelenik majd meg).
A harmadik gombbal az alapértelmezett helyzetet állíthatjuk vissza, ha elgörgettünk onnan (például azért hogy Jelölő elemeket helyezzünk el máshova).
-CenterFromStringProperties = Térkép középpontja
-BoundingBoxProperties = Befoglaló téglalap
-MapTypeProperties = Térkép típusa
-ScaleUnitsProperties = Méretegységek
-ShowCompassProperties = Iránytűt mutat
-ShowScaleProperties = Méretet mutat
-ShowUserProperties = Felhasználó pozícióját mutatja
-ShowZoomProperties = Nagyítást mutat
-EnableRotationProperties = Forgatható
-ZoomLevelProperties = Nagyítási szint
-BoundsChangeEvents = Térkép koordinátái megváltoztak
-ReadyEvents = Térkép betöltődött
-ZoomChangeEvents = Nagyítás megváltozott
-InvalidPointEvents = Hibás koordináta lett megadva
-PanToMethods = Ugrás koordinátára
-mapTypeRoads = Térkép
-mapTypeAerial = Műhold
-mapTypeTerrain = Domborzat
-mapScaleUnitsMetric = Metrikus
-mapScaleUnitsImperial = Angolszász
-ImageAssetProperties = Kép
-DescriptionProperties = Leírás
-DraggableProperties = Mozgatható
-StartDragEvents = Mozgatás elkezdődött
-DragEvents = Mozgatják
-StopDragEvents = Mozgatás befejeződött
-unknownMapTypeException = Ismeretlen térkép típus: {0}
-mapCenterWrongNumberArgumentsException = A térképK középpontja szövegként mezőhöz két számot vártam, ehelyett {0} értéket kaptam
-mapZoomLevelOutOfBoundsException = A nagyítási szint csak 1 és 18 közötti szám lehet
-mapZoomIn = Nagyítás
-mapZoomOut = Kicsinyítés
-mapLockMovementTooltip = Térkép mozgatás zárolása
-mapUnlockMovementTooltip = Térkép mozgatás engedélyezése
-mapSetInitialMapTooltip = Kezdeti pozíció beállítása erre a helyre
-mapResetBoundingBoxTooltip = Befoglaló téglalap visszaállítása
-CreateMarkerMethods = Jelölő elem létrehozása
-SetLocationMethods = Koordináták beállítása
-FillColorProperties = Kitöltési szín
-StrokeColorProperties = Körvonal szín
-StrokeWidthProperties = Vonalvastagság
-TypeProperties = Típus
-LoadErrorEvents = Térkép betöltési hiba
-GotFeaturesEvents = Térkép objektumok betöltődtek
-TapAtPointEvents = Megérintették a térkép egy pontját
-FeatureFromDescriptionMethods = Térkép objektum létrehozása szöveges leírásból
-EnableInfoboxProperties = Van felugró információs ablak
-EnableZoomProperties = Nagyítható
-HideInfoboxMethods = Információs ablak elrejtése
-ShowInfoboxMethods = Információs ablak megjelenítése
-fromUrlButton = Betöltés URL-ről...
-urlImportWizardCaption = Erőforrás betöltése URL-ről...
-AnchorHorizontalProperties = Horgonypont vízszintes elrendezése
-AnchorVerticalProperties = Horgonypont függőleges elrendezése
-FeaturesProperties = Térkép objektumok
-FeaturesFromGeoJSONProperties = Térkép objektumok GeoJSON formátumban
-PointsProperties = Alakzat pontjai
-EnablePanProperties = Görgethető
-DistanceToFeatureMethods = Másik térkép objektumtól való távolság
-DistanceToPointMethods = Ponttól való távolság
-BearingToFeatureMethods = Iránya egy másik objektumhoz viszonyítva
-BearingToPointMethods = Iránya egy ponthoz viszonyítva
-HolePointsProperties = Lyukpontok
-CentroidMethods = Középpont kiszámítása
-PointsFromStringProperties = Síkidom pontjai
-HolePointsFromStringProperties = Lyukpontok
-DoubleTapAtPointEvents = Duplán tapintottak egy pontot
-FeatureClickEvents = Térképobjektumra kattintottak
-FeatureDragEvents = Elhúztak egy térkép objektumot
-FeatureLongClickEvents = Hosszan kattintottak egy térkép objektumra
-FeatureStartDragEvents = Elkezdték mozgatni az egyik térkép objektumot
-FeatureStopDragEvents = Befejezték a térkép objektum mozgatását
-LongPressAtPointEvents = Hosszan érintettek egy pontot
-circleComponentPallette = Kör
-CircleHelpStringComponentPallette =
Egy kört lehet vele rajzolni a térkép megadott pontjára. A kör sugarát méterben kell megadni.
A kör közepén lévő négyzet húzásával tudjuk annak helyzetét megváltoztatni a térképen, a szélén lévő négyzettel pedig a kör sugarát állíthatjuk be.
Egy vagy több térkép objektumot (kört, poligont, stb.) tartalmazó gyűjtemény. Tartalmát GeoJSON formátumban kell megadni, ami lehet helyi erőforrás, vagy betölthető egy URL-en keresztül is.
-lineStringComponentPallette = Vonal
-LineStringHelpStringComponentPallette =
Vonalak láncolata a térképen.
A vonalak végére kattintva húzhatjuk azt szét vagy össze, így állítva be a helyét és hosszát. A vonal közepére kattintva oszthatjuk azt ketté (ezután a két részt külön vonalként kezelhetjük).
Egy sokszöget rajzolhatunk vele a térkép felületére.
A sokszög csúcsaira kattintva húzhatjuk azokat szét vagy össze, így állítva be a helyüket és hosszukat. Az oldalak közepére kattintva oszthatjuk azokat ketté (ezután a két részt külön vonalként kezelhetjük).
Egy téglalapot rajzol a térképre északi, déli, keleti és nyugati oldalakkal.
A téglalap méretét és helyét a sarkainak szét- vagy összehúzásával változtathatjuk meg.
-EastLongitudeProperties = Keleti oldal hosszúsági foka
-NorthLatitudeProperties = Északi oldal szélességi foka
-SouthLatitudeProperties = Déli oldal szélességi foka
-WestLongitudeProperties = Nyugati oldal hosszúsági foka
-LoadFromURLMethods = Térkép elemek betöltése URL címről
-customEllipsis = Egyéni...
-ActionBarProperties = Akciósáv
-valueNotInRange = A megadott {0} érték nem a megengedett [{1}, {2}] tartományban van.
-expectedLatLongPair = Hibás szélességi-hosszúsági fokokat adtál meg {0} értékének.
-LocationSensorProperties = Helyzetérzékelő
-UserLatitudeProperties = Felhasználó szélességi foka
-UserLongitudeProperties = Felhasználó hosszúsági foka
-BoundsMethods = Befoglaló téglalap kiszámítása
-CenterMethods = Középpont kiszámítása
-SetCenterMethods = Középpont beállítása
-RotationProperties = Forgatás
-GetVersionNameMethods =
-SdkLevelMethods = SDK verzió
-GetInstallerMethods = Telepítő
-NoticeTitle = Figyelem!
-PackageNotice = Használd ezt az opciót ha olyan alkalmazást szeretnél készíteni amely Andoird 2.1-en (Eclair) is működik. Ebben az esetben nem tudod majd az alkalmazást a Play Store-ba publikálni.
+defaultText = Alapértelmezett
+cancelButton = Mégse
+okButton = OK
+dismissButton = Elvetés
+oldNameLabel = Jelenlegi név:
+newNameLabel = Új név:
+noneCaption = Nincs
+deleteButton = Törlés
+deleteProjectButton = Projekt törlése
+publishToGalleryButton = Megosztás a Galériában
+updateGalleryAppButton = Alkalmazás új verziójának feltöltése a Galériába
+showWarnings = Figyelmeztetések mutatása
+hideWarnings = Figyelmeztetések elrejtése
+addButton = Fájl feltöltése...
+projectNameHeader = Név
+projectDateCreatedHeader = Készítés dátuma
+projectDateModifiedHeader = Módosítás dátuma
+projectPublishedHeader = Megosztva a Galériában
+saveButton = Mentés
+saveAsButton = Mentés másként
+checkpointButton = Mentett verzió ...
+toggleTutorialButton = Segédlet váltása
+addFormButton = Képernyő hozzáadása ...
+removeFormButton = Képernyő törlése
+connectButton = Kapcsolat
+reallyDeleteForm = A képernyő eltávolításával az összes hozzá tartozó komponens és blokk is törlődik.\nA törlés később nem vonható vissza.\nBiztosan el akarod távolítani a {0} képernyőt a projektből?
+openBlocksEditorButton = Blokk szerkesztő megnyitása
+screensButton = Képernyők ...
+switchToBlocksEditorButton = Parancsok
+switchToFormEditorButton = Képernyő
+isBuildingButton = Folyamatban az alkalmazás csomagolása ...
+cancelBlocksEditorButton = Folyamatban a Képernyő Szerkesztő megnyitása ... (kattints ide ha mégsem akarod megnyitni)
+blocksEditorIsOpenButton = A Blokk Szerkesztő nyitva van
+switchLanguageButton = Nyelv
+deleteComponentButton = Komponens törlése
+publishButton = Megosztás
+switchLanguageEnglishButton = Angol
+switchLanguageChineseCNButton = Kínai
+switchLanguageGermanButton = Német
+switchLanguageVietnameseButton = Vietnámi
+moderationDotDotDot = ...
+moderationReportTextHeader = Jelentés
+moderationAppHeader = App
+moderationReportDateCreatedHeader = Jelentve ekkor
+moderationAppAuthorHeader = App készítője
+moderationReporterHeader = Jelentő
+inappropriateAppContentRemoveTitle = Helytelen app tartalom: törlés
+inappropriateAppContentTitle = Helytelen app tartalom
+inappropriateUserProfileContentTitle = Helytelen felhasználói profil leírás
+labelChooseTemplate = Válassz egy sablont
+emailSentFrom = Küldő:
+emailSentTo = Címzett:
+buttonSendEmail = E-mail küldése
+labelDeactivateApp = App inaktiválása
+labelReactivateApp = App újraaktiválása
+labelDeactivateAppAndSendEmail = Alkalmazás inaktiválás és e-mail küldése
+labelmarkAsResolved = Jelölés megoldottként
+labelmarkAsUnresolved = Jelölés megoldatlanként
+labelSeeAllActions = Előző műveletek
+titleSeeAllActionsPopup = Előző jelentéshez kapcsolódó műveletek
+galleryMoreReports = További Jelentések
+symbolX = X
+labelCancel = Mégse
+labelConfirm = Megerősítés
+inappropriateAppContentRemoveEmail = A(z) \"{0}\" alkalmazásodat eltávolítottuk a Galériából, mert nem odaillő tartalmat találtunk benne. Kérlek nézd át az erre vonatkozó szabályokat a http://ai2.appinventor.mit.edu/about/termsofservice.html címen. Ha úgy érzed igazságtalanul jártunk el veled szemben küldj róla egy e-mailt nekünk.\n
+inappropriateAppContentEmail = A(z) \"{0}\" alkalmazásodban nem odaillő tartalmat találtunk. Kérlek nézd át az erre vonatkozó szabályokat és módosítsd az alkalmazásodat annak megfelelően.
+inappropriateUserProfileContentEmail = A profilod leírása nem odaillő szöveget tartalmaz. Kérlek javítsd!
+seeMoreLink = több mutatása ...
+hideLink = elrejtés
+moderationActionSendAnEmail = e-mail küldése:
+moderationActionDeactivateThisAppWithEmail = inaktiválja az alkalmazást és elküld egy emailt:
+moderationActionReactivateThisApp = újraaktiválja ezt az alkalmazást
+moderationActionMarkThisReportAsResolved = a jelentés megjelölése megoldottként
+moderationActionMarkThisReportAsUnresolved = a jelentés megjelölése megoldatlanként
+moderationShowResolvedReports = Mutasd a megoldott jelentéseket
+moderationSendEmailTitle = E-mail küldése
+moderationAppReactivatedTitle = App Inventor Galéria: Alkalmazás aktiválva
+moderationAppReactivateBody = A(z) \"{0}\" alkalmazásod újra lett aktiválva.
+moderationAppDeactivatedTitle = App Inventor Galéria: Alkalmazás deaktiválva
+moderationErrorFailToSendEmail = Nem sikerült elküldeni az e-mailt, kérlek próbálkozz újra később.
+getMotdFailed = Nem sikerült letölteni a szerverről a Mai Nap Üzenetét.
+titleYoungAndroid = MIT App Inventor
+internalErrorReportBug = Belső hiba történt. Szeretnéd jelenteni a hibát?
+internalError = Belső hiba történt.
+internalErrorSeeDebuggingView = Belső hiba történt. A hibakereső nézetben visszakereshető.
+internalErrorClickOkDebuggingView = Belső hiba történt. További tudnivalókért kattints az \"ok\" gombra.
+serverUnavailable = A kiszolgáló pillanatnyilag nem elérhető. Kérlek próbáld újra később.
+noprojectDialogTitle = Nincs projekt kijelölve
+noprojectDuringConnect = Kapcsolódás előtt létre kell hozni vagy kijelölni egy projektet!
+galleryIdNotExist = Nincs alkalmazás a Galériában ilyen azonosítóval.
+defaultRpcMessage = Töltés ...
+savingRpcMessage = Mentés ...
+copyingRpcMessage = Másolás ...
+deletingRpcMessage = Törlés ...
+packagingRpcMessage = Csomagolás ...
+downloadingRpcMessage = Letöltés a telefonra...
+gitBuildId = Fordítás dátuma: {0} Verzió: {1}
+privacyLink = Adatvédelmi irányelvek
+termsLink = Feltételek
+privacyTermsLink = Adatvédelmi irányelvek és felhasználási feltételek
+projectsTabName = Projektek
+projectMenuItem = Projektjeim
+newProjectMenuItem = Új projekt létrehozása
+importProjectMenuItem = Projekt importálása (.aia) saját gépről ...
+trashProjectMenuItem = Projekt törlése
+saveMenuItem = Projekt mentése
+saveAsMenuItem = Projekt mentése másként...
+checkpointMenuItem = Pillanatnyi állapot mentése
+importTemplateButton = Projekt (.aia) betöltése a tárolóból...
+exportProjectMenuItem = Kijelölt projekt (.aia) exportálása a számítógépemre
+exportAllProjectsMenuItem = Összes projekt exportálása
+downloadKeystoreMenuItem = Kulcstár exportálása
+uploadKeystoreMenuItem = Kulcstár importálása
+deleteKeystoreMenuItem = Kulcstár törlése
+componentsTabName = Komponensek
+myComponentsMenuItem = Saját komponensek
+startNewComponentMenuItem = Új komponens létrehozása
+importComponentMenuItem = Komponens importálása a projektbe...
+importExtensionMenuItem = Kiegészítő komponens importálása
+buildComponentMenuItem = Komponens csomagolása
+uploadComponentMenuItem = Komponens (.aix) feltöltése saját gépről...
+componentUploadWizardCaption = Komponens feltöltése...
+componentImportWizardCaption = Kiegészítő komponens importálása a projektbe
+componentRenameWizardCaption = Kiegészítő komponens átnevezése
+componentNameLabel = Kiegészítő neve
+componentImportError = A kiegészítő komponenst nem sikerült importálni!
+componentImportUnknownURLError = Ismeretlen URL! Nem sikerült importálni a komponenst!
+componentUpgradedAlert = Kiegészítő komponens frissítésre került:
+notComponentArchiveError = A kiválasztott fájl nem tartalmaz komponenst!\nA komponens fájlok kiterjesztése aix.
+noComponentSelectedError = Válaszd ki az importálandó komponenst
+noComponentFound = Nem találom a \"{0}\" komponenst a \"{1}\" projekt betöltése során.
+noUrlError = Adj meg egy URL-t
+componentNameHeader = Név
+componentVersionHeader = Verzió
+confirmDeleteComponents = Biztosan törölni akarod az alábbi komponens(eke)t: {0}?
+componentImportFromComputer = Saját gépről
+componentImportFromURL = URL
+componentDatabaseCorrupt = Hibás a \"{0}\" projekthez tartozó komponens adatbázis.
+extensionDescriptorCorrupt = Hibás a \"{0}\" projekthez tartozó \"{1}\" komponens leírása.
+invalidExtensionInProject = A \"{0}\" projekt hibás kiegészítő komponenst tartalmaz. Az App Inventor megpróbálja azt figyelmen kívül hagyni és folytatni a betöltést.
+connectTabName = Adatkapcsolat
+AICompanionMenuItem = AI Companion
+emulatorMenuItem = Emulátor
+feedbackLink = Hiba Jelentése
+tabNameGallery = Galéria
+tabNameModeration = Moderáció
+privateProfileLink = Profil
+tabNameProjects = Projektjeim
+usbMenuItem = USB
+resetConnectionsMenuItem = Kapcsolat bontása
+hardResetConnectionsMenuItem = Emulátor alaphelyzetbe állítása
+buildTabName = Apk fájl létrehozása
+showBarcodeMenuItem = App (QR kód létrehozása .apk-hoz)
+showBarcodeMenuItem2 = Google Play App (QR kód létrehozása .apk-hoz)
+downloadToComputerMenuItem = App (.apk mentése a számítógépre)
+downloadToComputerMenuItem2 = Google Play App (.apk mentése a számítógépre)
+generateYailMenuItem = YAIL Forráskód Generálása
+helpTabName = Súgó
+aboutMenuItem = Névjegy
+companionInformation = Companion segédalkalmazás adatai
+companionUpdate = Companion segédalkalmazás frissítése
+companionUpdateMustHaveProject = Létre kell hoznod egy projektet a Companion segédalkalmazás frissítéséhez
+showSplashMenuItem = Indító képernyő megjelenítése
+libraryMenuItem = Könyvtár
+getStartedMenuItem = Kezdjünk hozzá
+extensionsMenuItem = Kiegészítő komponensek
+tutorialsMenuItem = Segédletek
+troubleshootingMenuItem = Hibaelhárítás
+forumsMenuItem = Fórumok
+feedbackMenuItem = Hiba jelentése
+adminTabName = Adminisztrátor
+downloadUserSourceMenuItem = Felhasználói forráskód letöltése
+switchToDebugMenuItem = Váltás a hibakereső panelre
+myProjectsTabName = Projektjeim
+guideTabName = Útmutató
+feedbackTabName = Hiba jelentése
+galleryTabName = Galéria
+signOutLink = Kijelentkezés
+tabNameDesign = Design
+tabNameDebugging = (Hibakeresés)
+chooseProject = Kérlek, válassz egy projektet megnyitásra, vagy hozz létre egy új projektet!
+emailInboxTitle = E-mailek
+emailSendTitle = E-mail küldése
+componentListBoxCaption = Saját komponensek
+assetListBoxCaption = Média
+messagesOutputBoxCaption = Üzenetek
+motdBoxCaption = Üdvözöllek az App Inventorban!
+odeLogBoxCaption = Fejlesztői Üzenetek
+paletteBoxCaption = Paletta
+projectListBoxCaption = Projektjeim
+studioListBoxCaption = Studióim
+profilePageBoxCaption = Profilom
+moderationPageBoxCaption = Riportok
+galleryListBoxCaption = Galéria
+galleryAppBoxCaption = Alkalmazás a Galériában
+userProfileBoxCaption = Felhasználói profil
+propertiesBoxCaption = Tulajdonságok
+sourceStructureBoxCaption = Komponensek
+blockSelectorBoxCaption = Parancsok
+builtinBlocksLabel = Beépített
+builtinControlLabel = Vezérlés
+builtinLogicLabel = Logika
+builtinTextLabel = Szöveg
+builtinListsLabel = Listák
+builtinColorsLabel = Színek
+builtinVariablesLabel = Változók
+builtinProceduresLabel = Eljárások
+anyComponentLabel = Bármilyen komponens
+textAnyComponentLabel = Bármely
+viewerBoxCaption = Megjelenítő
+savedProject = Az App Inventor elmentette a projekt módosításait ({0})
+saveErrorMultipleFiles = Szerverhiba: nem sikerült elmenteni egy vagy több fájlt. Kérlek próbáld újra később!
+yailGenerationError = Hiba történt a(z) {0} képernyőn a YAIL generálása során: {1}. A hiba javítása után próbáld újra a YAIL kód generálást.
+nonVisibleComponentsHeader = Rejtett komponensek
+showHiddenComponentsCheckbox = Rejtett komponensek megjelenítése
+previewTabletSize = Tablet mérete
+previewPhoneSize = Telefonméret
+renameTitle = komponens átnevezése
+malformedComponentNameError = A komponens neve csak betűt, számot és alul vonást tartalmazhat, és betűvel kell kezdődnie
+duplicateComponentNameError = Már van ilyen nevű komponens!
+sameAsComponentTypeNameError = A komponens neve nem lehet azonos egy komponenstípus nevével
+sameAsComponentInstanceNameError = A komponens típusának neve nem egyezhet meg egy már létező komponens példány nevével!
+reservedNameError = A név nem lehet egyik sem a következők közül: CsvUtil, Double, Float, Integer, JavaCollection, JavaIterator, KawaEnvironment, Long, Short, SimpleForm, String, Pattern, YailList, YailNumberToString, YailRuntimeError, abstract, continue, for, new, switch, assert, default, goto, package, synchronized, boolean, do, if, private, this, break, double, implements, protected, throw, byte, else, import, public, throws, case, enum, instanceof, return, transient, catch, extends, int, short, try, char, final, interface, static, void, class, finally, long, strictfp, volatile, const, float, native, super, while
+reallyDeleteComponent = A komponens eltávolításával törlődni fog az összes hozzá tartozó blokk is. Biztosan el akarod távolítani?
+reallyRemoveComponent = A komponens típus eltávolításával törlődni fog az összes példánya és a hozzájuk tartozó blokkok is. Biztosan el akarod távolítani?
+textPropertyValue = {0} felirat
+badValueForHorizontalAlignment = Rendszerhiba: hibás érték - {0} - a vízszintes elrendezésre.
+badValueForVerticalAlignment = Rendszerhiba: hibás érték - {0} - a függőleges elrendezésre.
+widthPropertyCaption = Szélesség
+heightPropertyCaption = Magasság
+hintPropertyValue = Tipp a {0} értékhez
+externalComponentVersion = Kiegészítő Komponens Verziója:
+dateBuilt = Szerkesztés dátuma:
+moreInformation = További információ
+loadError = Szerverhiba: fájl betöltése sikertelen. Próbáld újra később!
+saveError = Szerverhiba: fájl mentése sikertelen. Próbáld újra később!
+blocksEditorTabName = {0} blokk
+blocksNotSaved = Nem sikerült betölteni a blokkokat. A {0} képernyőn található blokkok nem lesznek elmentve.
+blocksLoadFailure = A {0} képernyőhöz tartozó blokkokat nem sikerült betölteni. Amíg a probléma fennáll, nem fogsz tudni szerkeszteni a blokk szerkesztőben.
+weakAccelerometerSensitivity = alacsony
+moderateAccelerometerSensitivity = közepes
+strongAccelerometerSensitivity = magas
+LegacyModeProperties = Kompatibilitási mód
+fixedSizing = Fix méretezés
+responsiveSizing = Reszponzív méretezés
+leftTextAlignment = balra zárt
+centerTextAlignment = középre zárt
+rightTextAlignment = jobbra zárt
+horizontalAlignmentChoiceLeft = balra
+horizontalAlignmentChoiceRight = jobbra
+horizontalAlignmentChoiceCenter = középre
+verticalAlignmentChoiceTop = fel
+verticalAlignmentChoiceCenter = középre
+verticalAlignmentChoiceBottom = le
+defaultButtonShape = alapértelmezett
+roundedButtonShape = lekerekített
+rectButtonShape = négyszögletű
+ovalButtonShape = ovális
+noAssetSelected = Válassz ki egy erőforrást!
+noComponentSelected = Válassz ki egy komponenst!
+noneColor = Nincs
+blackColor = Fekete
+blueColor = Kék
+cyanColor = Ciánkék
+defaultColor = Alapértelmezett
+darkGrayColor = Sötétszürke
+grayColor = Szürke
+greenColor = Zöld
+lightGrayColor = Világos szürke
+magentaColor = Bíborvörös
+orangeColor = Narancssárga
+pinkColor = Rózsaszín
+redColor = Piros
+whiteColor = Fehér
+yellowColor = Sárga
+defaultFontTypeface = alapértelmezett
+sansSerifFontTypeface = sans serif (talp nélküli)
+serifFontTypeface = serif (talpas)
+monospaceFontTypeface = azonos szélességű
+automaticCaption = Automatikus
+fillParentCaption = Szülő komponens kitöltése
+percentCaption = százalék
+pixelsCaption = képpont
+pixelsSummary = {0} képpont
+percentSummary = {0} százalék
+nonnumericInputError = Az érték csak pozitív egész szám lehet
+nonvalidPercentValue = A százalékos érték csak 0 és 100 között lehet
+defaultScreenAnimation = Alapbeállítás
+fadeScreenAnimation = Áttűnés
+zoomScreenAnimation = Nagyítás
+slideHorizontalScreenAnimation = Vízszintes csúsztatás
+slideVerticalScreenAnimation = Függőleges csúsztatás
+noneScreenAnimation = Nincs
+unspecifiedScreenOrientation = Nem meghatározott
+portraitScreenOrientation = Portré
+landscapeScreenOrientation = Tájkép
+sensorScreenOrientation = Érzékelő
+userScreenOrientation = Felhasználó
+shortToastLength = Rövid
+longToastLength = Hosszú
+renameButton = Átnevezés
+addScreenButton = Hozzáadás
+cancelScreenButton = Ne add hozzá
+newFormTitle = Új képernyő
+formNameLabel = Képernyő neve:
+formCountErrorLabel = Figyelmeztetés: a képernyők száma meghaladhatja az App Inventor képességeit. Kattints Biztosan szeretnél új képernyőt hozzáadni?
+malformedFormNameError = A képernyő neve csak betűt, számot és alulvonást tartalmazhat, és betűvel kell kezdődnie
+duplicateFormNameError = Már van ilyen nevű képernyő!
+addFormError = Szerverhiba: képernyő hozzáadása sikertelen. Próbáld újra később!
+buildRequestedMessage = Kérés a(z) {0} alkalmazás fordítására {1} időpontban.
+buildError = Szerverhiba: nem sikerült lefordítani az alkalmazást. Próbáld újra később!
+buildFailedError = Nem sikerült lefordítani az alkalmazást!
+buildServerBusyError = Az alkalmazás fordító szerver elfoglalt. Kérlek próbáld újra pár perc múlva.
+buildServerDifferentVersion = Az alkalmazás fordító szerver nem kompatibilis az App Inventornak ezzel a verziójával.
+errorGeneratingYail = Nem sikerült a(z) {0} alkalmazáshoz a kód generálása.
+deleteFileCommand = Törlés...
+downloadFileCommand = Letöltés a számítógépemre
+checkpointTitle = Pillanatnyi állapot - {0}
+saveAsTitle = Mentés Másként - {0}
+defaultCheckpointProjectName = {0}_állapot{1}
+previousCheckpointsLabel = Korábbi állapotok:
+defaultSaveAsProjectName = {0}_másolat
+checkpointNameLabel = Projekt állapot elnevezése:
+copyProjectError = Szerverhiba: projekt másolása sikertelen. Próbáld újra később!
+reallyDeleteFile = Biztosan törölni szeretnéd a fájlt? Ez az App Inventor szerverről való végleges törlést jelent. Az alkalmazásod egyes részei továbbra is hivatkozhatnak a törölt fájlra, ezeket meg kell majd változtatnod.
+deleteFileError = Szerverhiba: fájl törlése sikertelen. Próbáld újra később!
+phoneNotConnected = A készülék nincs csatlakoztatva.
+barcodeTitle = A {0} hivatkozás vonalkódja
+barcodeWarning = Figyelem: a vonalkód csak 2 óráig érvényes. Ld. {0} a gyakran ismételt kérdést {1} arról, hogy hogyan lehet megosztani az alkalmazásodat másokkal.
+projectLoadError = Szerverhiba: nem sikerült betölteni a projektet. Próbáld újra később!
+projectInformationRetrievalError = Szerverhiba: nem sikerült elérni a projekt adatait. Próbáld újra később!
+downloadAllAlert = A projektek letöltése eltarthat egy ideig. Kérlek, várj türelmesen...
+moreActionsButton = További akciók
+downloadUserSourceDialogTitle = Felhasználói forráskód letöltése
+userIdLabel = Felhasználó azonosító vagy e-mail (kis-nagybetű érzékeny):
+projectIdLabel = Projekt azonosító vagy név:
+invalidUserIdOrProjectIdError = Kérlek add meg az e-mail címedet/felhasználói azonosítódat és a projekt nevét/azonosítóját hogy letölthesd azt.
+noProjectSelectedForDelete = Válassz egy projektet, hogy töröljük
+confirmDeleteSingleProject = Biztosan törölni akarod ezt a projektet: {0}
+confirmDeleteSinglePublishedProject = Biztosan törölni akarod ezt a projektet: {0}? Ha az alkalmazást a Galériába is feltöltötted, akkor onnan is törlődni fog.
+confirmDeleteManyProjects = Biztosan törölni akarod ezeket a projekteket: {0}
+confirmDeleteManyProjectsWithGalleryOn = Biztosan törölni akarod ezeket a projekteket: {0}? Ha bármelyiket közülük feltöltötted a Galériába, akkor onnan is törlődni fognak.
+deleteProjectError = Szerverhiba: nem sikerült törölni a projektet. Próbáld újra később!
+wrongNumberProjectsSelected = Egyetlen projektet válassz ki.
+wrongNumberProjectSelectedForPublishOrUpdate = Csak egy projektet válassz ki publikálásra vagy frissítésre.
+downloadKeystoreError = Szerverhiba: nem sikerült letölteni a kulcstár fájlt.
+noKeystoreToDownload = Nincs kulcstár amit le lehetne tölteni.
+uploadKeystoreError = Szerverhiba: nem sikerült feltölteni a kulcsfájlt.
+confirmOverwriteKeystore = Biztosan felül akarod írni a kulcsfájlodat?\n\nHa igen, akkor a korábbi kulcsfájlod el lesz távolítva az App Inventor szerverről.\n\nHa vannak alkalmazásaid a Google Play Áruházban amelyek a felülírandó kulcstárat használják, akkor nem leszel képes frissíteni azokat a programokat.\n\nEzt követően minden projekt, amelyből alkalmazás csomagot készítesz az új kulcstár fájl felhasználásával lesz aláírva. A kulcstár fájl megváltoztatása miatt lehet hogy bizonyos régebbi alkalmazásokat nem tudsz majd újratelepíteni a készülékedre. Ha nem vagy biztos benne le akarod-e cserélni, olvasd el a kulcstárakról szóló dokumentációt a \"Súgó\" (Help) menü \"Hibakeresés\" (Troubleshooting) menüpontjában, a \"Kulcstárak és Alkalmazások aláírása\" (Keystores and Signing of Applications).\n\nA kulcstár fájl lecserélése nem visszavonható művelet.
+deleteKeystoreError = Szerverhiba: nem sikerült törölni a kulcstár fájlt.
+confirmDeleteKeystore = Biztosan le akarod törölni a kulcsfájlodat?\n\nHa igen, akkor a kulclfájlod el lesz távolítva az App Inventor szerverről és automatikusan egy új készül helyette.\n\nHa vannak alkalmazásaid a Google Play Áruházban amelyek a régi kulcstárat használják, akkor nem leszel képes frissíteni azokat a programokat.\n\nEzt követően minden projekt, amelyből alkalmazás csomagot készítesz az új kulcstár fájl felhasználásával lesz aláírva. A kulcstár fájl megváltoztatása miatt lehet hogy bizonyos régebbi alkalmazásokat nem tudsz majd újratelepíteni a készülékedre. Ha nem vagy biztos benne le akarod-e törölni, olvasd el a kulcstárakról szóló dokumentációt a \"Súgó\" (Help) menü \"Hibakeresés\" (Troubleshooting) menüpontjában, a \"Kulcstárak és Alkalmazások aláírása\" (Keystores and Signing of Applications).\n\nA kulcstár fájl törlése nem visszavonható művelet.
+clearButton = Törlés
+settingsLoadError = Szerverhiba: a beállítások betöltése sikertelen. Próbáld újra később!
+settingsSaveError = Szerverhiba: a beállítások mentése sikertelen. Próbáld újra később!
+done = Kész
+hdrClose = Bezár
+hdrMinimize = Zsugorítás
+hdrSettings = Beállítás
+cmMinimize = Zsugorít
+cmRestore = Kibővít
+cmResize = Átméretez
+hdrRestore = Kibővít
+notAFloat = {0} az nem szám
+notAnInteger = {0} az nem egy egész szám
+malformedInputError = Hibásan bevitt adat!
+fileUploadWizardCaption = Fájl feltöltése...
+malformedFilenameTitle = Hiba: nem megfelelő fájlnév
+malformedFilename = A fájl neve csak az alábbiakat tartalmazhatja: ékezet nélküli betűk, számok, valamint a \"-\", \"_\", \".\", \"!\", \"~\", \"*\", \"(\", és \")\" karakterek
+filenameBadSizeTitle = Hiba: nem megfelelő fájlméret
+filenameBadSize = A fájlnevek legalább 1, legfeljebb 100 karakterből állhatnak.
+fileUploadingMessage = {0} feltöltése az App Inventor szerverre
+fileUploadError = Szerverhiba: nem sikerült feltölteni a fájlt. Kérlek próbáld újra később!
+fileTooLargeError = Hiba: nem sikerült a fájl feltöltés, mert az túl nagy
+noFileSelectedTitle = Hiba: nem választottál ki egyetlen fájlt sem
+noFileSelected = Válaszd ki a feltöltendő fájlt.
+aiaMediaAssetTitle = Hiba: nem sikerült .aia média erőforrásként feltölteni a fájlt
+aiaMediaAsset = A fájl használatához kattints az alábbi menüpontra: Projektek > Projekt importálása (.aia) saját gépről...
+aiaMediaAssetHelp = http://appinventor.mit.edu/explore/ai2/share.html
+confirmOverwrite = Probléma akadt {1} mentése során\n\nMár van a projektben egy {0} nevű fájl.\nTörölni akarod a régi fájlt?\nEzzel minden olyan fájlt eltávolítasz, amely ütközik a(z) {1} fájllal.
+keystoreUploadWizardCaption = KulcsTár feltöltése...
+keystoreUploadError = Szerverhiba: nem sikerült feltölteni a kulcstárat. Próbáld újra később!
+notKeystoreError = A megadott fájl nem kucstár formátumú!
+createProjectError = Szerverhiba: projekt létrehozása sikertelen. Próbáld újra később!
+templateUploadWizardCaption = Projekt létrehozása sablon alapján
+templateUploadNewUrlCaption = Új sablon URL megadása
+inputNewUrlCaption = Adj meg egy URL-t...
+newUrlLabel = Sablonok Url:
+projectUploadWizardCaption = Projekt import...
+gallerySearch = Keresés
+galleryEmptyText =
+galleryFeaturedText = Kiemelt
+galleryUnfeaturedText = Nem kiemelt
+galleryTutorialText = Segédlet
+galleryUntutorialText = Nem segédlet
+gallerySingleSpaceText =
+galleryByAuthorText = Szerző neve alapján
+galleryOpenText = Alkalmazás megnyitása
+galleryPublishText = Közzététel
+galleryUpdateText = Frissítés
+galleryRemoveText = Visszavonás
+galleryRemoveConfirmText = Biztosan el akarod távolítani az alkalmazást a Galériából?
+galleryEditText = Szerkesztés
+galleryCancelText = Mégse
+galleryNoScreenShotMessage = Kérlek tölts fel egy képet az alkalmazásod képernyőjéről mielőtt nyilvánossá tennéd
+galleryNotEnoughDescriptionMessage = Kérlek adj meg egy részletesebb leírást az alkalmazásodról mielőtt nyilvánossá tennéd
+galleryByDeveloperPrefixedText = Szerző
+galleryCreatedDateLabel = Létrehozás Dátuma:
+galleryChangedDateLabel = Változtatás Dátuma:
+galleryMoreInfoLabel = Tananyag/Videó
+galleryCreditLabel = Köszönet:
+galleryMoreInfoHint = Ha az alkalmazáshoz tartozik tananyag vagy videó, add meg az URL-jét!
+galleryCcLicenseRef = A Galériába való feltöltéssel az alkalmazást a Creative Commons Attribution Licensznek megfelelően teszed közzé.
+galleryCreditHint = Másvalaki appját remixeled? Ha igen, említsd meg itt őket.
+galleryDescriptionHint = Az alkalmazás leírása.
+galleryAppOpening = Megnyitás...
+galleryAppPublishing = Megosztás...
+galleryAppUpdating = Frissítés...
+galleryAppRemoving = Eltávolítás...
+galleryAppsLike = Tetszik
+galleryAppsAlreadyLike = Mégsem tetszik
+galleryAppsByAuthorSidebar = Az alkalmazás készítője:
+galleryAppCreatedPrefix = Készítés dátuma:
+galleryAppChangedPrefix = Szerkesztés dátuma:
+galleryRemixedFrom = Remix alapja:
+galleryRemixChildren = Kattints ide a remixekért!
+galleryAppsRemixesSidebar = Remixek a felhasználótól:
+galleryReportPrompt = Kérlek indokold miért találod sértőnek ezt az alkalmazást, vagy hogy milyen módon nem tartja be az App Inventor Galéria Szabályait.
+gallerySharePrompt = Másolás és link megosztása
+galleryCopyButton = Másolás
+galleryGalleryIdAction = /?galleryId=
+galleryVisitGalleryAppLinkLabel = \n\nNézd meg a közzétett alkalmazásod: {0}/?galleryId={1}
+galleryReportButton = Jelentés elküldése
+galleryReportCompletionPrompt = Köszönjük a jelentést, egy adminisztrátor hamarosan feldolgozza azt.
+galleryAlreadyReportedPrompt = Erről az alkalmazásról már küldtél jelentést. Egy adminisztrátor hamarosan feldolgozza azt.
+galleryCommentError = Szerverhiba: nem sikerült letölteni a megjegyzéseket
+galleryAppLikeError = Szerverhiba: nem sikerült letölteni a lájkok számát
+galleryDeveloperAppError = Szerverhiba: nem sikerült letölteni a fejlesztői alkalmazások listáját a Galériából
+galleryFeaturedAppError = Szerverhiba: nem sikerült letölteni a kiemelt alkalmazások listáját a Galériából
+galleryTutorialAppError = Szerverhiba: nem sikerült letölteni az oktató alkalmazások listáját a Galériából
+gallerySearchError = Szerverhiba: sikertelen keresés a Galériában
+galleryRecentAppsError = Szerverhiba: nem sikerült letölteni a legújabb alkalmazások listáját a Galériából
+galleryDownloadedAppsError = Szerverhiba: nem sikerült letölteni a legtöbbet letöltött alkalmazások listáját a Galériából
+galleryLikedAppsError = Szerverhiba: nem sikerült letölteni a legnépszerűbb alkalmazások listáját
+galleryDeleteError = Szerverhiba: sikertelen törlés a galériából
+gallerySetProjectIdError = Szerverhiba: hiba történt az alkalmazás galéria azonosítójának beállításakor
+projectUploadError = Szerverhiba: projekt feltöltése sikertelen. Próbáld újra később!
+galleryNoExtensionsPlease = Nem tölthetsz fel olyan alkalmazást a Galériába amely kiegészítő komponenseket használ
+notProjectArchiveError = A kiválasztott fájl nem egy projekt forrásfájl!\nA projekt forrásfájlok aia kiterjesztésűek.
+loadingAppIndicatorText = Alkalmazás betöltése...
+buttonEditProfile = Profil szerkesztése
+buttonUpdateProfile = Módosítások mentése
+labelEditYourProfile = Profil szerkesztése
+labelYourDisplayName = A megjelenített neved
+labelMoreInfoLink = További információk rólad (link)
+labelEmailDescription = Az App Invetor rendszeresen üzenetet küld róla ha az alkalmazásodat kedvelik vagy letöltik. Itt meg tudod adni milyen gyakran szeretnél erről értesítést kapni.
+labelEmailFrequencyPrefix = Kérek e-mailt minden
+labelEmailFrequencySuffix = új lájk vagy letöltés esetén.
+errorEmailFrequency = Ide egy pozitív egész számot kell beírnod
+gallerySearchForAppsButton = Keresés az alkalmazások között
+galleryMoreApps = További alkalmazások
+gallerySearchResultsPrefix = a \"
+gallerySearchResultsInfix = \" címre való keresés
+gallerySearchResultsSuffix = darab eredménnyel tért vissza
+galleryError = Szerverhiba: a Galéria nem elérhető
+noResultsFound = Nincs találat
+gallerySettingsError = Szerverhiba: a Galéria beállításai nem elérhetők
+backButton = Vissza
+nextButton = Következő
+newYoungAndroidProjectWizardCaption = Új App Inventor projekt létrehozása
+remixedYoungAndroidProjectWizardCaption = Az App Inventor projekt neve
+projectNameLabel = Projekt neve:
+malformedProjectNameError = A projekt neve betűvel kell hogy kezdődjön és csak betűket, számokat és aláhúzás karaktereket tartalmazhat
+duplicateProjectNameError = Már létezik {0} nevű projekt. Nem hozhatsz létre projektet ugyanazzal a névvel.
+whitespaceProjectNameError = A projekt neve nem tartalmazhat szóközt
+firstCharProjectNameError = A projekt neve betűvel kell hogy kezdődjön
+invalidCharProjectNameError = Hibás karakter. A projekt neve csak betűket, számokat és aláhúzás karaktereket tartalmazhat
+projectWasUpgraded = A projekt az App Inventor egy régebbi verziójával készült és most frissítésre került\n{0}
+unexpectedProblem = Hiba történt a projekt betöltésekor. {0}
+newerVersionProject = A projektet az App Inventor egy újabb verziójával hozták létre. Megkíséreljük megnyitni, de előfordulhatnak kompatibilitási problémák.
+veryOldProject = A projektet az App Inventor még ki nem adott verziójával hozták létre. Megkíséreljük megnyitni, de előfordulhatnak kompatibilitási problémák.
+upgradeDetailLoggerReplacedWithNotifier = A {0} nevű Jegyzetelő (Logger) komponens típusa FelugróÜzenetre változott.\n
+newerVersionComponentException = Nem sikerült betölteni a(z) {0} projektet (a projekt App Inventor verziója {1}, a legfrissebb ismert verzió viszont {2}).
+noUpgradeStrategyException = Nem létezik frissítési stratégia a(z) {0} projekt számára ({1} verzióról {2} verzióra).
+badAlignmentPropertyEditorForArrangement = Rendszerhiba: hibás érték a vízszintes vagy függőleges elrendezésre.
+textReceivingChoiceOff = kikapcsolva
+textReceivingChoiceForeground = csak ha előtérben az alkalmazás
+textReceivingChoiceAlways = mindig
+startingConnectionDialog = 0 elindul
+loadingAsset = {0} erőforrás letöltése az App Inventor szerverről...
+sendingAssetToCompanion = {0} küldése az AI Companion segédalkalmazásnak...
+unableToCompile = Az App Inventor nem tudta lefordítani a projektet. A fordító hibaüzenete: {0}.
+apkSavedToComputer = Az APK fájl a számítógép letöltési könyvtárába lesz másolva.
+apkInstalledToPhone = Az APK fájl telepítésre kerül a készülékre.
+waitingForBarcode = Várakozás a vonalkód megjelenésére.
+preparingApplicationIcon = Alkalmazás ikon előkészítése
+determiningPermissions = Szükséges engedélyek meghatározása
+generatingApplicationInformation = Alkalmazás információ előállítása
+compilingPart1 = Fordítás első része
+compilingPart2 = Fordítás második része (kérlek várj)
+preparingFinalPackage = Végső alkalmazás csomag előkészítése
+buildingApk = APK felépítése
+HTMLFormatProperties = HTML megjelenítés
+userInterfaceComponentPallette = Felhasználói felület
+layoutComponentPallette = Elrendezés
+mediaComponentPallette = Média
+drawingAndAnimationComponentPallette = Rajz és animáció
+mapsComponentPallette = Térkép
+sensorsComponentPallette = Érzékelők
+socialComponentPallette = Közösségi (média)
+storageComponentPallette = Adattárolás
+forInternalUseOnlyComponentPallette = Csak belső használatra
+formComponentPallette = Űrlap
+builtinMathLabel = Matematika
+connectivityComponentPallette = Hálózat
+legoMindstormsComponentPallette = LEGO\u00AE MINDSTORMS\u00AE
+extensionComponentPallette = Kiegészítők
+externalComponentPalette = Külső komponensek
+experimentalComponentPallette = Kísérleti jellegű
+internalUseComponentPallette = Csak belső használatra
+uninitializedComponentPallette = Nem inicializált
+buttonComponentPallette = Gomb
+canvasComponentPallette = Rajzvászon
+checkBoxComponentPallette = Jelölőnégyzet
+clockComponentPallette = Óra
+datePickerComponentPallette = Dátumválasztó
+imageComponentPallette = Kép
+labelComponentPallette = Címke
+listPickerComponentPallette = Teljes képernyős lista
+listViewComponentPallette = Lista
+passwordTextBoxComponentPallette = Jelszó bevitel
+pedometerComponentPallette = Lépésszámláló
+sliderComponentPallette = Csúszka
+spinnerComponentPallette = Felugrólista
+textBoxComponentPallette = Szövegbeviteli mező
+timePickerComponentPallette = Időpontválasztó
+tinyDBComponentPallette = TinyDB
+camcorderComponentPallette = Videófelvevő
+cameraComponentPallette = Kamera
+imagePickerComponentPallette = Képválasztó
+playerComponentPallette = Zenelejátszó
+soundComponentPallette = Hanglejátszó
+videoPlayerComponentPallette = Videólejátszó
+yandexTranslateComponentPallette = Yandex fordító
+ballComponentPallette = Labda
+imageSpriteComponentPallette = Szereplő
+contactPickerComponentPallette = Névjegyválasztó
+emailPickerComponentPallette = E-mail cím választó
+phoneCallComponentPallette = Telefonhívás
+phoneNumberPickerComponentPallette = Telefonszám választó
+phoneStatusComponentPallette = Telefon adatai
+sharingComponentPallette = Megosztás
+textingComponentPallette = SMS
+twitterComponentPallette = Twitter
+accelerometerSensorComponentPallette = Gyorsulásmérő
+barcodeScannerComponentPallette = Vonalkód beolvasó
+gyroscopeSensorComponentPallette = Giroszkóp
+locationSensorComponentPallette = Helyzetérzékelő
+mediaStoreComponentPallette = Médiatárhely
+nearFieldComponentPallette = NFC
+orientationSensorComponentPallette = Irányérzékelő
+horizontalArrangementComponentPallette = Vízszintes elrendezés
+horizontalScrollArrangementComponentPallette = Vízszintes görgethető elrendezés
+tableArrangementComponentPallette = Táblázatos elrendezés
+verticalArrangementComponentPallette = Függőleges elrendezés
+verticalScrollArrangementComponentPallette = Függőleges görgethető elrendezés
+nxtColorSensorComponentPallette = Nxt színérzékelő
+nxtDirectCommandsComponentPallette = Nxt közvetlen parancs
+nxtDriveComponentPallette = Nxt irányító
+nxtLightSensorComponentPallette = Nxt fényérzékelő
+nxtSoundSensorComponentPallette = Nxt hangérzékelő
+nxtTouchSensorComponentPallette = Nxt érintésszenzor
+nxtUltrasonicSensorComponentPallette = Nxt ultrahang érzékelő
+ev3CommandsComponentPallette = Ev3 parancs
+ev3UIComponentPallette = Ev3 grafika
+ev3SoundComponentPallette = Ev3 hang
+ev3MotorsComponentPallette = Ev3 motor
+ev3TouchSensorComponentPallette = Ev3 érintésérzékelő
+ev3ColorSensorComponentPallette = Ev3 színérzékelő
+ev3GyroSensorComponentPallette = Ev3 giroszkóp
+ev3UltrasonicSensorComponentPallette = Ev3 ultrahang érzékelő
+activityStarterComponentPallette = Aktivitás indító
+bluetoothClientComponentPallette = Bluetoth kliens
+bluetoothServerComponentPallette = Bluetooth szerver
+notifierComponentPallette = Felugró üzenet
+speechRecognizerComponentPallette = Beszédfelismerő
+textToSpeechComponentPallette = Szövegfelolvasó
+tinyWebDBComponentPallette = TinyWebDB
+webComponentPallette = Internet
+fileComponentPallette = Fájl
+firebaseDBComponentPallette = Firebase adatbázis
+fusiontablesControlComponentPallette = Fusion tábla vezérlés
+gameClientComponentPallette = Játék kliens
+passwordParams = jelszó
+soundRecorderComponentPallette = Hangrögzítő
+votingComponentPallette = Szavazás
+webViewerComponentPallette = Webböngésző
+AboutScreenProperties = Névjegy ablak
+ShowStatusBarProperties = Állapot sor látható
+TitleVisibleProperties = Cím látható
+AboveRangeEventEnabledProperties = Érzékelési tartomány feletti érték esemény bekapcsolva
+ActionProperties = Akció
+ActivityClassProperties = Aktivitás osztály
+ActivityPackageProperties = Aktivitás csomagja
+AlignHorizontalProperties = Vízszintes igazítás
+AlignVerticalProperties = Függőleges igazítás
+AllowCookiesProperties = Sütik engedélyezése
+ApiKeyProperties = API kulcs
+AppNameProperties = Alkalmazás neve
+AvailableCountriesProperties = Elérhető országok
+AvailableLanguagesProperties = Elérhető nyelvek
+BackgroundColorProperties = Háttérszín
+BackgroundImageProperties = Háttérkép
+BelowRangeEventEnabledProperties = Érzékelési tartomány alatti érték esemény bekapcsolva
+BluetoothClientProperties = Bluetooth kliens
+BottomOfRangeProperties = Érzékelési tartomány alsó határa
+CalibrateStrideLengthProperties = Lépéshossz kalibrálás
+CharacterEncodingProperties = Karakterkódolás
+CheckedProperties = Bekapcsolt
+CloseScreenAnimationProperties = Képernyő animáció bezárása
+ColorChangedEventEnabledProperties = Színváltozás esemény engedélyezve
+ColumnsProperties = Oszlopok száma
+ConsumerKeyProperties = Felhasználói kulcs
+ConsumerSecretProperties = Titkos kulcs
+CountryProperties = Ország
+DataTypeProperties = Adattípus
+DataUriProperties = Adat URI
+DelimiterByteProperties = Elválasztó bájt
+DetectColorProperties = Színek érzékelése
+DistanceIntervalProperties = Frissítéshez szükséges minimális távolság
+DriveMotorsProperties = Motor portok
+EnabledProperties = Engedélyezett
+ExtraKeyProperties = Extra kulcs
+ExtraValueProperties = Extra érték
+ExtrasProperties = Extra értékek
+FollowLinksProperties = Hivatkozások engedélyezése
+FontBoldProperties = Félkövér betűtípus
+FontItalicProperties = Dőlt betűtípus
+FontSizeProperties = Betűméret
+FontTypefaceProperties = Betűtípus
+GameIdProperties = Játékazonosító
+GenerateColorProperties = Generált szín
+GenerateLightProperties = Generált fény
+GoogleVoiceEnabledProperties = Google Asszisztens engedélyezve
+HasMarginsProperties = Van margója
+HeadingProperties = Irány
+HighByteFirstProperties = Magasabb helyi értékű bájtok álljanak elöl
+HintProperties = Segítség/Tipp
+HomeUrlProperties = Kezdőoldal URL
+IconProperties = Ikon
+InstantProperties = Pillanat
+IgnoreSslErrorsProperties = SSL hibák mellőzése
+ImageProperties = Kép forrása
+IntervalProperties = Intervallum
+IsLoopingProperties = Ismétlés
+KeyFileProperties = Kulcsfájl
+LanguageProperties = Nyelv
+LineWidthProperties = Vonalvastagság
+LoadingDialogMessageProperties = Párbeszéd üzenet betöltése
+MessageProperties = Üzenet
+MinimumIntervalProperties = Minimális frissítési intervallum (ms)
+MultiLineProperties = Többsoros
+NamespaceProperties = Névtér
+NumbersOnlyProperties = Csak számok
+OpenScreenAnimationProperties = Nyitó képernyő animáció
+PaintColorProperties = Rajzolási szín
+PhoneNumberProperties = Telefonszám
+phoneNumberParams = Telefonszám
+PhoneNumberListProperties = Telefonszám lista
+PictureProperties = Kép
+PressedEventEnabledProperties = Lenyomás esemény engedélyezve
+PromptforPermissionProperties = Földrajzi helyzet engedély kérése
+QueryProperties = Lekérdezés
+RadiusProperties = Sugár
+ReadModeProperties = Olvasás mód
+ReceivingEnabledProperties = Üzenet fogadási mód
+ReleasedEventEnabledProperties = Elengedés esemény engedélyezve
+ResponseFileNameProperties = Elmentett HTTP válasz fájl neve
+ResultNameProperties = Eredmény neve
+RowsProperties = Sorok száma
+SavedRecordingProperties = Hangfelvétel elérési útja
+SaveResponseProperties = HTTP válasz elmentése fájlba
+ScalePictureToFitProperties = Képarányos átméretezés
+SensorPortProperties = Érzékelő port
+ScreenOrientationProperties = Képernyőirány
+SecureProperties = Biztonságos kapcsolat
+ServiceAccountEmailProperties = Szolgáltatási e-mail cím
+ServiceURLProperties = Szolgáltatás URL
+ShowLoadingDialogProperties = Párbeszéd betöltést megmutat
+FirebaseURLProperties = Firebase URL
+PersistProperties = Offline működés
+ProjectBucketProperties = Projekt konténer neve
+DeveloperBucketProperties = Fejlesztői konténer neve
+FirebaseTokenProperties = Firebase Token
+PrivateUserStorageProperties = Privát felhasználói tárhely
+ScrollableProperties = Görgethető
+ShapeProperties = Alak
+ShowFeedbackProperties = Animált kattintás
+ShowTablesProperties = táblázatok mutatása
+SourceProperties = Forrás
+SpeedProperties = Sebesség
+StopBeforeDisconnectProperties = Kapcsolat bontása előtt álljon le a motor
+StopDetectionTimeoutProperties = Megállási idő
+StrideLengthProperties = Lépéshossz
+TextProperties = Szöveg
+TextAlignmentProperties = Szöveg vízszintes igazítás
+TextColorProperties = Szövegszín
+TimerAlwaysFiresProperties = Háttérben is működik
+TimerEnabledProperties = Időzítő bekapcsolva
+TimerIntervalProperties = Időzítő intervallum
+TitleProperties = Cím
+TopOfRangeProperties = Érzékelési tartomány felső határa
+UrlProperties = URL
+UseFrontProperties = Elülső kamera használata
+UseGPSProperties = GPS használata
+UseServiceAuthenticationProperties = Belépés szolgáltatási e-mail címmel
+UsesLocationVisibleProperties = Felhasználó földrajzi helyzete látható
+VersionCodeProperties = Verzió kód
+VersionNameProperties = Verzió név
+TutorialURLProperties = Oktatási segédlet URL
+SizingProperties = Képernyő méretezés
+ShowListsAsJsonProperties = Listák megjelenítése JSON formátumban
+VisibleProperties = Látható
+VolumeProperties = Hangerő
+WheelDiameterProperties = Kerék átmérő
+WithinRangeEventEnabledProperties = Érzékelési tartományon belüli érték esemény bekapcsolva
+XProperties = X
+YProperties = Y
+ZProperties = Z
+VisibilityShowingProperties = látható
+VisibilityHiddenProperties = rejtett
+ElementsFromStringProperties = Lista elemek mint szöveg
+RotatesProperties = Képes forgásra
+RotationAngleProperties = Forgásszög
+SelectionProperties = Kiválasztott elem
+TimeIntervalProperties = Frissítéshez szükséges minimális idő
+UsesLocationProperties = Földrajzi helyzet használata
+ShowFilterBarProperties = Lista szűrés bekapcsolva
+TextSizeProperties = Szövegméret
+NotifierLengthProperties = Megjelenési idő
+LoopProperties = Lejátszás automatikus újraindítása
+PitchProperties = Y elfordulás
+SpeechRateProperties = Beszéd tempó
+SensitivityProperties = Érzékenység
+TwitPic_API_KeyProperties = TwitPic API kulcs
+PromptProperties = Cím
+ColorLeftProperties = Csúszka baloldali színe
+ColorRightProperties = Csúszka jobboldali színe
+MaxValueProperties = Maximum érték
+MinValueProperties = Minimum érték
+ThumbPositionProperties = Csúszka érték
+ThumbEnabled = Engedélyezett
+DayProperties = Nap
+MonthProperties = Hónap
+MonthInTextProperties = Hónap neve
+YearProperties = Év
+LastMessageProperties = Utolsó üzenet
+TextToWriteProperties = Elküldendő üzenet
+WriteTypeProperties = Írási mód
+ElapsedTimeProperties = Eltelt idő
+SimpleStepsProperties = Lépések száma
+WalkStepsProperties = Előre lépések száma
+MovingProperties = Mozgásban van
+HourProperties = Óra
+MinuteProperties = Perc
+DistanceProperties = Távolság
+DirectMessagesProperties = Közvetlen üzenetek
+ContactNameProperties = Névjegy név
+CurrentAddressProperties = Jelenlegi cím
+CurrentPageTitleProperties = Jelenlegi oldal címe
+CurrentUrlProperties = Jelenlegi URL
+AccuracyProperties = Pontosság
+AddressesAndNamesProperties = Párosított nevek és címek
+AltitudeProperties = Magasság
+AngleProperties = Szög
+AnimationProperties = Animáció
+AvailableProperties = Elérhető
+AvailableProvidersProperties = Elérhető szolgáltatók
+AzimuthProperties = Z elfordulás
+BallotOptionsProperties = Szavazás beállítások
+BallotQuestionProperties = Szavazás tárgya
+ContactUriProperties = Névjegy URI
+EmailAddressProperties = E-mail cím
+EmailAddressListProperties = E-mail címlista
+ElementsProperties = Lista elemek
+FollowersProperties = Követők
+FriendTimelineProperties = Barátok üzenetei
+FullScreenProperties = Teljes képernyős
+HasAccuracyProperties = Van pontossága
+HasAltitudeProperties = Van magassága
+HasLongitudeLatitudeProperties = Van hosszúsága és szélessége
+HeightProperties = Magasság
+HeightPercentProperties = Magasság százalék
+InstanceIdProperties = Példány azonosító
+InvitedInstancesProperties = Meghívott példányok
+IsAcceptingProperties = Kapcsolódásra vár
+IsConnectedProperties = Kapcsolódott
+IsPlayingProperties = Tart a lejátszás
+JoinedInstancesProperties = Csatlakozott példányok
+LatitudeProperties = Szélesség
+LeaderProperties = Vezető
+LongitudeProperties = Hosszúság
+MagnitudeProperties = Lejtési sebesség
+MentionsProperties = Említések
+PasswordVisibleProperties = Jelszó látható
+ProviderLockedProperties = Szolgáltató zárolva
+ProviderNameProperties = Szolgáltató neve
+PublicInstancesProperties = Nyilvános példányok
+PlayOnlyInForegroundProperties = Lejátszás csak akkor, ha az alkalmazás előtérben van
+PlayersProperties = Játékosok
+RequestHeadersProperties = HTTP Kérés fejléc értékek
+ResultProperties = Eredmény
+UseExternalScannerProperties = Külső beolvasó program használata
+ResultTypeProperties = Eredmény típusa
+ResultUriProperties = Eredmény URI
+RollProperties = X elfordulás
+ScalingProperties = Képméretezés
+SearchResultsProperties = Keresés eredményei
+ServiceUrlProperties = Szolgáltatás URL
+SelectionIndexProperties = Kiválasztott elem indexe
+uriParams = URI
+UserChoiceProperties = Felhasználó választása
+UserEmailAddressProperties = Felhasználó e-mail cím
+UserIdProperties = Felhasználó azonosító
+UsernameProperties = Felhasználónév
+usernameParams = felhasználónév
+XAccelProperties = X gyorsulás
+XAngularVelocityProperties = X szögsebesség
+YAccelProperties = Y gyorsulás
+YAngularVelocityProperties = Y szögsebesség
+ZAccelProperties = Z gyorsulás
+ZAngularVelocityProperties = Z Szögsebesség
+WidthProperties = Szélesség
+WidthPercentProperties = Szélesség százalék
+WebViewStringProperties = Web nézet szöveg
+WebViewStringChangeEvents = Web nézet szöveg változás
+EnableSpeedRegulationProperties = Sebesség szabályozás
+ModeProperties = Működési mód
+MotorPortsProperties = Motor portok
+ReverseDirectionProperties = Visszafelé mozog
+SensorValueChangedEventEnabledProperties = Érzékelővel mért érték változott esemény engedélyezve
+TachoCountChangedEventEnabledProperties = Tachométer érték változott esemény engedélyezve
+UnitProperties = Egység
+xAccelParams = x gyorsulás
+yAccelParams = y gyorsulás
+zAccelParams = z gyorsulás
+resultParams = eredmény
+tableIdParams = táblázat azonosító
+columnsParams = oszlopok
+conditionsParams = feltételek
+valuesParams = értékek
+otherParams = másik
+componentParams = komponens
+startXParams = start X
+startYParams = start Y
+prevXParams = előző X
+prevYParams = előző Y
+currentXParams = jelenlegi X
+currentYParams = jelenlegi Y
+edgeParams = oldal
+speedParams = sebesség
+headingParams = irány
+xvelParams = x sebesség
+yvelParams = y sebesség
+targetParams = cél
+addressParams = cím
+uuidParams = UUID
+numberOfBytesParams = bájtok száma
+numberParams = szám
+listParams = lista
+textParams = szöveg
+clipParams = videófájl elérési útja
+imageParams = kép
+draggedSpriteParams = elhúzott szereplő
+draggedAnySpriteParams = van elhúzott szereplő
+flungSpriteParams = elhajított szereplő
+touchedSpriteParams = megérintett szereplő
+touchedAnySpriteParams = van megérintett szereplő
+xParams = x
+yParams = y
+centerXParams = középpont X
+centerYParams = középpont Y
+rParams = r
+radiusParams = sugár
+x1Params = x1
+x2Params = x2
+y1Params = y1
+y2Params = y2
+angleParams = szög
+fileNameParams = fájlnév
+colorParams = szín
+yearParams = év
+monthParams = hónap
+dayParams = nap
+hourParams = óra
+minuteParams = perc
+instantParams = pillanat
+daysParams = nap
+hoursParams = óra
+minutesParams = perc
+monthsParams = hónap
+secondsParams = másodperc
+weeksParams = hét
+quantityParams = mennyiség
+durationParams = időtartam
+patternParams = minta
+yearsParams = év
+InstantInTimeParams = Időpillanat
+fromParams = kezdő időpont
+millisParams = ezredmásodperc
+functionNameParams = függvénynév
+permissionNameParams = engedélynév
+errorNumberParams = hibaszám
+messageParams = üzenet
+mediafileParams = médiafájl paraméterek
+otherScreenNameParams = másik képernyő neve
+animTypeParams = animáció típusa
+senderParams = küldő
+contentsParams = tartalom
+instanceIdParams = példány azonosító
+playerIdParams = játékos azonosító
+commandParams = parancs
+argumentsParams = paraméter
+responseParams = válasz
+emailAddressParams = e-mail cím
+typeParams = típus
+countParams = mennyiség
+makePublicParams = publikussá tesz
+recipientsParams = címzettek
+playerEmailParams = játékos e-mail
+latitudeParams = szélességi fok
+longitudeParams = hosszúsági fok
+altitudeParams = magasság
+providerParams = szolgáltató
+statusParams = állapot
+locationNameParams = hely neve
+choiceParams = választás
+noticeParams = üzenet
+titleParams = cím
+buttonTextParams = gomb szövege
+cancelableParams = van mégse gomb
+button1TextParams = első gomb szövege
+button2TextParams = második gomb szövege
+sourceParams = forrás
+destinationParams = cél
+sensorPortLetterParams = érzékelő port betűje
+rxDataLengthParams = rx adat hossz
+wildcardParams = fájlnév helyettesítő karakterekkel
+motorPortLetterParams = motorport betűje
+mailboxParams = levelezési fiók
+durationMsParams = időtartam ezredmásodpercben
+relativeParams = relatív
+sensorTypeParams = érzékelő típus
+sensorModeParams = érzékelő üzemmód
+powerParams = sebesség
+modeParams = üzemmód
+regulationModeParams = szabályozási mód
+turnRatioParams = fordulási arány
+runStateParams = mozgási állapot
+tachoLimitParams = tachométer határ
+programNameParams = program neve
+distanceParams = távolság
+azimuthParams = z elfordulás
+pitchParams = y elfordulás
+rollParams = x elfordulás
+simpleStepsParams = lépések száma
+walkStepsParams = lépések száma
+seedParams = mag
+rendezvousServerParams = randi szerver
+millisecsParams = ezredmásodpercek
+soundParams = hang
+messageTextParams = üzenet
+tagParams = címke
+valueParams = érték
+valueToStoreParams = tárolandó érték
+valueToAddParams = hozzáadandó érték
+tagFromWebDBParams = címke
+valueFromWebDBParams = érték
+followers2Params = követők
+timelineParams = legutóbbi üzenetek
+mentionsParams = említések
+searchResultsParams = keresési eredmények
+userParams = felhasználó
+urlParams = URL
+responseCodeParams = válaszkód
+responseTypeParams = válasz típusa
+responseContentParams = válasz tartalma
+htmlTextParams = HTML szöveg
+jsonTextParams = JSON szöveg
+pathParams = elérési út
+encodingParams = szöveg kódolás
+xmlTextParams = XML szöveg
+nameParams = név
+serviceNameParams = szolgáltatás neve
+millisecondsParams = ezredmásodpercek
+messagesParams = üzenetek
+startParams = kezdete
+endParams = vége
+frequencyHzParams = frekvencia Hz
+secureParams = biztonságos
+fileParams = fájl
+thumbPositionParams = csúszka érték
+selectionParams = kiválasztott elem
+valueIfTagNotThereParams = érték ha címke nem található
+queryParams = keresési szöveg
+imagePathParams = kép útvonal
+msParams = ezredmásodperc
+translationParams = fordítás
+languageToTranslateToParams = célnyelv
+textToTranslateParams = lefordítandó szöveg
+xAngularVelocityParams = x szögsebesség
+yAngularVelocityParams = y szögsebesség
+zAngularVelocityParams = z szögsebesség
+timestampParams = időbélyeg
+colorCodeParams = színkód
+colorNameParams = színneve
+fillParams = kitöltés
+frequencyParams = frekvencia
+heightParams = magasság
+noParams = sorszám
+rateParams = ráta
+sensorValueParams = érzékelő érték
+tachoCountParams = tachométer érték
+tachoCountsParams = tachométer értékek
+useBrakeParams = fék használata
+volumeParams = hangerő
+widthParams = szélesség
+AccelerationChangedEvents = Gyorsulás megváltozott
+ActivityCanceledEvents = Aktivitást megszakították
+AfterActivityEvents = Aktivitás befejeződött
+CollidedWithEvents = Ütközött egy másik szereplővel
+DraggedEvents = Arrébb húzták
+EdgeReachedEvents = Elérte a rajzvászon szélét
+FlungEvents = Elhajították
+NoLongerCollidingWithEvents = Már nem ütközik a másik szereplővel
+TouchDownEvents = Lenyomták
+TouchUpEvents = Felengedték
+TouchedEvents = Megérintették
+AfterScanEvents = Vonalkód beolvasása megtörtént
+ConnectionAcceptedEvents = Kapcsolódás megtörtént
+ClickEvents = Kattintottak
+GotFocusEvents = Fókuszba került
+LongClickEvents = Hosszan kattintottak
+RequestFocusMethods = Kerüljön fókuszba
+LostFocusEvents = Elvesztette a fókuszt
+ViewContactMethods = Névjegy megtekintése
+AfterRecordingEvents = Elkészült a felvétel
+AfterPictureEvents = Elkészült a fotó
+ChangedEvents = Megváltozott
+TimerEvents = Időzítőesemény
+AfterPickingEvents = Elem ki lett választva
+BeforePickingEvents = Lista elemek meg fognak jelenni
+BackPressedEvents = Vissza gomb le lett nyomva
+ErrorOccurredEvents = Hiba történt
+InitializeEvents = Alkalmazás elindult
+OtherScreenClosedEvents = Másik képernyő bezárult
+PermissionDeniedEvents = Engedély megtagadva
+PermissionGrantedEvents = Engedély megadva
+ScreenOrientationChangedEvents = Képernyő iránya megváltozott
+GotResultEvents = Megérkezett a lekérdezés eredménye
+FunctionCompletedEvents = Befejeződött
+GotMessageEvents = Üzenet érkezett
+InfoEvents = Információ
+InstanceIdChangedEvents = példány azonosító megváltozott
+InvitedEvents = Meghívót kapott
+NewInstanceMadeEvents = Új példány létrejött
+NewLeaderEvents = Új vezető lett megválasztva
+PlayerJoinedEvents = Új játékos csatlakozott
+PlayerLeftEvents = Játékos távozott
+ServerCommandFailureEvents = Szerverparancs hiba
+ServerCommandSuccessEvents = Szerverparancs sikeresen végrehajtódott
+UserEmailAddressSetEvents = Felhasználó e-mail címe be lett állítva
+WebServiceErrorEvents = Webszolgáltatás hiba
+FirebaseErrorEvents = Firebase hiba
+LocationChangedEvents = Helyzet megváltozott
+StatusChangedEvents = Állapot változott
+AfterChoosingEvents = Megtörtént a választás
+AfterTextInputEvents = Megtörtént a szövegbevitel
+ChoosingCanceledEvents = Kiválasztás megszakítva
+TextInputCanceledEvents = Szövegbevitel megszakítva
+AboveRangeEvents = Érzékelési tartomány feletti érték
+BelowRangeEvents = Érzékelési tartomány alatti érték
+ColorChangedEvents = Szín megváltozott
+WithinRangeEvents = Érzékelési tartományon belüli érték
+PressedEvents = Lenyomták
+ReleasedEvents = Felengedték
+OrientationChangedEvents = Készülék iránya változott
+CalibrationFailedEvents = Kalibráció nem sikerült
+GPSAvailableEvents = GPS elérhetővé vált
+GPSLostEvents = GPS jel elveszett
+SimpleStepEvents = Egy lépés
+StartedMovingEvents = Mozgás elindult
+StoppedMovingEvents = Mozgás megállt
+WalkStepEvents = Előre lépés
+CompletedEvents = Befejeződött
+AfterSoundRecordedEvents = Hangfelvétel elkészült
+StartedRecordingEvents = Hangrögzítés elindult
+StoppedRecordingEvents = Hangrögzítés megállt
+AfterGettingTextEvents = Beszédfelismerés befejeződött
+BeforeGettingTextEvents = Beszédfelismerés elkezdődött
+AfterSpeakingEvents = Felolvasás véget ért
+BeforeSpeakingEvents = Felolvasás el fog kezdődni
+MessageReceivedEvents = Üzenet érkezett
+SendMessageEvents = Üzenet küldése
+GotValueEvents = Megérkezett a lekérdezés eredménye
+TagListEvents = Címke lista megérkezett
+ValueStoredEvents = Adat írása befejeződött
+DataChangedEvents = Adat megváltozott
+DirectMessagesReceivedEvents = Közvetlen üzenet érkezett
+FollowersReceivedEvents = Követők listája megérkezett
+FriendTimelineReceivedEvents = Barátok legutóbbi üzenetei megérkeztek
+IsAuthorizedEvents = Sikeresen bejelentkezett
+MentionsReceivedEvents = Említések listája megérkezett
+SearchSuccessfulEvents = Keresés sikeresen befejeződött
+GotBallotEvents = Van szavazás
+GotBallotConfirmationEvents = Megérkezett a szavazatod
+NoOpenPollEvents = Nincs szavazás
+GotFileEvents = Fájl letöltés befejeződött
+GotTextEvents = Szöveges tartalom beolvasása befejeződött
+AfterFileSavedEvents = Fájl írása befejeződött
+AfterDateSetEvents = Dátum ki lett választva
+TagReadEvents = Üzenet érkezett
+TagWrittenEvents = Üzenet el lett küldve
+PositionChangedEvents = Pozíció megváltozott
+AfterSelectingEvents = Lista elem ki lett választva
+AfterTimeSetEvents = Időpont ki lett választva
+GotTranslationEvents = Elkészült a fordítás
+ShakingEvents = Rázkódik
+GyroscopeChangedEvents = Giroszkóp által mért értékek megváltoztak
+TachoCountChangedEvents = Tachométer érték megváltozott
+SensorValueChangedEvents = Érzékelt érték megváltozott
+ResolveActivityMethods = Elérhető aktivitás nevének lekérdezése
+StartActivityMethods = Aktivitás indítása
+ConnectMethods = Kapcsolódás
+ConnectWithUUIDMethods = Kapcsolódás UUID azonosítóval
+DisconnectMethods = Kapcsolat bontása
+IsDevicePairedMethods = Össze van-e párosítva
+ReceiveSigned1ByteNumberMethods = Fogadás előjeles 1 bájtból szám
+ReceiveSigned2ByteNumberMethods = Fogadás előjeles 2 bájtból szám
+ReceiveSigned4ByteNumberMethods = Fogadás előjeles 4 bájtból szám
+ReceiveSignedBytesMethods = Fogadás előjeles bájtok
+ReceiveTextMethods = Fogadás szöveg
+ReceiveUnsigned1ByteNumberMethods = Fogadás előjel nélküli 1 bájtból szám
+ReceiveUnsigned2ByteNumberMethods = Fogadás előjel nélküli 2 bájtból szám
+ReceiveUnsigned4ByteNumberMethods = Fogadás előjel nélküli 4 bájtból szám
+ReceiveUnsignedBytesMethods = Fogadás előjel nélküli bájtok
+Send1ByteNumberMethods = Küldés 1 bájtból szám
+Send2ByteNumberMethods = Küldés 2 bájtból szám
+Send4ByteNumberMethods = Küldés 4 bájtból szám
+SendBytesMethods = Küldés 1 bájt
+SendTextMethods = Küldés szöveg
+AcceptConnectionMethods = Kapcsolódási kísérlet fogadása
+AcceptConnectionWithUUIDMethods = Kapcsolódási kísérlet fogadása UUID-vel
+BytesAvailableToReceiveMethods = Érkezett bájtok száma
+StopAcceptingMethods = Üzenet fogadás befejezése
+RecordVideoMethods = Készíts felvételt
+TakePictureMethods = Készíts fotót
+ClearMethods = Törlés
+DrawCircleMethods = Kör rajzolás
+DrawLineMethods = Vonal rajzolás
+DrawPointMethods = Pont rajzolás
+DrawTextMethods = Szöveg rajzolás
+DrawTextAtAngleMethods = Elforgatott szöveg rajzolás
+GetBackgroundPixelColorMethods = Háttér képpont színének lekérdezése
+GetPixelColorMethods = Képpont színének lekérdezése
+SaveMethods = Mentés
+SaveAsMethods = Mentés másként
+SetBackgroundPixelColorMethods = Háttér képpont kiszínezése
+AddDurationMethods = Időtartam hozzáadása
+AddDaysMethods = Napok hozzáadása
+AddHoursMethods = Órák hozzáadása
+AddMinutesMethods = Percek hozzáadása
+AddMonthsMethods = Hónapok hozzáadása
+AddSecondsMethods = Másodpercek hozzáadása
+AddWeeksMethods = Hetek hozzáadása
+AddYearsMethods = Évek hozzáadása
+DayOfMonthMethods = Hónap hányadik napja
+DurationMethods = Időtartam
+DurationToSecondsMethods = Eltelt időből másodpercek
+DurationToMinutesMethods = Eltelt időből percek
+DurationToHoursMethods = Eltelt időből órák
+DurationToDaysMethods = Eltelt időből napok
+DurationToWeeksMethods = Eltelt időből hetek
+FormatDateMethods = Dátum szöveggé alakítása
+FormatDateTimeMethods = Dátum és idő szöveggé alakítása
+FormatTimeMethods = Idő szöveggé alakítása
+GetMillisMethods = Ezredmásodpercekre váltás
+HourMethods = Óra
+InstantMethods = Pillanat érték
+MakeInstantMethods = Pillanat érték létrehozása
+MakeInstantFromMillisMethods = Pillanat érték létrehozása ezredmásodpercekből
+MinuteMethods = Perc
+MonthMethods = Hónap
+MonthNameMethods = Hónap neve
+NowMethods = Most
+SecondMethods = Másodperc
+SystemTimeMethods = Rendszeridő
+WeekdayMethods = Hét hányadik napja
+WeekdayNameMethods = Nap neve
+YearMethods = Év
+OpenMethods = Megnyitás
+CloseScreenAnimationMethods = Záró animáció típusa
+OpenScreenAnimationMethods = Nyitó animáció típusa
+DoQueryMethods = Fusion table parancs
+ForgetLoginMethods = Kijelentkezés
+SendQueryMethods = Lekérdezés elküldése
+GetInstanceListsMethods = Példányok lekérdezése
+GetMessagesMethods = Üzenetek lekérdezése
+InviteMethods = Meghívás
+LeaveInstanceMethods = Példány elhagyása
+MakeNewInstanceMethods = Új példány létrehozása
+ServerCommandMethods = Szerver parancs küldése
+SetInstanceMethods = Példány beállítása
+SetLeaderMethods = Vezető kinevezése
+BounceMethods = Pattanj vissza
+CollidingWithMethods = Ütköznek-e
+MoveIntoBoundsMethods = Helyezkedj a rajzvászon belsejébe
+MoveToMethods = Ugorj helyre
+PointInDirectionMethods = Nézz egy megadott pont irányába
+PointTowardsMethods = Nézz egy célszereplő irányába
+LatitudeFromAddressMethods = Cím hosszúsági foka
+LongitudeFromAddressMethods = Cím szélességi foka
+LogErrorMethods = Hibaüzenet naplózása
+LogInfoMethods = Információ üzenet naplózása
+LogWarningMethods = Figyelmeztető üzenet naplózása
+ShowAlertMethods = Ideiglenes figyelmeztető ablak
+ShowChooseDialogMethods = Választás ablak megjelenítése
+ShowMessageDialogMethods = Szöveges üzenet ablak megjelenítése
+ShowTextDialogMethods = Szövegbevitel ablak megjelenítése
+ShowProgressDialogMethods = Folyamatábrázoló ablak megjelenítése
+DismissProgressDialogMethods = Folyamatábrázoló ablak eltüntetése
+GetColorMethods = Szín lekérdezése
+GetLightLevelMethods = Fényerő lekérdezése
+DeleteFileMethods = Fájl törlése
+DownloadFileMethods = Fájl letöltése
+GetBatteryLevelMethods = Akkumulátor töltöttségi szint lekérdezése
+GetBrickNameMethods = Tégla név lekérdezése
+GetCurrentProgramNameMethods = Aktuális program nevének lekérdezése
+GetFirmwareVersionMethods = Firmware verzió lekérdezése
+GetInputValuesMethods = Szenzor bemeneti értékek lekérdezése
+GetOutputStateMethods = Motor kimeneti állapotának lekérdezése
+KeepAliveMethods = Maradj ébren
+ListFilesMethods = Fájlok listázása
+LsGetStatusMethods = Beolvasásra váró bájtok száma
+LsReadMethods = Beolvasás portról
+MessageReadMethods = Üzenet olvasása
+MessageWriteMethods = Üzenet írása
+PlaySoundFileMethods = Hangfájl lejátszása
+PlayToneMethods = Tónus lejátszása
+ResetInputScaledValueMethods = Érzékelő bemenet alaphelyzetbe állítása
+ResetMotorPositionMethods = Motor alaphelyzetbe állítása
+SetBrickNameMethods = Tégla név beállítása
+SetInputModeMethods = Érzékelő bemeneti mód beállítása
+SetOutputStateMethods = Kimeneti állapot beállítása
+StartProgramMethods = Program indítása
+StopProgramMethods = Program leállítása
+StopSoundPlaybackMethods = Hanglejátszás leállítása
+LsWriteMethods = Írás portra
+MoveBackwardMethods = Tolatás
+MoveBackwardIndefinitelyMethods = Tolatás meghatározatlan ideig
+MoveForwardMethods = Mozgás előre
+MoveForwardIndefinitelyMethods = Mozgás előre meghatározatlan ideig
+StopMethods = Megállás
+TurnClockwiseIndefinitelyMethods = Fordulás óramutató járásával megegyező irányban
+TurnCounterClockwiseIndefinitelyMethods = Fordulás óramutató járásával ellentétes irányban
+GetSoundLevelMethods = Hangerő lekérdezése
+IsPressedMethods = Le van nyomva
+GetDistanceMethods = Távolság lekérdezése
+PauseMethods = Megállítás
+ResetMethods = Újrakezdés
+ResumeMethods = Folytatás
+StartMethods = Indítás
+MakePhoneCallMethods = Telefonhívás indítása
+GetWifiIpAddressMethods = Wifi IP cím lekérdezése
+isConnectedMethods = csatlakozvaVan
+setHmacSeedReturnCodeMethods = HMAC mag visszatérési kód beállítása
+startHTTPDMethods = HTTPD indítása
+VibrateMethods = Rezgetés
+GetTextMethods = Beszédfelismerés
+HideKeyboardMethods = Billentyűzet elrejtése
+AskForPermissionMethods = Engedély kérése
+SpeakMethods = Felolvasás
+SendMessageMethods = Üzenetküldés
+GetValueMethods = Adat lekérdezése
+StoreValueMethods = Adat írása
+GetTagListMethods = Címke lista lekérdezése
+AppendValueMethods = Új elem beillesztése
+RemoveFirstMethods = Első elem törlése
+AppendValueToListMethods = Elem hozzáadása listához
+RemoveFirstFromListMethods = Első lista elem törlése
+FirstRemovedEvents = Első elem el lett távolítva
+InitializeValueMethods = Kezdő értékadás
+AuthorizeMethods = Bejelentkezés
+CheckAuthorizedMethods = Be van-e jelentkezve
+DeAuthorizeMethods = Kiléptetés
+DirectMessageMethods = Közvetlen üzenet küldés
+FollowMethods = Követés
+RequestDirectMessagesMethods = Közvetlen üzenetek lekérdezése
+RequestFollowersMethods = Követők lekérdezése
+RequestFriendTimelineMethods = Barátok üzeneteinek lekérdezése
+RequestMentionsMethods = Említések lekérdezése
+SearchTwitterMethods = Twitter keresés
+SetStatusMethods = Státusz beállítása
+StopFollowingMethods = Követés leállítása
+GetDurationMethods = Videó hosszának lekérdezése
+SeekToMethods = Ugrás
+DoScanMethods = Vonalkód beolvasás
+RequestBallotMethods = Szavazás kérvényezése
+SendBallotMethods = Szavazási adatok küldése
+BuildPostDataMethods = Feltöltési adatok felépítése
+ClearCookiesMethods = Sütik törlése
+GetMethods = Letöltés (GET)
+HtmlTextDecodeMethods = HTML szöveg dekódolása
+JsonTextDecodeMethods = JSON szöveg dekódolása
+xmlTextDecodeMethods = XML szöveg dekódolása
+PostFileMethods = Fájl küldése (POST)
+PostTextMethods = Szöveg küldése (POST)
+PostTextWithEncodingMethods = Szöveg küldése kódolással (POST)
+UriEncodeMethods = URI kódolás
+UriDecodeMethods = URI dekódolás
+CanGoBackMethods = Vissza tud lépni
+CanGoForwardMethods = Előre tud lépni
+ClearLocationsMethods = Elmentett földrajzi helyek törlése
+ClearCachesMethods = Gyorsítótár törlése
+GoBackMethods = Visszalépés
+GoForwardMethods = Előrelépés
+GoHomeMethods = Kezdőlapra ugrás
+GoToUrlMethods = Weboldal betöltése
+AppendToFileMethods = Hozzáfűzés fájl végéhez
+DeleteMethods = Törlés
+ReadFromMethods = Fájlból olvasás
+SaveFileMethods = Fájl mentése
+doFaultMethods = hiba
+getVersionNameMethods = verziónév
+installURLMethods = telepítési URL
+isDirectMethods = közvetlen
+setAssetsLoadedMethods = betöltendő erőforrások
+shutdownMethods = leállítás
+ShareFileMethods = Fájl megosztása
+ShareFileWithMessageMethods = Fájl megosztása üzenettel
+ShareMessageMethods = Üzenet megosztása
+PlayMethods = Lejátszás
+DisplayDropdownMethods = Lista megjelenítése
+ClearAllMethods = Minden adat törlése
+ClearTagMethods = Adat törlése
+GetTagsMethods = Címkék lekérdezése
+TweetMethods = Tweet
+TweetWithImageMethods = Tweet képpel
+BuildRequestDataMethods = Szöveges HTTP kérés előállítása
+PutFileMethods = Fájl feltöltés (PUT)
+PutTextMethods = Szöveg feltöltés (PUT)
+PutTextWithEncodingMethods = Szöveg feltöltés kódolással (PUT)
+RequestTranslationMethods = Fordítás elindítása
+GetBatteryCurrentMethods = Akkumulátor áram lekérdezése
+GetBatteryVoltageMethods = Akkumulátor feszültségszint lekérdezése
+GetHardwareVersionMethods = Hardver verzió lekérdezése
+SetAngleModeMethods = Orientáció mérési üzemmód beállítása
+SetRateModeMethods = Szögsebesség mérési üzemmód beállítása
+SetCmUnitMethods = Centiméter mértékegység beállítása
+SetInchUnitMethods = Hüvelyk mértékegység beállítása
+SetColorModeMethods = Színérzékelési mód beállítása
+SetReflectedModeMethods = Reflektált fényérzékelési mód beállítása
+SetAmbientModeMethods = Környező fényérzékelési mód beállítása
+RotateIndefinitelyMethods = Forgás meghatározatlan ideig
+RotateInDistanceMethods = Forgás távolság alapján
+RotateInDurationMethods = Forgás időtartam alapján
+RotateInTachoCountsMethods = Forgás tachométer érték alapján
+RotateSyncIndefinitelyMethods = Forgás azonos sebességgel meghatározatlan ideig
+RotateSyncInDistanceMethods = Forgás azonos sebességgel távolság alapján
+RotateSyncInDurationMethods = Forgás azonos sebességgel időtartam alapján
+RotateSyncInTachoCountsMethods = Forgás azonos sebességgel tachométer érték alapján
+ToggleDirectionMethods = Irányváltoztatás
+GetTachoCountMethods = Tachométer érték lekérdezése
+ResetTachoCountMethods = Tachométer alaphelyzetbe állítása
+GetSensorValueMethods = Érzékelő érték lekérdezése
+GetColorCodeMethods = Színkód lekérdezése
+GetColorNameMethods = Szín nevének lekérdezése
+FillScreenMethods = Képernyő kitöltése
+DrawRectMethods = Téglalap rajzolás
+DrawIconMethods = Ikon rajzolás
+GetOSVersionMethods = Operációs rendszer verzió lekérdezése
+GetOSBuildMethods = Operációs rendszer építési számának lekérdezése
+GetFirmwareBuildMethods = Firmware építési számának lekérdezése
+SetPowerMethods = Sebesség beállítása
+StopSoundMethods = Hanglejátszás leállítása
+MockSpinnerAddItems = elemek hozzáadása...
+AccelerometerSensorHelpStringComponentPallette = Láthatatlan komponens, amely képes érzékelni ha valaki rázza a telefont és a készülék gyorsulását három dimenzióban (m/s2). A három dimenziót az alábbi változók képviselik:
\n
x-gyorsulás: 0 ha a készülék sima felszínen fekszik mozdulatlanul, pozitív szám ha jobb oldalra dől (vagyis a bal széle emelkedik), és negatív szám ha bal oldalra dől (vagyis a jobb széle emelkedik).
\n
y-gyorsulás: 0 ha a készülék sima felszínen fekszik mozdulatlanul, pozitív szám ha a készülék alja emelkedik, negatív ha a teteje.
\n
z-gyorsulás: -9.8 m/s2 (a Föld gravitációs erejének megfelelő nagyságú) ha a készülék párhuzamos helyzetben van a földdel és a képernyője felfelé néz, 0 ha merőleges a földre (valamelyik élén áll), és +9.8 ha lefelé néz. Az is befolyásolja ezt az értéket ha a telefont a föld irányába vagy azzal ellentétesen mozgatjuk.
+ActivityStarterHelpStringComponentPallette =
A komponens AktivitásIndítása parancsával egy Androidos aktivitást indíthatunk el (egy aktivitás nagyon sokféle tevékenységet jelenthet, lásd a példákat).
Ezt több célra is felhasználhatjuk:
\n
egy másik App Inventorban létrehozott alkalmazás elindítása
\n
a kamera alkalmazás elindítása
\n
webes keresés elindítása
\n
a böngésző megnyitása egy megadott URL-el
\n
a térkép alkalmazás megnyitása egy konkrét hellyel
\nOlyan Androidos aktivitás is elindítható vele, amely szöveges adattal tér vissza.
+BallHelpStringComponentPallette =
Egy kör alakú \"szereplő\", amelyet ha egy Rajzvászon komponensre helyezünk, akkor képes reagálni a tapintásra és húzásra, valamint kapcsolatba léphet a többi szereplővel (pl: ütközés vizsgálata).
A labda mozgása az Irány, FrissítésiIntervallum és a Sebesség tulajdonságokon keresztül. Ha például azt akarjuk hogy a labda felfelé mozogjon másodpercenként 4 képpontnyival, akkor az elérhető úgy, hogy az Irány 90 [fok], a FrissítésiIntervallum 1000 [ezredmásodperc], a a Sebesség pedig 4.
A labda kinézetét csak a Sugár és a Szín tulajdonságokkal állítható be (teljesen egyedi kinézethez használd a Szereplő komponenst és állítsd be annak Kép tulajdonságát.
+BarcodeScannerHelpStringComponentPallette = A komponens grafikus vonalkódokat képes beolvasni és szöveggé alakítani.
+BluetoothClientHelpStringComponentPallette = Bluetooth kliens komponens. Egy Bluetooth szerverhez lehet vele kapcsolódni.
+BluetoothServerHelpStringComponentPallette = Bluetooth szerver komponens. Egy vagy több Bluetooth kliens kapcsolódhat hozzá.
+ButtonHelpStringComponentPallette = Gomb vezérlő, amely képes érzékelni ha rákattintanak. A képernyő szerkesztőben vagy akár a blokk szerkesztőben is testre szabható a kinézete, de akár az is hogy képes legyen-e kattintások érzékelésére (Enabled).
+CamcorderHelpStringComponentPallette = A komponens segítségével videó felvételt készíthetünk a készülék kamerájával. A felvétel elkészülte után kerül végrehajtásra az ElkészültAFelvétel esemény, amelynek paramétereként megkapjuk a videót tároló fájl teljes elérési útját. Ezt később felhasználhatjuk például arra, hogy egy videó lejátszó komponens MédiaTartalomElérésiÚtja tulajdonságát beállítsuk rá.
+CameraHelpStringComponentPallette = A komponens segítségével egy fotót készíthetünk a készülék kamerájával. A felvétel elkészülte után kerül végrehajtásra az elkészült a fotó esemény, amelynek paramétereként megkapjuk a fotót tároló fájl nevét. Ezt később felhasználhatjuk például arra, hogy egy Kép komponens Kép forrása tulajdonságát beállítsuk rá.
+CanvasHelpStringComponentPallette =
Egy téglalap alakú terület a képernyőn, amelyre szereplőket lehet rajzolni és reagál az érintésekre.
A szereplők helyzetét (X, Y) koordinátákkal lehet megadni, ahol:
X a szereplő vízszintes távolsága (képpontban) a rajzvászon bal szélétől
Y a szereplő függőleges távolsága (képpontban) a rajzvászon tetejétől
Érintésre/húzásra eseményekkel reagál, amelyeket a Blokk Szerkesztőben lehet kezelni.
Vonalakat, téglalapokat, köröket és más alakzatokat lehet rá rajzolni.
+CheckBoxHelpStringComponentPallette = Jelelő négyzet vezérlő, amely képes érzékelni ha rákattintanak. Kétféle állapota lehet: vagy ki van pipálva vagy nincs. A Képernyő Szerkesztőben és Blokk Szerkesztőben is testre szabható a kinézete.
+ClockHelpStringComponentPallette =
Láthatatlan komponens, amellyel lekérdezhető az aktuális idő és időzítésre is használható (adott időközönként végrehajtani egy feladatot).
Ugyancsak képes dátumok szöveggé alakítására, ahol ha nem adunk meg formátumot, akkor az alapértelmezettet használja: \"MMM d, yyyy HH:mm:ss a\" (pl: Jan 8, 2008 11:35:00 AM). A lehetséges formátumokról itt olvashatsz.
+ContactPickerHelpStringComponentPallette =
Egy gomb, amelyet ha lenyomunk, megjeleníti a készüléken található névjegyek listáját. Miután a felhasználó kiválasztott közülük egyet, az alábbi információk állnak rendelkezésre a NévjegyKiLettVálasztva blokkban:
\n
Névjegy név: a névjegyhez tartozó személy/cég neve
\n
E-mail cím: a névjegyhez tartozó elsődleges e-mail cím
\n
NévjegyUri: névjegy erőforrás azonosítója (URI) a készüléken
\n
Kép: a névjegyhez tartozó kép fájl elérési útja, amely értéket felhasználhatjuk egy Kép vagy egy Szereplő komponens Kép forrása mezőjének beállításánál.
\n
Vannak egyéb tulajdonságai, amelyek a gomb kinézetét módosítják (Szöveg víszintes igazítás, Háttérszín, stb.), illetve az hogy a gombra rá lehet-e kattintani (Engedélyezett).
Nem mindegyik készülék támogatja a névjegyek kiválasztását. Hiba esetén egy felugró üzenetablakban lesz látható a hiba oka, de ezt a viselkedést felülírhatjuk a Képernyő komponens HibaTörtént blokkjában.
+DatePickerHelpStringComponentPallette =
Egy gomb, amely kattintásra egy felugró ablakot jelenít meg, amelyben egy dátumot választhatunk ki.
+EmailPickerHelpStringComponentPallette =
Az EmailCímVálasztó egy szöveges beviteli mező, amelybe ha elkezdünk írni, akkor megjeleníti azoknak a tárolt e-mail címeket, amelyek a már begépelt szöveggel kezdődnek. Ha a list túl hosszú a lista, akkor több másodpercet is igénybe vehet annak betöltése. Ilyenkor egy ideiglenes eredményt jelenít meg a rendszer, amíg a teljes lista el nem készül.
A begépelt szöveg a Szöveg mezőben található, ha ez üres, akkor pedig Segítség/Tipp mező tartalma lesz látható.
\n
Vannak egyéb tulajdonságai, amelyek a gomb kinézetét módosítják (SzövegVíszintesIgazítás, Háttérszín, stb.), illetve az hogy a gombra rá lehet-e kattintani (Engedélyezett).
A szöveges beviteli mezőket sokszor használjuk a Gomb komponenssel együtt, amikor is a felhasználó a szöveg beírása után rákattint egy gombra.
+Ev3MotorsHelpStringComponentPallette = Magas és alacsony szintű hozzáférést is biztosít a LEGO MINDSTORMS EV3 robot mozgását irányító motorhoz.
+Ev3TouchSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS EV3 roboton található érintés érzékelőhöz.
+Ev3GyroSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS EV3 roboton található giroszkóphoz.
+Ev3ColorSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS EV3 roboton található színérzékelő eszközhöz.
+Ev3UltrasonicSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS EV3 roboton található ultrahang érzékelőhöz.
+Ev3CommandsHelpStringComponentPallette = Alcsony szintű hozzáférést biztosít a LEGO MINDSTORMS EV3 robothoz, közvetlen parancsokat küldhetünk vele az eszközre.
+Ev3UIHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS EV3 robot grafikus képességeihez.
+Ev3SoundHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS EV3 roboton található hanglejátszóhoz.
+FileHelpStringComponentPallette = Láthatatlan komponens, amellyel fájlokat írhatunk és olvashatunk. Alapértelmezetten az alkalmazáshoz rendelt privát adatkönyvtárba írja az állományokat. A Companion segédalkalmazás az /sdcard/AppInventor/data könyvtárt használja fájlok írására, a hibakövetés (debugging) elősegítésére. Ha a fájl elérési útja perjellel (/) kezdődik, akkor a program azt az /sdcard mappához viszonyítva értelmezi. Például /alma.txt esetén a tényleges elérési út /sdcard/alma.txt lesz.
+FormHelpStringComponentPallette = Legfelsőbb szintű komponens, amely magába foglal minden más komponenst az alkalmazásban.
+FusiontablesControlHelpStringComponentPallette =
Láthatatlan komponens, amellyel Google Fusion Tables adatabázisokat használhatunk, új táblákat hozhatunk létre, módosíthatjuk a már meglévőket és lekérdezhetjük a bennük tárolt adatokat.
Ha használni akarjuk ezt a komponenst, akkor ehhez be kell jelentkezni a Google megfelelő szerverére. Ezt kétféleképpen lehet megtenni. Egyrészt be lehet jelentkezni az API Kulcs használatával, amit fejlesztőként igényelhetünk (lásd lejjebb). Ha ezt a megoldást választjuk akkor az alkalmazás felhasználójának is be kell jelentkeznie a Fusion Tables használata előtt. A másik lehetőség az ún. Szolgáltatási Fiókkal (Service Account) történő bejelentkezés. Ehhez először létre kell hozni egy ún. Szolgáltatási E-mail Címet (Service Account E-mail Address), amelyet a Google API Konzol felületén lehet megtenni. Ezután Fusion Table Vezérlőn (Fusion Table Control) be kell állítani a Szolgáltatási E-mail Címet, majd a mobilalkalmazás erőforrásként feltölteni a titkos kulcsot és beállítani rá a KulcsFájl tulajdonságát a komponensnek. Legvégül pedig a \"belépés szolgáltatási e-mail címmel\" mezőt ki kell pipálni. Szolgáltatási Fiók használata esetén a Fusion Tables adatabázisokhoz való összes azon keresztül történik majd, a mobilalkalmazás felhasználójának nem kell hozzá bejelentkeznie.
Az API Kulcs megszerzéséhez az alábbiakat kell tenni:
Nyisd meg a Google API Konzolt és jelentkezz be amennyiben az szükséges.
Válaszd ki a Szolgáltatások (Services) menüpontot a bal oldali menüből.
Válaszd ki a Fusion tables szolgáltatást a listából és kapcsold be.
Menj vissza a főmenübe és válaszd ki a API Hozzáférés (API Access) menüpontot.
Az API Kulcsod a panel alján, az Egyszerű API Hozzáférés (Simple API Access) szekcióban. Ezt az értéket kell megadnod a komponens APIKulcs mezőjében a Fusion Tables technológiát használó alkalmazásodban.
Az API Kulcs beállítása után, írj be a Lekérdezés mezőbe egy érvényes Fusiontables SQL lekérdező parancsot és hívd meg a LekérdezésElküldése blokkot a parancs lefuttatásához. Az App Inventor ekkor elküldi a parancsot a Fusion Tables szervernek, majd a MegérkezettALekérdezésEredménye esemény meghívásával jelzi hogy megjött az eredmény. A lekérdezés eredményét CSV formában kapjuk vissza, amely listává alakítható a \"készíts listát CSV táblázatból\" or \"készíts listát CSV sorból\" blokkokkal.
A parancs szövegének UTF-kódolásával nem kell külön foglalkozni, viszont követni kell a Fusion Tables Kézikönyvben megadott szintaxist, amely többek között azt jelenti, hogy az oszlopok neveinél meg kell különböztetnünk a kis- és nagy betűket, valamint aposztrófok közé kell tenni azokat, ha szóközt tartalmaznak.
+GameClientHelpStringComponentPallette = Lehetővé teszi hogy az alkalmazás internetes játékszerverekkel kommunikáljon.
+GyroscopeSensorHelpStringComponentPallette =
Láthatatlan komponens, amely a készülék szögsebességét (fok / sec) méri három dimenzióban.
A helyes működéshez a készüléknek rendelkeznie kell giroszkóppal, valamint az Engedélyezett mezőt Igaz értékre kell állítani.
Egy olyan elrendező elem, amely a belé rakott komponenseket balról jobbra jeleníti meg. Ha azt szeretnéd, hogy a komponenseket inkább egymás alá helyezze, akkor a FüggőlegesElrendezés vezérlőt érdemes használnod.
Egy olyan elrendező elem, amely a belé rakott komponenseket balról jobbra jeleníti meg. Ha azt szeretnéd, hogy a komponenseket inkább egymás alá helyezze, akkor a FüggőlegesElrendezés vezérlőt érdemes használnod.
Ez a komponens görgethető (ha a benne lévő elemek nem férnek mind ki).
+ImageHelpStringComponentPallette = Képek ábrázolására szolgáló komponens. A Képernyő Szerkesztőben és a Blokk Szerkesztőben is beállítható a kép forrása, szélessége, magassága és egyéb tulajdonságai is.
+ImagePickerHelpStringComponentPallette = Egy olyan gomb, amely megnyitja a készülék fotógalériáját és lehetőséget ad egy kép kiválasztására. Ezután a kiválasztott képet elmenti egy fájlba, amelynek elérési útját a komponens KépElérésiÚtja tulajdonsága tartalmazza majd. Legfeljebb 10 fotót lehet ezzel elmenteni. Ha azon felül is kijelölünk egyet, akkor az felülírja a legrégebben kiválasztott képet.
+ImageSpriteHelpStringComponentPallette =
Egy kétdimenziós kép, amelyet ha egy Rajzvászon komponensre helyezünk, akkor képes reagálni a tapintásra és húzásra, valamint kapcsolatba léphet a többi szereplővel (pl: ütközés vizsgálata).
A labda mozgása az Irány, FrissítésiIntervallum és a Sebesség tulajdonságokon keresztül. Ha például azt akarjuk hogy a labda felfelé mozogjon másodpercenként 4 képpontnyival, akkor az elérhető úgy, hogy az Irány 90 [fok], a FrissítésiIntervallum 1000 [ezredmásodperc], a a Sebesség pedig 4.
Ha a KépesForgásra tulajdonság Igaz értékre van beállítva, akkor a szereplőnek beállított kép az Irány tulajdonság szerint megadott irányba fordul.
Ha ütközés vizsgálatakor a szereplő el van forgatva, akkor is valójában az el nem forgatott változatot használja a rendszer a vizsgálathoz, ezért az nem biztos hogy mindig pontos lesz.
+LabelHelpStringComponentPallette = A Címke komponens egy szöveg ábrázolására szolgál. A Képernyő Szerkesztőben és a Blokk Szerkesztőben is beállítható a tartalma a Szöveg tulajdonságán keresztül, valamint az elhelyezése, a betűk mérete és egyéb jellemzői is.
+ListPickerHelpStringComponentPallette =
Egy gomb, amely kattintásra egy szöveges listát jelenít meg, amelyből a felhasználó kiválaszthat egy listaelemet. A lista elemei a ListaElemekMintSzöveg tulajdonságon keresztül állíthatók be (vesszővel elválasztva, pl: első elem, második elem, harmadik elem) a Képernyő Szerkesztőben vagy a Blokk Szerkesztőben. Ugyancsak beállíthatjuk, ha a Blokk Szerkesztőben egy lista értéket rendelünk a ListaElemek mezőhöz.
A ListaSzűrésBekapcsolva tulajdonságot igaz értékre állítva lehetővé tehetjük a keresést a listaelemek között. További tulajdonságaival állítható például a gomb megjelenítése (SzövegVíszintesIgazítás, HáttérSzín, stb.) és hogy rá reagál-e kattintásra (Engedélyezett).
+ListViewHelpStringComponentPallette =
Egy szöveges listát megjelenítő komponens. A lista elemei a ListaElemekMintSzöveg tulajdonságon keresztül állíthatók be, vagy a Blokk Szerkesztőben a ListaElemek mezőnek értéket adva.
+LocationSensorHelpStringComponentPallette =
Láthatatlan komponens, amely a készülék földrajzi helyzetéről ad információt, többek között a szélességi és hosszúsági fokról, magasságról (ha az eszköz támogatja), sebességéről, valamint címéről. Képes \"geokódolásra\" is, vagyis a szövegesen megadott címnek visszaadja a földrajzi koordinátáit: a szélességi fokát a CímSzélességiFoka blokk, a hosszúsági fokot pedig CímHosszúságiFoka blokk adja vissza.
Működéséhez az Engedélyezett tulajdonságot Igaz értékre kell állítani, valamint a készülék képes kell hogy legyen GPS-en vagy mobil hálózaton keresztül meghatározni a jelenlegi földrajzi koordinátákat.
Az alkalmazás indításakor még nem biztos hogy rendelkezésre állnak ezek az információk, lehet hogy várni kell rá egy kicsit, érdemes lehet feliratkozni a HelyzetMegváltozott eseményre.
+MediaStoreHelpStringComponentPallette =
A MédiaTárhely komponens segítségével egy webszolgáltatáson keresztül média fájlokat tárolhatunk. Egyetlen metódusa van, amellyel a szolgáltatás BLOB tárhelyére tölthetünk fel egy média objektumot, majd visszakapjuk a letárolt fájl URL-jét.
+NearFieldHelpStringComponentPallette =
Láthatatlan komponens, amely rövidtávú vezeték nélküli kommunikációra képes.
Jelenleg csak szöveges üznetek küldésére és fogadására képes (amennyiben a készülék támogatja).
Az üzenetek olvasásához az OlvasásMód mezőt Igaz értékre, írásához pedig Hamis értékre kell állítani
Figyelem: a komponens csak az alkalmazás kezdő képernyőjén képes működni.
+NotifierHelpStringComponentPallette = A felugró üzenet komponensen keresztül figyelmeztető üzeneteket, ideiglenes felugró ablakokat és az Android naplózási lehetőségeit tudjuk használni:
SzövegesÜzenetAblak: egy üzenetet jelenít meg, amelyet a felhasználó egy gomb megnyomásával tüntethet el
VálasztásAblak: egy üzenetet és két szöveges gombot jelenít meg, a felhasználó két gomb közül az egyik megnyomásával tüntetheti el az ablakot, amelynek hatására a MegtörténtAVálasztás esemény következik be
SzövegBevitelAblak: a felhasználó a megjelenő üzenetre egy szöveg bevitelével válaszolhat, amelynek hatására a MegtörténtASzövegBevitel esemény következik be
IdeiglenesFigyelmeztetőAblak: egy ideiglenes figyelmeztető üzenetet jelenít meg, amely rövid idő után magától eltűnik
FolyamatÁbrázolóAblak: egy üzenetet és egy forgó animációt jelenít meg, jelezve hogy egy befejezetlen folyamat megy a háttérben. Csak a FolyamatÁbrázolóAblakBezárása paranccsal lehet eltüntetni.
FolyamatÁbrázolóAblakBezárása: eltünteti azt az ablakot amelyet a FolyamatÁbrázolóAblak parancs hozott elő.
HibaÜzenetNaplózása: egy hibaüzenetet ír az Android rendszer szöveges eseménynaplójába.
FigyelmeztetőÜzenetNaplózása: egy figyelmeztető üzenetet ír az Android rendszer szöveges eseménynaplójába.
InformációÜzenetNaplózása: egy egyszerű szöveges üzenetet ír az Android rendszer szöveges eseménynaplójába.
Bármelyik ablakban megjelenő üzenet formázható az alábbi HTML elemekkel:<b>, <big>, <blockquote>, <br>, <cite>, <dfn>, <div>, <em>, <small>, <strong>, <sub>, <sup>, <tt>. <u>
Ugyancsak használható a <font> elem a szöveg színének beállítására, pl: <font color=\"blue\">. A szöveg nevét angolul kell megadni. A használható szín nevek: aqua, black, blue, fuchsia, green, grey, lime, maroon, navy, olive, purple, red, silver, teal, white, yellow, stb.
+NxtColorSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS NXT robot színérzékelő eszközéhez.
+NxtDirectCommandsHelpStringComponentPallette = Alacsony szintű hozzáférést biztosít a LEGO MINDSTORM NXT robothoz, közvetlen parancsok küldhetők vele a készülékre.
+NxtDriveHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS NXT eszközhöz, a parancsaival mozgathatjuk és forgathatjuk a robotot.
+NxtLightSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS NXT robot fényérzékelő eszközéhez.
+NxtSoundSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS NXT hangerő mérő eszközéhez.
+NxtTouchSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS NXT érintés érzékelő eszközéhez.
+NxtUltrasonicSensorHelpStringComponentPallette = Magas szintű hozzáférést biztosít a LEGO MINDSTORMS NXT ultrahang érzékelő eszközéhez.
+OrientationSensorHelpStringComponentPallette =
Láthatatlan komponens, amely a készülék fizikai irányáról ad információkat három dimenzióban:
x elfordulás: 0 fok ha a készülék a földön fekszik, 90 fok ha a bal oldalán áll, és -90 fok ha a jobb oldalán.
y elfordulás: 0 fok ha a készülék a földön fekszik, 90 fok ha a készülék teteje néz függőlegesen lefele, 180 fok ha a képernyő függőlegesen lefele néz. Hasonlóképp -90 fok ha a készülék alja néz lefelé, -180 fok ha a képernyő függőlegesen lefele néz.
z elfordulás: 0 fok ha a észak felé néz, 90 fok ha keletre, 180 fok ha dél irányába, 270 fok ha nyugatra.
Ezek az értékek akkor lehetnek pontosak, ha a készülék nem mozog.
+PasswordTextBoxHelpStringComponentPallette =
Egy szöveges beviteli mező, ahová jelszavakat lehet beírni. Hasonlóan működik mint a Szövegbeviteli mező komponens, de itt nem láthatók a felhasználó által begépelt karakterek.
A beírt szöveg lekérdezhető vagy beállítható a Szöveg tulajdonságon keresztül. Ha a beviteli mező üres, akkor a Segítő szöveg tartalma jelenik meg, amellyel segítő utalást adhatunk mit is kell oda beírni.
A szöveges beviteli mezőket sokszor használjuk a Gomb komponenssel együtt, amikor is a felhasználó a szöveg beírása után rákattint egy gombra.
+PedometerHelpStringComponentPallette = A LépésSzámláló a beépített GyorsulásMérő segítségével számon tartja hány lépést tett meg a készüléket használó személy, illetve hogy az mekkora földrajzi távolságnak felel meg.
+PhoneCallHelpStringComponentPallette =
Egy láthatatlan komponens, amellyel telefon hívásokat kezdeményezhetünk a Telefonszám mezőben megadott számra (pl: "36301234567"), amelyet a Képernyő Szerkesztőben és a Blokk Szerkesztőben is beállíthatunk. A szövegként megadott telefonszám tartalmazhat kötőjel, zárójel és pont karaktereket, de szóközt nem.
A komponens TelefonHívásIndítása blokkjával indíthatjuk el ténylegesen a hívást.
Gyakran használjuk a Névjegy választó vezérlővel együtt, amely lehetővé teszi hogy a felhasználó kiválasszon egy lementett névjegyet és a hozzá tartozó telefonszámot.
+PhoneNumberPickerHelpStringComponentPallette =
Egy gomb, amelyet ha lenyomunk, megjeleníti a készüléken található elmentett telefonszámok listáját. Miután a felhasználó kiválasztott közülük egyet, az alábbi információk állnak rendelkezésre a Névjegy ki lett választva blokkban:
\n
Névjegy név: a névjegyhez tartozó személy/cég neve
\n
E-mail cím: a névjegyhez tartozó elsődleges email cím
\n
Telefonszám: névjegyhez tartozó telefonszám
\n
Kép: a névjegyhez tartozó kép fájl elérési útja, amely értéket felhasználhatjuk egy Kép vagy egy Szereplő komponens Kép forrása mezőjének beállításánál.
\n
Vannak egyéb tulajdonságai, amelyek a gomb kinézetét módosítják (Szöveg víszintes igazítás, Háttérszín, stb.), illetve az hogy a gombra rá lehet-e kattintani (Engedélyezett).
Nem mindegyik készülék támogatja a telefonszám kiválasztását. Hiba esetén egy felugró üzenetablakban lesz látható a hiba oka, de ezt a viselkedést felülírhatjuk a Képernyő komponens HibaTörtént blokkjában.
+PhoneStatusHelpStringComponentPallette = A komponens a telefon állapotáról ad vissza információkat.
+PlayerHelpStringComponentPallette =
Egy multimédia komponens, amely zenék és hosszabb hangfájlok lejátszására képes, valamint a telefont rezgetésére (a Blokk Szerkesztőben megadott időtartamra). A hang/zene forrása (fájlnév, URL) a Képernyő Szerkesztőben és a Blokk Szerkesztőben is megadható. A támogatott fájl formátumról itt található információ: Android Supported Media Formats.
A zene lejátszóval zenéket és hosszabb hangokat érdemes lejátszani, rövidebb hangfájlokhoz használjuk inkább a hang lejátszó komponenst.
+SharingHelpStringComponentPallette =
Egy láthatatlan komponens, amely fájlok és üzenetek megosztását teszi lehetővé a te alkalmazásod és a többi készülékre telepített alkalmazás között. Használatkor a komponens megjeleníti azon alkalmazások listáját, amelyek a megosztásra szánt adatot képesek kezelni, a felhasználó pedig kiválaszthat közülük egyet (pl. egy email alkalmazást vagy egy SMS alkalmazást).
A megosztandó fájl elérési útja lekérdezhető közvetlenül egy KépVálasztó vagy egy Kamera komponenstől, de akár egy már a lászülék tárhelyén lévő fájlt is felhasználhatunk.
Különböző készülékek különböző módon tárolhatják ugyanazt a fájlt, például ha van egy alma.gif állomány a Appinventor/assets könyvtárban, akkor ennek a teljes elérési útja lehet akár:
\"file:///sdcard/Appinventor/assets/alma.gif\"
vagy
\"/storage/Appinventor/assets/alma.gif\"
+SliderHelpStringComponentPallette = A Csúszka egy víszintes rúd, amelynek van egy mozgatható része. Ez képviseli a Csúszka értéktartományán belül felvett értéket, a felhasználó pedig jobbra vagy balra mozgathatja az ujjai segítségével. Ha megváltozik a helyzete/értéke, akkor bekövetkezik az CsúszkaÉrtékMegváltozott esemény. Ez felhasználható például arra hogy a változásra reagálva módosítsuk egy másik komponens tulajdonságát (pl: egy SzövegbeviteliMező betűméretét vagy egy Labda komponens átmérőjét).
+SoundHelpStringComponentPallette =
Egy multimédia komponens, amely hangok lejátszására képes, valamint a telefont rezgetésére (a Blokk Szerkesztőben megadott időtartamra). A hangfájl neve a Képernyő Szerkesztőben és a Blokk Szerkesztőben is megadható. A támogatott fájl formátumról itt található információ: Android Supported Media Formats.
A Hanglejátszóval rövid hangokat érdemes lejátszásani, hoszabb zenékhez használjuk inkább a ZeneLejátszó komponenst.
+SoundRecorderHelpStringComponentPallette =
Hangfelvétel készítésére képes a készülék mikrofonjával.
+SpeechRecognizerHelpStringComponentPallette = Hangfelismerő algoritmus segítségével a rögzített beszédet írott szöveggé alakítja.
+SpinnerHelpStringComponentPallette =
A FelugróLista komponens egy szöveges listát tartalmazó felugró ablak, amelyből a felhasználó kiválaszthat egy elemet. A lista elemei a ListaElemekMintSzöveg tulajdonságon keresztül állíthatók be (vesszővel elválasztva, pl: első elem, második elem, harmadik elem) a Képernyő Szerkesztőben vagy a Blokk Szerkesztőben. Ugyancsak beállíthatjuk, ha a Blokk Szerkesztőben egy lista értéket rendelünk a ListaElemek mezőhöz.
+TableArrangementHelpStringComponentPallette =
Egy olyan elrendező elem, amely táblázatos formában (sor-oszlop szerint) jeleníti meg a belé helyezett elemeket.
+TextBoxHelpStringComponentPallette =
Egy komponens, amelybe a felhasználó szöveget írhat be. A beírt szöveg lekérdezhető vagy beállítható a Szöveg tulajdonságon keresztül. Ha a beviteli mező üres, akkor a SegítőSzöveg tartalma jelenik meg, amellyel segítő utalást adhatunk mit is kell oda beírni.
A Többsoros tulajdonsággal állíthatjuk be hogy a szöveg több sorba is átnyúlhat-e. Egysoros bevitel esetén a billentyűzet automatikusan bezárul, ha a felhasználó a Done/Kész gombot lenyomja. Többsoros szövegmezőknél ezt a BillentyűzetElrejtése paranccsal lehet elérni, vagy a Vissza gomb lenyomásával a felhasználó által.
A CsakSzámok tulajdonsággal beállítható hogy a szövegmezőbe csak szám karaktereket lehessen beírni.
A többi tulajdonság a szöveg mező megjelenését szabályozza (pl: HáttérSzín), vagy azt hogy lehet-e bele írni (Engedélyezett).
A szöveges beviteli mezőket sokszor használjuk a Gomb komponenssel együtt, amikor is a felhasználó a szöveg beírása után rákattint egy gombra.
Ha azt akarod hogy a beírt szöveg ne legyen látható, akkor használd inkább a JelszóBevitel komponenst.
+TextToSpeechHelpStringComponentPallette = Az írott szöveget hangos beszéddé alakítja és lejátsza.
+TextingHelpStringComponentPallette =
Egy láthatatlan komponens, amely üzenet küldés paranccsal el tudja küldeni az Üzenet mezőben megadott szöveget a TelefonSzám mezőben megadott számra.
Ha az üzenet fogadási mód mező értéke 1-re (Kikapcsolva) van beállítva, akkor az alkalmazás egyáltalán nem fog üzeneteket fogadni. Ha a üzenet fogadási mód mező értéke 2-re (csak ha előtérben az alkalmazás) van beállítva, akkor az alkalmazás csak akkor fogad SMS üzeneteket ha az előtérben fut. És végül ha az üzenet fogadási mód mező értéke 3-ra (mindig) van beállítva, akkor az alkalmazás az előtérben futva és kikapcsolva is képes üzeneteket fogadni. Az az alkalmazás amely használja ezt a komponenst, akkor is fogad üzeneteket amikor a háttérben van (vagyis nincs az adott pillanatban a készülék képernyőjén), sőt, még akkor is ha nem is fut, csak telepítve van a készüléken. Ha üzenet érkezik a telefonra amikor az alkalmazás nincs az előtérben, akkor az értesítési sávban megjelenik egy értesítés, amelyre tapintva elindul majd az alkalmazás. Fejlesztőként valószínű hogy azt akarod hogy a felhasználó is képes legyen szabályozni az üzenet fogadási mód mező értékét, hogy ne legyen kötelező az alkalmazásnak fogadnia minden üzenetet.
Amikor üzenet érkezik, az üzenet érkezett esemény kerül meghívásra, amelyben megkapjuk a küldő fél telefonszámát és az üzenet tartalmát.
Ha a Google asszisztens engedélyezve tulajdonság be van kapcsolva, akkor a Google Asszisztens segítségével akár wifin keresztül is küldhetünk üzenetet. Ez viszont csak akkor működik ha rendelkezünk Google Asszisztens fiókkal és a készülékünkön Android 2.0 (Eclair) vagy frissebb operációs rendszer fut.
A címzett számát (pl., 361-555-1212) a telefonszám mezőn keresztül állíthatjuk be (pl., 3615551212). Tartalmazhat pont, kötőjel és zárójel karaktereket (de figyelmen kívül lesznek hagyva), viszont szóközt nem.
A címzett beállításánál felhasználhatjuk a telefonszám választó komponenst, megengedve a felhasználónak hogy a telefonon rögzített kapcsolatok listájából válasszon telefonszámot.
+TimePickerHelpStringComponentPallette =
Egy gomb, amely kattintásra egy ablakot jelenít meg, amelyben a felhasználó kiválaszthat egy tetszőleges időpontot.
+TinyDBHelpStringComponentPallette =
A TinyDB egy helyi adatbázis az alkalmazás számára.
Az App Inventorban készített alkalmazások nem mentik el automatikusan a használt változók értékeit. Az alkalmazás bezárásával az összesnek törlődik az értéke. Ezzel szemben a TinyDB perzisztens adattárolást tesz lehetővé, az ide mentett adatok az alkalmazás bezárása után is megmaradnak és elérhetők lesznek a program újboli indítása során. Egy jó példa erre egy játék során elért pontszámok (high score) elmentése.
Az adatbázisba szöveges elemeket írhatunk, mindegyikhez egy címkét rendelve. Később pedig lekérdezhetjük hogy az adatbázisban az adott címkéhez milyen adat tartozik.
Egy alkalmazáshoz csak egyetlen TinyDB adatbázis tartozhat, még ha több TinyDB komponenst is használunk a programban, az ugyanarra az adattárra fog hivatkozni. Ha azt a hatást akarjuk elérni hogy több adatbázisunk akkor használjunk különböző címkéket. Mindegyik alkalmazás saját TinyDB adatbázissal rendelkezik, ezért a TinyDB nem használható alkalmazások közötti adatmegosztásra, arra viszont igen hogy egy több képernyős program képernyői között adatot osszon meg.
Fejlesztés közben az AI Companion alatt futó összes alkalmazás ugyanazt a TinyDB adatbázist használja, de ez csak addig tart amíg különálló alkalmazás nem lesz a fejlesztés alatt álló programból (külön .apk fájlba csomagolva). Addig is érdemes figyelni mikor és mit törlünk a TinyDB adatbázisból.
+TinyWebDBHelpStringComponentPallette = Láthatatlan komponens, amellyel egy webes adatbázisban tárolhatunk adatokat és olvashatjuk azokat vissza.
+TwitterHelpStringComponentPallette =
Egy láthatatlan komponens, amelynek segítségével a Twitteren küldhetünk üzeneteket. Amint a felhasználó bejelentkezett a Twitter fiókjába (és meghívódott az ennek sikerességét jelző SikeresenBejelentkezett esemény), több parancs is elérhetővé válik:
keresés a tweetek között szöveg vagy címke alapján (TwitterKeresés)
\n
Tweet küldése (Tweet)
\n
Tweet küldése képpel együtt (TweetKéppel)
\n
Közvetlen üzenet egy felhasználónak (KözvetlenÜzenet)
\n
A legutóbbi üzenetek olvasása, amit közvetlenül a te Twitter fiókodnak címeztek (KözvetlenÜzenetekLekérdezése)
\n
Egy felhasználó követése (Követés)
\n
Egy felhasználó követésének leállítása (KövetésLeállítása)
Az általad követett felhasználók legújabb üzeneteinek lekérdezése (BarátokÜzeneteinekLekérdezése)
\n
A legutóbbi üzenetek lekérdezése amelyekben megemlítették a felhasználódat (EmlítésekLekérdezése)
\n
A komponens használatához szükséged lesz egy Felhasználói Kulcsra (Consumer Key) és egy Titkos Kulcsra (Consumer Secret). Ezeket a kulcsokat az alábbi címen lehet létrehozni és az alkalmazáshoz rendelni: http://twitter.com/oauth_clients/new
+VerticalArrangementHelpStringComponentPallette =
Egy olyan elrendező elem, amely a belé rakott komponenseket függőlegesen, egymás alá rendezve jeleníti meg. Ha azt szeretnéd, hogy a komponenseket inkább víszintesen egymás mellé helyezze, akkor a VíszintesElrendezés vezérlőt érdemes használnod.
Egy olyan elrendező elem, amely a belé rakott komponenseket függőlegesen, egymás alá rendezve jeleníti meg. Ha azt szeretnéd, hogy a komponenseket inkább víszintesen egymás mellé helyezze, akkor a VíszintesElrendezés vezérlőt érdemes használnod.
Ez a komponens görgethető (ha a benne lévő elemek nem férnek mind ki).
+VideoPlayerHelpStringComponentPallette =
Egy videók lejátászára képes komponens. Amíg az alkalmazás fut, addig egy téglalap alakú területet foglal el a képernyőről. Ha a felhasználó hozzáér ehhez a lejátszó területéhez, akkor megjelennek a lejátszás/szünet, előretekerés és visszatekerés gombjai a képernyőn. Ugyanezek a funkciók elérhetők a BlokkSzerkesztőben is a Start, Pause, és SeekTo parancsokkal.
Az alábbi formátumú videók lejátszására képes: Windows Media Video (.wmv), 3GPP (.3gpp) és MPEG-4 (.mp4). A támogatott formátumokról itt található további információ: Android Supported Media Formats
Az App Inventorban készült alkalmazások maximális mérete 5 MB, ezért ennél nagyobb videó fájlokat sem lehet fordításkor hozzáadni a projekthez. Ha mégis nagy méretű videót szeretnél lejátszani, akkor állítsd a videó forrását egy URL-re.
+VotingHelpStringComponentPallette =
A Szavazó komponens segítségével több felhasználó dönthet többségi szavazással egy vagy több kérdésről egy webszolgáltatáson keresztül.
+WebHelpStringComponentPallette = Egy láthatatlan komponens, amellyel HTTP GET, POST, PUT és DELETE parancsokat adhatunk ki.
+WebViewerHelpStringComponentPallette = Weboldalak böngészésére szolgáló komponens. A kezdő weboldal címe a Képernyő Szerkesztőben és Blokk Szerkesztőben is beállítható a KezdőOldalURL tulajdonságon keresztül. Figyelem: komponens nem rendelkezik a hagyományos asztali böngészők összes képességével.
+YandexTranslateHelpStringComponentPallette =
Tetszőleges szöveget fordíthatunk vele egyik nyelvről a másikra. A fordító a Yandex webes szolgáltatását használja, ezért működő internetes kapcsolat szükséges hozzá.
A nyelvet amelyről fordítunk és a nyelvet amelyre fordítunk kétbetűs kódokkal kell megadni (pl: \"en-hu\" az angolról magyarra fordítás kódja). Ha a fordítandó nyelvet üresen hagyjuk (pl: \"es\" kód esetén spanyolra fordítunk) akkor a fordító megpróbálja a szöveg alapján kitalálni azt.
A Yandex fordítóról további információkat - többek között az elérhető nyelvek listáját - a http://api.yandex.com/translate/ címen találhatsz.
Megjegyzés: a fordítás aszinkron módon, a háttérben történik. Amint elkészült, meghívódik a ElkészültAFordítás esemény.
+FirebaseDBHelpStringComponentPallette = Láthatatlan komponens, amellyel adatokat tárolhatunk egy webes Firebase adatbázisban. Ezen keresztül akár több alkalmazás is meg tud osztani adatokat egymással. Alapértelmezetten az adatok az App Inventor közös Firebase adatbázisában lesznek eltárolva, de a \"FirebaseURL\" mezőn keresztül akár a saját adatbázisodra is beállíthatod. További információt a Firebase.com oldalon találhatsz.
+createNoProjectsDialogText = Üdvözöllek az App Inventor 2 oldalán!
+createNoProjectsDialogMessage1 = Még nincs egyetlen App Inventor projekted sem. Az App Inventor használatának bemutatásához kattints az \"Útmutató\" gombra az oldal felső részén. Ha pedig új projektet szeretnél létrehozni, akkor kattints a \"Új projekt létrehozása\" gombra az oldal bal felső sarkában.
+createNoprojectsDialogMessage2 = Kellemes mobilprogramozást!
+createWelcomeDialogText = Üdvözöllek az App Inventorban!
+createWelcomeDialogButton = Tovább
+doNotShow = Többet ezt ne mutasd meg
+showSurveySplashMessage =
Kérlek töltsd ki ezt a rövid kérdőívet, hogy megismerjük a véleményedet és jobbá tehessük az App Inventort.
+showSurveySplashButtonNow = Most kitöltöm
+showSurveySplashButtonLater = Később töltöm ki
+showSurveySplashButtonNever = Soha nem akarom kitölteni
+invalidSessionDialogText = A jelenlegi munkamenet ideje lejárt
+invalidSessionDialogMessage =
Figyelem: Ez a munkamenet lejárt.
Ezt az App Inventor fiókot egy másik helyről is megnyitották. Ugyanannak a fióknak az egyszerre több helyről való használata kárt tehet a projektben.
Válassz az alábbiak közül:
Ennek a munkamenetnek a befejezése.
A másik munkamenet befejezése.
Folytatás két párhuzamos munkamenettel.
+invalidSessionDialogButtonEnd = Munkamenet bezárása
+invalidSessionDialogButtonCurrent = Legyen ez az aktuális munkamenet
+invalidSessionDialogButtonContinue = Folytatás mind a két munkamenettel
+bashWarningDialogText = Folytatás két párhuzamos munkamenettel?
+bashWarningDialogMessage =
FIGYELEM: Egy második App Inventor munkamenet is létrejött ehhez a fiókhoz. Használhatod mind a két munkamenetet párhuzamosan, de könnyen lehet hogy emiatt több változás is elveszik majd a projektedben.
Nem ajánlott egyszerre több munkamenetet használni. De ha mégis így szeretnél dolgozni, akkor mindenképpen érdemes gyakran mentéseket készítened a saját gépedre, hogy legyen az App Inventor szerverétől független másolatod. Ehhez használd a \"Kijelölt projekt (.aia) exportálása a számítógépemre\" menüpontot a Projekt menüből.
+bashWarningDialogButtonContinue = Folytatás több párhuzamos munkamenettel
+bashWarningDialogButtonNo = Ne használj egyszerre töb munkamenetet
+finalDialogText = A munkameneted lezárult
+accountDisabledMessage = A fiókod zárolva van
+finalDialogMessage =
A munkameneted befejeződött, most már bezárhatod ezt az ablakot
+corruptionDialogText = Projekt Olvasási Hiba
+corruptionDialogMessage =
Hiba történt a projekt fájl beolvasása közben
Lezártuk a munkamenetet, hogy ne keletkezzen több kár a projektben. Bezárhatod ezt az ablakot.
+blocksTruncatedDialogText = Nincs egyetlen blokk sem a képernyőhöz rendelve
+blocksTruncatedDialogMessage =
Úgy tűnik minden blokkot töröltél a %1 képernyőről.
Elmentheted az üres képernyőt, és akkor az eltávolított blokkok véglegesen törölve lesznek a projektből.
Vagy visszaállíthatod a projekt legutoljára elmentett változatát.
+blocksTruncatedDialogButtonSave = Üres képernyő mentése.
+blocksTruncatedDialogButtonNoSave = Előző verzió visszaállítása
+blocksTruncatedDialogButtonHTML = Kérlek várj %1 másodpercet...
+InsertRowMethods = Sor beszúrása
+GetRowsMethods = Sorok lekérdezése
+GetRowsWithConditionsMethods = Sorok lekérdezése feltétellel
+SwitchToSimplifiedChinese = 简体中文
+SwitchToTraditionalChinese = 繁体中文
+SwitchToSpanish = Español
+SwitchToFrench = Français
+SwitchToItalian = Italiano
+SwitchToRussian = Pусский
+SwitchToKorean = 한국어
+SwitchToSwedish = Svenska
+switchToPortugueseBR = Português do Brasil
+switchToPortuguese = Português
+switchToDutch = Nederlands
+ProgressBarFor = Folyamat Sáv
+proximitySensorComponentPallette = Közelség érzékelő
+ProximitySensorHelpStringComponentPallette = Láthatatlan komponens, amely a tárgyak távolságát méri a készülék képernyőjétől. A legtöbb készülék az abszolút távolságot adja vissza centiméterben, de van amelyik csak azt állapítja meg hogy a tárgy a megadott maximális távolságon (Maximális távolság mező) belül vagy kívül van. Gyakran használják arra hogy megállapítsa a felhasználó a füléhez nyomva tartja-e a telefont.
+MaximumRangeProperties = Maximális távolság
+KeepRunningWhenOnPauseProperties = Háttérben is működik
+ProximityChangedPropertiesProperties = Távolság változott mező
+ProximityChangedMethods = Távolság változott
+MaximumRangeMethods = Maximális távolság parancs
+ItemTextColorProperties = Listaelem szöveg színe
+ItemBackgroundColorProperties = Listaelem háttérszíne
+FusionTablesStandardErrorMessage = Fusion Tables lekérdezési hiba
+FusionTablesDeprecated = FIGYELEM: a Google elavulttá tette a Fusion Tables Szolgáltatást. 2019. december 3-án le fog állni További információ (angolul)
+SelectionColorProperties = Kiválasztott elem címe
+LaunchPickerMethods = Választó ablak megjelenítése
+SetDateToDisplayMethods = Dátum beállítása
+SetDateToDisplayFromInstantMethods = Dátum beállítása pillanat érték alapján
+IncomingCallAnsweredEvents = Bejövő hívásra válasz
+PhoneCallEndedEvents = Telefonhívás véget ért
+PhoneCallStartedEvents = Telefonhívás elkezdődött
+OnSettingsEvents = Beállítások menü
+OtherPlayerStartedEvents = Másik lejátszás is elindult
+ProximityChangedEvents = Távolság megváltozott
+ThumbEnabledProperties = Engedélyezett
+SetTimeToDisplayMethods = Időpont beállítása
+SetTimeToDisplayFromInstantMethods = Időpont beállítása pillanat érték alapján
+XMLTextDecodeMethods = XML szöveg dekódolása
+extraKeyValueWarning = Az Extra kulcs és Extra érték mezők elavultnak számítanak és a jövőben nem lesznek támogatva. Használd helyettük az Extra értékek mezőt a blokk szerkesztőben.\n
+MediaStoredEvents = Média fájl el lett mentve
+PostMediaMethods = Média tárolása
+scaleProportionally = Képarányos méretezés
+scaleToFit = Mérethez igazítás
+UnauthenticateMethods = Kijelentkezés
+useDefault = Alapértelmezett adatbázis szerver használata
+DefaultURLProperties = Alapértelmezett URL
+warningDialogTitle = Figyelem!
+useFrontDeprecated = Az Elülső kamera használata mező el lett távolítva a Kamera komponensből
+firebaseExperimentalWarning = A FirebaseAdatbázis kísérleti jelleggel került be az App Inventorba, így előfordulhatnak a jövőben olyan változtatások is, amelyek nem biztosítják a visszafele kompatibilitást. Nincs garancia rá hogy azok a különálló (saját .apk csomaggal rendelkező) alkalmazások, amelyek ezzel a komponenssel beépítve készültek, a jövőben is működni fognak.
+readOnlyMode = Csak olvasható módban vagy
+sessionDead = Vagy lejárt a munkameneted, vagy miközben dolgoztál az App Inventort frissítették. Újra kell indítanod a munkamenetedet hogy folytathasd a munkádat. Kattints az \"Újratöltés\" gombra.
+reloadWindow = Újratöltés
+AccountNameProperties = Felhasználó fiók neve
+ProjectIDProperties = Projekt azonosító
+CloudDBErrorEvents = Felhő adatbázis hiba történt
+cloudDBComponentPallette = Felhő adatbázis
+CloudDBHelpStringComponentPallette = Láthatatlan komponens, amellyel adatokat tárolhatunk egy internetes adatbázis szerveren (amelyen a Redis adatbázis szoftver fut). Ezzel adatokat oszthatunk meg akár több alkalmazás között is. Alapértelmezés szerint az adatok az MIT szerverén lesznek eltárolva, de akár te is létrehozhatsz egy ilyen adatbázis szervert. Ha saját adatbázist használsz, akkor állítsd be a \"RedisSzerver\" és \"RedisPort\" mezőket a megfelelő értékekre.
+RedisServerProperties = Redis szerver
+DefaultRedisServerProperties = Alapértelmezett Redis szerver
+RedisPortProperties = Redis port
+TokenProperties = Token
+GetValuesMethods = Értékek lekérdezése
+itemToAddParams = hozzáadandó érték
+UseSSLProperties = SSL használata
+CloudConnectedMethods = Csatlakozott az adatbázishoz
+PrimaryColorProperties = Elsődleges szín
+PrimaryColorDarkProperties = Elsődleges sötét szín
+AccentColorProperties = Másodlagos szín
+ThemeProperties = Téma
+classicTheme = Klasszikus
+defaultTheme = Alapértelmezett téma
+blackTitleTheme = Sötét szöveg
+darkTheme = Sötét
+MapHelpStringComponentPallette =
Egy kétdimenziós panel, amely egy térkép lapjait jeleníti meg és Jelölő elemeket helyezhetünk rá az egyes helyek azonosítására. A térkép lapjait és adatait az OpenStreetMap biztosítja.
A Képernyő Szerkesztőben három gomb látható egymás alatt a képernyőre helyezett térképen, amelyek segítségével annak a földrajzi határait állíthatjuk be.
Az elsőn egy lakat látható: ha zárva van, és a térképet egérrel elhúzzuk, akkor a komponens helyzetét változtatjuk meg a többi képernyőn lévő vezérlőhöz képest. Ha nyitva van, akkor egérrel húzva a térkép földrajzi határait változtatjuk meg.
A második gombbal a térkép aktuális helyzetét (szélességi és hosszúsági fokait) menti el alapértelmezett pozíciónak (az alkalmazás betöltésekor ez a hely jelenik majd meg).
A harmadik gombbal az alapértelmezett helyzetet állíthatjuk vissza, ha elgörgettünk onnan (például azért hogy Jelölő elemeket helyezzünk el máshova).
+CenterFromStringProperties = Térkép középpontja
+BoundingBoxProperties = Befoglaló téglalap
+MapTypeProperties = Térkép típusa
+ScaleUnitsProperties = Méretegységek
+ShowCompassProperties = Iránytűt mutat
+ShowScaleProperties = Méretet mutat
+ShowUserProperties = Felhasználó pozícióját mutatja
+ShowZoomProperties = Nagyítást mutat
+EnableRotationProperties = Forgatható
+ZoomLevelProperties = Nagyítási szint
+BoundsChangeEvents = Térkép koordinátái megváltoztak
+ReadyEvents = Térkép betöltődött
+ZoomChangeEvents = Nagyítás megváltozott
+InvalidPointEvents = Hibás koordináta lett megadva
+PanToMethods = Ugrás koordinátára
+mapTypeRoads = Térkép
+mapTypeAerial = Műhold
+mapTypeTerrain = Domborzat
+mapScaleUnitsMetric = Metrikus
+mapScaleUnitsImperial = Angolszász
+ImageAssetProperties = Kép
+DescriptionProperties = Leírás
+DraggableProperties = Mozgatható
+StartDragEvents = Mozgatás elkezdődött
+DragEvents = Mozgatják
+StopDragEvents = Mozgatás befejeződött
+unknownMapTypeException = Ismeretlen térkép típus: {0}
+mapCenterWrongNumberArgumentsException = A térképK középpontja szövegként mezőhöz két számot vártam, ehelyett {0} értéket kaptam
+mapZoomLevelOutOfBoundsException = A nagyítási szint csak 1 és 18 közötti szám lehet
+mapZoomIn = Nagyítás
+mapZoomOut = Kicsinyítés
+mapLockMovementTooltip = Térkép mozgatás zárolása
+mapUnlockMovementTooltip = Térkép mozgatás engedélyezése
+mapSetInitialMapTooltip = Kezdeti pozíció beállítása erre a helyre
+mapResetBoundingBoxTooltip = Befoglaló téglalap visszaállítása
+CreateMarkerMethods = Jelölő elem létrehozása
+SetLocationMethods = Koordináták beállítása
+FillColorProperties = Kitöltési szín
+StrokeColorProperties = Körvonal szín
+StrokeWidthProperties = Vonalvastagság
+TypeProperties = Típus
+LoadErrorEvents = Térkép betöltési hiba
+GotFeaturesEvents = Térkép objektumok betöltődtek
+TapAtPointEvents = Megérintették a térkép egy pontját
+FeatureFromDescriptionMethods = Térkép objektum létrehozása szöveges leírásból
+EnableInfoboxProperties = Van felugró információs ablak
+EnableZoomProperties = Nagyítható
+HideInfoboxMethods = Információs ablak elrejtése
+ShowInfoboxMethods = Információs ablak megjelenítése
+fromUrlButton = Betöltés URL-ről...
+urlImportWizardCaption = Erőforrás betöltése URL-ről...
+AnchorHorizontalProperties = Horgonypont vízszintes elrendezése
+AnchorVerticalProperties = Horgonypont függőleges elrendezése
+FeaturesProperties = Térkép objektumok
+FeaturesFromGeoJSONProperties = Térkép objektumok GeoJSON formátumban
+PointsProperties = Alakzat pontjai
+EnablePanProperties = Görgethető
+DistanceToFeatureMethods = Másik térkép objektumtól való távolság
+DistanceToPointMethods = Ponttól való távolság
+BearingToFeatureMethods = Iránya egy másik objektumhoz viszonyítva
+BearingToPointMethods = Iránya egy ponthoz viszonyítva
+HolePointsProperties = Lyukpontok
+CentroidMethods = Középpont kiszámítása
+PointsFromStringProperties = Síkidom pontjai
+HolePointsFromStringProperties = Lyukpontok
+DoubleTapAtPointEvents = Duplán tapintottak egy pontot
+FeatureClickEvents = Térképobjektumra kattintottak
+FeatureDragEvents = Elhúztak egy térkép objektumot
+FeatureLongClickEvents = Hosszan kattintottak egy térkép objektumra
+FeatureStartDragEvents = Elkezdték mozgatni az egyik térkép objektumot
+FeatureStopDragEvents = Befejezték a térkép objektum mozgatását
+LongPressAtPointEvents = Hosszan érintettek egy pontot
+circleComponentPallette = Kör
+CircleHelpStringComponentPallette =
Egy kört lehet vele rajzolni a térkép megadott pontjára. A kör sugarát méterben kell megadni.
A kör közepén lévő négyzet húzásával tudjuk annak helyzetét megváltoztatni a térképen, a szélén lévő négyzettel pedig a kör sugarát állíthatjuk be.
Egy vagy több térkép objektumot (kört, poligont, stb.) tartalmazó gyűjtemény. Tartalmát GeoJSON formátumban kell megadni, ami lehet helyi erőforrás, vagy betölthető egy URL-en keresztül is.
+lineStringComponentPallette = Vonal
+LineStringHelpStringComponentPallette =
Vonalak láncolata a térképen.
A vonalak végére kattintva húzhatjuk azt szét vagy össze, így állítva be a helyét és hosszát. A vonal közepére kattintva oszthatjuk azt ketté (ezután a két részt külön vonalként kezelhetjük).
Egy sokszöget rajzolhatunk vele a térkép felületére.
A sokszög csúcsaira kattintva húzhatjuk azokat szét vagy össze, így állítva be a helyüket és hosszukat. Az oldalak közepére kattintva oszthatjuk azokat ketté (ezután a két részt külön vonalként kezelhetjük).
Egy téglalapot rajzol a térképre északi, déli, keleti és nyugati oldalakkal.
A téglalap méretét és helyét a sarkainak szét- vagy összehúzásával változtathatjuk meg.
+EastLongitudeProperties = Keleti oldal hosszúsági foka
+NorthLatitudeProperties = Északi oldal szélességi foka
+SouthLatitudeProperties = Déli oldal szélességi foka
+WestLongitudeProperties = Nyugati oldal hosszúsági foka
+LoadFromURLMethods = Térkép elemek betöltése URL címről
+customEllipsis = Egyéni...
+ActionBarProperties = Akciósáv
+valueNotInRange = A megadott {0} érték nem a megengedett [{1}, {2}] tartományban van.
+expectedLatLongPair = Hibás szélességi-hosszúsági fokokat adtál meg {0} értékének.
+LocationSensorProperties = Helyzetérzékelő
+UserLatitudeProperties = Felhasználó szélességi foka
+UserLongitudeProperties = Felhasználó hosszúsági foka
+BoundsMethods = Befoglaló téglalap kiszámítása
+CenterMethods = Középpont kiszámítása
+SetCenterMethods = Középpont beállítása
+RotationProperties = Forgatás
+GetVersionNameMethods =
+SdkLevelMethods = SDK verzió
+GetInstallerMethods = Telepítő
+NoticeTitle = Figyelem!
+PackageNotice = Használd ezt az opciót ha olyan alkalmazást szeretnél készíteni amely Andoird 2.1-en (Eclair) is működik. Ebben az esetben nem tudod majd az alkalmazást a Play Store-ba publikálni.
Package26Notice = Használd ezt az opciót ha olyan alkalmazást szeretnél készíteni amely felrakható a Play Store-ba. Az elkészült alkalmazás futtatásához legalább Android 4.0-ás készülék szükséges.
\ No newline at end of file
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_hy.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_hy.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_hy.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_hy.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_it_IT.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_it_IT.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_it_IT.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_it_IT.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_ko_KR.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_ko_KR.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_ko_KR.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_ko_KR.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_lt.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_lt.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_lt.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_lt.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_nl.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_nl.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_nl.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_nl.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_pl.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_pl.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_pl.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_pl.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_pt.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_pt.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_pt.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_pt.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_pt_BR.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_pt_BR.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_pt_BR.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_pt_BR.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_ru.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_ru.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_ru.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_ru.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_sv.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_sv.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_sv.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_sv.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_tr.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_tr.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_tr.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_tr.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_zh_CN.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_zh_CN.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_zh_CN.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_zh_CN.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/OdeMessages_zh_TW.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_zh_TW.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/OdeMessages_zh_TW.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/OdeMessages_zh_TW.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/ProjectEditorRegistry.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/ProjectEditorRegistry.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/ProjectEditorRegistry.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/ProjectEditorRegistry.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/Registry.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/Registry.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/Registry.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/Registry.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/RpcListener.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/RpcListener.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/RpcListener.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/RpcListener.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/RpcListenerAdapter.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/RpcListenerAdapter.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/RpcListenerAdapter.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/RpcListenerAdapter.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/RpcStatusPopup.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/RpcStatusPopup.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/RpcStatusPopup.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/RpcStatusPopup.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/StatusPanel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/StatusPanel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/StatusPanel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/StatusPanel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/SysOutLogger.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/SysOutLogger.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/SysOutLogger.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/SysOutLogger.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/TopPanel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/TopPanel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/TopPanel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/TopPanel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/TopToolbar.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/TopToolbar.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/TopToolbar.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/TopToolbar.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/admin/AdminComparators.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/admin/AdminComparators.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/admin/AdminComparators.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/admin/AdminComparators.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/boxes/AdminUserListBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/AdminUserListBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/boxes/AdminUserListBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/AdminUserListBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/boxes/AssetListBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/AssetListBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/boxes/AssetListBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/AssetListBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/boxes/BlockSelectorBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/BlockSelectorBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/boxes/BlockSelectorBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/BlockSelectorBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/boxes/MessagesOutputBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/MessagesOutputBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/boxes/MessagesOutputBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/MessagesOutputBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/boxes/MotdBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/MotdBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/boxes/MotdBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/MotdBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/boxes/OdeLogBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/OdeLogBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/boxes/OdeLogBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/OdeLogBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/boxes/PaletteBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/PaletteBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/boxes/PaletteBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/PaletteBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/boxes/ProjectListBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/ProjectListBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/boxes/ProjectListBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/ProjectListBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/boxes/PropertiesBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/PropertiesBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/boxes/PropertiesBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/PropertiesBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/boxes/SourceStructureBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/SourceStructureBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/boxes/SourceStructureBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/SourceStructureBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/boxes/ViewerBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/ViewerBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/boxes/ViewerBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/ViewerBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/boxes/package-info.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/package-info.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/boxes/package-info.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/boxes/package-info.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/EditorManager.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/EditorManager.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/EditorManager.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/EditorManager.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/FileEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/FileEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/FileEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/FileEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/ProjectEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/ProjectEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/ProjectEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/ProjectEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/ProjectEditorFactory.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/ProjectEditorFactory.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/ProjectEditorFactory.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/ProjectEditorFactory.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/package-info.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/package-info.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/package-info.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/package-info.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/ComponentDatabase.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/ComponentDatabase.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/ComponentDatabase.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/ComponentDatabase.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/ComponentNotFoundException.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/ComponentNotFoundException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/ComponentNotFoundException.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/ComponentNotFoundException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/SimpleComponentDatabase.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/SimpleComponentDatabase.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/SimpleComponentDatabase.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/SimpleComponentDatabase.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/SimpleEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/SimpleEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/SimpleEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/SimpleEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/SimpleNonVisibleComponentsPanel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/SimpleNonVisibleComponentsPanel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/SimpleNonVisibleComponentsPanel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/SimpleNonVisibleComponentsPanel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/SimpleVisibleComponentsPanel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/SimpleVisibleComponentsPanel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/SimpleVisibleComponentsPanel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/SimpleVisibleComponentsPanel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/DataFileChangeListener.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/DataFileChangeListener.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/DataFileChangeListener.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/DataFileChangeListener.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/DesignPreviewChangeListener.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/DesignPreviewChangeListener.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/DesignPreviewChangeListener.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/DesignPreviewChangeListener.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/FormChangeListener.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/FormChangeListener.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/FormChangeListener.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/FormChangeListener.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/LayoutInfo.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/LayoutInfo.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/LayoutInfo.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/LayoutInfo.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockAreaChartDataModel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockAreaChartDataModel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockAreaChartDataModel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockAreaChartDataModel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockAreaChartView.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockAreaChartView.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockAreaChartView.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockAreaChartView.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockAxisChartView.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockAxisChartView.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockAxisChartView.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockAxisChartView.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockBall.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockBall.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockBall.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockBall.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockBarChartDataModel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockBarChartDataModel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockBarChartDataModel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockBarChartDataModel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockBarChartView.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockBarChartView.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockBarChartView.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockBarChartView.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockButton.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockButton.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockButton.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockButton.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockButtonBase.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockButtonBase.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockButtonBase.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockButtonBase.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockCanvas.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockCanvas.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockCanvas.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockCanvas.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockCanvasLayout.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockCanvasLayout.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockCanvasLayout.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockCanvasLayout.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockChart.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockChart.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockChart.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockChart.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockChartData.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockChartData.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockChartData.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockChartData.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockChartData2D.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockChartData2D.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockChartData2D.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockChartData2D.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockChartDataModel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockChartDataModel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockChartDataModel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockChartDataModel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockChartLayout.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockChartLayout.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockChartLayout.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockChartLayout.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockChartView.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockChartView.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockChartView.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockChartView.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockCheckBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockCheckBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockCheckBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockCheckBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockCircle.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockCircle.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockCircle.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockCircle.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockCloudDB.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockCloudDB.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockCloudDB.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockCloudDB.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponent.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockComponent.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponent.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockComponent.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponentsUtil.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockComponentsUtil.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockComponentsUtil.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockComponentsUtil.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockContactPicker.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockContactPicker.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockContactPicker.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockContactPicker.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockContainer.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockContainer.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockContainer.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockContainer.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockDataFile.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockDataFile.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockDataFile.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockDataFile.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockDatePicker.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockDatePicker.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockDatePicker.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockDatePicker.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockEmailPicker.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockEmailPicker.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockEmailPicker.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockEmailPicker.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockFeatureCollection.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockFeatureCollection.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockFeatureCollection.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockFeatureCollection.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockFeatureCollectionLayout.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockFeatureCollectionLayout.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockFeatureCollectionLayout.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockFeatureCollectionLayout.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockFirebaseDB.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockFirebaseDB.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockFirebaseDB.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockFirebaseDB.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockForm.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockForm.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockForm.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockForm.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockFormHelper.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockFormHelper.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockFormHelper.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockFormHelper.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockFormLayout.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockFormLayout.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockFormLayout.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockFormLayout.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockFusionTablesControl.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockFusionTablesControl.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockFusionTablesControl.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockFusionTablesControl.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockHVArrangement.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockHVArrangement.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockHVArrangement.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockHVArrangement.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockHVArrangementHelper.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockHVArrangementHelper.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockHVArrangementHelper.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockHVArrangementHelper.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockHVLayout.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockHVLayout.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockHVLayout.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockHVLayout.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockHVLayoutBase.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockHVLayoutBase.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockHVLayoutBase.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockHVLayoutBase.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockHorizontalArrangement.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockHorizontalArrangement.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockHorizontalArrangement.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockHorizontalArrangement.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockImage.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockImage.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockImage.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockImage.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockImageBase.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockImageBase.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockImageBase.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockImageBase.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockImagePicker.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockImagePicker.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockImagePicker.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockImagePicker.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockImageSprite.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockImageSprite.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockImageSprite.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockImageSprite.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockLabel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockLabel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockLabel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockLabel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockLayout.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockLayout.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockLayout.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockLayout.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockLineChartBaseDataModel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockLineChartBaseDataModel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockLineChartBaseDataModel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockLineChartBaseDataModel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockLineChartDataModel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockLineChartDataModel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockLineChartDataModel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockLineChartDataModel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockLineChartView.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockLineChartView.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockLineChartView.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockLineChartView.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockLineChartViewBase.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockLineChartViewBase.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockLineChartViewBase.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockLineChartViewBase.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockLineString.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockLineString.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockLineString.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockLineString.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockListPicker.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockListPicker.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockListPicker.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockListPicker.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockListView.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockListView.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockListView.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockListView.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockMap.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockMap.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockMap.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockMap.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockMapFeature.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockMapFeature.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockMapFeature.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockMapFeature.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockMapFeatureBase.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockMapFeatureBase.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockMapFeatureBase.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockMapFeatureBase.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockMapFeatureBaseWithFill.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockMapFeatureBaseWithFill.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockMapFeatureBaseWithFill.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockMapFeatureBaseWithFill.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockMapLayout.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockMapLayout.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockMapLayout.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockMapLayout.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockMarker.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockMarker.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockMarker.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockMarker.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockNonVisibleComponent.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockNonVisibleComponent.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockNonVisibleComponent.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockNonVisibleComponent.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockPasswordTextBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockPasswordTextBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockPasswordTextBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockPasswordTextBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockPhoneNumberPicker.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockPhoneNumberPicker.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockPhoneNumberPicker.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockPhoneNumberPicker.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockPieChartDataModel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockPieChartDataModel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockPieChartDataModel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockPieChartDataModel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockPieChartView.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockPieChartView.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockPieChartView.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockPieChartView.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockPointChartDataModel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockPointChartDataModel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockPointChartDataModel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockPointChartDataModel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockPointChartView.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockPointChartView.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockPointChartView.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockPointChartView.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockPolygon.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockPolygon.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockPolygon.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockPolygon.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockPolygonBase.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockPolygonBase.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockPolygonBase.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockPolygonBase.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockRadioButton.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockRadioButton.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockRadioButton.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockRadioButton.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockRectangle.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockRectangle.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockRectangle.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockRectangle.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockScatterChartDataModel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockScatterChartDataModel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockScatterChartDataModel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockScatterChartDataModel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockScatterChartView.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockScatterChartView.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockScatterChartView.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockScatterChartView.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockScrollHorizontalArrangement.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockScrollHorizontalArrangement.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockScrollHorizontalArrangement.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockScrollHorizontalArrangement.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockScrollVerticalArrangement.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockScrollVerticalArrangement.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockScrollVerticalArrangement.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockScrollVerticalArrangement.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockSlider.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockSlider.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockSlider.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockSlider.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockSpinner.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockSpinner.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockSpinner.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockSpinner.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockSpreadsheet.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockSpreadsheet.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockSpreadsheet.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockSpreadsheet.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockSprite.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockSprite.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockSprite.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockSprite.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockSwitch.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockSwitch.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockSwitch.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockSwitch.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockTableArrangement.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockTableArrangement.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockTableArrangement.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockTableArrangement.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockTableLayout.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockTableLayout.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockTableLayout.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockTableLayout.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockTextBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockTextBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockTextBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockTextBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockTextBoxBase.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockTextBoxBase.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockTextBoxBase.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockTextBoxBase.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockTimePicker.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockTimePicker.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockTimePicker.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockTimePicker.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockToggleBase.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockToggleBase.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockToggleBase.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockToggleBase.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockTranslator.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockTranslator.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockTranslator.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockTranslator.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVerticalArrangement.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockVerticalArrangement.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVerticalArrangement.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockVerticalArrangement.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVideoPlayer.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockVideoPlayer.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVideoPlayer.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockVideoPlayer.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleComponent.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockVisibleComponent.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockVisibleComponent.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockVisibleComponent.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockWebViewer.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockWebViewer.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockWebViewer.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockWebViewer.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockWrapper.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockWrapper.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/MockWrapper.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/MockWrapper.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/package-info.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/package-info.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/package-info.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/package-info.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/utils/PropertiesUtil.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/utils/PropertiesUtil.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/utils/PropertiesUtil.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/utils/PropertiesUtil.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/utils/SVGPanel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/utils/SVGPanel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/components/utils/SVGPanel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/components/utils/SVGPanel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/package-info.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/package-info.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/package-info.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/package-info.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/AbstractPaletteItemWidget.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/palette/AbstractPaletteItemWidget.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/AbstractPaletteItemWidget.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/palette/AbstractPaletteItemWidget.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/ComponentHelpWidget.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/palette/ComponentHelpWidget.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/ComponentHelpWidget.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/palette/ComponentHelpWidget.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/ComponentRemoveWidget.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/palette/ComponentRemoveWidget.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/ComponentRemoveWidget.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/palette/ComponentRemoveWidget.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/DropTargetProvider.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/palette/DropTargetProvider.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/DropTargetProvider.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/palette/DropTargetProvider.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/palette/SimpleComponentDescriptor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimplePaletteItem.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/palette/SimplePaletteItem.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimplePaletteItem.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/palette/SimplePaletteItem.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimplePalettePanel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/palette/SimplePalettePanel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/SimplePalettePanel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/palette/SimplePalettePanel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/package-info.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/palette/package-info.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/simple/palette/package-info.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/simple/palette/package-info.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/BlockDrawerSelectionListener.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/BlockDrawerSelectionListener.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/BlockDrawerSelectionListener.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/BlockDrawerSelectionListener.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/BlocklyPanel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/BlocklyPanel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/BlocklyPanel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/BlocklyPanel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/LoadBlocksException.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/LoadBlocksException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/LoadBlocksException.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/LoadBlocksException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/TutorialPanel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/TutorialPanel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/TutorialPanel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/TutorialPanel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/YaBlocksEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/YaBlocksEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/YaBlocksEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/YaBlocksEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/YaFormEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/YaFormEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/YaFormEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/YaFormEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/YaProjectEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/YaProjectEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/YaProjectEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/YaProjectEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/YailGenerationException.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/YailGenerationException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/YailGenerationException.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/YailGenerationException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/events/EventHelper.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/events/EventHelper.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/events/EventHelper.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/events/EventHelper.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/i18n/BlocklyMsg.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/i18n/BlocklyMsg.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/i18n/BlocklyMsg.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/i18n/BlocklyMsg.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/i18n/BlocklyTranslationGenerator.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/i18n/BlocklyTranslationGenerator.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/i18n/BlocklyTranslationGenerator.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/i18n/BlocklyTranslationGenerator.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/package-info.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/package-info.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/package-info.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/package-info.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/palette/LegoPaletteHelper.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/palette/LegoPaletteHelper.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/palette/LegoPaletteHelper.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/palette/LegoPaletteHelper.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/palette/OrderedPaletteHelper.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/palette/OrderedPaletteHelper.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/palette/OrderedPaletteHelper.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/palette/OrderedPaletteHelper.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/palette/PaletteHelper.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/palette/PaletteHelper.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/palette/PaletteHelper.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/palette/PaletteHelper.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/palette/YoungAndroidPalettePanel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/palette/YoungAndroidPalettePanel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/palette/YoungAndroidPalettePanel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/palette/YoungAndroidPalettePanel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/palette/package-info.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/palette/package-info.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/palette/package-info.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/palette/package-info.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/ListWithNone.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/ListWithNone.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/ListWithNone.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/ListWithNone.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidAccelerometerSensitivityChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidAccelerometerSensitivityChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidAccelerometerSensitivityChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidAccelerometerSensitivityChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidAlignmentChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidAlignmentChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidAlignmentChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidAlignmentChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidAssetSelectorPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidAssetSelectorPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidAssetSelectorPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidAssetSelectorPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidBooleanPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidBooleanPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidBooleanPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidBooleanPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidButtonShapeChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidButtonShapeChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidButtonShapeChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidButtonShapeChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidChartLineTypeChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidChartLineTypeChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidChartLineTypeChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidChartLineTypeChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidChartPointShapeChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidChartPointShapeChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidChartPointShapeChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidChartPointShapeChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidChartTypeChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidChartTypeChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidChartTypeChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidChartTypeChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidColorChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidColorChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidColorChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidColorChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidComponentSelectorPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidComponentSelectorPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidComponentSelectorPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidComponentSelectorPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidDataColumnSelectorProperty.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidDataColumnSelectorProperty.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidDataColumnSelectorProperty.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidDataColumnSelectorProperty.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidDefaultURLPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidDefaultURLPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidDefaultURLPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidDefaultURLPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidFileScopePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidFileScopePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidFileScopePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidFileScopePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidFloatRangePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidFloatRangePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidFloatRangePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidFloatRangePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidFontTypefaceChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidFontTypefaceChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidFontTypefaceChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidFontTypefaceChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidGeoJSONPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidGeoJSONPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidGeoJSONPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidGeoJSONPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidGeographicPointPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidGeographicPointPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidGeographicPointPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidGeographicPointPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidHorizontalAlignmentChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidHorizontalAlignmentChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidHorizontalAlignmentChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidHorizontalAlignmentChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidIntegerRangePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidIntegerRangePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidIntegerRangePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidIntegerRangePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoEv3ColorSensorModeChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoEv3ColorSensorModeChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoEv3ColorSensorModeChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoEv3ColorSensorModeChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoEv3GyroSensorModeChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoEv3GyroSensorModeChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoEv3GyroSensorModeChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoEv3GyroSensorModeChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoEv3SensorPortChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoEv3SensorPortChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoEv3SensorPortChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoEv3SensorPortChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoEv3UltrasonicSensorModeChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoEv3UltrasonicSensorModeChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoEv3UltrasonicSensorModeChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoEv3UltrasonicSensorModeChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoNxtSensorPortChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoNxtSensorPortChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoNxtSensorPortChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLegoNxtSensorPortChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLengthPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLengthPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLengthPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidLengthPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidListViewAddDataPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidListViewAddDataPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidListViewAddDataPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidListViewAddDataPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidListViewLayoutChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidListViewLayoutChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidListViewLayoutChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidListViewLayoutChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidMapScaleUnitsPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidMapScaleUnitsPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidMapScaleUnitsPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidMapScaleUnitsPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidMapTypePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidMapTypePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidMapTypePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidMapTypePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidNavigationMethodChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidNavigationMethodChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidNavigationMethodChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidNavigationMethodChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidRecyclerViewOrientationPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidRecyclerViewOrientationPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidRecyclerViewOrientationPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidRecyclerViewOrientationPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidScreenAnimationChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidScreenAnimationChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidScreenAnimationChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidScreenAnimationChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidScreenOrientationChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidScreenOrientationChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidScreenOrientationChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidScreenOrientationChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidSensorDistIntervalChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidSensorDistIntervalChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidSensorDistIntervalChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidSensorDistIntervalChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidSensorTimeIntervalChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidSensorTimeIntervalChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidSensorTimeIntervalChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidSensorTimeIntervalChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidSizingChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidSizingChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidSizingChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidSizingChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidTextReceivingPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidTextReceivingPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidTextReceivingPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidTextReceivingPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidThemeChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidThemeChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidThemeChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidThemeChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidToastLengthChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidToastLengthChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidToastLengthChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidToastLengthChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidVerticalAlignmentChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidVerticalAlignmentChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidVerticalAlignmentChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/YoungAndroidVerticalAlignmentChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/package-info.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/package-info.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/editor/youngandroid/properties/package-info.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/editor/youngandroid/properties/package-info.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/SourceStructureExplorer.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/SourceStructureExplorer.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/SourceStructureExplorer.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/SourceStructureExplorer.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/SourceStructureExplorerItem.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/SourceStructureExplorerItem.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/SourceStructureExplorerItem.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/SourceStructureExplorerItem.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/AddFormCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/AddFormCommand.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/AddFormCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/AddFormCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/BuildCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/BuildCommand.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/BuildCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/BuildCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/ChainableCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/ChainableCommand.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/ChainableCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/ChainableCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/CommandRegistry.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/CommandRegistry.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/CommandRegistry.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/CommandRegistry.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/CopyYoungAndroidProjectCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/CopyYoungAndroidProjectCommand.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/CopyYoungAndroidProjectCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/CopyYoungAndroidProjectCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/DeleteFileCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/DeleteFileCommand.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/DeleteFileCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/DeleteFileCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/DownloadFileCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/DownloadFileCommand.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/DownloadFileCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/DownloadFileCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/DownloadProjectOutputCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/DownloadProjectOutputCommand.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/DownloadProjectOutputCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/DownloadProjectOutputCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/EnsurePhoneConnectedCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/EnsurePhoneConnectedCommand.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/EnsurePhoneConnectedCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/EnsurePhoneConnectedCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/GenerateYailCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/GenerateYailCommand.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/GenerateYailCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/GenerateYailCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/MiniProgressBar.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/MiniProgressBar.java
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/MiniProgressBar.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/MiniProgressBar.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/PreviewFileCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/PreviewFileCommand.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/PreviewFileCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/PreviewFileCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/ProjectNodeCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/ProjectNodeCommand.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/ProjectNodeCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/ProjectNodeCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/SaveAllEditorsCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/SaveAllEditorsCommand.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/SaveAllEditorsCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/SaveAllEditorsCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/SaveScreenCheckpointCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/SaveScreenCheckpointCommand.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/SaveScreenCheckpointCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/SaveScreenCheckpointCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/ShowBarcodeCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/ShowBarcodeCommand.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/ShowBarcodeCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/ShowBarcodeCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/ShowProgressBarCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/ShowProgressBarCommand.java
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/ShowProgressBarCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/ShowProgressBarCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/WaitForBuildResultCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/WaitForBuildResultCommand.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/WaitForBuildResultCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/WaitForBuildResultCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/WarningDialogCommand.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/WarningDialogCommand.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/WarningDialogCommand.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/WarningDialogCommand.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/commands/package-info.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/package-info.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/commands/package-info.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/commands/package-info.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBox.ui.xml b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBox.ui.xml
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBox.ui.xml
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBox.ui.xml
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBoxNoProjectDialogBoxUiBinderImplGenMessages_ca.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBoxNoProjectDialogBoxUiBinderImplGenMessages_ca.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBoxNoProjectDialogBoxUiBinderImplGenMessages_ca.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBoxNoProjectDialogBoxUiBinderImplGenMessages_ca.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBoxNoProjectDialogBoxUiBinderImplGenMessages_en.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBoxNoProjectDialogBoxUiBinderImplGenMessages_en.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBoxNoProjectDialogBoxUiBinderImplGenMessages_en.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBoxNoProjectDialogBoxUiBinderImplGenMessages_en.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBoxNoProjectDialogBoxUiBinderImplGenMessages_hy.properties b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBoxNoProjectDialogBoxUiBinderImplGenMessages_hy.properties
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBoxNoProjectDialogBoxUiBinderImplGenMessages_hy.properties
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/dialogs/NoProjectDialogBoxNoProjectDialogBoxUiBinderImplGenMessages_hy.properties
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/dialogs/ProgressBarDialogBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/dialogs/ProgressBarDialogBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/dialogs/ProgressBarDialogBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/dialogs/ProgressBarDialogBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/package-info.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/package-info.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/package-info.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/package-info.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/project/ComponentDatabaseChangeListener.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/ComponentDatabaseChangeListener.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/project/ComponentDatabaseChangeListener.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/ComponentDatabaseChangeListener.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/project/Project.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/Project.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/project/Project.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/Project.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/project/ProjectChangeAdapter.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/ProjectChangeAdapter.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/project/ProjectChangeAdapter.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/ProjectChangeAdapter.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/project/ProjectChangeListener.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/ProjectChangeListener.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/project/ProjectChangeListener.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/ProjectChangeListener.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/project/ProjectComparators.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/ProjectComparators.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/project/ProjectComparators.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/ProjectComparators.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/project/ProjectManager.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/ProjectManager.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/project/ProjectManager.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/ProjectManager.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/project/ProjectManagerEventAdapter.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/ProjectManagerEventAdapter.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/project/ProjectManagerEventAdapter.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/ProjectManagerEventAdapter.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/project/ProjectManagerEventListener.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/ProjectManagerEventListener.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/project/ProjectManagerEventListener.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/ProjectManagerEventListener.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/project/ProjectNodeContextMenu.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/ProjectNodeContextMenu.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/project/ProjectNodeContextMenu.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/ProjectNodeContextMenu.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/project/package-info.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/package-info.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/project/package-info.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/project/package-info.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/youngandroid/AssetList.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/youngandroid/AssetList.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/youngandroid/AssetList.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/youngandroid/AssetList.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/youngandroid/GalleryImages.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/youngandroid/GalleryImages.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/youngandroid/GalleryImages.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/youngandroid/GalleryImages.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/youngandroid/ProjectList.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/youngandroid/ProjectList.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/youngandroid/ProjectList.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/youngandroid/ProjectList.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/youngandroid/ProjectToolbar.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/youngandroid/ProjectToolbar.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/youngandroid/ProjectToolbar.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/youngandroid/ProjectToolbar.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/youngandroid/androidIcon.png b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/youngandroid/androidIcon.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/youngandroid/androidIcon.png
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/youngandroid/androidIcon.png
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/youngandroid/genericApp.png b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/youngandroid/genericApp.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/youngandroid/genericApp.png
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/youngandroid/genericApp.png
diff --git a/appinventor/appengine/src/com/google/appinventor/client/explorer/youngandroid/package-info.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/youngandroid/package-info.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/explorer/youngandroid/package-info.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/explorer/youngandroid/package-info.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/languages.json b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/languages.json
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/languages.json
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/languages.json
diff --git a/appinventor/appengine/src/com/google/appinventor/client/output/MessagesOutput.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/output/MessagesOutput.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/output/MessagesOutput.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/output/MessagesOutput.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/output/MotdUi.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/output/MotdUi.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/output/MotdUi.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/output/MotdUi.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/output/OdeLog.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/output/OdeLog.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/output/OdeLog.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/output/OdeLog.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/package-info.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/package-info.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/package-info.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/package-info.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/properties/BadPropertyEditorException.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/BadPropertyEditorException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/properties/BadPropertyEditorException.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/BadPropertyEditorException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/properties/Properties.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/Properties.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/properties/Properties.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/Properties.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/properties/Property.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/Property.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/properties/Property.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/Property.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/properties/json/ClientJsonArray.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/json/ClientJsonArray.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/properties/json/ClientJsonArray.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/json/ClientJsonArray.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/properties/json/ClientJsonBoolean.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/json/ClientJsonBoolean.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/properties/json/ClientJsonBoolean.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/json/ClientJsonBoolean.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/properties/json/ClientJsonNumber.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/json/ClientJsonNumber.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/properties/json/ClientJsonNumber.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/json/ClientJsonNumber.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/properties/json/ClientJsonObject.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/json/ClientJsonObject.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/properties/json/ClientJsonObject.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/json/ClientJsonObject.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/properties/json/ClientJsonParser.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/json/ClientJsonParser.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/properties/json/ClientJsonParser.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/json/ClientJsonParser.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/properties/json/ClientJsonString.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/json/ClientJsonString.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/properties/json/ClientJsonString.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/json/ClientJsonString.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/properties/json/ClientJsonValue.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/json/ClientJsonValue.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/properties/json/ClientJsonValue.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/properties/json/ClientJsonValue.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/settings/CommonSettings.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/CommonSettings.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/settings/CommonSettings.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/CommonSettings.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/settings/Settings.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/Settings.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/settings/Settings.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/Settings.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/settings/SettingsAccessProvider.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/SettingsAccessProvider.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/settings/SettingsAccessProvider.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/SettingsAccessProvider.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/settings/project/ProjectSettings.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/project/ProjectSettings.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/settings/project/ProjectSettings.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/project/ProjectSettings.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/settings/project/YoungAndroidSettings.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/project/YoungAndroidSettings.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/settings/project/YoungAndroidSettings.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/project/YoungAndroidSettings.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/settings/user/BlocksSettings.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/user/BlocksSettings.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/settings/user/BlocksSettings.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/user/BlocksSettings.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/settings/user/GeneralSettings.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/user/GeneralSettings.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/settings/user/GeneralSettings.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/user/GeneralSettings.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/settings/user/SplashSettings.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/user/SplashSettings.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/settings/user/SplashSettings.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/user/SplashSettings.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/settings/user/UserSettings.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/user/UserSettings.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/settings/user/UserSettings.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/user/UserSettings.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/settings/user/YoungAndroidSettings.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/user/YoungAndroidSettings.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/settings/user/YoungAndroidSettings.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/settings/user/YoungAndroidSettings.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/tracking/Tracking.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/tracking/Tracking.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/tracking/Tracking.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/tracking/Tracking.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/Downloader.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/Downloader.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/utils/Downloader.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/Downloader.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/FocusImplSafari.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/FocusImplSafari.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/utils/FocusImplSafari.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/FocusImplSafari.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/FocusImplStandard.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/FocusImplStandard.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/utils/FocusImplStandard.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/FocusImplStandard.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/HTML5DragDrop.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/HTML5DragDrop.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/utils/HTML5DragDrop.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/HTML5DragDrop.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/MessageDialog.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/MessageDialog.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/utils/MessageDialog.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/MessageDialog.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/PZAwarePositionCallback.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/PZAwarePositionCallback.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/utils/PZAwarePositionCallback.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/PZAwarePositionCallback.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/Uploader.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/Uploader.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/utils/Uploader.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/Uploader.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/Urls.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/Urls.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/utils/Urls.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/Urls.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/utils/html5dnd.js b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/html5dnd.js
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/utils/html5dnd.js
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/utils/html5dnd.js
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/ActionDropDown.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/ActionDropDown.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/ActionDropDown.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/ActionDropDown.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/ClonedWidget.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/ClonedWidget.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/ClonedWidget.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/ClonedWidget.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/ContextMenu.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/ContextMenu.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/ContextMenu.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/ContextMenu.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/DropDownButton.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/DropDownButton.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/DropDownButton.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/DropDownButton.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/ExpiredServiceOverlay.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/ExpiredServiceOverlay.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/ExpiredServiceOverlay.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/ExpiredServiceOverlay.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/ExpiredServiceOverlay.ui.xml b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/ExpiredServiceOverlay.ui.xml
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/ExpiredServiceOverlay.ui.xml
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/ExpiredServiceOverlay.ui.xml
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/Icon.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/Icon.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/Icon.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/Icon.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/LabeledTextBox.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/LabeledTextBox.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/LabeledTextBox.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/LabeledTextBox.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/TextButton.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/TextButton.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/TextButton.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/TextButton.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/Toolbar.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/Toolbar.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/Toolbar.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/Toolbar.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/Validator.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/Validator.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/Validator.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/Validator.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/boxes/Box.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/boxes/Box.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/boxes/Box.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/boxes/Box.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/boxes/BoxRegistry.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/boxes/BoxRegistry.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/boxes/BoxRegistry.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/boxes/BoxRegistry.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/boxes/ColumnLayout.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/boxes/ColumnLayout.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/boxes/ColumnLayout.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/boxes/ColumnLayout.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/boxes/HandlerPanel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/boxes/HandlerPanel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/boxes/HandlerPanel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/boxes/HandlerPanel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/boxes/Layout.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/boxes/Layout.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/boxes/Layout.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/boxes/Layout.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/boxes/LayoutChangeListener.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/boxes/LayoutChangeListener.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/boxes/LayoutChangeListener.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/boxes/LayoutChangeListener.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/boxes/WorkAreaPanel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/boxes/WorkAreaPanel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/boxes/WorkAreaPanel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/boxes/WorkAreaPanel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/dnd/DragSource.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/dnd/DragSource.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/dnd/DragSource.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/dnd/DragSource.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/dnd/DragSourcePanel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/dnd/DragSourcePanel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/dnd/DragSourcePanel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/dnd/DragSourcePanel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/dnd/DragSourceSupport.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/dnd/DragSourceSupport.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/dnd/DragSourceSupport.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/dnd/DragSourceSupport.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/dnd/DropTarget.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/dnd/DropTarget.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/dnd/DropTarget.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/dnd/DropTarget.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/AdditionalChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/AdditionalChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/AdditionalChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/AdditionalChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/BooleanPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/BooleanPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/BooleanPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/BooleanPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/ChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/ChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/ChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/ChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/ColorChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/ColorChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/ColorChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/ColorChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/CountryChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/CountryChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/CountryChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/CountryChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/EditableProperties.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/EditableProperties.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/EditableProperties.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/EditableProperties.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/EditableProperty.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/EditableProperty.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/EditableProperty.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/EditableProperty.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/FloatPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/FloatPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/FloatPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/FloatPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/IntegerPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/IntegerPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/IntegerPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/IntegerPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/LanguageChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/LanguageChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/LanguageChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/LanguageChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/NonNegativeFloatPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/NonNegativeFloatPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/NonNegativeFloatPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/NonNegativeFloatPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/NonNegativeIntegerPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/NonNegativeIntegerPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/NonNegativeIntegerPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/NonNegativeIntegerPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/PropertiesPanel.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/PropertiesPanel.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/PropertiesPanel.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/PropertiesPanel.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/PropertyChangeListener.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/PropertyChangeListener.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/PropertyChangeListener.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/PropertyChangeListener.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/PropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/PropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/PropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/PropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/ScalingChoicePropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/ScalingChoicePropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/ScalingChoicePropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/ScalingChoicePropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/StringPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/StringPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/StringPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/StringPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/SubsetJSONPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/SubsetJSONPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/SubsetJSONPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/SubsetJSONPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/TextAreaPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/TextAreaPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/TextAreaPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/TextAreaPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/TextPropertyEditor.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/TextPropertyEditor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/TextPropertyEditor.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/TextPropertyEditor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/widgets/properties/TextPropertyEditorBase.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/TextPropertyEditorBase.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/widgets/properties/TextPropertyEditorBase.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/widgets/properties/TextPropertyEditorBase.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/wizards/ComponentImportWizard.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/ComponentImportWizard.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/wizards/ComponentImportWizard.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/ComponentImportWizard.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/wizards/ComponentRenameWizard.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/ComponentRenameWizard.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/wizards/ComponentRenameWizard.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/ComponentRenameWizard.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/wizards/ComponentUploadWizard.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/ComponentUploadWizard.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/wizards/ComponentUploadWizard.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/ComponentUploadWizard.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/wizards/DownloadUserSourceWizard.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/DownloadUserSourceWizard.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/wizards/DownloadUserSourceWizard.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/DownloadUserSourceWizard.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/wizards/FileUploadWizard.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/FileUploadWizard.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/wizards/FileUploadWizard.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/FileUploadWizard.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/wizards/InputTemplateUrlWizard.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/InputTemplateUrlWizard.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/wizards/InputTemplateUrlWizard.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/InputTemplateUrlWizard.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/wizards/KeystoreUploadWizard.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/KeystoreUploadWizard.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/wizards/KeystoreUploadWizard.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/KeystoreUploadWizard.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/wizards/NewProjectWizard.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/NewProjectWizard.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/wizards/NewProjectWizard.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/NewProjectWizard.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/wizards/NewUrlDialogCallback.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/NewUrlDialogCallback.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/wizards/NewUrlDialogCallback.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/NewUrlDialogCallback.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/wizards/ProjectUploadWizard.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/ProjectUploadWizard.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/wizards/ProjectUploadWizard.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/ProjectUploadWizard.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/wizards/RequestNewProjectNameWizard.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/RequestNewProjectNameWizard.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/wizards/RequestNewProjectNameWizard.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/RequestNewProjectNameWizard.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/wizards/RequestProjectNewNameInterface.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/RequestProjectNewNameInterface.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/wizards/RequestProjectNewNameInterface.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/RequestProjectNewNameInterface.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/wizards/TemplateUploadWizard.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/TemplateUploadWizard.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/wizards/TemplateUploadWizard.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/TemplateUploadWizard.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/wizards/UrlImportWizard.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/UrlImportWizard.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/wizards/UrlImportWizard.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/UrlImportWizard.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/wizards/Wizard.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/Wizard.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/wizards/Wizard.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/Wizard.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/wizards/youngandroid/NewYoungAndroidProjectWizard.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/youngandroid/NewYoungAndroidProjectWizard.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/wizards/youngandroid/NewYoungAndroidProjectWizard.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/wizards/youngandroid/NewYoungAndroidProjectWizard.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/youngandroid/TextValidators.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/youngandroid/TextValidators.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/youngandroid/TextValidators.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/youngandroid/TextValidators.java
diff --git a/appinventor/appengine/src/com/google/appinventor/client/youngandroid/YoungAndroidFormUpgrader.java b/appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/youngandroid/YoungAndroidFormUpgrader.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/client/youngandroid/YoungAndroidFormUpgrader.java
rename to appinventor/appengine-frontend/src/main/java/com/google/appinventor/client/youngandroid/YoungAndroidFormUpgrader.java
diff --git a/appinventor/appengine/src/com/google/appinventor/YaClient-dev.gwt.xml b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/YaClient-dev.gwt.xml
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/YaClient-dev.gwt.xml
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/YaClient-dev.gwt.xml
diff --git a/appinventor/appengine/src/com/google/appinventor/YaClient.gwt.xml b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/YaClient.gwt.xml
similarity index 82%
rename from appinventor/appengine/src/com/google/appinventor/YaClient.gwt.xml
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/YaClient.gwt.xml
index 637855344ca..fd809d75ffc 100644
--- a/appinventor/appengine/src/com/google/appinventor/YaClient.gwt.xml
+++ b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/YaClient.gwt.xml
@@ -29,6 +29,7 @@
+
@@ -76,36 +77,9 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/appinventor/appengine/src/com/google/appinventor/images/YRLogo.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/YRLogo.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/YRLogo.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/YRLogo.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/accelerometersensor.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/accelerometersensor.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/accelerometersensor.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/accelerometersensor.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/activityStarter.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/activityStarter.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/activityStarter.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/activityStarter.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/appinvlogo-32.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/appinvlogo-32.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/appinvlogo-32.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/appinvlogo-32.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/arduino.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/arduino.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/arduino.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/arduino.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/ball.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/ball.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/ball.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/ball.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/barcodeScanner.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/barcodeScanner.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/barcodeScanner.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/barcodeScanner.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/barometer.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/barometer.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/barometer.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/barometer.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/bluetooth.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/bluetooth.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/bluetooth.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/bluetooth.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/boxClose.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/boxClose.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/boxClose.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/boxClose.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/boxMenu.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/boxMenu.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/boxMenu.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/boxMenu.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/boxMinimize.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/boxMinimize.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/boxMinimize.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/boxMinimize.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/boxRestore.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/boxRestore.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/boxRestore.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/boxRestore.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/button.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/button.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/button.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/button.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/camcorder.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/camcorder.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/camcorder.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/camcorder.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/camera.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/camera.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/camera.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/camera.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/canvas.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/canvas.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/canvas.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/canvas.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/chart.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/chart.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/chart.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/chart.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/chartData.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/chartData.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/chartData.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/chartData.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/checkbox.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/checkbox.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/checkbox.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/checkbox.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/circle.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/circle.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/circle.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/circle.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/clock.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/clock.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/clock.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/clock.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/close.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/close.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/close.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/close.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/cloudDB.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/cloudDB.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/cloudDB.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/cloudDB.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/codi_vert.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/codi_vert.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/codi_vert.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/codi_vert.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/colors.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/colors.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/colors.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/colors.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/contactPicker.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/contactPicker.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/contactPicker.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/contactPicker.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/control.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/control.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/control.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/control.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/corner.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/corner.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/corner.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/corner.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/corner_green.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/corner_green.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/corner_green.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/corner_green.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/dataFile.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/dataFile.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/dataFile.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/dataFile.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/datePicker.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/datePicker.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/datePicker.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/datePicker.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/delete.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/delete.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/delete.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/delete.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/dictionaries.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/dictionaries.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/dictionaries.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/dictionaries.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/emailPicker.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/emailPicker.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/emailPicker.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/emailPicker.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/extension.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/extension.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/extension.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/extension.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/featurecollection.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/featurecollection.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/featurecollection.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/featurecollection.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/file.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/file.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/file.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/file.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/find.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/find.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/find.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/find.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/firebaseDB.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/firebaseDB.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/firebaseDB.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/firebaseDB.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/form.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/form.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/form.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/form.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/fusiontables.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/fusiontables.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/fusiontables.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/fusiontables.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/gameClient.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/gameClient.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/gameClient.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/gameClient.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/get-app.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/get-app.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/get-app.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/get-app.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/graydient.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/graydient.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/graydient.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/graydient.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/groupGame.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/groupGame.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/groupGame.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/groupGame.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/gyroscopesensor.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/gyroscopesensor.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/gyroscopesensor.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/gyroscopesensor.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/help.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/help.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/help.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/help.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/horizontal.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/horizontal.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/horizontal.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/horizontal.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/hygrometer.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/hygrometer.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/hygrometer.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/hygrometer.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/iOSBookmarkBlack.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iOSBookmarkBlack.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/iOSBookmarkBlack.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iOSBookmarkBlack.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/iOSBookmarkWhite.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iOSBookmarkWhite.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/iOSBookmarkWhite.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iOSBookmarkWhite.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/iPadBlackFB.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iPadBlackFB.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/iPadBlackFB.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iPadBlackFB.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/iPadLeftWhiteFB.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iPadLeftWhiteFB.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/iPadLeftWhiteFB.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iPadLeftWhiteFB.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/iPadRightBlack.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iPadRightBlack.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/iPadRightBlack.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iPadRightBlack.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/iPadRightWhite.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iPadRightWhite.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/iPadRightWhite.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iPadRightWhite.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/iPhoneLeftBlack.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iPhoneLeftBlack.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/iPhoneLeftBlack.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iPhoneLeftBlack.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/iPhoneLeftWhiteFB.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iPhoneLeftWhiteFB.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/iPhoneLeftWhiteFB.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iPhoneLeftWhiteFB.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/iPhoneRightBlack.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iPhoneRightBlack.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/iPhoneRightBlack.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iPhoneRightBlack.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/iPhoneRightWhite.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iPhoneRightWhite.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/iPhoneRightWhite.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/iPhoneRightWhite.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/image.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/image.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/image.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/image.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/imagePicker.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/imagePicker.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/imagePicker.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/imagePicker.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/imageSprite.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/imageSprite.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/imageSprite.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/imageSprite.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/label.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/label.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/label.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/label.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/legoMindstormsEv3.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/legoMindstormsEv3.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/legoMindstormsEv3.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/legoMindstormsEv3.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/legoMindstormsNxt.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/legoMindstormsNxt.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/legoMindstormsNxt.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/legoMindstormsNxt.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/lightsensor.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/lightsensor.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/lightsensor.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/lightsensor.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/linestring.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/linestring.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/linestring.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/linestring.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/listPicker.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/listPicker.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/listPicker.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/listPicker.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/listView.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/listView.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/listView.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/listView.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/listbox.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/listbox.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/listbox.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/listbox.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/lists.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/lists.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/lists.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/lists.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/locationSensor.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/locationSensor.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/locationSensor.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/locationSensor.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/logger.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/logger.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/logger.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/logger.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/logic.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/logic.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/logic.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/logic.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/logo.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/logo.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/logo.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/logo.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/magneticSensor.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/magneticSensor.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/magneticSensor.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/magneticSensor.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/map.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/map.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/map.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/map.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/marker.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/marker.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/marker.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/marker.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/math.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/math.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/math.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/math.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/mediaIcon_audio.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/mediaIcon_audio.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/mediaIcon_audio.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/mediaIcon_audio.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/mediaIcon_img.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/mediaIcon_img.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/mediaIcon_img.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/mediaIcon_img.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/mediaIcon_video.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/mediaIcon_video.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/mediaIcon_video.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/mediaIcon_video.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/mediastore.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/mediastore.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/mediastore.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/mediastore.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/navigation.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/navigation.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/navigation.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/navigation.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/nearfield.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/nearfield.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/nearfield.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/nearfield.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/notifier.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/notifier.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/notifier.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/notifier.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/orientationsensor.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/orientationsensor.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/orientationsensor.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/orientationsensor.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/passwordtextbox.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/passwordtextbox.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/passwordtextbox.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/passwordtextbox.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/pedometer.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/pedometer.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/pedometer.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/pedometer.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/phoneCall.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/phoneCall.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/phoneCall.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/phoneCall.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/phoneNumberPicker.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/phoneNumberPicker.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/phoneNumberPicker.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/phoneNumberPicker.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/phonebar.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/phonebar.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/phonebar.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/phonebar.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/phonebarAndroidMaterial.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/phonebarAndroidMaterial.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/phonebarAndroidMaterial.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/phonebarAndroidMaterial.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/phoneip.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/phoneip.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/phoneip.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/phoneip.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/player.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/player.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/player.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/player.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/polygon.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/polygon.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/polygon.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/polygon.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/procedures.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/procedures.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/procedures.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/procedures.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/progressbar.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/progressbar.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/progressbar.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/progressbar.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/proximitysensor.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/proximitysensor.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/proximitysensor.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/proximitysensor.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/purr.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/purr.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/purr.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/purr.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/radiobutton.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/radiobutton.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/radiobutton.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/radiobutton.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/rectangle.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/rectangle.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/rectangle.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/rectangle.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/recyclerView.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/recyclerView.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/recyclerView.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/recyclerView.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/sharing.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/sharing.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/sharing.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/sharing.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/sky.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/sky.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/sky.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/sky.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/slider.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/slider.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/slider.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/slider.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/sound.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/sound.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/sound.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/sound.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/soundEffect.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/soundEffect.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/soundEffect.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/soundEffect.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/soundRecorder.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/soundRecorder.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/soundRecorder.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/soundRecorder.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/speechRecognizer.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/speechRecognizer.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/speechRecognizer.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/speechRecognizer.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/spin_16.gif b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/spin_16.gif
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/spin_16.gif
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/spin_16.gif
diff --git a/appinventor/appengine/src/com/google/appinventor/images/spinner.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/spinner.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/spinner.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/spinner.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/spreadsheet.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/spreadsheet.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/spreadsheet.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/spreadsheet.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/switch.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/switch.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/switch.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/switch.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/table.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/table.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/table.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/table.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/talkToMeLogo.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/talkToMeLogo.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/talkToMeLogo.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/talkToMeLogo.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/text.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/text.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/text.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/text.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/textToSpeech.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/textToSpeech.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/textToSpeech.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/textToSpeech.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/textbox.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/textbox.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/textbox.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/textbox.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/texting.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/texting.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/texting.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/texting.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/thermometer.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/thermometer.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/thermometer.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/thermometer.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/timePicker.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/timePicker.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/timePicker.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/timePicker.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/tinyDB.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/tinyDB.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/tinyDB.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/tinyDB.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/tinyWebDB.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/tinyWebDB.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/tinyWebDB.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/tinyWebDB.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/translator.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/translator.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/translator.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/translator.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/twitter.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/twitter.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/twitter.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/twitter.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/variables.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/variables.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/variables.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/variables.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/vertical.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/vertical.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/vertical.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/vertical.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/videoPlayer.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/videoPlayer.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/videoPlayer.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/videoPlayer.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/voting.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/voting.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/voting.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/voting.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/web.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/web.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/web.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/web.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/webDB.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/webDB.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/webDB.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/webDB.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/webviewer.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/webviewer.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/webviewer.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/webviewer.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/webviewerbig.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/webviewerbig.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/webviewerbig.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/webviewerbig.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/wilson.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/wilson.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/wilson.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/wilson.png
diff --git a/appinventor/appengine/src/com/google/appinventor/images/yandex.png b/appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/yandex.png
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/images/yandex.png
rename to appinventor/appengine-frontend/src/main/resources/com/google/appinventor/images/yandex.png
diff --git a/appinventor/appengine/tests/com/google/appinventor/client/MultiRegistryTest.java b/appinventor/appengine-frontend/src/test/java/com/google/appinventor/client/MultiRegistryTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/client/MultiRegistryTest.java
rename to appinventor/appengine-frontend/src/test/java/com/google/appinventor/client/MultiRegistryTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/client/OdeTest.java b/appinventor/appengine-frontend/src/test/java/com/google/appinventor/client/OdeTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/client/OdeTest.java
rename to appinventor/appengine-frontend/src/test/java/com/google/appinventor/client/OdeTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/client/RegistryTest.java b/appinventor/appengine-frontend/src/test/java/com/google/appinventor/client/RegistryTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/client/RegistryTest.java
rename to appinventor/appengine-frontend/src/test/java/com/google/appinventor/client/RegistryTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/client/editor/simple/ComponentDatabaseTest.java b/appinventor/appengine-frontend/src/test/java/com/google/appinventor/client/editor/simple/ComponentDatabaseTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/client/editor/simple/ComponentDatabaseTest.java
rename to appinventor/appengine-frontend/src/test/java/com/google/appinventor/client/editor/simple/ComponentDatabaseTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/client/editor/youngandroid/properties/ListWithNoneTest.java b/appinventor/appengine-frontend/src/test/java/com/google/appinventor/client/editor/youngandroid/properties/ListWithNoneTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/client/editor/youngandroid/properties/ListWithNoneTest.java
rename to appinventor/appengine-frontend/src/test/java/com/google/appinventor/client/editor/youngandroid/properties/ListWithNoneTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/client/explorer/project/ProjectComparatorsTest.java b/appinventor/appengine-frontend/src/test/java/com/google/appinventor/client/explorer/project/ProjectComparatorsTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/client/explorer/project/ProjectComparatorsTest.java
rename to appinventor/appengine-frontend/src/test/java/com/google/appinventor/client/explorer/project/ProjectComparatorsTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/client/youngandroid/TextValidatorsTest.java b/appinventor/appengine-frontend/src/test/java/com/google/appinventor/client/youngandroid/TextValidatorsTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/client/youngandroid/TextValidatorsTest.java
rename to appinventor/appengine-frontend/src/test/java/com/google/appinventor/client/youngandroid/TextValidatorsTest.java
diff --git a/appinventor/appengine-shared/build.gradle.kts b/appinventor/appengine-shared/build.gradle.kts
new file mode 100644
index 00000000000..a4dfc52a0f3
--- /dev/null
+++ b/appinventor/appengine-shared/build.gradle.kts
@@ -0,0 +1,27 @@
+plugins {
+ `java-library`
+ id("org.docstr.gwt.base")
+}
+
+java {
+ toolchain {
+ languageVersion.set(JavaLanguageVersion.of(8))
+ }
+}
+
+tasks.named("jar") {
+ from(project.sourceSets.main.get().allSource)
+ from(project.sourceSets.main.get().output)
+ this.duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+}
+
+gwt {
+ gwtVersion = "2.10.0"
+ modules("com.google.appinventor.shared.AppengineShared")
+}
+
+dependencies {
+ api(projects.commonUtils)
+ api(projects.componentConstants)
+ api("com.google.guava:guava-gwt:20.0")
+}
\ No newline at end of file
diff --git a/appinventor/appengine/build.xml b/appinventor/appengine-shared/build.xml
similarity index 100%
rename from appinventor/appengine/build.xml
rename to appinventor/appengine-shared/build.xml
diff --git a/appinventor/appengine/src/com/google/appinventor/rebind/ExtendedServiceProxyGenerator.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/rebind/ExtendedServiceProxyGenerator.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/rebind/ExtendedServiceProxyGenerator.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/rebind/ExtendedServiceProxyGenerator.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONArray.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONArray.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONArray.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONArray.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONBoolean.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONBoolean.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONBoolean.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONBoolean.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONEncodable.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONEncodable.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONEncodable.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONEncodable.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONNumber.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONNumber.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONNumber.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONNumber.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONObject.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONObject.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONObject.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONObject.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONParser.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONParser.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONParser.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONParser.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONString.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONString.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONString.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONString.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONUtil.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONUtil.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONUtil.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONUtil.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONValue.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONValue.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/properties/json/JSONValue.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/properties/json/JSONValue.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/AdminInterfaceException.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/AdminInterfaceException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/AdminInterfaceException.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/AdminInterfaceException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/BlocksTruncatedException.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/BlocksTruncatedException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/BlocksTruncatedException.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/BlocksTruncatedException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/GetMotdService.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/GetMotdService.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/GetMotdService.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/GetMotdService.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/GetMotdServiceAsync.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/GetMotdServiceAsync.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/GetMotdServiceAsync.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/GetMotdServiceAsync.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/InvalidSessionException.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/InvalidSessionException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/InvalidSessionException.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/InvalidSessionException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/Motd.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/Motd.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/Motd.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/Motd.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/MotdProvider.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/MotdProvider.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/MotdProvider.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/MotdProvider.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/Nonce.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/Nonce.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/Nonce.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/Nonce.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/RpcResult.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/RpcResult.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/RpcResult.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/RpcResult.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/ServerLayout.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/ServerLayout.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/ServerLayout.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/ServerLayout.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/UploadResponse.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/UploadResponse.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/UploadResponse.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/UploadResponse.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/admin/AdminInfoService.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/admin/AdminInfoService.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/admin/AdminInfoService.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/admin/AdminInfoService.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/admin/AdminInfoServiceAsync.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/admin/AdminInfoServiceAsync.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/admin/AdminInfoServiceAsync.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/admin/AdminInfoServiceAsync.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/admin/AdminUser.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/admin/AdminUser.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/admin/AdminUser.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/admin/AdminUser.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/component/Component.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/component/Component.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/component/Component.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/component/Component.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/component/ComponentImportResponse.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/component/ComponentImportResponse.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/component/ComponentImportResponse.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/component/ComponentImportResponse.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/component/ComponentService.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/component/ComponentService.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/component/ComponentService.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/component/ComponentService.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/component/ComponentServiceAsync.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/component/ComponentServiceAsync.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/component/ComponentServiceAsync.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/component/ComponentServiceAsync.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/components/FirebaseAuthService.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/components/FirebaseAuthService.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/components/FirebaseAuthService.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/components/FirebaseAuthService.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/components/FirebaseAuthServiceAsync.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/components/FirebaseAuthServiceAsync.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/components/FirebaseAuthServiceAsync.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/components/FirebaseAuthServiceAsync.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/ChecksumedFileException.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/ChecksumedFileException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/ChecksumedFileException.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/ChecksumedFileException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/ChecksumedLoadFile.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/ChecksumedLoadFile.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/ChecksumedLoadFile.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/ChecksumedLoadFile.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/FileDescriptor.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/FileDescriptor.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/FileDescriptor.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/FileDescriptor.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/FileDescriptorWithContent.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/FileDescriptorWithContent.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/FileDescriptorWithContent.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/FileDescriptorWithContent.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/FileNode.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/FileNode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/FileNode.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/FileNode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/FolderNode.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/FolderNode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/FolderNode.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/FolderNode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/HasAssetsFolder.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/HasAssetsFolder.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/HasAssetsFolder.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/HasAssetsFolder.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/NewProjectParameters.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/NewProjectParameters.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/NewProjectParameters.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/NewProjectParameters.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/PackageNode.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/PackageNode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/PackageNode.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/PackageNode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/Project.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/Project.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/Project.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/Project.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/ProjectNode.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/ProjectNode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/ProjectNode.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/ProjectNode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/ProjectRootNode.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/ProjectRootNode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/ProjectRootNode.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/ProjectRootNode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/ProjectService.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/ProjectService.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/ProjectService.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/ProjectService.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/ProjectServiceAsync.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/ProjectServiceAsync.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/ProjectServiceAsync.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/ProjectServiceAsync.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/ProjectSourceZip.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/ProjectSourceZip.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/ProjectSourceZip.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/ProjectSourceZip.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/RawFile.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/RawFile.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/RawFile.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/RawFile.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/SourceFolderNode.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/SourceFolderNode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/SourceFolderNode.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/SourceFolderNode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/SourceNode.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/SourceNode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/SourceNode.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/SourceNode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/TextFile.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/TextFile.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/TextFile.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/TextFile.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/UserProject.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/UserProject.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/UserProject.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/UserProject.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/HasComponentsFolder.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/HasComponentsFolder.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/HasComponentsFolder.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/HasComponentsFolder.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/NewYoungAndroidProjectParameters.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/NewYoungAndroidProjectParameters.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/NewYoungAndroidProjectParameters.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/NewYoungAndroidProjectParameters.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidAssetNode.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidAssetNode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidAssetNode.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidAssetNode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidAssetsFolder.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidAssetsFolder.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidAssetsFolder.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidAssetsFolder.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidBlocksNode.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidBlocksNode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidBlocksNode.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidBlocksNode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidComponentNode.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidComponentNode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidComponentNode.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidComponentNode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidComponentsFolder.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidComponentsFolder.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidComponentsFolder.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidComponentsFolder.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidFormNode.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidFormNode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidFormNode.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidFormNode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidPackageNode.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidPackageNode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidPackageNode.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidPackageNode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidProjectNode.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidProjectNode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidProjectNode.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidProjectNode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidSourceFolderNode.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidSourceFolderNode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidSourceFolderNode.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidSourceFolderNode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidSourceNode.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidSourceNode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidSourceNode.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidSourceNode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidYailNode.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidYailNode.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidYailNode.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidYailNode.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/tokenauth/TokenAuthService.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/tokenauth/TokenAuthService.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/tokenauth/TokenAuthService.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/tokenauth/TokenAuthService.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/tokenauth/TokenAuthServiceAsync.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/tokenauth/TokenAuthServiceAsync.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/tokenauth/TokenAuthServiceAsync.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/tokenauth/TokenAuthServiceAsync.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/user/Config.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/user/Config.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/user/Config.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/user/Config.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/user/SplashConfig.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/user/SplashConfig.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/user/SplashConfig.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/user/SplashConfig.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/user/User.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/user/User.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/user/User.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/user/User.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/user/UserInfoProvider.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/user/UserInfoProvider.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/user/UserInfoProvider.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/user/UserInfoProvider.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/user/UserInfoService.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/user/UserInfoService.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/user/UserInfoService.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/user/UserInfoService.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/rpc/user/UserInfoServiceAsync.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/user/UserInfoServiceAsync.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/rpc/user/UserInfoServiceAsync.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/rpc/user/UserInfoServiceAsync.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/settings/Settings.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/settings/Settings.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/settings/Settings.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/settings/Settings.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/settings/SettingsConstants.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/settings/SettingsConstants.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/settings/SettingsConstants.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/settings/SettingsConstants.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/simple/ComponentDatabaseInterface.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/simple/ComponentDatabaseInterface.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/simple/ComponentDatabaseInterface.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/simple/ComponentDatabaseInterface.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/storage/StorageUtil.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/storage/StorageUtil.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/storage/StorageUtil.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/storage/StorageUtil.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/util/AddressFormatException.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/util/AddressFormatException.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/util/AddressFormatException.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/util/AddressFormatException.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/util/Base58Util.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/util/Base58Util.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/util/Base58Util.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/util/Base58Util.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/util/Base64Util.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/util/Base64Util.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/util/Base64Util.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/util/Base64Util.java
diff --git a/appinventor/appengine/src/com/google/appinventor/shared/youngandroid/YoungAndroidSourceAnalyzer.java b/appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/youngandroid/YoungAndroidSourceAnalyzer.java
similarity index 100%
rename from appinventor/appengine/src/com/google/appinventor/shared/youngandroid/YoungAndroidSourceAnalyzer.java
rename to appinventor/appengine-shared/src/main/java/com/google/appinventor/shared/youngandroid/YoungAndroidSourceAnalyzer.java
diff --git a/appinventor/appengine-shared/src/main/resources/com/google/appinventor/shared/AppengineShared.gwt.xml b/appinventor/appengine-shared/src/main/resources/com/google/appinventor/shared/AppengineShared.gwt.xml
new file mode 100644
index 00000000000..7c8507306bd
--- /dev/null
+++ b/appinventor/appengine-shared/src/main/resources/com/google/appinventor/shared/AppengineShared.gwt.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/appinventor/appengine/tests/com/google/appinventor/shared/properties/json/JSONUtilTest.java b/appinventor/appengine-shared/src/test/java/com/google/appinventor/shared/properties/json/JSONUtilTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/shared/properties/json/JSONUtilTest.java
rename to appinventor/appengine-shared/src/test/java/com/google/appinventor/shared/properties/json/JSONUtilTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/shared/rpc/RpcResultTest.java b/appinventor/appengine-shared/src/test/java/com/google/appinventor/shared/rpc/RpcResultTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/shared/rpc/RpcResultTest.java
rename to appinventor/appengine-shared/src/test/java/com/google/appinventor/shared/rpc/RpcResultTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/shared/rpc/UploadResponseTest.java b/appinventor/appengine-shared/src/test/java/com/google/appinventor/shared/rpc/UploadResponseTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/shared/rpc/UploadResponseTest.java
rename to appinventor/appengine-shared/src/test/java/com/google/appinventor/shared/rpc/UploadResponseTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidSourceNodeTest.java b/appinventor/appengine-shared/src/test/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidSourceNodeTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidSourceNodeTest.java
rename to appinventor/appengine-shared/src/test/java/com/google/appinventor/shared/rpc/project/youngandroid/YoungAndroidSourceNodeTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/shared/settings/SettingsTest.java b/appinventor/appengine-shared/src/test/java/com/google/appinventor/shared/settings/SettingsTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/shared/settings/SettingsTest.java
rename to appinventor/appengine-shared/src/test/java/com/google/appinventor/shared/settings/SettingsTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/shared/storage/StorageUtilTest.java b/appinventor/appengine-shared/src/test/java/com/google/appinventor/shared/storage/StorageUtilTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/shared/storage/StorageUtilTest.java
rename to appinventor/appengine-shared/src/test/java/com/google/appinventor/shared/storage/StorageUtilTest.java
diff --git a/appinventor/appengine/tests/com/google/appinventor/shared/youngandroid/YoungAndroidSourceAnalyzerTest.java b/appinventor/appengine-shared/src/test/java/com/google/appinventor/shared/youngandroid/YoungAndroidSourceAnalyzerTest.java
similarity index 100%
rename from appinventor/appengine/tests/com/google/appinventor/shared/youngandroid/YoungAndroidSourceAnalyzerTest.java
rename to appinventor/appengine-shared/src/test/java/com/google/appinventor/shared/youngandroid/YoungAndroidSourceAnalyzerTest.java
diff --git a/appinventor/appengine/war/Ya_tos_form.html b/appinventor/appengine-shared/war/Ya_tos_form.html
similarity index 100%
rename from appinventor/appengine/war/Ya_tos_form.html
rename to appinventor/appengine-shared/war/Ya_tos_form.html
diff --git a/appinventor/appengine/war/favicon.ico b/appinventor/appengine-shared/war/favicon.ico
similarity index 100%
rename from appinventor/appengine/war/favicon.ico
rename to appinventor/appengine-shared/war/favicon.ico
diff --git a/appinventor/appengine/war/index.html b/appinventor/appengine-shared/war/index.html
similarity index 100%
rename from appinventor/appengine/war/index.html
rename to appinventor/appengine-shared/war/index.html
diff --git a/appinventor/appengine/war/login.jsp b/appinventor/appengine-shared/war/login.jsp
similarity index 100%
rename from appinventor/appengine/war/login.jsp
rename to appinventor/appengine-shared/war/login.jsp
diff --git a/appinventor/appengine/war/static/css/DarkTheme.css b/appinventor/appengine-shared/war/static/css/DarkTheme.css
similarity index 100%
rename from appinventor/appengine/war/static/css/DarkTheme.css
rename to appinventor/appengine-shared/war/static/css/DarkTheme.css
diff --git a/appinventor/appengine/war/static/css/Ya.css b/appinventor/appengine-shared/war/static/css/Ya.css
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/css/Ya.css
rename to appinventor/appengine-shared/war/static/css/Ya.css
diff --git a/appinventor/appengine/war/static/css/all.css b/appinventor/appengine-shared/war/static/css/all.css
similarity index 100%
rename from appinventor/appengine/war/static/css/all.css
rename to appinventor/appengine-shared/war/static/css/all.css
diff --git a/appinventor/appengine/war/static/css/android_holo.css b/appinventor/appengine-shared/war/static/css/android_holo.css
similarity index 100%
rename from appinventor/appengine/war/static/css/android_holo.css
rename to appinventor/appengine-shared/war/static/css/android_holo.css
diff --git a/appinventor/appengine/war/static/css/android_material.css b/appinventor/appengine-shared/war/static/css/android_material.css
similarity index 100%
rename from appinventor/appengine/war/static/css/android_material.css
rename to appinventor/appengine-shared/war/static/css/android_material.css
diff --git a/appinventor/appengine/war/static/css/bootstrap.min.css b/appinventor/appengine-shared/war/static/css/bootstrap.min.css
similarity index 100%
rename from appinventor/appengine/war/static/css/bootstrap.min.css
rename to appinventor/appengine-shared/war/static/css/bootstrap.min.css
diff --git a/appinventor/appengine/war/static/css/fonts.css b/appinventor/appengine-shared/war/static/css/fonts.css
similarity index 100%
rename from appinventor/appengine/war/static/css/fonts.css
rename to appinventor/appengine-shared/war/static/css/fonts.css
diff --git a/appinventor/appengine/war/static/css/gwt.css b/appinventor/appengine-shared/war/static/css/gwt.css
similarity index 100%
rename from appinventor/appengine/war/static/css/gwt.css
rename to appinventor/appengine-shared/war/static/css/gwt.css
diff --git a/appinventor/appengine/war/static/css/iOS.css b/appinventor/appengine-shared/war/static/css/iOS.css
similarity index 100%
rename from appinventor/appengine/war/static/css/iOS.css
rename to appinventor/appengine-shared/war/static/css/iOS.css
diff --git a/appinventor/appengine/war/static/css/mit_app_inventor.css b/appinventor/appengine-shared/war/static/css/mit_app_inventor.css
similarity index 100%
rename from appinventor/appengine/war/static/css/mit_app_inventor.css
rename to appinventor/appengine-shared/war/static/css/mit_app_inventor.css
diff --git a/appinventor/appengine/war/static/fonts/Helvetica.ttf b/appinventor/appengine-shared/war/static/fonts/Helvetica.ttf
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Helvetica.ttf
rename to appinventor/appengine-shared/war/static/fonts/Helvetica.ttf
diff --git a/appinventor/appengine/war/static/fonts/OpenDyslexic-Bold.otf b/appinventor/appengine-shared/war/static/fonts/OpenDyslexic-Bold.otf
similarity index 100%
rename from appinventor/appengine/war/static/fonts/OpenDyslexic-Bold.otf
rename to appinventor/appengine-shared/war/static/fonts/OpenDyslexic-Bold.otf
diff --git a/appinventor/appengine/war/static/fonts/OpenDyslexic-Regular.otf b/appinventor/appengine-shared/war/static/fonts/OpenDyslexic-Regular.otf
similarity index 100%
rename from appinventor/appengine/war/static/fonts/OpenDyslexic-Regular.otf
rename to appinventor/appengine-shared/war/static/fonts/OpenDyslexic-Regular.otf
diff --git a/appinventor/appengine/war/static/fonts/Roboto-Black.ttf b/appinventor/appengine-shared/war/static/fonts/Roboto-Black.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Roboto-Black.ttf
rename to appinventor/appengine-shared/war/static/fonts/Roboto-Black.ttf
diff --git a/appinventor/appengine/war/static/fonts/Roboto-BlackItalic.ttf b/appinventor/appengine-shared/war/static/fonts/Roboto-BlackItalic.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Roboto-BlackItalic.ttf
rename to appinventor/appengine-shared/war/static/fonts/Roboto-BlackItalic.ttf
diff --git a/appinventor/appengine/war/static/fonts/Roboto-Bold.ttf b/appinventor/appengine-shared/war/static/fonts/Roboto-Bold.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Roboto-Bold.ttf
rename to appinventor/appengine-shared/war/static/fonts/Roboto-Bold.ttf
diff --git a/appinventor/appengine/war/static/fonts/Roboto-BoldCondensed.ttf b/appinventor/appengine-shared/war/static/fonts/Roboto-BoldCondensed.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Roboto-BoldCondensed.ttf
rename to appinventor/appengine-shared/war/static/fonts/Roboto-BoldCondensed.ttf
diff --git a/appinventor/appengine/war/static/fonts/Roboto-BoldCondensedItalic.ttf b/appinventor/appengine-shared/war/static/fonts/Roboto-BoldCondensedItalic.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Roboto-BoldCondensedItalic.ttf
rename to appinventor/appengine-shared/war/static/fonts/Roboto-BoldCondensedItalic.ttf
diff --git a/appinventor/appengine/war/static/fonts/Roboto-BoldItalic.ttf b/appinventor/appengine-shared/war/static/fonts/Roboto-BoldItalic.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Roboto-BoldItalic.ttf
rename to appinventor/appengine-shared/war/static/fonts/Roboto-BoldItalic.ttf
diff --git a/appinventor/appengine/war/static/fonts/Roboto-Condensed.ttf b/appinventor/appengine-shared/war/static/fonts/Roboto-Condensed.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Roboto-Condensed.ttf
rename to appinventor/appengine-shared/war/static/fonts/Roboto-Condensed.ttf
diff --git a/appinventor/appengine/war/static/fonts/Roboto-CondensedItalic.ttf b/appinventor/appengine-shared/war/static/fonts/Roboto-CondensedItalic.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Roboto-CondensedItalic.ttf
rename to appinventor/appengine-shared/war/static/fonts/Roboto-CondensedItalic.ttf
diff --git a/appinventor/appengine/war/static/fonts/Roboto-Italic.ttf b/appinventor/appengine-shared/war/static/fonts/Roboto-Italic.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Roboto-Italic.ttf
rename to appinventor/appengine-shared/war/static/fonts/Roboto-Italic.ttf
diff --git a/appinventor/appengine/war/static/fonts/Roboto-Light.ttf b/appinventor/appengine-shared/war/static/fonts/Roboto-Light.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Roboto-Light.ttf
rename to appinventor/appengine-shared/war/static/fonts/Roboto-Light.ttf
diff --git a/appinventor/appengine/war/static/fonts/Roboto-LightItalic.ttf b/appinventor/appengine-shared/war/static/fonts/Roboto-LightItalic.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Roboto-LightItalic.ttf
rename to appinventor/appengine-shared/war/static/fonts/Roboto-LightItalic.ttf
diff --git a/appinventor/appengine/war/static/fonts/Roboto-Medium.ttf b/appinventor/appengine-shared/war/static/fonts/Roboto-Medium.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Roboto-Medium.ttf
rename to appinventor/appengine-shared/war/static/fonts/Roboto-Medium.ttf
diff --git a/appinventor/appengine/war/static/fonts/Roboto-MediumItalic.ttf b/appinventor/appengine-shared/war/static/fonts/Roboto-MediumItalic.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Roboto-MediumItalic.ttf
rename to appinventor/appengine-shared/war/static/fonts/Roboto-MediumItalic.ttf
diff --git a/appinventor/appengine/war/static/fonts/Roboto-Regular.ttf b/appinventor/appengine-shared/war/static/fonts/Roboto-Regular.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Roboto-Regular.ttf
rename to appinventor/appengine-shared/war/static/fonts/Roboto-Regular.ttf
diff --git a/appinventor/appengine/war/static/fonts/Roboto-Thin.ttf b/appinventor/appengine-shared/war/static/fonts/Roboto-Thin.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Roboto-Thin.ttf
rename to appinventor/appengine-shared/war/static/fonts/Roboto-Thin.ttf
diff --git a/appinventor/appengine/war/static/fonts/Roboto-ThinItalic.ttf b/appinventor/appengine-shared/war/static/fonts/Roboto-ThinItalic.ttf
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/fonts/Roboto-ThinItalic.ttf
rename to appinventor/appengine-shared/war/static/fonts/Roboto-ThinItalic.ttf
diff --git a/appinventor/appengine/war/static/images/background.gif b/appinventor/appengine-shared/war/static/images/background.gif
similarity index 100%
rename from appinventor/appengine/war/static/images/background.gif
rename to appinventor/appengine-shared/war/static/images/background.gif
diff --git a/appinventor/appengine/war/static/images/cc3.png b/appinventor/appengine-shared/war/static/images/cc3.png
similarity index 100%
rename from appinventor/appengine/war/static/images/cc3.png
rename to appinventor/appengine-shared/war/static/images/cc3.png
diff --git a/appinventor/appengine/war/static/images/codi_long.png b/appinventor/appengine-shared/war/static/images/codi_long.png
similarity index 100%
rename from appinventor/appengine/war/static/images/codi_long.png
rename to appinventor/appengine-shared/war/static/images/codi_long.png
diff --git a/appinventor/appengine/war/static/images/corner.png b/appinventor/appengine-shared/war/static/images/corner.png
similarity index 100%
rename from appinventor/appengine/war/static/images/corner.png
rename to appinventor/appengine-shared/war/static/images/corner.png
diff --git a/appinventor/appengine/war/static/images/corner_ie6.png b/appinventor/appengine-shared/war/static/images/corner_ie6.png
similarity index 100%
rename from appinventor/appengine/war/static/images/corner_ie6.png
rename to appinventor/appengine-shared/war/static/images/corner_ie6.png
diff --git a/appinventor/appengine/war/static/images/hborder.png b/appinventor/appengine-shared/war/static/images/hborder.png
similarity index 100%
rename from appinventor/appengine/war/static/images/hborder.png
rename to appinventor/appengine-shared/war/static/images/hborder.png
diff --git a/appinventor/appengine/war/static/images/hborder_ie6.png b/appinventor/appengine-shared/war/static/images/hborder_ie6.png
similarity index 100%
rename from appinventor/appengine/war/static/images/hborder_ie6.png
rename to appinventor/appengine-shared/war/static/images/hborder_ie6.png
diff --git a/appinventor/appengine/war/static/images/iOSLandscapeMonitor.png b/appinventor/appengine-shared/war/static/images/iOSLandscapeMonitor.png
similarity index 100%
rename from appinventor/appengine/war/static/images/iOSLandscapeMonitor.png
rename to appinventor/appengine-shared/war/static/images/iOSLandscapeMonitor.png
diff --git a/appinventor/appengine/war/static/images/iOSLandscapeTablet.png b/appinventor/appengine-shared/war/static/images/iOSLandscapeTablet.png
similarity index 100%
rename from appinventor/appengine/war/static/images/iOSLandscapeTablet.png
rename to appinventor/appengine-shared/war/static/images/iOSLandscapeTablet.png
diff --git a/appinventor/appengine/war/static/images/iOSPortraitMonitor.png b/appinventor/appengine-shared/war/static/images/iOSPortraitMonitor.png
similarity index 100%
rename from appinventor/appengine/war/static/images/iOSPortraitMonitor.png
rename to appinventor/appengine-shared/war/static/images/iOSPortraitMonitor.png
diff --git a/appinventor/appengine/war/static/images/iOSPortraitTablet.png b/appinventor/appengine-shared/war/static/images/iOSPortraitTablet.png
similarity index 100%
rename from appinventor/appengine/war/static/images/iOSPortraitTablet.png
rename to appinventor/appengine-shared/war/static/images/iOSPortraitTablet.png
diff --git a/appinventor/appengine/war/static/images/iPhoneXLandscape.png b/appinventor/appengine-shared/war/static/images/iPhoneXLandscape.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/images/iPhoneXLandscape.png
rename to appinventor/appengine-shared/war/static/images/iPhoneXLandscape.png
diff --git a/appinventor/appengine/war/static/images/iPhoneXPotrait.png b/appinventor/appengine-shared/war/static/images/iPhoneXPotrait.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/images/iPhoneXPotrait.png
rename to appinventor/appengine-shared/war/static/images/iPhoneXPotrait.png
diff --git a/appinventor/appengine/war/static/images/ie6/corner_dialog_topleft.png b/appinventor/appengine-shared/war/static/images/ie6/corner_dialog_topleft.png
similarity index 100%
rename from appinventor/appengine/war/static/images/ie6/corner_dialog_topleft.png
rename to appinventor/appengine-shared/war/static/images/ie6/corner_dialog_topleft.png
diff --git a/appinventor/appengine/war/static/images/ie6/corner_dialog_topright.png b/appinventor/appengine-shared/war/static/images/ie6/corner_dialog_topright.png
similarity index 100%
rename from appinventor/appengine/war/static/images/ie6/corner_dialog_topright.png
rename to appinventor/appengine-shared/war/static/images/ie6/corner_dialog_topright.png
diff --git a/appinventor/appengine/war/static/images/ie6/hborder_blue_shadow.png b/appinventor/appengine-shared/war/static/images/ie6/hborder_blue_shadow.png
similarity index 100%
rename from appinventor/appengine/war/static/images/ie6/hborder_blue_shadow.png
rename to appinventor/appengine-shared/war/static/images/ie6/hborder_blue_shadow.png
diff --git a/appinventor/appengine/war/static/images/ie6/hborder_gray_shadow.png b/appinventor/appengine-shared/war/static/images/ie6/hborder_gray_shadow.png
similarity index 100%
rename from appinventor/appengine/war/static/images/ie6/hborder_gray_shadow.png
rename to appinventor/appengine-shared/war/static/images/ie6/hborder_gray_shadow.png
diff --git a/appinventor/appengine/war/static/images/ie6/vborder_blue_shadow.png b/appinventor/appengine-shared/war/static/images/ie6/vborder_blue_shadow.png
similarity index 100%
rename from appinventor/appengine/war/static/images/ie6/vborder_blue_shadow.png
rename to appinventor/appengine-shared/war/static/images/ie6/vborder_blue_shadow.png
diff --git a/appinventor/appengine/war/static/images/ie6/vborder_gray_shadow.png b/appinventor/appengine-shared/war/static/images/ie6/vborder_gray_shadow.png
similarity index 100%
rename from appinventor/appengine/war/static/images/ie6/vborder_gray_shadow.png
rename to appinventor/appengine-shared/war/static/images/ie6/vborder_gray_shadow.png
diff --git a/appinventor/appengine/war/static/images/languages.svg b/appinventor/appengine-shared/war/static/images/languages.svg
similarity index 100%
rename from appinventor/appengine/war/static/images/languages.svg
rename to appinventor/appengine-shared/war/static/images/languages.svg
diff --git a/appinventor/appengine/war/static/images/leftArrow.png b/appinventor/appengine-shared/war/static/images/leftArrow.png
similarity index 100%
rename from appinventor/appengine/war/static/images/leftArrow.png
rename to appinventor/appengine-shared/war/static/images/leftArrow.png
diff --git a/appinventor/appengine/war/static/images/login-app-inventor.jpg b/appinventor/appengine-shared/war/static/images/login-app-inventor.jpg
similarity index 100%
rename from appinventor/appengine/war/static/images/login-app-inventor.jpg
rename to appinventor/appengine-shared/war/static/images/login-app-inventor.jpg
diff --git a/appinventor/appengine/war/static/images/logo.png b/appinventor/appengine-shared/war/static/images/logo.png
similarity index 100%
rename from appinventor/appengine/war/static/images/logo.png
rename to appinventor/appengine-shared/war/static/images/logo.png
diff --git a/appinventor/appengine/war/static/images/logo2.png b/appinventor/appengine-shared/war/static/images/logo2.png
similarity index 100%
rename from appinventor/appengine/war/static/images/logo2.png
rename to appinventor/appengine-shared/war/static/images/logo2.png
diff --git a/appinventor/appengine/war/static/images/logo_16.png b/appinventor/appengine-shared/war/static/images/logo_16.png
similarity index 100%
rename from appinventor/appengine/war/static/images/logo_16.png
rename to appinventor/appengine-shared/war/static/images/logo_16.png
diff --git a/appinventor/appengine/war/static/images/logo_experimental.png b/appinventor/appengine-shared/war/static/images/logo_experimental.png
similarity index 100%
rename from appinventor/appengine/war/static/images/logo_experimental.png
rename to appinventor/appengine-shared/war/static/images/logo_experimental.png
diff --git a/appinventor/appengine/war/static/images/logo_ya.png b/appinventor/appengine-shared/war/static/images/logo_ya.png
similarity index 100%
rename from appinventor/appengine/war/static/images/logo_ya.png
rename to appinventor/appengine-shared/war/static/images/logo_ya.png
diff --git a/appinventor/appengine/war/static/images/logo_ya_experimental.png b/appinventor/appengine-shared/war/static/images/logo_ya_experimental.png
similarity index 100%
rename from appinventor/appengine/war/static/images/logo_ya_experimental.png
rename to appinventor/appengine-shared/war/static/images/logo_ya_experimental.png
diff --git a/appinventor/appengine/war/static/images/myprojects.png b/appinventor/appengine-shared/war/static/images/myprojects.png
similarity index 100%
rename from appinventor/appengine/war/static/images/myprojects.png
rename to appinventor/appengine-shared/war/static/images/myprojects.png
diff --git a/appinventor/appengine/war/static/images/mzl.png b/appinventor/appengine-shared/war/static/images/mzl.png
similarity index 100%
rename from appinventor/appengine/war/static/images/mzl.png
rename to appinventor/appengine-shared/war/static/images/mzl.png
diff --git a/appinventor/appengine/war/static/images/navigationbarLandscape.png b/appinventor/appengine-shared/war/static/images/navigationbarLandscape.png
similarity index 100%
rename from appinventor/appengine/war/static/images/navigationbarLandscape.png
rename to appinventor/appengine-shared/war/static/images/navigationbarLandscape.png
diff --git a/appinventor/appengine/war/static/images/navigationbarPortrait.png b/appinventor/appengine-shared/war/static/images/navigationbarPortrait.png
similarity index 100%
rename from appinventor/appengine/war/static/images/navigationbarPortrait.png
rename to appinventor/appengine-shared/war/static/images/navigationbarPortrait.png
diff --git a/appinventor/appengine/war/static/images/numComment.png b/appinventor/appengine-shared/war/static/images/numComment.png
similarity index 100%
rename from appinventor/appengine/war/static/images/numComment.png
rename to appinventor/appengine-shared/war/static/images/numComment.png
diff --git a/appinventor/appengine/war/static/images/numDownload.png b/appinventor/appengine-shared/war/static/images/numDownload.png
similarity index 100%
rename from appinventor/appengine/war/static/images/numDownload.png
rename to appinventor/appengine-shared/war/static/images/numDownload.png
diff --git a/appinventor/appengine/war/static/images/numLike.png b/appinventor/appengine-shared/war/static/images/numLike.png
similarity index 100%
rename from appinventor/appengine/war/static/images/numLike.png
rename to appinventor/appengine-shared/war/static/images/numLike.png
diff --git a/appinventor/appengine/war/static/images/numLikeHollow.png b/appinventor/appengine-shared/war/static/images/numLikeHollow.png
similarity index 100%
rename from appinventor/appengine/war/static/images/numLikeHollow.png
rename to appinventor/appengine-shared/war/static/images/numLikeHollow.png
diff --git a/appinventor/appengine/war/static/images/numView.png b/appinventor/appengine-shared/war/static/images/numView.png
similarity index 100%
rename from appinventor/appengine/war/static/images/numView.png
rename to appinventor/appengine-shared/war/static/images/numView.png
diff --git a/appinventor/appengine/war/static/images/person.png b/appinventor/appengine-shared/war/static/images/person.png
similarity index 100%
rename from appinventor/appengine/war/static/images/person.png
rename to appinventor/appengine-shared/war/static/images/person.png
diff --git a/appinventor/appengine/war/static/images/phoneLandscape.png b/appinventor/appengine-shared/war/static/images/phoneLandscape.png
similarity index 100%
rename from appinventor/appengine/war/static/images/phoneLandscape.png
rename to appinventor/appengine-shared/war/static/images/phoneLandscape.png
diff --git a/appinventor/appengine/war/static/images/phoneLandscapeMonitor.png b/appinventor/appengine-shared/war/static/images/phoneLandscapeMonitor.png
similarity index 100%
rename from appinventor/appengine/war/static/images/phoneLandscapeMonitor.png
rename to appinventor/appengine-shared/war/static/images/phoneLandscapeMonitor.png
diff --git a/appinventor/appengine/war/static/images/phoneLandscapeTablet.png b/appinventor/appengine-shared/war/static/images/phoneLandscapeTablet.png
similarity index 100%
rename from appinventor/appengine/war/static/images/phoneLandscapeTablet.png
rename to appinventor/appengine-shared/war/static/images/phoneLandscapeTablet.png
diff --git a/appinventor/appengine/war/static/images/phonePortrait.png b/appinventor/appengine-shared/war/static/images/phonePortrait.png
similarity index 100%
rename from appinventor/appengine/war/static/images/phonePortrait.png
rename to appinventor/appengine-shared/war/static/images/phonePortrait.png
diff --git a/appinventor/appengine/war/static/images/phonePortraitMonitor.png b/appinventor/appengine-shared/war/static/images/phonePortraitMonitor.png
similarity index 100%
rename from appinventor/appengine/war/static/images/phonePortraitMonitor.png
rename to appinventor/appengine-shared/war/static/images/phonePortraitMonitor.png
diff --git a/appinventor/appengine/war/static/images/phonePortraitTablet.png b/appinventor/appengine-shared/war/static/images/phonePortraitTablet.png
similarity index 100%
rename from appinventor/appengine/war/static/images/phonePortraitTablet.png
rename to appinventor/appengine-shared/war/static/images/phonePortraitTablet.png
diff --git a/appinventor/appengine/war/static/images/rightArrow.png b/appinventor/appengine-shared/war/static/images/rightArrow.png
similarity index 100%
rename from appinventor/appengine/war/static/images/rightArrow.png
rename to appinventor/appengine-shared/war/static/images/rightArrow.png
diff --git a/appinventor/appengine/war/static/images/rpcMessageCorners.png b/appinventor/appengine-shared/war/static/images/rpcMessageCorners.png
old mode 100755
new mode 100644
similarity index 100%
rename from appinventor/appengine/war/static/images/rpcMessageCorners.png
rename to appinventor/appengine-shared/war/static/images/rpcMessageCorners.png
diff --git a/appinventor/appengine/war/static/images/splitPanelThumb.png b/appinventor/appengine-shared/war/static/images/splitPanelThumb.png
similarity index 100%
rename from appinventor/appengine/war/static/images/splitPanelThumb.png
rename to appinventor/appengine-shared/war/static/images/splitPanelThumb.png
diff --git a/appinventor/appengine/war/static/images/squairy_light.png b/appinventor/appengine-shared/war/static/images/squairy_light.png
similarity index 100%
rename from appinventor/appengine/war/static/images/squairy_light.png
rename to appinventor/appengine-shared/war/static/images/squairy_light.png
diff --git a/appinventor/appengine/war/static/images/toolbarBG.png b/appinventor/appengine-shared/war/static/images/toolbarBG.png
similarity index 100%
rename from appinventor/appengine/war/static/images/toolbarBG.png
rename to appinventor/appengine-shared/war/static/images/toolbarBG.png
diff --git a/appinventor/appengine/war/static/images/vborder.png b/appinventor/appengine-shared/war/static/images/vborder.png
similarity index 100%
rename from appinventor/appengine/war/static/images/vborder.png
rename to appinventor/appengine-shared/war/static/images/vborder.png
diff --git a/appinventor/appengine/war/static/images/vborder_ie6.png b/appinventor/appengine-shared/war/static/images/vborder_ie6.png
similarity index 100%
rename from appinventor/appengine/war/static/images/vborder_ie6.png
rename to appinventor/appengine-shared/war/static/images/vborder_ie6.png
diff --git a/appinventor/appengine/war/static/images/watermark.png b/appinventor/appengine-shared/war/static/images/watermark.png
similarity index 100%
rename from appinventor/appengine/war/static/images/watermark.png
rename to appinventor/appengine-shared/war/static/images/watermark.png
diff --git a/appinventor/appengine/war/static/js/bootstrap.min.js b/appinventor/appengine-shared/war/static/js/bootstrap.min.js
similarity index 100%
rename from appinventor/appengine/war/static/js/bootstrap.min.js
rename to appinventor/appengine-shared/war/static/js/bootstrap.min.js
diff --git a/appinventor/appengine/war/static/js/jquery-3.3.1.slim.min.js b/appinventor/appengine-shared/war/static/js/jquery-3.3.1.slim.min.js
similarity index 100%
rename from appinventor/appengine/war/static/js/jquery-3.3.1.slim.min.js
rename to appinventor/appengine-shared/war/static/js/jquery-3.3.1.slim.min.js
diff --git a/appinventor/appengine/war/static/js/popper.min.js b/appinventor/appengine-shared/war/static/js/popper.min.js
similarity index 100%
rename from appinventor/appengine/war/static/js/popper.min.js
rename to appinventor/appengine-shared/war/static/js/popper.min.js
diff --git a/appinventor/appengine/war/static/js/tos.js b/appinventor/appengine-shared/war/static/js/tos.js
similarity index 100%
rename from appinventor/appengine/war/static/js/tos.js
rename to appinventor/appengine-shared/war/static/js/tos.js
diff --git a/appinventor/appengine/war/static/js/widgets.js b/appinventor/appengine-shared/war/static/js/widgets.js
similarity index 100%
rename from appinventor/appengine/war/static/js/widgets.js
rename to appinventor/appengine-shared/war/static/js/widgets.js
diff --git a/appinventor/appengine/war/templates/DIYBookClub/DIYBookClub.json b/appinventor/appengine-shared/war/templates/DIYBookClub/DIYBookClub.json
similarity index 100%
rename from appinventor/appengine/war/templates/DIYBookClub/DIYBookClub.json
rename to appinventor/appengine-shared/war/templates/DIYBookClub/DIYBookClub.json
diff --git a/appinventor/appengine/war/templates/DIYBookClub/DIYBookClub.zip b/appinventor/appengine-shared/war/templates/DIYBookClub/DIYBookClub.zip
similarity index 100%
rename from appinventor/appengine/war/templates/DIYBookClub/DIYBookClub.zip
rename to appinventor/appengine-shared/war/templates/DIYBookClub/DIYBookClub.zip
diff --git a/appinventor/appengine/war/templates/DIYBookClub/screenshot.png b/appinventor/appengine-shared/war/templates/DIYBookClub/screenshot.png
similarity index 100%
rename from appinventor/appengine/war/templates/DIYBookClub/screenshot.png
rename to appinventor/appengine-shared/war/templates/DIYBookClub/screenshot.png
diff --git a/appinventor/appengine/war/templates/DIYBookClub/thumbnail.png b/appinventor/appengine-shared/war/templates/DIYBookClub/thumbnail.png
similarity index 100%
rename from appinventor/appengine/war/templates/DIYBookClub/thumbnail.png
rename to appinventor/appengine-shared/war/templates/DIYBookClub/thumbnail.png
diff --git a/appinventor/appengine/war/templates/DontGetFaked/DontGetFaked.json b/appinventor/appengine-shared/war/templates/DontGetFaked/DontGetFaked.json
similarity index 100%
rename from appinventor/appengine/war/templates/DontGetFaked/DontGetFaked.json
rename to appinventor/appengine-shared/war/templates/DontGetFaked/DontGetFaked.json
diff --git a/appinventor/appengine/war/templates/DontGetFaked/DontGetFaked.zip b/appinventor/appengine-shared/war/templates/DontGetFaked/DontGetFaked.zip
similarity index 100%
rename from appinventor/appengine/war/templates/DontGetFaked/DontGetFaked.zip
rename to appinventor/appengine-shared/war/templates/DontGetFaked/DontGetFaked.zip
diff --git a/appinventor/appengine/war/templates/DontGetFaked/screenshot.png b/appinventor/appengine-shared/war/templates/DontGetFaked/screenshot.png
similarity index 100%
rename from appinventor/appengine/war/templates/DontGetFaked/screenshot.png
rename to appinventor/appengine-shared/war/templates/DontGetFaked/screenshot.png
diff --git a/appinventor/appengine/war/templates/DontGetFaked/thumbnail.png b/appinventor/appengine-shared/war/templates/DontGetFaked/thumbnail.png
similarity index 100%
rename from appinventor/appengine/war/templates/DontGetFaked/thumbnail.png
rename to appinventor/appengine-shared/war/templates/DontGetFaked/thumbnail.png
diff --git a/appinventor/appengine/war/templates/HelloPurr/HelloPurr.json b/appinventor/appengine-shared/war/templates/HelloPurr/HelloPurr.json
similarity index 100%
rename from appinventor/appengine/war/templates/HelloPurr/HelloPurr.json
rename to appinventor/appengine-shared/war/templates/HelloPurr/HelloPurr.json
diff --git a/appinventor/appengine/war/templates/HelloPurr/HelloPurr.zip b/appinventor/appengine-shared/war/templates/HelloPurr/HelloPurr.zip
similarity index 100%
rename from appinventor/appengine/war/templates/HelloPurr/HelloPurr.zip
rename to appinventor/appengine-shared/war/templates/HelloPurr/HelloPurr.zip
diff --git a/appinventor/appengine/war/templates/HelloPurr/index.html b/appinventor/appengine-shared/war/templates/HelloPurr/index.html
similarity index 100%
rename from appinventor/appengine/war/templates/HelloPurr/index.html
rename to appinventor/appengine-shared/war/templates/HelloPurr/index.html
diff --git a/appinventor/appengine/war/templates/HelloPurr/screenshot.png b/appinventor/appengine-shared/war/templates/HelloPurr/screenshot.png
similarity index 100%
rename from appinventor/appengine/war/templates/HelloPurr/screenshot.png
rename to appinventor/appengine-shared/war/templates/HelloPurr/screenshot.png
diff --git a/appinventor/appengine/war/templates/HelloPurr/thumbnail.png b/appinventor/appengine-shared/war/templates/HelloPurr/thumbnail.png
similarity index 100%
rename from appinventor/appengine/war/templates/HelloPurr/thumbnail.png
rename to appinventor/appengine-shared/war/templates/HelloPurr/thumbnail.png
diff --git a/appinventor/appengine/war/templates/HelloPurrStarter/HelloPurrStarter.json b/appinventor/appengine-shared/war/templates/HelloPurrStarter/HelloPurrStarter.json
similarity index 100%
rename from appinventor/appengine/war/templates/HelloPurrStarter/HelloPurrStarter.json
rename to appinventor/appengine-shared/war/templates/HelloPurrStarter/HelloPurrStarter.json
diff --git a/appinventor/appengine/war/templates/HelloPurrStarter/HelloPurrStarter.zip b/appinventor/appengine-shared/war/templates/HelloPurrStarter/HelloPurrStarter.zip
similarity index 100%
rename from appinventor/appengine/war/templates/HelloPurrStarter/HelloPurrStarter.zip
rename to appinventor/appengine-shared/war/templates/HelloPurrStarter/HelloPurrStarter.zip
diff --git a/appinventor/appengine/war/templates/MapTheMovement/MapTheMovement.json b/appinventor/appengine-shared/war/templates/MapTheMovement/MapTheMovement.json
similarity index 100%
rename from appinventor/appengine/war/templates/MapTheMovement/MapTheMovement.json
rename to appinventor/appengine-shared/war/templates/MapTheMovement/MapTheMovement.json
diff --git a/appinventor/appengine/war/templates/MapTheMovement/MapTheMovement.zip b/appinventor/appengine-shared/war/templates/MapTheMovement/MapTheMovement.zip
similarity index 100%
rename from appinventor/appengine/war/templates/MapTheMovement/MapTheMovement.zip
rename to appinventor/appengine-shared/war/templates/MapTheMovement/MapTheMovement.zip
diff --git a/appinventor/appengine/war/templates/MapTheMovement/screenshot.png b/appinventor/appengine-shared/war/templates/MapTheMovement/screenshot.png
similarity index 100%
rename from appinventor/appengine/war/templates/MapTheMovement/screenshot.png
rename to appinventor/appengine-shared/war/templates/MapTheMovement/screenshot.png
diff --git a/appinventor/appengine/war/templates/MapTheMovement/thumbnail.png b/appinventor/appengine-shared/war/templates/MapTheMovement/thumbnail.png
similarity index 100%
rename from appinventor/appengine/war/templates/MapTheMovement/thumbnail.png
rename to appinventor/appengine-shared/war/templates/MapTheMovement/thumbnail.png
diff --git a/appinventor/appengine/war/templates/MoodRing/MoodRing.json b/appinventor/appengine-shared/war/templates/MoodRing/MoodRing.json
similarity index 100%
rename from appinventor/appengine/war/templates/MoodRing/MoodRing.json
rename to appinventor/appengine-shared/war/templates/MoodRing/MoodRing.json
diff --git a/appinventor/appengine/war/templates/MoodRing/MoodRing.zip b/appinventor/appengine-shared/war/templates/MoodRing/MoodRing.zip
similarity index 100%
rename from appinventor/appengine/war/templates/MoodRing/MoodRing.zip
rename to appinventor/appengine-shared/war/templates/MoodRing/MoodRing.zip
diff --git a/appinventor/appengine/war/templates/MoodRing/screenshot.png b/appinventor/appengine-shared/war/templates/MoodRing/screenshot.png
similarity index 100%
rename from appinventor/appengine/war/templates/MoodRing/screenshot.png
rename to appinventor/appengine-shared/war/templates/MoodRing/screenshot.png
diff --git a/appinventor/appengine/war/templates/MoodRing/thumbnail.png b/appinventor/appengine-shared/war/templates/MoodRing/thumbnail.png
similarity index 100%
rename from appinventor/appengine/war/templates/MoodRing/thumbnail.png
rename to appinventor/appengine-shared/war/templates/MoodRing/thumbnail.png
diff --git a/appinventor/appengine/war/templates/MyToDoList/MyToDoList.json b/appinventor/appengine-shared/war/templates/MyToDoList/MyToDoList.json
similarity index 100%
rename from appinventor/appengine/war/templates/MyToDoList/MyToDoList.json
rename to appinventor/appengine-shared/war/templates/MyToDoList/MyToDoList.json
diff --git a/appinventor/appengine/war/templates/MyToDoList/MyToDoList.zip b/appinventor/appengine-shared/war/templates/MyToDoList/MyToDoList.zip
similarity index 100%
rename from appinventor/appengine/war/templates/MyToDoList/MyToDoList.zip
rename to appinventor/appengine-shared/war/templates/MyToDoList/MyToDoList.zip
diff --git a/appinventor/appengine/war/templates/MyToDoList/screenshot.png b/appinventor/appengine-shared/war/templates/MyToDoList/screenshot.png
similarity index 100%
rename from appinventor/appengine/war/templates/MyToDoList/screenshot.png
rename to appinventor/appengine-shared/war/templates/MyToDoList/screenshot.png
diff --git a/appinventor/appengine/war/templates/MyToDoList/thumbnail.png b/appinventor/appengine-shared/war/templates/MyToDoList/thumbnail.png
similarity index 100%
rename from appinventor/appengine/war/templates/MyToDoList/thumbnail.png
rename to appinventor/appengine-shared/war/templates/MyToDoList/thumbnail.png
diff --git a/appinventor/appengine/war/templates/SnapchatRemix/SnapchatRemix.json b/appinventor/appengine-shared/war/templates/SnapchatRemix/SnapchatRemix.json
similarity index 100%
rename from appinventor/appengine/war/templates/SnapchatRemix/SnapchatRemix.json
rename to appinventor/appengine-shared/war/templates/SnapchatRemix/SnapchatRemix.json
diff --git a/appinventor/appengine/war/templates/SnapchatRemix/SnapchatRemix.zip b/appinventor/appengine-shared/war/templates/SnapchatRemix/SnapchatRemix.zip
similarity index 100%
rename from appinventor/appengine/war/templates/SnapchatRemix/SnapchatRemix.zip
rename to appinventor/appengine-shared/war/templates/SnapchatRemix/SnapchatRemix.zip
diff --git a/appinventor/appengine/war/templates/SnapchatRemix/screenshot.png b/appinventor/appengine-shared/war/templates/SnapchatRemix/screenshot.png
similarity index 100%
rename from appinventor/appengine/war/templates/SnapchatRemix/screenshot.png
rename to appinventor/appengine-shared/war/templates/SnapchatRemix/screenshot.png
diff --git a/appinventor/appengine/war/templates/SnapchatRemix/thumbnail.png b/appinventor/appengine-shared/war/templates/SnapchatRemix/thumbnail.png
similarity index 100%
rename from appinventor/appengine/war/templates/SnapchatRemix/thumbnail.png
rename to appinventor/appengine-shared/war/templates/SnapchatRemix/thumbnail.png
diff --git a/appinventor/appengine/war/templates/SoundLibrary/SoundLibrary.json b/appinventor/appengine-shared/war/templates/SoundLibrary/SoundLibrary.json
similarity index 100%
rename from appinventor/appengine/war/templates/SoundLibrary/SoundLibrary.json
rename to appinventor/appengine-shared/war/templates/SoundLibrary/SoundLibrary.json
diff --git a/appinventor/appengine/war/templates/SoundLibrary/SoundLibrary.zip b/appinventor/appengine-shared/war/templates/SoundLibrary/SoundLibrary.zip
similarity index 100%
rename from appinventor/appengine/war/templates/SoundLibrary/SoundLibrary.zip
rename to appinventor/appengine-shared/war/templates/SoundLibrary/SoundLibrary.zip
diff --git a/appinventor/appengine/war/templates/SoundLibrary/screenshot.png b/appinventor/appengine-shared/war/templates/SoundLibrary/screenshot.png
similarity index 100%
rename from appinventor/appengine/war/templates/SoundLibrary/screenshot.png
rename to appinventor/appengine-shared/war/templates/SoundLibrary/screenshot.png
diff --git a/appinventor/appengine/war/templates/SoundLibrary/thumbnail.png b/appinventor/appengine-shared/war/templates/SoundLibrary/thumbnail.png
similarity index 100%
rename from appinventor/appengine/war/templates/SoundLibrary/thumbnail.png
rename to appinventor/appengine-shared/war/templates/SoundLibrary/thumbnail.png
diff --git a/appinventor/appengine/war/templates/TranslateApp/TranslateApp.json b/appinventor/appengine-shared/war/templates/TranslateApp/TranslateApp.json
similarity index 100%
rename from appinventor/appengine/war/templates/TranslateApp/TranslateApp.json
rename to appinventor/appengine-shared/war/templates/TranslateApp/TranslateApp.json
diff --git a/appinventor/appengine/war/templates/TranslateApp/TranslateApp.zip b/appinventor/appengine-shared/war/templates/TranslateApp/TranslateApp.zip
similarity index 100%
rename from appinventor/appengine/war/templates/TranslateApp/TranslateApp.zip
rename to appinventor/appengine-shared/war/templates/TranslateApp/TranslateApp.zip
diff --git a/appinventor/appengine/war/templates/TranslateApp/screenshot.png b/appinventor/appengine-shared/war/templates/TranslateApp/screenshot.png
similarity index 100%
rename from appinventor/appengine/war/templates/TranslateApp/screenshot.png
rename to appinventor/appengine-shared/war/templates/TranslateApp/screenshot.png
diff --git a/appinventor/appengine/war/templates/TranslateApp/thumbnail.png b/appinventor/appengine-shared/war/templates/TranslateApp/thumbnail.png
similarity index 100%
rename from appinventor/appengine/war/templates/TranslateApp/thumbnail.png
rename to appinventor/appengine-shared/war/templates/TranslateApp/thumbnail.png
diff --git a/appinventor/barcode/build.gradle.kts b/appinventor/barcode/build.gradle.kts
new file mode 100644
index 00000000000..50468402167
--- /dev/null
+++ b/appinventor/barcode/build.gradle.kts
@@ -0,0 +1,30 @@
+plugins {
+ id("com.android.library")
+}
+
+android {
+ compileSdk = 30
+
+ defaultConfig {
+ minSdk = 21
+ targetSdk = 30
+
+ testInstrumentationRunner = "android.support.test.runner.AndroidJUnitRunner"
+ consumerProguardFiles("consumer-rules.pro")
+ }
+
+ buildTypes {
+ release {
+ isMinifyEnabled = false
+ proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
+ }
+ }
+ compileOptions {
+ sourceCompatibility = JavaVersion.VERSION_11
+ targetCompatibility = JavaVersion.VERSION_11
+ }
+}
+
+dependencies {
+ implementation(files("../lib/QRGenerator/core.jar"))
+}
diff --git a/appinventor/barcode/consumer-rules.pro b/appinventor/barcode/consumer-rules.pro
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/appinventor/barcode/proguard-rules.pro b/appinventor/barcode/proguard-rules.pro
new file mode 100644
index 00000000000..481bb434814
--- /dev/null
+++ b/appinventor/barcode/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
\ No newline at end of file
diff --git a/appinventor/barcode/src/main/AndroidManifest.xml b/appinventor/barcode/src/main/AndroidManifest.xml
new file mode 100644
index 00000000000..3a00b0a5e23
--- /dev/null
+++ b/appinventor/barcode/src/main/AndroidManifest.xml
@@ -0,0 +1,5 @@
+
+
+
+
\ No newline at end of file
diff --git a/appinventor/components/src/com/google/zxing/client/android/AppInvCaptureActivity.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/AppInvCaptureActivity.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/AppInvCaptureActivity.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/AppInvCaptureActivity.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/BeepManager.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/BeepManager.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/BeepManager.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/BeepManager.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/CaptureActivityHandler.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/CaptureActivityHandler.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/CaptureActivityHandler.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/CaptureActivityHandler.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/Constants.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/Constants.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/Constants.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/Constants.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/Contents.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/Contents.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/Contents.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/Contents.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/DecodeFormatManager.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/DecodeFormatManager.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/DecodeFormatManager.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/DecodeFormatManager.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/DecodeHandler.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/DecodeHandler.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/DecodeHandler.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/DecodeHandler.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/DecodeThread.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/DecodeThread.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/DecodeThread.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/DecodeThread.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/FinishListener.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/FinishListener.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/FinishListener.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/FinishListener.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/HttpHelper.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/HttpHelper.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/HttpHelper.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/HttpHelper.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/InactivityTimer.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/InactivityTimer.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/InactivityTimer.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/InactivityTimer.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/IntentSource.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/IntentSource.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/IntentSource.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/IntentSource.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/Intents.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/Intents.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/Intents.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/Intents.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/LocaleManager.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/LocaleManager.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/LocaleManager.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/LocaleManager.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/ViewfinderResultPointCallback.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/ViewfinderResultPointCallback.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/ViewfinderResultPointCallback.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/ViewfinderResultPointCallback.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/ViewfinderView.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/ViewfinderView.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/ViewfinderView.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/ViewfinderView.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/camera/AutoFocusManager.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/AutoFocusManager.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/camera/AutoFocusManager.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/AutoFocusManager.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/camera/CameraConfigurationManager.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/CameraConfigurationManager.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/camera/CameraConfigurationManager.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/CameraConfigurationManager.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/camera/CameraManager.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/CameraManager.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/camera/CameraManager.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/CameraManager.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/camera/HoneycombMR2Util.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/HoneycombMR2Util.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/camera/HoneycombMR2Util.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/HoneycombMR2Util.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/camera/PreviewCallback.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/PreviewCallback.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/camera/PreviewCallback.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/PreviewCallback.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/camera/SdkLevel.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/SdkLevel.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/camera/SdkLevel.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/SdkLevel.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/camera/exposure/DefaultExposureInterface.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/exposure/DefaultExposureInterface.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/camera/exposure/DefaultExposureInterface.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/exposure/DefaultExposureInterface.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/camera/exposure/ExposureInterface.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/exposure/ExposureInterface.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/camera/exposure/ExposureInterface.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/exposure/ExposureInterface.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/camera/exposure/ExposureManager.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/exposure/ExposureManager.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/camera/exposure/ExposureManager.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/exposure/ExposureManager.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/camera/exposure/FroyoExposureInterface.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/exposure/FroyoExposureInterface.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/camera/exposure/FroyoExposureInterface.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/exposure/FroyoExposureInterface.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/camera/open/DefaultOpenCameraInterface.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/open/DefaultOpenCameraInterface.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/camera/open/DefaultOpenCameraInterface.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/open/DefaultOpenCameraInterface.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/camera/open/GingerbreadOpenCameraInterface.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/open/GingerbreadOpenCameraInterface.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/camera/open/GingerbreadOpenCameraInterface.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/open/GingerbreadOpenCameraInterface.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/open/OpenCameraInterface.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/camera/open/OpenCameraInterface.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/open/OpenCameraInterface.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/camera/open/OpenCameraManager.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/open/OpenCameraManager.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/camera/open/OpenCameraManager.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/camera/open/OpenCameraManager.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/common/PlatformSupportManager.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/common/PlatformSupportManager.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/common/PlatformSupportManager.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/common/PlatformSupportManager.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/common/executor/AsyncTaskExecInterface.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/common/executor/AsyncTaskExecInterface.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/common/executor/AsyncTaskExecInterface.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/common/executor/AsyncTaskExecInterface.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/common/executor/AsyncTaskExecManager.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/common/executor/AsyncTaskExecManager.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/common/executor/AsyncTaskExecManager.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/common/executor/AsyncTaskExecManager.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/common/executor/DefaultAsyncTaskExecInterface.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/common/executor/DefaultAsyncTaskExecInterface.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/common/executor/DefaultAsyncTaskExecInterface.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/common/executor/DefaultAsyncTaskExecInterface.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/common/executor/HoneycombAsyncTaskExecInterface.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/common/executor/HoneycombAsyncTaskExecInterface.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/common/executor/HoneycombAsyncTaskExecInterface.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/common/executor/HoneycombAsyncTaskExecInterface.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/result/ResultButtonListener.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/result/ResultButtonListener.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/result/ResultButtonListener.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/result/ResultButtonListener.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/result/ResultHandler.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/result/ResultHandler.java
similarity index 99%
rename from appinventor/components/src/com/google/zxing/client/android/result/ResultHandler.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/result/ResultHandler.java
index 9c431c81a29..ec1bd1fb1c9 100644
--- a/appinventor/components/src/com/google/zxing/client/android/result/ResultHandler.java
+++ b/appinventor/barcode/src/main/java/com/google/zxing/client/android/result/ResultHandler.java
@@ -64,7 +64,7 @@ public abstract class ResultHandler {
"&referrer=utm_source%3Dbarcodescanner%26utm_medium%3Dapps%26utm_campaign%3Dscan";
private static final String[] EMAIL_TYPE_STRINGS = {"home", "work", "mobile"};
- private static final String[] PHONE_TYPE_STRINGS = {"home", "work", "mobile", "fax", "pager", "main"};
+ private static final String[] PHONE_TYPE_STRINGS = {"home", "work", "mobile", "fax", "pager", ""};
private static final String[] ADDRESS_TYPE_STRINGS = {"home", "work"};
private static final int[] EMAIL_TYPE_VALUES = {
ContactsContract.CommonDataKinds.Email.TYPE_HOME,
diff --git a/appinventor/components/src/com/google/zxing/client/android/result/ResultHandlerFactory.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/result/ResultHandlerFactory.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/result/ResultHandlerFactory.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/result/ResultHandlerFactory.java
diff --git a/appinventor/components/src/com/google/zxing/client/android/result/TextResultHandler.java b/appinventor/barcode/src/main/java/com/google/zxing/client/android/result/TextResultHandler.java
similarity index 100%
rename from appinventor/components/src/com/google/zxing/client/android/result/TextResultHandler.java
rename to appinventor/barcode/src/main/java/com/google/zxing/client/android/result/TextResultHandler.java
diff --git a/appinventor/blocklyeditor/build.gradle b/appinventor/blocklyeditor/build.gradle
new file mode 100644
index 00000000000..1a29f6f4a55
--- /dev/null
+++ b/appinventor/blocklyeditor/build.gradle
@@ -0,0 +1,11 @@
+plugins {
+ id 'java'
+}
+
+defaultTasks 'BlocklyCompile'
+
+task BlocklyCompile(type: JavaExec) {
+ // TODO: map inputs and outputs
+ classpath = files('../lib/plovr/plovr-eba786b34df9.jar')
+ args = ['build', 'ploverConfig.js']
+}
\ No newline at end of file
diff --git a/appinventor/build.gradle.kts b/appinventor/build.gradle.kts
new file mode 100644
index 00000000000..7cd94fe78dd
--- /dev/null
+++ b/appinventor/build.gradle.kts
@@ -0,0 +1 @@
+description = "Definitions common to multiple App Inventor build.xml files."
diff --git a/appinventor/buildserver/build.gradle.kts b/appinventor/buildserver/build.gradle.kts
new file mode 100644
index 00000000000..bb04eb40e72
--- /dev/null
+++ b/appinventor/buildserver/build.gradle.kts
@@ -0,0 +1,43 @@
+plugins {
+ application
+}
+
+application {
+ mainClass.set("com.google.appinventor.buildserver.BuildServer")
+}
+
+java {
+ toolchain {
+ languageVersion.set(JavaLanguageVersion.of(8))
+ }
+}
+
+//sourceSets {
+// main {
+// resources {
+//// setSrcDirs(projects.components.artifacts)
+// include("${projects.components.dependencyProject.layout.buildDirectory}/outputs/aar/components-release.aar")
+// }
+// }
+//}
+
+dependencies {
+ implementation(projects.commonUtils)
+ implementation(projects.commonVersion)
+ implementation(projects.componentConstants)
+ implementation(fileTree("lib") { include("*.jar") })
+// implementation("com.sun.jersey:jersey-grizzly2:1.19.1")
+// implementation("com.sun.jersey:jersey-json:1.19.1")
+ implementation("org.json:json:20220320")
+ implementation("args4j:args4j:2.0.22")
+ implementation("com.google.guava:guava:14.0.1")
+ implementation("commons-io:commons-io:2.0.1")
+ implementation("org.bouncycastle:bcprov-jdk15on:1.49")
+ implementation("org.bouncycastle:bcpkix-jdk15on:1.49")
+ implementation("org.eclipse.jdt.core.compiler:ecj:4.5.1")
+ implementation("com.android.tools:common:24.3.0")
+ implementation("com.android.tools:sdk-common:24.3.0")
+ implementation("com.android.tools:sdklib:24.3.0")
+ implementation("com.android.tools.build:builder:1.3.0")
+ implementation("com.android.tools.build:builder-model:1.3.0")
+}
\ No newline at end of file
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/AabCompiler.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/AabCompiler.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/AabCompiler.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/AabCompiler.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/AnimationXmlConstants.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/AnimationXmlConstants.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/AnimationXmlConstants.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/AnimationXmlConstants.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/BuildServer.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/BuildServer.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/BuildServer.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/BuildServer.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/Compiler.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/Compiler.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/Compiler.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/Compiler.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/DexExecTask.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/DexExecTask.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/DexExecTask.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/DexExecTask.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/Execution.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/Execution.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/Execution.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/Execution.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/FormPropertiesAnalyzer.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/FormPropertiesAnalyzer.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/FormPropertiesAnalyzer.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/FormPropertiesAnalyzer.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/Main.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/Main.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/Main.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/Main.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/NonQueuingExecutor.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/NonQueuingExecutor.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/NonQueuingExecutor.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/NonQueuingExecutor.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/PathUtil.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/PathUtil.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/PathUtil.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/PathUtil.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/Project.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/Project.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/Project.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/Project.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/ProjectBuilder.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/ProjectBuilder.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/ProjectBuilder.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/ProjectBuilder.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/Result.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/Result.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/Result.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/Result.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/Signatures.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/Signatures.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/Signatures.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/Signatures.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/YoungAndroidConstants.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/YoungAndroidConstants.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/YoungAndroidConstants.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/YoungAndroidConstants.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/package-info.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/package-info.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/package-info.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/package-info.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/stats/NullStatReporter.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/stats/NullStatReporter.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/stats/NullStatReporter.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/stats/NullStatReporter.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/stats/SimpleStatReporter.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/stats/SimpleStatReporter.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/stats/SimpleStatReporter.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/stats/SimpleStatReporter.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/stats/StatCalculator.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/stats/StatCalculator.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/stats/StatCalculator.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/stats/StatCalculator.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/stats/StatReporter.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/stats/StatReporter.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/stats/StatReporter.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/stats/StatReporter.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/util/AARLibraries.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/util/AARLibraries.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/util/AARLibraries.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/util/AARLibraries.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/util/AARLibrary.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/util/AARLibrary.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/util/AARLibrary.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/util/AARLibrary.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/util/AabZipper.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/util/AabZipper.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/util/AabZipper.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/util/AabZipper.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/util/BaseFileWrapper.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/util/BaseFileWrapper.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/util/BaseFileWrapper.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/util/BaseFileWrapper.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/util/BaseLogger.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/util/BaseLogger.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/util/BaseLogger.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/util/BaseLogger.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/util/NOPCompilationProgress.java b/appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/util/NOPCompilationProgress.java
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/util/NOPCompilationProgress.java
rename to appinventor/buildserver/src/main/java/com/google/appinventor/buildserver/util/NOPCompilationProgress.java
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/resources/runtime.scm b/appinventor/buildserver/src/main/resources/com/google/appinventor/buildserver/resources/runtime.scm
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/resources/runtime.scm
rename to appinventor/buildserver/src/main/resources/com/google/appinventor/buildserver/resources/runtime.scm
diff --git a/appinventor/buildserver/src/com/google/appinventor/buildserver/resources/ya.png b/appinventor/buildserver/src/main/resources/com/google/appinventor/buildserver/resources/ya.png
similarity index 100%
rename from appinventor/buildserver/src/com/google/appinventor/buildserver/resources/ya.png
rename to appinventor/buildserver/src/main/resources/com/google/appinventor/buildserver/resources/ya.png
diff --git a/appinventor/buildserver/tests/com/google/appinventor/buildserver/CompilerTest.java b/appinventor/buildserver/src/test/java/com/google/appinventor/buildserver/CompilerTest.java
similarity index 100%
rename from appinventor/buildserver/tests/com/google/appinventor/buildserver/CompilerTest.java
rename to appinventor/buildserver/src/test/java/com/google/appinventor/buildserver/CompilerTest.java
diff --git a/appinventor/buildserver/tests/com/google/appinventor/buildserver/FormPropertiesAnalyzerTest.java b/appinventor/buildserver/src/test/java/com/google/appinventor/buildserver/FormPropertiesAnalyzerTest.java
similarity index 100%
rename from appinventor/buildserver/tests/com/google/appinventor/buildserver/FormPropertiesAnalyzerTest.java
rename to appinventor/buildserver/src/test/java/com/google/appinventor/buildserver/FormPropertiesAnalyzerTest.java
diff --git a/appinventor/buildserver/tests/com/google/appinventor/buildserver/NonQueuingExecutorTest.java b/appinventor/buildserver/src/test/java/com/google/appinventor/buildserver/NonQueuingExecutorTest.java
similarity index 100%
rename from appinventor/buildserver/tests/com/google/appinventor/buildserver/NonQueuingExecutorTest.java
rename to appinventor/buildserver/src/test/java/com/google/appinventor/buildserver/NonQueuingExecutorTest.java
diff --git a/appinventor/buildserver/tests/com/google/appinventor/buildserver/YailAndroidTest.java b/appinventor/buildserver/src/test/java/com/google/appinventor/buildserver/YailAndroidTest.java
similarity index 100%
rename from appinventor/buildserver/tests/com/google/appinventor/buildserver/YailAndroidTest.java
rename to appinventor/buildserver/src/test/java/com/google/appinventor/buildserver/YailAndroidTest.java
diff --git a/appinventor/buildserver/tests/com/google/appinventor/buildserver/YailEvalTest.java b/appinventor/buildserver/src/test/java/com/google/appinventor/buildserver/YailEvalTest.java
similarity index 99%
rename from appinventor/buildserver/tests/com/google/appinventor/buildserver/YailEvalTest.java
rename to appinventor/buildserver/src/test/java/com/google/appinventor/buildserver/YailEvalTest.java
index e927628f523..94a59024626 100644
--- a/appinventor/buildserver/tests/com/google/appinventor/buildserver/YailEvalTest.java
+++ b/appinventor/buildserver/src/test/java/com/google/appinventor/buildserver/YailEvalTest.java
@@ -23,7 +23,6 @@
import junit.framework.TestCase;
import kawa.standard.Scheme;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
diff --git a/appinventor/buildserver/tests/com/google/appinventor/buildserver/YailEvalTest.scm b/appinventor/buildserver/src/test/java/com/google/appinventor/buildserver/YailEvalTest.scm
similarity index 100%
rename from appinventor/buildserver/tests/com/google/appinventor/buildserver/YailEvalTest.scm
rename to appinventor/buildserver/src/test/java/com/google/appinventor/buildserver/YailEvalTest.scm
diff --git a/appinventor/buildserver/tests/com/google/appinventor/buildserver/testComponentsAsDictKeys.scm b/appinventor/buildserver/src/test/java/com/google/appinventor/buildserver/testComponentsAsDictKeys.scm
similarity index 100%
rename from appinventor/buildserver/tests/com/google/appinventor/buildserver/testComponentsAsDictKeys.scm
rename to appinventor/buildserver/src/test/java/com/google/appinventor/buildserver/testComponentsAsDictKeys.scm
diff --git a/appinventor/common-utils/build.gradle.kts b/appinventor/common-utils/build.gradle.kts
new file mode 100644
index 00000000000..4f39cfe1ac9
--- /dev/null
+++ b/appinventor/common-utils/build.gradle.kts
@@ -0,0 +1,27 @@
+plugins {
+ `java-library`
+ id("org.docstr.gwt.base")
+}
+
+gwt {
+ gwtVersion = "2.10.0"
+ modules("com.google.appinventor.common.CommonUtils")
+
+// src += files(sourceSets["main"].allJava) + files(sourceSets["main"].resources)
+}
+
+java {
+ toolchain {
+ languageVersion.set(JavaLanguageVersion.of(8))
+ }
+}
+
+tasks.named("jar") {
+ from(project.sourceSets.main.get().allSource)
+ from(project.sourceSets.main.get().output)
+ this.duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+}
+
+dependencies {
+ implementation("com.google.guava:guava:14.0.1")
+}
\ No newline at end of file
diff --git a/appinventor/common/src/com/google/appinventor/common/utils/FilenameUtils.java b/appinventor/common-utils/src/main/java/com/google/appinventor/common/utils/FilenameUtils.java
similarity index 100%
rename from appinventor/common/src/com/google/appinventor/common/utils/FilenameUtils.java
rename to appinventor/common-utils/src/main/java/com/google/appinventor/common/utils/FilenameUtils.java
diff --git a/appinventor/common/src/com/google/appinventor/common/utils/StringUtils.java b/appinventor/common-utils/src/main/java/com/google/appinventor/common/utils/StringUtils.java
similarity index 98%
rename from appinventor/common/src/com/google/appinventor/common/utils/StringUtils.java
rename to appinventor/common-utils/src/main/java/com/google/appinventor/common/utils/StringUtils.java
index 4eb4edad6fa..feef3eb3b0c 100644
--- a/appinventor/common/src/com/google/appinventor/common/utils/StringUtils.java
+++ b/appinventor/common-utils/src/main/java/com/google/appinventor/common/utils/StringUtils.java
@@ -252,10 +252,10 @@ public static String normalizeForFilename(String str) {
String normalized = VALID_FILENAME_CHARS.retainFrom(str);
if (!normalized.isEmpty()) {
while (normalized.length() > 2 &&
- !CharMatcher.javaLetter().matches(normalized.charAt(0))) {
+ !CharMatcher.JAVA_LETTER.matches(normalized.charAt(0))) {
normalized = normalized.substring(1);
}
- if (CharMatcher.javaLetter().matches(normalized.charAt(0))) {
+ if (CharMatcher.JAVA_LETTER.matches(normalized.charAt(0))) {
return normalized;
}
}
diff --git a/appinventor/common-utils/src/main/resources/com/google/appinventor/common/CommonUtils.gwt.xml b/appinventor/common-utils/src/main/resources/com/google/appinventor/common/CommonUtils.gwt.xml
new file mode 100644
index 00000000000..47403ca9abb
--- /dev/null
+++ b/appinventor/common-utils/src/main/resources/com/google/appinventor/common/CommonUtils.gwt.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/appinventor/common/tests/com/google/appinventor/common/utils/FilenameUtilsTest.java b/appinventor/common-utils/src/test/java/com/google/appinventor/common/utils/FilenameUtilsTest.java
similarity index 100%
rename from appinventor/common/tests/com/google/appinventor/common/utils/FilenameUtilsTest.java
rename to appinventor/common-utils/src/test/java/com/google/appinventor/common/utils/FilenameUtilsTest.java
diff --git a/appinventor/common/tests/com/google/appinventor/common/utils/StringUtilsTest.java b/appinventor/common-utils/src/test/java/com/google/appinventor/common/utils/StringUtilsTest.java
similarity index 100%
rename from appinventor/common/tests/com/google/appinventor/common/utils/StringUtilsTest.java
rename to appinventor/common-utils/src/test/java/com/google/appinventor/common/utils/StringUtilsTest.java
diff --git a/appinventor/common/GitBuildId.template b/appinventor/common-version/GitBuildId.template
similarity index 100%
rename from appinventor/common/GitBuildId.template
rename to appinventor/common-version/GitBuildId.template
diff --git a/appinventor/common-version/build.gradle.kts b/appinventor/common-version/build.gradle.kts
new file mode 100644
index 00000000000..81f642958a2
--- /dev/null
+++ b/appinventor/common-version/build.gradle.kts
@@ -0,0 +1,73 @@
+import org.apache.tools.ant.filters.ReplaceTokens
+import java.util.Calendar
+import java.text.SimpleDateFormat
+
+plugins {
+ `java-library`
+ id("org.docstr.gwt.base")
+}
+
+gwt {
+ gwtVersion = "2.10.0"
+ modules("com.google.appinventor.common.CommonVersion")
+}
+
+java {
+ toolchain {
+ languageVersion.set(JavaLanguageVersion.of(8))
+ }
+}
+
+tasks.named("jar") {
+ from(project.sourceSets.main.get().allSource)
+ from(project.sourceSets.main.get().output)
+ this.duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+}
+
+val taskGitBuildId by tasks.creating(Copy::class) {
+ from("GitBuildId.template")
+ into("$buildDir/generated/sources/java")
+ rename("GitBuildId.template", "GitBuildId.java")
+
+ filteringCharset = "UTF-8"
+
+ filter(
+ ReplaceTokens::class, mapOf(
+ "tokens" to mapOf(
+ "git.build.version" to execute("git describe --dirty"),
+ "git.build.fingerprint" to execute("git rev-parse HEAD"),
+ "ant.build.date" to getDate(),
+ "acra.uri" to ""
+ )
+ )
+ )
+}
+
+sourceSets {
+ main {
+ java {
+ srcDirs("$buildDir/generated/sources/java")
+ }
+ }
+}
+
+val compileJava by tasks.existing(JavaCompile::class) {
+ dependsOn(taskGitBuildId)
+}
+
+dependencies {
+ implementation("com.google.guava:guava:14.0.1")
+}
+
+fun execute(command: String): String {
+ val process = Runtime.getRuntime().exec(command)
+ val output = process.inputStream.bufferedReader().readText()
+ process.waitFor()
+ return output.trim()
+}
+
+fun getDate(): String {
+ val date = Calendar.getInstance().time
+ val formatter = SimpleDateFormat("MMMM dd yyyy")
+ return formatter.format(date)
+}
\ No newline at end of file
diff --git a/appinventor/common/build.xml b/appinventor/common-version/build.xml
similarity index 100%
rename from appinventor/common/build.xml
rename to appinventor/common-version/build.xml
diff --git a/appinventor/common/src/com/google/appinventor/common/testutils/TestUtils.java b/appinventor/common-version/src/main/java/com/google/appinventor/common/testutils/TestUtils.java
similarity index 100%
rename from appinventor/common/src/com/google/appinventor/common/testutils/TestUtils.java
rename to appinventor/common-version/src/main/java/com/google/appinventor/common/testutils/TestUtils.java
diff --git a/appinventor/common/src/com/google/appinventor/common/testutils/package-info.java b/appinventor/common-version/src/main/java/com/google/appinventor/common/testutils/package-info.java
similarity index 100%
rename from appinventor/common/src/com/google/appinventor/common/testutils/package-info.java
rename to appinventor/common-version/src/main/java/com/google/appinventor/common/testutils/package-info.java
diff --git a/appinventor/common/src/com/google/appinventor/common/version/AppInventorFeatures.java b/appinventor/common-version/src/main/java/com/google/appinventor/common/version/AppInventorFeatures.java
similarity index 100%
rename from appinventor/common/src/com/google/appinventor/common/version/AppInventorFeatures.java
rename to appinventor/common-version/src/main/java/com/google/appinventor/common/version/AppInventorFeatures.java
diff --git a/appinventor/common/src/com/google/appinventor/common/version/package-info.java b/appinventor/common-version/src/main/java/com/google/appinventor/common/version/package-info.java
similarity index 100%
rename from appinventor/common/src/com/google/appinventor/common/version/package-info.java
rename to appinventor/common-version/src/main/java/com/google/appinventor/common/version/package-info.java
diff --git a/appinventor/common-version/src/main/resources/com/google/appinventor/common/CommonVersion.gwt.xml b/appinventor/common-version/src/main/resources/com/google/appinventor/common/CommonVersion.gwt.xml
new file mode 100644
index 00000000000..d8d066b0ec7
--- /dev/null
+++ b/appinventor/common-version/src/main/resources/com/google/appinventor/common/CommonVersion.gwt.xml
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/appinventor/common/src/com/google/appinventor/common/CommonUtils.gwt.xml b/appinventor/common/src/com/google/appinventor/common/CommonUtils.gwt.xml
deleted file mode 100644
index 6f22f9db8db..00000000000
--- a/appinventor/common/src/com/google/appinventor/common/CommonUtils.gwt.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/appinventor/common/src/com/google/appinventor/common/CommonVersion.gwt.xml b/appinventor/common/src/com/google/appinventor/common/CommonVersion.gwt.xml
deleted file mode 100644
index b3983590a9d..00000000000
--- a/appinventor/common/src/com/google/appinventor/common/CommonVersion.gwt.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
diff --git a/appinventor/common/src/com/google/appinventor/common/package-info.java b/appinventor/common/src/com/google/appinventor/common/package-info.java
deleted file mode 100644
index dec4fd205ff..00000000000
--- a/appinventor/common/src/com/google/appinventor/common/package-info.java
+++ /dev/null
@@ -1,9 +0,0 @@
-// -*- mode: java; c-basic-offset: 2; -*-
-// Copyright 2009-2011 Google, All Rights reserved
-// Copyright 2011-2012 MIT, All rights reserved
-// Released under the Apache License, Version 2.0
-// http://www.apache.org/licenses/LICENSE-2.0
-/**
- * Classes shared by multiple App Inventor sub-projects.
- */
-package com.google.appinventor.common;
diff --git a/appinventor/common/src/com/google/appinventor/common/utils/package-info.java b/appinventor/common/src/com/google/appinventor/common/utils/package-info.java
deleted file mode 100644
index e9bcd05ec84..00000000000
--- a/appinventor/common/src/com/google/appinventor/common/utils/package-info.java
+++ /dev/null
@@ -1,9 +0,0 @@
-// -*- mode: java; c-basic-offset: 2; -*-
-// Copyright 2009-2011 Google, All Rights reserved
-// Copyright 2011-2012 MIT, All rights reserved
-// Released under the Apache License, Version 2.0
-// http://www.apache.org/licenses/LICENSE-2.0
-/**
- * Utility methods for working with filenames and strings.
- */
-package com.google.appinventor.common.utils;
diff --git a/appinventor/component-annotations/build.gradle.kts b/appinventor/component-annotations/build.gradle.kts
new file mode 100644
index 00000000000..bf1af6a1f14
--- /dev/null
+++ b/appinventor/component-annotations/build.gradle.kts
@@ -0,0 +1,7 @@
+plugins {
+ `java-library`
+}
+
+dependencies {
+ api(projects.componentConstants)
+}
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/Asset.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/Asset.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/Asset.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/Asset.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/DesignerComponent.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/DesignerComponent.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/DesignerComponent.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/DesignerComponent.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/DesignerProperty.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/DesignerProperty.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/DesignerProperty.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/DesignerProperty.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/IsColor.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/IsColor.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/IsColor.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/IsColor.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/Options.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/Options.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/Options.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/Options.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/PropertyCategory.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/PropertyCategory.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/PropertyCategory.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/PropertyCategory.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/SimpleBroadcastReceiver.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/SimpleBroadcastReceiver.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/SimpleBroadcastReceiver.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/SimpleBroadcastReceiver.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/SimpleEvent.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/SimpleEvent.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/SimpleEvent.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/SimpleEvent.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/SimpleFunction.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/SimpleFunction.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/SimpleFunction.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/SimpleFunction.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/SimpleObject.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/SimpleObject.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/SimpleObject.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/SimpleObject.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/SimpleProperty.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/SimpleProperty.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/SimpleProperty.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/SimpleProperty.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/SimplePropertyCopier.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/SimplePropertyCopier.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/SimplePropertyCopier.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/SimplePropertyCopier.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/UsesActivities.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesActivities.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/UsesActivities.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesActivities.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/UsesActivityMetadata.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesActivityMetadata.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/UsesActivityMetadata.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesActivityMetadata.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/UsesApplicationMetadata.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesApplicationMetadata.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/UsesApplicationMetadata.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesApplicationMetadata.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/UsesAssets.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesAssets.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/UsesAssets.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesAssets.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/UsesBroadcastReceivers.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesBroadcastReceivers.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/UsesBroadcastReceivers.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesBroadcastReceivers.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/UsesContentProviders.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesContentProviders.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/UsesContentProviders.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesContentProviders.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/UsesLibraries.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesLibraries.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/UsesLibraries.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesLibraries.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/UsesNativeLibraries.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesNativeLibraries.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/UsesNativeLibraries.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesNativeLibraries.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/UsesPermissions.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesPermissions.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/UsesPermissions.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesPermissions.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/UsesQueries.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesQueries.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/UsesQueries.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesQueries.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/UsesServices.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesServices.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/UsesServices.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/UsesServices.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/ActionElement.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/ActionElement.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/ActionElement.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/ActionElement.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/ActivityElement.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/ActivityElement.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/ActivityElement.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/ActivityElement.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/CategoryElement.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/CategoryElement.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/CategoryElement.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/CategoryElement.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/DataElement.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/DataElement.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/DataElement.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/DataElement.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/GrantUriPermissionElement.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/GrantUriPermissionElement.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/GrantUriPermissionElement.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/GrantUriPermissionElement.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/IntentFilterElement.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/IntentFilterElement.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/IntentFilterElement.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/IntentFilterElement.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/MetaDataElement.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/MetaDataElement.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/MetaDataElement.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/MetaDataElement.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/PathPermissionElement.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/PathPermissionElement.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/PathPermissionElement.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/PathPermissionElement.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/ProviderElement.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/ProviderElement.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/ProviderElement.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/ProviderElement.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/ReceiverElement.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/ReceiverElement.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/ReceiverElement.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/ReceiverElement.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/ServiceElement.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/ServiceElement.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/ServiceElement.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/ServiceElement.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/package-info.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/package-info.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/androidmanifest/package-info.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/androidmanifest/package-info.java
diff --git a/appinventor/components/src/com/google/appinventor/components/annotations/package-info.java b/appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/package-info.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/annotations/package-info.java
rename to appinventor/component-annotations/src/main/java/com/google/appinventor/components/annotations/package-info.java
diff --git a/appinventor/component-constants/build.gradle.kts b/appinventor/component-constants/build.gradle.kts
new file mode 100644
index 00000000000..bd6ea52efc8
--- /dev/null
+++ b/appinventor/component-constants/build.gradle.kts
@@ -0,0 +1,28 @@
+plugins {
+ `java-library`
+ id("org.docstr.gwt.base")
+}
+
+gwt {
+ gwtVersion = "2.10.0"
+ modules("com.google.appinventor.components.CommonConstants")
+}
+
+java {
+ toolchain {
+ languageVersion.set(JavaLanguageVersion.of(8))
+ }
+}
+
+tasks.named("jar") {
+ from(project.sourceSets.main.get().allSource)
+ from(project.sourceSets.main.get().output)
+ this.duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+}
+
+dependencies {
+}
+
+tasks.withType {
+ options.encoding = "UTF-8"
+}
\ No newline at end of file
diff --git a/appinventor/components/src/com/google/appinventor/components/common/ChartType.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ChartType.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/ChartType.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ChartType.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/ColorSensorMode.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ColorSensorMode.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/ColorSensorMode.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ColorSensorMode.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/ComponentCategory.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ComponentCategory.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/ComponentCategory.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ComponentCategory.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/ComponentConstants.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ComponentConstants.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/ComponentConstants.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ComponentConstants.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/ComponentDescriptorConstants.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ComponentDescriptorConstants.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/ComponentDescriptorConstants.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ComponentDescriptorConstants.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/Default.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/Default.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/Default.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/Default.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/Direction.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/Direction.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/Direction.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/Direction.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/EndedStatus.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/EndedStatus.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/EndedStatus.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/EndedStatus.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/FileScope.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/FileScope.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/FileScope.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/FileScope.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/GyroSensorMode.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/GyroSensorMode.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/GyroSensorMode.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/GyroSensorMode.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/HorizontalAlignment.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/HorizontalAlignment.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/HorizontalAlignment.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/HorizontalAlignment.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/HtmlEntities.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/HtmlEntities.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/HtmlEntities.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/HtmlEntities.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/LineType.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/LineType.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/LineType.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/LineType.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/MapFeature.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/MapFeature.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/MapFeature.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/MapFeature.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/MapType.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/MapType.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/MapType.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/MapType.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/NxtMailbox.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/NxtMailbox.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/NxtMailbox.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/NxtMailbox.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/NxtMotorMode.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/NxtMotorMode.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/NxtMotorMode.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/NxtMotorMode.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/NxtMotorPort.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/NxtMotorPort.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/NxtMotorPort.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/NxtMotorPort.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/NxtRegulationMode.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/NxtRegulationMode.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/NxtRegulationMode.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/NxtRegulationMode.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/NxtRunState.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/NxtRunState.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/NxtRunState.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/NxtRunState.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/NxtSensorMode.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/NxtSensorMode.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/NxtSensorMode.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/NxtSensorMode.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/NxtSensorPort.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/NxtSensorPort.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/NxtSensorPort.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/NxtSensorPort.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/NxtSensorType.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/NxtSensorType.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/NxtSensorType.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/NxtSensorType.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/OptionList.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/OptionList.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/OptionList.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/OptionList.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/Permission.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/Permission.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/Permission.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/Permission.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/PointStyle.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/PointStyle.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/PointStyle.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/PointStyle.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/PropertyTypeConstants.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/PropertyTypeConstants.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/PropertyTypeConstants.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/PropertyTypeConstants.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/ReceivingState.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ReceivingState.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/ReceivingState.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ReceivingState.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/ScaleUnits.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ScaleUnits.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/ScaleUnits.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ScaleUnits.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/ScreenAnimation.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ScreenAnimation.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/ScreenAnimation.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ScreenAnimation.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/ScreenOrientation.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ScreenOrientation.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/ScreenOrientation.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/ScreenOrientation.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/Sensitivity.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/Sensitivity.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/Sensitivity.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/Sensitivity.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/StartedStatus.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/StartedStatus.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/StartedStatus.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/StartedStatus.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/TranslationContainer.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/TranslationContainer.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/TranslationContainer.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/TranslationContainer.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/TransportMethod.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/TransportMethod.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/TransportMethod.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/TransportMethod.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/UltrasonicSensorUnit.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/UltrasonicSensorUnit.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/UltrasonicSensorUnit.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/UltrasonicSensorUnit.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/VerticalAlignment.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/VerticalAlignment.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/VerticalAlignment.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/VerticalAlignment.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/YaVersion.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/YaVersion.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/YaVersion.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/YaVersion.java
diff --git a/appinventor/components/src/com/google/appinventor/components/common/package-info.java b/appinventor/component-constants/src/main/java/com/google/appinventor/components/common/package-info.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/common/package-info.java
rename to appinventor/component-constants/src/main/java/com/google/appinventor/components/common/package-info.java
diff --git a/appinventor/component-constants/src/main/resources/com/google/appinventor/components/CommonConstants.gwt.xml b/appinventor/component-constants/src/main/resources/com/google/appinventor/components/CommonConstants.gwt.xml
new file mode 100644
index 00000000000..bc12d6103b9
--- /dev/null
+++ b/appinventor/component-constants/src/main/resources/com/google/appinventor/components/CommonConstants.gwt.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/appinventor/components/tests/com/google/appinventor/components/common/HtmlEntitiesTest.java b/appinventor/component-constants/src/test/java/com/google/appinventor/components/common/HtmlEntitiesTest.java
similarity index 100%
rename from appinventor/components/tests/com/google/appinventor/components/common/HtmlEntitiesTest.java
rename to appinventor/component-constants/src/test/java/com/google/appinventor/components/common/HtmlEntitiesTest.java
diff --git a/appinventor/component-scripts/build.gradle.kts b/appinventor/component-scripts/build.gradle.kts
new file mode 100644
index 00000000000..4059b3b9149
--- /dev/null
+++ b/appinventor/component-scripts/build.gradle.kts
@@ -0,0 +1,16 @@
+plugins {
+ java
+}
+
+dependencies {
+ implementation(projects.commonUtils)
+ implementation(projects.componentConstants)
+ implementation(projects.componentAnnotations)
+ implementation("com.google.guava:guava:14.0.1")
+ implementation("org.json:json:20220320")
+}
+
+tasks.withType(JavaCompile::class).forEach {
+ // add utf-8 encoding to all source files
+ it.options.encoding = "UTF-8"
+}
diff --git a/appinventor/components/src/com/google/appinventor/components/scripts/ComponentDescriptorGenerator.java b/appinventor/component-scripts/src/main/java/com/google/appinventor/components/scripts/ComponentDescriptorGenerator.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/scripts/ComponentDescriptorGenerator.java
rename to appinventor/component-scripts/src/main/java/com/google/appinventor/components/scripts/ComponentDescriptorGenerator.java
diff --git a/appinventor/components/src/com/google/appinventor/components/scripts/ComponentListGenerator.java b/appinventor/component-scripts/src/main/java/com/google/appinventor/components/scripts/ComponentListGenerator.java
similarity index 100%
rename from appinventor/components/src/com/google/appinventor/components/scripts/ComponentListGenerator.java
rename to appinventor/component-scripts/src/main/java/com/google/appinventor/components/scripts/ComponentListGenerator.java
diff --git a/appinventor/components/src/com/google/appinventor/components/scripts/ComponentProcessor.java b/appinventor/component-scripts/src/main/java/com/google/appinventor/components/scripts/ComponentProcessor.java
similarity index 97%
rename from appinventor/components/src/com/google/appinventor/components/scripts/ComponentProcessor.java
rename to appinventor/component-scripts/src/main/java/com/google/appinventor/components/scripts/ComponentProcessor.java
index d02cf1220df..8a7d8d6e124 100644
--- a/appinventor/components/src/com/google/appinventor/components/scripts/ComponentProcessor.java
+++ b/appinventor/component-scripts/src/main/java/com/google/appinventor/components/scripts/ComponentProcessor.java
@@ -1,2980 +1,2997 @@
-// -*- mode: java; c-basic-offset: 2; -*-
-// Copyright 2009-2011 Google, All Rights reserved
-// Copyright 2011-2019 MIT, All rights reserved
-// Released under the Apache License, Version 2.0
-// http://www.apache.org/licenses/LICENSE-2.0
-
-package com.google.appinventor.components.scripts;
-
-import com.google.appinventor.components.annotations.DesignerComponent;
-import com.google.appinventor.components.annotations.DesignerProperty;
-import com.google.appinventor.components.annotations.IsColor;
-import com.google.appinventor.components.annotations.PropertyCategory;
-import com.google.appinventor.components.annotations.SimpleEvent;
-import com.google.appinventor.components.annotations.SimpleFunction;
-import com.google.appinventor.components.annotations.SimpleObject;
-import com.google.appinventor.components.annotations.SimpleProperty;
-import com.google.appinventor.components.annotations.SimpleBroadcastReceiver;
-import com.google.appinventor.components.annotations.UsesActivityMetadata;
-import com.google.appinventor.components.annotations.UsesApplicationMetadata;
-import com.google.appinventor.components.annotations.UsesAssets;
-import com.google.appinventor.components.annotations.UsesLibraries;
-import com.google.appinventor.components.annotations.UsesNativeLibraries;
-import com.google.appinventor.components.annotations.UsesPermissions;
-import com.google.appinventor.components.annotations.UsesActivities;
-import com.google.appinventor.components.annotations.UsesBroadcastReceivers;
-import com.google.appinventor.components.annotations.UsesContentProviders;
-import com.google.appinventor.components.annotations.UsesQueries;
-import com.google.appinventor.components.annotations.UsesServices;
-import com.google.appinventor.components.annotations.androidmanifest.ActivityElement;
-import com.google.appinventor.components.annotations.androidmanifest.ReceiverElement;
-import com.google.appinventor.components.annotations.androidmanifest.IntentFilterElement;
-import com.google.appinventor.components.annotations.androidmanifest.MetaDataElement;
-import com.google.appinventor.components.annotations.androidmanifest.ActionElement;
-import com.google.appinventor.components.annotations.androidmanifest.DataElement;
-import com.google.appinventor.components.annotations.androidmanifest.CategoryElement;
-import com.google.appinventor.components.annotations.androidmanifest.ServiceElement;
-import com.google.appinventor.components.annotations.androidmanifest.ProviderElement;
-import com.google.appinventor.components.annotations.androidmanifest.PathPermissionElement;
-import com.google.appinventor.components.annotations.androidmanifest.GrantUriPermissionElement;
-import com.google.appinventor.components.common.PropertyTypeConstants;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-
-import java.io.IOException;
-import java.io.Writer;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.SortedMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.annotation.processing.AbstractProcessor;
-import javax.annotation.processing.Messager;
-import javax.annotation.processing.ProcessingEnvironment;
-import javax.annotation.processing.RoundEnvironment;
-import javax.lang.model.SourceVersion;
-import javax.lang.model.element.AnnotationMirror;
-import javax.lang.model.element.AnnotationValue;
-import javax.lang.model.element.AnnotationValueVisitor;
-import javax.lang.model.element.Element;
-import javax.lang.model.element.ElementKind;
-import javax.lang.model.element.ExecutableElement;
-import javax.lang.model.element.Modifier;
-import javax.lang.model.element.PackageElement;
-import javax.lang.model.element.TypeElement;
-import javax.lang.model.element.VariableElement;
-import javax.lang.model.type.ArrayType;
-import javax.lang.model.type.DeclaredType;
-import javax.lang.model.type.ErrorType;
-import javax.lang.model.type.ExecutableType;
-import javax.lang.model.type.NoType;
-import javax.lang.model.type.NullType;
-import javax.lang.model.type.PrimitiveType;
-import javax.lang.model.type.TypeKind;
-import javax.lang.model.type.TypeMirror;
-import javax.lang.model.type.TypeVariable;
-import javax.lang.model.type.UnionType;
-import javax.lang.model.type.WildcardType;
-import javax.lang.model.util.AbstractTypeVisitor7;
-import javax.lang.model.util.Elements;
-import javax.lang.model.util.SimpleTypeVisitor7;
-import javax.lang.model.util.Types;
-
-import javax.tools.Diagnostic;
-import javax.tools.Diagnostic.Kind;
-import javax.tools.FileObject;
-import javax.tools.StandardLocation;
-
-/**
- * Processor for generating output files based on the annotations and
- * javadoc in the component source code.
- *
- * Specifically, this reads over the source files, building up a representation
- * of components and their designer properties, properties, methods, and
- * events. Concrete subclasses implement the method {@link #outputResults()}
- * to generate output.
- *
- * Currently, the following annotations are used:
- *
- *
{@link DesignerComponent} and {@link SimpleObject} to identify
- * components. Subclasses can distinguish between the two through
- * the boolean fields
- * {@link ComponentProcessor.ComponentInfo#designerComponent} and
- * {@link ComponentProcessor.ComponentInfo#simpleObject}.
- *
{@link DesignerProperty} to identify designer properties.
- *
{@link SimpleProperty} to identify properties.
- *
{@link SimpleFunction} to identify methods.
- *
{@link SimpleEvent} to identify events.
- *
- *
- * @author spertus@google.com (Ellen Spertus)
- *
- * [lyn, 2015/12/29] Added deprecated instance variable to ParameterizedFeature.
- * This is inherited by Event, Method, and Property, which are modified
- * slightly to handle it.
- *
- * [Will, 2016/9/20] Added methods to process annotations in the package
- * com.google.appinventor.components.annotations.androidmanifest and the
- * appropriate calls in {@link #processComponent(Element)}.
- */
-public abstract class ComponentProcessor extends AbstractProcessor {
- private static final String OUTPUT_PACKAGE = "";
-
- private static final String MISSING_SIMPLE_PROPERTY_ANNOTATION =
- "Designer property %s does not have a corresponding @SimpleProperty annotation.";
- private static final String BOXED_TYPE_ERROR =
- "Found use of boxed type %s. Please use the primitive type %s instead";
-
- // Returned by getSupportedAnnotationTypes()
- private static final Set SUPPORTED_ANNOTATION_TYPES = ImmutableSet.of(
- "com.google.appinventor.components.annotations.DesignerComponent",
- "com.google.appinventor.components.annotations.DesignerProperty",
- "com.google.appinventor.components.annotations.SimpleEvent",
- "com.google.appinventor.components.annotations.SimpleFunction",
- "com.google.appinventor.components.annotations.SimpleObject",
- "com.google.appinventor.components.annotations.SimpleProperty",
- // TODO(Will): Remove the following string once the deprecated
- // @SimpleBroadcastReceiver annotation is removed. It should
- // should remain for the time being because otherwise we'll break
- // extensions currently using @SimpleBroadcastReceiver.
- "com.google.appinventor.components.annotations.SimpleBroadcastReceiver",
- "com.google.appinventor.components.annotations.UsesAssets",
- "com.google.appinventor.components.annotations.UsesLibraries",
- "com.google.appinventor.components.annotations.UsesNativeLibraries",
- "com.google.appinventor.components.annotations.UsesActivities",
- "com.google.appinventor.components.annotations.UsesBroadcastReceivers",
- "com.google.appinventor.components.annotations.UsesPermissions",
- "com.google.appinventor.components.annotations.UsesQueries",
- "com.google.appinventor.components.annotations.UsesServices",
- "com.google.appinventor.components.annotations.UsesContentProviders");
-
- // Returned by getRwString()
- private static final String READ_WRITE = "read-write";
- private static final String READ_ONLY = "read-only";
- private static final String WRITE_ONLY = "write-only";
-
- // Must match buildserver.compiler.ARMEABI_V7A_SUFFIX
- private static final String ARMEABI_V7A_SUFFIX = "-v7a";
- // Must match buildserver.compiler.ARMEABI_V8A_SUFFIX
- private static final String ARM64_V8A_SUFFIX = "-v8a";
- // Must match buildserver.compiler.X86_64_SUFFIX
- private static final String X86_64_SUFFIX = "-x8a";
-
- private static final String TYPE_PLACEHOLDER = "%type%";
-
- private static final Map BOXED_TYPES = new HashMap<>();
-
- static {
- BOXED_TYPES.put("java.lang.Boolean", "boolean");
- BOXED_TYPES.put("java.lang.Byte", "byte");
- BOXED_TYPES.put("java.lang.Char", "char");
- BOXED_TYPES.put("java.lang.Short", "short");
- BOXED_TYPES.put("java.lang.Integer", "int");
- BOXED_TYPES.put("java.lang.Long", "long");
- BOXED_TYPES.put("java.lang.Float", "float");
- BOXED_TYPES.put("java.lang.Double", "double");
- }
-
- // The next two fields are set in init().
- /**
- * A handle allowing access to facilities provided by the annotation
- * processing tool framework
- */
- private Elements elementUtils;
- private Types typeUtils;
-
- /**
- * Produced through {@link ProcessingEnvironment#getMessager()} and
- * used for outputing errors and warnings.
- */
- // Set in process()
- protected Messager messager;
-
- /**
- * Indicates which pass is being performed by the Java annotation processor
- */
- private int pass = 0;
-
- /**
- * Information about every App Inventor component. Keys are fully-qualified names
- * (such as "com.google.appinventor.components.runtime.components.android.Label"), and
- * values are the corresponding {@link ComponentProcessor.ComponentInfo} objects.
- * This is constructed by {@link #process} for use in {@link #outputResults()}.
- */
- protected final SortedMap components = Maps.newTreeMap();
-
- /**
- * Information about every option list helper block. Keys are simple names, and values are the
- * corresponding {@link ComponentProcessor.OptionList} objects. This is constructed as a side
- * effect of {@link #process} for use in {@link #outputResults()}.
- */
- protected final Map optionLists = Maps.newTreeMap();
-
- /**
- * A list of asset filters, which are in fact lists of strings. This gets intialized with an empty
- * filter by the ComponentProcessor constructor.
- */
- protected List> filters;
-
- private final List componentTypes = Lists.newArrayList();
-
- /**
- * A set of visited types in the class hierarchy. This is used to reduce the complexity of
- * detecting whether a class implements {@link com.google.appinventor.components.runtime.Component}
- * from O(n^2) to O(n) by tracking visited nodes to prevent repeat explorations of the class tree.
- */
- private final Set visitedTypes = new HashSet<>();
-
- public ComponentProcessor() {
- filters = new ArrayList>();
- filters.add(new ArrayList());
- }
-
- /**
- * Represents a parameter consisting of a name and a type.
- */
- protected class Parameter implements Cloneable {
- /**
- * The parameter name
- */
- protected final String name;
-
- /**
- * The parameter's Java type, such as int or java.lang.String.
- */
- protected final TypeMirror type;
-
- /**
- * Indicate whether this parameter is an integer that represents a color.
- */
- protected final boolean color;
-
- /**
- * The helper key associated with this parameter, if any.
- */
- protected HelperKey helper;
-
- /**
- * Constructs a Parameter.
- *
- * @param name the parameter name
- * @param type the parameter's Java type (such as int or java.lang.String)
- */
- protected Parameter(String name, TypeMirror type) {
- this(name, type, false);
- }
-
- protected Parameter(String name, TypeMirror type, boolean color) {
- this.name = name;
- this.type = type;
- this.color = color;
- // helper is null by default.
- }
-
- /**
- * Returns the HelperKey associated with this parameter, if one exists. Null otherwise.
- * @return the HelperKey associated with this parameter.
- */
- protected HelperKey getHelperKey() {
- return helper;
- }
-
- /**
- * Returns the string representation of the Yail type for this parameter.
- * @return the string representation of the Yail type for this parameter.
- * @throws RuntimeException if {@code parameter} does not have a
- * corresponding Yail type
- */
- protected String getYailType() {
- return javaTypeToYailType(type);
- }
-
- @Override
- public Parameter clone() {
- Parameter param = new Parameter(name, type, color);
- param.helper = helper;
- return param;
- }
- }
-
- protected class Continuation extends Parameter {
- protected final TypeMirror underlyingType;
-
- protected Continuation(String name, final TypeMirror type) {
- this(name, type, false);
- }
-
- protected Continuation(String name, TypeMirror type, boolean color) {
- super(name, type, color);
- underlyingType = type.accept(new AbstractTypeVisitor7() {
- @Override
- public TypeMirror visitPrimitive(PrimitiveType t, Void unused) {
- return null;
- }
-
- @Override
- public TypeMirror visitNull(NullType t, Void unused) {
- return null;
- }
-
- @Override
- public TypeMirror visitArray(ArrayType t, Void unused) {
- return null;
- }
-
- @Override
- public TypeMirror visitDeclared(DeclaredType t, Void unused) {
- List extends TypeMirror> arglist = t.getTypeArguments();
- if (arglist.isEmpty()) {
- messager.printMessage(Kind.ERROR, "Continuation should be specialized with type.",
- t.asElement());
- }
- return arglist.get(0);
- }
-
- @Override
- public TypeMirror visitError(ErrorType t, Void unused) {
- return null;
- }
-
- @Override
- public TypeMirror visitTypeVariable(TypeVariable t, Void unused) {
- return null;
- }
-
- @Override
- public TypeMirror visitWildcard(WildcardType t, Void unused) {
- return null;
- }
-
- @Override
- public TypeMirror visitExecutable(ExecutableType t, Void unused) {
- return null;
- }
-
- @Override
- public TypeMirror visitNoType(NoType t, Void unused) {
- return null;
- }
-
- @Override
- public TypeMirror visitUnion(UnionType t, Void unused) {
- return null;
- }
- }, null);
- }
-
- protected String getContinuationType() {
- return javaTypeToYailType(underlyingType, true);
- }
- }
-
- /**
- * Represents a component feature that has a name and a description.
- */
- protected abstract static class Feature {
- private static final Pattern AT_SIGN = Pattern.compile("[^\\\\]@");
- private static final Pattern LINK_FORM = Pattern.compile("\\{@link ([A-Za-z]*#?)([A-Za-z]*)[^}]*}");
- private static final Pattern CODE_FORM = Pattern.compile("\\{@code ([^}]*)}");
-
- private final String featureType;
- protected final String name;
- protected String description;
- protected boolean defaultDescription = false;
- protected String longDescription;
- protected boolean userVisible;
- protected boolean deprecated;
-
- protected Feature(String name, String description, String longDescription, String featureType,
- boolean userVisible, boolean deprecated) {
- this.featureType = featureType;
- this.name = name;
- setDescription(description);
- setLongDescription(longDescription);
- this.userVisible = userVisible;
- this.deprecated = deprecated;
- }
-
- public boolean isDefaultDescription() {
- return defaultDescription;
- }
-
- public void setDescription(String description) {
- if (description == null || description.isEmpty()) {
- this.description = featureType + " for " + name;
- defaultDescription = true;
- } else {
- // Throw out the first @ or { and everything after it,
- // in order to strip out @param, @author, {@link ...}, etc.
- this.description = description.split("@|\\{@")[0].trim();
- this.description = removeMarkup(this.description);
- defaultDescription = false;
- }
- }
- private String removeMarkup(String str) {
- String result = str.replaceAll("\\\\(.)", "$1");
- result = result.replaceAll("\\[([a-zA-Z0-9]*)\\]\\(#.*\\)", "$1");
- return result;
- }
- public void setLongDescription(String longDescription) {
- if (longDescription == null || longDescription.isEmpty()) {
- this.longDescription = this.description;
- } else if (longDescription.contains("@suppressdoc")) {
- this.longDescription = "";
- } else {
- this.longDescription = longDescription;
- }
- // Handle links
- Matcher linkMatcher = LINK_FORM.matcher(this.longDescription);
- StringBuffer sb = new StringBuffer();
- int lastEnd = 0;
- while (linkMatcher.find(lastEnd)) {
- sb.append(this.longDescription, lastEnd, linkMatcher.start());
- String clazz = linkMatcher.group(1);
- if (clazz.endsWith("#")) {
- clazz = clazz.substring(0, clazz.length() - 1);
- }
- if ("Form".equals(clazz)) {
- clazz = "Screen";
- }
- String func = linkMatcher.group(2);
- sb.append("[");
- if (!clazz.isEmpty()) {
- sb.append("`");
- sb.append(clazz);
- sb.append("`");
- if (!func.isEmpty()) {
- sb.append("'s ");
- }
- }
- if (!func.isEmpty()) {
- sb.append("`");
- sb.append(func);
- sb.append("`");
- }
- sb.append("](#");
- if (clazz.isEmpty()) {
- sb.append("%type%.");
- } else {
- sb.append(clazz);
- if (!func.isEmpty()) {
- sb.append(".");
- }
- }
- if (!func.isEmpty()) {
- sb.append(func);
- }
- sb.append(")");
- lastEnd = linkMatcher.end();
- }
- sb.append(this.longDescription.substring(lastEnd));
- this.longDescription = sb.toString();
- // Map {@code foo} to `foo`
- sb = new StringBuffer();
- Matcher codeMatcher = CODE_FORM.matcher(this.longDescription);
- lastEnd = 0;
- while (codeMatcher.find(lastEnd)) {
- sb.append(this.longDescription, lastEnd, codeMatcher.start());
- sb.append("`");
- sb.append(codeMatcher.group(1));
- sb.append("`");
- lastEnd = codeMatcher.end();
- }
- sb.append(this.longDescription.substring(lastEnd));
- this.longDescription = sb.toString();
- // Strip out the Javadoc annotations (@param, etc.) for end-user documentation
- Matcher m = AT_SIGN.matcher(this.longDescription);
- if (m.find()) {
- this.longDescription = this.longDescription.substring(0, m.start() + 1);
- }
- // Replace escaped @ with just @, e.g., so we can use @ in email address examples.
- this.longDescription = this.longDescription.replaceAll("\\\\@", "@").trim();
- }
-
- public String getLongDescription(ComponentInfo component) {
- if (longDescription == null || longDescription.isEmpty()) {
- return description;
- }
- String name = component.name.equals("Form") ? "Screen" : component.name;
- return longDescription.replaceAll("%type%", name).trim();
- }
-
- /**
- * Returns whether this property is visible in the Blocks Editor, as retrieved
- * from {@link SimpleProperty#userVisible()}.
- *
- * @return whether the property is visible in the Blocks Editor
- */
- protected boolean isUserVisible() {
- return userVisible;
- }
-
- /**
- * Returns whether this property is deprecated in the Blocks Editor.
- *
- * @return whether the property is visible in the Blocks Editor
- */
- protected boolean isDeprecated() {
- return deprecated;
- }
- }
-
- /**
- * Represents a component feature that has a name, description, and
- * parameters.
- */
- protected abstract class ParameterizedFeature extends Feature {
- // Inherits name, description
- protected final List parameters;
-
- protected ParameterizedFeature(String name, String description, String longDescription,
- String feature, boolean userVisible, boolean deprecated) {
- super(name, description, longDescription, feature, userVisible, deprecated);
- parameters = Lists.newArrayList();
- }
-
- /**
- * Adds the given parameter to this ParameterizedFeature.
- * @param param The parameter to add to this ParameterizedFeature.
- */
- protected void addParameter(Parameter param) {
- parameters.add(param);
- }
-
- /**
- * Generates a comma-separated string corresponding to the parameter list,
- * using Yail types (e.g., "number n, text t1").
- *
- * @return a string representation of the parameter list
- * @throws RuntimeException if the parameter type cannot be mapped to any
- * of the legal return values
- */
- protected String toParameterString() {
- StringBuilder sb = new StringBuilder();
- int count = 0;
- for (Parameter param : parameters) {
- sb.append(param.getYailType());
- sb.append(" ");
- sb.append(param.name);
- if (++count != parameters.size()) {
- sb.append(", ");
- }
- }
- return new String(sb);
- }
- }
-
- /**
- * Represents an App Inventor event (annotated with {@link SimpleEvent}).
- */
- protected final class Event extends ParameterizedFeature
- implements Cloneable, Comparable {
- // Inherits name, description, and parameters
-
- protected Event(String name, String description, String longDescription, boolean userVisible, boolean deprecated) {
- super(name, description, longDescription, "Event", userVisible, deprecated);
- }
-
- @Override
- public Event clone() {
- Event that = new Event(name, description, longDescription, userVisible, deprecated);
- for (Parameter p : parameters) {
- that.addParameter(p.clone());
- }
- return that;
- }
-
- @Override
- public int compareTo(Event e) {
- return name.compareTo(e.name);
- }
- }
-
- /**
- * Represents an App Inventor component method (annotated with
- * {@link SimpleFunction}).
- */
- protected final class Method extends ParameterizedFeature
- implements Cloneable, Comparable {
- /**
- * The method's Java return type. Null if the method is a void method.
- */
- private TypeMirror returnType;
- /**
- * The helper key associated with this method's return type.
- */
- private HelperKey returnHelperKey;
- /**
- * Indicate whether this method's return type an integer that represents a
- * color.
- */
- private boolean color;
-
- /**
- * Indicate whether the method's return should be re-written into a continuation.
- */
- private boolean continuation;
-
- protected Method(String name, String description, String longDescription, boolean userVisible,
- boolean deprecated) {
- super(name, description, longDescription, "Method", userVisible, deprecated);
- }
-
- /**
- * Returns the string representation of this method's Java return type, or null of this method
- * is a void method.
- */
- protected String getReturnType() {
- if (returnType != null) {
- return returnType.toString();
- }
- return null;
- }
-
- /**
- * Returns this method's Yail return type (e.g., "number", "text", "list", etc).
- * @return the method's Yail return type.
- */
- protected String getYailReturnType() {
- return javaTypeToYailType(returnType, continuation);
- }
-
- /**
- * Returns the HelperKey associated with the return type of this method, if one exists. Null
- * otherwise.
- *
- * @return the helper key associated with the return type of this method.
- */
- protected HelperKey getReturnHelperKey() {
- return returnHelperKey;
- }
-
- /**
- * Returns true if this method's return type is an integer which represents a color.
- *
- * @return true if this method's return type is an integer which represents a color.
- */
- protected boolean isColor() {
- return color;
- }
-
- protected boolean isContinuation() {
- return continuation;
- }
-
- @Override
- public Method clone() {
- Method that = new Method(name, description, longDescription, userVisible, deprecated);
- for (Parameter p : parameters) {
- that.addParameter(p.clone());
- }
- that.returnType = returnType;
- that.returnHelperKey = returnHelperKey;
- return that;
- }
-
- @Override
- public int compareTo(Method f) {
- return name.compareTo(f.name);
- }
- }
-
- /**
- * Represents an App Inventor component property (annotated with
- * {@link SimpleProperty}).
- */
- protected final class Property extends Feature implements Cloneable {
- protected final String name;
- private PropertyCategory propertyCategory;
- private TypeMirror type;
- private boolean readable;
- private boolean writable;
- private String componentInfoName;
- private boolean color;
- private HelperKey helper;
-
- protected Property(String name, String description, String longDescription,
- PropertyCategory category, boolean userVisible, boolean deprecated) {
- super(name, description, longDescription, "Property", userVisible, deprecated);
- this.propertyCategory = category;
- this.name = name;
- // All other properties can be left as their defaults.
- }
-
- @Override
- public Property clone() {
- Property that = new Property(name, description, longDescription, propertyCategory,
- isUserVisible(), isDeprecated());
- that.type = type;
- that.readable = readable;
- that.writable = writable;
- that.componentInfoName = componentInfoName;
- that.color = color;
- that.helper = helper;
- return that;
- }
-
- @Override
- public String toString() {
- StringBuilder sb = new StringBuilder("");
- return sb.toString();
- }
-
- /**
- * Returns the description of this property, as retrieved by
- * {@link SimpleProperty#description()}.
- *
- * @return the description of this property
- */
- protected String getDescription() {
- return description;
- }
-
- /**
- * Returns the string representaiton of this property's java type.
- *
- * @return the string representaiton of this property's java type.
- */
- protected String getType() {
- // Type should always be non-null.
- return type.toString();
- }
-
- /**
- * Returns this property's Yail type (e.g., "number", "text", "list", etc).
- *
- * @return this property's Yail type (e.g., "number", "text", "list", etc).
- */
- protected String getYailType() {
- return javaTypeToYailType(type);
- }
-
- /**
- * Returns whether this property is readable (has a getter).
- *
- * @return whether this property is readable
- */
- protected boolean isReadable() {
- return readable;
- }
-
- /**
- * Returns whether this property is writable (has a setter).
- *
- * @return whether this property is writable
- */
- protected boolean isWritable() {
- return writable;
- }
-
- protected boolean isColor() {
- return color;
- }
-
- /**
- * Returns the HelperKey associated with this property, if one exists. Null otherwise.
- * @return the HelperKey associated with this property, if one exists.
- */
- protected HelperKey getHelperKey() {
- return helper;
- }
-
- /**
- * Returns a string indicating whether this property is readable and/or
- * writable.
- *
- * @return one of "read-write", "read-only", or "write-only"
- * @throws {@link RuntimeException} if the property is neither readable nor
- * writable
- */
- protected String getRwString() {
- if (readable) {
- if (writable) {
- return READ_WRITE;
- } else {
- return READ_ONLY;
- }
- } else {
- if (!writable) {
- throw new RuntimeException("Property " + name +
- " is neither readable nor writable");
- }
- return WRITE_ONLY;
- }
- }
- }
-
- /**
- * An enum specifying the available types of helper blocks aka types of helper UI.
- * Currently the only type of helper UI is an OPTION_LIST which defines a dropdown UI in the
- * blocks editor. This is associated with the OptionList data type, ie OptionList data always has
- * an OPTION_LIST style UI in the blocks editor (as of now).
- */
- protected enum HelperType { OPTION_LIST, ASSET }
-
- /**
- * A key that allows you to access info about a helper block.
- *
- *
This class could be generic, and we could use subtyping to define the different HelperTypes
- * but I (Beka) think it makes more sense to make this closely match the JavaScript
- * implementation.
- */
- protected static final class HelperKey {
- private final HelperType helperType;
-
- private final Object key;
-
- /**
- * Creates a HelperKey which can be used to access data about a helper block.
- */
- protected HelperKey(HelperType type, Object key) {
- this.helperType = type;
- this.key = key;
- }
-
- /**
- * Returns the type of helper block, aka the type of helper UI. Eg an option list.
- * @return the type of helper block.
- */
- protected HelperType getType() {
- return helperType;
- }
-
- /**
- * Returns the key to the specific helper data. Eg in the case of an option list helper, this
- * key could be used to look up values in the optionLists Map.
- * If the helper block doesn't need any special data, this can just return null.
- * @return key to the helper data.
- */
- protected Object getKey() {
- return key;
- }
- }
-
-
- /**
- * Represents a list of Options associated with some (enum) class. The data in this OptionList
- * is used to create OptionList helper blocks.
- *
- *
Here JSON-ified example of such data, in this case we are looking at the Direction enum with
- * a default value of East.
- * {
- * "className": "com.google.appinventor.components.common.Direction",
- * "key": "Direction",
- * "tag": "Direction",
- * "defaultOpt": "East",
- * "underlyingType": "java.lang.Integer",
- * "options": [
- * { "name": "North", "value": "1", "description": "Option for North",
- * "deprecated": "false" },
- * { "name": "Northeast", "value": "2", "description": "Option for Northeast",
- * "deprecated": "false" },
- * { "name": "East", "value": "3", "description": "Option for East",
- * "deprecated": "false" },
- * { "name": "Southeast", "value": "4", "description": "Option for Southeast",
- * "deprecated": "false" },
- * { "name": "South", "value": "-1", "description": "Option for South",
- * "deprecated": "false" },
- * { "name": "Southwest", "value": "-2", "description": "Option for Southwest",
- * "deprecated": "false" },
- * { "name": "West", "value": "-3", "description": "Option for West",
- * "deprecated": "false" },
- * { "name": "Northwest", "value": "-4", "description": "Option for Northwest",
- * "deprecated": "false" }
- ]
- * }
- */
- protected final class OptionList {
- /**
- * A list of option values (Strings) and option info (Options).
- * For built-in components the Option name is used to look up the translated display text.
- * For extensions, which do not support i18n, the Option name /is/ the display text.
- */
- private final ArrayList