Beispiel #1
0
  public CheckOut() {
    setBorder(new SoftBevelBorder(BevelBorder.RAISED, null, null, null, null));
    setPreferredSize(new Dimension(635, 550));
    setLayout(new BorderLayout(0, 0));

    JPanel panel = new JPanel();
    panel.setBackground(Color.LIGHT_GRAY);
    add(panel);
    panel.setLayout(null);

    JPanel payMethodPanel = new JPanel();
    payMethodPanel.setBorder(new LineBorder(new Color(0, 0, 0)));
    payMethodPanel.setBackground(Color.LIGHT_GRAY);
    payMethodPanel.setBounds(0, 90, 629, 212);
    panel.add(payMethodPanel);
    payMethodPanel.setLayout(null);

    JRadioButton rdbtnCreditCard = new JRadioButton("Credit Card");

    buttonGroup.add(rdbtnCreditCard);
    rdbtnCreditCard.setBackground(Color.LIGHT_GRAY);
    rdbtnCreditCard.setFont(new Font("HelvLight", Font.PLAIN, 14));
    rdbtnCreditCard.setBounds(22, 8, 105, 23);
    payMethodPanel.add(rdbtnCreditCard);

    JRadioButton rdbtnInvoice = new JRadioButton("Invoice");

    buttonGroup.add(rdbtnInvoice);
    rdbtnInvoice.setBackground(Color.LIGHT_GRAY);
    rdbtnInvoice.setFont(new Font("HelvLight", Font.PLAIN, 14));
    rdbtnInvoice.setBounds(22, 35, 105, 23);
    payMethodPanel.add(rdbtnInvoice);

    JRadioButton rdbtnPayAtThe = new JRadioButton("At the door");

    buttonGroup.add(rdbtnPayAtThe);
    rdbtnPayAtThe.setBackground(Color.LIGHT_GRAY);
    rdbtnPayAtThe.setFont(new Font("HelvLight", Font.PLAIN, 14));
    rdbtnPayAtThe.setBounds(22, 62, 105, 23);
    payMethodPanel.add(rdbtnPayAtThe);

    final InvoiceInfo invoiceInfoPnl = new InvoiceInfo();
    final JPanel cardInfoPanel = new JPanel();
    cardInfoPanel.setBorder(null);
    final CardInfo cardInfoPnl = new CardInfo();

    cardInfoPanel.setBackground(Color.LIGHT_GRAY);
    cardInfoPanel.setBounds(264, 8, 353, 186);
    payMethodPanel.add(cardInfoPanel);
    cardInfoPanel.setLayout(null);

    // When Credit card is chosen
    rdbtnCreditCard.addMouseListener(
        new MouseAdapter() {
          @Override
          public void mouseClicked(MouseEvent e) {
            cardInfoPanel.removeAll();
            cardInfoPanel.getParent().revalidate();
            cardInfoPanel.getParent().repaint();

            cardInfoPanel.add(cardInfoPnl);
            cardInfoPanel.getParent().revalidate();
            cardInfoPanel.getParent().repaint();
          }
        });

    // When Invoice is chosen
    rdbtnInvoice.addMouseListener(
        new MouseAdapter() {
          @Override
          public void mouseClicked(MouseEvent e) {
            cardInfoPanel.removeAll();
            cardInfoPanel.getParent().revalidate();
            cardInfoPanel.getParent().repaint();

            cardInfoPanel.add(invoiceInfoPnl);
            cardInfoPanel.getParent().revalidate();
            cardInfoPanel.getParent().repaint();
          }
        });

    // When At the door is chosen
    rdbtnPayAtThe.addMouseListener(
        new MouseAdapter() {
          @Override
          public void mouseClicked(MouseEvent e) {
            cardInfoPanel.removeAll();
            cardInfoPanel.getParent().revalidate();
            cardInfoPanel.getParent().repaint();
          }
        });

    JPanel panel_2 = new JPanel();
    panel_2.setBorder(new LineBorder(new Color(0, 0, 0)));
    panel_2.setBackground(Color.LIGHT_GRAY);
    panel_2.setBounds(0, 0, 629, 37);
    panel.add(panel_2);
    panel_2.setLayout(null);

    JLabel lblCheckOut = new JLabel("Check Out");
    lblCheckOut.setForeground(Color.DARK_GRAY);
    lblCheckOut.setFont(new Font("HelvLight", Font.PLAIN, 18));
    lblCheckOut.setBounds(12, 0, 230, 37);
    panel_2.add(lblCheckOut);

    JPanel panel_3 = new JPanel();
    panel_3.setBorder(new LineBorder(new Color(0, 0, 0)));
    panel_3.setBackground(UIManager.getColor("Button.disabledToolBarBorderBackground"));
    panel_3.setBounds(0, 61, 629, 28);
    panel.add(panel_3);
    panel_3.setLayout(null);

    JLabel lblPayingMethod = new JLabel("Pay Method");
    lblPayingMethod.setBounds(12, 0, 108, 20);
    panel_3.add(lblPayingMethod);
    lblPayingMethod.setForeground(Color.DARK_GRAY);
    lblPayingMethod.setFont(new Font("HelvLight", Font.PLAIN, 14));

    JPanel panel_1 = new JPanel();
    panel_1.setLayout(null);
    panel_1.setBorder(new LineBorder(new Color(0, 0, 0)));
    panel_1.setBackground(UIManager.getColor("Button.disabledToolBarBorderBackground"));
    panel_1.setBounds(0, 303, 629, 28);
    panel.add(panel_1);

    JLabel lblDeliveryInformaiton = new JLabel("Delivery Address");
    lblDeliveryInformaiton.setForeground(Color.DARK_GRAY);
    lblDeliveryInformaiton.setFont(new Font("HelvLight", Font.PLAIN, 14));
    lblDeliveryInformaiton.setBounds(12, 0, 171, 20);
    panel_1.add(lblDeliveryInformaiton);

    JPanel panel_4 = new JPanel();
    panel_4.setLayout(null);
    panel_4.setBorder(new LineBorder(new Color(0, 0, 0)));
    panel_4.setBackground(Color.LIGHT_GRAY);
    panel_4.setBounds(0, 332, 629, 212);
    panel.add(panel_4);

    JPanel panel_5 = new JPanel();
    panel_5.setLayout(null);
    panel_5.setBorder(null);
    panel_5.setBackground(Color.LIGHT_GRAY);
    panel_5.setBounds(12, 12, 110, 145);
    panel_4.add(panel_5);

    JLabel label = new JLabel("Firstname:");
    label.setHorizontalAlignment(SwingConstants.RIGHT);
    label.setForeground(Color.DARK_GRAY);
    label.setFont(new Font("HelvLight", Font.PLAIN, 12));
    label.setBounds(12, 0, 91, 17);
    panel_5.add(label);

    JLabel label_1 = new JLabel("Lastname:");
    label_1.setHorizontalAlignment(SwingConstants.RIGHT);
    label_1.setForeground(Color.DARK_GRAY);
    label_1.setFont(new Font("HelvLight", Font.PLAIN, 12));
    label_1.setBounds(12, 24, 91, 17);
    panel_5.add(label_1);

    JLabel label_2 = new JLabel("Street:");
    label_2.setHorizontalAlignment(SwingConstants.RIGHT);
    label_2.setForeground(Color.DARK_GRAY);
    label_2.setFont(new Font("HelvLight", Font.PLAIN, 12));
    label_2.setBounds(11, 46, 91, 20);
    panel_5.add(label_2);

    JLabel label_3 = new JLabel("Zip and city:");
    label_3.setHorizontalAlignment(SwingConstants.RIGHT);
    label_3.setForeground(Color.DARK_GRAY);
    label_3.setFont(new Font("HelvLight", Font.PLAIN, 12));
    label_3.setBounds(12, 73, 91, 20);
    panel_5.add(label_3);

    JLabel label_4 = new JLabel("Email:");
    label_4.setHorizontalAlignment(SwingConstants.RIGHT);
    label_4.setForeground(Color.DARK_GRAY);
    label_4.setFont(new Font("HelvLight", Font.PLAIN, 12));
    label_4.setBounds(12, 122, 91, 17);
    panel_5.add(label_4);

    JLabel lblDeliveryDate = new JLabel("Delivery date:");
    lblDeliveryDate.setToolTipText("Enter date for delivery ");
    lblDeliveryDate.setHorizontalAlignment(SwingConstants.RIGHT);
    lblDeliveryDate.setForeground(Color.DARK_GRAY);
    lblDeliveryDate.setFont(new Font("HelvLight", Font.PLAIN, 12));
    lblDeliveryDate.setBounds(9, 96, 91, 20);
    panel_5.add(lblDeliveryDate);

    JPanel panel_6 = new JPanel();
    panel_6.setLayout(null);
    panel_6.setBorder(null);
    panel_6.setBackground(Color.LIGHT_GRAY);
    panel_6.setBounds(120, 12, 221, 188);
    panel_4.add(panel_6);

    fNameTextField = new JTextField(iMat.getCustomer().getFirstName());
    fNameTextField.addFocusListener(reg);
    fNameTextField.setName("fNameTextField");
    fNameTextField.setFont(new Font("HelvLight", Font.PLAIN, 12));
    fNameTextField.setColumns(10);
    fNameTextField.setBounds(0, 0, 195, 19);
    panel_6.add(fNameTextField);

    lNameTextField = new JTextField(iMat.getCustomer().getLastName());
    lNameTextField.addFocusListener(reg);
    lNameTextField.setName("lNameTextField");
    lNameTextField.setFont(new Font("HelvLight", Font.PLAIN, 12));
    lNameTextField.setColumns(10);
    lNameTextField.setBounds(0, 26, 195, 19);
    panel_6.add(lNameTextField);

    addressTextField = new JTextField(iMat.getCustomer().getAddress());
    addressTextField.addFocusListener(reg);
    addressTextField.setName("addressTextField");
    addressTextField.setFont(new Font("HelvLight", Font.PLAIN, 12));
    addressTextField.setColumns(10);
    addressTextField.setBounds(0, 50, 195, 19);
    panel_6.add(addressTextField);

    zipTextField = new JTextField(iMat.getCustomer().getPostCode());
    zipTextField.addFocusListener(reg);
    zipTextField.setName("zipTextField");
    zipTextField.setToolTipText("Postnummer");
    zipTextField.setFont(new Font("HelvLight", Font.PLAIN, 12));
    zipTextField.setColumns(10);
    zipTextField.setBounds(0, 75, 54, 19);
    panel_6.add(zipTextField);

    cityTextField = new JTextField(iMat.getCustomer().getPostAddress());
    cityTextField.addFocusListener(reg);
    cityTextField.setName("cityTextField");
    cityTextField.setFont(new Font("HelvLight", Font.PLAIN, 12));
    cityTextField.setColumns(10);
    cityTextField.setBounds(66, 75, 129, 19);
    panel_6.add(cityTextField);

    emailTextField = new JTextField(iMat.getCustomer().getEmail());
    emailTextField.addFocusListener(reg);
    emailTextField.setName("emailTextField");
    emailTextField.setFont(new Font("HelvLight", Font.PLAIN, 12));
    emailTextField.setColumns(10);
    emailTextField.setBounds(2, 123, 195, 19);
    panel_6.add(emailTextField);

    JLabel label_7 = new JLabel("Receipt will be sent to this email");
    label_7.setHorizontalAlignment(SwingConstants.LEFT);
    label_7.setForeground(Color.DARK_GRAY);
    label_7.setFont(new Font("HelvLight", Font.ITALIC, 12));
    label_7.setBounds(3, 142, 195, 17);
    panel_6.add(label_7);

    JLabel label_8 = new JLabel("*");
    label_8.setToolTipText("Mandatory field");
    label_8.setHorizontalAlignment(SwingConstants.LEFT);
    label_8.setForeground(Color.DARK_GRAY);
    label_8.setFont(new Font("HelvLight", Font.PLAIN, 16));
    label_8.setBounds(200, 0, 12, 17);
    panel_6.add(label_8);

    JLabel label_9 = new JLabel("*");
    label_9.setToolTipText("Mandatory field");
    label_9.setHorizontalAlignment(SwingConstants.LEFT);
    label_9.setForeground(Color.DARK_GRAY);
    label_9.setFont(new Font("HelvLight", Font.PLAIN, 16));
    label_9.setBounds(200, 26, 12, 17);
    panel_6.add(label_9);

    JLabel label_10 = new JLabel("*");
    label_10.setToolTipText("Mandatory field");
    label_10.setHorizontalAlignment(SwingConstants.LEFT);
    label_10.setForeground(Color.DARK_GRAY);
    label_10.setFont(new Font("HelvLight", Font.PLAIN, 16));
    label_10.setBounds(200, 50, 12, 17);
    panel_6.add(label_10);

    JLabel label_11 = new JLabel("*");
    label_11.setToolTipText("Mandatory field");
    label_11.setHorizontalAlignment(SwingConstants.LEFT);
    label_11.setForeground(Color.DARK_GRAY);
    label_11.setFont(new Font("HelvLight", Font.PLAIN, 16));
    label_11.setBounds(200, 75, 12, 17);
    panel_6.add(label_11);

    JLabel lblYouAreNot = new JLabel("You are not signed in!");
    lblYouAreNot.setHorizontalTextPosition(SwingConstants.LEFT);
    lblYouAreNot.setHorizontalAlignment(SwingConstants.RIGHT);
    lblYouAreNot.setForeground(Color.DARK_GRAY);
    lblYouAreNot.setFont(new Font("HelvLight", Font.PLAIN, 14));
    lblYouAreNot.setBounds(359, 12, 148, 22);
    panel_4.add(lblYouAreNot);

    final JPanel panel_7 = new JPanel();
    panel_7.setVisible(false);
    panel_7.setBackground(Color.LIGHT_GRAY);
    panel_7.setBorder(null);
    panel_7.setBounds(383, 41, 234, 102);
    panel_4.add(panel_7);
    panel_7.setLayout(null);

    JLabel registerLabel = new JLabel("Register Account");
    registerLabel.addMouseListener(reg);
    registerLabel.setName("registerLabel");
    registerLabel.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    registerLabel.setHorizontalAlignment(SwingConstants.RIGHT);
    registerLabel.setForeground(Color.WHITE);
    registerLabel.setFont(new Font("HelvLight", Font.BOLD, 18));
    registerLabel.setBounds(0, 157, 195, 31);
    panel_6.add(registerLabel);

    JComboBox dayComboBox = new JComboBox();
    dayComboBox.setModel(
        new DefaultComboBoxModel(
            new String[] {
              "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12", "13", "14",
              "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28",
              "29", "30", "31"
            }));
    dayComboBox.addFocusListener(reg);
    dayComboBox.setName("day");
    dayComboBox.setFont(new Font("HelvLight", Font.PLAIN, 12));
    dayComboBox.setBounds(0, 98, 54, 20);
    panel_6.add(dayComboBox);

    JComboBox monthComboBox = new JComboBox();
    monthComboBox.setModel(
        new DefaultComboBoxModel(
            new String[] {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12"}));
    monthComboBox.addFocusListener(reg);
    monthComboBox.setName("month");
    monthComboBox.setFont(new Font("HelvLight", Font.PLAIN, 12));
    monthComboBox.setBounds(66, 98, 54, 20);
    panel_6.add(monthComboBox);

    JComboBox yearComboBox = new JComboBox();
    yearComboBox.setModel(
        new DefaultComboBoxModel(new String[] {"14", "15", "16", "17", "18", "19", "20"}));
    yearComboBox.addFocusListener(reg);
    yearComboBox.setName("year");
    yearComboBox.setFont(new Font("HelvLight", Font.PLAIN, 12));
    yearComboBox.setBounds(132, 98, 63, 20);
    panel_6.add(yearComboBox);

    JLabel label_5 = new JLabel("*");
    label_5.setToolTipText("Mandatory field");
    label_5.setHorizontalAlignment(SwingConstants.LEFT);
    label_5.setForeground(Color.DARK_GRAY);
    label_5.setFont(new Font("HelvLight", Font.PLAIN, 16));
    label_5.setBounds(200, 98, 12, 17);
    panel_6.add(label_5);

    JLabel lblSignIn = new JLabel("Sign in");
    lblSignIn.setName("lblSignIn");
    lblSignIn.addMouseListener(reg);
    lblSignIn.addMouseListener(
        new MouseAdapter() {
          @Override
          public void mouseClicked(MouseEvent e) {
            if (panel_7.isVisible()) {
              panel_7.setVisible(false);
            } else {
              panel_7.setVisible(true);
            }
          }
        });

    lblSignIn.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    lblSignIn.setHorizontalTextPosition(SwingConstants.LEFT);
    lblSignIn.setHorizontalAlignment(SwingConstants.RIGHT);
    lblSignIn.setForeground(Color.WHITE);
    lblSignIn.setFont(new Font("HelvLight", Font.BOLD, 18));
    lblSignIn.setBounds(553, 12, 64, 31);
    panel_4.add(lblSignIn);

    JLabel label_6 = new JLabel("Email:");
    label_6.setHorizontalTextPosition(SwingConstants.RIGHT);
    label_6.setBounds(12, 12, 65, 17);
    label_6.setHorizontalAlignment(SwingConstants.RIGHT);
    label_6.setForeground(Color.DARK_GRAY);
    label_6.setFont(new Font("HelvLight", Font.PLAIN, 14));
    panel_7.add(label_6);

    JLabel lblPassword = new JLabel("Password:"******"HelvLight", Font.PLAIN, 14));
    lblPassword.setBounds(12, 41, 67, 17);
    panel_7.add(lblPassword);

    passwordField = new JPasswordField();
    passwordField.addFocusListener(reg);
    passwordField.setName("passwordField");
    passwordField.setFont(new Font("HelvLight", Font.PLAIN, 14));
    passwordField.setBounds(84, 40, 138, 19);
    panel_7.add(passwordField);

    signEmailTextField = new JTextField();
    signEmailTextField.addFocusListener(reg);
    signEmailTextField.setName("signEmailTextField");
    signEmailTextField.setFont(new Font("HelvLight", Font.PLAIN, 14));
    signEmailTextField.setColumns(10);
    signEmailTextField.setBounds(84, 12, 138, 19);
    panel_7.add(signEmailTextField);

    JButton btnLogIn = new JButton("Sign in");
    btnLogIn.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent arg0) {}
        });
    btnLogIn.addMouseListener(reg);
    btnLogIn.setName("btnLogIn");
    btnLogIn.setForeground(Color.DARK_GRAY);
    btnLogIn.setFont(new Font("HelvLight", Font.PLAIN, 14));
    btnLogIn.setBackground(SystemColor.window);
    btnLogIn.setBounds(144, 71, 78, 27);
    panel_7.add(btnLogIn);

    JButton btnPreview = new JButton("Preview");

    btnPreview.setName("btnPreview");
    btnPreview.addMouseListener(reg);
    btnPreview.setToolTipText("Preview purchase");
    btnPreview.setForeground(Color.DARK_GRAY);
    btnPreview.setFont(new Font("HelvLight", Font.PLAIN, 14));
    btnPreview.setBackground(SystemColor.window);
    btnPreview.setBounds(526, 169, 91, 27);
    panel_4.add(btnPreview);

    JButton button_1 = new JButton("Back");
    button_1.addMouseListener(
        new MouseAdapter() {
          @Override
          public void mouseClicked(MouseEvent e) {
            CardLayout layout = (CardLayout) thisPanel.getParent().getLayout();
            layout.previous(thisPanel.getParent());
          }
        });
    button_1.setToolTipText("Return to shopping cart");
    button_1.setForeground(Color.DARK_GRAY);
    button_1.setFont(new Font("HelvLight", Font.PLAIN, 14));
    button_1.setBackground(SystemColor.window);
    button_1.setBounds(12, 169, 84, 27);
    panel_4.add(button_1);

    JLabel lblCart = new JLabel("Cart");
    lblCart.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
    lblCart.setToolTipText("Return to shopping cart");
    lblCart.setForeground(Color.WHITE);
    lblCart.setFont(new Font("HelvLight", Font.BOLD, 14));
    lblCart.setBounds(10, 38, 35, 20);
    panel.add(lblCart);

    JLabel lblCheckOut_1 = new JLabel("> Check out");
    lblCheckOut_1.setBackground(Color.DARK_GRAY);
    lblCheckOut_1.setToolTipText("You are here!");
    lblCheckOut_1.setForeground(Color.DARK_GRAY);
    lblCheckOut_1.setFont(new Font("HelvLight", Font.BOLD, 14));
    lblCheckOut_1.setBounds(47, 38, 96, 20);
    panel.add(lblCheckOut_1);
  }
  /**
   * Creates and initializes the components
   *
   * @param userName The name of the user.
   * @param hostName The default hostName.
   */
  private void initialize(String userName, String hostName) {
    components = new ArrayList<JComponent>();
    // status update.
    currentTask = new JLabel();
    Font newFont = currentTask.getFont().deriveFont(8);
    currentTask.setFont(newFont);
    currentTask.setForeground(ScreenLogin.TEXT_COLOR);
    progressBar = new JProgressBar();
    progressBar.setVisible(false);
    progressBar.setStringPainted(false);
    progressBar.setFont(newFont);

    originalName = userName;
    user = new JTextField();
    user.setName("username field");
    user.setText(userName);
    user.setToolTipText("Enter your username.");
    user.setColumns(TEXT_COLUMN);
    pass = new JPasswordField();
    pass.setName("password field");
    pass.setToolTipText("Enter your password.");
    pass.setColumns(TEXT_COLUMN);
    Map<String, String> servers = editor.getServers();
    if (CommonsLangUtils.isNotBlank(hostName)) {
      serverName = hostName;
      // if user did point to another server
      if (servers != null && servers.size() > 0) {
        int n = servers.size() - 1;
        Iterator<String> i = servers.keySet().iterator();
        int k = 0;
        String value;
        while (i.hasNext()) {
          serverName = i.next();
          if (k == n) {
            value = servers.get(serverName);
            if (value != null) {
              try {
                selectedPort = Integer.parseInt(value);
              } catch (Exception e) {
              }
            }
          }
          k++;
        }
      } else {
        editor.removeLastRow();
        editor.addRow(hostName);
      }
    } else {
      if (servers == null || servers.size() == 0) serverName = hostName;
      else {
        int n = servers.size() - 1;
        Iterator<String> i = servers.keySet().iterator();
        int k = 0;
        String value;
        while (i.hasNext()) {
          serverName = i.next();
          if (k == n) {
            value = servers.get(serverName);
            if (value != null) {
              try {
                selectedPort = Integer.parseInt(value);
              } catch (Exception e) {
              }
            }
          }
          k++;
        }
      }
    }
    if (serverName.length() == 0) serverName = DEFAULT_SERVER;
    if (!DEFAULT_SERVER.equals(serverName)) originalServerName = serverName;
    connectionSpeedText = new JLabel(getConnectionSpeed());
    connectionSpeedText.setForeground(TEXT_COLOR);
    connectionSpeedText.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0));
    serverText = UIUtilities.buildTextPane(serverName, TEXT_COLOR);
    serverText.setName("server name text pane");

    serverTextPane = UIUtilities.buildComponentPanelRight(serverText, false);
    serverTextPane.setBorder(BorderFactory.createEmptyBorder(5, 0, 0, 0));

    initializeGroups();
    ref = new ArrayList<JComponent>();
    login = new JButton("Login");
    login.setName("login button");
    defaultForeground = login.getForeground();
    login.setMnemonic('L');
    login.setToolTipText("Login");
    setButtonDefault(login);
    login.setEnabled(false);
    // UIUtilities.enterPressesWhenFocused(login);
    UIUtilities.opacityCheck(login);
    cancel = new JButton("Quit");
    cancel.setMnemonic('Q');
    cancel.setToolTipText("Cancel Login.");
    setButtonDefault(cancel);
    UIUtilities.opacityCheck(cancel);
    configButton = new JButton();
    configButton.setName("config server button");
    configButton.setMnemonic('X');
    configButton.setToolTipText("Enter the server's address.");
    configButton.setBorderPainted(false);
    configButton.setBorder(null);
    // configButton.setMargin(new Insets(1, 1, 1, 1));
    configButton.setFocusPainted(false);
    configButton.setContentAreaFilled(false);
    IconManager icons = IconManager.getInstance();
    configButton.setIcon(icons.getIcon(IconManager.CONFIG_24));
    // configButton.setPressedIcon(icons.getIcon(
    //		IconManager.CONFIG_PRESSED_24));

    encrypted = !isEncrypted();
    encryptedButton = new JButton();
    List<String> tips = new ArrayList<String>();
    tips.add("The connection to the server is always encrypted.");
    tips.add(
        "If selected, the data transfer (e.g. annotations, images) " + "will also be encrypted.");
    tips.add("But the transfer will be much slower.");

    encryptedButton.setToolTipText(UIUtilities.formatToolTipText(tips));
    encryptedButton.setBorderPainted(false);
    encryptedButton.setBorder(null);
    encryptedButton.setFocusPainted(false);
    encryptedButton.setContentAreaFilled(false);
    if (encrypted) encryptedButton.setIcon(icons.getIcon(IconManager.ENCRYPTED_24));
    else encryptedButton.setIcon(icons.getIcon(IconManager.DECRYPTED_24));
    getRootPane().setDefaultButton(login);
    enableControls();
  }
  public ConfigurationPanel(final Project project) {

    serverUrl.setName("serverUrl");
    buildDelay.setName("buildDelay");
    jobRefreshPeriod.setName("jobRefreshPeriod");
    rssRefreshPeriod.setName("rssRefreshPeriod");
    username.setName("_username_");

    passwordField.setName("passwordFile");
    crumbDataField.setName("crumbDataFile");

    testConnexionButton.setName("testConnexionButton");
    connectionStatusLabel.setName("connectionStatusLabel");

    successOrStableCheckBox.setName("successOrStableCheckBox");
    unstableOrFailCheckBox.setName("unstableOrFailCheckBox");
    abortedCheckBox.setName("abortedCheckBox");

    rssStatusFilterPanel.setBorder(IdeBorderFactory.createTitledBorder("Event Log Settings", true));

    debugPanel.setVisible(false);

    initDebugTextPane();

    buildDelay.setDocument(new NumberDocument());
    jobRefreshPeriod.setDocument(new NumberDocument());
    rssRefreshPeriod.setDocument(new NumberDocument());

    uploadPatchSettingsPanel.setBorder(
        IdeBorderFactory.createTitledBorder("Upload a Patch Settings", true));

    passwordField
        .getDocument()
        .addDocumentListener(
            new DocumentListener() {
              @Override
              public void insertUpdate(DocumentEvent e) {
                myPasswordModified = true;
              }

              @Override
              public void removeUpdate(DocumentEvent e) {
                myPasswordModified = true;
              }

              @Override
              public void changedUpdate(DocumentEvent e) {
                myPasswordModified = true;
              }
            });

    testConnexionButton.addActionListener(
        new ActionListener() {
          public void actionPerformed(ActionEvent event) {
            try {
              debugPanel.setVisible(false);

              new NotNullValidator().validate(serverUrl);
              new UrlValidator().validate(serverUrl);

              JenkinsSettings jenkinsSettings = JenkinsSettings.getSafeInstance(project);

              String password =
                  isPasswordModified() ? getPassword() : jenkinsSettings.getPassword();

              RequestManager.getInstance(project)
                  .authenticate(
                      serverUrl.getText(), username.getText(), password, crumbDataField.getText());
              setConnectionFeedbackLabel(CONNECTION_TEST_SUCCESSFUL_COLOR, "Successful");
              setPassword(password);
            } catch (Exception ex) {
              setConnectionFeedbackLabel(CONNECTION_TEST_FAILED_COLOR, "[Fail] " + ex.getMessage());
              if (ex instanceof AuthenticationException) {
                AuthenticationException authenticationException = (AuthenticationException) ex;
                String responseBody = authenticationException.getResponseBody();
                if (StringUtils.isNotBlank(responseBody)) {
                  debugPanel.setVisible(true);
                  debugTextPane.setText(responseBody);
                }
              }
            }
          }
        });

    formValidator =
        FormValidator.init(this)
            .addValidator(
                username,
                new UIValidator<JTextField>() {
                  public void validate(JTextField component) throws ConfigurationException {
                    if (StringUtils.isNotBlank(component.getText())) {
                      String password = getPassword();
                      if (StringUtils.isBlank(password)) {
                        throw new ConfigurationException(
                            String.format("'%s' must be set", passwordField.getName()));
                      }
                    }
                  }
                });
  }