/*
* 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.connectioninfo;
import java.awt.event.*;
import javax.swing.*;
import net.java.sip.communicator.plugin.desktoputil.*;
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.service.protocol.*;
/**
* Implements <tt>PluginComponent</tt> for the "Connection Info" menu item.
*
* @author Marin Dzhigarov
*/
public class ConnectionInfoMenuItemComponent
extends AbstractPluginComponent
{
/**
* The "Connection Info" menu item.
*/
private JMenuItem connectionInfoMenuItem;
/**
* Currently set account id if any.
*/
private AccountID accountID = null;
/**
* Initializes a new "Connection Info" menu item.
*
* @param container the container of the update menu component
* @param parentFactory the parent bundle activator
*/
public ConnectionInfoMenuItemComponent(Container container,
PluginComponentFactory parentFactory)
{
super(container, parentFactory);
}
@Override
public void setCurrentAccountID(AccountID accountID)
{
this.accountID = accountID;
connectionInfoMenuItem.setEnabled(
accountID != null && accountID.isEnabled());
}
/**
* Gets the UI <tt>Component</tt> of this <tt>PluginComponent</tt>.
*
* @return the UI <tt>Component</tt> of this <tt>PluginComponent</tt>
* @see PluginComponent#getComponent()
*/
public Object getComponent()
{
if(connectionInfoMenuItem == null)
{
connectionInfoMenuItem
= new JMenuItem(
Resources.getString("plugin.connectioninfo.TITLE"));
connectionInfoMenuItem.setIcon(
Resources.getImage(
"plugin.contactinfo.CONTACT_INFO_ICON"));
connectionInfoMenuItem.addActionListener(
new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
ConnectionInfoDialog dialog
= new ConnectionInfoDialog(accountID);
dialog.setVisible(true);
}
});
}
return connectionInfoMenuItem;
}
/**
* Gets the name of this <tt>PluginComponent</tt>.
*
* @return the name of this <tt>PluginComponent</tt>
* @see PluginComponent#getName()
*/
public String getName()
{
return
Resources.getString("plugin.connectioninfo.TITLE");
}
/**
* Returns the position of this <tt>PluginComponent</tt> within its
* <tt>Container</tt>
*
* @return Always returns 0. 0 is index of the first section in the "Tools"
* menu bar in the Contacts list that also contains "Options",
* "Create a video bridge" etc...
*/
@Override
public int getPositionIndex()
{
return 0;
}
/**
* The dialog that appears when "Connection Info" menu item is clicked.
*/
static class ConnectionInfoDialog
extends SIPCommDialog
{
private final ConnectionInfoPanel connectionInfoPanel;
private ConnectionInfoDialog(AccountID accountID)
{
this.connectionInfoPanel = new ConnectionInfoPanel(this);
this.setPreferredSize(new java.awt.Dimension(600, 400));
this.setTitle(Resources.getString("plugin.connectioninfo.TITLE"));
if(accountID != null)
{
connectionInfoPanel.getAccountsComboBox().setSelectedItem(
connectionInfoPanel.getAccountsTable().get(accountID));
}
this.add(connectionInfoPanel);
}
/**
* Presses programmatically the cancel button, when Esc key is pressed.
*
* @param isEscaped indicates if the Esc button was pressed on close
*/
@Override
protected void close(boolean isEscaped)
{
this.setVisible(false);
connectionInfoPanel.dispose();
}
@Override
public void setVisible(boolean isVisible)
{
if(isVisible)
{
connectionInfoPanel.setVisible(true);
}
super.setVisible(isVisible);
}
}
}