package com.andreiolar.abms.client.widgets; import com.andreiolar.abms.shared.UserDetails; import com.google.gwt.dom.client.Style.FontWeight; 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.client.constants.Color; import gwt.material.design.client.constants.Display; import gwt.material.design.client.constants.TextAlign; import gwt.material.design.client.ui.MaterialImage; import gwt.material.design.client.ui.MaterialLabel; import gwt.material.design.client.ui.MaterialPanel; import gwt.material.design.client.ui.html.Hr; public class ConversationWithWidget extends Composite implements CustomWidget { private UserDetails userDetails; public ConversationWithWidget(UserDetails userDetails) { this.userDetails = userDetails; initWidget(initializeWidget()); } @Override public Widget initializeWidget() { MaterialPanel mainPanel = new MaterialPanel(); mainPanel.setTextAlign(TextAlign.CENTER); MaterialPanel headerPanel = new MaterialPanel(); MaterialImage profilePicture = new MaterialImage(); profilePicture.setMarginTop(30); profilePicture.setWidth("120px"); profilePicture.setHeight("120px"); profilePicture.setShadow(1); profilePicture.setCircle(true); String profilePictureUsername = userDetails.getUsername().replaceAll("\\.", ""); profilePicture.setUrl("http://res.cloudinary.com/andreiolar/image/upload/" + profilePictureUsername + ".png"); profilePicture.addErrorHandler(new ErrorHandler() { @Override public void onError(ErrorEvent event) { if (userDetails.getGender().equals("Female")) { profilePicture.setUrl("images/icons/female.png"); } else { profilePicture.setUrl("images/icons/male.png"); } } }); headerPanel.add(profilePicture); MaterialLabel nameLabel = new MaterialLabel(); nameLabel.setText(userDetails.getFirstName() + " " + userDetails.getLastName()); nameLabel.setMarginTop(30.0); nameLabel.setTextColor(Color.BLUE); nameLabel.setFontWeight(FontWeight.BOLD); nameLabel.setFontSize("22px"); headerPanel.add(nameLabel); Hr mainHr = new Hr(); mainHr.setMarginTop(30.0); headerPanel.add(mainHr); MaterialPanel contentPanel = new MaterialPanel(); contentPanel.addStyleName("conversation-with-panel"); contentPanel.setMarginTop(30.0); MaterialPanel usernamePanel = new MaterialPanel(); usernamePanel.setDisplay(Display.FLEX); MaterialLabel usernameLabel = new MaterialLabel(); usernameLabel.setText("Username:"); usernameLabel.setFontWeight(FontWeight.BOLD); usernameLabel.setTextColor(Color.BLUE); MaterialLabel usernameLabelValue = new MaterialLabel(); usernameLabelValue.setText(userDetails.getUsername()); usernameLabelValue.setTextColor(Color.GREY); usernameLabelValue.addStyleName("margin-left-auto"); usernamePanel.add(usernameLabel); usernamePanel.add(usernameLabelValue); Hr usernameHr = new Hr(); usernameHr.setMarginTop(15.0); usernameHr.setMarginBottom(15.0); MaterialPanel aptNumberPanel = new MaterialPanel(); aptNumberPanel.setDisplay(Display.FLEX); MaterialLabel aptNumberLabel = new MaterialLabel(); aptNumberLabel.setText("Apartment Number:"); aptNumberLabel.setFontWeight(FontWeight.BOLD); aptNumberLabel.setTextColor(Color.BLUE); MaterialLabel aptNumberLabelValue = new MaterialLabel(); aptNumberLabelValue.setText(userDetails.getApartmentNumber()); aptNumberLabelValue.setTextColor(Color.GREY); aptNumberLabelValue.addStyleName("margin-left-auto"); aptNumberPanel.add(aptNumberLabel); aptNumberPanel.add(aptNumberLabelValue); Hr aptNumberHr = new Hr(); aptNumberHr.setMarginTop(15.0); aptNumberHr.setMarginBottom(15.0); MaterialPanel phonePanel = new MaterialPanel(); phonePanel.setDisplay(Display.FLEX); MaterialLabel phoneLabel = new MaterialLabel(); phoneLabel.setText("Phone Number:"); phoneLabel.setFontWeight(FontWeight.BOLD); phoneLabel.setTextColor(Color.BLUE); MaterialLabel phoneLabelValue = new MaterialLabel(); phoneLabelValue.setText(userDetails.getMobileNumber()); phoneLabelValue.setTextColor(Color.GREY); phoneLabelValue.addStyleName("margin-left-auto"); phonePanel.add(phoneLabel); phonePanel.add(phoneLabelValue); Hr phoneHr = new Hr(); phoneHr.setMarginTop(15.0); phoneHr.setMarginBottom(15.0); MaterialPanel mailPanel = new MaterialPanel(); mailPanel.setDisplay(Display.FLEX); MaterialLabel mailLabel = new MaterialLabel(); mailLabel.setText("E-Mail:"); mailLabel.setFontWeight(FontWeight.BOLD); mailLabel.setTextColor(Color.BLUE); MaterialLabel mailLabelValue = new MaterialLabel(); mailLabelValue.setText(userDetails.getEmail()); mailLabelValue.setTextColor(Color.GREY); mailLabelValue.addStyleName("margin-left-auto"); mailPanel.add(mailLabel); mailPanel.add(mailLabelValue); Hr mailHr = new Hr(); mailHr.setMarginTop(15.0); mailHr.setMarginBottom(15.0); MaterialPanel dobPanel = new MaterialPanel(); dobPanel.setDisplay(Display.FLEX); MaterialLabel dobLabel = new MaterialLabel(); dobLabel.setText("Date of Birth:"); dobLabel.setFontWeight(FontWeight.BOLD); dobLabel.setTextColor(Color.BLUE); MaterialLabel dobLabelValue = new MaterialLabel(); dobLabelValue.setText(userDetails.getDateOfBirth().toString()); dobLabelValue.setTextColor(Color.GREY); dobLabelValue.addStyleName("margin-left-auto"); dobPanel.add(dobLabel); dobPanel.add(dobLabelValue); Hr dobHr = new Hr(); dobHr.setMarginTop(15.0); dobHr.setMarginBottom(15.0); MaterialPanel genderPanel = new MaterialPanel(); genderPanel.setDisplay(Display.FLEX); MaterialLabel genderLabel = new MaterialLabel(); genderLabel.setText("Gender:"); genderLabel.setFontWeight(FontWeight.BOLD); genderLabel.setTextColor(Color.BLUE); MaterialLabel genderLabelValue = new MaterialLabel(); genderLabelValue.setText(userDetails.getGender()); genderLabelValue.setTextColor(Color.GREY); genderLabelValue.addStyleName("margin-left-auto"); genderPanel.add(genderLabel); genderPanel.add(genderLabelValue); contentPanel.add(usernamePanel); contentPanel.add(usernameHr); contentPanel.add(aptNumberPanel); contentPanel.add(aptNumberHr); contentPanel.add(phonePanel); contentPanel.add(phoneHr); contentPanel.add(mailPanel); contentPanel.add(mailHr); contentPanel.add(dobPanel); contentPanel.add(dobHr); contentPanel.add(genderPanel); mainPanel.add(headerPanel); mainPanel.add(contentPanel); return mainPanel; } }