aboutsummaryrefslogtreecommitdiff
path: root/pbfi/pbfi-1.1/src/Frame.java
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2026-03-26 19:27:18 +0100
committerSebastiano Tronto <sebastiano@tronto.net>2026-03-26 19:27:18 +0100
commit7167b4341ef290d56fb96e2af10883a4b925d83b (patch)
tree1eb1b9e5ab82ddd89540e68d6b22ae69514575c6 /pbfi/pbfi-1.1/src/Frame.java
downloadancient-projects-master.tar.gz
ancient-projects-master.zip
I found my old code!HEADmaster
Diffstat (limited to 'pbfi/pbfi-1.1/src/Frame.java')
-rwxr-xr-xpbfi/pbfi-1.1/src/Frame.java209
1 files changed, 209 insertions, 0 deletions
diff --git a/pbfi/pbfi-1.1/src/Frame.java b/pbfi/pbfi-1.1/src/Frame.java
new file mode 100755
index 0000000..906a16b
--- /dev/null
+++ b/pbfi/pbfi-1.1/src/Frame.java
@@ -0,0 +1,209 @@
1/*
2Copyright 2009 Sebastiano Tronto <sebastiano@luganega.org>
3
4This file is part of PBFI (Porky's Brain F*** Interpreter).
5
6 PBFI is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 PBFI is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with PBFI; if not, write to the Free Software
18 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19
20*/
21
22import javax.swing.*;
23import java.awt.BorderLayout;
24import java.awt.event.*;
25import java.io.*;
26
27public class Frame extends JFrame {
28public static int valoreChooser;
29 public static boolean firstSave;
30 public static String defaultSave;
31 public static Main main;
32 public static JTextArea textArea;
33 public static JButton runButton;
34 public static JMenuBar bar;
35 public static JMenu menuFile, menuAiuto;
36 public static JMenuItem esci, esegui, salva, salvaConNome, apri, info;
37 public static JFileChooser chooser;
38 public static FileInputStream in;
39 public static FileOutputStream out;
40 public Frame() {
41 super( "Porky's BrainF** Interpreter - v1.1" );
42 firstSave = true;
43 main = new Main();
44 defaultSave = "";
45 chooser = new JFileChooser();
46 textArea = new JTextArea( "Digitare qui il codice BrainF***", 15, 15 );
47 bar = new JMenuBar();
48 menuFile = new JMenu( "File" );
49 menuAiuto = new JMenu( "?" );
50 esci = new JMenuItem( "Esci" );
51 esegui = new JMenuItem( "Esegui" );
52 salva = new JMenuItem( "Salva" );
53 salvaConNome = new JMenuItem( "Salva con nome" );
54 apri = new JMenuItem( "Apri" );
55 info = new JMenuItem( "Aiuto" );
56 menuFile.setMnemonic( 'F' );
57 menuAiuto.setMnemonic( '?' );
58 esci.setMnemonic( 'E' );
59 esegui.setMnemonic( 's' );
60 salva.setMnemonic( 'a' );
61 salvaConNome.setMnemonic( 'n' );
62 apri.setMnemonic( 'p' );
63 info.setMnemonic( 'i' );
64 esci.addActionListener(
65 new ActionListener() {
66 public void actionPerformed ( ActionEvent e ) {
67 System.exit( 0 );
68 }
69 }
70 );
71 esegui.addActionListener(
72 new ActionListener() {
73 public void actionPerformed ( ActionEvent e ) {
74 main.run( textArea.getText() );
75 }
76 }
77 );
78 salva.addActionListener(
79 new ActionListener() {
80 public void actionPerformed ( ActionEvent e ) {
81 if ( firstSave ) {
82 valoreChooser = chooser.showSaveDialog( Frame.this );
83 switch ( valoreChooser ) {
84 case JFileChooser.APPROVE_OPTION:
85 try {
86 out = new FileOutputStream( chooser.getSelectedFile().getPath() );
87 defaultSave = chooser.getSelectedFile().getPath();
88 char caratteri[];
89 byte bytes[];
90 caratteri = textArea.getText().toCharArray();
91 bytes = new byte[caratteri.length];
92 for ( int i = 0; i < caratteri.length; i++ )
93 bytes[i] = ( byte ) caratteri[i];
94 out.write( bytes );
95 } catch ( Exception ex ) {
96 JOptionPane.showMessageDialog( Frame.this, "Errore sconosciuto:\n\n" + ex + "\n\nPer favore riportare il bug a sebastiano@luganega.org", "Errore", JOptionPane.ERROR_MESSAGE );
97 }
98 break;
99 case JFileChooser.ERROR_OPTION:
100 JOptionPane.showMessageDialog( Frame.this, "Errore sconosciuto:\n\n" + e + "\n\nPer favore riportare il bug a sebastiano@luganega.org", "Errore", JOptionPane.ERROR_MESSAGE );
101 break;
102 //case JFileChooser.CANCEL_OPTION:
103 }
104 firstSave = false;
105 } else {
106 try {
107 out = new FileOutputStream( defaultSave );
108 char caratteri[];
109 byte bytes[];
110 caratteri = textArea.getText().toCharArray();
111 bytes = new byte[caratteri.length];
112 for ( int i = 0; i < caratteri.length; i++ )
113 bytes[i] = ( byte ) caratteri[i];
114 out.write( bytes );
115 } catch ( Exception ex ) {
116 JOptionPane.showMessageDialog( Frame.this, "Errore sconosciuto:\n\n" + ex + "\n\nPer favore riportare il bug a sebastiano@luganega.org", "Errore", JOptionPane.ERROR_MESSAGE );
117 }
118 }
119 }
120 }
121 );
122 salvaConNome.addActionListener(
123 new ActionListener() {
124 public void actionPerformed ( ActionEvent e ) {
125 valoreChooser = chooser.showSaveDialog( Frame.this );
126 switch ( valoreChooser ) {
127 case JFileChooser.APPROVE_OPTION:
128 try {
129 out = new FileOutputStream( chooser.getSelectedFile().getPath() );
130 defaultSave = chooser.getSelectedFile().getPath();
131 char caratteri[];
132 byte bytes[];
133 caratteri = textArea.getText().toCharArray();
134 bytes = new byte[caratteri.length];
135 for ( int i = 0; i < caratteri.length; i++ )
136 bytes[i] = ( byte ) caratteri[i];
137 out.write( bytes );
138 } catch ( Exception ex ) {
139 JOptionPane.showMessageDialog( Frame.this, "Errore sconosciuto:\n\n" + ex + "\n\nPer favore riportare il bug a sebastiano@luganega.org", "Errore", JOptionPane.ERROR_MESSAGE );
140 }
141 break;
142 case JFileChooser.ERROR_OPTION:
143 JOptionPane.showMessageDialog( Frame.this, "Errore sconosciuto:\n\n" + e + "\n\nPer favore riportare il bug a sebastiano@luganega.org", "Errore", JOptionPane.ERROR_MESSAGE );
144 break;
145 //case JFileChooser.CANCEL_OPTION:
146 }
147 firstSave = false;
148 }
149 }
150 );
151 apri.addActionListener(
152 new ActionListener() {
153 public void actionPerformed ( ActionEvent e ) {
154 valoreChooser = chooser.showOpenDialog( Frame.this );
155 switch ( valoreChooser ) {
156 case JFileChooser.APPROVE_OPTION:
157 try {
158 String stringa;
159 byte bytes[];
160 char caratteri[];
161 in = new FileInputStream( chooser.getSelectedFile().getPath() );
162 bytes = new byte[in.available()];
163 caratteri = new char[in.available()];
164 in.read( bytes );
165 for ( int i = 0; i < bytes.length; i++ )
166 caratteri[i] = ( char ) bytes[i];
167 stringa = new String( caratteri );
168 textArea.setText( stringa );
169 } catch ( Exception ex ) {
170 JOptionPane.showMessageDialog( Frame.this, "Errore sconosciuto:\n\n" + ex + "\n\nPer favore riportare il bug a sebastiano@luganega.org", "Errore", JOptionPane.ERROR_MESSAGE );
171 }
172 break;
173 case JFileChooser.ERROR_OPTION:
174 JOptionPane.showMessageDialog( Frame.this, "Errore sconosciuto:\n\n" + e + "\n\nPer favore riportare il bug a sebastiano@luganega.org", "Errore", JOptionPane.ERROR_MESSAGE );
175 break;
176 //case JFileChooser.CANCEL_OPTION:
177 }
178 }
179 }
180 );
181 info.addActionListener(
182 new ActionListener() {
183 public void actionPerformed ( ActionEvent e ) {
184 JOptionPane.showMessageDialog( Frame.this, "Brainfuck è un linguaggio di programmazione esoterico per computer,\ncreato da Urban Müller intorno al 1993. Il linguaggio viene\nin taluni casi denominato Brainf*ck, Brainf***\no anche soltanto BF per evitare di offendere\nla sensibilità altrui.\nNella cartella src trovate alcuni esempi di programmi in questo linguaggio.\n\nPer maggiori informazioni visitate la pagina:\nhttp://it.wikipedia.org/wiki/Brainfuck", "BrainF*** - Informazioni", JOptionPane.INFORMATION_MESSAGE );
185 }
186 }
187 );
188 menuFile.add( esegui );
189 menuFile.add( salva );
190 menuFile.add( salvaConNome );
191 menuFile.add( apri );
192 menuFile.add( esci );
193 menuAiuto.add( info );
194 bar.add( menuFile );
195 bar.add( menuAiuto );
196 runButton = new JButton( "Esegui" );
197 runButton.addActionListener(
198 new ActionListener() {
199 public void actionPerformed( ActionEvent e ) {
200 main.run( textArea.getText() );
201 }
202 }
203 );
204 setLayout( new BorderLayout() );
205 setJMenuBar( bar );
206 add( new JScrollPane( textArea ), BorderLayout.CENTER );
207 add( runButton, BorderLayout.SOUTH );
208 }
209} \ No newline at end of file

Generated with cgit - Back to sebastiano.tronto.net