// Path: vangogh-sample/src/main/java/com/example/vangogh/menu/MainMenuAdapter.java
// public class MainMenuAdapter extends ArrayAdapter<MainMenuItem> {
// 
//     @Nullable
//     private OnMainMenuItemClickListener listener;
// 
//     public MainMenuAdapter(@NonNull Context context, List<MainMenuItem> items) {
//         super(context, 0, items);
//     }
// 
//     @NonNull
//     @Override
//     public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
//         final MainMenuItem item = getItem(position);
//         if (item == null) return super.getView(position, convertView, parent);
// 
//         if (convertView == null) {
//             convertView = LayoutInflater.from(getContext()).inflate(
//                     R.layout.layout_main_menu_item, parent, false);
//         }
// 
//         final TextView itemTitle = convertView.findViewById(R.id.itemTitle);
//         final TextView itemDesc = convertView.findViewById(R.id.itemDesc);
// 
//         itemTitle.setText(item.getTitle());
//         itemDesc.setText(item.getDesc());
// 
//         final LinearLayout itemLayout = convertView.findViewById(R.id.itemLayout);
//         itemLayout.setOnClickListener(v -> {
//             if (listener != null) {
//                 listener.onMainMenuItemClicked(item);
//             }
//         });
// 
//         return convertView;
//     }
// 
//     public void setOnMainMenuItemClickListener(@Nullable OnMainMenuItemClickListener listener) {
//         this.listener = listener;
//     }
// 
//     public interface OnMainMenuItemClickListener {
//         void onMainMenuItemClicked(@NonNull MainMenuItem item);
//     }
// 
// }
// 
// Path: vangogh-sample/src/main/java/com/example/vangogh/menu/MainMenuItem.java
// public class MainMenuItem<T extends Activity> {
// 
//     @NonNull
//     private final String title;
// 
//     @NonNull
//     private final String desc;
// 
//     @NonNull
//     private final Class<T> activityClass;
// 
//     public MainMenuItem(@NonNull String title, @NonNull String desc, @NonNull Class<T> activityClass) {
//         this.title = title;
//         this.desc = desc;
//         this.activityClass = activityClass;
//     }
// 
//     @NonNull
//     String getTitle() {
//         return title;
//     }
// 
//     @NonNull
//     String getDesc() {
//         return desc;
//     }
// 
//     @NonNull
//     public Class<T> getActivityClass() {
//         return activityClass;
//     }
// 
// }
// 
// Path: vangogh-sample/src/main/java/com/example/vangogh/samples/SingleFadeAnimationActivity.java
// public class SingleFadeAnimationActivity extends SingleAnimationActivity {
// 
//     @Override
//     protected void onFabClicked(final FloatingActionButton fab) {
//         fadeOut(fab)
//                 .doOnAnimationStart(view -> fab.setEnabled(false))
//                 .doOnAnimationEnd(view -> fab.setEnabled(true))
//                 .andThen(fadeIn(fab))
//                 .subscribe();
//     }
// 
// }
// 
// Path: vangogh-sample/src/main/java/com/example/vangogh/samples/SingleRotateAnimationActivity.java
// public class SingleRotateAnimationActivity extends SingleAnimationActivity {
// 
//     @Override
//     protected void onFabClicked(final FloatingActionButton fab) {
//         rotateBy(fab, 360)
//                 .doOnAnimationStart(view -> fab.setEnabled(false))
//                 .doOnAnimationEnd(view -> fab.setEnabled(true))
//                 .andThen(rotateBy(fab, -360))
//                 .subscribe();
//     }
// }


import android.content.Intent;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import com.example.vangogh.menu.MainMenuAdapter;
import com.example.vangogh.menu.MainMenuItem;
import com.example.vangogh.samples.SingleFadeAnimationActivity;
import com.example.vangogh.samples.SingleRotateAnimationActivity;
import java.util.ArrayList;
import java.util.List;
package com.example.vangogh;




public class MainActivity extends AppCompatActivity implements MainMenuAdapter.OnMainMenuItemClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView mainMenuList = findViewById(R.id.mainMenu);

// Path: vangogh-sample/src/main/java/com/example/vangogh/menu/MainMenuAdapter.java
// public class MainMenuAdapter extends ArrayAdapter<MainMenuItem> {
// 
//     @Nullable
//     private OnMainMenuItemClickListener listener;
// 
//     public MainMenuAdapter(@NonNull Context context, List<MainMenuItem> items) {
//         super(context, 0, items);
//     }
// 
//     @NonNull
//     @Override
//     public View getView(int position, @Nullable View convertView, @NonNull ViewGroup parent) {
//         final MainMenuItem item = getItem(position);
//         if (item == null) return super.getView(position, convertView, parent);
// 
//         if (convertView == null) {
//             convertView = LayoutInflater.from(getContext()).inflate(
//                     R.layout.layout_main_menu_item, parent, false);
//         }
// 
//         final TextView itemTitle = convertView.findViewById(R.id.itemTitle);
//         final TextView itemDesc = convertView.findViewById(R.id.itemDesc);
// 
//         itemTitle.setText(item.getTitle());
//         itemDesc.setText(item.getDesc());
// 
//         final LinearLayout itemLayout = convertView.findViewById(R.id.itemLayout);
//         itemLayout.setOnClickListener(v -> {
//             if (listener != null) {
//                 listener.onMainMenuItemClicked(item);
//             }
//         });
// 
//         return convertView;
//     }
// 
//     public void setOnMainMenuItemClickListener(@Nullable OnMainMenuItemClickListener listener) {
//         this.listener = listener;
//     }
// 
//     public interface OnMainMenuItemClickListener {
//         void onMainMenuItemClicked(@NonNull MainMenuItem item);
//     }
// 
// }
// 
// Path: vangogh-sample/src/main/java/com/example/vangogh/menu/MainMenuItem.java
// public class MainMenuItem<T extends Activity> {
// 
//     @NonNull
//     private final String title;
// 
//     @NonNull
//     private final String desc;
// 
//     @NonNull
//     private final Class<T> activityClass;
// 
//     public MainMenuItem(@NonNull String title, @NonNull String desc, @NonNull Class<T> activityClass) {
//         this.title = title;
//         this.desc = desc;
//         this.activityClass = activityClass;
//     }
// 
//     @NonNull
//     String getTitle() {
//         return title;
//     }
// 
//     @NonNull
//     String getDesc() {
//         return desc;
//     }
// 
//     @NonNull
//     public Class<T> getActivityClass() {
//         return activityClass;
//     }
// 
// }
// 
// Path: vangogh-sample/src/main/java/com/example/vangogh/samples/SingleFadeAnimationActivity.java
// public class SingleFadeAnimationActivity extends SingleAnimationActivity {
// 
//     @Override
//     protected void onFabClicked(final FloatingActionButton fab) {
//         fadeOut(fab)
//                 .doOnAnimationStart(view -> fab.setEnabled(false))
//                 .doOnAnimationEnd(view -> fab.setEnabled(true))
//                 .andThen(fadeIn(fab))
//                 .subscribe();
//     }
// 
// }
// 
// Path: vangogh-sample/src/main/java/com/example/vangogh/samples/SingleRotateAnimationActivity.java
// public class SingleRotateAnimationActivity extends SingleAnimationActivity {
// 
//     @Override
//     protected void onFabClicked(final FloatingActionButton fab) {
//         rotateBy(fab, 360)
//                 .doOnAnimationStart(view -> fab.setEnabled(false))
//                 .doOnAnimationEnd(view -> fab.setEnabled(true))
//                 .andThen(rotateBy(fab, -360))
//                 .subscribe();
//     }
// }


// Path: vangogh-sample/src/main/java/com/example/vangogh/MainActivity.java
import android.content.Intent;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ListView;
import com.example.vangogh.menu.MainMenuAdapter;
import com.example.vangogh.menu.MainMenuItem;
import com.example.vangogh.samples.SingleFadeAnimationActivity;
import com.example.vangogh.samples.SingleRotateAnimationActivity;
import java.util.ArrayList;
import java.util.List;

package com.example.vangogh;




public class MainActivity extends AppCompatActivity implements MainMenuAdapter.OnMainMenuItemClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ListView mainMenuList = findViewById(R.id.mainMenu);

        MainMenuAdapter adapter = new MainMenuAdapter(this, getMainMenuItems());