// Path: emailclient-tutorial-data/src/main/java/org/vaadin/example/backend/Message.java
// @Entity
// public class Message extends AbstractEntity {
// 
//     private boolean read;
//     private boolean trashed;
//     private String sender;
//     @Enumerated(EnumType.STRING)
//     private Flag flag;
// 
//     public enum Flag {
//         FLAG_STAR
//     }
// 
//     @Temporal(TemporalType.TIMESTAMP)
//     private Date sent;
//     private String subject;
// 
//     @Lob
//     private String body;
// 
//     public boolean isRead() {
//         return read;
//     }
// 
//     public void setRead(boolean read) {
//         this.read = read;
//     }
// 
//     public boolean isTrashed() {
//         return trashed;
//     }
// 
//     public void setTrashed(boolean trashed) {
//         this.trashed = trashed;
//     }
// 
//     public Flag getFlag() {
//         return flag;
//     }
// 
//     public void setFlag(Flag flag) {
//         this.flag = flag;
//     }
// 
//     public String getSender() {
//         return sender;
//     }
// 
//     public void setSender(String sender) {
//         this.sender = sender;
//     }
// 
//     public Date getSent() {
//         return sent;
//     }
// 
//     public void setSent(Date sent) {
//         this.sent = sent;
//     }
// 
//     public String getSubject() {
//         return subject;
//     }
// 
//     public void setSubject(String subject) {
//         this.subject = subject;
//     }
// 
//     public String getBody() {
//         return body;
//     }
// 
//     public void setBody(String body) {
//         this.body = body;
//     }
// }
// 
// Path: emailclient-tutorial-data/src/main/java/org/vaadin/example/backend/Message.java
// public enum Flag {
//     FLAG_STAR
// }
// 
// Path: emailclient-tutorial-data/src/main/java/org/vaadin/example/ui/themes/mytheme/MyTheme.java
// public class MyTheme {
//     public static final String INDICATOR_STAR_RED = "indicator-star-red";
//     public static final String INDICATOR_CIRCLE = "indicator-circle";
//     public static final String SELECTED = "selected";
// 
//     public static final List<String> MESSAGE_STYLES = Collections
//             .unmodifiableList(Arrays.asList(MyTheme.INDICATOR_CIRCLE,
//                     MyTheme.INDICATOR_STAR_RED));
// }


import org.vaadin.example.backend.Message;
import org.vaadin.example.backend.Message.Flag;
import org.vaadin.example.ui.themes.mytheme.MyTheme;
import com.vaadin.server.FontAwesome;
package org.vaadin.example.ui;



/**
 * This is the place to implement component logic for MessageDesign. The super
 * class should not be edited, because Vaadin Designer overwrites it.
 * 
 */
public class MessageComponent extends MessageDesign {

    public MessageComponent(Message message,
            MessageClickListener clickListener) {
        senderLabel.setValue(message.getSender());
        messageLabel.setCaption(message.getSubject());
        messageLabel.setValue(message.getBody());

        addLayoutClickListener(
                event -> clickListener.messageClick(this, message));
        setIndicator(message.isRead(), message.getFlag());
    }

    public void setIndicator(boolean read, Flag flag) {
        MyTheme.MESSAGE_STYLES.forEach(indicatorButton::removeStyleName);
        indicatorButton.setIcon(null);
// Path: emailclient-tutorial-data/src/main/java/org/vaadin/example/backend/Message.java
// @Entity
// public class Message extends AbstractEntity {
// 
//     private boolean read;
//     private boolean trashed;
//     private String sender;
//     @Enumerated(EnumType.STRING)
//     private Flag flag;
// 
//     public enum Flag {
//         FLAG_STAR
//     }
// 
//     @Temporal(TemporalType.TIMESTAMP)
//     private Date sent;
//     private String subject;
// 
//     @Lob
//     private String body;
// 
//     public boolean isRead() {
//         return read;
//     }
// 
//     public void setRead(boolean read) {
//         this.read = read;
//     }
// 
//     public boolean isTrashed() {
//         return trashed;
//     }
// 
//     public void setTrashed(boolean trashed) {
//         this.trashed = trashed;
//     }
// 
//     public Flag getFlag() {
//         return flag;
//     }
// 
//     public void setFlag(Flag flag) {
//         this.flag = flag;
//     }
// 
//     public String getSender() {
//         return sender;
//     }
// 
//     public void setSender(String sender) {
//         this.sender = sender;
//     }
// 
//     public Date getSent() {
//         return sent;
//     }
// 
//     public void setSent(Date sent) {
//         this.sent = sent;
//     }
// 
//     public String getSubject() {
//         return subject;
//     }
// 
//     public void setSubject(String subject) {
//         this.subject = subject;
//     }
// 
//     public String getBody() {
//         return body;
//     }
// 
//     public void setBody(String body) {
//         this.body = body;
//     }
// }
// 
// Path: emailclient-tutorial-data/src/main/java/org/vaadin/example/backend/Message.java
// public enum Flag {
//     FLAG_STAR
// }
// 
// Path: emailclient-tutorial-data/src/main/java/org/vaadin/example/ui/themes/mytheme/MyTheme.java
// public class MyTheme {
//     public static final String INDICATOR_STAR_RED = "indicator-star-red";
//     public static final String INDICATOR_CIRCLE = "indicator-circle";
//     public static final String SELECTED = "selected";
// 
//     public static final List<String> MESSAGE_STYLES = Collections
//             .unmodifiableList(Arrays.asList(MyTheme.INDICATOR_CIRCLE,
//                     MyTheme.INDICATOR_STAR_RED));
// }


// Path: emailclient-tutorial-data/src/main/java/org/vaadin/example/ui/MessageComponent.java
import org.vaadin.example.backend.Message;
import org.vaadin.example.backend.Message.Flag;
import org.vaadin.example.ui.themes.mytheme.MyTheme;
import com.vaadin.server.FontAwesome;

package org.vaadin.example.ui;



/**
 * This is the place to implement component logic for MessageDesign. The super
 * class should not be edited, because Vaadin Designer overwrites it.
 * 
 */
public class MessageComponent extends MessageDesign {

    public MessageComponent(Message message,
            MessageClickListener clickListener) {
        senderLabel.setValue(message.getSender());
        messageLabel.setCaption(message.getSubject());
        messageLabel.setValue(message.getBody());

        addLayoutClickListener(
                event -> clickListener.messageClick(this, message));
        setIndicator(message.isRead(), message.getFlag());
    }

    public void setIndicator(boolean read, Flag flag) {
        MyTheme.MESSAGE_STYLES.forEach(indicatorButton::removeStyleName);
        indicatorButton.setIcon(null);
        if (flag == Flag.FLAG_STAR) {