You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

85 lines
2.6KB

  1. package de.hems.trafficsim;
  2. import androidx.appcompat.app.AppCompatActivity;
  3. import androidx.constraintlayout.widget.ConstraintLayout;
  4. import android.os.Bundle;
  5. import android.os.Looper;
  6. import android.view.View;
  7. import android.widget.Button;
  8. import android.widget.LinearLayout;
  9. import android.widget.TextView;
  10. import java.util.List;
  11. import java.util.Observable;
  12. import java.util.Observer;
  13. public class MainActivity extends AppCompatActivity implements Observer {
  14. protected Track track;
  15. protected TimeRecordView trackView;
  16. protected Worker worker;
  17. protected LinearLayout viewStack;
  18. @Override
  19. protected void onCreate(Bundle savedInstanceState) {
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.activity_main);
  22. this.track = new Track(25, 100);
  23. this.track.addObserver(this);
  24. this.viewStack = (LinearLayout) findViewById(R.id.trackViewStack);
  25. }
  26. @Override
  27. public void update(Observable observable, Object o) {
  28. final Track trackRef = this.track;
  29. //final TimeRecordView viewRef = this.trackView;
  30. final LinearLayout viewStackRef = this.viewStack;
  31. //final List<VehicleTimeRecord> newRecords = (List<VehicleTimeRecord>) o;
  32. final MainActivity mainActivity = this;
  33. runOnUiThread(new Runnable() {
  34. @Override
  35. public void run() {
  36. TimeRecordView newTrView = new TimeRecordView(mainActivity, trackRef);
  37. if (viewStackRef.getChildCount() > 0)
  38. viewStackRef.removeViewAt(0);
  39. viewStackRef.addView(newTrView);
  40. }
  41. });
  42. }
  43. public void onStepButtonClick(View view) {
  44. this.track.timeElapse();
  45. }
  46. public void onPlayButtonClick(View view) {
  47. Button playButton = (Button) findViewById(R.id.playButton);
  48. playButton.setEnabled(false);
  49. Button stepButton = (Button) findViewById(R.id.stepButton);
  50. stepButton.setEnabled(false);
  51. Button stopButton = (Button) findViewById(R.id.stopButton);
  52. stopButton.setEnabled(true);
  53. this.worker = new Worker(track);
  54. this.worker.start();
  55. }
  56. public void onStopButtonClick(View view) {
  57. Button playButton = (Button) findViewById(R.id.playButton);
  58. playButton.setEnabled(true);
  59. Button stepButton = (Button) findViewById(R.id.stepButton);
  60. stepButton.setEnabled(true);
  61. Button stopButton = (Button) findViewById(R.id.stopButton);
  62. stopButton.setEnabled(false);
  63. this.worker.setStop(true);
  64. try {
  65. this.worker.join();
  66. } catch (InterruptedException ex) {
  67. }
  68. }
  69. }