!7

static MapSO _renameClasses = litmap("GazelleBEA" := "GazelleBEAForUsers");

mainPackage gazelle
mainClassName main

module GazelleBEAForUsers > GazelleBEA {
  transient O eleu;
  switchable S gazelleImage = #1102967;
  transient S myURL;
  
  start {
    dm_requireInBackground("#1031417/Eleu3", eleu -> { this.eleu = eleu; grabURL(); });
    /*dm_startThread(r {
      dm_require("#1031421/HolePuncher");
    });*/
    dm_onFieldChange gazelleImage(r dm_revisualize);
    dm_doEveryAndNow(10.0, r grabURL);
  }
  
  void init :: after {
    set !alwaysRedirectToHttps;
  }

  visual dm_visualizeWithEnabled(jtabs(
    "Main" := jCenterIn3x3Grid(
      centerAndSouthWithMargin(openButton(), setFont(sansSerif(20), dm_centeredLabel myURL()))),
    "Log" := makePrintLogPanel()
  ));

  // API
  
  void grabURL q {
    _setField(myURL := myURL());
  }

  JButton openButton() {
    ret setToolTip("Open your local Gazelle installation through your browser", jImageButton(gazelleImage,
      r { openInPlatformBrowser(myURL()) }));
  }

  S myURL() { ret "http://localhost:" + dm_get httpPort(eleu); }
}

!include early #1031418 // Gazelle BEA