Example usage for com.vaadin.ui Button.ClickListener Button.ClickListener

List of usage examples for com.vaadin.ui Button.ClickListener Button.ClickListener

Introduction

In this page you can find the example usage for com.vaadin.ui Button.ClickListener Button.ClickListener.

Prototype

Button.ClickListener

Source Link

Usage

From source file:com.trivago.mail.pigeon.web.components.mail.ActionButtonColumnGenerator.java

License:Apache License

@Override
public Object generateCell(final Table source, final Object itemId, final Object columnId) {
    HorizontalLayout hl = new HorizontalLayout();
    Button showNlConentButton = new Button();
    showNlConentButton.setDescription("View");
    showNlConentButton.setImmediate(true);
    showNlConentButton.setIcon(new ThemeResource("../runo/icons/16/document-txt.png"));

    showNlConentButton.addListener(new Button.ClickListener() {
        @Override//from ww  w  .j  a  v  a 2s.c o m
        public void buttonClick(Button.ClickEvent event) {
            Mail m = new Mail((Long) itemId);
            Window nlConentView = new Window("Newsletter Contents of ID " + itemId);
            // Create an empty tab sheet.
            TabSheet tabsheet = new TabSheet();

            Panel pText = new Panel("Text Content");
            Panel pHtml = new Panel("Text Content");
            RichTextArea textArea = new RichTextArea();
            textArea.setValue(m.getText());
            textArea.setReadOnly(true);

            RichTextArea richTextArea = new RichTextArea();
            richTextArea.setValue(m.getHtml());
            richTextArea.setReadOnly(true);

            pText.addComponent(textArea);
            pHtml.addComponent(richTextArea);

            richTextArea.setHeight("50%");
            richTextArea.setWidth("100%");
            textArea.setHeight("50%");
            textArea.setWidth("100%");

            nlConentView.setResizable(true);
            nlConentView.setWidth("800px");
            nlConentView.setHeight("600px");

            tabsheet.addTab(pText);
            tabsheet.getTab(pText).setCaption("Text Version");
            tabsheet.addTab(pHtml);
            tabsheet.getTab(pHtml).setCaption("Html Version");

            nlConentView.addComponent(tabsheet);
            source.getWindow().addWindow(nlConentView);
            nlConentView.setVisible(true);
        }
    });

    final Button showOpenendMails = new Button();
    showOpenendMails.setDescription("Show recipients of this mailling");
    showOpenendMails.setIcon(new ThemeResource("../runo/icons/16/users.png"));
    showOpenendMails.addListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            Mail m = new Mail((Long) itemId);
            ModalRecipientListByMail modalRecipientListByMail = new ModalRecipientListByMail(m);
            source.getWindow().addWindow(modalRecipientListByMail);
            modalRecipientListByMail.setVisible(true);

        }
    });

    hl.addComponent(showNlConentButton);
    hl.addComponent(showOpenendMails);
    return hl;
}

From source file:com.trivago.mail.pigeon.web.components.mail.ModalAddNewsletter.java

License:Apache License

public ModalAddNewsletter(final NewsletterList nl) {
    super();//from  ww  w.  j  ava  2 s  . c  o m

    setModal(true);
    setWidth("600px");
    setClosable(false);

    Panel rootPanel = new Panel("Add new Newsletter");
    final VerticalLayout verticalLayout = new VerticalLayout();
    final SenderSelectBox senderSelectBox = new SenderSelectBox();
    final HorizontalLayout buttonLayout = new HorizontalLayout();
    final GroupSelectBox groupSelectBox = new GroupSelectBox();
    final UploadTextFileComponent uploadTextfile = new UploadTextFileComponent();
    final UploadHtmlFileComponent uploadHtmlfile = new UploadHtmlFileComponent();
    final TemplateSelectBox templateSelectBox = new TemplateSelectBox();
    final TextField tfSubject = new TextField("Subject");
    final DateField tfSendDate = new DateField("Send Date");
    final Button cancelButton = new Button("Cancel");
    final Button saveButton = new Button("Send");

    tfSendDate.setInvalidAllowed(false);
    tfSendDate.setResolution(DateField.RESOLUTION_MIN);
    tfSendDate.setValue(new Date());

    cancelButton.addListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            event.getButton().getWindow().setVisible(false);
            event.getButton().getWindow().getParent().removeComponent(event.getButton().getWindow());
        }
    });

    saveButton.addListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            boolean hasError = false;
            // Validation
            if (tfSubject.getValue().equals("") && templateSelectBox.getSelectedTemplate() == null) {
                hasError = true;
                tfSubject.setComponentError(
                        new UserError("Subject cannot be empty if you do not choose a template."));
            } else {
                tfSubject.setComponentError(null);
            }

            if (tfSendDate.getValue() == null) {
                hasError = true;
                tfSendDate.setComponentError(new UserError("Date cannot be empty"));
            } else {
                tfSendDate.setComponentError(null);
            }

            if (templateSelectBox.getSelectedTemplate() == null) {
                if (!uploadTextfile.isUploadFinished()) {
                    hasError = true;
                    uploadTextfile.setComponentError(
                            new UserError("You must provide a text file if you do not choose a template"));
                } else {
                    uploadTextfile.setComponentError(null);
                }

                if (!uploadHtmlfile.isUploadFinished()) {
                    hasError = true;
                    uploadHtmlfile.setComponentError(
                            new UserError("You must provide a html file if you do not choose a template"));
                } else {
                    uploadHtmlfile.setComponentError(null);
                }
            }

            if (senderSelectBox.getSelectedSender() == 0) {
                hasError = true;
                senderSelectBox.setComponentError(new UserError("You must select a sender"));
            } else {
                senderSelectBox.setComponentError(null);
            }

            if (groupSelectBox.getSelectedGroup() == 0) {
                hasError = true;
                groupSelectBox.setComponentError(new UserError("You must select a recipient group"));
            } else {
                groupSelectBox.setComponentError(null);
            }
            log.debug("Has Error: " + hasError);
            if (!hasError) {
                log.info("No validation errors found, processing request");
                long mailId = Util.generateId();
                try {
                    Sender s = new Sender(senderSelectBox.getSelectedSender());

                    String text;
                    String html;
                    String subject;

                    if (templateSelectBox.getSelectedTemplate() == null) {
                        text = uploadTextfile.getTextData();
                        html = uploadHtmlfile.getHtmlData();
                        subject = tfSubject.getValue().toString();
                    } else {
                        MailTemplate mt = new MailTemplate(templateSelectBox.getSelectedTemplate());
                        text = mt.getText();
                        html = mt.getHtml();
                        subject = mt.getSubject();
                    }

                    Mail m = new Mail(mailId, text, html, (Date) tfSendDate.getValue(), subject, s);

                    QueueNewsletter queueNewsletter = new QueueNewsletter();
                    queueNewsletter.queueNewsletter(m, s,
                            new RecipientGroup(groupSelectBox.getSelectedGroup()));

                    event.getButton().getWindow().setVisible(false);
                    event.getButton().getWindow().getParent().removeComponent(event.getButton().getWindow());
                    event.getButton().getWindow().getParent().showNotification("Queued successfully",
                            Notification.TYPE_HUMANIZED_MESSAGE);

                    nl.getBeanContainer().addItem(m.getId(), m);

                } catch (RuntimeException e) {
                    log.error("RuntimeException", e);
                    event.getButton().getApplication().getMainWindow().showNotification(
                            "An error occured: " + e.getLocalizedMessage(), Notification.TYPE_ERROR_MESSAGE);
                }
            }
        }
    });

    buttonLayout.setSpacing(true);
    buttonLayout.addComponent(saveButton);
    buttonLayout.addComponent(cancelButton);

    Panel metaData = new Panel("Basic Data");

    metaData.addComponent(tfSendDate);
    verticalLayout.addComponent(metaData);
    verticalLayout.addComponent(senderSelectBox);
    verticalLayout.addComponent(groupSelectBox);

    verticalLayout.addComponent(templateSelectBox);

    verticalLayout.addComponent(tfSubject);
    verticalLayout.addComponent(uploadTextfile);
    verticalLayout.addComponent(uploadHtmlfile);

    verticalLayout.addComponent(buttonLayout);

    rootPanel.addComponent(verticalLayout);
    this.addComponent(rootPanel);
}

From source file:com.trivago.mail.pigeon.web.components.mail.NewsletterList.java

License:Apache License

public NewsletterList() {

    final NewsletterList nl = this;
    final Panel rootPanel = new Panel("Newsletter");
    rootPanel.setWidth("800px");

    viewTable = new Table();
    viewTable.setWidth("100%");
    beanContainer = new BeanContainer<>(Mail.class);

    Button senderListNewButton = new Button("New Newsletter");
    senderListNewButton.setImmediate(true);
    senderListNewButton.setIcon(new ThemeResource("../runo/icons/16/document-add.png"));
    senderListNewButton.addListener(new Button.ClickListener() {
        @Override//from w  ww .j  a v a  2  s . co  m
        public void buttonClick(Button.ClickEvent event) {
            Window modalNewWindow = new ModalAddNewsletter(nl);
            event.getButton().getWindow().addWindow(modalNewWindow);
            modalNewWindow.setVisible(true);
        }
    });
    Button statusPopup = new Button("Show delivery status");
    statusPopup.setImmediate(true);
    statusPopup.setIcon(new ThemeResource("../runo/icons/16/globe.png"));
    statusPopup.addListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            Window modalNewWindow = new PopupActiveNewsletters();
            event.getButton().getWindow().addWindow(modalNewWindow);
            modalNewWindow.setVisible(true);
        }
    });

    List<Mail> mailList = getMailList();
    for (Mail mail : mailList) {
        beanContainer.addItem(mail.getId(), mail);
    }

    viewTable.setContainerDataSource(beanContainer);
    viewTable.addGeneratedColumn("Sender", new SenderColumnGenerator());
    viewTable.addGeneratedColumn("Actions", new ActionButtonColumnGenerator());

    // First set the vis. cols, then the headlines (the other way round leads to an exception)
    viewTable.setVisibleColumns(new String[] { "id", "subject", "sendDate", "Sender", "done", "Actions" });

    viewTable.setColumnHeaders(new String[] { "ID", "Subject", "Send Date", "Sender", "Finished", "Actions" });

    viewTable.setColumnExpandRatio(6, 2);

    HorizontalLayout topButtonLayout = new HorizontalLayout();
    topButtonLayout.addComponent(senderListNewButton);
    // topButtonLayout.addComponent(statusPopup);
    topButtonLayout.setMargin(false, false, true, false);

    rootPanel.addComponent(topButtonLayout);
    rootPanel.addComponent(viewTable);

    setCompositionRoot(rootPanel);
}

From source file:com.trivago.mail.pigeon.web.components.mail.NewsletterProgressComponent.java

License:Apache License

public NewsletterProgressComponent(final Mail mail) {
    Panel rootPanel = new Panel("Progress for Mail with Suject " + mail.getSubject());

    VerticalLayout vl = new VerticalLayout();
    vl.setSpacing(true);/*w w w.j a v  a  2 s.  c om*/

    DateField df = new DateField("Send Date");
    df.setValue(mail.getSendDate());
    df.setReadOnly(true);
    df.setResolution(DateField.RESOLUTION_MIN);

    indicator = new ProgressIndicator(new Float(0.0));
    indicator.setPollingInterval(500);
    int cnt = 0;
    Iterable<Relationship> recipients = mail.getRecipients();

    for (Relationship rec : recipients) {
        ++cnt;
    }
    final int recpCount = cnt;

    class WorkerThread extends Thread {
        int current = 0;
        public volatile int stop = 0;

        public void run() {
            while (true) {
                if (stop > 0) {
                    break;
                }

                try {
                    QueueNewsletter qn = new QueueNewsletter();
                    int progress = qn.getProgress(mail.getId());
                    current = recpCount - progress;

                    if (current == recpCount) {
                        mail.setDone();
                        break;
                    }

                    double result = (recpCount / 100.00) * current;
                    indicator.setValue(new Float(result / 100.00));

                    sleep(500);
                } catch (InterruptedException e) {
                }
            }
        }
    }

    final WorkerThread workerThread = new WorkerThread();

    final Button startButton = new Button("Poll status");
    final Button stopButton = new Button("Stop polling");

    startButton.addListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {

            workerThread.start();
            event.getButton().setVisible(false);
            stopButton.setVisible(true);

        }
    });

    stopButton.addListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {

            workerThread.stop = 1;
            workerThread.interrupt();
            event.getButton().setVisible(false);
            startButton.setVisible(true);
        }
    });

    stopButton.setVisible(false);
    vl.addComponent(df);
    vl.addComponent(indicator);
    vl.addComponent(startButton);
    vl.addComponent(stopButton);

    rootPanel.addComponent(vl);
    setCompositionRoot(rootPanel);
}

From source file:com.trivago.mail.pigeon.web.components.recipients.RecipientList.java

License:Apache License

private void init() {
    final Panel rootPanel = new Panel("Recipients");
    rootPanel.setWidth("800px");

    //      Button senderListNewButton = new Button("Add Sender");
    //      senderListNewButton.setImmediate(true);
    //      senderListNewButton.setIcon(new ThemeResource("../runo/icons/16/document-add.png"));
    //      senderListNewButton.addListener(new Button.ClickListener()
    //      {/*from  ww  w.j  a  v a 2s  . co m*/
    //         @Override
    //         public void buttonClick(Button.ClickEvent event)
    //         {
    //            Window modalNewWindow = new ModalAddNewSender(sl);
    //            event.getButton().getWindow().addWindow(modalNewWindow);
    //            modalNewWindow.setVisible(true);
    //         }
    //      });

    viewTable = new Table();
    viewTable.setWidth("100%");
    final Button editButton = new Button("Edit");
    editButton.setImmediate(true);
    editButton.setIcon(new ThemeResource("../runo/icons/16/document-txt.png"));
    editButton.addListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            if (viewTable.isEditable()) {
                viewTable.setEditable(false);
                editButton.setCaption("Edit");
                viewTable.requestRepaintAll();
                editButton.getWindow().showNotification("Save successful",
                        Window.Notification.TYPE_HUMANIZED_MESSAGE);
            } else {
                viewTable.setEditable(true);
                editButton.setCaption("Save");
                viewTable.requestRepaintAll();
            }
        }
    });

    Button exportTable = new Button("Export");
    exportTable.setImmediate(true);
    exportTable.setIcon(new ThemeResource("../runo/icons/16/document-xsl.png"));
    exportTable.addListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            log.debug("Starting export");
            TableExport te = new ExcelExport(viewTable, "Recipient list", "Recipient list",
                    "Recipient_list.xls", false);
            log.debug("Converting table");
            te.convertTable();
            log.debug("Sending converted table...");
            boolean success = te.sendConverted();
            if (success) {
                log.debug("Sending should be successful");
            } else {
                log.warn("Sending not successfull, maybe IOException occured?");
            }
        }
    });

    viewTable.setImmediate(true);
    beanContainer = new BeanContainer<>(Recipient.class);

    List<Recipient> recipientList = getRecipientList();
    for (Recipient recipient : recipientList) {
        beanContainer.addItem(recipient.getId(), recipient);
    }

    viewTable.setContainerDataSource(beanContainer);
    viewTable.addGeneratedColumn("Actions", new ActionButtonColumnGenerator());

    // First set the vis. cols, then the headlines (the other way round leads to an exception)
    viewTable.setVisibleColumns(new String[] { "id", "title", "firstname", "lastname", "email", "active",
            "gender", "birthday", "city", "country", "language", "Actions" });

    viewTable.setColumnHeaders(new String[] { "ID", "Title", "Firstname", "Lastname", "E-Mail", "Active",
            "Gender", "Birthday", "City", "Country", "Language", "Actions" });

    viewTable.setColumnCollapsingAllowed(true);

    viewTable.setColumnCollapsed("gender", true);
    viewTable.setColumnCollapsed("title", true);
    viewTable.setColumnCollapsed("birthday", true);
    viewTable.setColumnCollapsed("city", true);
    viewTable.setColumnCollapsed("country", true);
    viewTable.setColumnCollapsed("language", true);

    viewTable.setColumnExpandRatio(3, 2);
    viewTable.setColumnExpandRatio(4, 2);

    HorizontalLayout topButtonLayout = new HorizontalLayout();
    topButtonLayout.setSpacing(true);
    topButtonLayout.setMargin(false, false, true, false);
    topButtonLayout.addComponent(editButton);
    topButtonLayout.addComponent(exportTable);

    rootPanel.addComponent(topButtonLayout);
    rootPanel.addComponent(viewTable);

    setCompositionRoot(rootPanel);
}

From source file:com.trivago.mail.pigeon.web.components.sender.ModalAddNewSender.java

License:Apache License

public ModalAddNewSender(final SenderList sl) {
    super();/*from www.ja v  a 2s.  c om*/
    setClosable(false);
    setModal(true);
    setWidth("300px");

    Panel rootPanel = new Panel("Add new Sender");
    final VerticalLayout verticalLayout = new VerticalLayout();
    final TextField tfName = new TextField("Name");
    final TextField tfFromMail = new TextField("From E-Mail");
    final TextField tfReplyTo = new TextField("ReplyTo E-Mail");

    verticalLayout.addComponent(tfName);
    verticalLayout.addComponent(tfFromMail);
    verticalLayout.addComponent(tfReplyTo);

    HorizontalLayout buttonLayout = new HorizontalLayout();

    Button saveButton = new Button("Save");
    Button cancelButton = new Button("Cancel");

    cancelButton.addListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            event.getButton().getWindow().setVisible(false);
            event.getButton().getWindow().getParent().removeComponent(event.getButton().getWindow());
        }
    });

    saveButton.addListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            if (tfName.getValue().equals("")) {
                tfName.setComponentError(new UserError("Name must not be empty"));
            } else {
                tfName.setComponentError(null);
            }

            if (tfFromMail.getValue().equals("")) {
                tfFromMail.setComponentError(new UserError("From E-Mail must not be empty"));
            } else {
                tfFromMail.setComponentError(null);
            }

            if (tfReplyTo.getValue().equals("")) {
                tfReplyTo.setComponentError(new UserError("Reply-To E-Mail must not be empty"));
            } else {
                tfReplyTo.setComponentError(null);
            }

            if (!tfName.getValue().equals("") && !tfFromMail.getValue().equals("")
                    && !tfReplyTo.getValue().equals("")) {
                tfName.setComponentError(null);
                tfFromMail.setComponentError(null);
                tfReplyTo.setComponentError(null);

                long senderId = Util.generateId();
                try {
                    Sender s = new Sender(senderId, tfFromMail.getValue().toString(),
                            tfReplyTo.getValue().toString(), tfName.getValue().toString());
                    event.getButton().getWindow().setVisible(false);
                    event.getButton().getWindow().getParent().removeComponent(event.getButton().getWindow());
                    event.getButton().getWindow().getParent().showNotification("Saved successfully",
                            Notification.TYPE_HUMANIZED_MESSAGE);
                    sl.getBeanContainer().addItem(s.getId(), s);

                    // The sender select could be placed anywhere but must be reloaded to reflect the changes.
                    SenderSelectBox.reloadSelect();
                } catch (RuntimeException e) {
                    // Should never happen ... hopefully :D
                }
            }
        }
    });

    buttonLayout.setSpacing(true);
    buttonLayout.addComponent(saveButton);
    buttonLayout.addComponent(cancelButton);

    verticalLayout.addComponent(buttonLayout);
    rootPanel.addComponent(verticalLayout);
    this.addComponent(rootPanel);
}

From source file:com.trivago.mail.pigeon.web.components.sender.SenderList.java

License:Apache License

public SenderList() {
    final SenderList sl = this;
    final Panel rootPanel = new Panel("Sender");
    rootPanel.setWidth("800px");

    Button senderListNewButton = new Button("Add Sender");
    senderListNewButton.setImmediate(true);
    senderListNewButton.setIcon(new ThemeResource("../runo/icons/16/document-add.png"));
    senderListNewButton.addListener(new Button.ClickListener() {
        @Override/*from w  w w.jav  a  2 s.  c om*/
        public void buttonClick(Button.ClickEvent event) {
            Window modalNewWindow = new ModalAddNewSender(sl);
            event.getButton().getWindow().addWindow(modalNewWindow);
            modalNewWindow.setVisible(true);
        }
    });

    viewTable = new Table();
    viewTable.setWidth("100%");
    final Button editButton = new Button("Edit");
    editButton.setImmediate(true);
    editButton.setIcon(new ThemeResource("../runo/icons/16/document-txt.png"));
    editButton.addListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            if (viewTable.isEditable()) {
                viewTable.setEditable(false);
                editButton.setCaption("Edit");
                viewTable.requestRepaintAll();
                editButton.getWindow().showNotification("Save successful",
                        Window.Notification.TYPE_HUMANIZED_MESSAGE);
            } else {
                viewTable.setEditable(true);
                editButton.setCaption("Save");
                viewTable.requestRepaintAll();
            }
        }
    });

    viewTable.setImmediate(true);
    beanContainer = new BeanContainer<Long, Sender>(Sender.class);

    List<Sender> senderList = getSenderList();
    for (Sender sender : senderList) {
        beanContainer.addItem(sender.getId(), sender);
    }

    viewTable.setContainerDataSource(beanContainer);
    viewTable.addGeneratedColumn("Actions", new ActionButtonColumnGenerator());

    // First set the vis. cols, then the headlines (the other way round leads to an exception)
    viewTable.setVisibleColumns(
            new String[] { "id", "name", "fromMail", "replytoMail", "sentMailsCount", "Actions" });

    viewTable.setColumnHeaders(new String[] { "ID", "Name", "E-Mail", "Reply To", "E-Mails sent", "Actions" });

    viewTable.setColumnExpandRatio(3, 2);
    viewTable.setColumnExpandRatio(4, 2);

    HorizontalLayout topButtonLayout = new HorizontalLayout();
    topButtonLayout.setSpacing(true);
    topButtonLayout.setMargin(false, false, true, false);
    topButtonLayout.addComponent(senderListNewButton);
    topButtonLayout.addComponent(editButton);

    rootPanel.addComponent(topButtonLayout);
    rootPanel.addComponent(viewTable);

    setCompositionRoot(rootPanel);

}

From source file:com.trivago.mail.pigeon.web.components.templates.ModalAddTemplate.java

License:Apache License

public ModalAddTemplate(final TemplateList tl, final Long templateId) {
    setResizable(true);//from w  ww  .  j  a v  a  2s  .  c om
    setWidth("972px");
    setHeight("700px");
    Panel rootPanel = new Panel("Add new Template");
    TabSheet tSheet = new TabSheet();
    HorizontalLayout hLayout = new HorizontalLayout();

    final TextField title = new TextField("Template description");
    final TextField subject = new TextField("Newsletter Subject");

    final TextArea textContent = new TextArea("Text Version");
    textContent.setRows(40);
    textContent.setColumns(100);

    final CKEditorTextField htmlContent = new CKEditorTextField();
    htmlContent.setWidth("100%");
    htmlContent.setHeight("650px");

    // Load the content, if we receive a template id
    if (templateId != null) {
        MailTemplate mt = new MailTemplate(templateId);
        title.setValue(mt.getTitle());
        subject.setValue(mt.getSubject());
        textContent.setValue(mt.getText());
        htmlContent.setValue(mt.getHtml());
    }

    Button saveButton = new Button("Save");
    Button cancel = new Button("Cancel");

    saveButton.addListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            boolean hasError = false;
            if (title.getValue().equals("")) {
                title.setComponentError(new UserError("Name must not be empty"));
                hasError = true;
            } else {
                title.setComponentError(null);
            }

            if (subject.getValue().equals("")) {
                subject.setComponentError(new UserError("Subject must not be empty"));
                hasError = true;
            } else {
                subject.setComponentError(null);
            }

            if (htmlContent.getValue().equals("")) {
                htmlContent.setComponentError(new UserError("Please provide some HTML content"));
                hasError = true;
            } else {
                htmlContent.setComponentError(null);
            }

            if (textContent.getValue().equals("")) {
                textContent.setComponentError(new UserError("Please provide some text content"));
                hasError = true;
            } else {
                textContent.setComponentError(null);
            }

            if (!hasError) {
                if (templateId == null) {
                    long templateId = Util.generateId();
                    try {
                        MailTemplate mt = new MailTemplate(templateId, title.getValue().toString(),
                                textContent.getValue().toString(), htmlContent.getValue().toString(),
                                subject.getValue().toString());
                        event.getButton().getWindow().setVisible(false);
                        event.getButton().getWindow().getParent()
                                .removeComponent(event.getButton().getWindow());
                        event.getButton().getWindow().getParent().showNotification("Saved successfully",
                                Notification.TYPE_HUMANIZED_MESSAGE);
                        tl.getBeanContainer().addItem(mt.getId(), mt);
                    } catch (RuntimeException e) {
                        // Should never happen ... hopefully :D
                    }
                } else {
                    MailTemplate mt = new MailTemplate(templateId);

                    mt.setHtml(htmlContent.getValue().toString());
                    mt.setSubject(subject.getValue().toString());
                    mt.setText(textContent.getValue().toString());
                    mt.setTitle(title.getValue().toString());

                    event.getButton().getWindow().setVisible(false);
                    event.getButton().getWindow().getParent().removeComponent(event.getButton().getWindow());
                    event.getButton().getWindow().getParent().showNotification("Saved successfully",
                            Notification.TYPE_HUMANIZED_MESSAGE);

                    final int beanIndex = tl.getBeanContainer().indexOfId(mt.getId());
                    tl.getBeanContainer().removeItem(mt.getId());
                    tl.getBeanContainer().addItemAt(beanIndex, mt.getId(), mt);
                }
                TemplateSelectBox.reloadSelect();
            }
        }
    });

    hLayout.addComponent(saveButton);
    hLayout.addComponent(cancel);
    hLayout.setSpacing(true);

    VerticalLayout metaDataLayout = new VerticalLayout();

    Panel textFieldPanel = new Panel("Meta Data");
    VerticalLayout metaLayout = new VerticalLayout();
    metaLayout.addComponent(title);
    metaLayout.addComponent(subject);
    textFieldPanel.addComponent(metaLayout);

    Panel helpPanel = new Panel("Template Documentation");
    assembleHelpComponents(helpPanel);

    metaDataLayout.addComponent(textFieldPanel);
    metaDataLayout.addComponent(helpPanel);

    tSheet.addTab(metaDataLayout).setCaption("Meta Data");

    VerticalLayout textLayout = new VerticalLayout();
    textLayout.addComponent(textContent);
    tSheet.addTab(textLayout).setCaption("Text Content");

    VerticalLayout htmlLayout = new VerticalLayout();
    htmlLayout.addComponent(htmlContent);
    tSheet.addTab(htmlLayout).setCaption("HTML Content");

    rootPanel.addComponent(tSheet);
    rootPanel.addComponent(hLayout);
    addComponent(rootPanel);
}

From source file:com.trivago.mail.pigeon.web.components.templates.TemplateList.java

License:Apache License

public TemplateList() {

    final TemplateList nl = this;
    final Panel rootPanel = new Panel("Newsletter");
    rootPanel.setWidth("800px");

    viewTable = new Table();
    viewTable.setWidth("100%");
    beanContainer = new BeanContainer<Long, MailTemplate>(MailTemplate.class);

    Button senderListNewButton = new Button("New Template");
    senderListNewButton.setImmediate(true);
    senderListNewButton.setIcon(new ThemeResource("../runo/icons/16/document-add.png"));
    senderListNewButton.addListener(new Button.ClickListener() {
        @Override//from w  w w. j  a  v a  2 s  .  c o m
        public void buttonClick(Button.ClickEvent event) {
            Window modalNewWindow = new ModalAddTemplate(nl);
            event.getButton().getWindow().addWindow(modalNewWindow);
            modalNewWindow.setVisible(true);
        }
    });

    List<MailTemplate> mailList = getTemplateList();
    for (MailTemplate mail : mailList) {
        beanContainer.addItem(mail.getId(), mail);
    }

    viewTable.setContainerDataSource(beanContainer);
    viewTable.addGeneratedColumn("Actions", new ActionButtonColumnGenerator());

    // First set the vis. cols, then the headlines (the other way round leads to an exception)
    viewTable.setVisibleColumns(new String[] { "id", "subject", "Actions" });

    viewTable.setColumnHeaders(new String[] { "ID", "Subject", "Actions" });

    viewTable.setColumnExpandRatio(6, 2);

    HorizontalLayout topButtonLayout = new HorizontalLayout();
    topButtonLayout.addComponent(senderListNewButton);
    // topButtonLayout.addComponent(statusPopup);
    topButtonLayout.setMargin(false, false, true, false);

    rootPanel.addComponent(topButtonLayout);
    rootPanel.addComponent(viewTable);

    setCompositionRoot(rootPanel);
}

From source file:cz.iivos.todo.components.YesNoWindow.java

/**
 * Konstruktor.//from  w w  w.  j  a  v a 2 s  .c  o  m
 *
 * @param caption nadpis okna
 * @param message zprva, kter m bt zobrazena
 * @param listener listener pro akci YES.
 */
public YesNoWindow(String caption, String message, YesNoWindowListener listener) {

    super(caption);

    this.listener = listener;

    content = new VerticalLayout();
    this.setContent(content);
    content.setWidth(450, Unit.PIXELS);
    content.setMargin(true);
    content.setSpacing(true);
    setModal(true);

    buttonLayout = new HorizontalLayout();
    msgLB = new Label(message);
    content.addComponent(msgLB);

    buttonLayout = new HorizontalLayout();
    content.addComponent(buttonLayout);
    buttonLayout.setSpacing(true);

    yesBT = new Button("Ano");
    buttonLayout.addComponent(yesBT);

    yesBT.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            onYes(event);
        }
    });

    noBT = new Button("Ne");
    buttonLayout.addComponent(noBT);
    noBT.addClickListener(new Button.ClickListener() {
        @Override
        public void buttonClick(Button.ClickEvent event) {
            close();
        }
    });

    center();
}