/* Autor:           Dipl.-Inf., Dipl.-Ing. (FH) Michael Wilhelm
   Firma:           HS Harz, FB AI
   Version:         1.1
   Ersterstellung:  07.06.2006
   Letzte Änderung: 10.11.2010
   Ruft ein Programm mittels ProcessBuilder auf
   optional kann auch gewartet werden
   gegegenueber Runtime.getRuntime().exec kann man hier auch ein Startverzeichnis angeben
*/

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



public class Run02 extends JFrame  {
  JToolBar toolBar = new JToolBar();
  JButton Bn1 = new JButton("Start Notepad");
  JButton Bn2 = new JButton("Start Notepad mit Text");
  JButton Bn3 = new JButton("Start Notepad mit Text, (StartDir+warten)");

   String[] items;
   JList jliste;

  public Run02() {
    this.setTitle("Starten von Notepad.exe");
    this.setLocation(100,100);
    this.setSize(600,300);
    setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
    setGUI();
  }

  public void setGUI() {
    Bn1.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        Bn1_click();
      }
    });
    toolBar.add(Bn1);
    toolBar.addSeparator( new Dimension(20,5) );


    Bn2.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        Bn2_click();
      }
    });
    toolBar.add(Bn2);

    Bn3.addActionListener(new java.awt.event.ActionListener() {
      public void actionPerformed(ActionEvent e) {
        Bn3_click();
      }
    });
    toolBar.add(Bn3);

    this.getContentPane().add(toolBar, BorderLayout.NORTH);

    // Array für die JList
    items = new String[4];
    items[0] = "C:\\";              // funktioniert
    items[1] = "C:\\Daten";         // funktioniert nicht mit Notepad
    items[2] = "C:\\programme";
    items[3] = "d:\\";             // funktioniert

    jliste = new JList(items);
    JScrollPane sc = new JScrollPane(jliste);
    this.getContentPane().add(sc, BorderLayout.CENTER);
    jliste.setFont( new Font("Arial", Font.BOLD,18)  );

  }


  private void Bn1_click() {
    try {
      ProcessBuilder proc = new ProcessBuilder("notepad.exe");
      proc.start();
    }
    catch (IOException e1) {
    }
  }  // Bn1


  private void Bn2_click() {
    try {
      ProcessBuilder proc = new ProcessBuilder("notepad.exe","Run02.java");
      proc.start();
    }
    catch (IOException e1) {
    }
  }  // Bn2

  private void Bn3_click() {
    String StartDir = (String) System.getProperties().get("user.dir") ;
    try {      
      ProcessBuilder procB = new ProcessBuilder("notepad.exe",StartDir+"\\Run02.java");
      int i=jliste.getSelectedIndex();
      if (i>=0) {
         procB.directory( new File(items[i]) );  // Startverzeichnis
      }
      Process p =procB.start();
      p.waitFor();
      System.out.println("Ende von Notepad");
    }
    catch (IOException e1) {
    }
    catch (InterruptedException e1) {
    }
  }  // Bn3

  public static void main(String[] args) {
    Run02 frame = new Run02();
    frame.setVisible(true);
  }

} // Run02


