/*
* 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.propertieseditor;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import net.java.sip.communicator.plugin.desktoputil.*;
import org.jitsi.service.configuration.*;
import org.jitsi.service.resources.*;
/**
*
* @author Marin Dzhigarov
*/
public class NewPropertyDialog
extends SIPCommDialog
implements ActionListener
{
/**
* Serial version UID.
*/
private static final long serialVersionUID = 1L;
private ConfigurationService confService = PropertiesEditorActivator
.getConfigurationService();
private ResourceManagementService resourceManagementService =
PropertiesEditorActivator.getResourceManagementService();
/**
* The ok button.
*/
private JButton okButton = new JButton(
resourceManagementService.getI18NString("service.gui.OK"));
/**
* The cancel button.
*/
private JButton cancelButton = new JButton(
resourceManagementService.getI18NString("service.gui.CANCEL"));
/**
* The property name text field.
*/
private JTextField propertyNameTextField = new JTextField();
/**
* The property value text field.
*/
private JTextField propertyValueTextField = new JTextField();
/**
* The property name label.
*/
private JLabel propertyNameLabel = new JLabel(
resourceManagementService.getI18NString("service.gui.NAME") + ": ");
/**
* The property value label.
*/
private JLabel propertyValueLabel = new JLabel(
resourceManagementService.getI18NString("service.gui.VALUE") + ": ");
/**
* The panel containing all buttons.
*/
private JPanel buttonsPanel = new TransparentPanel(new FlowLayout(
FlowLayout.CENTER));
/**
* The panel containing the property value and name panels.
*/
private JPanel dataPanel = new TransparentPanel(new GridBagLayout());
/**
* Creates an instance of <tt>NewPropertyDialog</tt>.
*/
public NewPropertyDialog()
{
setTitle(resourceManagementService
.getI18NString("plugin.propertieseditor.NEW_PROPERTY_TITLE"));
JPanel fields = new TransparentPanel(new BorderLayout());
fields.setPreferredSize(new Dimension(450, 150));
this.getContentPane().add(fields);
fields.setBorder(BorderFactory.createEmptyBorder(8, 8, 8, 8));
fields.add(dataPanel, BorderLayout.NORTH);
fields.add(buttonsPanel, BorderLayout.SOUTH);
this.buttonsPanel.add(okButton);
this.buttonsPanel.add(cancelButton);
okButton.setEnabled(false);
this.okButton.addActionListener(this);
this.cancelButton.addActionListener(this);
GridBagConstraints first = new GridBagConstraints();
first.gridx = 0;
first.gridy = 0;
first.weightx = 0;
first.anchor = GridBagConstraints.LINE_START;
first.gridwidth = 1;
first.insets = new Insets(2, 4, 2, 4);
first.fill = GridBagConstraints.HORIZONTAL;
GridBagConstraints second = new GridBagConstraints();
second.gridx = 1;
second.gridy = 0;
second.weightx = 2;
second.anchor = GridBagConstraints.LINE_START;
second.gridwidth = 1; // GridBagConstraints.REMAINDER;
second.insets = first.insets;
second.fill = GridBagConstraints.HORIZONTAL;
dataPanel.add(propertyNameLabel, first);
dataPanel.add(propertyNameTextField, second);
first.gridy = ++second.gridy;
dataPanel.add(propertyValueLabel, first);
dataPanel.add(propertyValueTextField, second);
propertyNameTextField.getDocument().addDocumentListener(
new DocumentListener()
{
public void insertUpdate(DocumentEvent e)
{
okButton.setEnabled(true);
}
public void removeUpdate(DocumentEvent e)
{
if (propertyNameTextField.getText().length() == 0)
okButton.setEnabled(false);
}
public void changedUpdate(DocumentEvent e)
{
}
});
}
/**
* Performs corresponding actions, when a button is pressed.
*
* @param e the <tt>ActionEvent</tt> that notified us
*/
public void actionPerformed(ActionEvent e)
{
JButton sourceButton = (JButton) e.getSource();
if (sourceButton.equals(okButton))
{
confService.setProperty(propertyNameTextField.getText(),
propertyValueTextField.getText());
}
dispose();
}
/**
* Presses programmatically the cancel button, when Esc key is pressed.
*
* @param isEscaped indicates if the Esc button was pressed on close
*/
protected void close(boolean isEscaped)
{
cancelButton.doClick();
}
}