package ecl.team2.project.weathersystem.client;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.IOException;
import java.net.URL;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import ecl.team2.project.weather.Weather;
import ecl.team2.project.weather.WeatherAndCurrent;
import ecl.team2.project.weather.WeatherInterface;
public class WeatherDialog extends javax.swing.JFrame implements WindowListener, ActionListener, ItemListener{
private static final long serialVersionUID = 1L;
WeatherInterface sws;
String chosencity="";
String unitTemp = "C";
String unitSpeed = "km";
ArrayList<JLabel> lblDates = null;
ArrayList<JLabel> lblDays = null;
ArrayList<JLabel> lblTempMaxes = null;
ArrayList<JLabel> lblTempMins = null;
ArrayList<JLabel> lblImages = null;
ArrayList<JLabel> lblRains = null;
ArrayList<JLabel> lblClouds = null;
ArrayList<JLabel> lblWinds = null;
ArrayList<JLabel> lblWindDirections = null;
/** Creates new form WeatherDialog */
public WeatherDialog() {
initComponents();
this.setTitle("Weather Anywhere v1.0.0");
this.addWindowListener(this);
jMenuItem1.addActionListener(this); //about
jMenuItem2.addActionListener(this); //help
jMenuItem3.addActionListener(this); //setup location
jMenuItem4.addActionListener(this); //options
jMenuItem5.addActionListener(this); //exit
btnChange.addActionListener(this); //change unit
// Display the window.
this.pack();
this.setSize(500, 690);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setLocationRelativeTo(null);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
private void initComponents() {
panelCurrentCondition = new javax.swing.JPanel();
lblCondition = new javax.swing.JLabel();
lblWind = new javax.swing.JLabel();
lblTemp = new javax.swing.JLabel();
lblHumidity = new javax.swing.JLabel();
lblPressure = new javax.swing.JLabel();
lblCloud = new javax.swing.JLabel();
lblVisibility = new javax.swing.JLabel();
lblCurrentImage = new JLabel();
jLabel1 = new javax.swing.JLabel();
panel0 = new javax.swing.JPanel();
lblDate0 = new javax.swing.JLabel();
lblDay0 = new javax.swing.JLabel();
lblMaxtemp0 = new javax.swing.JLabel();
lblMintemp0 = new javax.swing.JLabel();
lblImage0 = new javax.swing.JLabel();
lblRain0 = new javax.swing.JLabel();
lblCloud0 = new javax.swing.JLabel();
lblWind0 = new javax.swing.JLabel();
lblWindDirection0 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
panel1 = new javax.swing.JPanel();
lblDate1 = new javax.swing.JLabel();
lblDay1 = new javax.swing.JLabel();
lblMaxtemp1 = new javax.swing.JLabel();
lblMintemp1 = new javax.swing.JLabel();
lblImage1 = new javax.swing.JLabel();
lblRain1 = new javax.swing.JLabel();
lblCloud1 = new javax.swing.JLabel();
lblWind1 = new javax.swing.JLabel();
lblWindDirection1 = new javax.swing.JLabel();
panel2 = new javax.swing.JPanel();
lblDate2 = new javax.swing.JLabel();
lblDay2 = new javax.swing.JLabel();
lblMaxtemp2 = new javax.swing.JLabel();
lblMintemp2 = new javax.swing.JLabel();
lblImage2 = new javax.swing.JLabel();
lblRain2 = new javax.swing.JLabel();
lblCloud2 = new javax.swing.JLabel();
lblWind2 = new javax.swing.JLabel();
lblWindDirection2 = new javax.swing.JLabel();
panel3 = new javax.swing.JPanel();
lblDate3 = new javax.swing.JLabel();
lblDay3 = new javax.swing.JLabel();
lblMaxtemp3 = new javax.swing.JLabel();
lblMintemp3 = new javax.swing.JLabel();
lblImage3 = new javax.swing.JLabel();
lblRain3 = new javax.swing.JLabel();
lblCloud3 = new javax.swing.JLabel();
lblWind3 = new javax.swing.JLabel();
lblWindDirection3 = new javax.swing.JLabel();
panel5 = new javax.swing.JPanel();
btnChange = new javax.swing.JButton();
jMenuBar1 = new javax.swing.JMenuBar();
jMenu1 = new javax.swing.JMenu();
jMenuItem3 = new javax.swing.JMenuItem();
jMenuItem4 = new javax.swing.JMenuItem();
jMenuItem5 = new javax.swing.JMenuItem();
jMenu2 = new javax.swing.JMenu();
jMenuItem2 = new javax.swing.JMenuItem();
jMenuItem1 = new javax.swing.JMenuItem();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
panelCurrentCondition.setBorder(javax.swing.BorderFactory.createEtchedBorder());
javax.swing.GroupLayout panelCurrentConditionLayout = new javax.swing.GroupLayout(panelCurrentCondition);
panelCurrentCondition.setLayout(panelCurrentConditionLayout);
panelCurrentConditionLayout.setHorizontalGroup(
panelCurrentConditionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelCurrentConditionLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelCurrentConditionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblTemp)
.addComponent(lblCondition)
.addComponent(lblWind))
.addGap(33, 33, 33)
.addGroup(panelCurrentConditionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblPressure)
.addComponent(lblHumidity)
.addComponent(lblCloud)
.addComponent(lblVisibility))
.addGap(79, 79, 79)
.addComponent(lblCurrentImage, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(22, 22, 22))
);
panelCurrentConditionLayout.setVerticalGroup(
panelCurrentConditionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelCurrentConditionLayout.createSequentialGroup()
.addContainerGap()
.addGroup(panelCurrentConditionLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panelCurrentConditionLayout.createSequentialGroup()
.addGap(20, 20, 20)
.addComponent(lblCondition)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblWind))
.addComponent(lblTemp)
.addGroup(panelCurrentConditionLayout.createSequentialGroup()
.addComponent(lblHumidity)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblPressure)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblCloud)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lblVisibility))
.addComponent(lblCurrentImage, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 74, Short.MAX_VALUE))
.addContainerGap())
);
jLabel1.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
jLabel1.setText("Current Condition");
panel0.setBorder(javax.swing.BorderFactory.createEtchedBorder());
javax.swing.GroupLayout panel0Layout = new javax.swing.GroupLayout(panel0);
panel0.setLayout(panel0Layout);
panel0Layout.setHorizontalGroup(
panel0Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel0Layout.createSequentialGroup()
.addContainerGap()
.addGroup(panel0Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblDate0)
.addComponent(lblDay0))
.addGap(18, 18, 18)
.addComponent(lblImage0, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(26, 26, 26)
.addGroup(panel0Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(panel0Layout.createSequentialGroup()
.addComponent(lblMaxtemp0)
.addGap(18, 18, 18)
.addComponent(lblRain0)
.addGap(31, 31, 31)
.addComponent(lblWind0))
.addGroup(panel0Layout.createSequentialGroup()
.addComponent(lblMintemp0)
.addGap(31, 31, 31)
.addComponent(lblCloud0)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(lblWindDirection0)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panel0Layout.setVerticalGroup(
panel0Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel0Layout.createSequentialGroup()
.addGroup(panel0Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, panel0Layout.createSequentialGroup()
.addContainerGap()
.addComponent(lblImage0, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, panel0Layout.createSequentialGroup()
.addGap(16, 16, 16)
.addComponent(lblDay0)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(lblDate0))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, panel0Layout.createSequentialGroup()
.addGap(20, 20, 20)
.addGroup(panel0Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblRain0)
.addComponent(lblWind0)
.addComponent(lblMaxtemp0))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panel0Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblCloud0)
.addComponent(lblMintemp0)
.addComponent(lblWindDirection0))))
.addContainerGap())
);
jLabel2.setFont(new java.awt.Font("Tahoma", 1, 11)); // NOI18N
jLabel2.setText("Forecast");
panel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());
javax.swing.GroupLayout panel1Layout = new javax.swing.GroupLayout(panel1);
panel1.setLayout(panel1Layout);
panel1Layout.setHorizontalGroup(
panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblDate1)
.addComponent(lblDay1))
.addGap(18, 18, 18)
.addComponent(lblImage1, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(26, 26, 26)
.addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(panel1Layout.createSequentialGroup()
.addComponent(lblMaxtemp1)
.addGap(18, 18, 18)
.addComponent(lblRain1)
.addGap(31, 31, 31)
.addComponent(lblWind1))
.addGroup(panel1Layout.createSequentialGroup()
.addComponent(lblMintemp1)
.addGap(31, 31, 31)
.addComponent(lblCloud1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(lblWindDirection1)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panel1Layout.setVerticalGroup(
panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel1Layout.createSequentialGroup()
.addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, panel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(lblImage1, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, panel1Layout.createSequentialGroup()
.addGap(16, 16, 16)
.addComponent(lblDay1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(lblDate1))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, panel1Layout.createSequentialGroup()
.addGap(20, 20, 20)
.addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblRain1)
.addComponent(lblWind1)
.addComponent(lblMaxtemp1))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblCloud1)
.addComponent(lblMintemp1)
.addComponent(lblWindDirection1))))
.addContainerGap())
);
panel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());
javax.swing.GroupLayout panel2Layout = new javax.swing.GroupLayout(panel2);
panel2.setLayout(panel2Layout);
panel2Layout.setHorizontalGroup(
panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblDate2)
.addComponent(lblDay2))
.addGap(18, 18, 18)
.addComponent(lblImage2, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(26, 26, 26)
.addGroup(panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(panel2Layout.createSequentialGroup()
.addComponent(lblMaxtemp2)
.addGap(18, 18, 18)
.addComponent(lblRain2)
.addGap(31, 31, 31)
.addComponent(lblWind2))
.addGroup(panel2Layout.createSequentialGroup()
.addComponent(lblMintemp2)
.addGap(31, 31, 31)
.addComponent(lblCloud2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(lblWindDirection2)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panel2Layout.setVerticalGroup(
panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel2Layout.createSequentialGroup()
.addGroup(panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, panel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(lblImage2, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, panel2Layout.createSequentialGroup()
.addGap(16, 16, 16)
.addComponent(lblDay2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(lblDate2))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, panel2Layout.createSequentialGroup()
.addGap(20, 20, 20)
.addGroup(panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblRain2)
.addComponent(lblWind2)
.addComponent(lblMaxtemp2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblCloud2)
.addComponent(lblMintemp2)
.addComponent(lblWindDirection2))))
.addContainerGap())
);
panel3.setBorder(javax.swing.BorderFactory.createEtchedBorder());
javax.swing.GroupLayout panel3Layout = new javax.swing.GroupLayout(panel3);
panel3.setLayout(panel3Layout);
panel3Layout.setHorizontalGroup(
panel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(panel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(lblDate3)
.addComponent(lblDay3))
.addGap(18, 18, 18)
.addComponent(lblImage3, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(26, 26, 26)
.addGroup(panel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(panel3Layout.createSequentialGroup()
.addComponent(lblMaxtemp3)
.addGap(18, 18, 18)
.addComponent(lblRain3)
.addGap(31, 31, 31)
.addComponent(lblWind3))
.addGroup(panel3Layout.createSequentialGroup()
.addComponent(lblMintemp3)
.addGap(31, 31, 31)
.addComponent(lblCloud3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(lblWindDirection3)))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panel3Layout.setVerticalGroup(
panel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel3Layout.createSequentialGroup()
.addGroup(panel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, panel3Layout.createSequentialGroup()
.addContainerGap()
.addComponent(lblImage3, javax.swing.GroupLayout.DEFAULT_SIZE, 44, Short.MAX_VALUE))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, panel3Layout.createSequentialGroup()
.addGap(16, 16, 16)
.addComponent(lblDay3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(lblDate3))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, panel3Layout.createSequentialGroup()
.addGap(20, 20, 20)
.addGroup(panel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblRain3)
.addComponent(lblWind3)
.addComponent(lblMaxtemp3))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lblCloud3)
.addComponent(lblMintemp3)
.addComponent(lblWindDirection3))))
.addContainerGap())
);
panel5.setBorder(javax.swing.BorderFactory.createEmptyBorder());
this.btnChange.setText("Change to US System");
javax.swing.GroupLayout panel5Layout = new javax.swing.GroupLayout(panel5);
panel5.setLayout(panel5Layout);
panel5Layout.setHorizontalGroup(
panel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(panel5Layout.createSequentialGroup()
.addGap(96, 96, 96)
.addComponent(this.btnChange, javax.swing.GroupLayout.PREFERRED_SIZE, 159, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(111, Short.MAX_VALUE))
);
panel5Layout.setVerticalGroup(
panel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panel5Layout.createSequentialGroup()
.addContainerGap(21, Short.MAX_VALUE)
.addComponent(this.btnChange)
.addContainerGap())
);
/*arraylists to hold all the labels*/
lblDates = new ArrayList<JLabel>();
lblDates.add(this.lblDate0);lblDates.add(this.lblDate1);lblDates.add(this.lblDate2);lblDates.add(this.lblDate3);
lblDays = new ArrayList<JLabel>();
lblDays.add(this.lblDay0);lblDays.add(this.lblDay1);lblDays.add(this.lblDay2);lblDays.add(this.lblDay3);
lblTempMaxes = new ArrayList<JLabel>();
lblTempMaxes.add(this.lblMaxtemp0);lblTempMaxes.add(this.lblMaxtemp1);lblTempMaxes.add(this.lblMaxtemp2);lblTempMaxes.add(this.lblMaxtemp3);
lblTempMins = new ArrayList<JLabel>();
lblTempMins.add(this.lblMintemp0);lblTempMins.add(this.lblMintemp1);lblTempMins.add(this.lblMintemp2);lblTempMins.add(this.lblMintemp3);
lblImages = new ArrayList<JLabel>();
lblImages.add(this.lblImage0);lblImages.add(this.lblImage1);lblImages.add(this.lblImage2);lblImages.add(this.lblImage3);
lblRains = new ArrayList<JLabel>();
lblRains.add(this.lblRain0);lblRains.add(this.lblRain1);lblRains.add(this.lblRain2);lblRains.add(this.lblRain3);
lblClouds = new ArrayList<JLabel>();
lblClouds.add(this.lblCloud0);lblClouds.add(this.lblCloud1);lblClouds.add(this.lblCloud2);lblClouds.add(this.lblCloud3);
lblWinds = new ArrayList<JLabel>();
lblWinds.add(this.lblWind0);lblWinds.add(this.lblWind1);lblWinds.add(this.lblWind2);lblWinds.add(this.lblWind3);
lblWindDirections = new ArrayList<JLabel>();
lblWindDirections.add(this.lblWindDirection0);lblWindDirections.add(this.lblWindDirection1);lblWindDirections.add(this.lblWindDirection2);lblWindDirections.add(this.lblWindDirection3);
jMenu1.setText("File");
jMenuItem3.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_E, java.awt.event.InputEvent.CTRL_MASK));
jMenuItem3.setText("Setup Location...");
jMenu1.add(jMenuItem3);
jMenuItem4.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_O, java.awt.event.InputEvent.CTRL_MASK));
jMenuItem4.setText("Options...");
jMenu1.add(jMenuItem4);
jMenuItem5.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK));
jMenuItem5.setText("Exit");
jMenu1.add(jMenuItem5);
jMenuBar1.add(jMenu1);
jMenu2.setText("Help");
jMenuItem2.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F1, 0));
jMenuItem2.setText("Help");
jMenu2.add(jMenuItem2);
jMenuItem1.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_F10, 0));
jMenuItem1.setText("About");
jMenu2.add(jMenuItem1);
jMenuBar1.add(jMenu2);
setJMenuBar(jMenuBar1);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(panel5, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panelCurrentCondition, javax.swing.GroupLayout.DEFAULT_SIZE, 370, Short.MAX_VALUE)
.addComponent(panel0, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel2)
.addComponent(jLabel1)
.addComponent(panel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panel3, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(panelCurrentCondition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel2)
.addGap(4, 4, 4)
.addComponent(panel0, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(4, 4, 4)
.addComponent(panel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(4, 4, 4)
.addComponent(panel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(4, 4, 4)
.addComponent(panel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 9, Short.MAX_VALUE)
.addComponent(panel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
pack();
}// </editor-fold>
public void ShowWeather(String city){
try {
//get a current condition here
// CurrentCondition c = c.getCurrent();
WeatherAndCurrent c= sws.getWeather(city);
this.jLabel1.setText("Current Condition in "+ city.toUpperCase());
if(unitTemp.toLowerCase().equals("c")){
this.lblTemp.setText(c.getCurrent().getTemp_C()+" ºC");
}else{
this.lblTemp.setText(c.getCurrent().getTemp_F()+" ºF");
}
this.lblCondition.setText(c.getCurrent().getWeatherDesc());
if(unitSpeed.toLowerCase().equals("km")){
this.lblWind.setText(c.getCurrent().getWindspeedKmph()+" kmph from " + c.getCurrent().getWinddir16Point());
}
else{
this.lblWind.setText(c.getCurrent().getWindspeedMiles()+" mph from " + c.getCurrent().getWinddir16Point());
}
this.lblHumidity.setText("Humidity: "+c.getCurrent().getHumidity()+" %");
this.lblPressure.setText("Pressure: "+c.getCurrent().getPressure()+" mb");
this.lblCloud.setText("Cloud: "+c.getCurrent().getCloudcover()+" %");
this.lblVisibility.setText("Visibility: "+c.getCurrent().getVisibility()+" km");
Image image = null;
try {
//Read from a URL
URL url = new URL(c.getCurrent().getWeatherIconUrl());
image = ImageIO.read(url);
} catch (IOException e) {
}
this.lblCurrentImage.setIcon(new ImageIcon(image));
//get the weathers here
int index = 0;
for(index = 0;index<4; index++){
Weather w = c.getWeathers().get(index);
if(unitTemp.toUpperCase().equals("C")){
this.lblTempMaxes.get(index).setText("Max: "+w.getTempMaxC() + " ºC");
this.lblTempMins.get(index).setText("Min: "+w.getTempMinC() + " ºC");
}else{
this.lblTempMaxes.get(index).setText("Max: "+w.getTempMaxF() + " ºF");
this.lblTempMins.get(index).setText("Min: "+w.getTempMinF() + " ºF");
}
this.lblImages.get(index).setText("image");
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date d = df.parse(w.getDate());
System.out.println("date: "+ w.getDate());
@SuppressWarnings("deprecation")
int i = d.getDay();
String day;
switch(i){
case 0:
day = "Sun"; break;
case 1:
day = "Mon"; break;
case 2:
day = "Tue"; break;
case 3:
day = "Wed"; break;
case 4:
day = "Thu"; break;
case 5:
day = "Fri"; break;
case 6:
day = "Sat"; break;
default:
day = "Err";
}
this.lblDays.get(index).setText(day);
this.lblDates.get(index).setText(w.getDate());
this.lblRains.get(index).setText("PPT: "+w.getPrecipMM() + "mm");
this.lblClouds.get(index).setText(w.getWeatherDesc());
String speed="";
if(unitSpeed.equals("km")){
speed = w.getWindspeedKmph()+" km/hr";
}
else{speed = w.getWindspeedMiles()+" mile/hr";}
this.lblWinds.get(index).setText("Wind: "+speed);
this.lblWindDirections.get(index).setText(w.getWinddir16Point());
Image imag = null;
try {
//Read from a URL
System.out.println("w " + w.getWeatherIconUrl());
URL aurl = new URL(w.getWeatherIconUrl());
imag = ImageIO.read(aurl);
} catch (IOException e) {
}
this.lblImages.get(index).setIcon(new ImageIcon(imag));
}
}
catch (Exception ex){
System.err.println(ex.getMessage());
}
}
private static void createAndShowGUI(WeatherInterface ws) {
WeatherDialog frame = new WeatherDialog();
frame.sws = ws;
}
public static void runDialog(final WeatherInterface ws) {
// Schedule a job for the event-dispatching thread:
// creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(new Runnable() {
public void run() {
createAndShowGUI(ws);
}
});
}
/*
btnGo = new JButton("Go");
panel.add(btnGo);
btnGo.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
String chosencity = "Toronto";
ShowWeather(chosencity);
}
}
);
*
* */
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JMenu jMenu1;
private javax.swing.JMenu jMenu2;
private javax.swing.JMenuBar jMenuBar1;
private javax.swing.JMenuItem jMenuItem1;
private javax.swing.JMenuItem jMenuItem2;
private javax.swing.JMenuItem jMenuItem3;
private javax.swing.JMenuItem jMenuItem4;
private javax.swing.JMenuItem jMenuItem5;
private javax.swing.JLabel lblCloud;
private javax.swing.JLabel lblCloud0;
private javax.swing.JLabel lblCloud1;
private javax.swing.JLabel lblCloud2;
private javax.swing.JLabel lblCloud3;
private javax.swing.JLabel lblCondition;
private javax.swing.JLabel lblCurrentImage;
private javax.swing.JLabel lblDate0;
private javax.swing.JLabel lblDate1;
private javax.swing.JLabel lblDate2;
private javax.swing.JLabel lblDate3;
private javax.swing.JLabel lblDay0;
private javax.swing.JLabel lblDay1;
private javax.swing.JLabel lblDay2;
private javax.swing.JLabel lblDay3;
private javax.swing.JLabel lblHumidity;
private javax.swing.JLabel lblImage0;
private javax.swing.JLabel lblImage1;
private javax.swing.JLabel lblImage2;
private javax.swing.JLabel lblImage3;
private javax.swing.JLabel lblMaxtemp0;
private javax.swing.JLabel lblMaxtemp1;
private javax.swing.JLabel lblMaxtemp2;
private javax.swing.JLabel lblMaxtemp3;
private javax.swing.JLabel lblMintemp0;
private javax.swing.JLabel lblMintemp1;
private javax.swing.JLabel lblMintemp2;
private javax.swing.JLabel lblMintemp3;
private javax.swing.JLabel lblPressure;
private javax.swing.JLabel lblRain0;
private javax.swing.JLabel lblRain1;
private javax.swing.JLabel lblRain2;
private javax.swing.JLabel lblRain3;
private javax.swing.JLabel lblTemp;
private javax.swing.JLabel lblVisibility;
private javax.swing.JLabel lblWind;
private javax.swing.JLabel lblWind0;
private javax.swing.JLabel lblWind1;
private javax.swing.JLabel lblWind2;
private javax.swing.JLabel lblWind3;
private javax.swing.JLabel lblWindDirection0;
private javax.swing.JLabel lblWindDirection1;
private javax.swing.JLabel lblWindDirection2;
private javax.swing.JLabel lblWindDirection3;
private javax.swing.JPanel panel0;
private javax.swing.JPanel panel1;
private javax.swing.JPanel panel2;
private javax.swing.JPanel panel3;
private javax.swing.JPanel panelCurrentCondition;
private javax.swing.JPanel panel5;
private javax.swing.JButton btnChange;
// End of variables declaration
@Override
public void windowActivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosed(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowClosing(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeactivated(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowDeiconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowIconified(WindowEvent e) {
// TODO Auto-generated method stub
}
@Override
public void windowOpened(WindowEvent e) {
// TODO Auto-generated method stub
chosencity = "Toronto";
ShowWeather(chosencity);
System.out.println("im in windowopened action listener in weatherdialog.java");
}
@Override
public void itemStateChanged(ItemEvent e) {
// TODO Auto-generated method stub
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == btnChange){
//change unit
if(unitTemp.toLowerCase().equals("c")){
this.unitTemp = "f";
this.unitSpeed = "Mile";
this.btnChange.setText("Change to Metric System");
}
else{
this.unitTemp = "C";
this.unitSpeed = "km";
this.btnChange.setText("Change to US System");
}
System.out.println(this.unitTemp +" " + this.unitSpeed);
this.ShowWeather(chosencity);
}
else if(e.getSource() == jMenuItem1){
//about
JOptionPane.showMessageDialog(this,"Weather Anywhere v1.0.0","About",JOptionPane.PLAIN_MESSAGE);
}
else if(e.getSource() == jMenuItem2){
//help
JOptionPane.showMessageDialog(this,"Weather Anywhere v1.0.0\n\nTo search for a particular city. Select File>Location Setup. \nType the city name and press search.\n\nTo change the unit from metric to US or vice versa, click the button in\n the bottom of the main screen.","Help",JOptionPane.PLAIN_MESSAGE);
}
else if(e.getSource() == jMenuItem3){
//call location here
DialogSetLocation dialogSetLocation = new DialogSetLocation(new JFrame(), true);
dialogSetLocation.swss = this.sws;
dialogSetLocation.setLocation(300,400); //todo
dialogSetLocation.setVisible(true);
this.chosencity = dialogSetLocation.chosencity;
this.ShowWeather(chosencity);
}
else if(e.getSource() == jMenuItem4){
//call options here
}
else if(e.getSource() == jMenuItem5){
//call exit here
this.setVisible(false);
this.dispose();
System.exit(0);
}
}
}