/*
 * The MIT License
 *
 * Copyright 2016 Pawel Marynowski.
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in
 * all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */
package pattypan;

import java.util.logging.Level;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;
import org.wikipedia.Wiki;
import pattypan.panes.StartPane;

public class Main extends Application {
  @Override
  public void start(Stage stage) {
    Image logo = new Image(getClass().getResourceAsStream("/pattypan/resources/logo.png"));

    Scene scene = new Scene(new StartPane(stage), Settings.getSettingInt("windowWidth"), Settings.getSettingInt("windowHeight"));
    stage.setResizable(true);
    stage.setTitle("pattypan " + Settings.VERSION);
    stage.getIcons().add(logo);
    stage.setScene(scene);
    stage.show();

    stage.setOnCloseRequest((WindowEvent we) -> {
      Settings.setSetting("windowWidth", (int) scene.getWidth() + "");
      Settings.setSetting("windowHeight", (int) scene.getHeight() + "");
      Settings.setSetting("version", Settings.VERSION);
      Settings.saveProperties();
    });
  }

  /**
   * @param args the command line arguments
   */
  public static void main(String[] args) {
    String wiki = "commons.wikimedia.org";
    String protocol = "https://";
    String scriptPath = "/w";
    for (String arg : args) {
      String[] pair = arg.split("=");
      if (pair[0].contains("wiki")) {
        wiki = pair[1];
      } else if (pair[0].contains("protocol")) {
        protocol = pair[1];
      } else if (pair[0].contains("scriptPath")) {
        scriptPath = pair[1];
      }
    }

    Settings.readProperties();

    Session.LOGGER.log(Level.INFO,
            "Wiki set as: {0}\nProtocol set as: {1}\nScript path set as: {2}",
            new String[]{wiki, protocol, scriptPath}
    );

    String os = System.getProperty("os.name");

    Session.LOGGER.log(Level.INFO,
            "Operating System: {0}\nPattypan Version: {1}",
            new String[]{os, Settings.VERSION}
    );

    Session.WIKI = new Wiki(wiki, scriptPath, protocol);
    launch(args);
  }
}