package evaluator.hyperscoutexperiment;


import java.awt.Dimension;

import javax.swing.Box;

import scone.Plugin;
import evaluator.util.ContentGeneratorInterface;
import evaluator.util.EvaluatorFrame;
import evaluator.util.ExperimentController;
import evaluator.util.NextButton;
import evaluator.util.ShortTextEntryBox;
import evaluator.util.StartButton;
import evaluator.util.StopButton;
import evaluator.util.TaskGroup;
import evaluator.util.TaskPanel;
import evaluator.util.TextEntryBox;


/**
 * <p>Title: HyperScoutEvaluatorContentGenerator</p>
 * <p>Description: A tool to evaluate the fabolous HyperScout :-)</p>
 * <p>Copyright: Copyright (C) 2003</p>
 * <p>Company: VSIS, University of Hamburg, Germany</p>
 * @author Harald Weinreich
 * @version 0.1
 */

public class HyperScoutEvaluatorContentGenerator implements ContentGeneratorInterface {
    private EvaluatorFrame _evaluatorFrame;
    private Plugin         _plugin;

    public HyperScoutEvaluatorContentGenerator() {
        _evaluatorFrame = null;
        _plugin = null;
    }
  
    public void init(EvaluatorFrame evaluatorFrame, Plugin plugin) {
        _evaluatorFrame = evaluatorFrame;
        _plugin = plugin;
    }

    public void generate(ExperimentController experiment) {
        long subjectNumber = experiment.getSubjectNumber();
        TaskPanel panel;
        TaskGroup taskGroup;

        StartButton  start, start2, start3;
        StopButton   stop; 
        NextButton   next;
        TextEntryBox teb;

        // ===================================================================================

        taskGroup = new TaskGroup();

        // Einleitung + Fragen zur Person-----------------------------------------------------------------------------------

        panel = new TaskPanel();

        panel.addBoldText("<html><font size=+2>Willkommen bei unserer Studie zu <i><font color=#700000>HyperScout");
        panel.addText(" ");
        panel.addText("In dieser Studie soll der Prototyp eines Systems namens ,,HyperScout´´ erprobt werden. Sie wird ca. 50 Minuten dauern.");
        panel.addText("    ");
        panel.addBoldText("Was macht HyperScout?");
        panel.addText("HyperScout erweitert den Web-Browser, indem es in Popup-Fenstern zu den Verweisen auf einer Seite zusätzliche ");
        panel.addText("Informationen anzeigt. Diese Informationen beziehen sich zum einen auf Eigenschaften des Links, zum anderen auf ");
        panel.addText("das Dokument, auf das der Link verweist.");
        panel.addText(" ");
        panel.addText("Um diesen Prototypen zu testen, sollst du auf unterschiedlichen Web-Seiten ,,surfen'' und dabei nach bestimmten Informationen suchen.");
        // panel.addText("Dabei wird dir HyperScout Zusatzinformationen in Popups zu den einzelnen anzeigen.");
        // panel.addText("Bitte sieh Dir das Popup an, das erscheint wenn Du die Maus über einen Link hälst, bevor einen interessanten Link auszählst. Kommentiere dabei");
        // panel.addText("bitte all Deine Aktionen und erläutere, welche Informationen das Popup Dir gibt und in wie weit es die Entscheidung beeinflusst hat, dem Link");
        // panel.addText("zu folgen.");
        panel.addItem(Box.createRigidArea(new Dimension(0, 50)));
        panel.addBoldText("Zur Person");
        panel.addText(" ");
        panel.addText("Erst möchten wir Dir einige persönliche Fragen stellen, damit wir deinen Umgang mit dem Tool besser einordnen können.");
        panel.addText(" ");
        panel.addItem(new evaluator.util.OptionsBox("Q_JOB", "Du bist:", new String[] {"Student/in", "Mitarbeiter/in einer Hochschule ", "Sonstiges"}));
        panel.addItem(new ShortTextEntryBox("Q_JOBSEM", "Für Studierende: In welchem Fachsemester bist du?", 60, true));
        panel.addItem(new ShortTextEntryBox("Q_JOBSONST", "Falls \"Sonstiges\": Wie ist dein beruflicher Status?   ", 500, true));
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addItem(new TextEntryBox("Q_ALTER", "Wie alt bist du?", 60, true));
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addText("");
        panel.addItem(new TextEntryBox("Q_FACHGEB", "Welches ist dein primäres Fachgebiet?", 1300, true));
        panel.addText(" ");
        panel.addText(" ");
        panel.addItem(Box.createVerticalGlue());
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addItem(new evaluator.util.NextButton(experiment));
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        taskGroup.addTask(panel);

        // Fragen zur Benutzung des Webs ----------------------------------------------------------------------------
        panel = new TaskPanel();

        panel.addBoldText("Deine Erfahrungen mit dem World Wide Web");
        panel.addItem(Box.createRigidArea(new Dimension(0, 40)));
        panel.addText("Um dein Verhalten besser interpretieren zu können, würden wir gerne noch einige Fragen zu deinem Umgang mit dem Web stellen.");
        panel.addText("");
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addText("Wie oft benutzt du das Web?");
        panel.addItem(new evaluator.util.OptionsBox("Q_HÄUFIG", "Häufigkeit:", new String[] {"täglich", "mehrmals die Woche", "einige Male im Monat", "seltener"}));
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addText("");
        panel.addText("Seit wann benutzt du das Web?");
        panel.addItem(new evaluator.util.OptionsBox("Q_SEITWANN", "Seit:", new String[] {"unter 6 Monaten", "6 bis 12 Monaten", "1 bis 2 Jahren", "seit über 5 Jahren"}));
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addText("");
        panel.addText("Als wie erfahren im Umgang mit dem Web würdest du Dich einstufen?");
        panel.addItem(new evaluator.util.OptionsBox("Q_ERFAHREN", "Ich bin:", new String[] {"sehr erfahren", "erfahren", "eher unerfahren", "unerfahren", "weiss nicht"}));
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addText("");
        panel.addItem(Box.createVerticalGlue());
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addItem(new evaluator.util.NextButton(experiment));
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        taskGroup.addTask(panel);
    
        // Beispiel -----------------------------------------------------------------------------------

        panel = new TaskPanel();

        panel.addText("<html><H1><font color=#000000>Los geht's!");
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addBoldText("Vorgehen");
        panel.addText("1. Du bekommst fünf Aufgaben gestellt. Jede Aufgabe wird mit dem Start-Knopf (unten) gestartet. Daraufhin erscheint der Webbrowser und ");
        panel.addText("    es wird eine Web-Seite geladen. Von dieser Seite aus soll nach einer Reihe von Informationen gesucht werden. Dabei sollst du deine ");
        panel.addText("    Schritte laut denkend kommentieren. Schau dir die Verweise an und beachte die Informationen, die in den Popups erscheinen, wenn du");
        panel.addText("    die Maus über den Links hältst.");
        panel.addText(" ");
        panel.addText("2. Wenn du die Aufgabe beendet hast, wechsle zurück zu diesem Tool. Dafür klicke bitte am unteren Bildschirmrand auf das ");
        panel.addText("    blau-gelbe \"E\" (E wie Evaluator).");
        panel.addText("    Achtung: Bitte schließe den Web-Browser nicht!", evaluator.util.UIToolbox.ITALICFONT);
        panel.addText(" ");
        panel.addText("3. Zur nächsten Seite kommst du mit dem ,,Weiter''-Knopf.");
        panel.addItem(Box.createRigidArea(new Dimension(0, 40)));
        panel.addText("<html><H2><font color=#000000>Zur Übung eine Einführungsaufgabe");
        panel.addText(" ");
        panel.addBoldText("Szenario");
        panel.addText("Du möchtest mehr zu der ,,Internet-Programmiersprache'' Java erfahren. du hast gehört, dass die Gruppe VSIS bei der Lehrveranstaltung P3");
        panel.addText("entsprechendes Wissen vermittelt hat und suchst von dort aus nach Downloads und Literatur.");

        panel.addItem(Box.createVerticalGlue());
        panel.addBoldText("Suche nach Literatur und Downloads zur Sprache Java.");
        panel.addText(" ");
        start = new StartButton(experiment,
                "http://vsis-www.informatik.uni-hamburg.de/teaching/ws-01.02/");
        next = new NextButton(experiment);
        // start.setComponentToEnable(next);
        panel.addItem(start);
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addItem(next);
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        taskGroup.addTask(panel);
   
        experiment.addTaskGroup(taskGroup);
    
        // Aufgabe 1===================================================================================

        taskGroup = new TaskGroup();
    
        panel = new TaskPanel();

        panel.addText("<html><h1><font color=#000000>Erste Aufgabe");
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addBoldText("Szenario");
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addText("Für die Webseiten der Firma in der du jobbst soll demnächst eine Suchmaschine angeboten werden. du hast die Aufgabe, Dich über entsprechende");
        panel.addText(" Systeme zu informieren. Da du gehört hast, dass VSIS ein solches kostenloses Suchsystem verwendet, suchst du auf deren Seiten nach mehr");
        panel.addText(" Informationen.");
        panel.addItem(Box.createVerticalGlue());
        panel.addBoldText("1. Welches Suchsystem wird von VSIS eingesetzt?");
        panel.addItem(Box.createRigidArea(new Dimension(0, 10)));
        start = new StartButton(experiment, "http://vsis-www.informatik.uni-hamburg.de/");
        panel.addItem(start);

        panel.addItem(Box.createRigidArea(new Dimension(0, 40)));

        panel.addBoldText("2. Wo kann man die Software downloaden?");
        panel.addItem(Box.createRigidArea(new Dimension(0, 10)));
        start2 = new StartButton(experiment, "front");
        panel.addItem(start2);

        panel.addItem(Box.createRigidArea(new Dimension(0, 40)));

        panel.addBoldText("3. Wer ist die Ansprechperson bei VSIS für weitere Fragen zum Suchsystem?");
        panel.addItem(Box.createRigidArea(new Dimension(0, 10)));
        start3 = new StartButton(experiment, "front");
        panel.addItem(start3);

        start.setComponentToEnable(start2);
        start2.setComponentToEnable(start3);

        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addItem(new evaluator.util.NextButton(experiment));
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));

        taskGroup.addTask(panel);
    
        experiment.addTaskGroup(taskGroup);

        // Aufgabe 2: LEM==============================================================================

        taskGroup = new TaskGroup();
    
        panel = new TaskPanel();

        panel.addBoldText("<html><h1><font color=#000000>Zweite Aufgabe");
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addBoldText("Szenario");
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addText("Du hast gehört, dass es bis vor kurzem am LEM interessante Lehrveranstaltung zur Medieninformatik und zu Web-Technologien gab.");
        panel.addText("Du möchtest mehr zu diesen Themen erfahren und guckst dir die Seiten des LEM an.");
        panel.addItem(Box.createVerticalGlue());

        panel.addBoldText("1. Suche bitte von der Homepage des Fachbereiches Informatik aus nach der Einrichtung LEM.");
        panel.addItem(Box.createRigidArea(new Dimension(0, 10)));
        start = new StartButton(experiment, "http://www.informatik.uni-hamburg.de/");
        panel.addItem(start);

        panel.addItem(Box.createRigidArea(new Dimension(0, 40)));

        panel.addBoldText("2. Welche Lehrveranstatlungen wurden in 2001 im LEM angeboten?");
        panel.addItem(Box.createRigidArea(new Dimension(0, 10)));
        start2 = new StartButton(experiment, "http://www.hfbk-hamburg.de/lem/");
        panel.addItem(start2);

        panel.addItem(Box.createRigidArea(new Dimension(0, 40)));

        panel.addBoldText("3. Finde von den LEM-Seiten aus Literatur zum Themenbereich ,,Navigation im Web'' und lade eine der Dateien herunter.");
        panel.addItem(Box.createRigidArea(new Dimension(0, 10)));
        start3 = new StartButton(experiment, "http://www.hfbk-hamburg.de/lem/");
        panel.addItem(start3);

        start.setComponentToEnable(start2);
        start2.setComponentToEnable(start3);

        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addItem(new evaluator.util.NextButton(experiment));
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));

        taskGroup.addTask(panel);
    
        experiment.addTaskGroup(taskGroup);

        // ===================================================================================

        taskGroup = new TaskGroup();
    
        panel = new TaskPanel();

        panel.addBoldText("<html><h1><font color=#000000>Dritte Aufgabe");
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addBoldText("Szenario");
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addText("Demnächst möchtest du eine Deutschlandreise machen und dir dabei auch das Deutsche Museum in München ansehen. Um deinen Aufenthalt");
        panel.addText("besser planen zu können, schaust du dir die Seiten des Museums an.");
        panel.addItem(Box.createVerticalGlue());

        panel.addBoldText("1. Welche aktuellen besonderen Ausstellungen gibt es im Deutschen Museum?");
        panel.addItem(Box.createRigidArea(new Dimension(0, 10)));
        start = new StartButton(experiment, "http://www.deutsches-museum.de/");
        panel.addItem(start);

        panel.addItem(Box.createRigidArea(new Dimension(0, 40)));

        panel.addBoldText("2. Suche nach Informationen zu Dampfmaschinen im Museum.");
        panel.addItem(Box.createRigidArea(new Dimension(0, 10)));
        start2 = new StartButton(experiment, "front");
        panel.addItem(start2);

        panel.addItem(Box.createRigidArea(new Dimension(0, 40)));

        panel.addBoldText("3. Wo kann man die CD-ROM des Deuschen Museums erwerben?");
        panel.addItem(Box.createRigidArea(new Dimension(0, 10)));
        start3 = new StartButton(experiment, "front");
        panel.addItem(start3);

        start.setComponentToEnable(start2);
        start2.setComponentToEnable(start3);

        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addItem(new evaluator.util.NextButton(experiment));
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));

        taskGroup.addTask(panel);
    
        experiment.addTaskGroup(taskGroup);

        // ===================================================================================

        taskGroup = new TaskGroup();
    
        panel = new TaskPanel();

        panel.addBoldText("<html><h1><font color=#000000>Vierte Aufgabe");
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addBoldText("Szenario");
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addText("Du möchtest mit Freunden nach Karlsruhe fahren. Dabei wollt Ihr Euch eventuell auch den Zoo ansehen.");
        panel.addText("");
        panel.addItem(Box.createVerticalGlue());

        panel.addBoldText("1. Wann hat der Zoo geöffnet?");
        panel.addItem(Box.createRigidArea(new Dimension(0, 10)));
        start = new StartButton(experiment, "http://www.karlsruhe.de/Zoo/");
        panel.addItem(start);

        panel.addItem(Box.createRigidArea(new Dimension(0, 40)));

        panel.addBoldText("2. Wie und mit wem kann man für mehr Infos in Kontakt treten?");
        panel.addItem(Box.createRigidArea(new Dimension(0, 10)));
        start2 = new StartButton(experiment, "front");
        panel.addItem(start2);

        panel.addItem(Box.createRigidArea(new Dimension(0, 40)));

        panel.addBoldText("3. Welche Tiere findet man in dem Zoo?");
        panel.addItem(Box.createRigidArea(new Dimension(0, 10)));
        start3 = new StartButton(experiment, "front");
        panel.addItem(start3);

        start.setComponentToEnable(start2);
        start2.setComponentToEnable(start3);

        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addItem(new evaluator.util.NextButton(experiment));
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));

        taskGroup.addTask(panel);
    
        experiment.addTaskGroup(taskGroup);
    
        // ===================================================================================

        taskGroup = new TaskGroup();
    
        panel = new TaskPanel();

        panel.addBoldText("<html><h1><font color=#000000>Fünfte Aufgabe");
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addBoldText("Szenario");
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addText("Der Zoo in Köln käme für einen Besuch ebenfalls in Frage. Du schaust dir im Web an, was der Zoo zu bieten hat.");
        panel.addText("");
        panel.addItem(Box.createVerticalGlue());

        panel.addBoldText("1. Wann hat der Zoo göffnet?");
        panel.addItem(Box.createRigidArea(new Dimension(0, 10)));
        start = new StartButton(experiment, "http://www.zoo-koeln.de/");
        panel.addItem(start);

        panel.addItem(Box.createRigidArea(new Dimension(0, 40)));

        panel.addBoldText("2. Welche besonderen Tiere hat der Zoo?");
        panel.addItem(Box.createRigidArea(new Dimension(0, 10)));
        start3 = new StartButton(experiment, "front");
        panel.addItem(start3);

        start.setComponentToEnable(start2);
        start2.setComponentToEnable(start3);

        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addItem(new evaluator.util.NextButton(experiment));
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));

        taskGroup.addTask(panel);
    
        experiment.addTaskGroup(taskGroup);

        // Letzte Aufgabe===================================================================================

        taskGroup = new TaskGroup();
    
        panel = new TaskPanel();

        panel.addText("<html><h1><font color=#000000>Letzte Aufgabe");
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addBoldText("Szenario");
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addText("Du interessierst Dich für Neuigkeiten aus der Welt der EDV. Der Heise Newsticker ist dafür ein renomierter Anlaufpunkt");
        panel.addText("Schau Die die den Überblick der aktuellsten News an und bewerte, welche Dich davon interessieren. Wähle die interessantesten");
        panel.addText("fünf aus und schau dir die Links in den News an. ");
        panel.addText("");
        panel.addItem(Box.createVerticalGlue());

        panel.addBoldText("Falls du den heise Newsticker nicht kürzlich gelesen hast, suche hier nach interessanten Informationen.");
        panel.addItem(Box.createRigidArea(new Dimension(0, 10)));
        start = new StartButton(experiment, "http://www.heise.de/newsticker/");
        panel.addItem(start);

        panel.addText("");
        panel.addBoldText("Falls du die aktuellen News schon kennst, nimm bitte diesen Start-Knopf.");
        panel.addItem(Box.createRigidArea(new Dimension(0, 10)));
        start = new StartButton(experiment, "http://www.heise.de/fastbin/nt.arcview?l=de&d=2000-39");
        panel.addItem(start);

        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        panel.addItem(new evaluator.util.NextButton(experiment));
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));

        taskGroup.addTask(panel);
    
        experiment.addTaskGroup(taskGroup);
        // ===================================================================================


        // http://www.karlsruhe.de/Zoo/ Informationen über den Zoo in Karlsruhe: Wann hat der Zoo geöffnet? 
        // Wie kann man in Kontakt treten für weitere Fragen?


        // http://www.zoo-augsburg.de/ Gleiche Fragen...

        // http://www.zoo-koeln.de/ Infos über Öffnungszeiten, Anfahrt und Tiere.



        // ===================================================================================

        taskGroup = new TaskGroup();

        // -----------------------------------------------------------------------------------
        panel = new TaskPanel();

        panel.addBoldText("Das war alles! Vielen Dank für die Teilnahme an unserem Experiment!");
        panel.addText(" ");
        panel.addText(" ");
        panel.addText("Wenn du wissen möchtest, was aus deiner Teilnahme für Ergebnisse erzeugt wurden,");
        panel.addText("dann trage deine Email hier ein, wir verschicken dann unsere Resultate.");
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        teb = new TextEntryBox("Q_EMAIL", "Platz für deine Email-Adresse");
        teb.setEnabled(true);
        panel.addItem(teb);
        panel.addItem(Box.createVerticalGlue());
        panel.addItem(new evaluator.util.QuitButton(experiment, "Fertig!"));
        panel.addItem(Box.createRigidArea(new Dimension(0, 20)));
        taskGroup.addTask(panel);

        taskGroup.addTask(panel);
    
        experiment.addTaskGroup(taskGroup);

    }
}
