package eu.hgross.blaubot.example.chat.views;
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;
import org.joda.time.DateTime;
import org.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
import eu.hgross.blaubot.example.chat.R;
import eu.hgross.blaubot.example.chat.messages.ChatMessage;
/**
* Visualizes a ChatMessage
*/
public class ChatMessageView extends FrameLayout {
private Handler mUiHandler;
private View mMainView;
private ChatMessage mChatMessage;
private DateTimeFormatter mDateTimeFormatter;
public ChatMessageView(Context context) {
super(context);
initView();
}
public ChatMessageView(Context context, ChatMessage chatMessage) {
super(context);
initView();
setChatMessage(chatMessage);
}
private void initView() {
mMainView = inflate(getContext(), R.layout.chat_message, null);
addView(mMainView);
mUiHandler = new Handler(Looper.getMainLooper());
mDateTimeFormatter = DateTimeFormat.forPattern("HH:mm:ss");
}
/**
* Sets the message to be displayed
*
* @param chatMessage the message to be visualized
*/
public void setChatMessage(final ChatMessage chatMessage) {
mChatMessage = chatMessage;
mUiHandler.post(new Runnable() {
@Override
public void run() {
TextView timestamp = (TextView) mMainView.findViewById(R.id.chat_msg_timestamp);
TextView originatorName = (TextView) mMainView.findViewById(R.id.chat_msg_originatorName);
TextView message = (TextView) mMainView.findViewById(R.id.chat_msg_message);
DateTime dateTime = new DateTime(chatMessage.getSendTimestamp());
timestamp.setText(mDateTimeFormatter.print(dateTime));
originatorName.setText(chatMessage.getOriginator().getUserName());
message.setText(chatMessage.getMessage());
}
});
}
}