/* * Jitsi, the OpenSource Java VoIP and Instant Messaging client. * * Copyright @ 2015 Atlassian Pty Ltd * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package net.java.sip.communicator.impl.googlecontacts.configform; import java.awt.*; import java.awt.event.*; import javax.swing.*; import net.java.sip.communicator.impl.googlecontacts.*; import net.java.sip.communicator.plugin.desktoputil.*; import net.java.sip.communicator.service.googlecontacts.*; /** * The page with hostname/port/encryption fields * * @author Sebastien Mazy * @author Sebastien Vincent */ public class AccountSettingsForm extends SIPCommDialog implements ActionListener { /** * Serial version UID. */ private static final long serialVersionUID = 0L; /** * component holding the name */ private JTextField nameField; /** * The prefix field. */ private JTextField prefixField; /** * Save button. */ private JButton saveBtn = new JButton( Resources.getString("impl.googlecontacts.SAVE")); /** * Cancel button. */ private JButton cancelBtn = new JButton( Resources.getString("impl.googlecontacts.CANCEL")); /** * Return code. */ private int retCode = 0; /** * The Google Contacts connection. */ private GoogleContactsConnectionImpl cnx = null; /** * Constructor. */ public AccountSettingsForm() { this.setTitle(Resources.getString( "impl.googlecontacts.CONFIG_FORM_TITLE")); getContentPane().add(getContentPanel()); setMinimumSize(new Dimension(400, 200)); setSize(new Dimension(400, 400)); setPreferredSize(new Dimension(400, 200)); pack(); } /** * the panel to display in the card layout of the wizard * * @return this page's panel */ public JPanel getContentPanel() { JPanel contentPanel = new TransparentPanel(new BorderLayout()); JPanel mainPanel = new TransparentPanel(); JPanel basePanel = new TransparentPanel(new GridBagLayout()); JPanel btnPanel = new TransparentPanel(new FlowLayout( FlowLayout.RIGHT)); BoxLayout boxLayout = new BoxLayout(mainPanel, BoxLayout.Y_AXIS); GridBagConstraints c = new GridBagConstraints(); /* name text field */ JLabel nameLabel = new JLabel( Resources.getString("impl.googlecontacts.ACCOUNT_NAME")); this.nameField = new JTextField(); nameLabel.setLabelFor(nameField); c.gridx = 0; c.gridy = 0; c.weightx = 0; c.weighty = 0; c.gridwidth = 1; c.insets = new Insets(2, 50, 0, 5); c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.LINE_START; basePanel.add(nameLabel, c); c.gridx = 1; c.gridy = 0; c.weightx = 1; c.weighty = 0; c.gridwidth = GridBagConstraints.REMAINDER; c.insets = new Insets(2, 5, 0, 50); c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.LINE_END; basePanel.add(nameField, c); JLabel nameExampleLabel = new JLabel("myaccount@gmail.com"); nameExampleLabel.setForeground(Color.GRAY); nameExampleLabel.setFont(nameExampleLabel.getFont().deriveFont(8)); c.gridx = 1; c.gridy = 1; c.weightx = 1; c.weighty = 0; c.gridwidth = GridBagConstraints.REMAINDER; c.insets = new Insets(0, 13, 2, 0); c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.LINE_START; basePanel.add(nameExampleLabel, c); JLabel prefixLabel = new JLabel( Resources.getString("service.gui.PREFIX")); this.prefixField = new JTextField(); prefixLabel.setLabelFor(prefixField); c.gridx = 0; c.gridy = 3; c.weightx = 0; c.weighty = 0; c.gridwidth = 1; c.insets = new Insets(2, 50, 0, 5); c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.LINE_START; basePanel.add(prefixLabel, c); c.gridx = 1; c.gridy = 3; c.weightx = 1; c.weighty = 0; c.gridwidth = GridBagConstraints.REMAINDER; c.insets = new Insets(2, 5, 0, 50); c.fill = GridBagConstraints.HORIZONTAL; c.anchor = GridBagConstraints.LINE_END; basePanel.add(prefixField, c); mainPanel.setLayout(boxLayout); mainPanel.add(basePanel); /* listeners */ this.nameField.addActionListener(this); this.saveBtn.addActionListener(this); this.cancelBtn.addActionListener(this); btnPanel.add(saveBtn); btnPanel.add(cancelBtn); contentPanel.add(mainPanel, BorderLayout.CENTER); contentPanel.add(btnPanel, BorderLayout.SOUTH); return contentPanel; } /** * Loads the information. * * @param cnx connection */ public void loadData(GoogleContactsConnection cnx) { if(cnx != null) { this.nameField.setText(cnx.getLogin()); this.prefixField.setText(cnx.getPrefix()); this.cnx = (GoogleContactsConnectionImpl) cnx; } else { this.nameField.setText(""); this.cnx = null; } } /** * Implementation of actionPerformed. * * @param e the ActionEvent triggered */ public void actionPerformed(ActionEvent e) { Object src = e.getSource(); if(src == saveBtn) { String login = nameField.getText(); String prefix = prefixField.getText(); if(cnx == null) { cnx = (GoogleContactsConnectionImpl) GoogleContactsActivator .getGoogleContactsService().getConnection(login); } else { cnx.setLogin(login); } cnx.setPrefix(prefix); if(cnx.connect() == GoogleContactsConnection.ConnectionStatus. ERROR_INVALID_CREDENTIALS) { JOptionPane.showMessageDialog( this, Resources.getString( "impl.googlecontacts.WRONG_CREDENTIALS", new String[]{login}), Resources.getString( "impl.googlecontacts.WRONG_CREDENTIALS", new String[]{login}), JOptionPane.WARNING_MESSAGE); return; } retCode = 1; dispose(); } else if(src == cancelBtn) { retCode = 0; dispose(); } } /** * Get the connection. * * @return GoogleContactsConnection */ public GoogleContactsConnection getConnection() { return cnx; } /** * All functions implemented in this method will be invoked when user * presses the Escape key. * * @param escaped <tt>true</tt> if this dialog has been closed by pressing * the Esc key; otherwise, <tt>false</tt> */ @Override protected void close(boolean escaped) { cancelBtn.doClick(); } /** * Show the dialog and returns if the user has modified something (create * or modify entry). * * @return true if the user has modified something (create * or modify entry), false otherwise. */ public int showDialog() { retCode = 0; setVisible(true); // this will block until user click on save/cancel/press escape/close // the window setVisible(false); return retCode; } /** * Set the name field enable or not * * @param enable parameter to set */ public void setNameFieldEnabled(boolean enable) { this.nameField.setEnabled(enable); } }