/* ** 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.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.FlowLayout; import java.awt.Font; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import filius.gui.JMainFrame; import filius.rahmenprogramm.I18n; import filius.rahmenprogramm.SzenarioVerwaltung; public class FrameSoftwareWizard extends JDialog implements I18n { private static final long serialVersionUID = 1L; public static final int VERWALTUNG=1, QUELLTEXT=2, COMPILER=3; private int zustand; private PanelCompiler pCompiler = null; private PanelVerwaltung pVerwaltung = null; private PanelQuelltext pQuelltext = null; private JLabel untertitel; private JButton vorButton, zurueckButton; private String anwendungsName, klassenName; private String[] quelltextDateien; public FrameSoftwareWizard () { super(JMainFrame.getJMainFrame(), messages.getString("framesoftwarewizard_msg1"), true); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); this.setSize(720, 560); this.setLocation(screenSize.width/2 - (this.getWidth()/2), screenSize.height/2 - (this.getHeight()/2)); initKomponenten(); SzenarioVerwaltung.getInstance().setzeGeaendert(); setzeVerwaltung(); } private void initKomponenten() { JPanel panel; getContentPane().removeAll(); untertitel = new JLabel(); untertitel.setBackground(Color.WHITE); untertitel.setOpaque(true); untertitel.setFont(new Font(Font.DIALOG, Font.BOLD, 14)); untertitel.setHorizontalAlignment(JLabel.CENTER); getContentPane().add(untertitel, BorderLayout.NORTH); panel = new JPanel(); panel.setLayout(new FlowLayout()); zurueckButton = new JButton(messages.getString("framesoftwarewizard_msg2")); zurueckButton.setPreferredSize(new Dimension(150, 30)); zurueckButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { zurueck(); } }); panel.add(zurueckButton); vorButton = new JButton(messages.getString("framesoftwarewizard_msg3")); vorButton.setPreferredSize(new Dimension(150, 30)); vorButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent evt) { weiter(); } }); panel.add(vorButton); getContentPane().add(panel, BorderLayout.SOUTH); } private void setzeVerwaltung() { JScrollPane scrollPane; if (pVerwaltung == null) { pVerwaltung = new PanelVerwaltung(); } scrollPane = new JScrollPane(pVerwaltung); getContentPane().add(scrollPane, BorderLayout.CENTER); this.validate(); untertitel.setText(messages.getString("framesoftwarewizard_msg4")); zurueckButton.setText(messages.getString("framesoftwarewizard_msg5")); vorButton.setText(messages.getString("framesoftwarewizard_msg3")); zustand = VERWALTUNG; } private void setzeEditor() { if (pQuelltext == null) { pQuelltext = new PanelQuelltext(); if (quelltextDateien.length == 2) { pQuelltext.hinzuEditor(klassenName, quelltextDateien[0]); pQuelltext.hinzuEditor("GUIApplication"+klassenName+"Window", quelltextDateien[1]); } else { pQuelltext.hinzuEditor(klassenName+"Mitarbeiter", quelltextDateien[0]); pQuelltext.hinzuEditor(klassenName, quelltextDateien[1]); pQuelltext.hinzuEditor("GUIApplication"+klassenName+"Window", quelltextDateien[2]); } } getContentPane().add(pQuelltext, BorderLayout.CENTER); this.validate(); untertitel.setText(messages.getString("framesoftwarewizard_msg6")); zurueckButton.setText(messages.getString("framesoftwarewizard_msg2")); vorButton.setText(messages.getString("framesoftwarewizard_msg3")); zustand = QUELLTEXT; } private void setzeCompiler() { JScrollPane scrollPane; if (pCompiler == null) { pCompiler = new PanelCompiler(quelltextDateien, anwendungsName, klassenName); } scrollPane = new JScrollPane(pCompiler); getContentPane().add(scrollPane, BorderLayout.CENTER); this.validate(); untertitel.setText(messages.getString("framesoftwarewizard_msg7")); zurueckButton.setText(messages.getString("framesoftwarewizard_msg2")); vorButton.setText(messages.getString("framesoftwarewizard_msg8")); (new Thread(pCompiler)).start(); zustand = COMPILER; } private void weiter() { String[] array; switch (zustand) { case VERWALTUNG: array = pVerwaltung.holeAnwendung(); if (array != null) { anwendungsName = array[0]; klassenName = array[1]; quelltextDateien = pVerwaltung.initQuelltextDateien(); initKomponenten(); pQuelltext = null; setzeEditor(); } break; case QUELLTEXT: pQuelltext.speicherQuelltexte(); initKomponenten(); pCompiler = null; setzeCompiler(); break; case COMPILER: pCompiler.speichern(); setVisible(false); break; } } private void zurueck() { switch (zustand) { case VERWALTUNG: setVisible(false); break; case QUELLTEXT: initKomponenten(); setzeVerwaltung(); break; case COMPILER: initKomponenten(); setzeEditor(); break; } } }