Parser.java 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121
  1. package de.tu_darmstadt.informatik.tk.olir;
  2. import android.content.Context;
  3. import android.graphics.Color;
  4. import android.graphics.drawable.Drawable;
  5. import android.graphics.drawable.GradientDrawable;
  6. import android.support.constraint.ConstraintLayout;
  7. import android.support.v7.app.AppCompatActivity;
  8. import android.util.Log;
  9. import android.util.TypedValue;
  10. import android.view.View;
  11. import android.view.ViewGroup;
  12. import android.widget.Button;
  13. import android.widget.LinearLayout;
  14. import android.widget.TextView;
  15. import java.io.File;
  16. import java.io.FileNotFoundException;
  17. import java.util.ArrayList;
  18. import java.util.List;
  19. import java.util.Scanner;
  20. /**
  21. * Parses an objectSpecs.txt file
  22. * Created by Martin Herbers on 17.03.2017.
  23. */
  24. public class Parser {
  25. //Save the first button position as the middle point and use it to reposition the button
  26. private static boolean first = true;
  27. private static int baseX;
  28. private static int baseY;
  29. public static void parseFile(String[] content, AppCompatActivity activity) {
  30. //First line: Object title
  31. TextView textView = activity.findViewById(R.id.textView);
  32. textView.setText(content[0].substring(content[0].indexOf(':')+1));
  33. //Set the two status strings
  34. //TODO MainActivity.stringTrue = list.get(3).substring(list.get(3).indexOf(':')+1);
  35. //TODO MainActivity.stringFalse = list.get(4).substring(list.get(4).indexOf(':')+1);
  36. DrawView background = activity.findViewById(R.id.drawView);
  37. //Outer shapes
  38. String shapes = content[1].substring(content[1].indexOf(':')+1);
  39. background.clearShapes();
  40. int idx = shapes.indexOf(']')+1;
  41. while (idx > 0) {
  42. //Add every basic shape to the list that gets drawn
  43. background.addShape(shapes.substring(0, idx));
  44. shapes = shapes.substring(idx);
  45. idx = shapes.indexOf(']')+1;
  46. }
  47. background.invalidate();
  48. Button button = activity.findViewById(R.id.button);
  49. if (first) {
  50. baseX = (int) button.getX();
  51. baseY = (int) button.getY();
  52. first = false;
  53. }
  54. //Button size and position
  55. String buttonText = content[2].substring(content[2].indexOf(':')+1);
  56. float scale = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 1,
  57. activity.getResources().getDisplayMetrics());
  58. if (buttonText.charAt(1) == 'C') {
  59. buttonText = buttonText.substring(3);
  60. int index = buttonText.indexOf(';');
  61. float x = Float.parseFloat(buttonText.substring(0, index));
  62. buttonText = buttonText.substring(index + 1);
  63. index = buttonText.indexOf(';');
  64. float y = Float.parseFloat(buttonText.substring(0, index));
  65. buttonText = buttonText.substring(index + 1);
  66. index = buttonText.length()-1;
  67. float diameter = Float.parseFloat(buttonText.substring(0, index));
  68. int dia = (int) (diameter * scale) ;
  69. ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) button.getLayoutParams();
  70. layoutParams.horizontalBias = (baseX + x * scale) / (baseX * 2);
  71. layoutParams.verticalBias = (baseY + y * scale) / (baseY * 2);
  72. layoutParams.width = dia;
  73. layoutParams.height = dia;
  74. button.setLayoutParams(layoutParams);
  75. } else if (buttonText.charAt(1) == 'R') {
  76. buttonText = buttonText.substring(3);
  77. int index = buttonText.indexOf(';');
  78. float x = Float.parseFloat(buttonText.substring(0, index));
  79. buttonText = buttonText.substring(index + 1);
  80. index = buttonText.indexOf(';');
  81. float y = Float.parseFloat(buttonText.substring(0, index));
  82. buttonText = buttonText.substring(index + 1);
  83. index = buttonText.indexOf(';');
  84. float width = Float.parseFloat(buttonText.substring(0, index));
  85. buttonText = buttonText.substring(index + 1);
  86. index = buttonText.length()-1;
  87. float height = Float.parseFloat(buttonText.substring(0, index));
  88. int w = (int) (width * scale);
  89. int h = (int) (height * scale);
  90. ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) button.getLayoutParams();
  91. layoutParams.horizontalBias = (baseX + x * scale) / (baseX * 2);
  92. layoutParams.verticalBias = (baseY + y * scale) / (baseY * 2);
  93. layoutParams.width = w;
  94. layoutParams.height = h;
  95. button.setLayoutParams(layoutParams);
  96. }
  97. }
  98. }