/* ** This file is part of Filius, a network construction and simulation software. ** ** Originally created at the University of Siegen, Institute "Didactics of ** Informatics and E-Learning" by a students' project group: ** members (2006-2007): ** André Asschoff, Johannes Bade, Carsten Dittich, Thomas Gerding, ** Nadja Haßler, Ernst Johannes Klebert, Michell Weyer ** supervisors: ** Stefan Freischlad (maintainer until 2009), Peer Stechert ** Project is maintained since 2010 by Christian Eibl <filius@c.fameibl.de> ** and Stefan Freischlad ** Filius is free software: you can redistribute it and/or modify ** it under the terms of the GNU General Public License as published by ** the Free Software Foundation, either version 2 of the License, or ** (at your option) version 3. ** ** Filius is distributed in the hope that it will be useful, ** but WITHOUT ANY WARRANTY; without even the implied ** warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ** PURPOSE. See the GNU General Public License for more details. ** ** You should have received a copy of the GNU General Public License ** along with Filius. If not, see <http://www.gnu.org/licenses/>. */ package filius.gui.quelltextsicht; import java.awt.Font; import java.io.FileWriter; import java.io.IOException; import java.io.RandomAccessFile; import java.util.Enumeration; import java.util.Hashtable; import javax.swing.JEditorPane; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import filius.Main; public class PanelQuelltext extends JTabbedPane { private static final long serialVersionUID = 1L; /** * Die Editoren fuer die Quelltextdateien. Als Schluessel wird der Dateipfad * der Quelltextdatei und als Wert das EditorPane verwendet. */ private Hashtable<String, JEditorPane> editorPanes; /** Konstruktor zur Initialisierung der GUI-Komponenten */ public PanelQuelltext() { super(); editorPanes = new Hashtable<String, JEditorPane>(); } /** * Zum Hinzufuegen eines neuen Editors zur Bearbeitung des Quelltextes. * * @param neueDatei * Dateipfad der Datei, in der der bearbeitete Quelltext * gespeichert werden soll. Dieser Dateiname muss den neuen * Klassennamen enthalten (z. B. /home/foo/NeueKlasse.java) */ public void hinzuEditor(String klassenName, String neueDatei) { JScrollPane scrollPane; JEditorPane editorPane; editorPane = new JEditorPane(); editorPane.setEditable(true); editorPane.setEnabled(true); editorPane.setContentType("text/plain"); editorPane.setFont(new Font(Font.MONOSPACED, Font.PLAIN, 14)); editorPane.setText(ladeQuelltext(neueDatei)); scrollPane = new JScrollPane(editorPane); add(klassenName, scrollPane); editorPanes.put(neueDatei, editorPane); } private String ladeQuelltext(String datei) { String quellText = ""; RandomAccessFile quellDatei = null; try { quellDatei = new RandomAccessFile(datei, "r"); for (String line; (line = quellDatei.readLine()) != null;) { quellText += line + "\n"; } } catch (Exception e1) { e1.printStackTrace(Main.debug); } finally { try { quellDatei.close(); } catch (IOException e) { e.printStackTrace(Main.debug); } } return quellText; } /** * Methode zum Speichern aller bearbeiteten bzw. neu erstellten Quelltexte */ public void speicherQuelltexte() { Enumeration dateipfade, editors; JEditorPane pane; String pfad; FileWriter writer; dateipfade = editorPanes.keys(); editors = editorPanes.elements(); while (dateipfade.hasMoreElements() && editors.hasMoreElements()) { pfad = (String) dateipfade.nextElement(); pane = (JEditorPane) editors.nextElement(); try { writer = new FileWriter(pfad, false); writer.write(pane.getText()); writer.close(); } catch (IOException e2) { e2.printStackTrace(Main.debug); } } } }