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