From 051e2e4b02095654aa97152962e3e1eb31586f30 Mon Sep 17 00:00:00 2001
From: Akash Yadav
Date: Sun, 26 Jun 2022 09:37:57 +0530
Subject: [PATCH] Reformat all source file
---
.github/ISSUE_TEMPLATE/bug.md | 14 +-
.github/ISSUE_TEMPLATE/feature_request.md | 7 +-
CODE_OF_CONDUCT.md | 126 +-
CONTRIBUTING.md | 32 +-
README.md | 54 +-
actions/build.gradle | 14 +-
.../itsaky/androidide/actions/ActionItem.kt | 148 +-
.../itsaky/androidide/actions/ActionMenu.kt | 14 +-
.../androidide/actions/ActionsRegistry.kt | 152 +-
.../internal/DefaultActionsRegistry.kt | 238 +-
.../main/assets/templates/xml/drawable.xml | 5 +-
app/src/main/assets/templates/xml/layout.xml | 12 +-
app/src/main/assets/templates/xml/menu.xml | 7 +-
.../com/itsaky/androidide/AboutActivity.java | 12 +-
.../androidide/CrashHandlerActivity.java | 15 +-
.../itsaky/androidide/DesignerActivity.java | 12 +-
.../com/itsaky/androidide/EditorActivity.java | 178 +-
.../com/itsaky/androidide/MainActivity.java | 27 +-
.../androidide/PreferencesActivity.java | 12 +-
.../com/itsaky/androidide/SplashActivity.java | 8 +-
.../itsaky/androidide/TerminalActivity.java | 481 +-
.../androidide/actions/BaseBuildAction.kt | 42 +-
.../androidide/actions/BaseEditorAction.kt | 58 +-
.../actions/EditorActivityAction.kt | 28 +-
.../actions/EditorActivityActionMenu.kt | 2 +-
.../androidide/actions/EditorRelatedAction.kt | 30 +-
.../actions/build/AssembleDebugAction.kt | 20 +-
.../actions/build/AssembleReleaseAction.kt | 20 +-
.../androidide/actions/build/BuildAction.kt | 20 +-
.../actions/build/BuildActionMenu.kt | 24 +-
.../actions/build/CancelBuildAction.kt | 69 +-
.../androidide/actions/build/CleanAction.kt | 20 +-
.../actions/build/CreateAABAction.kt | 20 +-
.../actions/build/ProjectSyncAction.kt | 19 +-
.../actions/build/QuickRunAction.kt | 20 +-
.../androidide/actions/build/RebuildAction.kt | 20 +-
.../androidide/actions/build/RunActionMenu.kt | 16 +-
.../androidide/actions/editor/CopyAction.kt | 24 +-
.../androidide/actions/editor/CutAction.kt | 43 +-
.../actions/editor/ExpandSelectionAction.kt | 18 +-
.../androidide/actions/editor/PasteAction.kt | 47 +-
.../actions/editor/SelectAllAction.kt | 31 +-
.../actions/editor/find/GoToNextAction.kt | 24 +-
.../actions/editor/find/GoToPreviousAction.kt | 24 +-
.../actions/editor/find/ReplaceAction.kt | 92 +-
.../editor/find/SearchActionModeAction.kt | 2 +-
.../actions/etc/DaemonStatusAction.kt | 30 +-
.../androidide/actions/etc/FileTreeAction.kt | 38 +-
.../androidide/actions/etc/FindActionMenu.kt | 24 +-
.../actions/etc/FindInFileAction.kt | 22 +-
.../actions/etc/FindInProjectAction.kt | 60 +-
.../actions/etc/PreviewLayoutAction.kt | 51 +-
.../actions/file/FormatCodeAction.kt | 22 +-
.../androidide/actions/file/SaveFileAction.kt | 92 +-
.../androidide/actions/lint/LintAction.kt | 20 +-
.../actions/lint/LintDebugAction.kt | 20 +-
.../actions/lint/LintReleaseAction.kt | 20 +-
.../androidide/actions/lint/LintTaskMenu.kt | 18 +-
.../androidide/actions/text/RedoAction.kt | 52 +-
.../androidide/actions/text/UndoAction.kt | 44 +-
.../androidide/adapters/AttrListAdapter.java | 28 +-
.../adapters/EditorBottomSheetTabAdapter.java | 62 +-
.../androidide/adapters/IconTextAdapter.java | 16 +-
.../androidide/adapters/LogLinesAdapter.kt | 202 +-
.../adapters/SimpleIconTextAdapter.java | 10 +-
.../adapters/SymbolInputAdapter.java | 36 +-
.../adapters/WizardTemplateAdapter.java | 14 +-
.../adapters/XMLAttributeListAdapter.java | 8 +-
.../itsaky/androidide/app/StudioActivity.java | 90 +-
.../filepicker/IDEDocumentsProvider.java | 208 +-
.../androidide/fragments/BaseFragment.java | 49 +-
.../fragments/DiagnosticsListFragment.java | 16 +-
.../fragments/FileTreeFragment.java | 28 +-
.../androidide/fragments/LogFragments.kt | 44 +-
.../androidide/fragments/LogViewFragment.kt | 2 +-
.../androidide/fragments/MainFragment.java | 20 +-
.../fragments/NonEditableEditorFragment.java | 12 +-
.../fragments/SearchResultFragment.java | 16 +-
.../androidide/fragments/WizardFragment.java | 50 +-
.../attr/AbstractReferenceEditor.java | 18 +-
.../fragments/attr/ColorEditor.java | 45 +-
.../androidide/fragments/attr/FlagEditor.java | 14 +-
.../preferences/BasePreferenceFragment.java | 10 +-
.../preferences/BuildPreferences.java | 18 +-
.../fragments/preferences/IDEPreferences.java | 28 +-
.../fragments/sheets/AttrEditorSheet.java | 88 +-
.../fragments/sheets/AttributeListSheet.java | 28 +-
.../sheets/BaseBottomSheetFragment.java | 16 +-
.../fragments/sheets/OptionsListFragment.java | 24 +-
.../fragments/sheets/ProgressSheet.java | 12 +-
.../fragments/sheets/TextSheetFragment.java | 56 +-
.../androidide/language/IDELanguage.java | 21 +-
.../androidide/language/cpp/CppAnalyzer.java | 22 +-
.../androidide/language/cpp/CppLanguage.java | 64 +-
.../language/groovy/GroovyAnalyzer.kt | 2 -
.../language/groovy/GroovyLanguage.java | 62 +-
.../BaseIncrementalAnalyzeManager.java | 278 +-
.../androidide/language/java/JavaAnalyzer.kt | 2 -
.../language/java/JavaLanguage.java | 60 +-
.../language/kotlin/KotlinAnalyzer.kt | 2 -
.../language/kotlin/KotlinLanguage.java | 69 +-
.../androidide/language/xml/XMLLanguage.java | 64 +-
.../androidide/lsp/IDELanguageClientImpl.java | 386 +-
.../itsaky/androidide/models/ApkMetadata.java | 8 +-
.../androidide/models/IconTextListItem.java | 8 +-
.../androidide/models/NewProjectDetails.java | 26 +-
.../androidide/models/ProjectTemplate.java | 28 +-
.../itsaky/androidide/models/UIWidget.java | 44 +-
.../androidide/models/UIWidgetGroup.java | 91 +-
.../androidide/models/XMLAttribute.java | 36 +-
.../androidide/projects/CachingProject.kt | 197 +-
.../androidide/projects/ProjectManager.kt | 288 +-
.../projects/ProjectResourceTable.java | 178 +-
.../androidide/services/BuildService.kt | 70 +-
.../services/GradleBuildService.java | 12 +-
.../androidide/services/LogReceiver.java | 4 +-
.../callables/ListDirectoryCallable.java | 17 +-
.../androidide/ui/WidgetDragListener.java | 55 +-
.../androidide/ui/WidgetTouchListener.java | 10 +-
.../itsaky/androidide/utils/DialogUtils.java | 24 +-
.../androidide/utils/EditorActivityActions.kt | 62 +-
.../utils/EditorBottomSheetBehavior.java | 2 +-
.../utils/HighlightRangeHelper.java | 63 +-
.../com/itsaky/androidide/utils/LSPUtils.java | 75 +-
.../androidide/utils/ListingFileRedirect.kt | 28 +-
.../androidide/utils/ProjectWriter.java | 3 +-
.../com/itsaky/androidide/utils/Symbols.java | 18 +-
.../androidide/viewmodel/WizardViewModel.java | 3 +-
.../androidide/views/MaterialBanner.java | 54 +-
.../androidide/views/ScalableTabLayout.kt | 54 +-
.../androidide/views/SymbolInputView.java | 8 +-
.../views/editor/BaseEditorWindow.java | 18 +-
.../views/editor/CodeEditorView.java | 246 +-
.../androidide/views/editor/IDEEditor.java | 104 +-
.../views/editor/SearchActionMode.kt | 114 +-
.../views/transition/CubicBezierArc.java | 104 +-
.../views/transition/ProgressTransition.java | 30 +-
.../rosemoe/sora/widget/IDEEditorSearcher.kt | 144 +-
app/src/main/res/anim/popup_in.xml | 30 +-
app/src/main/res/anim/popup_out.xml | 30 +-
app/src/main/res/animator/dialog_in.xml | 20 +-
app/src/main/res/animator/dialog_out.xml | 20 +-
.../res/drawable-xhdpi/ic_font_ligatures.xml | 6 +-
.../bg_design_container_background.xml | 23 +-
app/src/main/res/drawable/bg_shadow.xml | 22 +-
.../drawable/bg_widget_drag_placeholder.xml | 13 +-
.../res/drawable/bg_widget_group_selected.xml | 13 +-
app/src/main/res/drawable/ic_add.xml | 6 +-
app/src/main/res/drawable/ic_android.xml | 17 +-
.../main/res/drawable/ic_bash_commands.xml | 6 +-
app/src/main/res/drawable/ic_bundle.xml | 6 +-
app/src/main/res/drawable/ic_chevron_down.xml | 6 +-
.../main/res/drawable/ic_chevron_right.xml | 6 +-
app/src/main/res/drawable/ic_clean.xml | 6 +-
app/src/main/res/drawable/ic_close.xml | 6 +-
app/src/main/res/drawable/ic_close_all.xml | 6 +-
app/src/main/res/drawable/ic_close_others.xml | 6 +-
app/src/main/res/drawable/ic_close_this.xml | 6 +-
app/src/main/res/drawable/ic_code.xml | 6 +-
.../res/drawable/ic_compilation_error.xml | 56 +-
app/src/main/res/drawable/ic_delete.xml | 6 +-
app/src/main/res/drawable/ic_drawing.xml | 6 +-
app/src/main/res/drawable/ic_email.xml | 6 +-
.../main/res/drawable/ic_expand_selection.xml | 6 +-
.../main/res/drawable/ic_file_copy_path.xml | 6 +-
app/src/main/res/drawable/ic_file_rename.xml | 6 +-
app/src/main/res/drawable/ic_file_unknown.xml | 6 +-
.../res/drawable/ic_filetype_activity.xml | 6 +-
.../main/res/drawable/ic_filetype_enum.xml | 6 +-
.../res/drawable/ic_filetype_interface.xml | 6 +-
app/src/main/res/drawable/ic_filter.xml | 6 +-
app/src/main/res/drawable/ic_folder.xml | 6 +-
app/src/main/res/drawable/ic_format_code.xml | 13 +-
app/src/main/res/drawable/ic_github.xml | 9 +-
app/src/main/res/drawable/ic_gradle.xml | 32 +-
app/src/main/res/drawable/ic_help.xml | 6 +-
app/src/main/res/drawable/ic_hexadecimal.xml | 6 +-
app/src/main/res/drawable/ic_info.xml | 6 +-
.../main/res/drawable/ic_language_gradle.xml | 6 +-
.../main/res/drawable/ic_language_java.xml | 6 +-
.../main/res/drawable/ic_language_json.xml | 6 +-
.../main/res/drawable/ic_language_kotlin.xml | 6 +-
app/src/main/res/drawable/ic_language_xml.xml | 6 +-
app/src/main/res/drawable/ic_lint.xml | 6 +-
app/src/main/res/drawable/ic_loupe.xml | 6 +-
app/src/main/res/drawable/ic_min_sdk.xml | 6 +-
app/src/main/res/drawable/ic_new_file.xml | 6 +-
app/src/main/res/drawable/ic_new_folder.xml | 6 +-
app/src/main/res/drawable/ic_open_project.xml | 6 +-
app/src/main/res/drawable/ic_package.xml | 6 +-
.../main/res/drawable/ic_password_input.xml | 6 +-
app/src/main/res/drawable/ic_pick_color.xml | 6 +-
.../main/res/drawable/ic_preview_layout.xml | 6 +-
app/src/main/res/drawable/ic_rebuild.xml | 6 +-
app/src/main/res/drawable/ic_redo.xml | 6 +-
app/src/main/res/drawable/ic_run.xml | 6 +-
app/src/main/res/drawable/ic_run_debug.xml | 6 +-
app/src/main/res/drawable/ic_run_outline.xml | 6 +-
app/src/main/res/drawable/ic_run_release.xml | 6 +-
app/src/main/res/drawable/ic_save.xml | 6 +-
app/src/main/res/drawable/ic_search.xml | 6 +-
app/src/main/res/drawable/ic_search_file.xml | 6 +-
app/src/main/res/drawable/ic_search_next.xml | 13 +-
.../main/res/drawable/ic_search_previous.xml | 13 +-
.../main/res/drawable/ic_search_project.xml | 6 +-
.../main/res/drawable/ic_search_replace.xml | 13 +-
app/src/main/res/drawable/ic_settings.xml | 6 +-
app/src/main/res/drawable/ic_share.xml | 6 +-
app/src/main/res/drawable/ic_stop_daemons.xml | 6 +-
app/src/main/res/drawable/ic_sync.xml | 13 +-
app/src/main/res/drawable/ic_tab.xml | 6 +-
app/src/main/res/drawable/ic_target_sdk.xml | 6 +-
app/src/main/res/drawable/ic_telegram.xml | 6 +-
app/src/main/res/drawable/ic_terminal.xml | 6 +-
app/src/main/res/drawable/ic_text_lower.xml | 6 +-
app/src/main/res/drawable/ic_text_size.xml | 6 +-
app/src/main/res/drawable/ic_undo.xml | 6 +-
.../res/drawable/ic_view_select_parent.xml | 13 +-
app/src/main/res/drawable/ic_website.xml | 6 +-
.../main/res/drawable/ic_widget_button.xml | 13 +-
.../main/res/drawable/ic_widget_checkbox.xml | 13 +-
.../drawable/ic_widget_checked_textview.xml | 13 +-
.../main/res/drawable/ic_widget_edittext.xml | 6 +-
app/src/main/res/drawable/ic_widget_image.xml | 13 +-
.../main/res/drawable/ic_widget_linear.xml | 40 +-
.../main/res/drawable/ic_widget_progress.xml | 72 +-
.../res/drawable/ic_widget_radio_button.xml | 13 +-
.../main/res/drawable/ic_widget_seekbar.xml | 6 +-
.../main/res/drawable/ic_widget_spinner.xml | 13 +-
.../main/res/drawable/ic_widget_textview.xml | 13 +-
app/src/main/res/drawable/ic_wrap_text.xml | 10 +-
.../main/res/drawable/ic_xml_attribute.xml | 13 +-
app/src/main/res/layout/activity_about.xml | 144 +-
.../res/layout/activity_crash_handler.xml | 6 +-
app/src/main/res/layout/activity_designer.xml | 11 +-
app/src/main/res/layout/activity_main.xml | 8 +-
.../main/res/layout/activity_preferences.xml | 65 +-
app/src/main/res/layout/activity_splash.xml | 48 +-
app/src/main/res/layout/activity_terminal.xml | 12 +-
.../layout/fragment_non_editable_editor.xml | 5 +-
.../main/res/layout/layout_about_items.xml | 267 +-
.../layout/layout_attr_editor_sheet_item.xml | 23 +-
app/src/main/res/layout/layout_banner.xml | 94 +-
.../main/res/layout/layout_code_editor.xml | 35 +-
.../res/layout/layout_completion_item.xml | 154 +-
.../main/res/layout/layout_crash_report.xml | 4 +-
.../res/layout/layout_create_file_java.xml | 145 +-
.../res/layout/layout_diagnostic_group.xml | 23 +-
.../res/layout/layout_diagnostic_info.xml | 6 +-
.../res/layout/layout_diagnostic_item.xml | 53 +-
.../res/layout/layout_dialog_text_input.xml | 45 +-
.../res/layout/layout_editor_file_tree.xml | 41 +-
.../main/res/layout/layout_filetree_item.xml | 47 +-
.../main/res/layout/layout_loading_wizard.xml | 8 +-
app/src/main/res/layout/layout_nav_header.xml | 51 +-
.../res/layout/layout_optionssheet_item.xml | 44 +-
.../main/res/layout/layout_progress_sheet.xml | 85 +-
.../main/res/layout/layout_search_project.xml | 51 +-
.../res/layout/layout_search_result_group.xml | 109 +-
.../res/layout/layout_search_result_item.xml | 43 +-
app/src/main/res/layout/layout_sheet.xml | 41 +-
.../res/layout/layout_simple_icon_text.xml | 11 +-
.../main/res/layout/layout_symbol_item.xml | 8 +-
.../res/layout/layout_text_size_slider.xml | 45 +-
app/src/main/res/layout/setup_footer.xml | 26 +-
app/src/main/res/layout/wizard_details.xml | 47 +-
.../main/res/layout/wizard_template_item.xml | 10 +-
app/src/main/res/layout/wizard_templates.xml | 4 +-
app/src/main/res/menu/menu_editor_nav.xml | 72 +-
app/src/main/res/values-pt-rBR/strings.xml | 556 +-
app/src/main/res/values/arrays.xml | 3 +-
app/src/main/res/xml/motion_about.xml | 134 +-
.../builder/model/DefaultAndroidArtifact.kt | 40 +-
.../DefaultAndroidGradlePluginProjectFlags.kt | 16 +-
.../model/DefaultAndroidLibraryData.kt | 28 +-
.../builder/model/DefaultApiVersion.kt | 6 +-
.../model/DefaultArtifactDependencies.kt | 8 +-
.../builder/model/DefaultBundleInfo.kt | 10 +-
.../model/DefaultCustomSourceDirectory.kt | 6 +-
.../builder/model/DefaultGraphItem.kt | 8 +-
.../builder/model/DefaultJavaArtifact.kt | 18 +-
.../model/DefaultJavaCompileOptions.kt | 10 +-
.../builder/model/DefaultLibrary.kt | 16 +-
.../builder/model/DefaultLibraryInfo.kt | 18 +-
.../model/DefaultModelBuilderParameter.kt | 5 +-
.../builder/model/DefaultModelSyncFile.kt | 8 +-
.../builder/model/DefaultProjectInfo.kt | 16 +-
.../builder/model/DefaultProjectSyncIssues.kt | 4 +-
.../builder/model/DefaultSourceProvider.kt | 34 +-
.../model/DefaultSourceSetContainer.kt | 10 +-
.../builder/model/DefaultSyncIssue.kt | 12 +-
.../builder/model/DefaultTestInfo.kt | 10 +-
.../model/DefaultTestedTargetVariant.kt | 6 +-
.../model/DefaultUnresolvedDependency.kt | 4 +-
.../builder/model/DefaultVariant.kt | 20 +-
.../model/DefaultVariantDependencies.kt | 14 +-
.../model/DefaultViewBindingOptions.kt | 4 +-
build-tools/framework-stubs/build.gradle | 2 +-
.../androidide/diffutils/DiffUtils.java | 392 +-
.../androidide/fuzzysearch/Extractor.java | 64 +-
.../fuzzysearch/StringProcessor.java | 10 +-
.../fuzzysearch/ToStringFunction.java | 16 +-
.../algorithms/BasicAlgorithm.java | 12 +-
.../algorithms/DefaultStringFunction.java | 71 +-
.../algorithms/DefaultStringProcessor.java | 71 +-
.../algorithms/RatioAlgorithm.java | 14 +-
.../fuzzysearch/algorithms/TokenSet.java | 2 +-
.../fuzzysearch/algorithms/TokenSort.java | 2 +-
.../fuzzysearch/algorithms/Utils.java | 62 +-
.../fuzzysearch/algorithms/WeightedRatio.java | 11 +-
.../model/BoundExtractedResult.java | 8 +-
.../fuzzysearch/model/ExtractedResult.java | 8 +-
.../fuzzysearch/ratios/PartialRatio.java | 2 +-
.../java/com/google/googlejavaformat/Doc.java | 812 +-
.../google/googlejavaformat/DocBuilder.java | 36 +-
.../googlejavaformat/FormatterDiagnostic.java | 12 +-
.../com/google/googlejavaformat/Indent.java | 21 +-
.../com/google/googlejavaformat/Input.java | 96 +-
.../google/googlejavaformat/InputOutput.java | 98 +-
.../com/google/googlejavaformat/Newlines.java | 21 +-
.../google/googlejavaformat/OpsBuilder.java | 348 +-
.../com/google/googlejavaformat/Output.java | 38 +-
...aInputAstVisitor_AnnotationOrModifier.java | 16 +-
...eclarationModifiersAndTypeAnnotations.java | 50 +-
.../java/CommandLineOptions.java | 38 +-
.../java/CommandLineOptionsParser.java | 150 +-
.../java/DimensionHelpers.java | 58 +-
.../googlejavaformat/java/Formatter.java | 210 +-
.../java/FormatterException.java | 8 +-
.../googlejavaformat/java/ImportOrderer.java | 349 +-
.../java/JavaCommentsHelper.java | 9 +-
.../java/JavaFormatterOptions.java | 51 +-
.../googlejavaformat/java/JavaInput.java | 569 +-
.../java/JavaInputAstVisitor.java | 5444 +-
.../googlejavaformat/java/JavaOutput.java | 164 +-
.../googlejavaformat/java/JavacTokens.java | 98 +-
.../google/googlejavaformat/java/Main.java | 10 +-
.../java/RemoveUnusedImports.java | 279 +-
.../googlejavaformat/java/Replacement.java | 37 +-
.../java/SnippetFormatter.java | 114 +-
.../googlejavaformat/java/StringWrapper.java | 40 +-
.../java/TypeNameClassifier.java | 54 +-
.../googlejavaformat/java/UsageException.java | 8 +-
.../java/javadoc/JavadocFormatter.java | 24 +-
.../java/javadoc/JavadocLexer.java | 155 +-
.../java/javadoc/JavadocWriter.java | 248 +-
.../googlejavaformat/java/javadoc/Token.java | 49 +-
.../eclipse/lsp4j/jsonrpc/CancelChecker.java | 6 +-
.../lsp4j/jsonrpc/CompletableFutures.java | 10 +-
.../lsp4j/jsonrpc/JsonRpcException.java | 12 +-
.../org/eclipse/lsp4j/jsonrpc/Launcher.java | 132 +-
.../lsp4j/jsonrpc/MessageIssueException.java | 6 +-
.../lsp4j/jsonrpc/MessageIssueHandler.java | 4 +-
.../eclipse/lsp4j/jsonrpc/RemoteEndpoint.java | 44 +-
.../lsp4j/jsonrpc/StandardLauncher.java | 6 +-
.../lsp4j/jsonrpc/json/JsonRpcMethod.java | 36 +-
.../jsonrpc/json/JsonRpcMethodProvider.java | 4 +-
.../jsonrpc/json/MessageJsonHandler.java | 86 +-
.../jsonrpc/json/ResponseJsonAdapter.java | 4 +-
.../jsonrpc/json/StreamMessageConsumer.java | 16 +-
.../json/adapters/CollectionTypeAdapter.java | 139 +-
.../CollectionTypeAdapterFactory.java | 6 +-
.../json/adapters/EitherTypeAdapter.java | 204 +-
.../adapters/EitherTypeAdapterFactory.java | 4 +-
.../json/adapters/EnumTypeAdapter.java | 52 +-
.../json/adapters/JsonElementTypeAdapter.java | 53 +-
.../json/adapters/MessageTypeAdapter.java | 186 +-
.../json/adapters/ThrowableTypeAdapter.java | 68 +-
.../json/adapters/TupleTypeAdapters.java | 10 +-
.../jsonrpc/json/adapters/TypeUtils.java | 122 +-
.../lsp4j/jsonrpc/messages/CancelParams.java | 24 +-
.../lsp4j/jsonrpc/messages/Either.java | 192 +-
.../lsp4j/jsonrpc/messages/Either3.java | 78 +-
.../jsonrpc/messages/IdentifiableMessage.java | 26 +-
.../lsp4j/jsonrpc/messages/Message.java | 14 +-
.../lsp4j/jsonrpc/messages/MessageIssue.java | 14 +-
.../jsonrpc/messages/NotificationMessage.java | 23 +-
.../jsonrpc/messages/RequestMessage.java | 5 +-
.../lsp4j/jsonrpc/messages/ResponseError.java | 64 +-
.../jsonrpc/messages/ResponseMessage.java | 5 +-
.../eclipse/lsp4j/jsonrpc/messages/Tuple.java | 24 +-
.../lsp4j/jsonrpc/services/EndpointProxy.java | 8 +-
.../jsonrpc/services/ServiceEndpoints.java | 12 +-
.../com/itsaky/androidide/models/LogLine.java | 34 +-
.../com/itsaky/androidide/utils/ILogger.java | 61 +-
.../androidide/tooling/events/FinishEvent.kt | 2 +-
.../tooling/events/OperationDescriptor.kt | 6 +-
.../tooling/events/OperationResult.kt | 6 +-
.../tooling/events/ProgressEvent.kt | 8 +-
.../androidide/tooling/events/StatusEvent.kt | 12 +-
.../ProjectConfigurationFinishEvent.kt | 8 +-
...ProjectConfigurationOperationDescriptor.kt | 44 +-
.../ProjectConfigurationOperationResult.kt | 10 +-
.../ProjectConfigurationProgressEvent.kt | 8 +-
.../ProjectConfigurationStartEvent.kt | 6 +-
.../download/FileDownloadFinishEvent.kt | 8 +-
.../FileDownloadOperationDescriptor.kt | 36 +-
.../download/FileDownloadProgressEvent.kt | 8 +-
.../events/download/FileDownloadResult.kt | 8 +-
.../events/download/FileDownloadStartEvent.kt | 6 +-
.../events/internal/DefaultFinishEvent.kt | 8 +-
.../internal/DefaultOperationDescriptor.kt | 32 +-
.../events/internal/DefaultOperationResult.kt | 2 +-
.../events/internal/DefaultProgressEvent.kt | 6 +-
.../events/internal/DefaultStartEvent.kt | 2 +-
.../events/task/TaskExecutionResult.kt | 8 +-
.../tooling/events/task/TaskFinishEvent.kt | 8 +-
.../events/task/TaskOperationDescriptor.kt | 54 +-
.../events/task/TaskOperationResult.kt | 2 +-
.../tooling/events/task/TaskProgressEvent.kt | 6 +-
.../tooling/events/task/TaskSkippedResult.kt | 2 +-
.../tooling/events/task/TaskStartEvent.kt | 2 +-
.../tooling/events/task/TaskSuccessResult.kt | 12 +-
.../tooling/events/test/TestFinishEvent.kt | 8 +-
.../events/test/TestOperationDescriptor.kt | 32 +-
.../events/test/TestOperationResult.kt | 6 +-
.../tooling/events/test/TestProgressEvent.kt | 6 +-
.../tooling/events/test/TestStartEvent.kt | 6 +-
.../events/transform/TransformFinishEvent.kt | 8 +-
.../transform/TransformOperationDescriptor.kt | 52 +-
.../transform/TransformOperationResult.kt | 8 +-
.../transform/TransformProgressEvent.kt | 6 +-
.../events/transform/TransformStartEvent.kt | 6 +-
.../events/work/WorkItemFinishEvent.kt | 8 +-
.../work/WorkItemOperationDescriptor.kt | 36 +-
.../events/work/WorkItemOperationResult.kt | 8 +-
.../events/work/WorkItemProgressEvent.kt | 6 +-
.../tooling/events/work/WorkItemStartEvent.kt | 6 +-
.../tooling/impl/LoggingOutputStream.kt | 16 +-
.../tooling/impl/ToolingApiServerImpl.kt | 420 +-
.../impl/model/InternalForwardingProject.kt | 97 +-
.../tooling/impl/progress/EventTransformer.kt | 722 +-
.../progress/ForwardingProgressListener.kt | 106 +-
.../tooling/impl/util/InitScriptHandler.kt | 58 +-
.../tooling/impl/util/ModelInfoContainer.kt | 8 +-
.../androidide/tooling/impl/util/StopWatch.kt | 32 +-
.../tooling/impl/ToolingApiImplTest.kt | 14 +-
.../.androidide/init/androidide.init.gradle | 4 +-
.../test-project/android-library/build.gradle | 10 +-
.../src/main/AndroidManifest.xml | 2 +-
.../itsaky/androidide/tooling/test/Main.java | 6 +-
.../src/test/test-project/app/build.gradle | 24 +-
.../app/src/main/AndroidManifest.xml | 7 +-
.../com/itsaky/test/app/MainActivity.java | 20 +-
.../app/src/main/res/layout/activity_main.xml | 22 +-
.../app/src/main/res/values/colors.xml | 2 +-
.../app/src/main/res/values/styles.xml | 9 +-
.../src/test/test-project/build.gradle | 20 +-
.../test-project/java-library/build.gradle | 2 +-
.../itsaky/androidide/tooling/test/Main.java | 6 +-
.../api/messages/result/SimpleArtifact.kt | 28 +-
.../api/messages/result/SimpleModuleData.kt | 10 +-
.../api/messages/result/SimpleVariantData.kt | 10 +-
.../tooling/api/model/HasDependencies.kt | 2 +-
.../tooling/api/model/HasModules.kt | 4 +-
.../tooling/api/model/IdeAndroidModule.kt | 346 +-
.../tooling/api/model/IdeGradleProject.kt | 187 +-
.../tooling/api/model/IdeGradleTask.kt | 17 +-
.../tooling/api/model/IdeJavaModule.kt | 65 +-
.../tooling/api/model/IdeLaunchable.kt | 4 +-
.../androidide/tooling/api/model/IdeModule.kt | 24 +-
.../tooling/api/model/JavaContentRoot.kt | 10 +-
.../tooling/api/model/JavaModuleDependency.kt | 4 +-
.../api/model/JavaModuleExternalDependency.kt | 13 +-
.../api/model/JavaModuleProjectDependency.kt | 7 +-
.../tooling/api/model/JavaSourceDirectory.kt | 3 +-
.../model/util/AndroidModulePropertyCopier.kt | 712 +-
.../tooling/api/model/util/ProjectBuilder.kt | 124 +-
.../plugin/AndroidIDEToolingApiPlugin.java | 24 +-
.../plugin/IdeProjectModelBuilder.java | 67 +-
.../tooling/api/IToolingApiClient.kt | 96 +-
.../tooling/api/IToolingApiServer.kt | 47 +-
.../api/messages/TaskExecutionMessage.kt | 6 +-
.../result/BuildCancellationRequestResult.kt | 16 +-
.../api/messages/result/InitializeResult.kt | 2 +-
.../messages/result/TaskExecutionResult.kt | 25 +-
.../tooling/api/util/ProjectDataCollector.kt | 226 +-
.../api/util/RuntimeTypeAdapterFactory.java | 1 -
.../tooling/api/util/ToolingApiLauncher.java | 2 +-
.../main/java/com/android/SdkConstants.java | 365 +-
.../ide/common/xml/XmlAttributeSortOrder.java | 133 +-
.../ide/common/xml/XmlFormatPreferences.java | 16 +-
.../ide/common/xml/XmlFormatStyle.java | 4 +-
.../ide/common/xml/XmlPrettyPrinter.java | 350 +-
.../android/resources/ResourceFolderType.java | 40 +-
.../main/java/com/android/utils/SdkUtils.java | 159 +-
.../main/java/com/android/utils/XmlUtils.java | 178 +-
build.gradle | 212 +-
changelogs/v2.0.1-beta.md | 9 +-
changelogs/v2.1.0-beta.md | 75 +-
common/build.gradle | 10 +-
common/src/main/AndroidManifest.xml | 2 +-
.../colorpicker/ColorPickerView.java | 95 +-
.../managers/PreferenceManager.java | 90 +-
.../androidide/managers/ToolsManager.java | 38 +-
.../com/itsaky/androidide/models/DexPair.java | 46 +-
.../shell/CommonProcessExecutor.java | 8 +-
.../itsaky/androidide/shell/ShellServer.java | 37 +-
.../itsaky/androidide/utils/AndroidUtils.java | 68 +-
.../androidide/utils/BootstrapInstaller.java | 8 +-
.../utils/CharSequenceInputStream.java | 36 +-
.../androidide/utils/CharSequenceReader.java | 48 +-
.../itsaky/androidide/utils/Environment.java | 22 +-
.../com/itsaky/androidide/utils/FileUtil.java | 134 +-
.../itsaky/androidide/utils/IntProperty.java | 11 +-
.../androidide/utils/JavaCharacter.java | 42 +-
.../androidide/utils/ReaderInputStream.java | 135 +-
.../com/itsaky/androidide/utils/StopWatch.kt | 14 +-
.../itsaky/androidide/utils/StringUtil.java | 29 +-
.../java/com/itsaky/toaster/ToastWrapper.java | 8 +-
common/src/main/res/drawable/ic_error.xml | 45 +-
common/src/main/res/drawable/ic_hex_icon.xml | 24 +-
common/src/main/res/drawable/ic_ok.xml | 15 +-
common/src/main/res/values-pt-rBR/strings.xml | 12 +-
common/src/main/res/values/strings.xml | 2 +-
emulatorview/build.gradle | 2 +-
emulatorview/src/main/AndroidManifest.xml | 3 +-
.../views/virtualkeys/SpecialButton.java | 14 +-
.../views/virtualkeys/VirtualKeyButton.java | 12 +-
.../virtualkeys/VirtualKeysConstants.java | 102 +-
.../views/virtualkeys/VirtualKeysInfo.java | 58 +-
.../views/virtualkeys/VirtualKeysView.java | 221 +-
.../com/itsaky/terminal/TerminalBuffer.java | 240 +-
.../com/itsaky/terminal/TerminalColors.java | 20 +-
.../com/itsaky/terminal/TerminalEmulator.java | 855 +-
.../java/com/itsaky/terminal/TerminalRow.java | 60 +-
.../com/itsaky/terminal/TerminalSession.java | 195 +-
.../java/com/itsaky/terminal/TextStyle.java | 51 +-
.../java/com/itsaky/terminal/WcWidth.java | 48 +-
.../view/GestureAndScaleRecognizer.java | 59 +-
.../terminal/view/TerminalRenderer.java | 14 +-
.../itsaky/terminal/view/TerminalView.java | 1297 +-
.../TextSelectionCursorController.java | 274 +-
.../TextSelectionHandleView.java | 210 +-
.../text_select_handle_left_material.xml | 8 +-
.../text_select_handle_right_material.xml | 8 +-
.../src/main/res/values-fr/strings.xml | 4 +-
.../src/main/res/values-hi/strings.xml | 4 +-
.../src/main/res/values-in/strings.xml | 4 +-
.../src/main/res/values-pt-rBR/strings.xml | 4 +-
.../src/main/res/values-zh/strings.xml | 4 +-
emulatorview/src/main/res/values/strings.xml | 4 +-
gradle/dependencies.gradle | 70 +-
lexers/build.gradle | 6 +-
lexers/src/main/AndroidManifest.xml | 2 +-
.../androidide/lexers/java/JavaLexer.java | 1863 +-
.../androidide/lexers/java/JavaParser.java | 24314 ++++----
.../lexers/java/JavaParserBaseListener.java | 2806 +-
.../lexers/java/JavaParserBaseVisitor.java | 1808 +-
.../lexers/java/JavaParserListener.java | 2326 +-
.../lexers/java/JavaParserVisitor.java | 1379 +-
.../androidide/lexers/xml/XMLLexer.java | 603 +-
.../androidide/lexers/cpp/CPP14Lexer.java | 1090 +-
.../androidide/lexers/cpp/CPP14Parser.java | 43241 +++++++-------
.../lexers/cpp/CPP14ParserBaseListener.java | 31 +-
.../androidide/lexers/groovy/GroovyLexer.java | 874 +-
.../androidide/lexers/java/JavaLexer.java | 874 +-
.../androidide/lexers/java/JavaParser.java | 13088 ++---
.../lexers/java/JavaParserBaseListener.java | 31 +-
.../lexers/javadoc/JavadocLexer.java | 287 +-
.../lexers/javadoc/JavadocParser.java | 2310 +-
.../javadoc/JavadocParserBaseListener.java | 31 +-
.../androidide/lexers/kotlin/KotlinLexer.java | 1502 +-
.../lexers/kotlin/KotlinParser.java | 48281 ++++++++--------
.../kotlin/KotlinParserBaseListener.java | 31 +-
.../lexers/kotlin/UnicodeClasses.java | 220 +-
.../androidide/lexers/xml/XMLLexer.java | 314 +-
.../androidide/lexers/xml/XMLParser.java | 1200 +-
.../lexers/xml/XMLParserBaseListener.java | 31 +-
lsp/api/src/main/AndroidManifest.xml | 3 +-
.../com/itsaky/lsp/actions/CodeActionsMenu.kt | 82 +-
.../lsp/internal/model/CachedCompletion.kt | 122 +-
.../java/com/itsaky/lsp/models/CodeActions.kt | 34 +-
.../java/com/itsaky/lsp/models/Completions.kt | 625 +-
.../java/com/itsaky/lsp/models/Definitions.kt | 7 +-
.../com/itsaky/lsp/models/HighlightToken.kt | 71 +-
.../com/itsaky/lsp/models/Initialization.kt | 29 +-
.../java/com/itsaky/lsp/models/Locations.kt | 304 +-
.../java/com/itsaky/lsp/models/Markups.kt | 8 +-
.../java/com/itsaky/lsp/models/References.kt | 9 +-
.../java/com/itsaky/lsp/models/Signatures.kt | 21 +-
.../com/itsaky/lsp/models/TextDocument.kt | 30 +-
.../itsaky/lsp/util/DefaultServerSettings.kt | 20 +-
.../com/itsaky/lsp/util/DiagnosticUtil.java | 128 +-
.../itsaky/lsp/util/NoCompletionsProvider.kt | 11 +-
.../java/com/itsaky/lsp/util/PathUtils.kt | 24 +-
.../lsp/util/PrefBasedServerSettings.java | 20 +-
lsp/java/src/main/AndroidManifest.xml | 3 +-
lsp/java/src/main/java/README.md | 8 +-
.../itsaky/androidide/utils/ClassBuilder.java | 46 +-
.../itsaky/lsp/java/JavaLanguageServer.java | 32 +-
.../itsaky/lsp/java/actions/BaseCodeAction.kt | 71 +-
.../lsp/java/actions/FieldBasedAction.kt | 264 +-
.../lsp/java/actions/JavaCodeActionsMenu.kt | 53 +-
.../lsp/java/actions/common/CommentAction.kt | 36 +-
.../actions/common/FindReferencesAction.kt | 48 +-
.../actions/common/GoToDefinitionAction.kt | 48 +-
.../actions/common/OrganizeImportsAction.kt | 80 +-
.../common/RemoveUnusedImportsAction.kt | 68 +-
.../java/actions/common/UncommentAction.kt | 40 +-
.../actions/diagnostics/AddImportAction.kt | 227 +-
.../actions/diagnostics/AddThrowsAction.kt | 83 +-
.../diagnostics/CreateMissingMethodAction.kt | 70 +-
.../actions/diagnostics/FieldToBlockAction.kt | 80 +-
.../ImplementAbstractMethodsAction.kt | 107 +-
.../actions/diagnostics/RemoveClassAction.kt | 70 +-
.../actions/diagnostics/RemoveMethodAction.kt | 77 +-
.../diagnostics/RemoveUnusedThrowsAction.kt | 83 +-
.../SuppressUncheckedWarningAction.kt | 77 +-
.../diagnostics/VariableToStatementAction.kt | 88 +-
.../generators/GenerateConstructorAction.kt | 185 +-
.../GenerateMissingConstructorAction.kt | 75 +-
.../GenerateSettersAndGettersAction.kt | 196 +-
.../GenerateToStringMethodAction.kt | 236 +-
.../OverrideSuperclassMethodsAction.kt | 457 +-
.../lsp/java/compiler/CancelServiceImpl.kt | 32 +-
.../CompilationCancellationException.kt | 20 +-
.../lsp/java/compiler/CompileBatch.java | 28 +-
.../itsaky/lsp/java/compiler/CompileTask.java | 1 -
.../lsp/java/compiler/CompilerProvider.java | 4 +-
.../java/compiler/JavaCompilerService.java | 396 +-
.../lsp/java/compiler/ReusableCompiler.java | 6 +-
.../lsp/java/compiler/SourceFileManager.java | 4 +-
.../lsp/java/compiler/SourceFileObject.java | 28 +-
.../itsaky/lsp/java/models/DiagnosticCode.kt | 58 +-
.../lsp/java/models/JavaServerSettings.java | 23 +-
.../com/itsaky/lsp/java/parser/Parser.java | 407 +-
.../java/providers/CodeFormatProvider.java | 1 -
.../providers/JavaDiagnosticProvider.java | 8 +-
.../ClassNamesCompletionProvider.kt | 134 +-
.../completion/IJavaCompletionProvider.kt | 396 +-
.../IdentifierCompletionProvider.kt | 84 +-
.../completion/ImportCompletionProvider.kt | 82 +-
.../completion/KeywordCompletionProvider.kt | 205 +-
.../MemberReferenceCompletionProvider.kt | 218 +-
.../MemberSelectCompletionProvider.kt | 266 +-
.../completion/ScopeCompletionProvider.kt | 266 +-
.../StaticImportCompletionProvider.kt | 128 +-
.../SwitchConstantCompletionProvider.kt | 110 +-
.../completion/TopLevelSnippetsProvider.kt | 68 +-
.../rewrite/ConvertVariableToStatement.java | 42 +-
.../lsp/java/rewrite/CreateMissingMethod.java | 24 +-
.../rewrite/GenerateRecordConstructor.java | 16 +-
.../com/itsaky/lsp/java/rewrite/Rewrite.java | 18 +-
.../java/com/itsaky/lsp/java/utils/Cache.java | 62 +-
.../com/itsaky/lsp/java/utils/EditHelper.java | 36 +-
.../com/itsaky/lsp/java/utils/Extractors.java | 3 +-
.../com/itsaky/lsp/java/utils/FindHelper.java | 72 +-
.../lsp/java/utils/JavaDiagnosticUtils.kt | 60 +-
.../itsaky/lsp/java/utils/JavaParserUtils.kt | 1304 +-
.../itsaky/lsp/java/utils/JavaPoetUtils.kt | 144 +-
.../itsaky/lsp/java/utils/MarkdownHelper.java | 25 +-
.../com/itsaky/lsp/java/utils/MethodPtr.java | 34 +-
.../itsaky/lsp/java/utils/ScopeHelper.java | 32 +-
.../lsp/java/utils/ShortTypePrinter.java | 46 +-
.../itsaky/lsp/java/utils/StringSearch.java | 367 +-
.../com/itsaky/lsp/java/utils/TestUtils.kt | 22 +-
.../lsp/java/visitors/DiagnosticVisitor.kt | 572 +-
.../FindAnonymousTypeDeclaration.java | 12 +-
.../lsp/java/visitors/FindBiggerRange.java | 26 +-
.../lsp/java/visitors/FindCompletionsAt.java | 7 +-
.../lsp/java/visitors/FindMethodCallAt.java | 53 +-
.../visitors/FindMethodDeclarationAt.java | 12 +-
.../itsaky/lsp/java/visitors/FindNameAt.java | 40 +-
.../lsp/java/visitors/FindReferences.java | 20 +-
.../java/visitors/FindTypeDeclarationAt.java | 12 +-
.../visitors/FindTypeDeclarationNamed.java | 12 +-
.../java/visitors/FindVariableAtCursor.java | 12 +-
.../java/visitors/FindVariablesBetween.java | 10 +-
.../java/visitors/PrettyPrintingVisitor.java | 28 +-
.../lsp/java/visitors/PruneMethodBodies.java | 10 +-
.../java/visitors/SemanticHighlighter.java | 115 +-
.../com/squareup/javapoet/AnnotationSpec.java | 161 +-
.../com/squareup/javapoet/ArrayTypeName.java | 64 +-
.../java/com/squareup/javapoet/ClassName.java | 122 +-
.../java/com/squareup/javapoet/CodeBlock.java | 222 +-
.../com/squareup/javapoet/CodeWriter.java | 141 +-
.../java/com/squareup/javapoet/FieldSpec.java | 64 +-
.../java/com/squareup/javapoet/JavaFile.java | 125 +-
.../com/squareup/javapoet/LineWrapper.java | 56 +-
.../com/squareup/javapoet/MethodSpec.java | 196 +-
.../com/squareup/javapoet/ParameterSpec.java | 109 +-
.../javapoet/ParameterizedTypeName.java | 60 +-
.../java/com/squareup/javapoet/TypeName.java | 44 +-
.../java/com/squareup/javapoet/TypeSpec.java | 368 +-
.../squareup/javapoet/TypeVariableName.java | 124 +-
.../main/java/com/squareup/javapoet/Util.java | 60 +-
.../squareup/javapoet/WildcardTypeName.java | 72 +-
.../lib/nbjavac/services/CancelService.java | 12 +-
.../netbeans/lib/nbjavac/services/NBAttr.java | 100 +-
.../lib/nbjavac/services/NBClassFinder.java | 41 +-
.../lib/nbjavac/services/NBClassWriter.java | 17 +-
.../lib/nbjavac/services/NBEnter.java | 27 +-
.../lib/nbjavac/services/NBJavaCompiler.java | 18 +-
.../netbeans/lib/nbjavac/services/NBLog.java | 58 +-
.../lib/nbjavac/services/NBMemberEnter.java | 13 +-
.../lib/nbjavac/services/NBNames.java | 20 +-
.../lib/nbjavac/services/NBParserFactory.java | 70 +-
.../lib/nbjavac/services/NBResolve.java | 18 +-
.../lib/nbjavac/services/NBTreeMaker.java | 21 +-
lsp/java/src/main/res/values-hi/strings.xml | 2 +-
.../src/main/res/values-pt-rBR/strings.xml | 53 +-
.../java/com/itsaky/lsp/java/BaseJavaTest.kt | 4 +-
.../lsp/java/JavaLanguageServerProvider.kt | 19 +-
.../itsaky/lsp/java/actions/AddImportTest.kt | 40 +-
.../providers/JavaCompletionProviderTest.kt | 84 +-
.../providers/JavaSelectionProviderTest.kt | 102 +-
.../resources/SourceFileTest_tempate.java | 6 +-
.../actions/AddImportAction_template.java | 6 +-
...enerateSettersAndGettersTest_template.java | 8 +-
.../package/SourceFileTest_template.java | 6 +-
...odBodySelectionExpansionTest_template.java | 6 +-
.../TrySelectionExpansionTest_template.java | 16 +-
lsp/testing/build.gradle | 16 +-
lsp/testing/src/main/AndroidManifest.xml | 2 +-
.../itsaky/lsp/api/BaseLanguageServerTest.kt | 44 +-
.../com/itsaky/lsp/api/CursorDependentTest.kt | 66 +-
.../java/com/itsaky/lsp/api/FileProvider.kt | 116 +-
.../itsaky/lsp/api/LanguageServerProvider.kt | 38 +-
.../java/com/itsaky/lsp/api/LoggingTest.kt | 30 +-
.../lsp/api/util/ReflectiveLogListener.kt | 18 +-
lsp/xml/src/main/AndroidManifest.xml | 5 +-
.../lsp/xml/providers/CodeFormatProvider.java | 1 -
.../lsp/xml/providers/CompletionProvider.java | 146 +-
.../xml/providers/XmlCompletionProvider.kt | 332 +-
.../java/com/itsaky/lsp/xml/utils/XmlUtils.kt | 292 +-
.../src/main/res/values-pt-rBR/strings.xml | 3 +-
lsp/xml/src/main/res/values/strings.xml | 3 +-
.../java/com/itsaky/lsp/xml/BaseXMLTest.kt | 16 +-
.../lsp/xml/XmlLanguageServerProvider.kt | 24 +-
.../providers/XMLCompletionProviderTest.kt | 93 +-
.../test/resources/SourceFileTest_tempate.xml | 6 +-
.../AttributeCompletion_template.xml | 19 +-
.../AttributeValueCompletion_template.xml | 18 +-
.../completion/TagCompletion_template.xml | 49 +-
sdk-info/build.gradle | 12 +-
sdk-info/src/main/AndroidManifest.xml | 2 +-
.../com/itsaky/apiinfo/models/ClassInfo.java | 7 +-
.../com/itsaky/apiinfo/models/MethodInfo.java | 5 +-
.../java/com/itsaky/attrinfo/models/Attr.java | 44 +-
.../com/itsaky/attrinfo/models/Styleable.java | 10 +-
.../java/com/itsaky/xml/impl/UiNamespace.java | 8 +-
.../java/org/eclipse/jdt/core/Signature.java | 3696 +-
.../jdt/core/compiler/CharOperation.java | 1197 +-
.../compiler/classfmt/ClassFileConstants.java | 165 +-
.../compiler/parser/ScannerHelper.java | 725 +-
treeview/build.gradle | 6 +-
treeview/src/main/AndroidManifest.xml | 2 +-
.../com/unnamed/b/atv/model/TreeNode.java | 147 +-
.../unnamed/b/atv/view/AndroidTreeView.java | 292 +-
.../b/atv/view/TreeNodeWrapperView.java | 2 +-
.../unnamed/b/atv/view/TwoDScrollView.java | 914 +-
xml-inflater/build.gradle | 6 +-
xml-inflater/src/main/AndroidManifest.xml | 2 +-
.../java/com/itsaky/inflater/AttrType.java | 19 +-
.../java/com/itsaky/inflater/IAttribute.java | 41 +-
.../com/itsaky/inflater/ILayoutInflater.java | 36 +-
.../main/java/com/itsaky/inflater/IView.java | 34 +-
.../itsaky/inflater/XMLLayoutInflater.java | 94 +-
.../com/itsaky/inflater/adapters/README.md | 51 +-
.../android/view/ViewAttrAdapter.java | 18 +-
.../android/widget/AbsListViewAttrAdapter.kt | 88 +-
.../android/widget/ListViewAttrAdapter.kt | 60 +-
.../inflater/drawable/IDrawableParser.java | 20 +-
.../drawable/ShapeDrawableParser.java | 8 +-
.../com/itsaky/inflater/impl/BaseView.java | 57 +-
.../com/itsaky/inflater/impl/UiAttribute.java | 30 +-
.../inflater/util/CommonParseUtils.java | 178 +-
.../itsaky/inflater/util/Preconditions.java | 12 +-
.../itsaky/inflater/util/TextDrawable.java | 20 +-
.../inflater/values/FrameworkValues.java | 30 +-
.../inflater/values/ValuesTableFactory.java | 38 +-
.../values/models/AbstractResource.java | 38 +-
.../harjot/vectormaster/DefaultValues.java | 29 +-
.../vectormaster/VectorMasterDrawable.java | 82 +-
.../harjot/vectormaster/VectorMasterView.java | 130 +-
.../harjot/vectormaster/models/PathModel.java | 26 +-
.../utilities/legacyparser/PathParser.java | 214 +-
.../utilities/parser/ParserHelper.java | 110 +-
.../src/main/res/values-pt-rBR/strings.xml | 8 +-
780 files changed, 105201 insertions(+), 100889 deletions(-)
diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md
index 53cb77e34..426c3f4bf 100644
--- a/.github/ISSUE_TEMPLATE/bug.md
+++ b/.github/ISSUE_TEMPLATE/bug.md
@@ -1,9 +1,6 @@
---
-name: Bug
-about: Report a bug in the IDE.
-title: ""
-labels: bug
-assignees: ''
+name: Bug about: Report a bug in the IDE. title: ""
+labels: bug assignees: ''
---
**Describe the bug**
@@ -20,9 +17,10 @@ Steps to reproduce the behavior:
**Details (please complete the following information):**
- - Device: [e.g. realme 3 Pro]
- - OS: [e.g. Android 11]
- - AndroidIDE Version [e.g. v1.0.3-alpha]
+
+- Device: [e.g. realme 3 Pro]
+- OS: [e.g. Android 11]
+- AndroidIDE Version [e.g. v1.0.3-alpha]
**Additional context**
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
index e107cb083..d26ce3aa0 100644
--- a/.github/ISSUE_TEMPLATE/feature_request.md
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -1,9 +1,6 @@
---
-name: Feature request
-about: Suggest an idea for this project
-title: "[FEATURE]: "
-labels: feature
-assignees: ''
+name: Feature request about: Suggest an idea for this project title: "[FEATURE]: "
+labels: feature assignees: ''
---
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index aa9a491fd..0e742cde6 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -2,124 +2,110 @@
## Our Pledge
-We as members, contributors, and leaders pledge to make participation in our
-community a harassment-free experience for everyone, regardless of age, body
-size, visible or invisible disability, ethnicity, sex characteristics, gender
-identity and expression, level of experience, education, socio-economic status,
-nationality, personal appearance, race, religion, or sexual identity
-and orientation.
+We as members, contributors, and leaders pledge to make participation in our community a
+harassment-free experience for everyone, regardless of age, body size, visible or invisible
+disability, ethnicity, sex characteristics, gender identity and expression, level of experience,
+education, socio-economic status, nationality, personal appearance, race, religion, or sexual
+identity and orientation.
-We pledge to act and interact in ways that contribute to an open, welcoming,
-diverse, inclusive, and healthy community.
+We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and
+healthy community.
## Our Standards
-Examples of behavior that contributes to a positive environment for our
-community include:
+Examples of behavior that contributes to a positive environment for our community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
-* Accepting responsibility and apologizing to those affected by our mistakes,
- and learning from the experience
-* Focusing on what is best not just for us as individuals, but for the
- overall community
+* Accepting responsibility and apologizing to those affected by our mistakes, and learning from the
+ experience
+* Focusing on what is best not just for us as individuals, but for the overall community
Examples of unacceptable behavior include:
-* The use of sexualized language or imagery, and sexual attention or
- advances of any kind
+* The use of sexualized language or imagery, and sexual attention or advances of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
-* Publishing others' private information, such as a physical or email
- address, without their explicit permission
-* Other conduct which could reasonably be considered inappropriate in a
- professional setting
+* Publishing others' private information, such as a physical or email address, without their
+ explicit permission
+* Other conduct which could reasonably be considered inappropriate in a professional setting
## Enforcement Responsibilities
-Community leaders are responsible for clarifying and enforcing our standards of
-acceptable behavior and will take appropriate and fair corrective action in
-response to any behavior that they deem inappropriate, threatening, offensive,
-or harmful.
+Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior
+and will take appropriate and fair corrective action in response to any behavior that they deem
+inappropriate, threatening, offensive, or harmful.
-Community leaders have the right and responsibility to remove, edit, or reject
-comments, commits, code, wiki edits, issues, and other contributions that are
-not aligned to this Code of Conduct, and will communicate reasons for moderation
-decisions when appropriate.
+Community leaders have the right and responsibility to remove, edit, or reject comments, commits,
+code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and
+will communicate reasons for moderation decisions when appropriate.
## Scope
-This Code of Conduct applies within all community spaces, and also applies when
-an individual is officially representing the community in public spaces.
-Examples of representing our community include using an official e-mail address,
-posting via an official social media account, or acting as an appointed
-representative at an online or offline event.
+This Code of Conduct applies within all community spaces, and also applies when an individual is
+officially representing the community in public spaces. Examples of representing our community
+include using an official e-mail address, posting via an official social media account, or acting as
+an appointed representative at an online or offline event.
## Enforcement
-Instances of abusive, harassing, or otherwise unacceptable behavior may be
-reported to the community leaders responsible for enforcement either by opening
-an issue or writing me an email at [itsaky01@gmail.com](mailto:itsaky01@gmail.com).
-All complaints will be reviewed and investigated promptly and fairly.
+Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community
+leaders responsible for enforcement either by opening an issue or writing me an email
+at [itsaky01@gmail.com](mailto:itsaky01@gmail.com). All complaints will be reviewed and investigated
+promptly and fairly.
-All community leaders are obligated to respect the privacy and security of the
-reporter of any incident.
+All community leaders are obligated to respect the privacy and security of the reporter of any
+incident.
## Enforcement Guidelines
-Community leaders will follow these Community Impact Guidelines in determining
-the consequences for any action they deem in violation of this Code of Conduct:
+Community leaders will follow these Community Impact Guidelines in determining the consequences for
+any action they deem in violation of this Code of Conduct:
### 1. Correction
-**Community Impact**: Use of inappropriate language or other behavior deemed
-unprofessional or unwelcome in the community.
+**Community Impact**: Use of inappropriate language or other behavior deemed unprofessional or
+unwelcome in the community.
-**Consequence**: A private, written warning from community leaders, providing
-clarity around the nature of the violation and an explanation of why the
-behavior was inappropriate. A public apology may be requested.
+**Consequence**: A private, written warning from community leaders, providing clarity around the
+nature of the violation and an explanation of why the behavior was inappropriate. A public apology
+may be requested.
### 2. Warning
-**Community Impact**: A violation through a single incident or series
-of actions.
+**Community Impact**: A violation through a single incident or series of actions.
-**Consequence**: A warning with consequences for continued behavior. No
-interaction with the people involved, including unsolicited interaction with
-those enforcing the Code of Conduct, for a specified period of time. This
-includes avoiding interactions in community spaces as well as external channels
-like social media. Violating these terms may lead to a temporary or
-permanent ban.
+**Consequence**: A warning with consequences for continued behavior. No interaction with the people
+involved, including unsolicited interaction with those enforcing the Code of Conduct, for a
+specified period of time. This includes avoiding interactions in community spaces as well as
+external channels like social media. Violating these terms may lead to a temporary or permanent ban.
### 3. Temporary Ban
-**Community Impact**: A serious violation of community standards, including
-sustained inappropriate behavior.
+**Community Impact**: A serious violation of community standards, including sustained inappropriate
+behavior.
-**Consequence**: A temporary ban from any sort of interaction or public
-communication with the community for a specified period of time. No public or
-private interaction with the people involved, including unsolicited interaction
-with those enforcing the Code of Conduct, is allowed during this period.
-Violating these terms may lead to a permanent ban.
+**Consequence**: A temporary ban from any sort of interaction or public communication with the
+community for a specified period of time. No public or private interaction with the people involved,
+including unsolicited interaction with those enforcing the Code of Conduct, is allowed during this
+period. Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
-**Community Impact**: Demonstrating a pattern of violation of community
-standards, including sustained inappropriate behavior, harassment of an
-individual, or aggression toward or disparagement of classes of individuals.
+**Community Impact**: Demonstrating a pattern of violation of community standards, including
+sustained inappropriate behavior, harassment of an individual, or aggression toward or disparagement
+of classes of individuals.
-**Consequence**: A permanent ban from any sort of public interaction within
-the community.
+**Consequence**: A permanent ban from any sort of public interaction within the community.
## Attribution
-This Code of Conduct is adapted from the [Contributor Covenant][homepage],
-version 2.0, available at
+This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.0, available at
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
-Community Impact Guidelines were inspired by [Mozilla's code of conduct
-enforcement ladder](https://github.com/mozilla/diversity).
+Community Impact Guidelines were inspired
+by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
[homepage]: https://www.contributor-covenant.org
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index caf287553..3be699346 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -1,8 +1,12 @@
# Contributing
-This document outlines how to propose a change to AndrodIDE. By contributing to this project, you agree to abide the terms specified in [CODE OF CONDUCT](./CODE_OF_CONDUCT.md).
+
+This document outlines how to propose a change to AndrodIDE. By contributing to this project, you
+agree to abide the terms specified in [CODE OF CONDUCT](./CODE_OF_CONDUCT.md).
## Propose a change
+
To contribute to this project,
+
- Fork the repo.
- Clone the forked repo to your local machine.
- Open the project in Android Studio.
@@ -10,19 +14,29 @@ To contribute to this project,
- Create a pull request.
## Note
-`Java 11` is required to build the project.
-Building AndroidIDE in AndroidIDE itself is also possible. But that might require some modifications.
+`Java 11` is required to build the project.
-If you face `AAPT2` issue while building AndroidIDE in the IDE itself, specify the `android.aapt2FromMavenOverride` property in `gradle.properties` with location of `aapt2` binary from Android SDK. However, this is an **experimental** property.
+Building AndroidIDE in AndroidIDE itself is also possible. But that might require some
+modifications.
+
+If you face `AAPT2` issue while building AndroidIDE in the IDE itself, specify
+the `android.aapt2FromMavenOverride` property in `gradle.properties` with location of `aapt2` binary
+from Android SDK. However, this is an **experimental** property.
## Source code format
-The source code must have `2-space` indentation (soft tab).
-Java source code is formatted using `google-java-format` with `GOOGLE` style formatting.
-You can execute `./gradlew formatJavaSources` in terminal to format all Java source files using Google Java Format.
+
+The source code must have `2-space` indentation (soft tab). Java source code is formatted
+using `google-java-format` with `GOOGLE` style formatting. You can
+execute `./gradlew formatJavaSources` in terminal to format all Java source files using Google Java
+Format.
**This will commit the changes as well**.
## Issues & Pull requests
-Use the issue/PR templates when possible. Provide a proper title and a clear description for the issue/PR. For bug reports, provide a step-by-step procedure to reproduce the issue. Always put crash logs, build outputs, etc in `code blocks`.
-If you want to discuss anything about the project, you can discuss it in the [Telegram group](https://t.me/androidide_discussions).
\ No newline at end of file
+Use the issue/PR templates when possible. Provide a proper title and a clear description for the
+issue/PR. For bug reports, provide a step-by-step procedure to reproduce the issue. Always put crash
+logs, build outputs, etc in `code blocks`.
+
+If you want to discuss anything about the project, you can discuss it in
+the [Telegram group](https://t.me/androidide_discussions).
\ No newline at end of file
diff --git a/README.md b/README.md
index c7e87554a..260b73968 100755
--- a/README.md
+++ b/README.md
@@ -10,6 +10,7 @@
## Features
+
- [x] Gradle support.
- [x] `JDK 11` and `JDK 17` available for use.
- [x] Terminal with necessary packages.
@@ -17,49 +18,65 @@
- [x] SDK Manager (Available via terminal).
- [x] API information for classes and their members (since, removed, deprecated).
- [ ] Language servers
- - [x] Java
- - [x] XML (*)
- - [ ] Kotlin
+ - [x] Java
+ - [x] XML (*)
+ - [ ] Kotlin
- [ ] UI Designer
- - [x] Layout inflater
- - [x] Resolve resource references
- - [x] Auto-complete resource values when user edits attributes using the attribute editor
- - [x] Drag & Drop (*)
- - [x] Visual attribute editor (*)
- - [x] Android Widgets (*)
+ - [x] Layout inflater
+ - [x] Resolve resource references
+ - [x] Auto-complete resource values when user edits attributes using the attribute editor
+ - [x] Drag & Drop (*)
+ - [x] Visual attribute editor (*)
+ - [x] Android Widgets (*)
- [ ] String Translator
- [ ] Asset Studio (Drawable & Icon Maker)
- [x] Git (*)
Items marked with `(*)` are partially implemented.
-`XML` language server supports only code completion at the moment. Git is currently available only in the terminal i.e. no GUI interface for `git`.
+`XML` language server supports only code completion at the moment. Git is currently available only
+in the terminal i.e. no GUI interface for `git`.
## Installation
-- Download the AndroidIDE APK from [releases](https://github.com/itsaky/AndroidIDE/releases). You can also download APKs from [GitHub actions](https://github.com/itsaky/AndroidIDE/actions).
-- Follow the instructions [here](https://github.com/itsaky/androidide-build-tools#installing-in-androidide) to install the build tools.
+
+- Download the AndroidIDE APK from [releases](https://github.com/itsaky/AndroidIDE/releases). You
+ can also download APKs from [GitHub actions](https://github.com/itsaky/AndroidIDE/actions).
+- Follow the
+ instructions [here](https://github.com/itsaky/androidide-build-tools#installing-in-androidide) to
+ install the build tools.
## Limitations
-- SDK Manager is already included in Android SDK and is accessible in AndroidIDE via its Terminal. But, you cannot use it to install some tools (like NDK) because those tools are not built for Android.
+
+- SDK Manager is already included in Android SDK and is accessible in AndroidIDE via its Terminal.
+ But, you cannot use it to install some tools (like NDK) because those tools are not built for
+ Android.
- No official NDK support because we haven't built the NDK for Android.
-The app is still being developed actively. It's in beta stage and may not be stable. if you have any issues using the app, please let us know.
+The app is still being developed actively. It's in beta stage and may not be stable. if you have any
+issues using the app, please let us know.
## Contributing
+
See the [contributing guide](./CONTRIBUTING.md).
## Thanks to
-- [Rosemoe](https://github.com/Rosemoe) for the awesome [CodeEditor](https://github.com/Rosemoe/sora-editor)
+
+- [Rosemoe](https://github.com/Rosemoe) for the
+ awesome [CodeEditor](https://github.com/Rosemoe/sora-editor)
- [Termux](https://github.com/termux) for [Terminal Emulator](https://github.com/termux/termux-app)
-- [Bogdan Melnychuk](https://github.com/bmelnychuk) for [AndroidTreeView](https://github.com/bmelnychuk/AndroidTreeView)
-- [George Fraser](https://github.com/georgewfraser) for the [Java Language Server](https://github.com/georgewfraser/java-language-server)
+- [Bogdan Melnychuk](https://github.com/bmelnychuk)
+ for [AndroidTreeView](https://github.com/bmelnychuk/AndroidTreeView)
+- [George Fraser](https://github.com/georgewfraser) for
+ the [Java Language Server](https://github.com/georgewfraser/java-language-server)
And all the developers who have contributed to this project.
## Contact Us
+
- [Website](https://androidide.com)
- [Telegram](https://t.me/androidide_discussions)
## License
+
```
AndroidIDE is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -75,4 +92,5 @@ You should have received a copy of the GNU General Public License
along with AndroidIDE. If not, see .
```
-Any violations to the license can be reported either by opening an issue or writing a mail to us directly.
+Any violations to the license can be reported either by opening an issue or writing a mail to us
+directly.
diff --git a/actions/build.gradle b/actions/build.gradle
index c1f471947..ab4d2288a 100644
--- a/actions/build.gradle
+++ b/actions/build.gradle
@@ -4,14 +4,14 @@ apply plugin: 'kotlin-android'
android {
compileSdkVersion rootProject.ext.compileSdk
buildToolsVersion rootProject.ext.buildTools
-
+
defaultConfig {
minSdkVersion rootProject.ext.minSdk
targetSdkVersion rootProject.ext.targetSdk
}
-
+
buildFeatures.viewBinding true
-
+
compileOptions {
sourceCompatibility rootProject.ext.javaSourceVersion
targetCompatibility rootProject.ext.javaTargetVersion
@@ -20,7 +20,7 @@ android {
kotlinOptions {
jvmTarget = "11"
}
-
+
buildTypes {
release {
minifyEnabled true
@@ -29,14 +29,14 @@ android {
}
dependencies {
- implementation project(':common')
+ implementation project (':common')
implementation common.editor
implementation common.utilcode
-
+
implementation androidx.ktx
implementation common.kotlin
}
repositories {
- mavenCentral()
+ mavenCentral ()
}
\ No newline at end of file
diff --git a/actions/src/main/java/com/itsaky/androidide/actions/ActionItem.kt b/actions/src/main/java/com/itsaky/androidide/actions/ActionItem.kt
index 4351acc07..16c0c5a60 100644
--- a/actions/src/main/java/com/itsaky/androidide/actions/ActionItem.kt
+++ b/actions/src/main/java/com/itsaky/androidide/actions/ActionItem.kt
@@ -26,88 +26,88 @@ import android.graphics.drawable.Drawable
*/
interface ActionItem {
- val id: String
- var label: String
- var visible: Boolean
- var enabled: Boolean
- var icon: Drawable?
- var requiresUIThread: Boolean
- var location: Location
+ val id: String
+ var label: String
+ var visible: Boolean
+ var enabled: Boolean
+ var icon: Drawable?
+ var requiresUIThread: Boolean
+ var location: Location
- /**
- * Prepare the action. Subclasses can modify the visual properties of this action here.
- * @param data The data containing various information about the event.
- */
- fun prepare(data: ActionData)
+ /**
+ * Prepare the action. Subclasses can modify the visual properties of this action here.
+ * @param data The data containing various information about the event.
+ */
+ fun prepare(data: ActionData)
- /**
- * Execute the action. The action executed in a background thread by default.
- *
- * @param data The data containing various information about the event.
- * @return `true` if this action was executed successfully, `false` otherwise.
- */
- fun execAction(data: ActionData): Any
+ /**
+ * Execute the action. The action executed in a background thread by default.
+ *
+ * @param data The data containing various information about the event.
+ * @return `true` if this action was executed successfully, `false` otherwise.
+ */
+ fun execAction(data: ActionData): Any
- /**
- * Called just after the [execAction] method executes **successfully** (i.e. returns `true`).
- * Subclasses are free to do UI related work here as this method is called on UI thread.
- *
- * @param data The data containing various information about the event.
- */
- fun postExec(data: ActionData, result: Any) = Unit
+ /**
+ * Called just after the [execAction] method executes **successfully** (i.e. returns `true`).
+ * Subclasses are free to do UI related work here as this method is called on UI thread.
+ *
+ * @param data The data containing various information about the event.
+ */
+ fun postExec(data: ActionData, result: Any) = Unit
- /**
- * Return the show as action flags for the menu item.
- *
- * @return The show as action flags.
- */
- fun getShowAsActionFlags(data: ActionData): Int = -1
+ /**
+ * Return the show as action flags for the menu item.
+ *
+ * @return The show as action flags.
+ */
+ fun getShowAsActionFlags(data: ActionData): Int = -1
- /**
- * Checks if the given [ActionData] has instances of the given [types].
- *
- * @param data The data to check.
- * @param types The type of objects to look for.
- * @return `true` if the [data] has the given [types], `false` otherwise.
- */
- fun hasRequiredData(data: ActionData, vararg types: Class<*>): Boolean {
- for (type in types) {
- data.get(type) ?: return false
- }
-
- return true
+ /**
+ * Checks if the given [ActionData] has instances of the given [types].
+ *
+ * @param data The data to check.
+ * @param types The type of objects to look for.
+ * @return `true` if the [data] has the given [types], `false` otherwise.
+ */
+ fun hasRequiredData(data: ActionData, vararg types: Class<*>): Boolean {
+ for (type in types) {
+ data.get(type) ?: return false
}
- /** Marks this action item as invisible. */
- fun markInvisible() {
- visible = false
- enabled = false
+ return true
+ }
+
+ /** Marks this action item as invisible. */
+ fun markInvisible() {
+ visible = false
+ enabled = false
+ }
+
+ /** Location where an action item will be shown. */
+ enum class Location(val id: String) {
+
+ /** Location marker for action items shown in editor activity's toolbar. */
+ EDITOR_TOOLBAR("editor.activity.toolbar"),
+
+ /** Location marker for action items shown in editor's text action menu. */
+ EDITOR_TEXT_ACTIONS("editor.textActions"),
+
+ /**
+ * Location marker for action items shown in 'Code actions' submenu in editor's text action
+ * menu.
+ */
+ EDITOR_CODE_ACTIONS("editor.codeActions"),
+
+ /** Location marker for action items show in 'Find & Replace' action mode menu in editor. */
+ EDITOR_SEARCH_ACTION_MODE("editor.searchActionMode");
+
+ override fun toString(): String {
+ return id
}
- /** Location where an action item will be shown. */
- enum class Location(val id: String) {
-
- /** Location marker for action items shown in editor activity's toolbar. */
- EDITOR_TOOLBAR("editor.activity.toolbar"),
-
- /** Location marker for action items shown in editor's text action menu. */
- EDITOR_TEXT_ACTIONS("editor.textActions"),
-
- /**
- * Location marker for action items shown in 'Code actions' submenu in editor's text action
- * menu.
- */
- EDITOR_CODE_ACTIONS("editor.codeActions"),
-
- /** Location marker for action items show in 'Find & Replace' action mode menu in editor. */
- EDITOR_SEARCH_ACTION_MODE("editor.searchActionMode");
-
- override fun toString(): String {
- return id
- }
-
- fun forId(id: String): Location {
- return values().first { it.id == id }
- }
+ fun forId(id: String): Location {
+ return values().first { it.id == id }
}
+ }
}
diff --git a/actions/src/main/java/com/itsaky/androidide/actions/ActionMenu.kt b/actions/src/main/java/com/itsaky/androidide/actions/ActionMenu.kt
index 9d8e092df..b758775de 100644
--- a/actions/src/main/java/com/itsaky/androidide/actions/ActionMenu.kt
+++ b/actions/src/main/java/com/itsaky/androidide/actions/ActionMenu.kt
@@ -23,14 +23,14 @@ package com.itsaky.androidide.actions
*/
interface ActionMenu : ActionItem {
- val children: MutableSet
+ val children: MutableSet
- fun addAction(action: ActionItem) = children.add(action)
+ fun addAction(action: ActionItem) = children.add(action)
- fun removeAction(action: ActionItem) = children.remove(action)
+ fun removeAction(action: ActionItem) = children.remove(action)
- /** Action menus are not supposed to perform any action */
- override fun execAction(data: ActionData): Boolean {
- return false
- }
+ /** Action menus are not supposed to perform any action */
+ override fun execAction(data: ActionData): Boolean {
+ return false
+ }
}
diff --git a/actions/src/main/java/com/itsaky/androidide/actions/ActionsRegistry.kt b/actions/src/main/java/com/itsaky/androidide/actions/ActionsRegistry.kt
index ce6aaa938..7f020ef8d 100644
--- a/actions/src/main/java/com/itsaky/androidide/actions/ActionsRegistry.kt
+++ b/actions/src/main/java/com/itsaky/androidide/actions/ActionsRegistry.kt
@@ -22,87 +22,87 @@ import com.itsaky.androidide.actions.internal.DefaultActionsRegistry
/** @author Akash Yadav */
abstract class ActionsRegistry {
- companion object {
+ companion object {
- private var instance: ActionsRegistry? = null
+ private var instance: ActionsRegistry? = null
- @JvmStatic
- fun getInstance(): ActionsRegistry {
- if (instance == null) {
- instance = DefaultActionsRegistry()
- }
+ @JvmStatic
+ fun getInstance(): ActionsRegistry {
+ if (instance == null) {
+ instance = DefaultActionsRegistry()
+ }
- return instance as ActionsRegistry
- }
+ return instance as ActionsRegistry
}
+ }
+
+ /**
+ * Register the given action.
+ *
+ * @param action The action to register. Must not be `null`.
+ * @return `true` if the action was registered successfully. `false` otherwise.
+ */
+ abstract fun registerAction(action: ActionItem): Boolean
+
+ /**
+ * Unregister the given action.
+ *
+ * @param action The action to unregister. Must not be `null`.
+ * @return `true` if the action was unregistered successfully. `false` otherwise.
+ */
+ abstract fun unregisterAction(action: ActionItem): Boolean
+
+ /**
+ * Unregister the action with the given ID.
+ *
+ * @param id The ID of action to unregister. Must not be `null`.
+ * @return `true` if the action was unregistered successfully. `false` otherwise.
+ */
+ abstract fun unregisterAction(id: String): Boolean
+
+ /**
+ * Find the action with the given ID.
+ *
+ * @param id The ID of the action to find.
+ * @return The found action or `null`.
+ */
+ abstract fun findAction(location: ActionItem.Location, id: String): ActionItem?
+
+ /**
+ * Fill the given menu with the registered actions.
+ *
+ * Subclasses must first call [ActionItem.prepare] to update the action.
+ */
+ abstract fun fillMenu(data: ActionData, location: ActionItem.Location, menu: Menu)
+
+ /** Get all the registered actions at the given location. */
+ abstract fun getActions(location: ActionItem.Location): Map
+ /** Clear all the registered actions. */
+ abstract fun clearActions(location: ActionItem.Location)
+
+ /**
+ * Register a listener that will be called when any action is executed. The callbacks are called
+ * irrespective of the action's execution result.
+ *
+ * @param listener The listener to register.
+ */
+ abstract fun registerActionExecListener(listener: ActionExecListener)
+
+ /**
+ * Unregister the given listener.
+ *
+ * @param listener The listener to unregister.
+ */
+ abstract fun unregisterActionExecListener(listener: ActionExecListener)
+
+ /** Listener for listening to callbacks for action execution. */
+ interface ActionExecListener {
/**
- * Register the given action.
- *
- * @param action The action to register. Must not be `null`.
- * @return `true` if the action was registered successfully. `false` otherwise.
+ * The given action was executed.
+ * @param action The action that was executed.
+ * @param result The result of the action execution.
*/
- abstract fun registerAction(action: ActionItem): Boolean
-
- /**
- * Unregister the given action.
- *
- * @param action The action to unregister. Must not be `null`.
- * @return `true` if the action was unregistered successfully. `false` otherwise.
- */
- abstract fun unregisterAction(action: ActionItem): Boolean
-
- /**
- * Unregister the action with the given ID.
- *
- * @param id The ID of action to unregister. Must not be `null`.
- * @return `true` if the action was unregistered successfully. `false` otherwise.
- */
- abstract fun unregisterAction(id: String): Boolean
-
- /**
- * Find the action with the given ID.
- *
- * @param id The ID of the action to find.
- * @return The found action or `null`.
- */
- abstract fun findAction(location: ActionItem.Location, id: String): ActionItem?
-
- /**
- * Fill the given menu with the registered actions.
- *
- * Subclasses must first call [ActionItem.prepare] to update the action.
- */
- abstract fun fillMenu(data: ActionData, location: ActionItem.Location, menu: Menu)
-
- /** Get all the registered actions at the given location. */
- abstract fun getActions(location: ActionItem.Location): Map
- /** Clear all the registered actions. */
- abstract fun clearActions(location: ActionItem.Location)
-
- /**
- * Register a listener that will be called when any action is executed. The callbacks are called
- * irrespective of the action's execution result.
- *
- * @param listener The listener to register.
- */
- abstract fun registerActionExecListener(listener: ActionExecListener)
-
- /**
- * Unregister the given listener.
- *
- * @param listener The listener to unregister.
- */
- abstract fun unregisterActionExecListener(listener: ActionExecListener)
-
- /** Listener for listening to callbacks for action execution. */
- interface ActionExecListener {
-
- /**
- * The given action was executed.
- * @param action The action that was executed.
- * @param result The result of the action execution.
- */
- fun onExec(action: ActionItem, result: Any)
- }
+ fun onExec(action: ActionItem, result: Any)
+ }
}
diff --git a/actions/src/main/java/com/itsaky/androidide/actions/internal/DefaultActionsRegistry.kt b/actions/src/main/java/com/itsaky/androidide/actions/internal/DefaultActionsRegistry.kt
index b93158919..07b668ac5 100644
--- a/actions/src/main/java/com/itsaky/androidide/actions/internal/DefaultActionsRegistry.kt
+++ b/actions/src/main/java/com/itsaky/androidide/actions/internal/DefaultActionsRegistry.kt
@@ -33,142 +33,142 @@ import java.util.concurrent.*
*/
class DefaultActionsRegistry : ActionsRegistry() {
- private val log = ILogger.newInstance("DefaultActionsRegistry")
- private val actions: MutableMap> = mutableMapOf()
- private val listeners = mutableSetOf()
+ private val log = ILogger.newInstance("DefaultActionsRegistry")
+ private val actions: MutableMap> = mutableMapOf()
+ private val listeners = mutableSetOf()
- override fun getActions(location: ActionItem.Location): MutableMap {
- if (actions[location.id] == null) {
- actions[location.id] = mutableMapOf()
- }
-
- return actions[location.id]!!
+ override fun getActions(location: ActionItem.Location): MutableMap {
+ if (actions[location.id] == null) {
+ actions[location.id] = mutableMapOf()
}
- override fun registerAction(action: ActionItem): Boolean {
- val actionsAtLocation = getActions(action.location)
- actionsAtLocation[action.id] = action
+ return actions[location.id]!!
+ }
+
+ override fun registerAction(action: ActionItem): Boolean {
+ val actionsAtLocation = getActions(action.location)
+ actionsAtLocation[action.id] = action
+ return true
+ }
+
+ override fun unregisterAction(action: ActionItem): Boolean {
+ val actions = getActions(action.location)
+ val older = actions.remove(action.id)
+ if (older != null) {
+ return true
+ }
+
+ return false
+ }
+
+ override fun unregisterAction(id: String): Boolean {
+ for (locations in this.actions.values) {
+ val older = locations.remove(id)
+ if (older != null) {
return true
+ }
}
- override fun unregisterAction(action: ActionItem): Boolean {
- val actions = getActions(action.location)
- val older = actions.remove(action.id)
- if (older != null) {
- return true
+ return false
+ }
+
+ override fun findAction(location: ActionItem.Location, id: String): ActionItem? =
+ getActions(location)[id]
+
+ override fun clearActions(location: ActionItem.Location) = getActions(location).clear()
+
+ override fun registerActionExecListener(listener: ActionExecListener) {
+ listeners.add(listener)
+ }
+
+ override fun unregisterActionExecListener(listener: ActionExecListener) {
+ listeners.remove(listener)
+ }
+
+ override fun fillMenu(data: ActionData, location: ActionItem.Location, menu: Menu) {
+ val actions = getActions(location)
+
+ for (action in actions.values) {
+ action.prepare(data)
+
+ if (!action.visible) {
+ continue
+ }
+ addActionToMenu(menu, action, data)
+ }
+ }
+
+ private fun addActionToMenu(menu: Menu, action: ActionItem, data: ActionData) {
+ val item: MenuItem =
+ if (action is ActionMenu) {
+ val sub = menu.addSubMenu(action.label)
+
+ for (subItem in action.children) {
+ subItem.prepare(data)
+ if (subItem.visible) {
+ addActionToMenu(sub, subItem, data)
+ }
}
- return false
+ sub.item
+ } else {
+ menu.add(action.label)
+ }
+
+ item.isEnabled = action.enabled
+ item.icon = action.icon
+
+ if (item.icon != null) {
+ item.icon.alpha = if (action.enabled) 255 else 76
+ item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM)
+ } else {
+ item.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER)
}
- override fun unregisterAction(id: String): Boolean {
- for (locations in this.actions.values) {
- val older = locations.remove(id)
- if (older != null) {
- return true
- }
- }
-
- return false
+ if (action.getShowAsActionFlags(data) != -1) {
+ item.setShowAsAction(action.getShowAsActionFlags(data))
}
- override fun findAction(location: ActionItem.Location, id: String): ActionItem? =
- getActions(location)[id]
-
- override fun clearActions(location: ActionItem.Location) = getActions(location).clear()
-
- override fun registerActionExecListener(listener: ActionExecListener) {
- listeners.add(listener)
- }
-
- override fun unregisterActionExecListener(listener: ActionExecListener) {
- listeners.remove(listener)
- }
-
- override fun fillMenu(data: ActionData, location: ActionItem.Location, menu: Menu) {
- val actions = getActions(location)
-
- for (action in actions.values) {
- action.prepare(data)
-
- if (!action.visible) {
- continue
- }
- addActionToMenu(menu, action, data)
- }
- }
-
- private fun addActionToMenu(menu: Menu, action: ActionItem, data: ActionData) {
- val item: MenuItem =
- if (action is ActionMenu) {
- val sub = menu.addSubMenu(action.label)
-
- for (subItem in action.children) {
- subItem.prepare(data)
- if (subItem.visible) {
- addActionToMenu(sub, subItem, data)
- }
- }
-
- sub.item
- } else {
- menu.add(action.label)
- }
-
- item.isEnabled = action.enabled
- item.icon = action.icon
-
- if (item.icon != null) {
- item.icon.alpha = if (action.enabled) 255 else 76
- item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM)
+ if (action !is ActionMenu) {
+ item.setOnMenuItemClickListener {
+ if (action.requiresUIThread) {
+ ThreadUtils.runOnUiThread {
+ val result = action.execAction(data)
+ action.postExec(data, result)
+ notifyActionExec(action, result)
+ }
} else {
- item.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER)
+ execInBackground(action, data, it)
}
- if (action.getShowAsActionFlags(data) != -1) {
- item.setShowAsAction(action.getShowAsActionFlags(data))
- }
-
- if (action !is ActionMenu) {
- item.setOnMenuItemClickListener {
- if (action.requiresUIThread) {
- ThreadUtils.runOnUiThread {
- val result = action.execAction(data)
- action.postExec(data, result)
- notifyActionExec(action, result)
- }
- } else {
- execInBackground(action, data, it)
- }
-
- true
- }
- }
+ true
+ }
}
+ }
- private fun execInBackground(action: ActionItem, data: ActionData, it: MenuItem) {
- val start = System.currentTimeMillis()
- CompletableFuture.supplyAsync { action.execAction(data) }
- .whenComplete { result, error ->
- if (result == null || (result is Boolean && !result) || error != null) {
- log.error(
- "An error occurred when performing action '${it.title}'. Action failed in ${System.currentTimeMillis() - start}ms",
- error)
- } else {
- log.info(
- "Action '${it.title}' completed in ${System.currentTimeMillis() - start}ms")
- }
-
- ThreadUtils.runOnUiThread {
- action.postExec(data, result ?: false)
- notifyActionExec(action, result ?: false)
- }
- }
- }
-
- private fun notifyActionExec(action: ActionItem, result: Any) {
- for (listener in listeners) {
- listener.onExec(action, result)
+ private fun execInBackground(action: ActionItem, data: ActionData, it: MenuItem) {
+ val start = System.currentTimeMillis()
+ CompletableFuture.supplyAsync { action.execAction(data) }
+ .whenComplete { result, error ->
+ if (result == null || (result is Boolean && !result) || error != null) {
+ log.error(
+ "An error occurred when performing action '${it.title}'. Action failed in ${System.currentTimeMillis() - start}ms",
+ error
+ )
+ } else {
+ log.info("Action '${it.title}' completed in ${System.currentTimeMillis() - start}ms")
}
+
+ ThreadUtils.runOnUiThread {
+ action.postExec(data, result ?: false)
+ notifyActionExec(action, result ?: false)
+ }
+ }
+ }
+
+ private fun notifyActionExec(action: ActionItem, result: Any) {
+ for (listener in listeners) {
+ listener.onExec(action, result)
}
+ }
}
diff --git a/app/src/main/assets/templates/xml/drawable.xml b/app/src/main/assets/templates/xml/drawable.xml
index 684fed7fc..dc52b23ed 100644
--- a/app/src/main/assets/templates/xml/drawable.xml
+++ b/app/src/main/assets/templates/xml/drawable.xml
@@ -1,8 +1,5 @@
-
diff --git a/app/src/main/assets/templates/xml/layout.xml b/app/src/main/assets/templates/xml/layout.xml
index afb27a645..b2bfb7242 100644
--- a/app/src/main/assets/templates/xml/layout.xml
+++ b/app/src/main/assets/templates/xml/layout.xml
@@ -1,8 +1,6 @@
-
@@ -19,7 +17,7 @@
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="@color/colorPrimary"
- app:popupOverlay="@style/ThemeOverlay.MaterialComponents.Light"/>
+ app:popupOverlay="@style/ThemeOverlay.MaterialComponents.Light" />
@@ -28,10 +26,10 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior">
-
+
-
-
+
+
\ No newline at end of file
diff --git a/app/src/main/assets/templates/xml/menu.xml b/app/src/main/assets/templates/xml/menu.xml
index 121fbf1c6..de612fead 100644
--- a/app/src/main/assets/templates/xml/menu.xml
+++ b/app/src/main/assets/templates/xml/menu.xml
@@ -1,11 +1,8 @@
-