aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/plugin/desktoputil/chat/ChatOperationReasonDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/java/sip/communicator/plugin/desktoputil/chat/ChatOperationReasonDialog.java')
-rw-r--r--src/net/java/sip/communicator/plugin/desktoputil/chat/ChatOperationReasonDialog.java234
1 files changed, 234 insertions, 0 deletions
diff --git a/src/net/java/sip/communicator/plugin/desktoputil/chat/ChatOperationReasonDialog.java b/src/net/java/sip/communicator/plugin/desktoputil/chat/ChatOperationReasonDialog.java
new file mode 100644
index 0000000..ae59707
--- /dev/null
+++ b/src/net/java/sip/communicator/plugin/desktoputil/chat/ChatOperationReasonDialog.java
@@ -0,0 +1,234 @@
+/*
+ * Jitsi, the OpenSource Java VoIP and Instant Messaging client.
+ *
+ * Distributable under LGPL license.
+ * See terms of license at gnu.org.
+ */
+package net.java.sip.communicator.plugin.desktoputil.chat;
+
+import java.awt.*;
+
+import javax.swing.*;
+import javax.swing.event.*;
+
+import net.java.sip.communicator.plugin.desktoputil.DesktopUtilActivator;
+import net.java.sip.communicator.plugin.desktoputil.MessageDialog;
+
+/**
+ *
+ * @author Yana Stamcheva
+ * @author Valentin Martinet
+ */
+public class ChatOperationReasonDialog extends MessageDialog
+{
+ private static final long serialVersionUID = 3290030744711759011L;
+
+ private final JTextField reasonField = new JTextField();
+
+ private final JPanel reasonFieldPanel = new JPanel(new BorderLayout());
+
+ /**
+ * Creates an instance of <tt>ChatOperationReasonDialog</tt> using the
+ * default title and message.
+ */
+ public ChatOperationReasonDialog()
+ {
+ this(null,
+ DesktopUtilActivator.getResources().getI18NString(
+ "service.gui.REASON"),
+ DesktopUtilActivator.getResources().getI18NString(
+ "service.gui.SPECIFY_REASON"),
+ DesktopUtilActivator.getResources().getI18NString(
+ "service.gui.OK"), true, false);
+
+
+ }
+
+ /**
+ * Creates an instance of <tt>ChatOperationReasonDialog</tt> using the
+ * default title and message.
+ *
+ * @param disableOKIfReasonIsEmpty if true the OK button will be disabled if
+ * the reason text is empty.
+ */
+ public ChatOperationReasonDialog(boolean disableOKIfReasonIsEmpty)
+ {
+ this(null,
+ DesktopUtilActivator.getResources().getI18NString(
+ "service.gui.REASON"),
+ DesktopUtilActivator.getResources().getI18NString(
+ "service.gui.SPECIFY_REASON"),
+ DesktopUtilActivator.getResources().getI18NString(
+ "service.gui.OK"), true, disableOKIfReasonIsEmpty);
+
+
+ }
+
+ /**
+ * Creates an instance of <tt>ChatOperationReasonDialog</tt> by specifying
+ * the title and the message shown in the dialog.
+ * @param title the title of this dialog
+ * @param message the message shown in this dialog
+ */
+ public ChatOperationReasonDialog(String title, String message)
+ {
+ this(null,
+ title,
+ message,
+ DesktopUtilActivator.getResources().getI18NString("service.gui.OK"),
+ true,
+ false);
+
+ }
+
+ /**
+ * Creates an instance of <tt>ChatOperationReasonDialog</tt> by specifying
+ * the title and the message shown in the dialog.
+ * @param title the title of this dialog
+ * @param message the message shown in this dialog
+ * @param disableOKIfReasonIsEmpty if true the OK button will be disabled if
+ * the reason text is empty.
+ * @param showReasonLabel specify if we want the "Reason:" label
+ */
+ public ChatOperationReasonDialog(String title, String message,
+ boolean showReasonLabel,
+ boolean disableOKIfReasonIsEmpty)
+ {
+ this(null,
+ title,
+ message,
+ DesktopUtilActivator.getResources().getI18NString("service.gui.OK"),
+ showReasonLabel,
+ disableOKIfReasonIsEmpty);
+ }
+
+ /**
+ * Creates an instance of <tt>ChatOperationReasonDialog</tt> by specifying
+ * the parent window, the title and the message to show.
+ * @param chatWindow the parent window
+ * @param title the title of this dialog
+ * @param message the message shown in this dialog
+ * @param okButtonName the custom name of the ok button
+ * @param showReasonLabel specify if we want the "Reason:" label
+ */
+ public ChatOperationReasonDialog(Frame chatWindow, String title,
+ String message, String okButtonName, boolean showReasonLabel)
+ {
+ this(chatWindow,
+ title,
+ message,
+ okButtonName,
+ showReasonLabel,
+ false);
+ }
+
+ /**
+ * Creates an instance of <tt>ChatOperationReasonDialog</tt> by specifying
+ * the parent window, the title and the message to show.
+ *
+ * @param chatWindow the parent window
+ * @param title the title of this dialog
+ * @param message the message shown in this dialog
+ * @param okButtonName the custom name of the ok button
+ * @param showReasonLabel specify if we want the "Reason:" label
+ * @param disableOKIfReasonIsEmpty if true the OK button will be disabled if
+ * the reason text is empty.
+ */
+ public ChatOperationReasonDialog(Frame chatWindow, String title,
+ String message, String okButtonName, boolean showReasonLabel,
+ boolean disableOKIfReasonIsEmpty)
+ {
+ super(chatWindow, title, message, okButtonName, false);
+
+ JPanel reasonPanel = new JPanel(new BorderLayout());
+ JLabel reasonLabel
+ = new JLabel(
+ showReasonLabel
+ ? (DesktopUtilActivator.getResources().getI18NString(
+ "service.gui.REASON")
+ + ":")
+ : "");
+
+ reasonPanel.add(reasonLabel, BorderLayout.WEST);
+ reasonPanel.add(new JLabel(" "), BorderLayout.EAST);
+
+ reasonFieldPanel.add(reasonField, BorderLayout.NORTH);
+ reasonFieldPanel.setOpaque(false);
+ reasonPanel.add(reasonFieldPanel, BorderLayout.CENTER);
+ reasonPanel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
+ reasonPanel.setOpaque(false);
+
+ replaceCheckBoxPanel(reasonPanel);
+
+ if(disableOKIfReasonIsEmpty)
+ {
+ updateOKButtonState();
+ reasonField.getDocument().addDocumentListener(
+ new DocumentListener()
+ {
+ public void removeUpdate(DocumentEvent ev)
+ {
+ updateOKButtonState();
+ }
+
+ public void insertUpdate(DocumentEvent ev)
+ {
+ updateOKButtonState();
+ }
+
+ public void changedUpdate(DocumentEvent ev)
+ {
+ updateOKButtonState();
+ }
+ });
+ }
+ this.pack();
+ }
+
+ /**
+ * Adds component to panel which contains the reason text field.
+ * @param comp the component to be added.
+ */
+ public void addToReasonFieldPannel(Component comp)
+ {
+ reasonFieldPanel.add(comp, BorderLayout.CENTER);
+ }
+
+ /**
+ * Enables the OK button if reason field is not empty and disables it if the
+ * reason field is empty.
+ */
+ private void updateOKButtonState()
+ {
+ okButton.setEnabled(!reasonField.getText().trim().equals(""));
+ }
+
+ /**
+ * Returns the text entered in the reason field.
+ * @return the text entered in the reason field
+ */
+ public String getReason()
+ {
+ return reasonField.getText();
+ }
+
+ /**
+ * Sets a default value for the reason field.
+ * @param value the text to set as default text for the reason field
+ */
+ public void setReasonFieldText(String value)
+ {
+ reasonField.setText(value);
+ }
+
+ /**
+ * Sets the message to be displayed.
+ * @param message The message to be displayed.
+ */
+ public void setMessage(String message)
+ {
+ super.setMessage(message);
+
+ setMaxWidth(400);
+ }
+}