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 ·

Generated by CHIP: Code Highlighting in PHP, version 2.7.0.