import java.awt.*;
import javax.swing.*;
/** This class extends JPanel to display text on it.The text scrolls from right to left
* everytime a char is typed. */
class MovingLabel extends JPanel{
private Font font;
private FontMetrics metrics;
private Color backcolor;
private int total,charWidth,alignment=0;
private char character[];
private Color color[];
private int candisplay;
public static final int right=0,center=1;
public int half;
MovingLabel(int alignment){
UserData user=MainScreen.getInstance().getCurrentUser();
font=new Font("MonoSpaced",Font.PLAIN,user.getTypingFontSize());
metrics=getFontMetrics(font);
charWidth=metrics.charWidth('a');
setPreferredSize(new Dimension(Utilities.getLineWidth(),
Utilities.getLabelHeight()));
character=new char[80];
color=new Color[80];
if(alignment<0||alignment>1)
return;
this.alignment=alignment;
backcolor=user.getBackground();
setValues();
}
public void setValues(){
candisplay=(Utilities.getLineWidth()-2*Utilities.getIndent())/charWidth;
if(candisplay%2==1)
candisplay++;
if(alignment==1)
candisplay/=2;
}
public void paint(Graphics g){
g.setFont(font);
g.setColor(backcolor);
g.fillRect(0,0,getWidth(),getHeight());
int y=(getHeight()-metrics.getHeight())/2+metrics.getAscent();
int x,end;
if(alignment==0)
end=Utilities.getLineWidth()-Utilities.getIndent();
else
end=Utilities.getLineWidth()-Utilities.getIndent()-(candisplay)*charWidth;
for(int i=0;i<total;i++){
x=end-charWidth*(total-i);
g.setColor(color[i]);
g.drawString(String.valueOf(character[i]),x,y);
}
}
public void addChar(char ch,Color c){
if(total<candisplay){
character[total]=ch;
color[total++]=c;
}
else{
for(int i=0;i<total;i++){
character[i]=character[i+1];
color[i]=color[i+1];
}
character[total-1]=ch;
color[total-1]=c;
}
repaint();
}
public void setBackground(Color c){
backcolor=c;
repaint();
}
public void removeChar(){
if(total>0)
total--;
repaint();
}
public int canDisplay(){
return candisplay;
}
}