1414import com .google .android .material .appbar .MaterialToolbar ;
1515import com .google .android .material .navigationrail .NavigationRailView ;
1616import org .xedox .filetree .utils .Node ;
17+ import org .xedox .filetree .widget .FileTreeView ;
1718import org .xedox .utils .BaseFragment ;
1819import org .xedox .utils .FileX ;
1920import org .xedox .utils .OverflowMenu ;
2021import org .xedox .webaide .EditorActivity ;
2122import org .xedox .webaide .MainActivity ;
2223import org .xedox .webaide .R ;
24+ import org .xedox .webaide .SettingsActivity ;
2325import org .xedox .webaide .dialog .NewFileDialog ;
2426import org .xedox .webaide .dialog .RenameFileDialog ;
2527import org .xedox .webaide .editor .EditorManager ;
2628import org .xedox .webaide .project .Project ;
2729
28- public class DrawerManager implements NavigationRailView .OnItemSelectedListener , NavigationRailView .OnItemReselectedListener {
30+ public class DrawerManager
31+ implements NavigationRailView .OnItemSelectedListener ,
32+ NavigationRailView .OnItemReselectedListener {
2933
3034 private final EditorActivity context ;
3135 private final NavigationRailView navigationRail ;
3236 private final FrameLayout navigationContent ;
33- private final FileTreeFragment fileTreeFragment ;
37+ private FileTreeFragment fileTreeFragment ;
3438 private final TextView titleView ;
3539 private final DrawerLayout drawerLayout ;
3640 private final MaterialToolbar toolbar ;
@@ -49,34 +53,39 @@ public DrawerManager(@NonNull EditorActivity context) {
4953 this .editorManager = context .getEditorManager ();
5054
5155 Project project = context .getProject ();
52- this .fileTreeFragment = FileTreeFragment .newInstance (project .getAbsolutePath ());
5356 this .drawerToggle = new ActionBarDrawerToggle (context , drawerLayout , toolbar , 0 , 0 );
5457 drawerToggle .syncState ();
5558
5659 navigationRail .setOnItemSelectedListener (this );
5760 navigationRail .setOnItemReselectedListener (this );
5861 drawerLayout .addDrawerListener (drawerToggle );
59- showFragment ( fileTreeFragment );
62+ this . fileTreeFragment = FileTreeFragment . newInstance ( project . getAbsolutePath () );
6063
61- mainHandler .post (() -> {
62- fileTreeFragment .getFileTree ().setOnFileLongClickListener (this ::handleFileLongClick );
63- fileTreeFragment .getFileTree ().setOnFileClickListener (this ::handleFileClick );
64- });
64+ showFragment (fileTreeFragment );
65+ mainHandler .postDelayed (
66+ () -> {
67+ FileTreeView ft = fileTreeFragment .getFileTree ();
68+ ft .setOnFileLongClickListener (this ::handleFileLongClick );
69+ ft .setOnFileClickListener (this ::handleFileClick );
70+ }, 500 );
6571 }
6672
6773 private void handleFileLongClick (View view , Node node ) {
6874 int menuRes = node .isFile () ? R .menu .file : R .menu .folder ;
69- OverflowMenu .show (view , menuRes , item -> {
70- if (item .getItemId () == R .id .delete ) {
71- if (node .isFile ()) node .delete ();
72- else FileX .deleteDirectory (node );
73- fileTreeFragment .getFileTree ().removeNode (node );
74- } else if (item .getItemId () == R .id .rename ) {
75- RenameFileDialog .show (context , fileTreeFragment .getFileTree (), node );
76- } else if (item .getItemId () == R .id .new_file_folder && node .isDirectory ()) {
77- NewFileDialog .show (context , fileTreeFragment .getFileTree (), node );
78- }
79- });
75+ OverflowMenu .show (
76+ view ,
77+ menuRes ,
78+ item -> {
79+ if (item .getItemId () == R .id .delete ) {
80+ if (node .isFile ()) node .delete ();
81+ else FileX .deleteDirectory (node );
82+ fileTreeFragment .getFileTree ().removeNode (node );
83+ } else if (item .getItemId () == R .id .rename ) {
84+ RenameFileDialog .show (context , fileTreeFragment .getFileTree (), node );
85+ } else if (item .getItemId () == R .id .new_file_folder && node .isDirectory ()) {
86+ NewFileDialog .show (context , fileTreeFragment .getFileTree (), node );
87+ }
88+ });
8089 }
8190
8291 private void handleFileClick (View view , Node node ) {
@@ -92,15 +101,25 @@ public boolean onNavigationItemSelected(@NonNull MenuItem item) {
92101 Intent intent = new Intent (context , MainActivity .class );
93102 context .finish ();
94103 context .startActivity (intent );
95- return true ;
104+ return false ;
105+ } else if (item .getItemId () == R .id .action_settings ) {
106+ Intent intent = new Intent (context , SettingsActivity .class );
107+ context .startActivity (intent );
108+ return false ;
96109 }
97110 return false ;
98111 }
99112
100113 private void showFragment (BaseFragment fragment ) {
101- FragmentManager fragmentManager = context .getSupportFragmentManager ();
102- fragmentManager .beginTransaction ().replace (navigationContent .getId (), fragment ).commit ();
103- titleView .setText (fragment .getTitle ());
114+ mainHandler .post (
115+ () -> {
116+ FragmentManager fragmentManager = context .getSupportFragmentManager ();
117+ fragmentManager
118+ .beginTransaction ()
119+ .replace (navigationContent .getId (), fragment )
120+ .commit ();
121+ titleView .setText (fragment .getTitle ());
122+ });
104123 }
105124
106125 @ Override
@@ -109,4 +128,4 @@ public void onNavigationItemReselected(@NonNull MenuItem item) {}
109128 public void onDestroy () {
110129 drawerLayout .removeDrawerListener (drawerToggle );
111130 }
112- }
131+ }
0 commit comments