package de.tu_darmstadt.informatik.tk.olir; import android.content.Context; import android.graphics.Color; import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; import android.support.constraint.ConstraintLayout; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; import java.io.File; import java.io.FileNotFoundException; import java.util.ArrayList; import java.util.List; import java.util.Scanner; /** * Parses an objectSpecs.txt file * Created by Martin Herbers on 17.03.2017. */ public class Parser { //Save the first button position as the middle point and use it to reposition the button private static boolean first = true; private static int baseX; private static int baseY; public static void parseFile(String[] content, AppCompatActivity activity) { //First line: Object title TextView textView = activity.findViewById(R.id.textView); textView.setText(content[0].substring(content[0].indexOf(':')+1)); //Set the two status strings //TODO MainActivity.stringTrue = list.get(3).substring(list.get(3).indexOf(':')+1); //TODO MainActivity.stringFalse = list.get(4).substring(list.get(4).indexOf(':')+1); DrawView background = activity.findViewById(R.id.drawView); //Outer shapes String shapes = content[1].substring(content[1].indexOf(':')+1); background.clearShapes(); int idx = shapes.indexOf(']')+1; while (idx > 0) { //Add every basic shape to the list that gets drawn background.addShape(shapes.substring(0, idx)); shapes = shapes.substring(idx); idx = shapes.indexOf(']')+1; } background.invalidate(); Button button = activity.findViewById(R.id.button); if (first) { baseX = (int) button.getX(); baseY = (int) button.getY(); first = false; } //Button size and position String buttonText = content[2].substring(content[2].indexOf(':')+1); float scale = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 1, activity.getResources().getDisplayMetrics()); if (buttonText.charAt(1) == 'C') { buttonText = buttonText.substring(3); int index = buttonText.indexOf(';'); float x = Float.parseFloat(buttonText.substring(0, index)); buttonText = buttonText.substring(index + 1); index = buttonText.indexOf(';'); float y = Float.parseFloat(buttonText.substring(0, index)); buttonText = buttonText.substring(index + 1); index = buttonText.length()-1; float diameter = Float.parseFloat(buttonText.substring(0, index)); int dia = (int) (diameter * scale) ; ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) button.getLayoutParams(); layoutParams.horizontalBias = (baseX + x * scale) / (baseX * 2); layoutParams.verticalBias = (baseY + y * scale) / (baseY * 2); layoutParams.width = dia; layoutParams.height = dia; button.setLayoutParams(layoutParams); } else if (buttonText.charAt(1) == 'R') { buttonText = buttonText.substring(3); int index = buttonText.indexOf(';'); float x = Float.parseFloat(buttonText.substring(0, index)); buttonText = buttonText.substring(index + 1); index = buttonText.indexOf(';'); float y = Float.parseFloat(buttonText.substring(0, index)); buttonText = buttonText.substring(index + 1); index = buttonText.indexOf(';'); float width = Float.parseFloat(buttonText.substring(0, index)); buttonText = buttonText.substring(index + 1); index = buttonText.length()-1; float height = Float.parseFloat(buttonText.substring(0, index)); int w = (int) (width * scale); int h = (int) (height * scale); ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) button.getLayoutParams(); layoutParams.horizontalBias = (baseX + x * scale) / (baseX * 2); layoutParams.verticalBias = (baseY + y * scale) / (baseY * 2); layoutParams.width = w; layoutParams.height = h; button.setLayoutParams(layoutParams); } } }