To load this file without formatting, visit http://whoyouknow.co.uk/ants/java/17.1/src/ants/control/AntControl.java. This is a spam-protection measure; sorry for the inconvenience.
· AntControl.java ·
1/* 2 * AntControl.java 3 * 4 * Created on 28 November 2006, 00:49 5 */ 6 7package ants.control; 8 9import ants.Ant; 10import ants.Grid; 11import ants.event.AntEvent; 12import ants.event.AntListener; 13import ants.event.EnterNestAntEvent; 14import ants.event.ExitNestAntEvent; 15import ants.event.FoodUpdateEvent; 16import ants.event.NewAntEvent; 17import ants.event.PickedUpFoodAntEvent; 18import java.awt.event.ActionEvent; 19import java.awt.event.ActionListener; 20import javax.swing.DefaultListModel; 21 22/** 23 * 24 * @author James Hamilton 25 */ 26public class AntControl extends javax.swing.JFrame implements AntListener, Runnable { 27 28 private static AntControl singleton = null; 29 30 private int totalAnts = 0; 31 private int antsInNest = 0; 32 private int antsRoaming = 0; 33 private int antsCarryingFood = 0; 34 35 private int totalFood = 0; 36 private int collectedFood = 0; 37 private int remainingFood = 0; 38 39 private long startTime = System.currentTimeMillis(); 40 41 private boolean running = true; 42 43 private Thread move; 44 private DefaultListModel myAnts = new DefaultListModel(); 45 /** Creates new form AntControl */ 46 public AntControl() { 47 initComponents(); 48 49 this.setLocation(500, 0); 50 51 btnPause.addActionListener( new ActionListener() { 52 public void actionPerformed(ActionEvent e) { 53 for(Ant a : Grid.getInstance().getNest().getAnts()) { 54 a.pause(); 55 } 56 } 57 }); 58 59 move = new Thread(this); 60 move.setDaemon(true); 61 move.start(); 62 63 64 } 65 66 public void antEventHandler(AntEvent event) { 67 if(event instanceof NewAntEvent) { 68 totalAnts++; 69 antsInNest++; 70 Ant a = (Ant)event.getSource(); 71 myAnts.addElement(a); 72 lstAnts.setModel(myAnts); 73 74 }else if(event instanceof ExitNestAntEvent) { 75 antsRoaming++; 76 antsInNest--; 77 }else if(event instanceof EnterNestAntEvent) { 78 antsCarryingFood--; 79 antsInNest++; 80 collectedFood++; 81 remainingFood = Grid.getInstance().getGridSquares().getFoodGridSquares().size();//totalFood - collectedFood; 82 }else if(event instanceof PickedUpFoodAntEvent) { 83 antsCarryingFood++; 84 antsRoaming--; 85 }else if(event instanceof FoodUpdateEvent) { 86 totalFood = Grid.getInstance().getGridSquares().getFoodGridSquares().size(); 87 remainingFood = totalFood; 88 } 89 90 txtNumberOfAnts.setText(Integer.toString(getTotalAnts())); 91 txtNumberOfAntsInNest.setText(Integer.toString(getAntsInNest())); 92 txtNumberOfAntsCarryingFood.setText(Integer.toString(getAntsCarryingFood())); 93 txtNumberOfAntsRoaming.setText(Integer.toString(getAntsRoaming())); 94 95 txtTotalFood.setText(Integer.toString(getTotalFood())); 96 txtCollectedFood.setText(Integer.toString(getCollectedFood())); 97 txtRemainingFood.setText(Integer.toString(getRemainingFood())); 98 if(remainingFood == 0) running = false; 99 else running = true; 100 } 101 102 public void run() { 103 while(running) { 104 long currentTime = (System.currentTimeMillis() - startTime); 105 106 txtTime.setText(millisecondsToString(currentTime)); 107 108 try { 109 110 move.sleep(1000); 111 }catch (InterruptedException e) { 112 113 } 114 } 115 } 116 117 public static String millisecondsToString(long time) { 118 //http://www.uk-dave.com/bytes/java/long2time.php 119 int milliseconds = (int)(time % 1000); 120 int seconds = (int)((time/1000) % 60); 121 int minutes = (int)((time/60000) % 60); 122 int hours = (int)((time/3600000) % 24); 123 String millisecondsStr = (milliseconds<10 ? "00" : (milliseconds<100 ? "0" : ""))+milliseconds; 124 String secondsStr = (seconds<10 ? "0" : "")+seconds; 125 String minutesStr = (minutes<10 ? "0" : "")+minutes; 126 String hoursStr = (hours<10 ? "0" : "")+hours; 127 return new String(hoursStr+":"+minutesStr+":"+secondsStr);//+"."+millisecondsStr); 128 } 129 130 public static AntControl getInstance() { 131 if(getSingleton() == null) 132 setSingleton(new AntControl()); 133 return getSingleton(); 134 } 135 136 /** This method is called from within the constructor to 137 * initialize the form. 138 * WARNING: Do NOT modify this code. The content of this method is 139 * always regenerated by the Form Editor. 140 */ 141 // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents 142 private void initComponents() { 143 jLabel1 = new javax.swing.JLabel(); 144 jLabel2 = new javax.swing.JLabel(); 145 jLabel3 = new javax.swing.JLabel(); 146 txtNumberOfAntsInNest = new javax.swing.JTextField(); 147 txtNumberOfAntsRoaming = new javax.swing.JTextField(); 148 jLabel4 = new javax.swing.JLabel(); 149 jLabel5 = new javax.swing.JLabel(); 150 txtNumberOfAntsCarryingFood = new javax.swing.JTextField(); 151 jLabel6 = new javax.swing.JLabel(); 152 txtNumberOfAnts = new javax.swing.JTextField(); 153 txtTotalFood = new javax.swing.JTextField(); 154 jLabel7 = new javax.swing.JLabel(); 155 jLabel8 = new javax.swing.JLabel(); 156 jLabel9 = new javax.swing.JLabel(); 157 txtCollectedFood = new javax.swing.JTextField(); 158 txtRemainingFood = new javax.swing.JTextField(); 159 jLabel10 = new javax.swing.JLabel(); 160 jLabel11 = new javax.swing.JLabel(); 161 txtTime = new javax.swing.JTextField(); 162 jScrollPane1 = new javax.swing.JScrollPane(); 163 lstAnts = new javax.swing.JList(); 164 btnPause = new javax.swing.JButton(); 165 166 setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE); 167 jLabel1.setText("Ants"); 168 169 jLabel2.setText("Total"); 170 171 jLabel3.setText("In Nest"); 172 173 txtNumberOfAntsInNest.setEditable(false); 174 175 txtNumberOfAntsRoaming.setEditable(false); 176 177 jLabel4.setText("Roaming"); 178 179 jLabel5.setText("Carrying Food"); 180 181 txtNumberOfAntsCarryingFood.setEditable(false); 182 183 txtNumberOfAnts.setEditable(false); 184 185 txtTotalFood.setEditable(false); 186 187 jLabel7.setText("Food"); 188 189 jLabel8.setText("Total"); 190 191 jLabel9.setText("Collected"); 192 193 txtCollectedFood.setEditable(false); 194 195 txtRemainingFood.setEditable(false); 196 197 jLabel10.setText("Remaining"); 198 199 jLabel11.setText("Time Elapsed"); 200 201 txtTime.setEditable(false); 202 203 lstAnts.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION); 204 jScrollPane1.setViewportView(lstAnts); 205 206 btnPause.setText("Pause"); 207 208 org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane()); 209 getContentPane().setLayout(layout); 210 layout.setHorizontalGroup( 211 layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 212 .add(layout.createSequentialGroup() 213 .addContainerGap() 214 .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 93, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 215 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 216 .add(layout.createSequentialGroup() 217 .add(40, 40, 40) 218 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 219 .add(layout.createSequentialGroup() 220 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 221 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 222 .add(layout.createSequentialGroup() 223 .add(41, 41, 41) 224 .add(jLabel6, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 27, Short.MAX_VALUE) 225 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 226 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 227 .add(layout.createSequentialGroup() 228 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 229 .add(txtNumberOfAntsInNest, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 27, Short.MAX_VALUE) 230 .add(txtNumberOfAntsRoaming, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 27, Short.MAX_VALUE) 231 .add(txtNumberOfAntsCarryingFood, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 27, Short.MAX_VALUE)) 232 .add(25, 25, 25)) 233 .add(layout.createSequentialGroup() 234 .add(txtNumberOfAnts, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 27, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 235 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED))) 236 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 237 .add(jLabel2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 36, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 238 .add(jLabel5) 239 .add(jLabel4) 240 .add(jLabel3)) 241 .add(391, 391, 391)) 242 .add(layout.createSequentialGroup() 243 .add(53, 53, 53) 244 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 245 .add(jLabel1) 246 .add(jLabel7)) 247 .add(506, 506, 506)))) 248 .add(layout.createSequentialGroup() 249 .add(68, 68, 68) 250 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 251 .add(layout.createSequentialGroup() 252 .add(txtTotalFood, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 27, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 253 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)) 254 .add(layout.createSequentialGroup() 255 .add(txtCollectedFood, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 27, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 256 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)) 257 .add(layout.createSequentialGroup() 258 .add(txtRemainingFood, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 27, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 259 .add(25, 25, 25))) 260 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 261 .add(jLabel9) 262 .add(jLabel8) 263 .add(jLabel10)) 264 .add(414, 414, 414)))) 265 .add(org.jdesktop.layout.GroupLayout.TRAILING, layout.createSequentialGroup() 266 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 267 .add(btnPause) 268 .add(30, 30, 30) 269 .add(jLabel11) 270 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 271 .add(txtTime, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 69, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 272 .add(178, 178, 178)))) 273 ); 274 275 layout.linkSize(new java.awt.Component[] {txtNumberOfAntsCarryingFood, txtNumberOfAntsInNest, txtNumberOfAntsRoaming}, org.jdesktop.layout.GroupLayout.HORIZONTAL); 276 277 layout.setVerticalGroup( 278 layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 279 .add(layout.createSequentialGroup() 280 .addContainerGap() 281 .add(jLabel1) 282 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 283 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING, false) 284 .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 254, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 285 .add(layout.createSequentialGroup() 286 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 287 .add(jLabel6, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 17, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 288 .add(layout.createSequentialGroup() 289 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 290 .add(jLabel2) 291 .add(txtNumberOfAnts, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) 292 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 293 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 294 .add(txtNumberOfAntsInNest, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 295 .add(jLabel3)) 296 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 297 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) 298 .add(layout.createSequentialGroup() 299 .add(txtNumberOfAntsRoaming, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 300 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 301 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 302 .add(txtNumberOfAntsCarryingFood, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 303 .add(jLabel5))) 304 .add(jLabel4)) 305 .add(10, 10, 10) 306 .add(jLabel7))) 307 .add(27, 27, 27) 308 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 309 .add(txtTotalFood, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 310 .add(jLabel8)) 311 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 312 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 313 .add(jLabel9) 314 .add(txtCollectedFood, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)) 315 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) 316 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 317 .add(txtRemainingFood, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 318 .add(jLabel10)) 319 .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) 320 .add(layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) 321 .add(jLabel11) 322 .add(txtTime, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) 323 .add(btnPause)))) 324 .addContainerGap(26, Short.MAX_VALUE)) 325 ); 326 pack(); 327 }// </editor-fold>//GEN-END:initComponents 328 329 /** 330 * @param args the command line arguments 331 */ 332 public static void main(String...args) { 333 java.awt.EventQueue.invokeLater(new Runnable() { 334 public void run() { 335 new AntControl().setVisible(true); 336 } 337 }); 338 } 339 340 public static AntControl getSingleton() { 341 return singleton; 342 } 343 344 public static void setSingleton(AntControl aSingleton) { 345 singleton = aSingleton; 346 } 347 348 public int getTotalAnts() { 349 return totalAnts; 350 } 351 352 public void setTotalAnts(int totalAnts) { 353 this.totalAnts = totalAnts; 354 } 355 356 public int getAntsInNest() { 357 return antsInNest; 358 } 359 360 public void setAntsInNest(int antsInNest) { 361 this.antsInNest = antsInNest; 362 } 363 364 public int getAntsRoaming() { 365 return antsRoaming; 366 } 367 368 public void setAntsRoaming(int antsRoaming) { 369 this.antsRoaming = antsRoaming; 370 } 371 372 public int getAntsCarryingFood() { 373 return antsCarryingFood; 374 } 375 376 public void setAntsCarryingFood(int antsCarryingFood) { 377 this.antsCarryingFood = antsCarryingFood; 378 } 379 380 public int getTotalFood() { 381 return totalFood; 382 } 383 384 public void setTotalFood(int totalFood) { 385 this.totalFood = totalFood; 386 } 387 388 public int getCollectedFood() { 389 return collectedFood; 390 } 391 392 public void setCollectedFood(int collectedFood) { 393 this.collectedFood = collectedFood; 394 } 395 396 public int getRemainingFood() { 397 return remainingFood; 398 } 399 400 public void setRemainingFood(int remainingFood) { 401 this.remainingFood = remainingFood; 402 } 403 404 // Variables declaration - do not modify//GEN-BEGIN:variables 405 private javax.swing.JButton btnPause; 406 private javax.swing.JLabel jLabel1; 407 private javax.swing.JLabel jLabel10; 408 private javax.swing.JLabel jLabel11; 409 private javax.swing.JLabel jLabel2; 410 private javax.swing.JLabel jLabel3; 411 private javax.swing.JLabel jLabel4; 412 private javax.swing.JLabel jLabel5; 413 private javax.swing.JLabel jLabel6; 414 private javax.swing.JLabel jLabel7; 415 private javax.swing.JLabel jLabel8; 416 private javax.swing.JLabel jLabel9; 417 private javax.swing.JScrollPane jScrollPane1; 418 private javax.swing.JList lstAnts; 419 private javax.swing.JTextField txtCollectedFood; 420 private javax.swing.JTextField txtNumberOfAnts; 421 private javax.swing.JTextField txtNumberOfAntsCarryingFood; 422 private javax.swing.JTextField txtNumberOfAntsInNest; 423 private javax.swing.JTextField txtNumberOfAntsRoaming; 424 private javax.swing.JTextField txtRemainingFood; 425 private javax.swing.JTextField txtTime; 426 private javax.swing.JTextField txtTotalFood; 427 // End of variables declaration//GEN-END:variables 428 429} 430
· AntControl.java ends ·
To load this file without formatting, visit http://whoyouknow.co.uk/ants/java/17.1/src/ants/control/AntControl.java. This is a spam-protection measure; sorry for the inconvenience.