List of usage examples for com.vaadin.ui Panel Panel
public Panel(String caption)
From source file:com.trivago.mail.pigeon.web.components.groups.ModalRecipientImportCsv.java
License:Apache License
public ModalRecipientImportCsv(final long groupId) { super();//from w w w. j a v a2 s. c o m setModal(true); setClosable(false); setWidth("600px"); Panel rootPanel = new Panel("Import Recipients via CSV"); VerticalLayout vl = new VerticalLayout(); Label infoText = new Label( "You can upload a bunch of users into a group. Create a CSV file with no! headers. \n" + "You can leave out the user_id by just setting the column empty => ,\"Firstname Lastname\",\"first.last@trivago.com\"."); Label formatInfoText = new Label("Please format you CSV like: user_id,\"user_full_name\",\"email\""); final CheckBox forceUpdate = new CheckBox("Force update of existing recipients?"); Button cancelButton = new Button("Cancel"); vl.addComponent(infoText); vl.addComponent(formatInfoText); final UploadCsvFileComponent ucsv = new UploadCsvFileComponent(); vl.addComponent(ucsv); Button importButton = new Button("Import"); importButton.addListener(new Button.ClickListener() { @Override public void buttonClick(Button.ClickEvent event) { if (!ucsv.isUploadFinished()) { ucsv.setComponentError(new UserError("Please upload a csv first!")); } else { ucsv.setComponentError(null); try { File uploadedFile = ucsv.getCsvFile(); Csv importer = new Csv(uploadedFile, groupId); importer.importData(forceUpdate.booleanValue()); event.getButton().getApplication().getMainWindow().showNotification("Import done", Notification.TYPE_HUMANIZED_MESSAGE); event.getButton().getWindow().setVisible(false); event.getButton().getWindow().getParent().removeComponent(event.getButton().getWindow()); } catch (Exception e) { log.error("Error while importing csv", e); event.getButton().getWindow().showNotification("The import failed.", e.getLocalizedMessage(), Notification.TYPE_ERROR_MESSAGE); } } } }); 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()); } }); HorizontalLayout buttonLayout = new HorizontalLayout(); buttonLayout.setSpacing(true); buttonLayout.addComponent(importButton); buttonLayout.addComponent(cancelButton); vl.addComponent(buttonLayout); rootPanel.addComponent(vl); addComponent(rootPanel); }
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/*ww w . ja v a2 s. c om*/ 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 w w w .j av a2s. 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//ww w . ja v a2 s . com 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);/*from w w w . j av a 2 s . co m*/ 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.mail.UploadHtmlFileComponent.java
License:Apache License
public UploadHtmlFileComponent() { root = new Panel("Upload HTML Version"); setCompositionRoot(root);// w w w .j a v a2s . c o m // Create the Upload component. upload = new Upload("HTML-File", this); // Use a custom button caption instead of plain "Upload". upload.setButtonCaption("Upload Now"); // Listen for events regarding the success of upload. upload.addListener((Upload.SucceededListener) this); upload.addListener((Upload.FailedListener) this); root.addComponent(upload); root.addComponent(new Label("Click 'Browse' to " + "select a file and then click 'Upload'.")); }
From source file:com.trivago.mail.pigeon.web.components.mail.UploadTextFileComponent.java
License:Apache License
public UploadTextFileComponent() { root = new Panel("Upload Text Version"); setCompositionRoot(root);/*from w ww . j av a 2 s .co m*/ // Create the Upload component. upload = new Upload("Text-File", this); // Use a custom button caption instead of plain "Upload". upload.setButtonCaption("Upload Now"); // Listen for events regarding the success of upload. upload.addListener((Upload.SucceededListener) this); upload.addListener((Upload.FailedListener) this); root.addComponent(upload); root.addComponent(new Label("Click 'Browse' to " + "select a file and then click 'Upload'.")); }
From source file:com.trivago.mail.pigeon.web.components.recipients.RecipientByMailList.java
License:Apache License
private void init() { final Panel rootPanel = new Panel("Sender"); rootPanel.setWidth("800px"); viewTable = new Table(); viewTable.setWidth("100%"); viewTable.setData(mail.getId());// w w w . ja va2 s. c o m viewTable.setImmediate(true); beanContainer = new BeanContainer<Long, Recipient>(Recipient.class); List<Recipient> recipientList = getRecipientList(); for (Recipient recipient : recipientList) { beanContainer.addItem(recipient.getId(), recipient); } viewTable.setContainerDataSource(beanContainer); viewTable.addGeneratedColumn("openmail", new OpenMailColumnGenerator()); // First set the vis. cols, then the headlines (the other way round leads to an exception) viewTable.setVisibleColumns(new String[] { "id", "firstname", "lastname", "email", "openmail", //"bounce" }); viewTable.setColumnHeaders(new String[] { "ID", "Firstname", "Lastname", "E-Mail", "Opened Mail", //"Bounced" }); viewTable.setColumnExpandRatio(3, 2); viewTable.setColumnExpandRatio(4, 2); rootPanel.addComponent(viewTable); 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 w w w . ja 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.recipients.UploadCsvFileComponent.java
License:Apache License
public UploadCsvFileComponent() { root = new Panel("Upload Text Version"); setCompositionRoot(root);/* w w w .jav a 2s. c o m*/ // Create the Upload component. upload = new Upload("CSV-File", this); // Use a custom button caption instead of plain "Upload". upload.setButtonCaption("Upload Now"); // Listen for events regarding the success of upload. upload.addListener((Upload.SucceededListener) this); upload.addListener((Upload.FailedListener) this); root.addComponent(upload); root.addComponent(new Label("Click 'Browse' to " + "select a file and then click 'Upload'.")); }