├── .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 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/.idea/gradle.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/.idea/runConfigurations.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
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/#ahmadaghazadeh/CodeEditor) [](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 |
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 extends SuggestionItem> 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 |
24 |
25 |
26 |
27 |
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 |
--------------------------------------------------------------------------------