Lekcja 14

Połączenie GUI i IO

Celem dzisiejszych zajęć jest stworzenie własnego programu do programowania stron internetowych.

Silnik przeglądarki

Program, który zamienia kod strony na kontrolki / elementy graficzne.

Jest niezależnąć częścią przeglądarki.

Zastosowanie

WebKit (niezależny silnik) jest używany przez Google Chrome, Chromium, Safari i nie tylko.

Rady
  • Chcąc wspierać stare aplikacje napisane dla niewspieralnych przeglądarek, możemy opakować je w JavaFX.
  • Wiele interfejsów powstaje i będzie powstawać w technologii Web, warto więc mieć z tą dziedziną coś wspólnego.
  • Można napisać własną przeglądarkę.

I. Praca nad silnikiem przeglądarki


Zadanie 0

Importuj kod źródłowy, a następnie przejdź do klasy Controller.

Zmień kod metody goToPJATK(), aby silnik ładował stronę główną uczelni.

Pobierz kod źrodłowy
Zadanie 1

Uzupełnij ciało metody detectBrowser() zgodnie z podpowiedzią.

Zinterpretuj informacje uzyskane na temat silnika.

Zadanie 2

Uzupełnij ciało metody renderMyCode().

Ma ona wziąć zawartość pola tekstowego po lewej i umieścić w silniku przeglądarki po prawej.

Własne IDE do pisania stron internetowych z podglądem zmian.

II. Obsługa wejścia / wyjścia


Mało optymalne, ale skuteczne wczytywanie małych plików:


import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;

class IOHelper {

    /**
      * Wczytuje zawartość pliku
      * @param filePath Nazwa / Ścieżka do pliku
      * @return Zawartość pliku
      * @throws IOException Gdy nie można dostać się do pliku
      */
    public static String readFromFile(String filePath) throws IOException {
        return new String(Files.readAllBytes(Paths.get(filePath)), StandardCharsets.UTF_8);
    }

    /**
      * Zapisuje do pliku
      * @param filePath Nazwa / Ścieżka do pliku
      * @param content Zawartość do zapisania
      * @throws IOException Gdy nie można zapisać pliku
      */
    public static void writeToFile(String filePath, String content) throws IOException  {
        Files.write(Paths.get(filePath), content.getBytes(), StandardOpenOption.CREATE);
    }

}
Zadanie 3

Uzupełnij ciało metody saveToFile().

Należy umieścić zawartość pola tekstowego do pliku o nazwie "website.html".

Zadanie 4

Uzupełnij ciało metody loadFromFile().

Procedura odwrotna do tej z zadania 3.

Szczypta html do zabawy


<!DOCTYPE HTML>
<html>

<head>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bulma/0.7.1/css/bulma.css">
</head>

<body class="container content">

    <h1>mój nagłowek</h1>

    <ul>
        <li>element listy 0</li>
        <li>element listy 1</li>
        <li>element listy 2</li>
        <li>element listy 3</li>
    

    <a href="https://pja.edu.pl">Link do strony PJATK</a>

</body>
</html>