/*
* 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.impl.gui.customcontrols;
import net.java.sip.communicator.impl.gui.utils.*;
import net.java.sip.communicator.plugin.desktoputil.*;
import javax.swing.*;
import java.awt.*;
/**
* @author Damian Minkov
*/
public class SIPCommNotificationsButton
extends SIPCommTextButton
{
/**
* The default icon.
*/
protected Image defaultImage;
/**
* The pressed icon.
*/
protected Image pressedImage;
/**
* The notification image.
*/
protected Image notificationImage;
/**
* Indicates if this button currently shows the number of unread
* notifications or the just the icon.
*/
private boolean hasNotifications = false;
/**
* Indicates if the default is visible.
* Used when toggling some view with this button.
*/
private boolean defaultViewVisible = false;
/**
* Disables toggling of the button.
*/
private boolean toggleDisabled = false;
/**
* Creates a <tt>SIPCommTextButton</tt>
* @param text the text of the button
*/
public SIPCommNotificationsButton(String text)
{
super(text);
// All items are now instantiated and could safely load the skin.
loadSkin();
this.setForeground(Color.WHITE);
this.setBorder(BorderFactory.createEmptyBorder());
this.setFont(getFont().deriveFont(Font.BOLD, 10f));
this.setBackground(new Color(255, 255, 255, 160));
}
/**
* Loads images and sets history view.
*/
public void loadSkin()
{
notificationImage
= ImageLoader.getImage(
ImageLoader.CALL_HISTORY_BUTTON_NOTIFICATION);
this.setPreferredSize(new Dimension(defaultImage.getWidth(this),
defaultImage.getHeight(this)));
}
public void setToggleDisabled(boolean disableToggle)
{
this.toggleDisabled = disableToggle;
}
public boolean isToggleDisabled()
{
return toggleDisabled;
}
public boolean hasNotifications()
{
return hasNotifications;
}
public void setHasNotifications(boolean hasNotifications)
{
this.hasNotifications = hasNotifications;
}
public boolean isDefaultViewVisible()
{
return defaultViewVisible;
}
public void setDefaultViewVisible(boolean defaultViewVisible)
{
this.defaultViewVisible = defaultViewVisible;
}
public void setNotifications(int count)
{
setHasNotifications(true);
this.setBackground(new Color(200, 0, 0));
this.setVerticalTextPosition(SwingConstants.TOP);
Image iconImage = ImageLoader.getImage(notificationImage,
new Integer(count).toString(), this);
if (isDefaultViewVisible())
{
setBgImage(ImageLoader.getImage(
pressedImage,
iconImage,
pressedImage.getWidth(null)/2
- notificationImage.getWidth(null)/2,
0));
}
else
{
setBgImage(ImageLoader.getImage(
defaultImage,
iconImage,
pressedImage.getWidth(null)/2
- notificationImage.getWidth(null)/2,
0));
}
}
public void clearNotifications()
{
if (hasNotifications())
setHasNotifications(false);
else
setIcon(null);
if (!isToggleDisabled() && isDefaultViewVisible())
{
setBgImage(pressedImage);
}
else
{
setBgImage(defaultImage);
}
setText("");
}
}