/*
   Copyright (C) 2013-2020 Nicola L.C. Talbot
   www.dickimaw-books.com

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
*/
package com.dickimawbooks.makeglossariesgui;

import java.awt.*;
import java.io.*;
import java.net.*;

import javax.swing.*;
import javax.swing.text.*;

public class ViewFile extends JFrame
{
  public ViewFile(URL source, Font font, MakeGlossariesGUI application)
     throws IOException,BadLocationException
  {
     super(source.getFile());

     app = application;

     setIconImage(app.getIconImage());

     url = source;

     area = new JTextPane();

     StyledDocument doc = area.getStyledDocument();

     Style def = StyleContext.getDefaultStyleContext()
        .getStyle(StyleContext.DEFAULT_STYLE);

     doc.addStyle("regular", def);

     area.setEditable(false);

     area.setFont(font);

     scrollPane = new JScrollPane(area);

     getContentPane().add(scrollPane, "Center");

     scrollPane.setPreferredSize(new Dimension(500, 400));

     pack();

     setLocationRelativeTo(null);

     reload();
  }

  public void reload()
     throws IOException,BadLocationException
  {
     BufferedReader reader = null;

     StringBuilder content = new StringBuilder();

     try
     {
        reader = new BufferedReader(new InputStreamReader(
          url.openStream(), app.getEncoding()));

        String line;

        while ((line = reader.readLine()) != null)
        {
           content.append(String.format("%s%n", line));
        }
     }
     finally
     {
        if (reader != null)
        {
           reader.close();
        }
     }

     StyledDocument doc = area.getStyledDocument();
     doc.insertString(0, content.toString(), doc.getStyle("regular"));

     SwingUtilities.invokeLater(new Runnable()
     {
        public void run()
        {
           area.setCaretPosition(0);
        }
     }
     );
  }

  private URL url;

  private JTextPane area;

  private JScrollPane scrollPane;

  private MakeGlossariesGUI app;
}