title: Java if statement that only runs when in debug mode
body: <p>I have an if statement that is only evaluated when in debug mode</p>
  
  <p>MyStuff class (the "main" class);</p>
  
  <pre><code>package com.lorenjz.jambii;
  
  import java.io.IOException;
  
  public class MyStuff {
  
     public static void main(String[] args)throws IOException {
        ControlGack gack = new ControlGack();
        gack.setVisible(true);
        new Thread() {
           public void run() {
              MainWindow mW = new MainWindow();
              mW.run();
          }}.start();
        Client c = new Client();
        try {
           c.run(null);
        } catch (IOException e) {
           e.printStackTrace();
        }
     }
  }
  </code></pre>
  
  <p>A window that extracts RGB color averages for the screen that it resides in:</p>
  
  <pre><code>package com.lorenjz.jambii;
  
  import java.awt.AWTException;
  
  public class MainWindow extends JFrame implements ComponentListener, Runnable{
  
      static int currentPixel;
      static int red;
      static int blue;
      static int green;
      private JPanel contentPane;
      static JPanel panel;
      static myPrefs mP;
      static Boolean serverState = false;
  
      public static class Globals{
          static int screenWidth = 1366;
          static int screenHeight = 768;
          static int RedforSend = 0;
      }
  
      public void run() {
  EventQueue.invokeLater(new Runnable() {
         public void run() {
            try {
               MainWindow frame = new MainWindow();
               frame.addComponentListener(frame);
               frame.setLocation(mP.getMWXPos(), mP.getMWYPos());
               frame.setVisible(true);
            } catch (Exception e) {
               e.printStackTrace();
            }
         }});
         while (true){
            Robot robot;
            try {
               robot = new Robot();
               BufferedImage screenShot =
                  robot.createScreenCapture(
                     new Rectangle(
                        new Dimension( Globals.screenWidth,Globals.screenHeight )));
               for (int xPosition = 0; xPosition &lt; Globals.screenWidth; xPosition ++) {
                  for (int yPosition = 0; yPosition &lt; Globals.screenHeight; yPosition++){
                     currentPixel = screenShot.getRGB(xPosition, yPosition);
                     red = red +(int) (255 &amp; (currentPixel &gt;&gt; 16));
                     green = green + (int) (255 &amp; (currentPixel &gt;&gt; 8));
                     blue = blue + (int) (255 &amp; (currentPixel));
                  }
               }
               int numberOfSidePixels = Globals.screenWidth * Globals.screenHeight;
               red = red /numberOfSidePixels;
               green = green /numberOfSidePixels;
               blue = blue /numberOfSidePixels;
               Globals.RedforSend = red;
               if(serverState==true){
                  Client.sendToServer(red,green,blue);
                  Client.newMessage();
               }
               Color background = new Color(red, green, blue);
               panel.setBackground(background);
            } catch (AWTException e) {
               e.printStackTrace();
            }
         }
      }
  
     public MainWindow() {
        mP = new myPrefs();
        mP.init();
        setBounds(100, 100, 175, 165);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);
        panel = new JPanel();
        panel.setBounds(20, 15, 135, 115);
        contentPane.add(panel);
     }
  
     void saveFrame(JFrame frame) throws IOException {
        String X = String.valueOf(frame.getX());
        String Y = String.valueOf(frame.getY());
        int xPos = frame.getX();
        mP.setMWXPos(xPos);
        int yPos = frame.getY();
        mP.setMWYPos(yPos);
      }
  
      @Override
      public void componentHidden(ComponentEvent e) {
      }
  
      @Override
      public void componentMoved(ComponentEvent e) {
        System.out.println(
           "componentMoved event from " + e.getComponent().getClass().getName());
        try {
           saveFrame((JFrame) e.getComponent());
        } catch (IOException e1) {
           e1.printStackTrace();
        }
      }
  
      @Override
      public void componentResized(ComponentEvent e) {
      }
  
      @Override
      public void componentShown(ComponentEvent e) {
        System.out.println(
           "shown event from " + e.getComponent().getClass().getName());
      }
  
      public static void switchServerState(){
        serverState = true;
      }
  }
  </code></pre>
  
  <p>And Finally the client class that I would like to forward the RGB Data onto a server:</p>
  
  <pre><code>package com.lorenjz.jambii;
  
  import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStreamReader;
  import java.io.PrintWriter;
  import java.net.Socket;
  import java.net.UnknownHostException;
  
  public class Client {
      static String fromUser;
      static Boolean nm = false;
      //static PrintWriter out;
      public void run(String[] args) throws IOException {
  
          Socket kkSocket = null;
          PrintWriter out = null;
          BufferedReader in = null;
  
          try {
              kkSocket = new Socket("LorensMBA.local", 4444);
              // TODO code server for pref from controlGack text input
              out = new PrintWriter(kkSocket.getOutputStream(), true);
              in = new BufferedReader(new InputStreamReader(kkSocket.getInputStream()));
          } catch (UnknownHostException e) {
              System.err.println("Don't know about host: LorensMBA.");
              //System.exit(1);
          } catch (IOException e) {
              System.err.println("Couldn't get I/O for the connection to: LorensMBA.");
              //System.exit(1);
          }
  
          BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
          String fromServer;
  
  
          while ((fromServer = in.readLine()) != null) {
              System.out.println("Server: " + fromServer);
  
              if(fromServer.equals("Ready to Go")){
                  System.out.print("Rockin");
                  out.print("myStuff");
                  MainWindow.switchServerState();
                  }
  
              if (fromServer.equals("Bye."))
                  break;
  
              //fromUser = stdIn.readLine();
  
  
              //if (nm = true){
              if (fromUser != null) {
                  System.out.println("Client: " + fromUser);
                  out.println(fromUser);
  
  
              }
              nm = false;
              //}
          }
  
          out.close();
          in.close();
          stdIn.close();
          kkSocket.close();
      }
  
      public static void sendToServer(int redV, int greenV, int blueV){
          //out.println("Stupid");
          fromUser = "@R"+ redV+",G"+greenV+",B"+blueV;
      }
      public static void newMessage(){
          nm = true;
      }
  }
  
  
  '
  </code></pre>
  
  <p>"if (fromUser != null)" in the client class only seems to be evaluated when I set a breakpoint.  I must be missing something here.  The way that I intend for this to all work out is that the MainWindow will send an RGB value to the client class every time that a screenshot.  Can someone point me in the direction of where I have gone wrong?</p>
  
  <p>Thanks,
  Loren</p>