├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md └── workflows │ └── android.yml ├── .gitignore ├── .idea ├── codeStyles │ └── Project.xml ├── gradle.xml ├── misc.xml ├── runConfigurations.xml └── vcs.xml ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── PULL_REQUEST_TEMPLATE.md ├── README.md ├── app ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── github │ │ └── ahmadaghazadeh │ │ └── sample │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── java │ │ └── com │ │ │ └── github │ │ │ └── ahmadaghazadeh │ │ │ └── sample │ │ │ ├── App.java │ │ │ ├── CodeModel.java │ │ │ └── MainActivity.java │ └── res │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable │ │ └── ic_launcher_background.xml │ │ ├── layout │ │ └── activity_main.xml │ │ ├── mipmap-anydpi-v26 │ │ ├── ic_launcher.xml │ │ └── ic_launcher_round.xml │ │ ├── mipmap-hdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-mdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── mipmap-xxxhdpi │ │ ├── ic_launcher.png │ │ └── ic_launcher_round.png │ │ ├── navigation │ │ └── nav_graph.xml │ │ └── values │ │ ├── colors.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── github │ └── ahmadaghazadeh │ └── sample │ └── ExampleUnitTest.java ├── build.gradle ├── gradle.properties ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── library ├── .gitignore ├── build.gradle ├── proguard-rules.pro └── src │ ├── androidTest │ └── java │ │ └── com │ │ └── github │ │ └── ahmadaghazadeh │ │ └── editor │ │ └── ExampleInstrumentedTest.java │ ├── main │ ├── AndroidManifest.xml │ ├── assets │ │ ├── fonts │ │ │ ├── Source_Code_Pro.ttf │ │ │ ├── droid_sans_mono.ttf │ │ │ ├── josefin_sans_regular.ttf │ │ │ ├── josefin_sans_semibold.ttf │ │ │ ├── roboto.ttf │ │ │ └── roboto_light.ttf │ │ └── templates │ │ │ ├── AlertDialog.txt │ │ │ ├── Button.txt │ │ │ ├── ButtonWidget.txt │ │ │ ├── ButtonWithTouchListener.txt │ │ │ ├── CheckBoxWidget.txt │ │ │ ├── ImageWidget.txt │ │ │ ├── Menu.txt │ │ │ ├── SwitchWidget.txt │ │ │ └── ToggleWidget.txt │ ├── java │ │ └── com │ │ │ └── github │ │ │ └── ahmadaghazadeh │ │ │ └── editor │ │ │ ├── adapter │ │ │ ├── Symbol.java │ │ │ ├── SymbolAdapter.java │ │ │ └── files │ │ │ │ └── FileDetail.java │ │ │ ├── document │ │ │ ├── commons │ │ │ │ ├── FileObject.java │ │ │ │ ├── LineObject.java │ │ │ │ └── LinesCollection.java │ │ │ └── suggestions │ │ │ │ ├── SuggestionAdapter.java │ │ │ │ ├── SuggestionItem.java │ │ │ │ └── SuggestionType.java │ │ │ ├── interfaces │ │ │ └── OnScrollChangedListener.java │ │ │ ├── keyboard │ │ │ └── ExtendedKeyboard.java │ │ │ ├── manager │ │ │ └── TypefaceManager.java │ │ │ ├── processor │ │ │ ├── TextNotFoundException.java │ │ │ ├── TextProcessor.java │ │ │ ├── language │ │ │ │ ├── CSSLanguage.java │ │ │ │ ├── HtmlLanguage.java │ │ │ │ ├── JSLanguage.java │ │ │ │ ├── Language.java │ │ │ │ └── LanguageProvider.java │ │ │ ├── style │ │ │ │ ├── StylePaint.java │ │ │ │ ├── StyleSpan.java │ │ │ │ └── SyntaxHighlightSpan.java │ │ │ └── utils │ │ │ │ ├── Converter.java │ │ │ │ ├── DefaultSetting.java │ │ │ │ ├── ITextProcessorSetting.java │ │ │ │ ├── Logger.java │ │ │ │ ├── files │ │ │ │ └── SortMode.java │ │ │ │ └── text │ │ │ │ ├── ArrayUtils.java │ │ │ │ ├── LineUtils.java │ │ │ │ ├── SymbolsTokenizer.java │ │ │ │ ├── TextChange.java │ │ │ │ └── UndoStack.java │ │ │ └── widget │ │ │ ├── CodeEditor.java │ │ │ ├── FastScrollerView.java │ │ │ └── GutterView.java │ └── res │ │ ├── drawable-hdpi │ │ ├── fastscroll_thumb_default.png │ │ ├── fastscroll_thumb_pressed.png │ │ ├── ic_drawer_app_rate.png │ │ ├── ic_drawer_buy_ultimate.png │ │ ├── ic_drawer_insert_color.png │ │ ├── ic_drawer_read_only.png │ │ ├── ic_drawer_right.png │ │ ├── ic_drawer_settings.png │ │ ├── ic_drawer_syntax_highlight.png │ │ ├── ic_drawer_templates.png │ │ ├── ic_drawer_textures.png │ │ ├── ic_drawer_validator.png │ │ ├── ic_edit_copy.png │ │ ├── ic_edit_cut.png │ │ ├── ic_edit_delete_line.png │ │ ├── ic_edit_duplicate_line.png │ │ ├── ic_edit_paste.png │ │ ├── ic_edit_redo.png │ │ ├── ic_edit_select_all.png │ │ ├── ic_edit_selection_line.png │ │ ├── ic_edit_undo.png │ │ ├── ic_fexplorer_document.png │ │ ├── ic_fexplorer_fab_document.png │ │ ├── ic_fexplorer_fab_folder.png │ │ ├── ic_fexplorer_folder.png │ │ ├── ic_file_close.png │ │ ├── ic_file_new.png │ │ ├── ic_file_open.png │ │ ├── ic_file_properties.png │ │ ├── ic_file_save.png │ │ ├── ic_menu_edit.png │ │ ├── ic_menu_file.png │ │ ├── ic_notification_default.png │ │ ├── ic_search_find.png │ │ ├── ic_search_goto_line.png │ │ ├── ic_search_replace.png │ │ ├── ic_shortcut_file_explorer.png │ │ ├── ic_shortcut_settings.png │ │ └── ic_tab_close.png │ │ ├── drawable-mdpi │ │ ├── fastscroll_thumb_default.png │ │ ├── fastscroll_thumb_pressed.png │ │ ├── ic_drawer_app_rate.png │ │ ├── ic_drawer_buy_ultimate.png │ │ ├── ic_drawer_insert_color.png │ │ ├── ic_drawer_read_only.png │ │ ├── ic_drawer_right.png │ │ ├── ic_drawer_settings.png │ │ ├── ic_drawer_syntax_highlight.png │ │ ├── ic_drawer_templates.png │ │ ├── ic_drawer_textures.png │ │ ├── ic_drawer_validator.png │ │ ├── ic_edit_copy.png │ │ ├── ic_edit_cut.png │ │ ├── ic_edit_delete_line.png │ │ ├── ic_edit_duplicate_line.png │ │ ├── ic_edit_paste.png │ │ ├── ic_edit_redo.png │ │ ├── ic_edit_select_all.png │ │ ├── ic_edit_select_line.png │ │ ├── ic_edit_undo.png │ │ ├── ic_fexplorer_document.png │ │ ├── ic_fexplorer_fab_document.png │ │ ├── ic_fexplorer_fab_folder.png │ │ ├── ic_fexplorer_folder.png │ │ ├── ic_file_close.png │ │ ├── ic_file_new.png │ │ ├── ic_file_open.png │ │ ├── ic_file_properties.png │ │ ├── ic_file_save.png │ │ ├── ic_menu_edit.png │ │ ├── ic_menu_file.png │ │ ├── ic_notification_default.png │ │ ├── ic_search_find.png │ │ ├── ic_search_goto_line.png │ │ ├── ic_search_replace.png │ │ ├── ic_shortcut_file_explorer.png │ │ ├── ic_shortcut_settings.png │ │ └── ic_tab_close.png │ │ ├── drawable-v24 │ │ └── ic_launcher_foreground.xml │ │ ├── drawable-xhdpi │ │ ├── fastscroll_thumb_default.png │ │ ├── fastscroll_thumb_pressed.png │ │ ├── ic_drawer_app_rate.png │ │ ├── ic_drawer_buy_ultimate.png │ │ ├── ic_drawer_insert_color.png │ │ ├── ic_drawer_read_only.png │ │ ├── ic_drawer_right.png │ │ ├── ic_drawer_settings.png │ │ ├── ic_drawer_syntax_highlight.png │ │ ├── ic_drawer_templates.png │ │ ├── ic_drawer_textures.png │ │ ├── ic_drawer_validator.png │ │ ├── ic_edit_copy.png │ │ ├── ic_edit_cut.png │ │ ├── ic_edit_delete_line.png │ │ ├── ic_edit_duplicate_line.png │ │ ├── ic_edit_paste.png │ │ ├── ic_edit_redo.png │ │ ├── ic_edit_select_all.png │ │ ├── ic_edit_select_line.png │ │ ├── ic_edit_undo.png │ │ ├── ic_fexplorer_document.png │ │ ├── ic_fexplorer_fab_document.png │ │ ├── ic_fexplorer_fab_folder.png │ │ ├── ic_fexplorer_folder.png │ │ ├── ic_file_close.png │ │ ├── ic_file_new.png │ │ ├── ic_file_open.png │ │ ├── ic_file_properties.png │ │ ├── ic_file_save.png │ │ ├── ic_menu_edit.png │ │ ├── ic_menu_file.png │ │ ├── ic_notification_default.png │ │ ├── ic_search_find.png │ │ ├── ic_search_goto_line.png │ │ ├── ic_search_replace.png │ │ ├── ic_shortcut_file_explorer.png │ │ ├── ic_shortcut_settings.png │ │ └── ic_tab_close.png │ │ ├── drawable-xxhdpi │ │ ├── ic_drawer_app_rate.png │ │ ├── ic_drawer_buy_ultimate.png │ │ ├── ic_drawer_insert_color.png │ │ ├── ic_drawer_read_only.png │ │ ├── ic_drawer_right.png │ │ ├── ic_drawer_settings.png │ │ ├── ic_drawer_syntax_highlight.png │ │ ├── ic_drawer_templates.png │ │ ├── ic_drawer_textures.png │ │ ├── ic_drawer_validator.png │ │ ├── ic_edit_copy.png │ │ ├── ic_edit_cut.png │ │ ├── ic_edit_delete_line.png │ │ ├── ic_edit_duplicate_line.png │ │ ├── ic_edit_paste.png │ │ ├── ic_edit_redo.png │ │ ├── ic_edit_select_all.png │ │ ├── ic_edit_select_line.png │ │ ├── ic_edit_undo.png │ │ ├── ic_fexplorer_document.png │ │ ├── ic_fexplorer_fab_document.png │ │ ├── ic_fexplorer_fab_folder.png │ │ ├── ic_fexplorer_folder.png │ │ ├── ic_file_close.png │ │ ├── ic_file_new.png │ │ ├── ic_file_open.png │ │ ├── ic_file_properties.png │ │ ├── ic_file_save.png │ │ ├── ic_menu_edit.png │ │ ├── ic_menu_file.png │ │ ├── ic_notification_default.png │ │ ├── ic_search_find.png │ │ ├── ic_search_goto_line.png │ │ ├── ic_search_replace.png │ │ ├── ic_shortcut_file_explorer.png │ │ ├── ic_shortcut_settings.png │ │ └── ic_tab_close.png │ │ ├── drawable-xxxhdpi │ │ ├── ic_drawer_app_rate.png │ │ ├── ic_drawer_buy_ultimate.png │ │ ├── ic_drawer_insert_color.png │ │ ├── ic_drawer_read_only.png │ │ ├── ic_drawer_right.png │ │ ├── ic_drawer_settings.png │ │ ├── ic_drawer_syntax_highlight.png │ │ ├── ic_drawer_templates.png │ │ ├── ic_drawer_textures.png │ │ ├── ic_drawer_validator.png │ │ ├── ic_edit_copy.png │ │ ├── ic_edit_cut.png │ │ ├── ic_edit_delete_line.png │ │ ├── ic_edit_duplicate_line.png │ │ ├── ic_edit_paste.png │ │ ├── ic_edit_redo.png │ │ ├── ic_edit_select_all.png │ │ ├── ic_edit_select_line.png │ │ ├── ic_edit_undo.png │ │ ├── ic_fexplorer_document.png │ │ ├── ic_fexplorer_fab_document.png │ │ ├── ic_fexplorer_fab_folder.png │ │ ├── ic_fexplorer_folder.png │ │ ├── ic_file_close.png │ │ ├── ic_file_new.png │ │ ├── ic_file_open.png │ │ ├── ic_file_properties.png │ │ ├── ic_file_save.png │ │ ├── ic_menu_edit.png │ │ ├── ic_menu_file.png │ │ ├── ic_notification_default.png │ │ ├── ic_search_find.png │ │ ├── ic_search_goto_line.png │ │ ├── ic_search_replace.png │ │ ├── ic_shortcut_file_explorer.png │ │ ├── ic_shortcut_settings.png │ │ └── ic_tab_close.png │ │ ├── drawable │ │ ├── drawer_item_icon_selector.xml │ │ ├── drawer_item_text_selector.xml │ │ └── ic_launcher_background.xml │ │ ├── font │ │ ├── josefin_sans_italic.ttf │ │ ├── josefin_sans_regular.ttf │ │ └── main_sans.xml │ │ ├── layout │ │ ├── fragment_document.xml │ │ ├── item_list_key.xml │ │ ├── item_list_suggest.xml │ │ └── item_tab_file.xml │ │ └── values │ │ ├── arrays.xml │ │ ├── attrs.xml │ │ ├── colors.xml │ │ ├── dimens.xml │ │ ├── ids.xml │ │ ├── strings.xml │ │ └── styles.xml │ └── test │ └── java │ └── com │ └── github │ └── ahmadaghazadeh │ └── editor │ └── ExampleUnitTest.java ├── media └── screenshot.png └── settings.gradle /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | 5 | --- 6 | 7 | **Describe the bug** 8 | A clear and concise description of what the bug is. 9 | 10 | **To Reproduce** 11 | Steps to reproduce the behavior: 12 | 1. Go to '...' 13 | 2. Click on '....' 14 | 3. Scroll down to '....' 15 | 4. See error 16 | 17 | **Expected behavior** 18 | A clear and concise description of what you expected to happen. 19 | 20 | **Screenshots** 21 | If applicable, add screenshots to help explain your problem. 22 | 23 | **Desktop (please complete the following information):** 24 | - OS: [e.g. iOS] 25 | - Browser [e.g. chrome, safari] 26 | - Version [e.g. 22] 27 | 28 | **Smartphone (please complete the following information):** 29 | - Device: [e.g. iPhone6] 30 | - OS: [e.g. iOS8.1] 31 | - Browser [e.g. stock browser, safari] 32 | - Version [e.g. 22] 33 | 34 | **Additional context** 35 | Add any other context about the problem here. 36 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | 5 | --- 6 | 7 | **Is your feature request related to a problem? Please describe.** 8 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 9 | 10 | **Describe the solution you'd like** 11 | A clear and concise description of what you want to happen. 12 | 13 | **Describe alternatives you've considered** 14 | A clear and concise description of any alternative solutions or features you've considered. 15 | 16 | **Additional context** 17 | Add any other context or screenshots about the feature request here. 18 | -------------------------------------------------------------------------------- /.github/workflows/android.yml: -------------------------------------------------------------------------------- 1 | name: Android CI 2 | 3 | on: [push] 4 | 5 | jobs: 6 | build: 7 | 8 | runs-on: ubuntu-latest 9 | 10 | steps: 11 | - uses: actions/checkout@v1 12 | - name: set up JDK 1.8 13 | uses: actions/setup-java@v1 14 | with: 15 | java-version: 1.8 16 | - name: Build with Gradle 17 | run: ./gradlew build 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/caches/build_file_checksums.ser 5 | /.idea/libraries 6 | /.idea/modules.xml 7 | /.idea/workspace.xml 8 | .DS_Store 9 | /build 10 | /captures 11 | .externalNativeBuild 12 | -------------------------------------------------------------------------------- /.idea/codeStyles/Project.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 15 | 16 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /.idea/gradle.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 18 | 19 | -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 19 | 31 | 32 | 33 | 34 | 35 | 36 | 38 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, sex characteristics, gender identity and expression, 9 | level of experience, education, socio-economic status, nationality, personal 10 | appearance, race, religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at ahmad.aghazadeh.a@gmail.com. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | 75 | For answers to common questions about this code of conduct, see 76 | https://www.contributor-covenant.org/faq 77 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | When contributing to this repository, please first discuss the change you wish to make via issue, 4 | email, or any other method with the owners of this repository before making a change. 5 | 6 | Please note we have a code of conduct, please follow it in all your interactions with the project. 7 | 8 | ## Pull Request Process 9 | 10 | 1. Ensure any install or build dependencies are removed before the end of the layer when doing a 11 | build. 12 | 2. Update the README.md with details of changes to the interface, this includes new environment 13 | variables, exposed ports, useful file locations and container parameters. 14 | 3. Increase the version numbers in any examples files and the README.md to the new version that this 15 | Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/). 16 | 4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you 17 | do not have permission to do that, you may request the second reviewer to merge it for you. 18 | 19 | ## Code of Conduct 20 | 21 | ### Our Pledge 22 | 23 | In the interest of fostering an open and welcoming environment, we as 24 | contributors and maintainers pledge to making participation in our project and 25 | our community a harassment-free experience for everyone, regardless of age, body 26 | size, disability, ethnicity, gender identity and expression, level of experience, 27 | nationality, personal appearance, race, religion, or sexual identity and 28 | orientation. 29 | 30 | ### Our Standards 31 | 32 | Examples of behavior that contributes to creating a positive environment 33 | include: 34 | 35 | * Using welcoming and inclusive language 36 | * Being respectful of differing viewpoints and experiences 37 | * Gracefully accepting constructive criticism 38 | * Focusing on what is best for the community 39 | * Showing empathy towards other community members 40 | 41 | Examples of unacceptable behavior by participants include: 42 | 43 | * The use of sexualized language or imagery and unwelcome sexual attention or 44 | advances 45 | * Trolling, insulting/derogatory comments, and personal or political attacks 46 | * Public or private harassment 47 | * Publishing others' private information, such as a physical or electronic 48 | address, without explicit permission 49 | * Other conduct which could reasonably be considered inappropriate in a 50 | professional setting 51 | 52 | ### Our Responsibilities 53 | 54 | Project maintainers are responsible for clarifying the standards of acceptable 55 | behavior and are expected to take appropriate and fair corrective action in 56 | response to any instances of unacceptable behavior. 57 | 58 | Project maintainers have the right and responsibility to remove, edit, or 59 | reject comments, commits, code, wiki edits, issues, and other contributions 60 | that are not aligned to this Code of Conduct, or to ban temporarily or 61 | permanently any contributor for other behaviors that they deem inappropriate, 62 | threatening, offensive, or harmful. 63 | 64 | ### Scope 65 | 66 | This Code of Conduct applies both within project spaces and in public spaces 67 | when an individual is representing the project or its community. Examples of 68 | representing a project or community include using an official project e-mail 69 | address, posting via an official social media account, or acting as an appointed 70 | representative at an online or offline event. Representation of a project may be 71 | further defined and clarified by project maintainers. 72 | 73 | ### Enforcement 74 | 75 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 76 | reported by contacting the project team at [INSERT EMAIL ADDRESS]. All 77 | complaints will be reviewed and investigated and will result in a response that 78 | is deemed necessary and appropriate to the circumstances. The project team is 79 | obligated to maintain confidentiality with regard to the reporter of an incident. 80 | Further details of specific enforcement policies may be posted separately. 81 | 82 | Project maintainers who do not follow or enforce the Code of Conduct in good 83 | faith may face temporary or permanent repercussions as determined by other 84 | members of the project's leadership. 85 | 86 | ### Attribution 87 | 88 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 89 | available at [http://contributor-covenant.org/version/1/4][version] 90 | 91 | [homepage]: http://contributor-covenant.org 92 | [version]: http://contributor-covenant.org/version/1/4/ 93 | -------------------------------------------------------------------------------- /PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | # Pull Request Template 2 | 3 | ## Description 4 | 5 | Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change. 6 | 7 | Fixes # (issue) 8 | 9 | ## How Has This Been Tested? 10 | 11 | Please describe the tests that you ran to verify your changes. Please also note any relevant details for your test configuration. 12 | 13 | - [ ] Test A 14 | - [ ] Test B 15 | 16 | ## Checklist: 17 | 18 | - [ ] My code follows the style guidelines of this project 19 | - [ ] I have performed a self-review of my own code 20 | - [ ] I have commented my code, particularly in hard-to-understand areas 21 | - [ ] I have made corresponding changes to the documentation 22 | - [ ] My changes generate no new warnings 23 | - [ ] Any dependent changes have been merged and published in downstream modules 24 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CodeEditor [![](https://jitpack.io/v/ahmadaghazadeh/CodeEditor.svg)](https://jitpack.io/#ahmadaghazadeh/CodeEditor) [![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-CodeEditor-brightgreen.svg?style=flat)](https://android-arsenal.com/details/1/7185) 2 | 3 | This is a text/code(Base From [ModPE IDE] ) editor meant for integration as a modular component of the overall UI. 4 | The aim is to provide a powerful editor that can be used just like any other View. 5 | 6 | CodeEditor has been used for this purpose because it is feature-rich, fast, and easy to modify and embed in applications. 7 | 8 | 9 | Please note that this library is currently supported on android API 15 and above. 10 | 11 | Integration with existing project 12 | 13 |

14 | 15 | 16 | 17 |

18 | 19 | 20 | ### [Click For Play Video](https://youtu.be/lq-P1qwgU1Q) 21 | 22 | [Stackoverflow](https://stackoverflow.com/a/52641368/1770868) 23 | 24 |
25 | Play Video 26 |
27 | 28 | --- 29 | 30 | ### Setup 31 | 32 | ##### build.gradle (project) 33 | ```groovy 34 | allprojects { 35 | repositories { 36 | ... 37 | maven { 38 | url 'https://jitpack.io' 39 | } 40 | } 41 | } 42 | ``` 43 | 44 | #### build.gradle (app) 45 | ```groovy 46 | dependencies { 47 | ... 48 | implementation 'com.github.ahmadaghazadeh:CodeEditor:1.0.17' 49 | } 50 | ``` 51 | 52 | ### Basic Usage 53 | #### XML DataBinding 54 | ```xml 55 | ... 56 | 57 | 58 | 65 | 66 | 67 | ... 68 | ``` 69 | 70 | #### XML 71 | ```xml 72 | ... 73 | 74 | 75 | 82 | 83 | 84 | ... 85 | ``` 86 | 87 | 88 | #### Java 89 | Demo Activity: 90 | ```java 91 | public class MainActivity extends Activity { 92 | 93 | @Override 94 | protected void onCreate(Bundle savedInstanceState) { 95 | super.onCreate(savedInstanceState); 96 | setContentView(R.layout.activity_main); 97 | editor = findViewById(R.id.editor); 98 | 99 | } 100 | } 101 | ``` 102 | -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | 3 | android { 4 | compileSdkVersion 28 5 | 6 | 7 | 8 | defaultConfig { 9 | applicationId "com.github.ahmadaghazadeh.sample" 10 | minSdkVersion 16 11 | targetSdkVersion 28 12 | versionCode 1 13 | versionName "1.0" 14 | 15 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 16 | 17 | } 18 | 19 | dataBinding { 20 | enabled = true 21 | } 22 | 23 | buildTypes { 24 | release { 25 | minifyEnabled false 26 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 27 | } 28 | } 29 | 30 | compileOptions { 31 | sourceCompatibility JavaVersion.VERSION_1_8 32 | targetCompatibility JavaVersion.VERSION_1_8 33 | } 34 | } 35 | 36 | dependencies { 37 | implementation fileTree(include: ['*.jar'], dir: 'libs') 38 | implementation 'com.android.support:appcompat-v7:28.0.0' 39 | implementation 'com.android.support.constraint:constraint-layout:1.1.3' 40 | // ViewModel and LiveData - work with save viewModel state 41 | implementation "android.arch.lifecycle:extensions:1.1.1" 42 | annotationProcessor "android.arch.lifecycle:compiler:1.1.1" 43 | 44 | //implementation 'com.github.ahmadaghazadeh:CodeEditor:1.0.7' 45 | testImplementation 'junit:junit:4.12' 46 | androidTestImplementation 'com.android.support.test:runner:1.0.2' 47 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 48 | implementation project(':library') 49 | } 50 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /app/src/androidTest/java/com/github/ahmadaghazadeh/sample/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.github.ahmadaghazadeh.sample; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.github.ahmadaghazadeh.sample", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /app/src/main/java/com/github/ahmadaghazadeh/sample/App.java: -------------------------------------------------------------------------------- 1 | package com.github.ahmadaghazadeh.sample; 2 | 3 | import android.app.Application; 4 | 5 | public class App extends Application { 6 | 7 | private Thread.UncaughtExceptionHandler defaultHandler; 8 | 9 | @Override 10 | public void onCreate() { 11 | super.onCreate(); 12 | defaultHandler = Thread.getDefaultUncaughtExceptionHandler(); 13 | Thread.setDefaultUncaughtExceptionHandler(this::handleUncaughtException); 14 | } 15 | 16 | public void handleUncaughtException(Thread thread, Throwable e) { 17 | StackTraceElement[] arr = e.getStackTrace(); 18 | final StringBuffer report = new StringBuffer(e.toString()); 19 | final String lineSeperator = "-------------------------------\n\n"; 20 | report.append("--------- Stack trace ---------\n\n"); 21 | for (int i = 0; i < arr.length; i++) { 22 | report.append(" "); 23 | report.append(arr[i].toString()); 24 | report.append(lineSeperator); 25 | } 26 | int x=0; 27 | defaultHandler.uncaughtException(thread, e); 28 | } 29 | 30 | } 31 | -------------------------------------------------------------------------------- /app/src/main/java/com/github/ahmadaghazadeh/sample/CodeModel.java: -------------------------------------------------------------------------------- 1 | package com.github.ahmadaghazadeh.sample; 2 | 3 | import android.arch.lifecycle.MutableLiveData; 4 | import android.arch.lifecycle.ViewModel; 5 | 6 | public class CodeModel extends ViewModel { 7 | public MutableLiveData code = new MutableLiveData<>(); 8 | public MutableLiveData lang = new MutableLiveData<>(); 9 | 10 | public CodeModel(String code, String lang) { 11 | this.code.setValue(code); 12 | this.lang.setValue(lang); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /app/src/main/java/com/github/ahmadaghazadeh/sample/MainActivity.java: -------------------------------------------------------------------------------- 1 | package com.github.ahmadaghazadeh.sample; 2 | 3 | import android.databinding.DataBindingUtil; 4 | import android.os.Bundle; 5 | import android.support.v7.app.AppCompatActivity; 6 | import android.widget.Toast; 7 | 8 | import com.github.ahmadaghazadeh.editor.widget.CodeEditor; 9 | import com.github.ahmadaghazadeh.sample.databinding.ActivityMainBinding; 10 | 11 | public class MainActivity extends AppCompatActivity { 12 | 13 | @Override 14 | protected void onCreate(Bundle savedInstanceState) { 15 | super.onCreate(savedInstanceState); 16 | CodeModel codeModel = new CodeModel("111111111111111111", "html"); 17 | ActivityMainBinding mViewDataBinding = DataBindingUtil.setContentView(this, R.layout.activity_main); 18 | mViewDataBinding.setVariable(BR.viewModel, codeModel); 19 | mViewDataBinding.setLifecycleOwner(this); 20 | mViewDataBinding.editor.setOnTextChange(str -> { 21 | Toast.makeText(this, mViewDataBinding.editor.getText(),Toast.LENGTH_LONG).show(); 22 | }); 23 | 24 | 25 | } 26 | 27 | 28 | } 29 | -------------------------------------------------------------------------------- /app/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 7 | 12 | 13 | 19 | 22 | 25 | 26 | 27 | 28 | 34 | 35 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 10 | 11 | 12 | 16 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/navigation/nav_graph.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #008577 4 | #00574B 5 | #D81B60 6 | 7 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | app 3 | 4 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /app/src/test/java/com/github/ahmadaghazadeh/sample/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.github.ahmadaghazadeh.sample; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /build.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | 3 | buildscript { 4 | 5 | repositories { 6 | google() 7 | jcenter() 8 | } 9 | dependencies { 10 | classpath 'com.android.tools.build:gradle:3.2.0' 11 | 12 | 13 | // NOTE: Do not place your application dependencies here; they belong 14 | // in the individual module build.gradle files 15 | } 16 | } 17 | 18 | allprojects { 19 | repositories { 20 | jcenter() 21 | google() 22 | maven { 23 | url "https://jitpack.io" 24 | } 25 | } 26 | } 27 | 28 | task clean(type: Delete) { 29 | delete rootProject.buildDir 30 | } 31 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | # IDE (e.g. Android Studio) users: 3 | # Gradle settings configured through the IDE *will override* 4 | # any settings specified in this file. 5 | # For more details on how to configure your build environment visit 6 | # http://www.gradle.org/docs/current/userguide/build_environment.html 7 | # Specifies the JVM arguments used for the daemon process. 8 | # The setting is particularly useful for tweaking memory settings. 9 | org.gradle.jvmargs=-Xmx1536m 10 | # When configured, Gradle will run in incubating parallel mode. 11 | # This option should only be used with decoupled projects. More details, visit 12 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 13 | # org.gradle.parallel=true 14 | 15 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionBase=GRADLE_USER_HOME 2 | distributionPath=wrapper/dists 3 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | -------------------------------------------------------------------------------- /gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | set DIRNAME=%~dp0 12 | if "%DIRNAME%" == "" set DIRNAME=. 13 | set APP_BASE_NAME=%~n0 14 | set APP_HOME=%DIRNAME% 15 | 16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 17 | set DEFAULT_JVM_OPTS= 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windows variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | 53 | :win9xME_args 54 | @rem Slurp the command line arguments. 55 | set CMD_LINE_ARGS= 56 | set _SKIP=2 57 | 58 | :win9xME_args_slurp 59 | if "x%~1" == "x" goto execute 60 | 61 | set CMD_LINE_ARGS=%* 62 | 63 | :execute 64 | @rem Setup the command line 65 | 66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 67 | 68 | @rem Execute Gradle 69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 70 | 71 | :end 72 | @rem End local scope for the variables with windows NT shell 73 | if "%ERRORLEVEL%"=="0" goto mainEnd 74 | 75 | :fail 76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 77 | rem the _cmd.exe /c_ return code! 78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 79 | exit /b 1 80 | 81 | :mainEnd 82 | if "%OS%"=="Windows_NT" endlocal 83 | 84 | :omega 85 | -------------------------------------------------------------------------------- /library/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /library/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.library' 2 | 3 | android { 4 | compileSdkVersion 28 5 | 6 | 7 | 8 | defaultConfig { 9 | minSdkVersion 15 10 | targetSdkVersion 28 11 | versionCode 1 12 | versionName "1.0" 13 | 14 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 15 | 16 | } 17 | dataBinding { 18 | enabled = true 19 | } 20 | 21 | buildTypes { 22 | release { 23 | minifyEnabled false 24 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 25 | } 26 | } 27 | // javaCompileOptions { 28 | // annotationProcessorOptions { 29 | // includeCompileClasspath = true 30 | // } 31 | // } 32 | 33 | compileOptions { 34 | sourceCompatibility JavaVersion.VERSION_1_8 35 | targetCompatibility JavaVersion.VERSION_1_8 36 | } 37 | } 38 | 39 | dependencies { 40 | def supportLibraryVersion = '28.0.0' 41 | implementation fileTree(include: ['*.jar'], dir: 'libs') 42 | implementation "com.android.support:appcompat-v7:$supportLibraryVersion" 43 | implementation "com.android.support:design:$supportLibraryVersion" 44 | implementation "com.android.support:support-v4:$supportLibraryVersion" 45 | 46 | implementation 'commons-io:commons-io:2.6' //Apache Commons IO 47 | implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.0' 48 | testImplementation 'junit:junit:4.12' 49 | androidTestImplementation 'com.android.support.test:runner:1.0.2' 50 | androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' 51 | } 52 | -------------------------------------------------------------------------------- /library/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # You can control the set of applied configuration files using the 3 | # proguardFiles setting in build.gradle. 4 | # 5 | # For more details, see 6 | # http://developer.android.com/guide/developing/tools/proguard.html 7 | 8 | # If your project uses WebView with JS, uncomment the following 9 | # and specify the fully qualified class name to the JavaScript interface 10 | # class: 11 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 12 | # public *; 13 | #} 14 | 15 | # Uncomment this to preserve the line number information for 16 | # debugging stack traces. 17 | #-keepattributes SourceFile,LineNumberTable 18 | 19 | # If you keep the line number information, uncomment this to 20 | # hide the original source file name. 21 | #-renamesourcefileattribute SourceFile 22 | -------------------------------------------------------------------------------- /library/src/androidTest/java/com/github/ahmadaghazadeh/editor/ExampleInstrumentedTest.java: -------------------------------------------------------------------------------- 1 | package com.github.ahmadaghazadeh.editor; 2 | 3 | import android.content.Context; 4 | import android.support.test.InstrumentationRegistry; 5 | import android.support.test.runner.AndroidJUnit4; 6 | 7 | import org.junit.Test; 8 | import org.junit.runner.RunWith; 9 | 10 | import static org.junit.Assert.*; 11 | 12 | /** 13 | * Instrumented test, which will execute on an Android device. 14 | * 15 | * @see Testing documentation 16 | */ 17 | @RunWith(AndroidJUnit4.class) 18 | public class ExampleInstrumentedTest { 19 | @Test 20 | public void useAppContext() { 21 | // Context of the app under test. 22 | Context appContext = InstrumentationRegistry.getTargetContext(); 23 | 24 | assertEquals("com.github.ahmadaghazadeh.editor.test", appContext.getPackageName()); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /library/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /library/src/main/assets/fonts/Source_Code_Pro.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/assets/fonts/Source_Code_Pro.ttf -------------------------------------------------------------------------------- /library/src/main/assets/fonts/droid_sans_mono.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/assets/fonts/droid_sans_mono.ttf -------------------------------------------------------------------------------- /library/src/main/assets/fonts/josefin_sans_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/assets/fonts/josefin_sans_regular.ttf -------------------------------------------------------------------------------- /library/src/main/assets/fonts/josefin_sans_semibold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/assets/fonts/josefin_sans_semibold.ttf -------------------------------------------------------------------------------- /library/src/main/assets/fonts/roboto.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/assets/fonts/roboto.ttf -------------------------------------------------------------------------------- /library/src/main/assets/fonts/roboto_light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/assets/fonts/roboto_light.ttf -------------------------------------------------------------------------------- /library/src/main/assets/templates/AlertDialog.txt: -------------------------------------------------------------------------------- 1 | //AlertDialog.Builder Template 2 | 3 | var AlertDialog = android.app.AlertDialog; 4 | var ScrollView = android.widget.ScrollView; 5 | var LinearLayout = android.widget.LinearLayout; 6 | var TextView = android.widget.TextView; 7 | var Color = android.graphics.Color; 8 | var EditText = android.widget.EditText; 9 | var ViewGroup = android.view.ViewGroup; 10 | var DialogInterface = android.content.DialogInterface; 11 | 12 | var alert = new AlertDialog.Builder(ctx); 13 | alert.setTitle("Hello Sun"); 14 | 15 | var scroll = new ScrollView(ctx); 16 | var layout = new LinearLayout(ctx); 17 | layout.setOrientation(1); 18 | 19 | var note = new TextView(ctx); 20 | note.setText("It is now daytime :D"); 21 | note.setTextColor(Color.WHITE); 22 | note.setTextSize(20); 23 | 24 | var sethealth = new EditText(ctx); 25 | sethealth.setHint("Set Health"); 26 | 27 | var params = new ViewGroup.LayoutParams(-2, -2); 28 | 29 | layout.addView(note, params); 30 | layout.addView(sethealth, params); 31 | 32 | alert.setView(layout); 33 | 34 | alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 35 | onClick: function(view) { 36 | Player.setHealth(sethealth.getText().toString()); 37 | } 38 | }); 39 | 40 | alert.setNegativeButton("Ok (Don't set health)", new DialogInterface.OnClickListener() { 41 | onClick: function(view) { 42 | //nothing 43 | } 44 | }); 45 | 46 | alert.setNeutralButton("Set time to night", new DialogInterface.OnClickListener() { 47 | onClick: function(view) { 48 | Level.setTime(13500); 49 | } 50 | }); 51 | 52 | var dialog = alert.create(); 53 | dialog.show(); -------------------------------------------------------------------------------- /library/src/main/assets/templates/Button.txt: -------------------------------------------------------------------------------- 1 | //Custom UI Setup: 2 | 3 | var GUI; 4 | var ctx = com.mojang.minecraftpe.MainActivity.currentMainActivity.get(); 5 | 6 | var Runnable = java.lang.Runnable; 7 | var LinearLayout = android.widget.LinearLayout; 8 | var Button = android.widget.Button; 9 | var View = android.view.View; 10 | var PopupWindow = android.widget.PopupWindow; 11 | var RelativeLayout = android.widget.RelativeLayout; 12 | var ColorDrawable = android.graphics.drawable.ColorDrawable; 13 | var Color = android.graphics.Color; 14 | var Gravity = android.view.Gravity; 15 | 16 | function newLevel() { 17 | ctx.runOnUiThread(new Runnable({ run: function(){ 18 | try { 19 | var layout = new LinearLayout(ctx); 20 | layout.setOrientation(1); 21 | 22 | var button = new Button(ctx); 23 | button.setText("Button"); 24 | button.setOnClickListener(new View.OnClickListener({ 25 | onClick: function(view) { 26 | //Your Code; 27 | } 28 | })); 29 | layout.addView(button); 30 | 31 | GUI = new PopupWindow(layout, RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 32 | GUI.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 33 | GUI.showAtLocation(ctx.getWindow().getDecorView(), Gravity.RIGHT | Gravity.TOP, 0, 0); 34 | } catch (err) { 35 | print("An error occured: " + err); 36 | } 37 | }})); 38 | } 39 | 40 | function leaveGame() { 41 | ctx.runOnUiThread(new Runnable({ run: function(){ 42 | if(GUI != null) { 43 | GUI.dismiss(); 44 | GUI = null; 45 | } 46 | }})); 47 | } -------------------------------------------------------------------------------- /library/src/main/assets/templates/ButtonWidget.txt: -------------------------------------------------------------------------------- 1 | //Standard Custom UI Template: 2 | 3 | var Button = android.widget.Button; 4 | var View = android.view.View; 5 | 6 | var button = new Button(ctx); 7 | button.setText("Button"); 8 | button.setOnClickListener(new View.OnClickListener({ 9 | onClick: function(view){ 10 | //Your Code 11 | } 12 | })); 13 | layout.addView(button); -------------------------------------------------------------------------------- /library/src/main/assets/templates/ButtonWithTouchListener.txt: -------------------------------------------------------------------------------- 1 | //Custom UI with OnTouchListener Template: 2 | 3 | var Button = android.widget.Button; 4 | var View = android.view.View; 5 | 6 | var active = false; 7 | var button = new Button(ctx); 8 | button.setText("Button"); 9 | button.setOnTouchListener(new View.OnTouchListener({ 10 | onClick: function(v, event){ 11 | switch(event.getAction()) { 12 | case 0: 13 | active = true; 14 | break; 15 | case 1: 16 | active = false; 17 | break; 18 | } 19 | return true; 20 | } 21 | })); 22 | layout.addView(button); -------------------------------------------------------------------------------- /library/src/main/assets/templates/CheckBoxWidget.txt: -------------------------------------------------------------------------------- 1 | //CheckBox Template: 2 | 3 | var CheckBox = android.widget.CheckBox; 4 | var View = android.view.View; 5 | 6 | var checked = false; 7 | var button = new CheckBox(ctx); 8 | button.setText("Button"); 9 | button.setChecked(checked); 10 | button.setOnClickListener(new View.OnClickListener({ 11 | onClick: function(view){ 12 | if(!checked) { 13 | checked = true; 14 | } else { 15 | checked = false; 16 | } 17 | } 18 | })); 19 | layout.addView(button); -------------------------------------------------------------------------------- /library/src/main/assets/templates/ImageWidget.txt: -------------------------------------------------------------------------------- 1 | //ImageView Template: 2 | 3 | var BitmapFactory = android.graphics.BitmapFactory; 4 | var BitmapDrawable = android.graphics.drawable.BitmapDrawable; 5 | var ImageView = android.widget.ImageView; 6 | 7 | var directory = new BitmapFactory.decodeFile("Your Directory"); 8 | var img = new BitmapDrawable(directory); 9 | var image = new ImageView(ctx); 10 | image.setImageBitmap(img); 11 | 12 | //If you want this image to do something, put your OnClickListener here 13 | //If you don't want this image to do anything, do this: 14 | yourPopupWindowVariable.setTouchable(false); -------------------------------------------------------------------------------- /library/src/main/assets/templates/Menu.txt: -------------------------------------------------------------------------------- 1 | //Custom UI + Menu Setup: 2 | 3 | var GUI; 4 | var menu; 5 | var exitUI; 6 | 7 | var ctx = com.mojang.minecraftpe.MainActivity.currentMainActivity.get(); 8 | var Runnable = java.lang.Runnable; 9 | var LinearLayout = android.widget.LinearLayout; 10 | var Button = android.widget.Button; 11 | var View = android.view.View; 12 | var PopupWindow = android.widget.PopupWindow; 13 | var RelativeLayout = android.widget.RelativeLayout; 14 | var ColorDrawable = android.graphics.drawable.ColorDrawable; 15 | var Color = android.graphics.Color; 16 | var Gravity = android.view.Gravity; 17 | var ScrollView = android.widget.ScrollView; 18 | 19 | function dip2px(dips) { 20 | return Math.ceil(dips * ctx.getResources().getDisplayMetrics().density); 21 | } 22 | 23 | function newLevel() { 24 | ctx.runOnUiThread(new Runnable({ run: function(){ 25 | try { 26 | var layout = new LinearLayout(ctx); 27 | layout.setOrientation(1); 28 | 29 | var menuBtn = new Button(ctx); 30 | menuBtn.setText("Menu"); 31 | menuBtn.setOnClickListener(new View.OnClickListener({ 32 | onClick: function(view){ 33 | mainMenu(); 34 | } 35 | })); 36 | layout.addView(menuBtn); 37 | 38 | GUI = new PopupWindow(layout, RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 39 | GUI.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 40 | GUI.showAtLocation(ctx.getWindow().getDecorView(), Gravity.RIGHT | Gravity.BOTTOM, 0, 0); 41 | } catch (err) { 42 | print("An error occured: " + err); 43 | } 44 | }})); 45 | } 46 | 47 | function mainMenu() { 48 | ctx.runOnUiThread(new Runnable({ run: function(){ 49 | try { 50 | var menuLayout = new LinearLayout(ctx); 51 | var menuScroll = new ScrollView(ctx); 52 | var menuLayout1 = new LinearLayout(ctx); 53 | menuLayout.setOrientation(1); 54 | menuLayout1.setOrientation(1); 55 | 56 | menuScroll.addView(menuLayout); 57 | menuLayout1.addView(menuScroll); 58 | 59 | var button = new Button(ctx); 60 | button.setText("Button"); 61 | button.setOnClickListener(new View.OnClickListener({ 62 | onClick: function(view){ 63 | //Your Code 64 | } 65 | })); 66 | menuLayout.addView(button); 67 | 68 | //Add more buttons in this section 69 | 70 | menu = new PopupWindow(menuLayout1, ctx.getWindowManager().getDefaultDisplay().getWidth()/2, ctx.getWindowManager().getDefaultDisplay().getHeight()); 71 | menu.setBackgroundDrawable(new ColorDrawable(Color.BLACK)); 72 | menu.showAtLocation(ctx.getWindow().getDecorView(), Gravity.RIGHT | Gravity.TOP, 0, 0); 73 | } catch (error) { 74 | print("An error occured: " + error); 75 | } 76 | }})); 77 | } 78 | 79 | function exit() { 80 | ctx.runOnUiThread(new Runnable({ run: function(){ 81 | try { 82 | var xLayout = new LinearLayout(ctx); 83 | 84 | var xButton = new Button(ctx); 85 | xButton.setText("x"); 86 | xButton.setTextColor(Color.WHITE); 87 | xButton.setOnClickListener(new View.OnClickListener({ 88 | onClick: function(view){ 89 | exitUI.dismiss(); 90 | menu.dismiss(); 91 | } 92 | })); 93 | xLayout.addView(xButton); 94 | 95 | exitUI = new PopupWindow(xLayout, dip2px(40), dip2px(40)); 96 | exitUI.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 97 | exitUI.showAtLocation(ctx.getWindow().getDecorView(), Gravity.RIGHT | Gravity.TOP, 0, 0); 98 | } catch (exception) { 99 | print(exception); 100 | } 101 | }})); 102 | } 103 | 104 | function leaveGame() { 105 | ctx.runOnUiThread(new Runnable({ run: function(){ 106 | if(GUI != null) { 107 | GUI.dismiss(); 108 | GUI = null; 109 | } 110 | if(menu != null) { 111 | menu.dismiss(); 112 | menu = null; 113 | } 114 | if(exitUI != null) { 115 | exitUI.dismiss(); 116 | exitUI = null; 117 | } 118 | }})); 119 | } -------------------------------------------------------------------------------- /library/src/main/assets/templates/SwitchWidget.txt: -------------------------------------------------------------------------------- 1 | //Switch Template: 2 | 3 | var Switch = android.widget.Switch; 4 | var CompoundButton = android.widget.CompoundButton; 5 | 6 | var switched = false; 7 | var button = new Switch(ctx); 8 | button.setText("Button"); 9 | button.setChecked(switched); 10 | button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener({ 11 | onCheckedChanged: function(){ 12 | if(!switched) { 13 | switched = true; 14 | //Your Code; 15 | } else { 16 | switched = false; 17 | //Your Code; 18 | } 19 | button.setChecked(switched); 20 | } 21 | })); 22 | layout.addView(button); -------------------------------------------------------------------------------- /library/src/main/assets/templates/ToggleWidget.txt: -------------------------------------------------------------------------------- 1 | //Toggle Button Template: 2 | 3 | var ToggleButton = android.widget.ToggleButton; 4 | var View = android.view.View; 5 | 6 | var toggled = false; 7 | var button = new ToggleButton(ctx); 8 | button.setText("Button"); 9 | button.setChecked(toggled); 10 | button.setOnClickListener(new View.OnClickListener({ 11 | onClick: function(view){ 12 | if(!toggled) { 13 | toggled = true; 14 | } else { 15 | toggled = false; 16 | } 17 | } 18 | })); 19 | layout.addView(button); -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/adapter/Symbol.java: -------------------------------------------------------------------------------- 1 | package com.github.ahmadaghazadeh.editor.adapter; 2 | 3 | public class Symbol { 4 | private String showText; 5 | private String writeText; 6 | private int pos; 7 | 8 | public Symbol(String showText, String writeText, int pos) { 9 | this.showText = showText; 10 | this.writeText = writeText; 11 | this.pos = pos; 12 | } 13 | 14 | public String getShowText() { 15 | return showText; 16 | } 17 | 18 | public String getWriteText() { 19 | return writeText; 20 | } 21 | 22 | public int getPos() { 23 | return pos; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/adapter/SymbolAdapter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.adapter; 21 | 22 | import android.support.v7.widget.RecyclerView; 23 | import android.view.LayoutInflater; 24 | import android.view.View; 25 | import android.view.ViewGroup; 26 | import android.widget.TextView; 27 | 28 | import com.github.ahmadaghazadeh.editor.R; 29 | import com.github.ahmadaghazadeh.editor.keyboard.ExtendedKeyboard; 30 | 31 | import java.util.List; 32 | 33 | 34 | /** 35 | * @author Trần Lê Duy 36 | */ 37 | public class SymbolAdapter extends RecyclerView.Adapter { 38 | 39 | private List mList; 40 | private ExtendedKeyboard.OnKeyListener mListener; 41 | 42 | @Override 43 | public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 44 | View view = LayoutInflater.from(parent.getContext()) 45 | .inflate(R.layout.item_list_key, parent, false); 46 | return new ViewHolder(view); 47 | } 48 | 49 | @Override 50 | public void onBindViewHolder(ViewHolder holder, int position) { 51 | final Symbol symbol=mList.get(position); 52 | holder.text.setText(symbol.getShowText()); 53 | holder.text.setOnClickListener(v -> { 54 | if (mListener != null) 55 | mListener.onKeyClick(v,symbol); 56 | }); 57 | } 58 | 59 | @Override 60 | public int getItemCount() { 61 | return mList.size(); 62 | } 63 | 64 | 65 | public void setListKey(List mList) { 66 | this. mList = mList; 67 | } 68 | 69 | public void setListener(ExtendedKeyboard.OnKeyListener listener) { 70 | mListener = listener; 71 | } 72 | 73 | static class ViewHolder extends RecyclerView.ViewHolder { 74 | 75 | TextView text; 76 | 77 | ViewHolder(View itemView) { 78 | super(itemView); 79 | text = itemView.findViewById(R.id.text_view); 80 | } 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/adapter/files/FileDetail.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.adapter.files; 21 | 22 | /** 23 | * Thanks Vlad Mihalachi 24 | */ 25 | public class FileDetail { 26 | 27 | private String name; //Имя файла 28 | private String size; //Размер файла 29 | private String dateModified; //Дата изменения файла 30 | private boolean isFolder; //Является ли файл папкой? 31 | 32 | public FileDetail(String name, String size, String dateModified, boolean isFolder) { 33 | this.name = name; 34 | this.size = size; 35 | this.dateModified = dateModified; 36 | this.isFolder = isFolder; 37 | } 38 | 39 | String getDateModified() { 40 | return dateModified; 41 | } 42 | 43 | String getSize() { 44 | return size; 45 | } 46 | 47 | public String getName() { 48 | return name; 49 | } 50 | 51 | boolean isFolder() { 52 | return isFolder; 53 | } 54 | } -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/document/commons/FileObject.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.document.commons; 21 | 22 | import android.support.annotation.NonNull; 23 | 24 | import org.apache.commons.io.FilenameUtils; 25 | 26 | import java.io.File; 27 | import java.net.URI; 28 | import java.text.DecimalFormat; 29 | import java.text.SimpleDateFormat; 30 | import java.util.Locale; 31 | 32 | /** 33 | * Класс сделан из-за надобности более простого способа получения данных о файле. 34 | */ 35 | public class FileObject extends File { 36 | 37 | public FileObject(@NonNull String pathname) { 38 | super(pathname); 39 | } 40 | 41 | public FileObject(String parent, @NonNull String child) { 42 | super(parent, child); 43 | } 44 | 45 | public FileObject(File parent, @NonNull String child) { 46 | super(parent, child); 47 | } 48 | 49 | public FileObject(@NonNull URI uri) { 50 | super(uri); 51 | } 52 | 53 | @Override 54 | public FileObject[] listFiles() { 55 | return filenamesToFiles(this.list()); 56 | } 57 | 58 | private FileObject[] filenamesToFiles(String[] filenames) { 59 | if (filenames == null) { 60 | return null; 61 | } 62 | int count = filenames.length; 63 | FileObject[] result = new FileObject[count]; 64 | for (int i = 0; i < count; ++i) { 65 | result[i] = new FileObject(this, filenames[i]); 66 | } 67 | return result; 68 | } 69 | 70 | /** 71 | * Получаем читабельный размер файла для пользователя. 72 | * @return - возвращает нормальный размер файла, например "1.5 KB". 73 | */ 74 | public String getReadableSize() { 75 | long size = this.length(); 76 | if(size <= 0) return "0"; 77 | final String[] units = new String[] { "B", "KB", "MB", "GB", "TB" }; 78 | int digitGroups = (int) (Math.log10(size)/Math.log10(1024)); 79 | return new DecimalFormat("#,##0.#").format(size/Math.pow(1024, digitGroups)) 80 | + " " + units[digitGroups]; 81 | } 82 | 83 | /** 84 | * Метод для получения читабельной даты редактирования. 85 | * @return - возвращает читабельную для пользователя дату последнего редактирования файла. 86 | */ 87 | public String getLastModified() { 88 | SimpleDateFormat dateFormat = 89 | new SimpleDateFormat("dd/MM/yyyy EEE HH:mm", Locale.getDefault()); 90 | return dateFormat.format(this.lastModified()); 91 | } 92 | 93 | /** 94 | * @return - возвращает разрешение файла, например "js", "html", без точки. 95 | */ 96 | public String getExtension() { 97 | return FilenameUtils.getExtension(getName()); 98 | } 99 | 100 | /** 101 | * Проверка файл на скрытность. 102 | * @return - вернет true, если файл скрыт (Если перед именем стоит точка). 103 | */ 104 | public boolean isHidden() { 105 | return getName().startsWith("."); 106 | } 107 | 108 | /** 109 | * Удаление файла, включая все дочерние папки и файлы. 110 | */ 111 | public void deleteRecursive() { 112 | if (isDirectory()) { 113 | FileObject[] files = listFiles(); 114 | if (files != null) { 115 | for (FileObject child : files) { 116 | child.deleteRecursive(); 117 | } 118 | } 119 | } 120 | delete(); 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/document/commons/LineObject.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.document.commons; 21 | 22 | import java.io.Serializable; 23 | 24 | /** 25 | * @author Henry Thompson 26 | */ 27 | public class LineObject implements Serializable { 28 | 29 | private int start = 0; 30 | 31 | LineObject(int start) { 32 | this.start = start; 33 | } 34 | 35 | public void setStart(int index) { 36 | this.start = index; 37 | } 38 | 39 | public int getStart() { 40 | return start; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/document/commons/LinesCollection.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.document.commons; 21 | 22 | import android.support.annotation.NonNull; 23 | 24 | import java.io.Serializable; 25 | import java.util.ArrayList; 26 | import java.util.Iterator; 27 | 28 | /** 29 | * @author Henry Thompson 30 | */ 31 | public class LinesCollection implements Serializable, Iterable { 32 | 33 | private ArrayList mLines = new ArrayList(); 34 | 35 | public LinesCollection() { 36 | mLines.add(new LineObject(0)); 37 | } 38 | 39 | public void add(int line, int index) { 40 | if (mLines.size() <= 0 || line != 0) { 41 | mLines.add(line, new LineObject(index)); 42 | } 43 | } 44 | 45 | public void remove(int line) { 46 | if (line != 0) { 47 | mLines.remove(line); 48 | } 49 | } 50 | 51 | public void shiftIndexes(int fromLine, int shiftBy) { 52 | if (fromLine > 0 && fromLine < mLines.size()) { 53 | int i = fromLine; 54 | while (i < mLines.size()) { 55 | Integer newIndex = getIndexForLine(i) + shiftBy; 56 | if (i <= 0 || newIndex > 0) { 57 | mLines.get(i).setStart(newIndex); 58 | } else { 59 | remove(i); 60 | i--; 61 | } 62 | i++; 63 | } 64 | } 65 | } 66 | 67 | public int getIndexForLine(int line) { 68 | if (line >= mLines.size()) { 69 | return -1; 70 | } 71 | return mLines.get(line).getStart(); 72 | } 73 | 74 | public int getLineForIndex(int index) { 75 | int first = 0; 76 | int upto = mLines.size() - 1; 77 | while (first < upto) { 78 | int mid = (first + upto) / 2; 79 | if (index < getIndexForLine(mid)) { 80 | upto = mid; 81 | } else if (index <= getIndexForLine(mid) || index < getIndexForLine(mid + 1)) { 82 | return mid; 83 | } else { 84 | first = mid + 1; 85 | } 86 | } 87 | return mLines.size() - 1; 88 | } 89 | 90 | public int getLineCount() { 91 | return mLines.size(); 92 | } 93 | 94 | public LineObject getLine(int lineNumber) { 95 | if (lineNumber < 0 || lineNumber >= mLines.size()) { 96 | return null; 97 | } 98 | return mLines.get(lineNumber); 99 | } 100 | 101 | @NonNull 102 | public Iterator iterator() { 103 | return mLines.iterator(); 104 | } 105 | 106 | @Override 107 | public LinesCollection clone() { 108 | LinesCollection clone = new LinesCollection(); 109 | clone.mLines = (ArrayList) mLines.clone(); 110 | return clone; 111 | } 112 | } 113 | 114 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/document/suggestions/SuggestionAdapter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.document.suggestions; 21 | 22 | import android.content.Context; 23 | import android.graphics.Typeface; 24 | import android.support.annotation.LayoutRes; 25 | import android.support.annotation.NonNull; 26 | import android.support.annotation.Nullable; 27 | import android.view.LayoutInflater; 28 | import android.view.View; 29 | import android.view.ViewGroup; 30 | import android.widget.ArrayAdapter; 31 | import android.widget.Filter; 32 | import android.widget.TextView; 33 | 34 | 35 | import com.github.ahmadaghazadeh.editor.R; 36 | 37 | import java.util.ArrayList; 38 | 39 | /** 40 | * @author Trần Lê Duy 41 | */ 42 | public class SuggestionAdapter extends ArrayAdapter { 43 | 44 | private LayoutInflater inflater; 45 | private ArrayList clone; 46 | private ArrayList suggestion; 47 | 48 | @LayoutRes 49 | private int resourceID; 50 | 51 | private Filter suggestionFilter = new Filter() { 52 | 53 | @Override 54 | public CharSequence convertResultToString(Object resultValue) { 55 | if (resultValue == null) { 56 | return ""; 57 | } 58 | return ((SuggestionItem) resultValue).getName(); 59 | } 60 | 61 | @Override 62 | protected FilterResults performFiltering(CharSequence constraint) { 63 | FilterResults filterResults = new FilterResults(); 64 | suggestion.clear(); 65 | if (constraint != null) { 66 | for (SuggestionItem item : clone) { 67 | if (item.compareTo(constraint.toString()) == 0) { 68 | suggestion.add(item); 69 | } 70 | } 71 | filterResults.values = suggestion; 72 | filterResults.count = suggestion.size(); 73 | } 74 | return filterResults; 75 | } 76 | 77 | @Override 78 | protected void publishResults(CharSequence constraint, FilterResults results) { 79 | ArrayList filteredList = (ArrayList) results.values; 80 | clear(); 81 | if (filteredList != null && filteredList.size() > 0) { 82 | addAll(filteredList); 83 | } 84 | notifyDataSetChanged(); 85 | } 86 | }; 87 | 88 | public SuggestionAdapter(@NonNull Context context, 89 | @LayoutRes int resource, @NonNull ArrayList objects) { 90 | super(context, resource, objects); 91 | inflater = LayoutInflater.from(context); 92 | clone = (ArrayList) objects.clone(); 93 | suggestion = new ArrayList<>(); 94 | resourceID = resource; 95 | } 96 | 97 | @NonNull 98 | @Override 99 | public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) { 100 | if (convertView == null) { 101 | convertView = inflater.inflate(resourceID, null); 102 | } 103 | final SuggestionItem item = getItem(position); 104 | 105 | TextView suggestionTitle = convertView.findViewById(R.id.suggestion_title); 106 | assert item != null; 107 | suggestionTitle.setText(item.getName()); 108 | //Смена типа сделана для будущих обновлений 109 | //на данный момент ничего особенного не представляет. 110 | switch (item.getType()) { 111 | case SuggestionType.TYPE_KEYWORD: //Keyword 112 | suggestionTitle.setTypeface(Typeface.MONOSPACE); 113 | break; 114 | case SuggestionType.TYPE_VARIABLE: //Variable 115 | suggestionTitle.setTypeface(Typeface.MONOSPACE); 116 | break; 117 | } 118 | return convertView; 119 | } 120 | 121 | /*public ArrayList getAllItems() { 122 | return clone; 123 | } 124 | 125 | public void clearAllData() { 126 | super.clear(); 127 | clone.clear(); 128 | } 129 | 130 | public void addData(@NonNull Collection collection) { 131 | addAll(collection); 132 | clone.addAll(collection); 133 | }*/ 134 | 135 | @NonNull 136 | @Override 137 | public Filter getFilter() { 138 | return suggestionFilter; 139 | } 140 | } 141 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/document/suggestions/SuggestionItem.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.document.suggestions; 21 | 22 | import android.support.annotation.NonNull; 23 | 24 | /** 25 | * @author Trần Lê Duy 26 | */ 27 | public class SuggestionItem implements Comparable { 28 | 29 | private int type; 30 | private String compare = ""; 31 | 32 | @NonNull 33 | private String name = ""; 34 | 35 | public SuggestionItem(int type, @NonNull String name) { 36 | this.name = name; 37 | this.type = type; 38 | this.compare = name.toLowerCase(); 39 | } 40 | 41 | public int getType() { 42 | return type; 43 | } 44 | 45 | public void setType(int type) { 46 | this.type = type; 47 | } 48 | 49 | @NonNull 50 | public String getName() { 51 | return name; 52 | } 53 | 54 | public void setName(@NonNull String name) { 55 | this.name = name; 56 | } 57 | 58 | @Override 59 | public int compareTo(@NonNull String o) { 60 | String s = o.toLowerCase(); 61 | return compare.startsWith(s) ? 0 : -1; 62 | } 63 | 64 | @Override 65 | public String toString() { 66 | return getName(); 67 | } 68 | } 69 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/document/suggestions/SuggestionType.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.document.suggestions; 21 | 22 | public class SuggestionType { 23 | public static final int TYPE_KEYWORD = 0; 24 | public static final int TYPE_VARIABLE = 1; 25 | } 26 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/interfaces/OnScrollChangedListener.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.interfaces; 21 | 22 | public interface OnScrollChangedListener { 23 | void onScrollChanged(int x, int y, int oldx, int oldy); 24 | } 25 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/keyboard/ExtendedKeyboard.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.keyboard; 21 | 22 | import android.content.Context; 23 | import android.support.annotation.Nullable; 24 | import android.support.v7.widget.LinearLayoutManager; 25 | import android.support.v7.widget.RecyclerView; 26 | import android.util.AttributeSet; 27 | import android.view.View; 28 | 29 | import com.github.ahmadaghazadeh.editor.adapter.Symbol; 30 | import com.github.ahmadaghazadeh.editor.adapter.SymbolAdapter; 31 | 32 | import java.util.LinkedList; 33 | import java.util.List; 34 | 35 | 36 | public class ExtendedKeyboard extends RecyclerView { 37 | 38 | private OnKeyListener mListener; 39 | private SymbolAdapter mAdapter; 40 | 41 | public ExtendedKeyboard(Context context) { 42 | super(context); 43 | setup(context); 44 | } 45 | 46 | public ExtendedKeyboard(Context context, @Nullable AttributeSet attrs) { 47 | super(context, attrs); 48 | setup(context); 49 | 50 | } 51 | 52 | public ExtendedKeyboard(Context context, @Nullable AttributeSet attrs, int defStyle) { 53 | super(context, attrs, defStyle); 54 | setup(context); 55 | 56 | } 57 | 58 | public OnKeyListener getListener() { 59 | return mListener; 60 | } 61 | 62 | public void setListener(OnKeyListener listener) { 63 | mListener = listener; 64 | mAdapter.setListener(mListener); 65 | } 66 | 67 | private void setup(Context context) { 68 | mAdapter = new SymbolAdapter(); 69 | List symbolList=new LinkedList<>(); 70 | symbolList.add(new Symbol("Tab"," ",-1)); 71 | symbolList.add(new Symbol("End","End",-1)); 72 | symbolList.add(new Symbol("{","{",-1)); 73 | symbolList.add(new Symbol("}","}",0)); 74 | symbolList.add(new Symbol("(","(",-1)); 75 | symbolList.add(new Symbol(")",")",0)); 76 | symbolList.add(new Symbol(";",";",0)); 77 | symbolList.add(new Symbol(",",",",0)); 78 | symbolList.add(new Symbol(".",".",0)); 79 | symbolList.add(new Symbol("=","=",0)); 80 | symbolList.add(new Symbol("\"","\"",0)); 81 | symbolList.add(new Symbol("|","|",0)); 82 | symbolList.add(new Symbol("&","&",0)); 83 | symbolList.add(new Symbol("!","!",0)); 84 | symbolList.add(new Symbol("[","[",-1)); 85 | symbolList.add(new Symbol("]","]",0)); 86 | symbolList.add(new Symbol("<","<",0)); 87 | symbolList.add(new Symbol(">",">",0)); 88 | symbolList.add(new Symbol("+","+",0)); 89 | symbolList.add(new Symbol("-","-",0)); 90 | symbolList.add(new Symbol("/","/",0)); 91 | symbolList.add(new Symbol("*","*",0)); 92 | symbolList.add(new Symbol("?","?",0)); 93 | symbolList.add(new Symbol(":",":",0)); 94 | symbolList.add(new Symbol("_","_",0)); 95 | mAdapter.setListKey(symbolList); 96 | LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context); 97 | linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); 98 | setLayoutManager(linearLayoutManager); 99 | setHasFixedSize(true); 100 | setAdapter(mAdapter); 101 | } 102 | 103 | public interface OnKeyListener { 104 | void onKeyClick(View view, Symbol symbol); 105 | } 106 | } 107 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/manager/TypefaceManager.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.manager; 21 | 22 | import android.content.Context; 23 | import android.graphics.Typeface; 24 | 25 | 26 | import com.github.ahmadaghazadeh.editor.processor.utils.Logger; 27 | 28 | import java.util.HashMap; 29 | 30 | public class TypefaceManager { 31 | 32 | private static final String TAG = TypefaceManager.class.getSimpleName(); 33 | 34 | /** 35 | * Основная работа со шрифтами. 36 | */ 37 | 38 | public static String ROBOTO = "Roboto"; 39 | public static String ROBOTO_LIGHT = "Roboto Light"; 40 | public static String SOURCE_CODE_PRO = "Source Code Pro"; 41 | public static String DROID_SANS_MONO = "Droid Sans Mono"; 42 | 43 | private static HashMap fontMap = new HashMap<>(); 44 | 45 | static { 46 | fontMap.put(ROBOTO, "fonts/roboto.ttf"); 47 | fontMap.put(ROBOTO_LIGHT, "fonts/roboto_light.ttf"); 48 | fontMap.put(SOURCE_CODE_PRO, "fonts/source_code_pro.ttf"); 49 | fontMap.put(DROID_SANS_MONO, "fonts/droid_sans_mono.ttf"); 50 | } 51 | 52 | /** 53 | * Загрузка шрифта из assets. 54 | * @param context - контекст приложения, откуда будут загружаться шрифты. 55 | * @param fontType - шрифт для загрузки, существующий в fontMap. 56 | * @return - возвращает выбранный Typeface. 57 | */ 58 | public static Typeface get(Context context, String fontType) { 59 | if (fontType.equals(DROID_SANS_MONO)) { 60 | return Typeface.MONOSPACE; 61 | } 62 | String file = fontMap.get(fontType); 63 | if (file == null) { 64 | return Typeface.MONOSPACE; 65 | } 66 | Typeface typeface = Typeface.createFromAsset(context.getAssets(), file); 67 | if (typeface == null) { 68 | Logger.debug(TAG, "typeface is null, use monospace"); 69 | return Typeface.MONOSPACE; 70 | } 71 | return typeface; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/processor/TextNotFoundException.java: -------------------------------------------------------------------------------- 1 | package com.github.ahmadaghazadeh.editor.processor; 2 | 3 | public class TextNotFoundException extends Exception { 4 | 5 | 6 | public TextNotFoundException() { 7 | super(); 8 | } 9 | 10 | public TextNotFoundException(String message, Throwable cause) 11 | { 12 | super(message, cause); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/processor/language/Language.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.processor.language; 21 | 22 | import java.util.regex.Pattern; 23 | 24 | public abstract class Language { 25 | public abstract Pattern getSyntaxNumbers(); 26 | public abstract Pattern getSyntaxSymbols(); 27 | public abstract Pattern getSyntaxBrackets(); 28 | public abstract Pattern getSyntaxKeywords(); 29 | public abstract Pattern getSyntaxMethods(); 30 | public abstract Pattern getSyntaxStrings(); 31 | public abstract Pattern getSyntaxComments(); 32 | public abstract char[] getLanguageBrackets(); 33 | public abstract String[] getAllCompletions(); 34 | } 35 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/processor/language/LanguageProvider.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.processor.language; 21 | 22 | 23 | public class LanguageProvider { 24 | 25 | public static Language getLanguage(String lang) { 26 | if (lang.toLowerCase().equals("js") || lang.toLowerCase().equals("javascript")) { 27 | return new JSLanguage(); 28 | } else if (lang.toLowerCase().equals("html")) { 29 | return new HtmlLanguage(); 30 | }else if (lang.toLowerCase().equals("css")) { 31 | return new CSSLanguage(); 32 | } else { 33 | return new JSLanguage(); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/processor/style/StylePaint.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.processor.style; 21 | 22 | import android.graphics.Paint; 23 | 24 | public class StylePaint extends Paint { 25 | 26 | public StylePaint(boolean antiAlias, boolean dither) { 27 | setAntiAlias(antiAlias); 28 | setDither(dither); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/processor/style/StyleSpan.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.processor.style; 21 | 22 | import android.support.annotation.ColorInt; 23 | 24 | /** 25 | * @author Henry Thompson 26 | */ 27 | public class StyleSpan { 28 | 29 | private boolean mBold; 30 | private boolean mItalic; 31 | private int mColor; 32 | 33 | public StyleSpan(@ColorInt int color, boolean bold, boolean italic) { 34 | mColor = color; 35 | mBold = bold; 36 | mItalic = italic; 37 | } 38 | 39 | void setColor(@ColorInt int color) { 40 | mColor = color; 41 | } 42 | 43 | public int getColor() { 44 | return mColor; 45 | } 46 | 47 | void setBold(boolean bold) { 48 | mBold = bold; 49 | } 50 | 51 | public boolean getIsBold() { 52 | return mBold; 53 | } 54 | 55 | void setItalic(boolean italic) { 56 | mItalic = italic; 57 | } 58 | 59 | public boolean getIsItalic() { 60 | return mItalic; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/processor/style/SyntaxHighlightSpan.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.processor.style; 21 | 22 | import android.support.annotation.NonNull; 23 | import android.text.TextPaint; 24 | import android.text.style.CharacterStyle; 25 | 26 | import java.io.Serializable; 27 | 28 | /** 29 | * @author Henry Thompson 30 | */ 31 | public class SyntaxHighlightSpan extends CharacterStyle 32 | implements Serializable, Comparable { 33 | 34 | private boolean bold; 35 | private boolean italics; 36 | 37 | public int color; 38 | public int end; 39 | public int start; 40 | 41 | public SyntaxHighlightSpan(StyleSpan span, int start, int end) { this.color = span.getColor(); 42 | this.bold = span.getIsBold(); 43 | this.italics = span.getIsItalic(); 44 | this.start = start; 45 | this.end = end; 46 | } 47 | 48 | public SyntaxHighlightSpan(int color, boolean bold, boolean italics, int start, int end) { 49 | this.color = color; 50 | this.start = start; 51 | this.end = end; 52 | this.bold = bold; 53 | this.italics = italics; 54 | } 55 | 56 | @Override 57 | public void updateDrawState(TextPaint tp) { 58 | tp.setColor(color); 59 | tp.setFakeBoldText(bold); 60 | if(italics) { 61 | tp.setTextSkewX(-0.1f); 62 | } 63 | } 64 | 65 | @Override 66 | public int compareTo(@NonNull SyntaxHighlightSpan other) { 67 | return this.start - other.start; 68 | } 69 | } 70 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/processor/utils/Converter.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.processor.utils; 21 | 22 | import android.util.TypedValue; 23 | import android.view.View; 24 | 25 | import com.github.ahmadaghazadeh.editor.processor.utils.files.SortMode; 26 | 27 | 28 | public class Converter { 29 | 30 | public static int dpAsPixels(View view, int dp) { 31 | return (int) TypedValue.applyDimension(1, dp, view.getResources().getDisplayMetrics()); 32 | } 33 | 34 | public static int toSortMode(String sortMode) { 35 | switch (sortMode) { 36 | case "SORT_BY_NAME": 37 | return SortMode.SORT_BY_NAME; 38 | case "SORT_BY_SIZE": 39 | return SortMode.SORT_BY_SIZE; 40 | default: //"SORT_BY_DATE" 41 | return SortMode.SORT_BY_DATE; 42 | } 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/processor/utils/DefaultSetting.java: -------------------------------------------------------------------------------- 1 | package com.github.ahmadaghazadeh.editor.processor.utils; 2 | 3 | import android.content.Context; 4 | import android.content.SharedPreferences; 5 | import android.os.Environment; 6 | import android.preference.PreferenceManager; 7 | 8 | public class DefaultSetting implements ITextProcessorSetting { 9 | 10 | private SharedPreferences pref; 11 | 12 | public DefaultSetting(Context context) { 13 | pref = PreferenceManager.getDefaultSharedPreferences(context); 14 | } 15 | 16 | @Override 17 | public boolean getReadOnly() { 18 | return pref.getBoolean("READ_ONLY", false); 19 | } 20 | 21 | @Override 22 | public void setReadOnly(boolean readOnly) { 23 | pref.edit().putBoolean("READ_ONLY", readOnly).apply(); 24 | } 25 | 26 | @Override 27 | public boolean getSyntaxHighlight() { 28 | return pref.getBoolean("SYNTAX_HIGHLIGHT", true); 29 | } 30 | 31 | @Override 32 | public void setSyntaxHighlight(boolean syntaxHighlight) { 33 | pref.edit().putBoolean("SYNTAX_HIGHLIGHT", syntaxHighlight).apply(); 34 | } 35 | 36 | @Override 37 | public int getMaxTabsCount() { 38 | return 5; //pref.getInt... 39 | } 40 | 41 | @Override 42 | public boolean getFullScreenMode() { 43 | return pref.getBoolean("FULLSCREEN_MODE", false); 44 | } 45 | 46 | @Override 47 | public boolean getConfirmExit() { 48 | return pref.getBoolean("CONFIRM_EXIT", true); 49 | } 50 | 51 | @Override 52 | public boolean getResumeSession() { 53 | return pref.getBoolean("RESUME_SESSION", true); 54 | } 55 | 56 | @Override 57 | public boolean getDisableSwipeGesture() { 58 | return pref.getBoolean("DISABLE_SWIPE", false); 59 | } 60 | 61 | @Override 62 | public boolean getImeKeyboard() { 63 | return pref.getBoolean("USE_IME_KEYBOARD", false); 64 | } 65 | 66 | @Override 67 | public String getCurrentTypeface() { 68 | return pref.getString("FONT_TYPE", "droid_sans_mono"); 69 | } 70 | 71 | @Override 72 | public int getFontSize() { 73 | return pref.getInt("FONT_SIZE", 14); //default 74 | } 75 | 76 | @Override 77 | public boolean getWrapContent() { 78 | return pref.getBoolean("WRAP_CONTENT", true); 79 | } 80 | 81 | @Override 82 | public boolean getShowLineNumbers() { 83 | return pref.getBoolean("SHOW_LINE_NUMBERS", true); 84 | } 85 | 86 | @Override 87 | public boolean getBracketMatching() { 88 | return pref.getBoolean("BRACKET_MATCHING", true); 89 | } 90 | 91 | @Override 92 | public String getWorkingFolder() { 93 | return pref.getString("FEXPLORER_WORKING_FOLDER", 94 | Environment.getExternalStorageDirectory().getAbsolutePath()); 95 | } 96 | 97 | @Override 98 | public void setWorkingFolder(String newWorkingFolder) { 99 | pref.edit().putString("FEXPLORER_WORKING_FOLDER", newWorkingFolder).apply(); 100 | } 101 | 102 | @Override 103 | public String getSortMode() { 104 | return pref.getString("FILE_SORT_MODE", "SORT_BY_NAME"); 105 | } 106 | 107 | @Override 108 | public boolean getCreatingFilesAndFolders() { 109 | return pref.getBoolean("ALLOW_CREATING_FILES", true); 110 | } 111 | 112 | @Override 113 | public boolean getHighlightCurrentLine() { 114 | return pref.getBoolean("HIGHLIGHT_CURRENT_LINE", true); 115 | } 116 | 117 | @Override 118 | public boolean getCodeCompletion() { 119 | return pref.getBoolean("CODE_COMPLETION", true); 120 | } 121 | 122 | @Override 123 | public boolean getShowHiddenFiles() { 124 | return pref.getBoolean("SHOW_HIDDEN_FILES", false); 125 | } 126 | 127 | @Override 128 | public boolean getPinchZoom() { 129 | return pref.getBoolean("PINCH_ZOOM", true); 130 | } 131 | 132 | @Override 133 | public boolean getIndentLine() { 134 | return pref.getBoolean("INDENT_LINE", true); 135 | } 136 | 137 | @Override 138 | public boolean getInsertBracket() { 139 | return pref.getBoolean("INSERT_BRACKET", true); 140 | } 141 | 142 | @Override 143 | public boolean getExtendedKeyboard() { 144 | return pref.getBoolean("USE_EXTENDED_KEYS", false); 145 | } 146 | } 147 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/processor/utils/ITextProcessorSetting.java: -------------------------------------------------------------------------------- 1 | package com.github.ahmadaghazadeh.editor.processor.utils; 2 | 3 | import android.os.Environment; 4 | 5 | public interface ITextProcessorSetting { 6 | 7 | public void setReadOnly(boolean readOnly) ; 8 | 9 | public boolean getReadOnly(); 10 | 11 | public void setSyntaxHighlight(boolean syntaxHighlight) ; 12 | 13 | public boolean getSyntaxHighlight(); 14 | 15 | public int getMaxTabsCount(); 16 | 17 | public boolean getFullScreenMode(); 18 | 19 | public boolean getConfirmExit(); 20 | 21 | public boolean getResumeSession(); 22 | 23 | public boolean getDisableSwipeGesture(); 24 | 25 | public boolean getImeKeyboard(); 26 | 27 | public String getCurrentTypeface(); 28 | 29 | public int getFontSize(); 30 | 31 | public boolean getWrapContent(); 32 | 33 | public boolean getShowLineNumbers(); 34 | 35 | public boolean getBracketMatching(); 36 | 37 | public String getWorkingFolder() ; 38 | 39 | public void setWorkingFolder(String newWorkingFolder); 40 | 41 | public String getSortMode(); 42 | 43 | public boolean getCreatingFilesAndFolders() ; 44 | 45 | public boolean getHighlightCurrentLine() ; 46 | 47 | public boolean getCodeCompletion(); 48 | 49 | public boolean getShowHiddenFiles(); 50 | 51 | public boolean getPinchZoom(); 52 | 53 | public boolean getIndentLine(); 54 | 55 | public boolean getInsertBracket(); 56 | 57 | public boolean getExtendedKeyboard(); 58 | } 59 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/processor/utils/Logger.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.processor.utils; 21 | 22 | import android.support.annotation.NonNull; 23 | import android.util.Log; 24 | 25 | 26 | /** 27 | * Упрощение работы с логгированием. 28 | */ 29 | public class Logger { 30 | 31 | public static String ERROR_OCCURRED = "An error occurred: "; 32 | private static String mStartsWith = "[Editor] "; 33 | 34 | public static void debug(@NonNull String tag, String message) { 35 | Log.d(tag, mStartsWith + message); 36 | } 37 | 38 | public static void error(@NonNull String tag, String message, Exception exception) { 39 | Log.e(tag, mStartsWith + message, exception); 40 | } 41 | 42 | public static void error(@NonNull String tag, Exception exception) { 43 | Log.e(tag, mStartsWith + ERROR_OCCURRED, exception); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/processor/utils/files/SortMode.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.processor.utils.files; 21 | 22 | public class SortMode { 23 | public static final int SORT_BY_NAME = 1; 24 | public static final int SORT_BY_SIZE = 2; 25 | public static final int SORT_BY_DATE = 3; 26 | } 27 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/processor/utils/text/ArrayUtils.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.processor.utils.text; 21 | 22 | import android.support.annotation.NonNull; 23 | 24 | import java.lang.reflect.Array; 25 | 26 | public class ArrayUtils { 27 | 28 | @SafeVarargs 29 | public static T[] join(Class c, @NonNull T[]... objects) { 30 | int size = 0; 31 | for (T[] object : objects) { 32 | size += object.length; 33 | } 34 | T[] result = (T[]) Array.newInstance(c, size); 35 | int index = 0; 36 | for (T[] object : objects) { 37 | for (T t : object) { 38 | Array.set(result, index, t); 39 | index++; 40 | } 41 | } 42 | return result; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/processor/utils/text/LineUtils.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.processor.utils.text; 21 | 22 | import android.widget.TextView; 23 | 24 | public class LineUtils { 25 | 26 | public int getTopVisibleLine(TextView editor) { 27 | int lineHeight = editor.getLineHeight(); 28 | if (lineHeight == 0) { 29 | return 0; 30 | } 31 | int line = editor.getScrollY() / lineHeight; 32 | if (line < 0) { 33 | return 0; 34 | } 35 | if (line >= editor.getLineCount()) { 36 | return editor.getLineCount() - 1; 37 | } 38 | return line; 39 | } 40 | 41 | public int getBottomVisibleLine(TextView editor) { 42 | int lineHeight = editor.getLineHeight(); 43 | if (lineHeight == 0) { 44 | return 0; 45 | } 46 | int line = Math.abs((editor.getScrollY() + editor.getHeight()) / lineHeight) + 1; 47 | if (line < 0) { 48 | return 0; 49 | } 50 | if (line >= editor.getLineCount()) { 51 | return editor.getLineCount() - 1; 52 | } 53 | return line; 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/processor/utils/text/SymbolsTokenizer.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.processor.utils.text; 21 | 22 | import android.widget.MultiAutoCompleteTextView; 23 | 24 | /** 25 | * @author Trần Lê Duy 26 | */ 27 | public class SymbolsTokenizer implements MultiAutoCompleteTextView.Tokenizer { 28 | 29 | private static final String TOKEN = "!@#$%^&*()_+-={}|[]:;'<>/<.? \r\n\t"; 30 | 31 | @Override 32 | public int findTokenStart(CharSequence text, int cursor) { 33 | int i = cursor; 34 | while (i > 0 && !TOKEN.contains(Character.toString(text.charAt(i - 1)))) { 35 | i--; 36 | } 37 | while (i < cursor && text.charAt(i) == ' ') { 38 | i++; 39 | } 40 | return i; 41 | } 42 | 43 | @Override 44 | public int findTokenEnd(CharSequence text, int cursor) { 45 | int i = cursor; 46 | int len = text.length(); 47 | while (i < len) { 48 | if (TOKEN.contains(Character.toString(text.charAt(i - 1)))) { 49 | return i; 50 | } else { 51 | i++; 52 | } 53 | } 54 | return len; 55 | } 56 | 57 | @Override 58 | public CharSequence terminateToken(CharSequence text) { 59 | int i = text.length(); 60 | while (i > 0 && text.charAt(i - 1) == ' ') { 61 | i--; 62 | } 63 | return text; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/processor/utils/text/TextChange.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.processor.utils.text; 21 | 22 | import java.io.Serializable; 23 | 24 | /** 25 | * @author Henry Thompson 26 | */ 27 | public class TextChange implements Serializable { 28 | 29 | public String newText; 30 | public String oldText; 31 | public int start; 32 | 33 | @Override 34 | public TextChange clone() { 35 | TextChange copy = new TextChange(); 36 | copy.oldText = oldText; 37 | copy.newText = newText; 38 | copy.start = start; 39 | return copy; 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /library/src/main/java/com/github/ahmadaghazadeh/editor/widget/GutterView.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2018 Light Team Software 3 | * 4 | * This file is part of ModPE IDE. 5 | * 6 | * ModPE IDE is free software: you can redistribute it and/or modify 7 | * it under the terms of the GNU General Public License as published by 8 | * the Free Software Foundation, either version 3 of the License, or 9 | * (at your option) any later version. 10 | * 11 | * ModPE IDE is distributed in the hope that it will be useful, 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | * GNU General Public License for more details. 15 | * 16 | * You should have received a copy of the GNU General Public License 17 | * along with this program. If not, see . 18 | */ 19 | 20 | package com.github.ahmadaghazadeh.editor.widget; 21 | 22 | import android.content.Context; 23 | import android.graphics.Canvas; 24 | import android.graphics.Color; 25 | import android.util.AttributeSet; 26 | import android.view.View; 27 | 28 | import com.github.ahmadaghazadeh.editor.document.commons.LinesCollection; 29 | import com.github.ahmadaghazadeh.editor.interfaces.OnScrollChangedListener; 30 | import com.github.ahmadaghazadeh.editor.processor.TextProcessor; 31 | import com.github.ahmadaghazadeh.editor.processor.style.StylePaint; 32 | 33 | public class GutterView extends View implements OnScrollChangedListener { 34 | 35 | 36 | private int bottomLayoutLine; 37 | private TextProcessor mEditor = null; 38 | private StylePaint mLinePaint; 39 | private StylePaint mTextPaint; 40 | private int topLayoutLine; 41 | private LinesCollection lineNumbers; 42 | 43 | public GutterView(Context context, AttributeSet attrs) { 44 | super(context, attrs); 45 | if (!isInEditMode()) 46 | initLineNumbers(); 47 | } 48 | 49 | public GutterView(Context context) { 50 | super(context); 51 | if (!isInEditMode()) 52 | initLineNumbers(); 53 | } 54 | 55 | public void initLineNumbers() { 56 | mTextPaint = new StylePaint(true, false); 57 | mTextPaint.setTextSize(getResources().getDisplayMetrics().density * 11.0f); 58 | mTextPaint.setColor(Color.rgb(113, 128, 120)); 59 | 60 | mLinePaint = new StylePaint(false, false); 61 | mLinePaint.setColor(Color.rgb(113, 128, 120)); 62 | mLinePaint.setStyle(StylePaint.Style.STROKE); 63 | } 64 | 65 | public void link(TextProcessor editor, LinesCollection lineNumbers) { 66 | if (editor != null) { 67 | mEditor = editor; 68 | mEditor.addOnScrollChangedListener(this); 69 | this.lineNumbers = lineNumbers; 70 | invalidate(); 71 | } 72 | } 73 | 74 | private int getLineNumberAtPoint(int y) { 75 | int i = topLayoutLine; 76 | while (i <= bottomLayoutLine) { 77 | int lineBound = (mEditor.getLineBounds(i, null) - mEditor.getScrollY()) + 4; 78 | int lineHeight = mEditor.getLineHeight(); 79 | if (y >= lineBound || y <= lineBound - lineHeight) { 80 | i++; 81 | } else { 82 | return lineNumbers.getLineForIndex(mEditor.getLayout().getLineStart(i)); 83 | } 84 | } 85 | return -1; 86 | } 87 | 88 | public void getTopAndBottomLayoutLines() { 89 | if (mEditor != null) { 90 | topLayoutLine = Math.abs((mEditor.getScrollY() - 91 | mEditor.getLayout().getTopPadding()) / mEditor.getLineHeight()); 92 | bottomLayoutLine = 93 | (mEditor.getScrollY() + mEditor.getHeight()) / mEditor.getLineHeight(); 94 | if (topLayoutLine < 0) { 95 | topLayoutLine = 0; 96 | } 97 | if (bottomLayoutLine > mEditor.getLineCount() - 1) { 98 | bottomLayoutLine = mEditor.getLineCount() - 1; 99 | } 100 | } 101 | } 102 | 103 | @Override 104 | protected void onDraw(Canvas canvas) { 105 | super.onDraw(canvas); 106 | canvas.drawLine( 107 | getWidth() - 2, 0.0f, getWidth() - 1, getHeight(), mLinePaint); 108 | if (mEditor == null) { 109 | super.onDraw(canvas); 110 | return; 111 | } 112 | getTopAndBottomLayoutLines(); 113 | if (lineNumbers != null) { 114 | 115 | 116 | int i = topLayoutLine > 0 ? topLayoutLine - 1 : 0; 117 | while (i <= bottomLayoutLine) { 118 | int realLineNumber = lineNumbers.getLineForIndex(mEditor.getLayout().getLineStart(i)); 119 | int prevRealLineNumber; 120 | int lineBottom; 121 | if (i != 0) { 122 | prevRealLineNumber = 123 | lineNumbers.getLineForIndex(mEditor.getLayout().getLineStart(i - 1)); 124 | } else { 125 | prevRealLineNumber = -1; 126 | } 127 | lineBottom = mEditor.getLineBounds(i, null) - mEditor.getScrollY(); 128 | if (prevRealLineNumber != realLineNumber) { 129 | canvas.drawText( 130 | Integer.toString(realLineNumber + 1), 131 | 5.0f, lineBottom, mTextPaint); 132 | } 133 | i++; 134 | } 135 | } 136 | mEditor.updateGutter(); //Обновление списка линий (при редактировании текста тоже работает) 137 | 138 | } 139 | 140 | @Override 141 | public void onScrollChanged(int x, int y, int oldx, int oldy) { 142 | invalidate(); 143 | } 144 | } 145 | -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/fastscroll_thumb_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/fastscroll_thumb_default.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/fastscroll_thumb_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/fastscroll_thumb_pressed.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_drawer_app_rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_drawer_app_rate.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_drawer_buy_ultimate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_drawer_buy_ultimate.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_drawer_insert_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_drawer_insert_color.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_drawer_read_only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_drawer_read_only.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_drawer_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_drawer_right.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_drawer_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_drawer_settings.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_drawer_syntax_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_drawer_syntax_highlight.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_drawer_templates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_drawer_templates.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_drawer_textures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_drawer_textures.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_drawer_validator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_drawer_validator.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_edit_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_edit_copy.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_edit_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_edit_cut.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_edit_delete_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_edit_delete_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_edit_duplicate_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_edit_duplicate_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_edit_paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_edit_paste.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_edit_redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_edit_redo.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_edit_select_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_edit_select_all.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_edit_selection_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_edit_selection_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_edit_undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_edit_undo.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_fexplorer_document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_fexplorer_document.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_fexplorer_fab_document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_fexplorer_fab_document.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_fexplorer_fab_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_fexplorer_fab_folder.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_fexplorer_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_fexplorer_folder.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_file_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_file_close.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_file_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_file_new.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_file_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_file_open.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_file_properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_file_properties.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_file_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_file_save.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_menu_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_menu_edit.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_menu_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_menu_file.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_notification_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_notification_default.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_search_find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_search_find.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_search_goto_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_search_goto_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_search_replace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_search_replace.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_shortcut_file_explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_shortcut_file_explorer.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_shortcut_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_shortcut_settings.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-hdpi/ic_tab_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-hdpi/ic_tab_close.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/fastscroll_thumb_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/fastscroll_thumb_default.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/fastscroll_thumb_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/fastscroll_thumb_pressed.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_drawer_app_rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_drawer_app_rate.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_drawer_buy_ultimate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_drawer_buy_ultimate.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_drawer_insert_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_drawer_insert_color.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_drawer_read_only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_drawer_read_only.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_drawer_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_drawer_right.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_drawer_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_drawer_settings.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_drawer_syntax_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_drawer_syntax_highlight.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_drawer_templates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_drawer_templates.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_drawer_textures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_drawer_textures.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_drawer_validator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_drawer_validator.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_edit_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_edit_copy.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_edit_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_edit_cut.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_edit_delete_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_edit_delete_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_edit_duplicate_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_edit_duplicate_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_edit_paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_edit_paste.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_edit_redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_edit_redo.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_edit_select_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_edit_select_all.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_edit_select_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_edit_select_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_edit_undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_edit_undo.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_fexplorer_document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_fexplorer_document.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_fexplorer_fab_document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_fexplorer_fab_document.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_fexplorer_fab_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_fexplorer_fab_folder.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_fexplorer_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_fexplorer_folder.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_file_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_file_close.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_file_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_file_new.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_file_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_file_open.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_file_properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_file_properties.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_file_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_file_save.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_menu_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_menu_edit.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_menu_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_menu_file.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_notification_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_notification_default.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_search_find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_search_find.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_search_goto_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_search_goto_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_search_replace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_search_replace.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_shortcut_file_explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_shortcut_file_explorer.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_shortcut_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_shortcut_settings.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-mdpi/ic_tab_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-mdpi/ic_tab_close.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-v24/ic_launcher_foreground.xml: -------------------------------------------------------------------------------- 1 | 19 | 20 | 26 | 31 | 32 | 38 | 41 | 44 | 45 | 46 | 47 | 53 | 54 | -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/fastscroll_thumb_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/fastscroll_thumb_default.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/fastscroll_thumb_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/fastscroll_thumb_pressed.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_drawer_app_rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_drawer_app_rate.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_drawer_buy_ultimate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_drawer_buy_ultimate.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_drawer_insert_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_drawer_insert_color.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_drawer_read_only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_drawer_read_only.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_drawer_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_drawer_right.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_drawer_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_drawer_settings.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_drawer_syntax_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_drawer_syntax_highlight.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_drawer_templates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_drawer_templates.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_drawer_textures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_drawer_textures.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_drawer_validator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_drawer_validator.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_edit_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_edit_copy.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_edit_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_edit_cut.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_edit_delete_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_edit_delete_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_edit_duplicate_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_edit_duplicate_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_edit_paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_edit_paste.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_edit_redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_edit_redo.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_edit_select_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_edit_select_all.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_edit_select_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_edit_select_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_edit_undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_edit_undo.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_fexplorer_document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_fexplorer_document.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_fexplorer_fab_document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_fexplorer_fab_document.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_fexplorer_fab_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_fexplorer_fab_folder.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_fexplorer_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_fexplorer_folder.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_file_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_file_close.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_file_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_file_new.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_file_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_file_open.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_file_properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_file_properties.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_file_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_file_save.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_menu_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_menu_edit.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_menu_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_menu_file.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_notification_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_notification_default.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_search_find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_search_find.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_search_goto_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_search_goto_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_search_replace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_search_replace.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_shortcut_file_explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_shortcut_file_explorer.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_shortcut_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_shortcut_settings.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xhdpi/ic_tab_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xhdpi/ic_tab_close.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_drawer_app_rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_drawer_app_rate.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_drawer_buy_ultimate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_drawer_buy_ultimate.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_drawer_insert_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_drawer_insert_color.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_drawer_read_only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_drawer_read_only.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_drawer_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_drawer_right.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_drawer_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_drawer_settings.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_drawer_syntax_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_drawer_syntax_highlight.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_drawer_templates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_drawer_templates.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_drawer_textures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_drawer_textures.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_drawer_validator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_drawer_validator.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_edit_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_edit_copy.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_edit_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_edit_cut.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_edit_delete_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_edit_delete_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_edit_duplicate_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_edit_duplicate_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_edit_paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_edit_paste.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_edit_redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_edit_redo.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_edit_select_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_edit_select_all.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_edit_select_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_edit_select_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_edit_undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_edit_undo.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_fexplorer_document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_fexplorer_document.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_fexplorer_fab_document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_fexplorer_fab_document.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_fexplorer_fab_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_fexplorer_fab_folder.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_fexplorer_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_fexplorer_folder.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_file_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_file_close.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_file_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_file_new.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_file_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_file_open.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_file_properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_file_properties.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_file_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_file_save.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_menu_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_menu_edit.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_menu_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_menu_file.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_notification_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_notification_default.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_search_find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_search_find.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_search_goto_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_search_goto_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_search_replace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_search_replace.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_shortcut_file_explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_shortcut_file_explorer.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_shortcut_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_shortcut_settings.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxhdpi/ic_tab_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxhdpi/ic_tab_close.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_drawer_app_rate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_drawer_app_rate.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_drawer_buy_ultimate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_drawer_buy_ultimate.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_drawer_insert_color.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_drawer_insert_color.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_drawer_read_only.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_drawer_read_only.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_drawer_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_drawer_right.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_drawer_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_drawer_settings.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_drawer_syntax_highlight.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_drawer_syntax_highlight.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_drawer_templates.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_drawer_templates.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_drawer_textures.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_drawer_textures.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_drawer_validator.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_drawer_validator.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_edit_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_edit_copy.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_edit_cut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_edit_cut.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_edit_delete_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_edit_delete_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_edit_duplicate_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_edit_duplicate_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_edit_paste.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_edit_paste.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_edit_redo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_edit_redo.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_edit_select_all.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_edit_select_all.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_edit_select_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_edit_select_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_edit_undo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_edit_undo.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_fexplorer_document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_fexplorer_document.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_fexplorer_fab_document.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_fexplorer_fab_document.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_fexplorer_fab_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_fexplorer_fab_folder.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_fexplorer_folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_fexplorer_folder.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_file_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_file_close.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_file_new.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_file_new.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_file_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_file_open.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_file_properties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_file_properties.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_file_save.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_file_save.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_menu_edit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_menu_edit.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_menu_file.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_menu_file.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_notification_default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_notification_default.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_search_find.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_search_find.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_search_goto_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_search_goto_line.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_search_replace.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_search_replace.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_shortcut_file_explorer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_shortcut_file_explorer.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_shortcut_settings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_shortcut_settings.png -------------------------------------------------------------------------------- /library/src/main/res/drawable-xxxhdpi/ic_tab_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/drawable-xxxhdpi/ic_tab_close.png -------------------------------------------------------------------------------- /library/src/main/res/drawable/drawer_item_icon_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /library/src/main/res/drawable/drawer_item_text_selector.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /library/src/main/res/font/josefin_sans_italic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/font/josefin_sans_italic.ttf -------------------------------------------------------------------------------- /library/src/main/res/font/josefin_sans_regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/library/src/main/res/font/josefin_sans_regular.ttf -------------------------------------------------------------------------------- /library/src/main/res/font/main_sans.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 26 | 30 | -------------------------------------------------------------------------------- /library/src/main/res/layout/fragment_document.xml: -------------------------------------------------------------------------------- 1 | 19 | 20 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 34 | 35 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 61 | 62 | -------------------------------------------------------------------------------- /library/src/main/res/layout/item_list_key.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /library/src/main/res/layout/item_list_suggest.xml: -------------------------------------------------------------------------------- 1 | 2 | 9 | 10 | 23 | 24 | -------------------------------------------------------------------------------- /library/src/main/res/layout/item_tab_file.xml: -------------------------------------------------------------------------------- 1 | 19 | 20 | 25 | 26 | 38 | 39 | 50 | 51 | -------------------------------------------------------------------------------- /library/src/main/res/values/arrays.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | Roboto 24 | Roboto Light 25 | Source Code Pro 26 | Droid Sans Mono 27 | 28 | 29 | 30 | @string/fexplorer_rename 31 | @string/fexplorer_delete 32 | 33 | 34 | 35 | @string/fexplorer_sort_by_name 36 | @string/fexplorer_sort_by_size 37 | @string/fexplorer_sort_by_date 38 | 39 | 40 | 41 | SORT_BY_NAME 42 | SORT_BY_SIZE 43 | SORT_BY_DATE 44 | 45 | 46 | 47 | roboto 48 | roboto_light 49 | source_code_pro 50 | droid_sans_mono 51 | 52 | -------------------------------------------------------------------------------- /library/src/main/res/values/attrs.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | -------------------------------------------------------------------------------- /library/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 23 | #353A3E 24 | 25 | #ffbb33 26 | #717171 27 | #DE000000 28 | #ffffff 29 | #000000 30 | #838383 31 | #00A2FF 32 | #653BBF 33 | #EEEEEE 34 | 35 | #3c3f41 36 | #3c3f41 37 | #FF8000 38 | #37383A 39 | #FF8000 40 | #303030 41 | #AAB6C6 42 | #808080 43 | #214283 44 | #BBBBBB 45 | #32593D 46 | #343638 47 | #3A3A3A 48 | #33654B 49 | #3c3f41 50 | #6897BB 51 | #E8E2B7 52 | #E8E2B7 53 | #EC7600 54 | #FEC76C 55 | #6E875A 56 | #66747B 57 | 58 | 59 | -------------------------------------------------------------------------------- /library/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 20 | 21 | 22 | 45dp 23 | 30dp 24 | 30dp 25 | 30dp 26 | 36dp 27 | 28 | 48dp 29 | 36dp 30 | 14sp 31 | 12sp 32 | 48dp 33 | 34 | 200dp 35 | 36 | 4dp 37 | 0dp 38 | 39 | 16dp 40 | 12dp 41 | 8dp 42 | 6dp 43 | 4dp 44 | 2dp 45 | 46 | 56dp 47 | 30dp 48 | 14sp 49 | 16sp 50 | 51 | 24sp 52 | 20sp 53 | -------------------------------------------------------------------------------- /library/src/main/res/values/ids.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /library/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 19 | 20 | 21 | 22 | 23 | 30 | 31 | 32 | 54 | 55 | 56 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /library/src/test/java/com/github/ahmadaghazadeh/editor/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.github.ahmadaghazadeh.editor; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /media/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ahmadaghazadeh/CodeEditor/4fafb6839719c2de595a91d51d7db0c7a1a332d9/media/screenshot.png -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':library', ':app' 2 | --------------------------------------------------------------------------------