package gui.status;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.util.Observable;
import java.util.Observer;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import utils.ObserverMessage;
import controller.Controller;
@SuppressWarnings("serial")
public class NetworkStatus extends JLabel implements Observer
{
private ImageIcon noConnectionsIcon;
private ImageIcon synchronizingIcon;
private ImageIcon okeIcon;
public NetworkStatus()
{
super();
//CREATE ICONS
this.noConnectionsIcon = this.createIcon(Color.RED);
this.synchronizingIcon = this.createIcon(Color.ORANGE);
this.okeIcon = this.createIcon(Color.GREEN);
//LISTEN ON STATUS
Controller.getInstance().addObserver(this);
}
private ImageIcon createIcon(Color color)
{
//CREATE IMAGE
BufferedImage image = new BufferedImage(16, 16, BufferedImage.TYPE_INT_ARGB);
Graphics2D g = image.createGraphics();
//AA
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
//SET COLOR
g.setColor(color);
//CREATE CIRCLE
g.fillOval(0, 0, 16, 16);
//SET BACKGROUND
g.setBackground(this.getBackground());
//CONVERT TO ICON
return new ImageIcon(image);
}
@Override
public void update(Observable arg0, Object arg1)
{
ObserverMessage message = (ObserverMessage) arg1;
if(message.getType() == ObserverMessage.NETWORK_STATUS)
{
int status = (int) message.getValue();
if(status == Controller.STATUS_NO_CONNECTIONS)
{
this.setIcon(noConnectionsIcon);
this.setText("No connections");
}
if(status == Controller.STATUS_SYNCHRONIZING)
{
this.setIcon(synchronizingIcon);
this.setText("Synchronizing");
}
if(status == Controller.STATUS_OKE)
{
this.setIcon(okeIcon);
this.setText("Oke");
}
}
}
}