package com.codigoparallevar.minicards; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import androidx.appcompat.app.AlertDialog; import android.util.Log; import com.codigoparallevar.minicards.parts.buttons.RoundButton; import com.codigoparallevar.minicards.parts.logic.Ticker; import com.codigoparallevar.minicards.parts.logic.Toggle; import com.codigoparallevar.minicards.parts.samples.ColorBox; import com.codigoparallevar.minicards.parts.strings.ConvertToString; import com.codigoparallevar.minicards.types.Part; import com.codigoparallevar.minicards.types.functional.Tuple2; import java.util.List; import java.util.Vector; class PartsHolder { private final Context context; private final static List> BuiltInParts = new Vector>(){{ add(new Tuple2<>("Round button", RoundButton.getInstantiator())); add(new Tuple2<>("Ticker", Ticker.getInstantiator())); add(new Tuple2<>("Red/Green box", ColorBox.getInstantiator())); add(new Tuple2<>("Toggle", Toggle.getInstantiator())); add(new Tuple2<>("ToString", ConvertToString.getInstantiator())); }}; public PartsHolder(Context context) { this.context = context; } public void openAddPartModal(final CanvasView canvasView) { AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setTitle("Choose part type") .setItems(getPartTypes(), new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { if ((which >= 0) && (which < BuiltInParts.size())){ Log.d("Minicards partsHolder", "Spawning " + BuiltInParts.get(which).item1); PartInstantiator instantiator = BuiltInParts.get(which).item2; PartsHolder.this.runInstantiator(instantiator, canvasView); } } }); Dialog dialog = builder.create(); dialog.show(); } private void runInstantiator(PartInstantiator instantiator, CanvasView canvasView) { Part part = instantiator.build(canvasView); canvasView.addPart(part); } private static String[] getPartTypes() { String[] partTypes = new String[BuiltInParts.size()]; for (int i = 0; i < BuiltInParts.size(); i++){ partTypes[i] = BuiltInParts.get(i).item1; } return partTypes; } }