/* * 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.plugin.desktoputil.chat; import java.awt.*; import javax.swing.*; import javax.swing.event.*; import net.java.sip.communicator.plugin.desktoputil.*; /** * * @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); } }