public void actionPerformed(ActionEvent arg0) {
                                
                                // Parse DST input
                                int dst = comboBox_4.getSelectedIndex();
                                
                                //
                                // BEGIN DATE CALCULATIONS
                                //
                                Calendar cal = Calendar.getInstance();
                                int year = 0;
                                year = cal.get(Calendar.YEAR);
                                String yearString = Integer.toString(year); //future or past years not currently supported
                                int month = 0;
                                String monthString = "";
                                int day = 0;
                                String dayString = "";
                                
                                // User selected to use today's date
                                if (chckbxUseTodaysDate.isSelected())
                                {
                                        //Java starts counting months from 0
                                        //http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html#MONTH
                                        month = cal.get(Calendar.MONTH) + 1;
                                        day = cal.get(Calendar.DATE);
                                }
                                // User chose their own dates
                                else
                                {
                                        // Initializing month and day variables
                                        month = comboBox.getSelectedIndex() + 1;
                                        day = comboBox_1.getSelectedIndex() + 1;
                                }
                                
                                
                                // Assuring month and day are in 2 digit format
                                if (month < 10)
                                {
                                        monthString = "0" + Integer.toString(month);
                                }
                                else
                                {
                                        monthString = Integer.toString(month);
                                }
                                if (day < 10)
                                {
                                        dayString = "0" + Integer.toString(day);
                                }
                                else
                                {
                                        dayString = Integer.toString(day);
                                }
                                
                                // Concatenating the date into YYYYMMDD format
                                String dateString = yearString + monthString + dayString;
                                date = Integer.parseInt(dateString);
                                //
                                // END DATE CALCULATIONS
                                //
                                
                                //
                                // BEGIN INPUT PROCESSING
                                //
                                try
                                {
                                        // Initializing longitude and latitude variables from inputs
                                        latitude = Double.parseDouble(txtEnterLatitudeHere.getText());
                                        longitude = Double.parseDouble(txtEnterLongitudeHere.getText());
                                        
                                        // Longitude and Latitude input validity checking
                                        if (latitude < 0 && longitude < 0)
                                        {
                                                lblStatusReady.setText("Status: Negative coordinates should be indicated with S and W!");
                                        }
                                        else if (latitude < 0)
                                        {
                                                lblStatusReady.setText("Status: Negative latitude should be indicated with S!");
                                        }
                                        else if (latitude < 20 || latitude > 70)
                                        {
                                        		lblStatusReady.setText("Status: Latitudes lower than 20 and higher than 70 degrees not supported!");
                                        }
                                        else if (latitude > 70 && longitude > 180)
                                        {
                                                lblStatusReady.setText("Status: Invalid latitude and longitude!");
                                        }
                                        else if (longitude > 180)
                                        {
                                                lblStatusReady.setText("Status: Invalid longitude!");
                                        }
                                        else if (longitude < 0)
                                        {
                                                lblStatusReady.setText("Status: Negative longitude should be indicated with W!");
                                        }
                                        // Received valid inputs
                                        else
                                        {
                                                // APPLYING DIRECTIONAL MODIFIERS TO COORDINATES
                                                if (comboBox_2.getSelectedIndex() == 1)
                                                {
                                                        latitude = latitude * -1;
                                                }
                                                if (comboBox_3.getSelectedIndex() == 1)
                                                {
                                                        longitude = longitude * -1;
                                                }
                                                
                                                lblStatusReady.setText("Status: Drawing..");
                                                
                                                /////////////////////////////////////////////////////////
                                                //                                                     //
                                                // BEGIN SUNDIAL GENERATION CODE                       //
                                                //                                                     //
                                                // CURRENT AVAILABLE VARIABLES:                        //
                                                //  - date : User selected date in yyyymmdd int format //
                                                //  - latitude : Specified latitude as a double        //
                                                //  - longitude : Specified longitude as a double      //
                                                //  - dst : [0] - Estimate DST                         //
                                                //          [1] - No                                   //
                                                //          [2] - Yes                                  //
                                                //                                                     //
                                                /////////////////////////////////////////////////////////
                                        
                                                //Calculate values needed for drawing
                                                hourLineAngles = SundialCalculations.getHourLineAngles(latitude, longitude, date);
                                                lineLabels = SundialCalculations.getLineLabels(latitude, longitude, date, dst);
                                                gnomonAngle = SundialCalculations.getGnomonAngle(latitude);
                                                
                                                // For Debugging
                                                /*for (int i = 0; i < hourLineAngles.length; i++) {
                                                	System.out.println(hourLineAngles[i]);
                                                }
                                                for (int i = 0; i < lineLabels.length; i++) {
                                                	System.out.println(lineLabels[i]);
                                                }*/

                                           	 	
                                           	 	//Call to the Sundial Drawing classes                                
                                           	 	GnomonDrawing gnomonPanel = new GnomonDrawing(gnomonAngle);    
                                           	 	DialDrawing sundialPanel = new DialDrawing(hourLineAngles,lineLabels);
                                           	 	new DrawingFrame(gnomonPanel,sundialPanel);

                                                
                                                ///////////////////////////////////////////////////////
                                                //                                                   //
                                                // END SUNDIAL GENERATION CODE                       //
                                                //                                                   //
                                                ///////////////////////////////////////////////////////
                                                Thread.sleep(1000);
                                                lblStatusReady.setText("Status: Complete!");
                                        }
                                }
                                // Catches longitude and latitude inputs that cannot be parsed into numbers
                                catch (NumberFormatException e)
                                {
                                        lblStatusReady.setText("Status: Please enter latitude and longitude as numerical values!");
                                }
                                // Catches interrupt exception for the Thread.sleep() command
                                catch (InterruptedException e)
                                {
                                        // Do nothing for now
                                }
                                //
                                // END INPUT PROCESSING
                                //
                                
                        }