private static void createAndShowGUI() {
    // Check the SystemTray support
    if (!SystemTray.isSupported()) {
      System.out.println("SystemTray is not supported");
      return;
    }
    final PopupMenu popup = new PopupMenu();
    final TrayIcon trayIcon =
        new TrayIcon(ImageHelper.loadImage("/images/splash.jpg", "tray icon"));
    final SystemTray tray = SystemTray.getSystemTray();

    // Create a popup menu components
    MenuItem aboutItem = new MenuItem("About");
    CheckboxMenuItem cb1 = new CheckboxMenuItem("Set auto size");
    CheckboxMenuItem cb2 = new CheckboxMenuItem("Set tooltip");
    Menu displayMenu = new Menu("Display");
    MenuItem errorItem = new MenuItem("Error");
    MenuItem warningItem = new MenuItem("Warning");
    MenuItem infoItem = new MenuItem("Info");
    MenuItem noneItem = new MenuItem("None");
    MenuItem exitItem = new MenuItem("Exit");

    // Add components to popup menu
    popup.add(aboutItem);
    popup.addSeparator();
    popup.add(cb1);
    popup.add(cb2);
    popup.addSeparator();
    popup.add(displayMenu);
    displayMenu.add(errorItem);
    displayMenu.add(warningItem);
    displayMenu.add(infoItem);
    displayMenu.add(noneItem);
    popup.add(exitItem);

    trayIcon.setPopupMenu(popup);

    try {
      tray.add(trayIcon);
    } catch (AWTException e) {
      System.out.println("TrayIcon could not be added.");
      return;
    }

    trayIcon.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(null, "This dialog box is run from System Tray");
          }
        });

    aboutItem.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(null, "This dialog box is run from the About menu item");
          }
        });

    cb1.addItemListener(
        new ItemListener() {
          public void itemStateChanged(ItemEvent e) {
            int cb1Id = e.getStateChange();
            if (cb1Id == ItemEvent.SELECTED) {
              trayIcon.setImageAutoSize(true);
            } else {
              trayIcon.setImageAutoSize(false);
            }
          }
        });

    cb2.addItemListener(
        new ItemListener() {
          public void itemStateChanged(ItemEvent e) {
            int cb2Id = e.getStateChange();
            if (cb2Id == ItemEvent.SELECTED) {
              trayIcon.setToolTip("Sun TrayIcon");
            } else {
              trayIcon.setToolTip(null);
            }
          }
        });

    ActionListener listener =
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            MenuItem item = (MenuItem) e.getSource();
            // TrayIcon.MessageType type = null;
            System.out.println(item.getLabel());
            if ("Error".equals(item.getLabel())) {
              // type = TrayIcon.MessageType.ERROR;
              trayIcon.displayMessage(
                  "Sun TrayIcon Demo", "This is an error message", TrayIcon.MessageType.ERROR);

            } else if ("Warning".equals(item.getLabel())) {
              // type = TrayIcon.MessageType.WARNING;
              trayIcon.displayMessage(
                  "Sun TrayIcon Demo", "This is a warning message", TrayIcon.MessageType.WARNING);

            } else if ("Info".equals(item.getLabel())) {
              // type = TrayIcon.MessageType.INFO;
              trayIcon.displayMessage(
                  "Sun TrayIcon Demo", "This is an info message", TrayIcon.MessageType.INFO);

            } else if ("None".equals(item.getLabel())) {
              // type = TrayIcon.MessageType.NONE;
              trayIcon.displayMessage(
                  "Sun TrayIcon Demo", "This is an ordinary message", TrayIcon.MessageType.NONE);
            }
          }
        };

    errorItem.addActionListener(listener);
    warningItem.addActionListener(listener);
    infoItem.addActionListener(listener);
    noneItem.addActionListener(listener);

    exitItem.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent e) {
            tray.remove(trayIcon);
            System.exit(0);
          }
        });
  }
  public JPanel getContentPane() {

    JPanel defaultPanel = new JPanel();
    defaultPanel.setLayout(
        new MigLayout(
            "",
            "[28.00][403.00,grow][][384.00,grow][][384.00,grow][106.00]",
            "[][40.00][20.00][98.00,grow][285.00][27.00][grow][18.00][]"));

    JLabel lblCreateYourInvitation = new JLabel("Welcome, " + guest.getUserName());
    lblCreateYourInvitation.setFont(new Font("Segoe UI", Font.PLAIN, 22));
    defaultPanel.add(lblCreateYourInvitation, "cell 1 1 5 1,alignx center,aligny bottom");

    JPanel form = new JPanel();
    form.setFont(new Font("Segoe UI Light", Font.PLAIN, 11));
    form.setBorder(
        new TitledBorder(
            UIManager.getBorder("TitledBorder.border"),
            "Personal Details",
            TitledBorder.LEADING,
            TitledBorder.TOP,
            null,
            null));
    defaultPanel.add(form, "cell 1 3 4 5,grow");
    form.setLayout(
        new MigLayout(
            "", "[][176.00,grow][102.00,grow][grow]", "[][][][][][][][][][128.00,grow][69.00]"));

    JLabel lblFirstName = new JLabel("First name: ");
    form.add(lblFirstName, "cell 0 0,alignx left");

    textField = new JTextField();
    textField.setMinimumSize(new Dimension(100, 20));
    textField.setPreferredSize(new Dimension(100, 20));
    textField.setText(Account.currentUser.getFirstName());
    form.add(textField, "cell 1 0,growx");
    textField.setColumns(10);

    JLabel lblLastName = new JLabel("Last name:");
    form.add(lblLastName, "cell 0 1,alignx left");

    textField_1 = new JTextField();
    form.add(textField_1, "cell 1 1,growx");
    textField_1.setColumns(10);
    textField_1.setText(Account.currentUser.getLastName());

    JLabel lblSchool = new JLabel("School:");
    form.add(lblSchool, "cell 0 2,alignx left");

    textField_4 = new JTextField();
    form.add(textField_4, "cell 1 2,growx");
    textField_4.setColumns(10);
    textField_4.setText(Account.currentUser.getSchool());

    JLabel lblEmailAdress = new JLabel("Email adress:");
    form.add(lblEmailAdress, "cell 0 5,alignx left");

    textField_2 = new JTextField();
    textField_2.setText(Account.currentUser.getEmail());
    form.add(textField_2, "cell 1 5,growx");
    textField_2.setColumns(10);

    JLabel lblHandphoneNumber = new JLabel("Phone number:");
    form.add(lblHandphoneNumber, "cell 0 6,alignx trailing");

    textField_5 = new JTextField();
    textField_5.setText(Account.currentUser.getHandphoneNo());
    form.add(textField_5, "cell 1 6,growx");
    textField_5.setColumns(10);

    JLabel lblDateOfBirth = new JLabel("Date of Birth:");
    form.add(lblDateOfBirth, "cell 0 3,alignx left");

    JComboBox<Integer> comboBox = new JComboBox<Integer>();
    form.add(comboBox, "flowx,cell 1 3,growx");

    JComboBox<Integer> comboBox_1 = new JComboBox<Integer>();
    form.add(comboBox_1, "cell 2 3,growx");

    JComboBox<Integer> comboBox_2 = new JComboBox<Integer>();
    form.add(comboBox_2, "cell 1 3,growx");

    JLabel lblNric = new JLabel("NRIC:");
    form.add(lblNric, "cell 0 7,alignx left");

    textField_3 = new JTextField();
    textField_3.setText(Account.currentUser.getNric());
    form.add(textField_3, "cell 1 7,growx");
    textField_3.setColumns(10);

    JLabel lblAddress = new JLabel("Address:");
    form.add(lblAddress, "cell 0 9,aligny top");

    textArea = new JTextArea();
    textArea.setText(Account.currentUser.getAddress());
    textArea.setBorder(new EtchedBorder(EtchedBorder.LOWERED, null, null));
    form.add(textArea, "cell 1 9 2 1,grow");

    JButton tglbtnUpdateDetails = new JButton("Update details");
    tglbtnUpdateDetails.addActionListener(
        new ActionListener() {

          @Override
          public void actionPerformed(ActionEvent arg0) {
            Guest guest = new Guest();
            guest.setUserName(Account.currentUser.getUserName());
            guest.setFirstName(textField.getText());
            guest.setLastName(textField_1.getText());
            guest.setSchool(textField_4.getText());
            guest.setEmail(textField_2.getText());
            guest.setHandphoneNo(textField_5.getText());
            guest.setNric(textField_3.getText());
            guest.setAddress(textArea.getText());
            if (guest.CREATE_GUEST_ACCOUNT(guest)) {
              JOptionPane.showMessageDialog(null, "Your details have been updated successfully");
            }
          }
        });
    tglbtnUpdateDetails.setPreferredSize(new Dimension(101, 40));
    form.add(tglbtnUpdateDetails, "cell 0 10 4 1,alignx center,aligny bottom");

    final JLabel profilePicture = new JLabel("");
    profilePicture.setBorder(
        new TitledBorder(null, "", TitledBorder.LEADING, TitledBorder.TOP, null, null));
    defaultPanel.add(profilePicture, "flowy,cell 5 3,alignx center,gapy 5 0");
    profilePicture.setIcon(ImageHelper.loadImageIcon("userIcon.png", "", 215, -1, 5));

    JButton btnSelectPhoto = new JButton("Change profile picture");
    btnSelectPhoto.addActionListener(
        new ActionListener() {

          @Override
          public void actionPerformed(ActionEvent arg0) {
            ImageIcon backupIcon = (ImageIcon) profilePicture.getIcon();

            Image image = IOHelper.getImageFile();
            if (image != null) {
              profilePicture.setIcon(
                  ImageHelper.getScaledImageIcon(new ImageIcon(image), 200, -1, 5));
            } else {
              profilePicture.setIcon(backupIcon);
            }
          }
        });
    defaultPanel.add(btnSelectPhoto, "cell 5 4,alignx center,aligny top");

    JLabel cutShadow = new JLabel("");
    cutShadow.setIcon(new ImageIcon(ImageHelper.loadImage("cutShadowBottom.png", "testing")));
    defaultPanel.add(cutShadow, "cell 1 8 5 1,alignx center");

    defaultPanel.add(new GuestActionsFooter(), "south,alignx center");

    JLabel lblNewLabel = new JLabel("");
    defaultPanel.add(lblNewLabel, "cell 5 3");
    lblNewLabel.setIcon(
        new ImageIcon(
            ImageHelper.loadImage("cutShadowTop.png", "testing").getScaledInstance(230, -1, 3)));

    return defaultPanel;
  }