Frame.java (12180B)
1 /* 2 Copyright 2008, 2009 Sebastiano Tronto <sebastiano@luganega.org> 3 4 This file is part of Robottino. 5 6 Robottino 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 Robottino 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 Robottino; if not, write to the Free Software 18 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA 19 20 */ 21 22 import javax.swing.*; 23 import java.awt.*; 24 import java.awt.event.*; 25 26 public class Frame extends JFrame implements ActionListener { 27 public static int i; 28 public static Main main; 29 public static RobotPanel robotPanel; 30 public static JLabel label; 31 public static Timer timer; 32 public static JMenuBar barraMenu; 33 public static JMenu file, modifica, azioni, info, raMenu, laMenu, rlMenu, llMenu; 34 public static JMenuItem raonMenuItem, raoffMenuItem, rachangeMenuItem, laonMenuItem, laoffMenuItem, lachangeMenuItem; 35 public static JMenuItem rlonMenuItem, rloffMenuItem, rlchangeMenuItem, llonMenuItem, lloffMenuItem, llchangeMenuItem; 36 public static JMenuItem rinomina, birra, balla, esplodi, informazioni, esci; 37 public Frame() { 38 super( "Robottino versione 4.2" ); 39 i = 0; 40 main = new Main(); 41 robotPanel = new RobotPanel(); 42 label = new JLabel( "Robot: " + main.robot.getName() ); 43 label.setFont( new Font( "Monospace", 0, 30 ) ); 44 barraMenu = new JMenuBar(); 45 rinomina = new JMenuItem( "Cambia nome" ); 46 birra = new JMenuItem( "Birra" ); 47 balla = new JMenuItem( "Balla" ); 48 esplodi = new JMenuItem( "Esplodi" ); 49 informazioni = new JMenuItem( "Informazioni" ); 50 esci = new JMenuItem( "Esci" ); 51 raonMenuItem = new JMenuItem( "Alza" ); 52 laonMenuItem = new JMenuItem( "Alza" ); 53 rlonMenuItem = new JMenuItem( "Alza" ); 54 llonMenuItem = new JMenuItem( "Alza" ); 55 raoffMenuItem = new JMenuItem( "Abbassa" ); 56 laoffMenuItem = new JMenuItem( "Abbassa" ); 57 rloffMenuItem = new JMenuItem( "Abbassa" ); 58 lloffMenuItem = new JMenuItem( "Abbassa" ); 59 rachangeMenuItem = new JMenuItem( "Cambia posizione" ); 60 lachangeMenuItem = new JMenuItem( "Cambia posizione" ); 61 rlchangeMenuItem = new JMenuItem( "Cambia posizione" ); 62 llchangeMenuItem = new JMenuItem( "Cambia posizione" ); 63 esci.addActionListener( this ); 64 rinomina.addActionListener( this ); 65 birra.addActionListener( this ); 66 balla.addActionListener( this ); 67 esplodi.addActionListener( this ); 68 informazioni.addActionListener( this ); 69 raonMenuItem.addActionListener( this ); 70 raoffMenuItem.addActionListener( this ); 71 rachangeMenuItem.addActionListener( this ); 72 laonMenuItem.addActionListener( this ); 73 laoffMenuItem.addActionListener( this ); 74 lachangeMenuItem.addActionListener( this ); 75 rlonMenuItem.addActionListener( this ); 76 rloffMenuItem.addActionListener( this ); 77 rlchangeMenuItem.addActionListener( this ); 78 llonMenuItem.addActionListener( this ); 79 lloffMenuItem.addActionListener( this ); 80 llchangeMenuItem.addActionListener( this ); 81 raMenu = new JMenu( "Braccio destro" ); 82 raMenu.add( raonMenuItem ); 83 raMenu.add( raoffMenuItem ); 84 raMenu.add( rachangeMenuItem ); 85 laMenu = new JMenu( "Braccio sinistro" ); 86 laMenu.add( laonMenuItem ); 87 laMenu.add( laoffMenuItem ); 88 laMenu.add( lachangeMenuItem ); 89 rlMenu = new JMenu( "Gamba destra" ); 90 rlMenu.add( rlonMenuItem ); 91 rlMenu.add( rloffMenuItem ); 92 rlMenu.add( rlchangeMenuItem ); 93 llMenu = new JMenu( "Gamba sinistra" ); 94 llMenu.add( llonMenuItem ); 95 llMenu.add( lloffMenuItem ); 96 llMenu.add( llchangeMenuItem ); 97 modifica = new JMenu( "Modifica" ); 98 modifica.add( raMenu ); 99 modifica.add( laMenu ); 100 modifica.add( rlMenu ); 101 modifica.add( llMenu ); 102 file = new JMenu( "File" ); 103 file.add( rinomina ); 104 file.add( esci ); 105 azioni = new JMenu( "Azioni" ); 106 azioni.add( birra ); 107 azioni.add( balla ); 108 azioni.add( esplodi ); 109 info = new JMenu( "?" ); 110 info.add( informazioni ); 111 barraMenu.add( file ); 112 barraMenu.add( modifica ); 113 barraMenu.add( azioni ); 114 barraMenu.add( info ); 115 setJMenuBar( barraMenu ); 116 add( robotPanel, BorderLayout.CENTER ); 117 add( label, BorderLayout.SOUTH ); 118 addWindowListener( 119 new WindowAdapter() { 120 public void windowClosing( WindowEvent e ) { 121 int selezione = JOptionPane.showOptionDialog( Frame.this, "Vuoi davvero uscire?", "Robottino v4.2", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, new String[] { "Si", "No" }, "No" ); 122 if ( selezione == JOptionPane.YES_OPTION ) 123 System.exit( 0 ); 124 } 125 } 126 ); 127 } 128 public void actionPerformed( ActionEvent e ) { 129 if ( e.getSource() == esci ) { 130 int selezione = JOptionPane.showOptionDialog( this, "Vuoi davvero uscire?", "Robottino v4.2", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, new String[] { "Si", "No" }, "No" ); 131 if ( selezione == JOptionPane.YES_OPTION ) 132 System.exit( 0 ); 133 } 134 else if ( e.getSource() == rinomina ) { 135 String newName = main.robot.getName(); 136 newName = JOptionPane.showInputDialog( this, "Inserire il nuovo nome per il robottino:", newName ); 137 if ( newName != null ) { 138 main.robot.setName( newName ); 139 label .setText( "Robot: " + main.robot.getName() ); 140 } 141 } 142 else if ( e.getSource() == raonMenuItem ) 143 main.robot.setRA( true ); 144 else if ( e.getSource() == raoffMenuItem ) 145 main.robot.setRA( false ); 146 else if ( e.getSource() == rachangeMenuItem ) 147 main.robot.setRA( !main.robot.rightArm ); 148 else if ( e.getSource() == laonMenuItem ) 149 main.robot.setLA( true ); 150 else if ( e.getSource() == laoffMenuItem ) 151 main.robot.setLA( false ); 152 else if ( e.getSource() == lachangeMenuItem ) 153 main.robot.setLA( !main.robot.leftArm ); 154 else if ( e.getSource() == rlonMenuItem ) 155 main.robot.setRL( true ); 156 else if ( e.getSource() == rloffMenuItem ) 157 main.robot.setRL( false ); 158 else if ( e.getSource() == rlchangeMenuItem ) 159 main.robot.setRL( !main.robot.rightLeg ); 160 else if ( e.getSource() == llonMenuItem ) 161 main.robot.setLL( true ); 162 else if ( e.getSource() == lloffMenuItem ) 163 main.robot.setLL( false ); 164 else if ( e.getSource() == llchangeMenuItem ) 165 main.robot.setLL( !main.robot.leftLeg ); 166 else if ( e.getSource() == birra ) { 167 ImageIcon birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra5.gif" ) ); 168 JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, birra ); 169 birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra1.jpg" ) ); 170 JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, birra ); 171 birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra2.jpg" ) ); 172 JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, birra ); 173 birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra3.jpg" ) ); 174 JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, birra ); 175 birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra4.jpg" ) ); 176 JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, birra ); 177 JOptionPane.showMessageDialog( this, "Che bevuta!", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE ); 178 JOptionPane.showMessageDialog( this, "Buuuuuuurp!", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE ); 179 robotPanel.body = new ImageIcon( ClassLoader.getSystemResource( "img/robot.gif" ) ); 180 } 181 if ( e.getSource() == esplodi ) { 182 String aux = main.robot.getName(); 183 main.robot.setPositions( false, false, false, false ); 184 main.robot.setName( "no-name" ); 185 label.setText( "Robot: " + main.robot.getName() ); 186 ImageIcon boom = new ImageIcon( ClassLoader.getSystemResource( "img/boom.png" ) ); 187 JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, boom ); 188 JOptionPane.showMessageDialog( this, aux + " si è autodistrutto!", "Robottino v4.2", JOptionPane.WARNING_MESSAGE ); 189 JOptionPane.showMessageDialog( this, "È stato creato un nuovo robottino: " + main.robot.getName(), "Robottino v4.2", JOptionPane.INFORMATION_MESSAGE ); 190 } 191 if ( e.getSource() == informazioni ) { 192 String aux = main.robot.getName() + ":\n\n"; 193 if ( main.robot.rightArm ) 194 aux += "Braccio destro: alzato\n"; 195 else 196 aux += "Braccio destro: abbassato\n"; 197 if ( main.robot.leftArm ) 198 aux += "Braccio sinistro: alzato\n"; 199 else 200 aux += "Braccio sinistro: abbassato\n"; 201 if ( main.robot.rightLeg ) 202 aux += "Gamba destra: alzata\n"; 203 else 204 aux += "Gamba destra: abbassata\n"; 205 if ( main.robot.leftLeg ) 206 aux += "Gamba sinistra: alzata\n"; 207 else 208 aux += "Gamba sinistra: abbassata\n"; 209 JOptionPane.showMessageDialog( this, aux, "Robottino - v4.2", JOptionPane.INFORMATION_MESSAGE ); 210 } 211 else if ( e.getSource() == balla ) { 212 this.i = 0; 213 main.robot.setPositions( false, false, false, false ); 214 timer = new Timer( 250, 215 new ActionListener() { 216 public void actionPerformed( ActionEvent e ) { 217 Frame.this.i++; 218 switch( Frame.this.i ) { 219 case 1: 220 Frame.main.robot.setRA( true ); 221 break; 222 case 2: 223 break; 224 case 3: 225 Frame.main.robot.setLA( true ); 226 break; 227 case 4: 228 break; 229 case 5: 230 Frame.main.robot.setPositions( false, false, false, true ); 231 break; 232 case 6: 233 Frame.main.robot.setPositions( true, true, false, false ); 234 break; 235 case 7: 236 Frame.main.robot.setPositions( false, false, true, false ); 237 break; 238 case 8: 239 Frame.main.robot.setPositions( true, true, false, false ); 240 break; 241 case 9: 242 Frame.main.robot.setPositions( true, false, false, true ); 243 break; 244 case 10: 245 Frame.main.robot.setPositions( false, false, false, false ); 246 break; 247 case 11: 248 Frame.main.robot.setPositions( true, false, false, true ); 249 break; 250 case 12: 251 Frame.main.robot.setPositions( false, true, true, false ); 252 break; 253 case 13: 254 Frame.main.robot.setPositions( false, false, false, false ); 255 break; 256 case 14: 257 Frame.main.robot.setPositions( false, true, true, false ); 258 break; 259 case 15: 260 Frame.main.robot.setPositions( false, false, false, false ); 261 break; 262 case 16: 263 break; 264 case 17: 265 Frame.main.robot.setPositions( false, false, true, false ); 266 break; 267 case 18: 268 Frame.main.robot.setPositions( false, false, false, true ); 269 break; 270 case 19: 271 Frame.main.robot.setPositions( false, false, true, false ); 272 break; 273 case 20: 274 Frame.main.robot.setPositions( false, false, false, true ); 275 break; 276 case 21: 277 Frame.main.robot.setPositions( false, false, true, false ); 278 break; 279 case 22: 280 Frame.main.robot.setPositions( false, false, false, true ); 281 break; 282 case 23: 283 Frame.main.robot.setPositions( true, true, true, true ); 284 break; 285 case 24: 286 break; 287 case 25: 288 break; 289 case 26: 290 Frame.main.robot.setPositions( false, false, false, false ); 291 break; 292 case 27: 293 JOptionPane.showMessageDialog( Frame.this, "Cha fatica!", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE ); 294 JOptionPane.showMessageDialog( Frame.this, Frame.main.robot.getName() + " è tornato alla posizione di partenza", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE ); 295 break; 296 default: 297 timer.stop(); 298 break; 299 } 300 Frame.this.robotPanel.setImages(); 301 Frame.this.robotPanel.repaint(); 302 Frame.this.repaint(); 303 } 304 } 305 ); 306 timer.start(); 307 } 308 try { 309 this.robotPanel.setImages(); 310 this.robotPanel.repaint(); 311 this.repaint(); 312 } catch ( NullPointerException n ) { } 313 } 314 }