package de.java.luca.textverschluesselung;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.DataFlavor;
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.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.print.PageFormat;
import java.awt.print.Printable;
import java.awt.print.PrinterException;
import java.awt.print.PrinterJob;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.channels.FileLock;
import java.nio.channels.ReadableByteChannel;
import java.nio.channels.WritableByteChannel;
import java.nio.channels.FileChannel.MapMode;
import java.util.Scanner;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
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.JPanel;
import javax.swing.JProgressBar;
import javax.swing.JTextArea;
import javax.swing.border.LineBorder;
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileView;
import javax.swing.plaf.FileChooserUI;
public class MainGui extends JFrame {
private static final long serialVersionUID = 1L;
// Komponenten
// Menükomponenten:
private JMenuBar menubar1;
private JMenu menubar1_menu1;
private JMenu menubar1_menu2;
private JMenu menubar1_menu3;
private JMenuItem menubar1_menu1_menuitem1;
private JMenuItem menubar1_menu1_menuitem2;
private JMenuItem menubar1_menu1_menuitem3;
private JMenuItem menubar1_menu2_menuitem1;
private JMenuItem menubar1_menu2_menuitem2;
private JMenuItem menubar1_menu2_menuitem3;
private JMenuItem menubar1_menu3_menuitem1;
private JMenuItem menubar1_menu3_menuitem2;
private JMenuItem menubar1_menu3_menuitem3;
//TextArea
public JTextArea textArea_eingabe;
public JTextArea textArea_ausgabe;
// Buttons
private JButton button_verschlüsseln;
private JButton button_entschlüsseln;
private JButton button_zurücksetzen;
private JButton button_drucken;
private JButton button_ausDatei;
private JButton button_ausZwischenablage;
private JButton button_kopieren;
private JButton button_speichern;
//Labels
private JLabel label_methode;
private JLabel label_verschiebung_container1;
private JLabel label_verschiebung1_container1;
private JLabel label_verschiebung_container2;
private JLabel label_verschiebung1_container2;
private JLabel label_verschiebung_container3;
private JLabel label_verschiebung1_container3;
private JLabel label_verschiebung_container4;
private JLabel label_verschiebung1_container4;
private JLabel label_einfügenAus;
private JLabel label_fortschritt;
private JLabel label_linie;
// ComboBoxen
private JComboBox<String> combobox_dropdown;
private JComboBox<?> combobox_verschiebung_container1;
private JComboBox<?> combobox_verschiebung_container2;
private JComboBox<?> combobox_verschiebung_container3;
private JComboBox<?> combobox_verschiebung_container4;
// Panels
private JPanel MasterContainer;
private JPanel MasterContainer_container1;
private JPanel MasterContainer_container2;
private JPanel MasterContainer_container3;
private JPanel MasterContainer_container4;
// ProgressBars
private JProgressBar progressBar_fortschritt;
MainGui() {
setTitle("Textverschlüsselung");
setSize(700, 600);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setResizable(false);
this.initKomponenten();
this.initListeners();
setVisible(true);
}
public void initKomponenten() {
this.getContentPane().setLayout(null);
//Schriftart
Font schrift = new Font("Arial", Font.PLAIN, 22);
// Menükomponenten
this.menubar1 = new JMenuBar();
this.menubar1_menu1 = new JMenu("Datei");
this.menubar1_menu2 = new JMenu("Optionen");
this.menubar1_menu3 = new JMenu("Hilfe");
this.menubar1_menu1_menuitem1 = new JMenuItem("Datei öffnen");
this.menubar1_menu1_menuitem1.setFont(schrift);
this.menubar1_menu1_menuitem2 = new JMenuItem("Datei speichern");
this.menubar1_menu1_menuitem2.setFont(schrift);
this.menubar1_menu1_menuitem3 = new JMenuItem("Beenden");
this.menubar1_menu1_menuitem3.setFont(schrift);
this.menubar1_menu2_menuitem1 = new JMenuItem("Schriftfarbe");
this.menubar1_menu2_menuitem1.setFont(schrift);
this.menubar1_menu2_menuitem2 = new JMenuItem("Hintergrundfarbe");
this.menubar1_menu2_menuitem2.setFont(schrift);
this.menubar1_menu2_menuitem3 = new JMenuItem("");
this.menubar1_menu2_menuitem3.setFont(schrift);
this.menubar1_menu3_menuitem1 = new JMenuItem("Hilfe");
this.menubar1_menu3_menuitem1.setFont(schrift);
this.menubar1_menu3_menuitem2 = new JMenuItem("Kontakt");
this.menubar1_menu3_menuitem2.setFont(schrift);
this.menubar1_menu3_menuitem3 = new JMenuItem("Über");
this.menubar1_menu3_menuitem3.setFont(schrift);
this.menubar1.add(this.menubar1_menu1);
this.menubar1.add(this.menubar1_menu2);
this.menubar1.add(this.menubar1_menu3);
this.menubar1_menu1.add(this.menubar1_menu1_menuitem1);
this.menubar1_menu1.add(this.menubar1_menu1_menuitem2);
this.menubar1_menu1.add(this.menubar1_menu1_menuitem3);
this.menubar1_menu1.setFont(schrift);
// this.menubar1_menu2.add(this.menubar1_menu2_menuitem1);
this.menubar1_menu2.add(this.menubar1_menu2_menuitem2);
// this.menubar1_menu2.add(this.menubar1_menu2_menuitem3);
this.menubar1_menu2.setFont(schrift);
this.menubar1_menu3.add(this.menubar1_menu3_menuitem1);
this.menubar1_menu3.add(this.menubar1_menu3_menuitem2);
this.menubar1_menu3.add(this.menubar1_menu3_menuitem3);
this.menubar1_menu3.setFont(schrift);
this.setJMenuBar(this.menubar1);
//TextArea
this.textArea_eingabe = new JTextArea("Hier text eingeben");
this.textArea_eingabe.setBorder(new LineBorder(Color.BLACK));
this.textArea_eingabe.setBounds(8, 8, 480, 150);
this.getContentPane().add(this.textArea_eingabe, BorderLayout.CENTER);
this.textArea_ausgabe = new JTextArea();
this.textArea_ausgabe.setBorder(new LineBorder(Color.BLACK));
this.textArea_ausgabe.setBounds(8, 410, 678, 120);
this.textArea_ausgabe.setEditable(false);
this.getContentPane().add(this.textArea_ausgabe);
// Panels
this.MasterContainer = new JPanel(new CardLayout());
this.MasterContainer.setBounds(8, 255, 482, 90);
this.MasterContainer.setBackground(Color.BLUE);
this.getContentPane().add(this.MasterContainer);
this.MasterContainer_container1 = new JPanel();
this.MasterContainer_container1.setLayout(null);
this.MasterContainer.add(this.MasterContainer_container1, " Cäsar - ASCI Zeichensatz");
this.MasterContainer_container2 = new JPanel();
this.MasterContainer_container2.setLayout(null);
this.MasterContainer.add(this.MasterContainer_container2, " Cäsar - Groß- und Kleinbuchstaben");
this.MasterContainer_container3 = new JPanel();
this.MasterContainer_container3.setLayout(null);
this.MasterContainer.add(this.MasterContainer_container3, " Cäsar - nur Kleinbuchstaben");
this.MasterContainer_container4 = new JPanel();
this.MasterContainer_container4.setLayout(null);
this.MasterContainer.add(this.MasterContainer_container4, " Cäsar - nur Großbuchstaben");
// Buttons
this.button_verschlüsseln = new JButton("Verschlüsseln");
this.button_verschlüsseln.setBorder(new LineBorder(Color.BLACK));
this.button_verschlüsseln.setBounds(510, 15, 160, 35);
this.button_verschlüsseln.setFont(schrift);
this.getContentPane().add(this.button_verschlüsseln);
this.button_entschlüsseln = new JButton("Entschlüsseln");
this.button_entschlüsseln.setBorder(new LineBorder(Color.BLACK));
this.button_entschlüsseln.setBounds(510, 65, 160, 35);
this.button_entschlüsseln.setFont(schrift);
this.getContentPane().add(this.button_entschlüsseln);
this.button_zurücksetzen = new JButton("Zurücksetzen");
this.button_zurücksetzen.setBorder(new LineBorder(Color.BLACK));
this.button_zurücksetzen.setBounds(510, 115, 160, 35);
this.button_zurücksetzen.setFont(schrift);
this.button_zurücksetzen.setBackground(Color.GREEN);
this.getContentPane().add(this.button_zurücksetzen);
this.button_drucken = new JButton("Drucken");
this.button_drucken.setBorder(new LineBorder(Color.BLACK));
this.button_drucken.setBounds(510, 165, 160, 35);
this.button_drucken.setFont(schrift);
this.getContentPane().add(this.button_drucken);
this.button_ausZwischenablage = new JButton("Zwischenablage");
this.button_ausZwischenablage.setBorder(new LineBorder(Color.BLACK));
this.button_ausZwischenablage.setBounds(200, 165, 170, 35);
this.button_ausZwischenablage.setFont(schrift);
this.button_ausZwischenablage.setBackground(Color.GREEN);
this.getContentPane().add(this.button_ausZwischenablage);
this.button_ausDatei = new JButton("Datei");
this.button_ausDatei.setBorder(new LineBorder(Color.BLACK));
this.button_ausDatei.setBounds(388, 165, 100, 35);
this.button_ausDatei.setFont(schrift);
this.button_ausDatei.setBackground(Color.GREEN);
this.getContentPane().add(this.button_ausDatei);
this.button_speichern = new JButton("Speichern");
this.button_speichern.setBorder(new LineBorder(Color.BLACK));
this.button_speichern.setBounds(510, 370, 160, 35);
this.button_speichern.setFont(schrift);
this.button_speichern.setBackground(Color.GREEN);
this.getContentPane().add(this.button_speichern);
this.button_kopieren = new JButton("Kopieren");
this.button_kopieren.setBorder(new LineBorder(Color.BLACK));
this.button_kopieren.setBounds(510, 320, 160, 35);
this.button_kopieren.setFont(schrift);
this.button_kopieren.setBackground(Color.GREEN);
this.getContentPane().add(this.button_kopieren);
// Labels
this.label_methode = new JLabel("Verschlüsselungsmethode:");
this.label_methode.setBounds(15, 220, 270, 25);
this.label_methode.setFont(schrift);
this.getContentPane().add(this.label_methode);
this.label_verschiebung_container1 = new JLabel("Verschieben um:");
this.label_verschiebung_container1.setBounds(5, 0, 200, 25);
this.label_verschiebung_container1.setFont(schrift);
this.MasterContainer_container1.add(this.label_verschiebung_container1);
this.label_verschiebung1_container1 = new JLabel("Zeichen");
this.label_verschiebung1_container1.setBounds(235, 0, 100, 25);
this.label_verschiebung1_container1.setFont(schrift);
this.MasterContainer_container1.add(this.label_verschiebung1_container1);
this.label_verschiebung_container2 = new JLabel("Verschieben um:");
this.label_verschiebung_container2.setBounds(5, 0, 200, 25);
this.label_verschiebung_container2.setFont(schrift);
this.MasterContainer_container2.add(this.label_verschiebung_container2);
this.label_verschiebung1_container2 = new JLabel("Zeichen");
this.label_verschiebung1_container2.setBounds(235, 0, 100, 25);
this.label_verschiebung1_container2.setFont(schrift);
this.MasterContainer_container2.add(this.label_verschiebung1_container2);
this.label_verschiebung_container3 = new JLabel("Verschieben um:");
this.label_verschiebung_container3.setBounds(5, 0, 200, 25);
this.label_verschiebung_container3.setFont(schrift);
this.MasterContainer_container3.add(this.label_verschiebung_container3);
this.label_verschiebung1_container3 = new JLabel("Zeichen");
this.label_verschiebung1_container3.setBounds(235, 0, 100, 25);
this.label_verschiebung1_container3.setFont(schrift);
this.MasterContainer_container3.add(this.label_verschiebung1_container3);
this.label_verschiebung_container4 = new JLabel("Verschieben um:");
this.label_verschiebung_container4.setBounds(5, 0, 200, 25);
this.label_verschiebung_container4.setFont(schrift);
this.MasterContainer_container4.add(this.label_verschiebung_container4);
this.label_verschiebung1_container4 = new JLabel("Zeichen");
this.label_verschiebung1_container4.setBounds(235, 0, 100, 25);
this.label_verschiebung1_container4.setFont(schrift);
this.MasterContainer_container4.add(this.label_verschiebung1_container4);
this.label_einfügenAus = new JLabel("Text einfügen aus:");
this.label_einfügenAus.setBounds(8, 165, 180, 35);
this.label_einfügenAus.setFont(schrift);
this.getContentPane().add(this.label_einfügenAus);
this.label_fortschritt = new JLabel("Fortschritt:");
this.label_fortschritt.setBounds(8, 353, 110, 15);
this.getContentPane().add(this.label_fortschritt);
this.label_linie = new JLabel("Test");
this.label_linie.setBounds(80, 361, 420, 1);
this.label_linie.setBorder(new LineBorder(Color.black));
this.getContentPane().add(this.label_linie);
// Comboboxen
this.combobox_dropdown = new JComboBox<>(new String[] {" Cäsar - ASCI Zeichensatz", " Cäsar - Groß- und Kleinbuchstaben", " Cäsar - nur Kleinbuchstaben", " Cäsar - nur Großbuchstaben"});
this.combobox_dropdown.setEditable(false);
this.combobox_dropdown.setBounds(285, 220, 205, 25);
this.getContentPane().add(this.combobox_dropdown);
this.combobox_verschiebung_container1 = new JComboBox<Object>(new Integer[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ,14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127});
this.combobox_verschiebung_container1.setBounds(173, 0, 50, 25);
this.MasterContainer_container1.add(this.combobox_verschiebung_container1);
this.combobox_verschiebung_container2 = new JComboBox<Object>(new Integer[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ,14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52});
this.combobox_verschiebung_container2.setBounds(173, 0, 50, 25);
this.MasterContainer_container2.add(this.combobox_verschiebung_container2);
this.combobox_verschiebung_container3 = new JComboBox<Object>(new Integer[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ,14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26});
this.combobox_verschiebung_container3.setBounds(173, 0, 50, 25);
this.MasterContainer_container3.add(this.combobox_verschiebung_container3);
this.combobox_verschiebung_container4 = new JComboBox<Object>(new Integer[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13 ,14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26});
this.combobox_verschiebung_container4.setBounds(173, 0, 50, 35);
this.MasterContainer_container4.add(this.combobox_verschiebung_container4);
// Progressbars
this.progressBar_fortschritt = new JProgressBar();
this.progressBar_fortschritt.setBounds(8, 370, 490, 35);
this.getContentPane().add(this.progressBar_fortschritt);
}
public void initListeners() {
this.combobox_dropdown.addItemListener(new ItemListener() {
@Override
public void itemStateChanged(ItemEvent e) {
CardLayout cl = (CardLayout) MasterContainer.getLayout();
cl.show(MasterContainer, e.getItem().toString());
}
});
button_verschlüsseln.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
textArea_ausgabe.setText(textArea_eingabe.getText());
}
});
menubar1_menu1_menuitem1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
menu1Item1();
}
});
menubar1_menu1_menuitem2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
menu1Item2();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
}
});
menubar1_menu1_menuitem3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
menu1Item3();
}
});
menubar1_menu2_menuitem2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
menu2Item2();
}
});
menubar1_menu3_menuitem3.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
DialogInfo dialog = new DialogInfo();
dialog.setLocationRelativeTo(getLayeredPane());
dialog.setVisible(true);
}
});
this.button_ausDatei.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
menu1Item1();
}
});
this.button_speichern.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
try {
menu1Item2();
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
}
});
this.button_zurücksetzen.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
buttonZurücksetzen();
}
});
this.button_ausZwischenablage.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
buttonAusZwischenablage();
}
});
button_kopieren.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
buttonKopieren();
}
});
this.button_drucken.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
buttonDrucken();
}
});
}
// Methoden für das Menü
public void menu1Item1() {
JFileChooser fc = new JFileChooser();
fc.showOpenDialog(null);
File filechoosed = fc.getSelectedFile();
File file = new File(filechoosed.toString());
Scanner sc = null;
if(file.exists()) {
try {
sc = new Scanner(file);
while(sc.hasNext()) {
String text = sc.nextLine().toString();
String tmp = textArea_eingabe.getText();
textArea_eingabe.setText(tmp + "\n" + text);
}
} catch (FileNotFoundException e) {
}
}
sc.close();
}
public void menu1Item2() throws FileNotFoundException {
String text = textArea_ausgabe.getText();
JFileChooser fc = new JFileChooser();
fc.showOpenDialog(null);
String filename = fc.getSelectedFile().toString();
File f = new File(filename);
if(f.exists()) {
Scanner s = new Scanner(f);
String filetext = s.nextLine();
text = ("\n" + filetext + "\n" + text);
FileWriter fw;
try {
fw = new FileWriter(filename);
fw.write(text);
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
s.close();
} else {
try {
FileWriter fw = new FileWriter(filename);
fw.write(text + "\n");
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void menu1Item3() {
int i = JOptionPane.showConfirmDialog(null, "Möchten Sie das Programm wirklich beenden?");
if(i == 0) {
System.exit(1);
}
}
public void menu2Item2() {
Color c = JColorChooser.showDialog(null, "Wählen Sie eine Farbe", Color.LIGHT_GRAY);
this.getContentPane().setBackground(c);
this.MasterContainer_container1.setBackground(c);
this.MasterContainer_container2.setBackground(c);
this.MasterContainer_container3.setBackground(c);
this.MasterContainer_container4.setBackground(c);
}
public void buttonZurücksetzen() {
textArea_eingabe.setText("Hier Text eingeben");
textArea_ausgabe.setText("");
}
public void buttonAusZwischenablage() {
Clipboard systemClib = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable transfer = systemClib.getContents(null);
for (int i = 0; i < transfer.getTransferDataFlavors().length; i++) {
Object content = null;
try {
content = transfer.getTransferData(transfer.getTransferDataFlavors()[i]);
} catch (UnsupportedFlavorException | IOException e) {
e.printStackTrace();
}
if (content instanceof String) {
String tmp = textArea_eingabe.getText();
textArea_eingabe.setText(tmp + "\n"+ content);
}
}
}
public void buttonKopieren() {
String text = textArea_ausgabe.getText();
Clipboard systemclip = Toolkit.getDefaultToolkit().getSystemClipboard();
systemclip.setContents(new StringSelection(text), null);
}
public void buttonDrucken() {
PrinterJob printjob = PrinterJob.getPrinterJob();
printjob.setPrintable(new PrintObject());
if(printjob.printDialog()) {
try {
printjob.print();
} catch (PrinterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public class PrintObject implements Printable {
@Override
public int print(Graphics g, PageFormat pf, int page) throws PrinterException {
if (page > 0) {
return NO_SUCH_PAGE;
}
Graphics2D g2d = (Graphics2D)g;
g2d.translate(pf.getImageableX(), pf.getImageableY());
String text = textArea_ausgabe.getText();
g2d.drawString(text, 100, 100);
return PAGE_EXISTS;
}
}
}