Package GUI

Source Code of GUI.HelpDialog

package GUI;

import java.awt.BorderLayout;
import java.awt.Cursor;
import java.awt.Desktop;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;

import codeGen.MainCodeGen;

import Start.Start;

public class HelpDialog extends JDialog{

  private static final long serialVersionUID = 1L;

  public HelpDialog() {
    setTitle("About");
    setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/resources/logo.png")));
    setModal(true);   
    setPreferredSize(new Dimension(600,600));
    setResizable(false);

    setLayout(new FlowLayout(FlowLayout.CENTER));
   
    createText();
   
    pack();
    setLocationRelativeTo(getParent());
    setVisible(true);
  }
 
  private void createText() {
    JLabel icon = new JLabel(new ImageIcon(getClass().getClassLoader().getResource("resources/logo_help.png")));
    icon.setPreferredSize(new Dimension(600,212));
   
    JLabel text1 = new JLabel("<html>IDE for PseuCo, a programming language for concurrent programming. It's syntax is a kind of"
        +" stripped-down Java with some inspiration coming from Google Go.<br>"
        +"The IDE was created for the\"Nebenl��ufige Programmierung\"-lecture held by Holger"
        +" Hermanns and Christian Eisentraut at Saarland University in summer 2013.<br>"
        +"If you have any problems concerning the compiler please contact:</html>");
    text1.setPreferredSize(new Dimension(401,110));
    JLabel mail1 = getMailLabel("Lisa Detzler", "s9lidetz@stud.uni-saarland.de");
    mail1.setPreferredSize(new Dimension(401,20));
    JLabel text2 = new JLabel("Any problems with the GUI should be reported to:");
    text2.setPreferredSize(new Dimension(401,20));
    JLabel mail2 = getMailLabel("Markus Bauer", "s9mkbaue@stud.uni-saarland.de");
    mail2.setPreferredSize(new Dimension(401,20));
    JLabel mail3 = getMailLabel("Marc Jose", "s9majose@stud.uni-saarland.de");
    mail3.setPreferredSize(new Dimension(401,20));
    JLabel text3 = new JLabel("Please include your sourcecode and error-message in the email.");
    text3.setPreferredSize(new Dimension(401,20));
    add(icon);
    add(text1);
    add(mail1);
    add(text2);
    add(mail2);
    add(mail3);
    add(text3);
   
    JPanel placeHolder = new JPanel();
    placeHolder.setPreferredSize(new Dimension(600,20));
    add(placeHolder);
   
    JButton openReadme = new JButton("Readme");
    openReadme.addActionListener(new ActionListener() {   
      @Override
      public void actionPerformed(ActionEvent e) {
        InputStream inputStream = GUI.class.getClass().getResourceAsStream("/resources/README.pdf");
        FileOutputStream outPutStream = null;
        try {
          File tempFile = File.createTempFile("help", ".pdf");
          outPutStream = new FileOutputStream(tempFile);
          try {
                byte[] buffer = new byte[ 0xFFFF ];
                for (int len; (len = inputStream.read(buffer)) != -1;)
                  outPutStream.write( buffer, 0, len );
              } catch( IOException e1 ) {
                e1.printStackTrace();
              }
              finally {
                if ( inputStream != null )
                  try { inputStream.close(); } catch ( IOException e1 ) { if (Start.debug) e1.printStackTrace(); }
                if ( outPutStream != null )
                  try { outPutStream.close(); } catch ( IOException e1 ) { if (Start.debug) e1.printStackTrace(); }
              }
          Desktop.getDesktop().open(tempFile);
        } catch (IOException e1) {}
        finally {
          try {
            outPutStream.close();
          } catch (Exception ignore) {}
        }
      }
    });
    add(openReadme);
   
    JPanel info = new JPanel();
    info.setLayout(new BorderLayout());
    info.add(new JLabel("IDE-Version: "+Start.version+"            Compiler-Version: "+MainCodeGen.version), BorderLayout.SOUTH);
    info.setPreferredSize(new Dimension(570,50));
    add(info);
  }
 
  private JLabel getMailLabel(String name, final String address) {
    JLabel mail = new JLabel("<html><font size=4><a href=#>" + name + " (" + address + ")</a></font></html>");
    mail.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    mail.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            try {
                Desktop.getDesktop().mail(new URI("mailto:" + address + "?subject=[PseuCoCompilerErrorReport]"));
            } catch (URISyntaxException | IOException ex) {
            }
        }
    });
    return mail;
  }
 
}
TOP

Related Classes of GUI.HelpDialog

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.