4646import com .duy .android .compiler .builder .IBuilder ;
4747import com .duy .android .compiler .builder .JavaBuilder ;
4848import com .duy .android .compiler .project .AndroidAppProject ;
49+ import com .duy .android .compiler .project .FileCollection ;
4950import com .duy .android .compiler .project .JavaProject ;
5051import com .duy .android .compiler .project .JavaProjectManager ;
52+ import com .duy .android .compiler .utils .ProjectUtils ;
5153import com .duy .ide .Builder ;
5254import com .duy .ide .MenuEditor ;
5355import com .duy .ide .R ;
6769import com .sothree .slidinguppanel .SlidingUpPanelLayout ;
6870
6971import java .io .File ;
72+ import java .io .FileFilter ;
7073import java .io .IOException ;
7174import java .util .ArrayList ;
7275
@@ -318,15 +321,7 @@ public void onComplete() {
318321 mHandler .postDelayed (new Runnable () {
319322 @ Override
320323 public void run () {
321- File currentFile = getCurrentFile ();
322- if (currentFile == null || !currentFile .getName ().endsWith (".java" )) {
323- String message = getString (R .string .main_class_not_found );
324- Toast .makeText (MainActivity .this , message , Toast .LENGTH_SHORT ).show ();
325- }
326- Intent intent = new Intent (MainActivity .this , ExecuteActivity .class );
327- intent .putExtra (ExecuteActivity .DEX_FILE , mProject .getDexFile ());
328- intent .putExtra (ExecuteActivity .MAIN_CLASS_FILE , currentFile );
329- startActivity (intent );
324+ runJava (mProject );
330325 }
331326 }, 200 );
332327 }
@@ -335,6 +330,42 @@ public void run() {
335330 buildTask .execute ();
336331 }
337332
333+ private void runJava (final JavaProject project ) {
334+ final File currentFile = getCurrentFile ();
335+ if (currentFile == null || !ProjectUtils .isFileBelongProject (project , currentFile )) {
336+ ArrayList <File > javaSrcDirs = new ArrayList <>();
337+ javaSrcDirs .add (project .getJavaSrcDir ());
338+ FileCollection fileCollection = new FileCollection (javaSrcDirs );
339+ final ArrayList <File > javaSources = fileCollection .filter (new FileFilter () {
340+ @ Override
341+ public boolean accept (File pathname ) {
342+ return pathname .isFile () && pathname .getName ().endsWith (".java" );
343+ }
344+ });
345+ AlertDialog .Builder builder = new AlertDialog .Builder (this );
346+ String [] names = new String [javaSources .size ()];
347+ for (int i = 0 ; i < javaSources .size (); i ++) {
348+ names [i ] = javaSources .get (i ).getName ();
349+ }
350+ builder .setTitle (R .string .select_class_to_run );
351+ builder .setItems (names , new DialogInterface .OnClickListener () {
352+ @ Override
353+ public void onClick (DialogInterface dialog , int which ) {
354+ Intent intent = new Intent (MainActivity .this , ExecuteActivity .class );
355+ intent .putExtra (ExecuteActivity .DEX_FILE , project .getDexFile ());
356+ intent .putExtra (ExecuteActivity .MAIN_CLASS_FILE , javaSources .get (which ));
357+ startActivity (intent );
358+ }
359+ });
360+ builder .create ().show ();
361+ } else {
362+ Intent intent = new Intent (MainActivity .this , ExecuteActivity .class );
363+ intent .putExtra (ExecuteActivity .DEX_FILE , project .getDexFile ());
364+ intent .putExtra (ExecuteActivity .MAIN_CLASS_FILE , currentFile );
365+ startActivity (intent );
366+ }
367+ }
368+
338369 /**
339370 * replace dialog find
340371 */
0 commit comments