package Testing;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Hashtable;
import javax.swing.Action;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;
import javax.swing.JToolBar;
import javax.swing.text.BadLocationException;
import javax.swing.text.StyledEditorKit;
@SuppressWarnings("serial")
class AnnotationEditorStyled extends JFrame
{
FileWriter writer;
File file;
JTextPane pane;
@SuppressWarnings("rawtypes")
Hashtable actionTable;
public static void main(String args[]) throws Exception {
new AnnotationEditorStyled();
}
AnnotationEditorStyled() throws IOException {
super("MerkDirDas 0.8");
pane = new JTextPane();
JScrollPane scrollPane = new JScrollPane(pane);
getContentPane().add(scrollPane, BorderLayout.CENTER);
initActionTable();
initToolbar();
loadingText();
setBounds(10,10,450,250);
setVisible(true);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
// Alle Actions werden unter ihrem Namen in einer Hashtable abgelegt
@SuppressWarnings({ "rawtypes", "unchecked" })
private void initActionTable() {
actionTable = new Hashtable();
StyledEditorKit editorKit = (StyledEditorKit) pane.getEditorKit();
Action[] actions = editorKit.getActions();
for (int i=0; i < actions.length; i++) {
Action action = actions[i];
actionTable.put(action.getValue(Action.NAME),action);
}
}
// Im Toolbar werden drei Knöpfe an drei Actions angebunden.
private void initToolbar() {
JToolBar toolBar = new JToolBar();
// Ein Knopf an die vorhandene Action "font-bold"
JButton boldButton = new JButton(new ImageIcon("C:\\Dokumente und Einstellungen\\Eigene Dateien\\Test-Merkzettel\\fett.jpg"));
boldButton.addActionListener((Action)actionTable.get("font-bold"));
toolBar.add(boldButton);
// Ein Knopf an die vorhandene Action "font-italic"
JButton italicButton = new JButton(new ImageIcon("C:\\Dokumente und Einstellungen\\Eigene Dateien\\Test-Merkzettel\\kursif.jpg"));
italicButton.addActionListener((Action)actionTable.get("font-italic"));
toolBar.add(italicButton);
getContentPane().add(toolBar, BorderLayout.NORTH);
// Ein Knopf an eine neu erzeugte Action, die die Vordergrundfarbe
// auf den im Konstruktor übergebenen Wert setzt.
JButton rotButton = new JButton(new ImageIcon("C:\\Dokumente und Einstellungen\\Eigene Dateien\\Test-Merkzettel\\rot.jpg"));
rotButton.addActionListener
(new StyledEditorKit.ForegroundAction("rot",Color.red));
toolBar.add(rotButton);
getContentPane().add(toolBar, BorderLayout.NORTH);
// Button Schwarz
JButton schwarzButton = new JButton(new ImageIcon("C:\\Dokumente und Einstellungen\\Eigene Dateien\\Test-Merkzettel\\schwarz.jpg"));
schwarzButton.addActionListener
(new StyledEditorKit.ForegroundAction("schwarz",Color.black));
toolBar.add(schwarzButton);
getContentPane().add(toolBar, BorderLayout.NORTH);
// Button Gelb
JButton gelbButton = new JButton(new ImageIcon("C:\\Dokumente und Einstellungen\\Eigene Dateien\\Test-Merkzettel\\gelb.jpg"));
gelbButton.addActionListener
(new StyledEditorKit.ForegroundAction("gelb",Color.yellow));
toolBar.add(gelbButton);
getContentPane().add(toolBar, BorderLayout.NORTH);
// Button Speichern
JButton speichernButton = new JButton(new ImageIcon("C:\\Dokumente und Einstellungen\\Eigene Dateien\\Test-Merkzettel\\save.jpeg"));
speichernButton.addActionListener
(new ActionListener()
{public void actionPerformed(ActionEvent e)
{
speichern();
}
});
toolBar.add(speichernButton);
getContentPane().add(toolBar, BorderLayout.NORTH);
// Button Load
JButton loadButton = new JButton(new ImageIcon("C:\\Dokumente und Einstellungen\\Eigene Dateien\\Test-Merkzettel\\load.jpeg"));
loadButton.addActionListener
(new ActionListener()
{public void actionPerformed(ActionEvent e)
{
// laden();
}
});
toolBar.add(loadButton);
getContentPane().add(toolBar, BorderLayout.NORTH);
}
public void speichern()
{
String texts = pane.getText();
file = new File("C:\\temp\\FileWriterTest.xml");
try {
// new FileWriter(file ,true) - falls die Datei bereits existiert
// werden die Bytes an das Ende der Datei geschrieben
// new FileWriter(file) - falls die Datei bereits existiert
// wird diese überschrieben
writer = new FileWriter(file);
// Text wird in den Stream geschrieben
writer.write(texts);
// Schreibt den Stream in die Datei
// Sollte immer am Ende ausgeführt werden, sodass der Stream
// leer ist und alles in der Datei steht.
writer.flush();
// Schließt den Stream
writer.close();
} catch (IOException e) {
e.printStackTrace();
}
JOptionPane.showMessageDialog(null, "Erfolgreich gespeichert");
}
public void loadingText() throws IOException
{
byte zeichen;
String text = "";
try {
String dateiName = "C:\\temp\\FileWriterTest.xml";
FileInputStream leseStrom = new FileInputStream(dateiName);
do{
zeichen = (byte)leseStrom.read();
text += (char)zeichen;
} while (zeichen !=-1);
leseStrom.close();
pane.setText(text);
// try {
// pane.setText(pane.getDocument().getText(0, pane.getDocument().getLength()));
// } catch (BadLocationException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// }
} catch (Exception e) {
// TODO: handle exception
}
}
}