package com.andreiolar.abms.client.widgets;
import java.util.Date;
import com.andreiolar.abms.client.utils.DateUtil;
import com.andreiolar.abms.shared.ConversationMessage;
import com.google.gwt.dom.client.Style.Float;
import com.google.gwt.event.dom.client.ErrorEvent;
import com.google.gwt.event.dom.client.ErrorHandler;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;
import gwt.material.design.addins.client.bubble.MaterialBubble;
import gwt.material.design.client.constants.Color;
import gwt.material.design.client.constants.Position;
import gwt.material.design.client.ui.MaterialImage;
import gwt.material.design.client.ui.MaterialLabel;
import gwt.material.design.client.ui.MaterialRow;
public class Message extends Composite implements CustomWidget {
private ConversationMessage conversationMessage;
private String loggedInUser;
public Message(ConversationMessage conversationMessage, String loggedInUser) {
this.conversationMessage = conversationMessage;
this.loggedInUser = loggedInUser;
initWidget(initializeWidget());
}
@Override
public Widget initializeWidget() {
MaterialRow row = new MaterialRow();
row.setMarginBottom(0);
MaterialImage profilePicture = new MaterialImage();
profilePicture.setBackgroundColor(Color.GREY_LIGHTEN_3);
if (loggedInUser.equals(conversationMessage.getUsername())) {
profilePicture.setFloat(Float.RIGHT);
profilePicture.setMarginLeft(12);
profilePicture.setMarginRight(25);
} else {
profilePicture.setFloat(Float.LEFT);
profilePicture.setMarginRight(12);
profilePicture.setMarginLeft(25);
}
profilePicture.setMarginTop(8);
profilePicture.setWidth("40px");
profilePicture.setHeight("40px");
profilePicture.setShadow(1);
profilePicture.setCircle(true);
String profilePictureUsername = conversationMessage.getUsername().replaceAll("\\.", "");
profilePicture.setUrl("http://res.cloudinary.com/andreiolar/image/upload/" + profilePictureUsername + ".png");
profilePicture.addErrorHandler(new ErrorHandler() {
@Override
public void onError(ErrorEvent event) {
if (conversationMessage.getGender().equals("Female")) {
profilePicture.setUrl("images/icons/female.png");
} else {
profilePicture.setUrl("images/icons/male.png");
}
}
});
MaterialBubble bubble = new MaterialBubble();
if (loggedInUser.equals(conversationMessage.getUsername())) {
bubble.setBackgroundColor(Color.BLUE);
bubble.setPosition(Position.RIGHT);
bubble.setFloat(Float.RIGHT);
} else {
bubble.setBackgroundColor(Color.WHITE);
bubble.setPosition(Position.LEFT);
bubble.setFloat(Float.LEFT);
}
MaterialLabel text = new MaterialLabel();
text.setText(conversationMessage.getMessage());
if (loggedInUser.equals(conversationMessage.getUsername())) {
text.setTextColor(Color.WHITE);
} else {
text.setTextColor(Color.BLACK);
}
Date messageDate = DateUtil.getConversationDate(conversationMessage.getDate());
String displayDate = DateUtil.getConversationDisplayDate(messageDate);
MaterialLabel date = new MaterialLabel();
date.setText(displayDate);
date.setFloat(Float.RIGHT);
date.setFontSize("0.6em");
if (loggedInUser.equals(conversationMessage.getUsername())) {
date.setTextColor(Color.WHITE);
} else {
date.setTextColor(Color.BLACK);
}
bubble.add(text);
bubble.add(date);
row.add(profilePicture);
row.add(bubble);
return row;
}
}