aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/impl/gui/main/contactlist/AddContactDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/java/sip/communicator/impl/gui/main/contactlist/AddContactDialog.java')
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/AddContactDialog.java109
1 files changed, 102 insertions, 7 deletions
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/AddContactDialog.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/AddContactDialog.java
index 856ae5b..8d43c7f 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/AddContactDialog.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/AddContactDialog.java
@@ -21,9 +21,14 @@ import java.awt.*;
import java.awt.Container;
import java.awt.event.*;
import java.util.*;
+import java.util.List;
import javax.swing.*;
+import javax.swing.border.*;
import javax.swing.event.*;
+import javax.swing.text.*;
+
+import org.jitsi.util.*;
import net.java.sip.communicator.impl.gui.*;
import net.java.sip.communicator.impl.gui.main.contactlist.addgroup.*;
@@ -163,31 +168,100 @@ public class AddContactDialog
}
/**
+ * Adds a faint gray prompt to the provided text field that
+ * will vanish as soon as text is entered into the field.
+ */
+ private void addPrompt(JTextField field, String text)
+ {
+ final JLabel prompt = new JLabel(text);
+
+ // Give prompt a foreground color like the original
+ // text field, but with half transparency.
+ final Color fg = field.getForeground();
+ final Color color = new Color(
+ fg.getRed(), fg.getGreen(), fg.getBlue(), 128);
+
+ // Mimic properties of given text field
+ prompt.setFont(field.getFont());
+ prompt.setForeground(color);
+ prompt.setBorder(new EmptyBorder(field.getInsets()));
+ prompt.setHorizontalAlignment(JLabel.LEADING);
+
+ // Add handler to hide prompt when text is entered
+ final Document doc = field.getDocument();
+ doc.addDocumentListener( new DocumentListener() {
+ public void insertUpdate(DocumentEvent e)
+ {
+ prompt.setVisible(doc.getLength() == 0);
+ }
+
+ public void removeUpdate(DocumentEvent e)
+ {
+ prompt.setVisible(doc.getLength() == 0);
+ }
+
+ public void changedUpdate(DocumentEvent e) {}
+ });
+
+ // Add prompt to text field
+ field.setLayout( new BorderLayout() );
+ field.add(prompt);
+ }
+
+ /**
* Initializes the dialog.
*/
private void init()
{
+ // Get tool tip text for primary controls
+ final String displayNameInfo =
+ GuiActivator.getResources().getI18NString(
+ "service.gui.DISPLAY_NAME_INFO");
+ final String contactInfo =
+ GuiActivator.getResources().getI18NString(
+ "service.gui.CONTACT_NAME_INFO");
+ final String accountInfo =
+ GuiActivator.getResources().getI18NString(
+ "service.gui.SELECT_ACCOUNT_INFO");
+ final String groupInfo =
+ GuiActivator.getResources().getI18NString(
+ "service.gui.SELECT_GROUP_INFO");
+
+ // Initialize controls
this.accountLabel = new JLabel(
GuiActivator.getResources().getI18NString(
"service.gui.SELECT_ACCOUNT") + ": ");
+ this.accountLabel.setToolTipText(accountInfo);
this.accountCombo = new JComboBox();
-
- this.groupLabel = new JLabel(
- GuiActivator.getResources().getI18NString(
- "service.gui.SELECT_GROUP") + ": ");
+ this.accountCombo.setToolTipText(accountInfo);
this.contactAddressLabel = new JLabel(
GuiActivator.getResources().getI18NString(
"service.gui.CONTACT_NAME") + ": ");
+ this.contactAddressLabel.setToolTipText(contactInfo);
this.displayNameLabel = new JLabel(
GuiActivator.getResources().getI18NString(
"service.gui.DISPLAY_NAME") + ": ");
+ this.displayNameLabel.setToolTipText(displayNameInfo);
this.contactAddressField = new JTextField();
+ this.contactAddressField.setToolTipText(contactInfo);
+ addPrompt(this.contactAddressField,
+ GuiActivator.getResources().getI18NString(
+ "service.gui.CONTACT_NAME_PROMPT"));
this.displayNameField = new JTextField();
+ this.displayNameField.setToolTipText(displayNameInfo);
+ addPrompt(this.displayNameField,
+ GuiActivator.getResources().getI18NString(
+ "service.gui.DISPLAY_NAME_PROMPT"));
+
+ this.groupLabel = new JLabel(
+ GuiActivator.getResources().getI18NString(
+ "service.gui.SELECT_GROUP") + ": ");
+ this.groupLabel.setToolTipText(groupInfo);
this.addButton = new JButton(
GuiActivator.getResources().getI18NString("service.gui.ADD"));
@@ -198,6 +272,7 @@ public class AddContactDialog
this.imageLabel = new JLabel();
this.groupCombo = createGroupCombo(this);
+ this.groupCombo.setToolTipText(groupInfo);
if(metaContact != null)
{
@@ -225,15 +300,15 @@ public class AddContactDialog
fieldsPanel.add(accountCombo);
}
- labelsPanel.add(groupLabel);
- fieldsPanel.add(groupCombo);
-
labelsPanel.add(contactAddressLabel);
fieldsPanel.add(contactAddressField);
labelsPanel.add(displayNameLabel);
fieldsPanel.add(displayNameField);
+ labelsPanel.add(groupLabel);
+ fieldsPanel.add(groupCombo);
+
contactAddressField.getDocument().addDocumentListener(
new DocumentListener()
{
@@ -499,6 +574,26 @@ public class AddContactDialog
final String contactAddress = contactAddressField.getText().trim();
final String displayName = displayNameField.getText();
+ List<String> validationResult = new ArrayList<>(2);
+ if (!protocolProvider.validateContactAddress(contactAddress,
+ validationResult))
+ {
+ new ErrorDialog(GuiActivator.getUIService().getMainFrame(),
+ GuiActivator.getResources()
+ .getI18NString("service.gui.ADD_CONTACT_ERROR_TITLE"),
+ validationResult.get(0), ErrorDialog.WARNING).showDialog();
+ if (validationResult.size() >= 2)
+ {
+ contactAddressField.setText(validationResult.get(1));
+ if (StringUtils.isNullOrEmpty(displayName, true))
+ {
+ displayNameField.setText(contactAddress);
+ }
+ }
+
+ return;
+ }
+
if (!protocolProvider.isRegistered())
{
new ErrorDialog(