// Oefening FileTest, D&D 5, blz 842,..

import java.awt.*;
import java.awt.event.*;
import java.io.*;
import javax.swing.*;

public class H17_FileTest extends JFrame implements ActionListener {
	
	private JTextField enterField;
	private JTextArea outputArea;
	
	public H17_FileTest () {
		
		super ("Oefenen klasse File");
		
		enterField = new JTextField ("Geef de bestands of foldernaam hier in");
		enterField.addActionListener(this);
		outputArea = new JTextArea();
		
		ScrollPane scrollPane = new ScrollPane();
		scrollPane.add(outputArea);
		
		Container container = getContentPane();
		container.add(enterField, BorderLayout.NORTH);
		container.add(scrollPane, BorderLayout.CENTER);
		
		setSize(400,400);
		setVisible(true);
		
	}
	
	public void actionPerformed(ActionEvent actionEvent) {
		
		File name = new File(actionEvent.getActionCommand());
		
		if (name.exists()) {
			
			outputArea.setText(name.getName() + " exists\n" + 
				(name.isFile() ? "is a file\n" : "is not a file\n") + 
				(name.isDirectory() ? "is a directory\n" : "is not a directory\n") +
				(name.isAbsolute() ? "is absolute path\n" : "is not absolute path\n") +
				"Last modified: " + name.lastModified() + 
				"\nLength: " + name.length() +
				"\nPath: " + name.getPath() +
				"\nAbsolute path: " + name.getAbsolutePath() +
				"\nParent: " + name.getParent());
			
			if (name.isFile()) {
				
				try {
					BufferedReader input = new BufferedReader( new FileReader(name));
					StringBuffer buffer = new StringBuffer();
					String text;
					outputArea.append("\n\n");
					
					while((text = input.readLine()) != null)
						buffer.append(text + "\n");
					
					outputArea.append(buffer.toString());
				}
				
				catch (IOException ioExeption) {
					JOptionPane.showMessageDialog(this,"FILE ERROR","FILE ERROR", JOptionPane.ERROR_MESSAGE);
				}
				
			}
			
			else if (name.isDirectory()) {
				String directory[] = name.list();
				
				outputArea.append("\n\nDe map bevat:\n");
				
				for (int i = 0; i < directory.length; i++)
					outputArea.append (directory[i] + "\n");
			}
			
		} else {
			
			JOptionPane.showMessageDialog(this, "\"" +actionEvent.getActionCommand() + "\" bestaat niet", "ERROR", JOptionPane.ERROR_MESSAGE);
						
		}
		
	}

	public static void main (String args[]) {  
		
		H17_FileTest programma = new H17_FileTest();
		programma.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
	}
	
}