66import android .os .Bundle ;
77import android .view .Menu ;
88import android .view .MenuItem ;
9+ import android .widget .ArrayAdapter ;
910import android .widget .Toast ;
1011
1112import com .amrdeveloper .codeview .CodeView ;
@@ -16,6 +17,7 @@ public class MainActivity extends AppCompatActivity {
1617
1718 private CodeView mCodeView ;
1819
20+ //Index of next theme to load it when user click change theme
1921 private int mNextThemeIndex = 2 ;
2022
2123 //To change themes easily
@@ -27,6 +29,37 @@ protected void onCreate(Bundle savedInstanceState) {
2729 setContentView (R .layout .activity_main );
2830
2931 mCodeView = findViewById (R .id .codeView );
32+
33+ configLanguageAutoComplete ();
34+
35+ //Config the default theme
36+ SyntaxManager .applyMonokaiTheme (this , mCodeView , mCurrentLanguage );
37+ }
38+
39+ private void configLanguageAutoComplete () {
40+ //Load current Programming Language
41+ final String [] languageKeywords ;
42+ switch (mCurrentLanguage ){
43+ case JAVA :
44+ languageKeywords = getResources ().getStringArray (R .array .java_keywords );
45+ break ;
46+ case PYTHON :
47+ languageKeywords = getResources ().getStringArray (R .array .python_keywords );
48+ break ;
49+ default :
50+ languageKeywords = getResources ().getStringArray (R .array .go_keywords );
51+ break ;
52+ }
53+
54+ //Custom list item xml layout
55+ final int layoutId = R .layout .suggestion_list_item ;
56+
57+ //TextView id to put suggestion on it
58+ final int viewId = R .id .suggestItemTextView ;
59+ ArrayAdapter <String > adapter = new ArrayAdapter <>(this , layoutId , viewId , languageKeywords );
60+
61+ //Add Custom Adapter to the CodeView
62+ mCodeView .setAdapter (adapter );
3063 }
3164
3265 @ Override
@@ -39,32 +72,36 @@ public boolean onCreateOptionsMenu(Menu menu) {
3972 public boolean onOptionsItemSelected (@ NonNull MenuItem item ) {
4073 final int id = item .getItemId ();
4174 if (id == R .id .changeMenu ) {
42- //Change CodeView Theme
43- if (mNextThemeIndex > 4 ) {
44- mNextThemeIndex = 1 ;
45- }
46-
47- switch (mNextThemeIndex ) {
48- case 1 :
49- SyntaxManager .applyMonokaiTheme (this , mCodeView , mCurrentLanguage );
50- Toast .makeText (this , "Monokai" , Toast .LENGTH_SHORT ).show ();
51- break ;
52- case 2 :
53- SyntaxManager .applyNoctisWhiteTheme (this , mCodeView , mCurrentLanguage );
54- Toast .makeText (this , "Noctis White" , Toast .LENGTH_SHORT ).show ();
55- break ;
56- case 3 :
57- SyntaxManager .applyFiveColorsDarkTheme (this , mCodeView , mCurrentLanguage );
58- Toast .makeText (this , "5 Colors Dark" , Toast .LENGTH_SHORT ).show ();
59- break ;
60- case 4 :
61- SyntaxManager .applyOrangeBoxTheme (this , mCodeView , mCurrentLanguage );
62- Toast .makeText (this , "Orange Box" , Toast .LENGTH_SHORT ).show ();
63- break ;
64- }
65-
66- mNextThemeIndex = mNextThemeIndex + 1 ;
75+ changeCodeViewTheme ();
6776 }
6877 return super .onOptionsItemSelected (item );
6978 }
79+
80+ private void changeCodeViewTheme () {
81+ //Change CodeView Theme
82+ if (mNextThemeIndex > 4 ) {
83+ mNextThemeIndex = 1 ;
84+ }
85+
86+ switch (mNextThemeIndex ) {
87+ case 1 :
88+ SyntaxManager .applyMonokaiTheme (this , mCodeView , mCurrentLanguage );
89+ Toast .makeText (this , "Monokai" , Toast .LENGTH_SHORT ).show ();
90+ break ;
91+ case 2 :
92+ SyntaxManager .applyNoctisWhiteTheme (this , mCodeView , mCurrentLanguage );
93+ Toast .makeText (this , "Noctis White" , Toast .LENGTH_SHORT ).show ();
94+ break ;
95+ case 3 :
96+ SyntaxManager .applyFiveColorsDarkTheme (this , mCodeView , mCurrentLanguage );
97+ Toast .makeText (this , "5 Colors Dark" , Toast .LENGTH_SHORT ).show ();
98+ break ;
99+ case 4 :
100+ SyntaxManager .applyOrangeBoxTheme (this , mCodeView , mCurrentLanguage );
101+ Toast .makeText (this , "Orange Box" , Toast .LENGTH_SHORT ).show ();
102+ break ;
103+ }
104+
105+ mNextThemeIndex = mNextThemeIndex + 1 ;
106+ }
70107}
0 commit comments