package com.idega.block.messenger.presentation;
import java.applet.AudioClip;
import java.awt.AWTEvent;
import java.awt.AWTEventMulticaster;
import java.awt.Button;
import java.awt.Color;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Label;
import java.awt.Panel;
import java.awt.Rectangle;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.util.Vector;
import com.idega.block.messenger.data.Message;
import com.idega.presentation.awt.ImageLabel;
/**
* Title: com.idega.block.messenger.presentation
* Description: idega classes
* Copyright: Copyright (c) 2001
* Company: Idega Software
* @author <a href="mailto:eiki@idega.is">Eirikur S. Hrafnsson</a>
* @version 1.0
*/
public class MessageDialog extends Frame implements ActionListener{
Panel panel = new Panel();
Label senderNameLabel = new Label();
TextArea messageArea = new TextArea("",1,1,TextArea.SCROLLBARS_VERTICAL_ONLY);
TextField replyMessage = new TextField();
Button sendButton = new Button();
Message message;
Vector messageVector;
String lastMessageString;
String recipientName;
ImageLabel logo;
ActionListener listener;
AudioClip alertSound;
Label status = new Label(" ");
public MessageDialog(String title, Message message) {
this(title,message,null);
}
public MessageDialog(String title, Message message, ImageLabel imageLogo) {
super(title);
//super(new Frame(), title, false);//if we are a dialog
enableEvents(AWTEvent.WINDOW_EVENT_MASK);
this.message = message;
try {
this.logo = imageLogo;
jbInit();
add(this.panel);
pack();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
void jbInit() throws Exception {
this.recipientName = this.message.getRecipientName();
this.panel.setBackground(Color.white);
this.panel.setFont(new java.awt.Font("Arial", 0, 12));
this.panel.setLayout(null);
//panel.setSize(330,270);
this.senderNameLabel.setFont(new java.awt.Font("Arial", Font.PLAIN, 12));
this.senderNameLabel.setForeground(Color.darkGray);
this.senderNameLabel.setText(this.message.getSenderName());
this.senderNameLabel.setBounds(new Rectangle(6, 59, 365, 20));
this.messageArea.setEditable(false);
this.messageArea.setBounds(new Rectangle(6, 81, 277, 123));
this.messageArea.setFont(new java.awt.Font("Arial", Font.PLAIN, 12));
this.messageArea.setBackground(Color.white);
this.messageArea.setForeground(Color.blue);
this.replyMessage.requestFocus();
this.replyMessage.setBounds(new Rectangle(6, 217, 278, 29));
this.replyMessage.addActionListener(this);
this.replyMessage.setFont(new java.awt.Font("Arial", Font.PLAIN, 14));
/*sendButton.setActionCommand("send");
sendButton.setFont(new java.awt.Font("Arial", Font.PLAIN, 12));
sendButton.setLabel("Send");
sendButton.setBounds(new Rectangle(206, 222, 79, 31));
sendButton.addActionListener(this);*/
if( this.logo!=null ) {
this.logo.setBounds(new Rectangle(6, 0, 126, 52));
this.panel.add(this.logo, null);
}
this.panel.add(this.replyMessage, null);
this.panel.add(this.messageArea, null);
this.panel.add(this.senderNameLabel, null);
this.senderNameLabel.setFont(new java.awt.Font("Arial", Font.PLAIN, 12));
this.senderNameLabel.setForeground(Color.darkGray);
this.status.setBounds(new Rectangle(6, 260, 365, 20));
this.panel.add(this.status,null);
}
protected void processWindowEvent(WindowEvent e) {
if (e.getID() == WindowEvent.WINDOW_CLOSING) {
dispose();
//setState ( Frame.ICONIFIED );
//setState ( Frame.NORMAL );
}
super.processWindowEvent(e);
}
public void actionPerformed(ActionEvent e) {
//if( (e.getActionCommand().equalsIgnoreCase("send")) || (e.getID() == Event.KEY_PRESS) ){
this.lastMessageString = this.replyMessage.getText();
if( !("".equalsIgnoreCase(this.lastMessageString)) ){
this.messageArea.append(this.recipientName+" says:\n");
this.messageArea.append(" "+this.lastMessageString+"\n");
storeMessageString();
this.replyMessage.requestFocus();
if( this.listener!=null ) {
this.listener.actionPerformed(new ActionEvent(this,ActionEvent.ACTION_PERFORMED,"iw-send"));
}
}
}
public void addMessage(Message msg){
this.message = msg;
this.senderNameLabel.setText(this.message.getSenderName()+" - instant message");
this.messageArea.append(this.message.getSenderName()+" says:\n");
this.messageArea.append(" "+this.message.getMessage()+"\n");
if(this.alertSound!=null) {
this.alertSound.play();
}
//setStatus("Last message received at "+date.getHours()+":"+date.getMinutes()+":"+date.getSeconds());
repaint();
}
public Vector getMessages(){
return this.messageVector;
}
public void clearMessageVector(){
this.messageVector = null;
}
private void storeMessageString(){
if( this.messageVector == null ) {
this.messageVector = new Vector();
}
Message msg = new Message();
msg.setMessage(this.lastMessageString);
msg.setRecipient(this.message.getSender());
System.out.println("MessageDialog : message.getSender() : "+this.message.getSender());
if( (this.message!=null) && (this.message.getId()!=0) ){
msg.setId(this.message.getId());
}
else{
msg.setId(this.hashCode());
}
this.messageVector.addElement( msg );
this.replyMessage.setText("");
this.lastMessageString = "";
}
public void setStatus(String text){
this.status.setFont(new java.awt.Font("Arial", Font.PLAIN, 12));
this.status.setForeground(Color.darkGray);
this.status.setText(text);
this.status.repaint();
}
public void setLogoImage(Image image){
this.logo = new ImageLabel(image);
}
public void setLogoImageLabel(ImageLabel imageLabel){
this.logo = imageLabel;
}
public void setAudioClip(AudioClip alertSound){
this.alertSound = alertSound;
}
public void paint(Graphics g){
int iWidth = this.getBounds().width-20;
int iHeight = this.getBounds().height-(184);
this.messageArea.setBounds(6, 82,iWidth,iHeight);
this.replyMessage.setBounds(6, this.messageArea.getBounds().height + 105 ,iWidth,29);
this.status.setBounds(6, this.replyMessage.getBounds().y + 23 ,iWidth,15);
super.paint(g);
}
public void addActionListener(ActionListener l) {
this.listener = AWTEventMulticaster.add(this.listener, l);
}
public void removeActionListener(ActionListener l) {
this.listener = AWTEventMulticaster.remove(this.listener, l);
}
private ActionListener getActionListener(){
return this.listener;
}
}