add an account index in the status selector box

cusax-fix
Yana Stamcheva 20 years ago
parent d452e2308c
commit dd207c9b14

@ -51,11 +51,11 @@ public StatusPanel(MainFrame mainFrame) {
* @param protocolProvider The protocol provider.
*/
public void addAccount(ProtocolProviderService protocolProvider) {
StatusSelectorBox protocolStatusCombo = new StatusSelectorBox(
this.mainFrame, protocolProvider);
this.mainFrame, protocolProvider,
this.mainFrame.getProviderIndex(protocolProvider));
this.protocolStatusCombos.put(protocolProvider.getAccountID(),
this.protocolStatusCombos.put(protocolProvider,
protocolStatusCombo);
this.add(protocolStatusCombo);
@ -67,20 +67,37 @@ public void addAccount(ProtocolProviderService protocolProvider) {
* Removes the selector box, containing all protocol statuses, from
* the StatusPanel and refreshes the panel.
*
* @param accountID The identifier of the account to remove.
* @param pps The protocol provider to remove.
*/
public void removeAccount(AccountID accountID) {
public void removeAccount(ProtocolProviderService pps) {
StatusSelectorBox protocolStatusCombo = (StatusSelectorBox)
this.protocolStatusCombos.get(accountID);
this.protocolStatusCombos.get(pps);
this.protocolStatusCombos.remove(accountID);
this.protocolStatusCombos.remove(pps);
this.remove(protocolStatusCombo);
this.revalidate();
this.repaint();
}
/**
* Updates the account given by the protocol provider.
*
* @param protocolProvider the protocol provider for the account to update
*/
public void updateAccount(ProtocolProviderService protocolProvider) {
StatusSelectorBox protocolStatusCombo = (StatusSelectorBox)
this.protocolStatusCombos.get(protocolProvider);
protocolStatusCombo.setAccountIndex(
mainFrame.getProviderIndex(protocolProvider));
this.revalidate();
this.repaint();
}
/**
* Shows the protocol animated icon, which indicates that it is in a
* connecting state.
@ -91,7 +108,7 @@ public void startConnecting(ProtocolProviderService protocolProvider) {
StatusSelectorBox selectorBox
= (StatusSelectorBox) protocolStatusCombos
.get(protocolProvider.getAccountID());
.get(protocolProvider);
selectorBox.startConnecting(Constants
.getProtocolAnimatedIcon(protocolProvider.getProtocolName()));
@ -109,76 +126,78 @@ public void updateStatus(ProtocolProviderService protocolProvider) {
StatusSelectorBox selectorBox
= (StatusSelectorBox) protocolStatusCombos
.get(protocolProvider.getAccountID());
if(!protocolProvider.isRegistered())
selectorBox.updateStatus(selectorBox.getOfflineStatus());
else {
if(selectorBox.getLastSelectedStatus() != null) {
selectorBox.updateStatus(selectorBox.getLastSelectedStatus());
}
else {
ConfigurationService configService
= GuiActivator.getConfigurationService();
//find the last contact status saved in the configuration.
String lastStatus = null;
Iterator i = mainFrame.getProtocolPresence(protocolProvider)
.getSupportedStatusSet();
String prefix = "net.java.sip.communicator.impl.ui.accounts";
List accounts = configService
.getPropertyNamesByPrefix(prefix, true);
Iterator accountsIter = accounts.iterator();
while(accountsIter.hasNext()) {
String accountRootPropName
= (String) accountsIter.next();
.get(protocolProvider);
if(selectorBox != null) {
if(!protocolProvider.isRegistered())
selectorBox.updateStatus(selectorBox.getOfflineStatus());
else {
if(selectorBox.getLastSelectedStatus() != null) {
selectorBox.updateStatus(selectorBox.getLastSelectedStatus());
}
else {
ConfigurationService configService
= GuiActivator.getConfigurationService();
//find the last contact status saved in the configuration.
String lastStatus = null;
Iterator i = mainFrame.getProtocolPresence(protocolProvider)
.getSupportedStatusSet();
String accountUID
= configService.getString(accountRootPropName);
String prefix = "net.java.sip.communicator.impl.ui.accounts";
if(accountUID.equals(protocolProvider
.getAccountID().getAccountUniqueID())) {
lastStatus = configService.getString(
accountRootPropName + ".lastAccountStatus");
List accounts = configService
.getPropertyNamesByPrefix(prefix, true);
Iterator accountsIter = accounts.iterator();
while(accountsIter.hasNext()) {
String accountRootPropName
= (String) accountsIter.next();
String accountUID
= configService.getString(accountRootPropName);
if(lastStatus != null)
break;
if(accountUID.equals(protocolProvider
.getAccountID().getAccountUniqueID())) {
lastStatus = configService.getString(
accountRootPropName + ".lastAccountStatus");
if(lastStatus != null)
break;
}
}
}
if(lastStatus == null) {
selectorBox.updateStatus(selectorBox.getOnlineStatus());
}
else {
PresenceStatus status;
while(i.hasNext()) {
status = (PresenceStatus)i.next();
if(status.getStatusName().equals(lastStatus)) {
selectorBox.updateStatus(status);
break;
}
if(lastStatus == null) {
selectorBox.updateStatus(selectorBox.getOnlineStatus());
}
else {
PresenceStatus status;
while(i.hasNext()) {
status = (PresenceStatus)i.next();
if(status.getStatusName().equals(lastStatus)) {
selectorBox.updateStatus(status);
break;
}
}
}
}
}
selectorBox.repaint();
}
selectorBox.repaint();
}
/**
* Checks if the given protocol has already its <tt>StatusSelectorBox</tt>
* in the <tt>StatusPanel</tt>.
*
* @param accountID The identifier of the account.
* @param pps The protocol provider to check.
* @return True if the protcol has already its StatusSelectorBox in the
* StatusPanel, False otherwise.
*/
public boolean containsAccount(AccountID accountID) {
if (protocolStatusCombos.containsKey(accountID))
public boolean containsAccount(ProtocolProviderService pps) {
if (protocolStatusCombos.containsKey(pps))
return true;
else
return false;

@ -7,11 +7,11 @@
package net.java.sip.communicator.impl.gui.main;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.image.*;
import java.util.*;
import javax.swing.*;
import javax.swing.Timer;
@ -19,7 +19,6 @@
import net.java.sip.communicator.impl.gui.i18n.*;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.service.protocol.icqconstants.*;
import net.java.sip.communicator.util.*;
/**
@ -49,19 +48,25 @@ public class StatusSelectorBox extends SIPCommSelectorBox {
private PresenceStatus lastSelectedStatus;
private int accountIndex;
/**
* Creates an instance of <tt>StatusSelectorBox</tt> and initializes
* the selector box with data.
*
* @param mainFrame The main application window.
* @param protocolProvider The protocol provider.
* @param accountIndex If we have more than one account for a protocol,
* each account has an index.
*/
public StatusSelectorBox(MainFrame mainFrame,
ProtocolProviderService protocolProvider) {
ProtocolProviderService protocolProvider,
int accountIndex) {
this.mainFrame = mainFrame;
this.protocolProvider = protocolProvider;
this.accountIndex = accountIndex;
this.statusIterator = this.mainFrame
.getProtocolPresence(protocolProvider).getSupportedStatusSet();
@ -121,8 +126,7 @@ public void actionPerformed(ActionEvent e) {
.setManuallyDisconnected(true);
protocolProvider.unregister();
}
setSelected(menuItem.getText(),
menuItem.getIcon());
setSelectedStatus(status);
}
else {
lastSelectedStatus = status;
@ -305,9 +309,10 @@ public void actionPerformed(ActionEvent evt) {
*/
public void setSelectedStatus(PresenceStatus status)
{
Image statusImage = ImageLoader.getBytesInImage(status.getStatusIcon());
this.setSelected(status.getStatusName(),
new ImageIcon(
ImageLoader.getBytesInImage(status.getStatusIcon())));
new ImageIcon(statusImage));
}
/**
@ -328,8 +333,34 @@ public PresenceStatus getOnlineStatus()
return onlineStatus;
}
/**
* Returns the status that is currently selected.
* @return the status that is currently selected
*/
public PresenceStatus getLastSelectedStatus()
{
return lastSelectedStatus;
}
public int getAccountIndex()
{
return accountIndex;
}
public void setAccountIndex(int accountIndex)
{
this.accountIndex = accountIndex;
}
public void paintComponent(Graphics g)
{
super.paintComponent(g);
if(accountIndex > 0) {
AntialiasingManager.activateAntialiasing(g);
g.setColor(Color.DARK_GRAY);
g.setFont(Constants.FONT.deriveFont(Font.BOLD, 9));
g.drawString(new Integer(accountIndex).toString(), 20, 12);
}
}
}

Loading…
Cancel
Save