package com.plugin.awesomejava.UIApp; import com.plugin.awesomejava.Forecast.FeedEntry; import java.awt.Color; import java.awt.Cursor; import java.awt.EventQueue; import java.awt.Font; import java.awt.Frame; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.awt.event.MouseMotionAdapter; import java.text.SimpleDateFormat; import java.util.Calendar; import javafx.scene.control.Alert; import javax.swing.ImageIcon; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JSeparator; import javax.swing.SwingConstants; import javax.swing.Timer; import javax.swing.WindowConstants; public class MainWeatherFrame extends javax.swing.JFrame { private JLabel CurrentTempLabel; private JLabel DayLambel; private JLabel DescriptionLabel; private JLabel DetailedLabel; private JLabel FRIIconJLabel; private JLabel FRITempJLabel; private JLabel HumidityLabel; private JLabel LocationLabel; private JLabel MONIconJLabel; private JLabel MONTempJLabel; private JLabel MaxTempLabel; private JLabel MinTempLabel; private JLabel PressureJLabel; private JLabel RefreshIconLabel; private JLabel SATIconJLabel; private JLabel SATTempJLabel; private JLabel SUNIconJLabel; private JLabel SUNTempJLabel; private JLabel THUIconJLabel; private JLabel THUTempJLabel; private JLabel TUEIconJLabel; private JLabel TUETempJLabel; private JLabel WEDIconJLabel; private JLabel WEDTempJLabel; private JLabel WeatherDayIcon; private JLabel WindLabel; private JLabel jLabel1; private JLabel jLabel11; private JLabel jLabel13; private JLabel jLabel15; private JLabel jLabel16; private JLabel jLabel18; private JLabel jLabel19; private JLabel jLabel2; private JLabel jLabel20; private JLabel jLabel21; private JLabel jLabel29; private JLabel jLabel37; private JLabel jLabel38; private JLabel jLabel39; private JLabel jLabel4; private JLabel jLabel40; private JLabel jLabel41; private JLabel jLabel42; private JLabel jLabel45; private JLabel jLabel6; private JPanel jPanel2; private JSeparator jSeparator1; private JSeparator jSeparator2; private JSeparator jSeparator3; private JSeparator jSeparator4; private JSeparator jSeparator5; private int xMouse, yMouse; private static final int delay = 30000; private Timer timer = null; private DynamicJLabelList DynJLabelList; private final FeedEntry entry; public MainWeatherFrame(FeedEntry entry) { this.entry = entry; initComponents(); InitTimer(); Init(); LocationLabel.setText(entry.getLocation() + "," + entry.getCountryCode()); pack(); setLocationRelativeTo(null); setVisible(true); } private void initComponents() { jSeparator4 = new JSeparator(); jPanel2 = new JPanel(); jLabel4 = new JLabel(); PressureJLabel = new JLabel(); jSeparator5 = new JSeparator(); jSeparator3 = new JSeparator(); jLabel45 = new JLabel(); WeatherDayIcon = new JLabel(); jSeparator2 = new JSeparator(); DayLambel = new JLabel(); CurrentTempLabel = new JLabel(); jSeparator1 = new JSeparator(); jLabel42 = new JLabel(); jLabel41 = new JLabel(); jLabel40 = new JLabel(); jLabel39 = new JLabel(); jLabel38 = new JLabel(); jLabel37 = new JLabel(); MONTempJLabel = new JLabel(); TUETempJLabel = new JLabel(); WEDTempJLabel = new JLabel(); THUTempJLabel = new JLabel(); FRITempJLabel = new JLabel(); SATTempJLabel = new JLabel(); SUNTempJLabel = new JLabel(); jLabel29 = new JLabel(); MONIconJLabel = new JLabel(); TUEIconJLabel = new JLabel(); WEDIconJLabel = new JLabel(); THUIconJLabel = new JLabel(); SUNIconJLabel = new JLabel(); SATIconJLabel = new JLabel(); FRIIconJLabel = new JLabel(); jLabel21 = new JLabel(); jLabel20 = new JLabel(); jLabel19 = new JLabel(); jLabel18 = new JLabel(); DescriptionLabel = new JLabel(); jLabel16 = new JLabel(); jLabel15 = new JLabel(); MaxTempLabel = new JLabel(); jLabel13 = new JLabel(); MinTempLabel = new JLabel(); jLabel11 = new JLabel(); DetailedLabel = new JLabel(); WindLabel = new JLabel(); HumidityLabel = new JLabel(); LocationLabel = new JLabel(); jLabel1 = new JLabel(); jLabel2 = new JLabel(); RefreshIconLabel = new JLabel(); jLabel6 = new JLabel(); setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); setUndecorated(true); addMouseMotionListener(new MouseMotionAdapter() { public void mouseDragged(MouseEvent evt) { formMouseDragged(evt); } }); addMouseListener(new MouseAdapter() { public void mousePressed(MouseEvent evt) { formMousePressed(evt); } }); getContentPane().setLayout(new AbsoluteLayout()); jPanel2.setBackground(new Color(255, 255, 255)); jPanel2.setLayout(new AbsoluteLayout()); jLabel4.setIcon(new ImageIcon(getClass().getResource("/Atmospheric Pressure-44 (1).png"))); // NOI18N jPanel2.add(jLabel4, new AbsoluteConstraints(10, 150, -1, 40)); PressureJLabel.setFont(new Font("Segoe UI", 0, 18)); // NOI18N PressureJLabel.setForeground(new Color(255, 255, 255)); PressureJLabel.setText("Pressure: 23.67 inHG "); jPanel2.add(PressureJLabel, new AbsoluteConstraints(70, 160, 220, -1)); jSeparator5.setBackground(new Color(255, 255, 255)); jSeparator5.setForeground(new Color(255, 255, 255)); jSeparator5.setOrientation(SwingConstants.VERTICAL); jPanel2.add(jSeparator5, new AbsoluteConstraints(700, 150, 10, 120)); jSeparator3.setBackground(new Color(255, 255, 255)); jSeparator3.setForeground(new Color(255, 255, 255)); jSeparator3.setOrientation(SwingConstants.VERTICAL); jPanel2.add(jSeparator3, new AbsoluteConstraints(300, 150, 10, 120)); jLabel45.setFont(new Font("Segoe UI", 0, 36)); // NOI18N jLabel45.setForeground(new Color(255, 255, 255)); jLabel45.setText("Weather Forecast in "); jPanel2.add(jLabel45, new AbsoluteConstraints(10, 80, -1, -1)); WeatherDayIcon.setIcon(new ImageIcon(getClass().getResource("/Cloud_100px.png"))); // NOI18N jPanel2.add(WeatherDayIcon, new AbsoluteConstraints(450, 100, 110, -1)); jSeparator2.setBackground(new Color(255, 255, 255)); jSeparator2.setForeground(new Color(255, 255, 255)); jPanel2.add(jSeparator2, new AbsoluteConstraints(790, 200, 110, 10)); DayLambel.setFont(new Font("Segoe UI", 0, 12)); // NOI18N DayLambel.setForeground(new Color(255, 255, 255)); DayLambel.setText("THURSDAY 9TH"); jPanel2.add(DayLambel, new AbsoluteConstraints(40, 430, 90, -1)); CurrentTempLabel.setFont(new Font("Segoe UI", 0, 56)); // NOI18N CurrentTempLabel.setForeground(new Color(255, 255, 255)); CurrentTempLabel.setText("20 °C"); jPanel2.add(CurrentTempLabel, new AbsoluteConstraints(40, 350, 140, 80)); jSeparator1.setBackground(new Color(255, 255, 255)); jSeparator1.setForeground(new Color(255, 255, 255)); jSeparator1.setOrientation(SwingConstants.VERTICAL); jPanel2.add(jSeparator1, new AbsoluteConstraints(190, 370, 10, 70)); jLabel42.setFont(new Font("Segoe UI", 1, 14)); // NOI18N jLabel42.setForeground(new Color(255, 255, 255)); jLabel42.setText("TUE"); jPanel2.add(jLabel42, new AbsoluteConstraints(370, 350, -1, -1)); jLabel41.setFont(new Font("Segoe UI", 1, 14)); // NOI18N jLabel41.setForeground(new Color(255, 255, 255)); jLabel41.setText("WED"); jPanel2.add(jLabel41, new AbsoluteConstraints(480, 350, -1, -1)); jLabel40.setFont(new Font("Segoe UI", 1, 14)); // NOI18N jLabel40.setForeground(new Color(255, 255, 255)); jLabel40.setText("THU"); jPanel2.add(jLabel40, new AbsoluteConstraints(580, 350, -1, -1)); jLabel39.setFont(new Font("Segoe UI", 1, 14)); // NOI18N jLabel39.setForeground(new Color(255, 255, 255)); jLabel39.setText("FRI"); jPanel2.add(jLabel39, new AbsoluteConstraints(690, 350, 20, -1)); jLabel38.setFont(new Font("Segoe UI", 1, 14)); // NOI18N jLabel38.setForeground(new Color(255, 255, 255)); jLabel38.setText("SAT"); jPanel2.add(jLabel38, new AbsoluteConstraints(790, 350, -1, -1)); jLabel37.setFont(new Font("Segoe UI", 1, 14)); // NOI18N jLabel37.setForeground(new Color(255, 255, 255)); jLabel37.setText("SUN"); jPanel2.add(jLabel37, new AbsoluteConstraints(890, 350, 40, -1)); MONTempJLabel.setFont(new Font("Segoe UI", 1, 12)); // NOI18N MONTempJLabel.setForeground(new Color(255, 255, 255)); MONTempJLabel.setText("23°"); jPanel2.add(MONTempJLabel, new AbsoluteConstraints(260, 440, 30, -1)); TUETempJLabel.setFont(new Font("Segoe UI", 1, 12)); // NOI18N TUETempJLabel.setForeground(new Color(255, 255, 255)); TUETempJLabel.setText("30°"); jPanel2.add(TUETempJLabel, new AbsoluteConstraints(370, 440, 30, 20)); WEDTempJLabel.setFont(new Font("Segoe UI", 1, 12)); // NOI18N WEDTempJLabel.setForeground(new Color(255, 255, 255)); WEDTempJLabel.setText("19°"); jPanel2.add(WEDTempJLabel, new AbsoluteConstraints(490, 440, 30, -1)); THUTempJLabel.setFont(new Font("Segoe UI", 1, 12)); // NOI18N THUTempJLabel.setForeground(new Color(255, 255, 255)); THUTempJLabel.setText("20°"); jPanel2.add(THUTempJLabel, new AbsoluteConstraints(590, 440, 30, -1)); FRITempJLabel.setForeground(new Color(255, 255, 255)); FRITempJLabel.setText("25°"); jPanel2.add(FRITempJLabel, new AbsoluteConstraints(690, 440, 30, -1)); SATTempJLabel.setFont(new Font("Segoe UI", 1, 12)); // NOI18N SATTempJLabel.setForeground(new Color(255, 255, 255)); SATTempJLabel.setText("25"); jPanel2.add(SATTempJLabel, new AbsoluteConstraints(790, 440, -1, -1)); SUNTempJLabel.setFont(new Font("Segoe UI", 1, 12)); // NOI18N SUNTempJLabel.setForeground(new Color(255, 255, 255)); SUNTempJLabel.setText("22"); jPanel2.add(SUNTempJLabel, new AbsoluteConstraints(900, 440, -1, -1)); jLabel29.setFont(new Font("Segoe UI", 1, 14)); // NOI18N jLabel29.setForeground(new Color(255, 255, 255)); jLabel29.setText("MON"); jPanel2.add(jLabel29, new AbsoluteConstraints(250, 350, -1, -1)); MONIconJLabel.setIcon(new ImageIcon(getClass().getResource("/Cloud_64px.png"))); // NOI18N jPanel2.add(MONIconJLabel, new AbsoluteConstraints(240, 370, -1, -1)); TUEIconJLabel.setIcon(new ImageIcon(getClass().getResource("/Rain_64px_1.png"))); // NOI18N jPanel2.add(TUEIconJLabel, new AbsoluteConstraints(350, 370, -1, -1)); WEDIconJLabel.setIcon(new ImageIcon(getClass().getResource("/Sun_64px_3.png"))); // NOI18N jPanel2.add(WEDIconJLabel, new AbsoluteConstraints(464, 370, 70, -1)); THUIconJLabel.setIcon(new ImageIcon(getClass().getResource("/Cloud_64px.png"))); // NOI18N jPanel2.add(THUIconJLabel, new AbsoluteConstraints(570, 370, -1, -1)); SUNIconJLabel.setIcon(new ImageIcon(getClass().getResource("/Rain_64px_1.png"))); // NOI18N jPanel2.add(SUNIconJLabel, new AbsoluteConstraints(880, 370, -1, -1)); SATIconJLabel.setIcon(new ImageIcon(getClass().getResource("/Snow_64px.png"))); // NOI18N jPanel2.add(SATIconJLabel, new AbsoluteConstraints(770, 370, -1, 70)); FRIIconJLabel.setIcon(new ImageIcon(getClass().getResource("/Sun_64px_3.png"))); // NOI18N jPanel2.add(FRIIconJLabel, new AbsoluteConstraints(670, 370, -1, -1)); jLabel21.setIcon(new ImageIcon(getClass().getResource("/Marker_64px.png"))); // NOI18N jPanel2.add(jLabel21, new AbsoluteConstraints(120, 10, -1, 80)); jLabel20.setFont(new Font("Segoe UI", 0, 48)); // NOI18N jLabel20.setForeground(new Color(255, 255, 255)); jPanel2.add(jLabel20, new AbsoluteConstraints(720, 30, -1, -1)); jLabel19.setIcon(new ImageIcon(getClass().getResource("/Wind Speed 98-102_44px.png"))); // NOI18N jPanel2.add(jLabel19, new AbsoluteConstraints(10, 240, -1, 30)); jLabel18.setIcon(new ImageIcon(getClass().getResource("/Humidity_44px.png"))); // NOI18N jPanel2.add(jLabel18, new AbsoluteConstraints(10, 190, -1, 40)); DescriptionLabel.setFont(new Font("Segoe UI", 0, 18)); // NOI18N DescriptionLabel.setForeground(new Color(255, 255, 255)); DescriptionLabel.setText("Mostly Cloudy"); jPanel2.add(DescriptionLabel, new AbsoluteConstraints(450, 210, 140, -1)); jLabel16.setIcon(new ImageIcon(getClass().getResource("/Thermometer-44.png"))); // NOI18N jPanel2.add(jLabel16, new AbsoluteConstraints(870, 230, 40, 50)); jLabel15.setIcon(new ImageIcon(getClass().getResource("/Thermometer-44.png"))); // NOI18N jPanel2.add(jLabel15, new AbsoluteConstraints(870, 140, 40, 50)); MaxTempLabel.setFont(new Font("Dialog", 0, 34)); // NOI18N MaxTempLabel.setForeground(new Color(255, 255, 255)); MaxTempLabel.setText("24 ℃"); jPanel2.add(MaxTempLabel, new AbsoluteConstraints(780, 240, 100, -1)); jLabel13.setFont(new Font("Segoe UI", 1, 18)); // NOI18N jLabel13.setForeground(new Color(255, 255, 255)); jLabel13.setText("Max. Temp. "); jPanel2.add(jLabel13, new AbsoluteConstraints(780, 210, -1, -1)); MinTempLabel.setFont(new Font("Dialog", 0, 34)); // NOI18N MinTempLabel.setForeground(new Color(255, 255, 255)); MinTempLabel.setText("11 ℃"); jPanel2.add(MinTempLabel, new AbsoluteConstraints(780, 150, 100, 40)); jLabel11.setFont(new Font("Segoe UI", 1, 18)); // NOI18N jLabel11.setForeground(new Color(255, 255, 255)); jLabel11.setText("Min. Temp. "); jPanel2.add(jLabel11, new AbsoluteConstraints(780, 120, -1, -1)); DetailedLabel.setFont(new Font("Segoe UI", 0, 12)); // NOI18N DetailedLabel.setForeground(new Color(255, 255, 255)); DetailedLabel.setText("Last Updated: Sat Apr 29 13:00:00 EEST 2017"); jPanel2.add(DetailedLabel, new AbsoluteConstraints(390, 250, 240, -1)); WindLabel.setFont(new Font("Segoe UI", 0, 18)); // NOI18N WindLabel.setForeground(new Color(255, 255, 255)); WindLabel.setText("Wind Speed: 5m/s"); jPanel2.add(WindLabel, new AbsoluteConstraints(70, 240, 240, 20)); HumidityLabel.setFont(new Font("Segoe UI", 0, 18)); // NOI18N HumidityLabel.setForeground(new Color(255, 255, 255)); HumidityLabel.setText("Humidity: 62%"); jPanel2.add(HumidityLabel, new AbsoluteConstraints(70, 200, 210, 20)); LocationLabel.setFont(new Font("Segoe UI", 0, 36)); // NOI18N LocationLabel.setForeground(new Color(255, 255, 255)); LocationLabel.setText("Greece,Gr"); jPanel2.add(LocationLabel, new AbsoluteConstraints(420, 50, 200, -1)); LocationLabel.getAccessibleContext().setAccessibleName(""); jLabel1.setIcon(new ImageIcon(getClass().getResource("/Cancel_20px.png"))); // NOI18N jLabel1.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { jLabel1MouseClicked(evt); } public void mouseEntered(MouseEvent evt) { JLabel1MouseEntered(evt); } }); jPanel2.add(jLabel1, new AbsoluteConstraints(970, 0, -1, -1)); jLabel2.setIcon(new ImageIcon(getClass().getResource("/Minus_20px.png"))); // NOI18N jLabel2.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { jLabel2MouseClicked(evt); } public void mouseEntered(MouseEvent evt) { Jlabel2MouseEntered(evt); } }); jPanel2.add(jLabel2, new AbsoluteConstraints(940, 0, -1, -1)); RefreshIconLabel.setIcon(new ImageIcon(getClass().getResource("/Refresh_15px.png"))); // NOI18N RefreshIconLabel.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent evt) { RefreshIconLabelMouseClicked(evt); } public void mouseEntered(MouseEvent evt) { IconMouseEnteredJLabel(evt); } }); jPanel2.add(RefreshIconLabel, new AbsoluteConstraints(630, 250, 20, -1)); jLabel6.setIcon(new ImageIcon(getClass().getResource("/spots_background_light_blur_68629_1920x1080.jpg"))); // NOI18N jPanel2.add(jLabel6, new AbsoluteConstraints(0, 0, 990, 490)); getContentPane().add(jPanel2, new AbsoluteConstraints(0, 0, 990, 480)); pack(); } private void formMouseDragged(MouseEvent evt) { int x = evt.getXOnScreen(); int y = evt.getYOnScreen(); this.setLocation(x - xMouse, y - yMouse); } private void formMousePressed(MouseEvent evt) { xMouse = evt.getX(); yMouse = evt.getY(); } private void jLabel1MouseClicked(MouseEvent evt) { System.exit(0); } private void jLabel2MouseClicked(MouseEvent evt) { setState(Frame.ICONIFIED); } private void RefreshIconLabelMouseClicked(MouseEvent evt) { timer.stop(); final BackgroundWorker worker = new BackgroundWorker(entry, DynJLabelList, CurrentTempLabel, DayLambel, DescriptionLabel, DetailedLabel, HumidityLabel, PressureJLabel, MaxTempLabel, MinTempLabel, WindLabel, WeatherDayIcon, RefreshIconLabel); worker.execute(); timer.restart(); } private void Jlabel2MouseEntered(MouseEvent evt) { jLabel2.setCursor(new Cursor(Cursor.HAND_CURSOR)); } private void JLabel1MouseEntered(MouseEvent evt) { jLabel1.setCursor(new Cursor(Cursor.HAND_CURSOR)); } private void IconMouseEnteredJLabel(MouseEvent evt) { RefreshIconLabel.setCursor(new Cursor(Cursor.HAND_CURSOR)); } private void InitTimer() { timer = new Timer(delay, new ActionListener() { // Timer 4 seconds public void actionPerformed(ActionEvent e) { UpdateTimerValue(); repaint(); } }); } private void UpdateTimerValue() { final Calendar cal = Calendar.getInstance(); final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm"); final String timeValue = sdf.format(cal.getTime()); if (cal.get(Calendar.AM_PM) == Calendar.PM) { jLabel20.setText(timeValue + " PM"); } else { jLabel20.setText(timeValue + " AM"); } } private void Init() { timer.start(); UpdateTimerValue(); DynJLabelList = new DynamicJLabelList(); //add labels to Change the icon days of week DynJLabelList.AddDayOfWeekyIcons(SUNIconJLabel); DynJLabelList.AddDayOfWeekyIcons(MONIconJLabel); DynJLabelList.AddDayOfWeekyIcons(TUEIconJLabel); DynJLabelList.AddDayOfWeekyIcons(WEDIconJLabel); DynJLabelList.AddDayOfWeekyIcons(THUIconJLabel); DynJLabelList.AddDayOfWeekyIcons(FRIIconJLabel); DynJLabelList.AddDayOfWeekyIcons(SATIconJLabel); //add labels to Change the Temperature of the week DynJLabelList.AddDayOfWeekTemperature(SUNTempJLabel); DynJLabelList.AddDayOfWeekTemperature(MONTempJLabel); DynJLabelList.AddDayOfWeekTemperature(TUETempJLabel); DynJLabelList.AddDayOfWeekTemperature(WEDTempJLabel); DynJLabelList.AddDayOfWeekTemperature(THUTempJLabel); DynJLabelList.AddDayOfWeekTemperature(FRITempJLabel); DynJLabelList.AddDayOfWeekTemperature(SATTempJLabel); } public static void main(String args[]) { BlockUI check = new BlockUI(); FeedEntry entry = check.IsStart(); EventQueue.invokeLater(new Runnable() { public void run() { if (check.getVisibilityVar().get()) { new MainWeatherFrame(entry); } else { new JFxBuilder(new DialogObject(Alert.AlertType.ERROR, "Error Dialog", "Ooops, there was an error!", "Internet not available, Cross check your internet connectivity and try again")).Invoke(); } } }); } }