package at.jinnai;
import java.awt.AWTException;
import java.awt.Color;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.HeadlessException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.FlavorEvent;
import java.awt.datatransfer.FlavorListener;
import java.awt.datatransfer.StringSelection;
import java.awt.datatransfer.Transferable;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowEvent;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Properties;
import java.util.concurrent.TimeUnit;
import java.util.regex.Pattern;
import javax.swing.InputVerifier;
import javax.swing.JButton;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JProgressBar;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.Timer;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
public class Fenster extends javax.swing.JFrame implements ActionListener {
private static final long serialVersionUID = -2591364083253132185L;
private Toolkit t;
private int x = 0, y = 0, width = 300, height = 300;
private Toolkit T;
private int b = 0, h = 0, br = 300, ho = 100;
Container cp = getContentPane();
String Feld1;
String Feld2;
String Feld3;
String Zeit;
final static int intervall = 250;
int inter;
Timer timer;
JProgressBar prg;
private JMenuBar bar1;
private JMenu bar1_menu1;
private JMenuItem bar1_menu1_menuitem1;
private JMenuItem bar1_menu1_menuitem2;
private JTextField feld1 = new JTextField();
private JTextField feld2 = new JTextField();
private JTextField feld3 = new JTextField();
private JTextField zeit = new JTextField();
private JLabel balken = new JLabel("Erstelle Ordner");
private JLabel label1 = new JLabel("Feld 1");
private JLabel label2 = new JLabel("Feld 2");
private JLabel label3 = new JLabel("Feld 3");
private JLabel lzeit = new JLabel("Verzögerung :");
private JButton ausfuehren = new JButton("Ausführen");
private JButton speichern = new JButton("Speichern");
public Fenster() {
cp.setLayout(null);
t = Toolkit.getDefaultToolkit();
T = Toolkit.getDefaultToolkit();
Dimension d = t.getScreenSize();
x = (int) ((d.getWidth() - width) / 2);
y = (int) ((d.getHeight() - height) / 2);
setResizable(false);
setTitle("Writefox");
setBounds(x, y, width, height);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
feld1.setBounds(15, 40, 265, 20);
label1.setBounds(15, 20, 100, 20);
cp.add(feld1);
cp.add(label1);
feld2.setBounds(15, 80, 265, 20);
label2.setBounds(15, 60, 100, 20);
cp.add(feld2);
cp.add(label2);
feld3.setBounds(15, 120, 265, 20);
label3.setBounds(15, 100, 100, 20);
cp.add(feld3);
cp.add(label3);
zeit.setBounds(220, 5, 60, 20);
lzeit.setBounds(130, 5, 100, 20);
zeit.setText("2");
zeit.setInputVerifier(new InputVerifier() {
public boolean verify(JComponent input) {
String str = ((JTextField) input).getText();
if (str.equals(""))
return true;
return str.matches("[.0-9]*");
}
})
;
cp.add(zeit);
cp.add(lzeit);
ausfuehren.setBounds(15, 160, 150, 20);
cp.add(ausfuehren);
speichern.setBounds(15, 200, 150, 20);
cp.add(speichern);
// stop.setBounds(180, 160, 100, 60);
this.initComponents();
this.initListeners();
setVisible(true);
}
private void initComponents()
{
this.getContentPane().setLayout(null);
this.bar1 = new JMenuBar();
this.bar1_menu1 = new JMenu("Ansicht");
this.bar1_menu1_menuitem1 = new JMenuItem("Entwickler");
this.bar1_menu1_menuitem2 = new JMenuItem("Hilfe");
this.setJMenuBar(this.bar1);
this.bar1.add(this.bar1_menu1);
this.bar1_menu1.add(this.bar1_menu1_menuitem1);
this.bar1_menu1.add(this.bar1_menu1_menuitem2);
}
public class Dialog extends JDialog {
private static final long serialVersionUID = 1L;
public Dialog(Fenster f) {
super();
setTitle("Bedienung");
setResizable(true);
setModal(true);
Font font = new Font("Arial", Font.LAYOUT_LEFT_TO_RIGHT, 16);
JTextPane hilfe = new JTextPane();
hilfe.setText("XXX");
SimpleAttributeSet fetbu = new SimpleAttributeSet();
SimpleAttributeSet fett = new SimpleAttributeSet();
StyleConstants.setForeground(fetbu, Color.RED);
StyleConstants.setBold(fett, true);
StyleConstants.setUnderline(fett, true);
hilfe.setEditable(false);
hilfe.setFont(font);
hilfe.setBackground(getContentPane().getBackground());
add(hilfe);
pack();
}
}
private void initListeners() {
this.bar1_menu1_menuitem1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
JTextPane entwickler = new JTextPane();
entwickler.setText("Jakob R.\nJänner 2019\n");
entwickler.setEditable(false);
entwickler.setBackground(Color.lightGray);
JOptionPane.showMessageDialog(null, entwickler, "Der, welcher zuviel Zeit hatte",
JOptionPane.INFORMATION_MESSAGE);
}
});
this.bar1_menu1_menuitem2.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
Dialog dialog = new Dialog(Fenster.this);
dialog.setLocationRelativeTo(Fenster.this);
dialog.setVisible(true);
}
});
this.ausfuehren.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
try {
if (feld1.getText().isEmpty() || feld2.getText().isEmpty() || feld3.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Bitte alle Felder ausfüllen !", "Fehler",
JOptionPane.ERROR_MESSAGE);
} else if (zeit.getText().equals("") || !(Pattern.matches("^[0-9]+$", zeit.getText()))) {
JOptionPane.showMessageDialog(null, "Bitte gültigen Wert bei \"Verzögerung\" eintragen !",
"Fehler", JOptionPane.ERROR_MESSAGE);
}
else {
ausfuehren.setEnabled(false);
try {
String verzogerung = zeit.getText().toString();
long zeit = Long.parseLong(verzogerung);
TimeUnit.SECONDS.sleep(zeit);
try {
eingabe();
} catch (AWTException e1) {
e1.printStackTrace();
}
} catch (InterruptedException e1) {
e1.printStackTrace();
}
}
} catch (NumberFormatException ex)
{
JOptionPane.showMessageDialog(null, "Keine zulässige Zahl", "Fehler", JOptionPane.ERROR_MESSAGE);
}
}
});
this.speichern.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
try {
if (feld1.getText().isEmpty() || feld2.getText().isEmpty() || feld3.getText().isEmpty()) {
JOptionPane.showMessageDialog(null, "Bitte alle Felder ausfüllen !", "Fehler",
JOptionPane.ERROR_MESSAGE);
} else if (zeit.getText().equals("") || !(Pattern.matches("^[0-9]+$", zeit.getText()))) {
JOptionPane.showMessageDialog(null, "Bitte gültigen Wert bei \"Verzögerung\" eintragen !",
"Fehler", JOptionPane.ERROR_MESSAGE);
}
else {
try {
speichern();
} catch (IOException e1) {
e1.printStackTrace();
}
}
} catch (NumberFormatException ex)
{
JOptionPane.showMessageDialog(null, "Keine zulässige Zahl", "Fehler", JOptionPane.ERROR_MESSAGE);
}
}
});
}
public void actionPerformed(ActionEvent e) {
}
public void check() throws IOException {
String userHomeFolder = System.getProperty("user.home");
File writefoxordner = new File(userHomeFolder, "Writefox");
File writefox = new File(writefoxordner, "Daten.properties");
Properties props = new Properties();
if (!writefox.exists()) {
start();
} else {
InputStream in = new FileInputStream(writefox);
props.load(in);
feld1.setText(props.getProperty("F1"));
feld2.setText(props.getProperty("F2"));
feld3.setText(props.getProperty("F3"));
zeit.setText(props.getProperty("Z"));
}
}
public void start() throws IOException {
String userHomeFolder = System.getProperty("user.home");
File writefoxordner = new File(userHomeFolder, "Writefox");
File writefox = new File(writefoxordner, "Daten.properties");
Properties props = new Properties();
Feld1 = "TEXT";
Feld2 = "TEXT";
Feld3 = "TEXT";
Zeit = "2";
props.setProperty("F1", Feld1);
props.setProperty("F2", Feld2);
props.setProperty("F3", Feld3);
props.setProperty("Z", Zeit);
if (writefoxordner.exists()) {
OutputStream out = new FileOutputStream(writefox);
props.store(out, "Properties");
check();
} else {
JFrame frame = new JFrame();
frame.setLayout(new FlowLayout());
frame.add(balken);
frame.setResizable(false);
frame.setTitle("Bereite vor...");
Dimension d = T.getScreenSize();
b = (int) ((d.getWidth() - br) / 2);
h = (int) ((d.getHeight() - ho) / 2);
frame.setBounds(b, h, br, ho);
frame.setVisible(true);
inter = 0;
prg = new JProgressBar(0, 20);
prg.setValue(0);
prg.setStringPainted(true);
frame.add(prg);
writefoxordner.mkdir();
timer = new Timer(intervall, new ActionListener() {
public void actionPerformed(ActionEvent e) {
if (inter == 20) {
timer.stop();
try {
TimeUnit.SECONDS.sleep(1);
} catch (InterruptedException e1) {
e1.printStackTrace();
}
ausfuehren.setEnabled(true);
speichern.setEnabled(true);
frame.dispatchEvent(new WindowEvent(frame, WindowEvent.WINDOW_CLOSING));
try {
start();
} catch (IOException e1) {
e1.printStackTrace();
}
}
else {
ausfuehren.setEnabled(false);
speichern.setEnabled(false);
inter++;
prg.setValue(inter);
}
}
});
timer.start();
}
}
public void speichern() throws IOException {
String userHomeFolder = System.getProperty("user.home");
File writefoxordner = new File(userHomeFolder, "Writefox");
File writefox = new File(writefoxordner, "Daten.properties");
Properties props = new Properties();
try {
Feld1 = feld1.getText();
Feld2 = feld2.getText();
Feld3 = feld3.getText();
Zeit = zeit.getText();
} catch (NullPointerException e) {
Feld1 = "TEXT EINGEBEN";
Feld2 = "TEXT EINGEBEN";
Feld3 = "TEXT EINGEBEN";
Zeit = "2";
JOptionPane.showMessageDialog(null, "Es wurden nicht alle Felder ausgefüllt", "Fehler",
JOptionPane.ERROR_MESSAGE);
}
props.setProperty("F1", Feld1);
props.setProperty("F2", Feld2);
props.setProperty("F3", Feld3);
props.setProperty("Z", Zeit);
OutputStream out = new FileOutputStream(writefox);
props.store(out, "Properties");
}
public void eingabe() throws AWTException {
try {
Robot robot = new Robot();
String f1 = feld1.getText();
String f2 = feld2.getText();
String f3 = feld3.getText();
Clipboard c = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection selection, selection2;
selection = new StringSelection(f1);
selection2 = new StringSelection(f2);
c.setContents(selection, selection);
Transferable t = c.getContents(null);
if (t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
Object o = t.getTransferData(DataFlavor.stringFlavor);
String data = (String) t.getTransferData(DataFlavor.stringFlavor);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB);
System.out.println("Clipboard contents: " + data);
}
c.setContents(selection2, selection2);
t = c.getContents(null);
if (t.isDataFlavorSupported(DataFlavor.stringFlavor)) {
Object o = t.getTransferData(DataFlavor.stringFlavor);
String data = (String) t.getTransferData(DataFlavor.stringFlavor);
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_TAB);
System.out.println("Clipboard contents: " + data);
}
} catch (HeadlessException headlessException) {
} catch (UnsupportedFlavorException unsupportedFlavorException) {
} catch (IOException ioException) {
}
}
}