package javacodebook.client.start_access;

import java.awt.*;
import java.awt.geom.*;
import java.awt.print.*;
import java.io.*;
import javax.swing.*;

/**
 * Die Klasse FileAccessWebStart verdeutlicht den Zugriff
 * einer WebStart-Anwendung auf lokale Resourcen.
 * @author  Mark Donnermeyer
 */
public class FileAccessWebStart extends javax.swing.JFrame {

    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JMenuItem jMenuItem2;
    private javax.swing.JEditorPane textEditorPane;
    private javax.swing.JFileChooser fileChooser;
    private javax.swing.JMenuItem jMenuItem1;
    private javax.swing.JMenu jMenu1;
    private javax.swing.JMenuBar jMenuBar1;
    private String fileName;

    /**
     * Der Konstruktor ruft die Methode initComponents() auf und gibt
     * eine DefaultCloseOperation an.
     */
    public FileAccessWebStart() {
        initComponents();
        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
    }

    /**
     * Hier werden die Komponenten auf dem Frame angeordnet. Das Menü wird
     * aufgebaut und Aktionen für die Menüpunkte angegeben.
     */
    private void initComponents() {
        fileChooser = new javax.swing.JFileChooser();
        jScrollPane1 = new javax.swing.JScrollPane();
        textEditorPane = new javax.swing.JEditorPane();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu1 = new javax.swing.JMenu();
        jMenuItem1 = new javax.swing.JMenuItem();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        addWindowListener(new java.awt.event.WindowAdapter() {
            public void windowClosing(java.awt.event.WindowEvent evt) {
                exitForm(evt);
            }
        });

        textEditorPane.setPreferredSize(new java.awt.Dimension(640, 480));
        jScrollPane1.setViewportView(textEditorPane);

        getContentPane().add(jScrollPane1, java.awt.BorderLayout.CENTER);

        jMenu1.setText("Datei");
        jMenuItem1.setText("\u00d6ffnen");
        jMenuItem1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                showOpenFileDialog(evt);
            }
        });

        jMenu1.add(jMenuItem1);
        jMenuBar1.add(jMenu1);
        setJMenuBar(jMenuBar1);
        setSize(400,400);
    }

    /**
     * Nach Auswahl einer Datei per Dateidialog wird diese von der JEditorPane
     * geladen.
     */
    private void showOpenFileDialog(java.awt.event.ActionEvent evt) {
        int pressedButton = fileChooser.showOpenDialog(this);
        if(pressedButton == JFileChooser.APPROVE_OPTION) {
            try {
                File f = fileChooser.getSelectedFile();
                this.fileName = f.getName();
                BufferedInputStream in = new BufferedInputStream(
                    new FileInputStream(f));
                textEditorPane.read(in, null);
                in.close();
            } catch(IOException e) {
                e.printStackTrace(System.out);
            }

        }
    }

    /** Beenden */
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }

    public static void main(String args[]) {
        new FileAccessWebStart().show();
    }
}
