Example usage for com.google.gwt.safehtml.shared SafeHtmlUtils fromSafeConstant

List of usage examples for com.google.gwt.safehtml.shared SafeHtmlUtils fromSafeConstant

Introduction

In this page you can find the example usage for com.google.gwt.safehtml.shared SafeHtmlUtils fromSafeConstant.

Prototype

public static SafeHtml fromSafeConstant(String s) 

Source Link

Document

Returns a SafeHtml constructed from a safe string, i.e., without escaping the string.

Usage

From source file:tv.dyndns.kishibe.qmaclone.client.statistics.PanelStatisticsTop.java

License:Open Source License

public PanelStatisticsTop() {
    super(SafeHtmlUtils.fromSafeConstant(DESCRIPTION));
    setWidth("600px");
}

From source file:ua.oilukraine.client.TabelView.java

/**
 * Add the columns to the table./*w  ww.j  a v a  2s  . co m*/
 */
private void initTableColumns(final SelectionModel<DebtorsData> selectionModel,
        ColumnSortEvent.ListHandler<DebtorsData> sortHandler) {
    // Checkbox column. This table will uses a checkbox column for selection.
    // Alternatively, you can call cellTable.setSelectionEnabled(true) to enable
    // mouse selection.
    Column<DebtorsData, Boolean> checkColumn = new Column<DebtorsData, Boolean>(new CheckboxCell(true, false)) {
        @Override
        public Boolean getValue(DebtorsData object) {
            // Get the value from the selection model.
            return selectionModel.isSelected(object);
        }
    };
    cellTable.addColumn(checkColumn, SafeHtmlUtils.fromSafeConstant("<br/>"));
    cellTable.setColumnWidth(checkColumn, 40, Unit.PX);

    // Firm name.
    Column<DebtorsData, String> FirmNameColumn = new Column<DebtorsData, String>(new TextCell()) {
        @Override
        public String getValue(DebtorsData object) {
            return object.getName();
        }
    };
    FirmNameColumn.setSortable(true);
    sortHandler.setComparator(FirmNameColumn, new Comparator<DebtorsData>() {
        @Override
        public int compare(DebtorsData o1, DebtorsData o2) {
            return o1.getName().compareTo(o2.getName());
        }
    });
    cellTable.addColumn(FirmNameColumn, "");
    //        FirmNameColumn.setFieldUpdater(new FieldUpdater<DebtorsData, String>() {
    //            @Override
    //            public void update(int index, DebtorsData object, String value) {
    //                // Called when the user changes the value.
    //                object.setName(value);
    //                //    ContactDatabase.get().refreshDisplays();
    //            }
    //        });
    cellTable.setColumnWidth(FirmNameColumn, 20, Unit.PCT);

    // OKPO
    Column<DebtorsData, String> okpoColumn = new Column<DebtorsData, String>(new TextCell()) {
        @Override
        public String getValue(DebtorsData object) {
            return object.getOkpo();
        }
    };
    okpoColumn.setSortable(true);
    sortHandler.setComparator(okpoColumn, new Comparator<DebtorsData>() {
        @Override
        public int compare(DebtorsData o1, DebtorsData o2) {
            return o1.getOkpo().compareTo(o2.getOkpo());
        }
    });
    cellTable.addColumn(okpoColumn, "");
    //        okpoColumn.setFieldUpdater(new FieldUpdater<DebtorsData, String>() {
    //            @Override
    //            public void update(int index, DebtorsData object, String value) {
    //                // Called when the user changes the value.
    //                object.setOkpo(value);
    //                //    ContactDatabase.get().refreshDisplays();
    //            }
    //        });
    cellTable.setColumnWidth(okpoColumn, 20, Unit.PCT);

    // Name Buh
    Column<DebtorsData, String> nameBuhColumn = new Column<DebtorsData, String>(new TextCell()) {
        @Override
        public String getValue(DebtorsData object) {
            return object.getName_buh();
        }
    };
    nameBuhColumn.setSortable(true);
    sortHandler.setComparator(nameBuhColumn, new Comparator<DebtorsData>() {
        @Override
        public int compare(DebtorsData o1, DebtorsData o2) {
            return o1.getName_buh().compareTo(o2.getName_buh());
        }
    });
    cellTable.addColumn(nameBuhColumn, "");
    //        okpoColumn.setFieldUpdater(new FieldUpdater<DebtorsData, String>() {
    //            @Override
    //            public void update(int index, DebtorsData object, String value) {
    //                // Called when the user changes the value.
    //                object.setOkpo(value);
    //                //    ContactDatabase.get().refreshDisplays();
    //            }
    //        });
    cellTable.setColumnWidth(nameBuhColumn, 20, Unit.PCT);

    // Phone Work Buh
    Column<DebtorsData, String> phoneWorkBuhColumn = new Column<DebtorsData, String>(new TextCell()) {
        @Override
        public String getValue(DebtorsData object) {
            return object.getPhone_work();
        }
    };
    phoneWorkBuhColumn.setSortable(true);
    sortHandler.setComparator(phoneWorkBuhColumn, new Comparator<DebtorsData>() {
        @Override
        public int compare(DebtorsData o1, DebtorsData o2) {
            return o1.getPhone_work().compareTo(o2.getPhone_work());
        }
    });
    cellTable.addColumn(phoneWorkBuhColumn, " ");
    //        okpoColumn.setFieldUpdater(new FieldUpdater<DebtorsData, String>() {
    //            @Override
    //            public void update(int index, DebtorsData object, String value) {
    //                // Called when the user changes the value.
    //                object.setOkpo(value);
    //                //    ContactDatabase.get().refreshDisplays();
    //            }
    //        });
    cellTable.setColumnWidth(phoneWorkBuhColumn, 20, Unit.PCT);

    // Phone Mob Buh
    Column<DebtorsData, String> phoneMobBuhColumn = new Column<DebtorsData, String>(new TextCell()) {
        @Override
        public String getValue(DebtorsData object) {
            return object.getPhone_mob();
        }
    };
    phoneMobBuhColumn.setSortable(true);
    sortHandler.setComparator(phoneMobBuhColumn, new Comparator<DebtorsData>() {
        @Override
        public int compare(DebtorsData o1, DebtorsData o2) {
            return o1.getPhone_mob().compareTo(o2.getPhone_mob());
        }
    });
    cellTable.addColumn(phoneMobBuhColumn, " ");
    //        okpoColumn.setFieldUpdater(new FieldUpdater<DebtorsData, String>() {
    //            @Override
    //            public void update(int index, DebtorsData object, String value) {
    //                // Called when the user changes the value.
    //                object.setOkpo(value);
    //                //    ContactDatabase.get().refreshDisplays();
    //            }
    //        });
    cellTable.setColumnWidth(phoneMobBuhColumn, 20, Unit.PCT);

    // Date Info
    DateCell dateCell = new DateCell();
    Column<DebtorsData, Date> dateColumn = new Column<DebtorsData, Date>(dateCell) {
        @Override
        public Date getValue(DebtorsData object) {
            return object.getDate_info();
        }
    };
    dateColumn.setSortable(true);
    dateColumn.setDefaultSortAscending(false);
    sortHandler.setComparator(dateColumn, new Comparator<DebtorsData>() {
        @Override
        public int compare(DebtorsData o1, DebtorsData o2) {
            return o1.getDate_info().compareTo(o2.getDate_info());
        }
    });
    cellTable.addColumn(dateColumn, " ");
    dateColumn.setFieldUpdater(new FieldUpdater<DebtorsData, Date>() {
        @Override
        public void update(int index, DebtorsData object, Date value) {
            // Called when the user changes the value.
            object.setDate_info(value);
            //    ContactDatabase.get().refreshDisplays();
        }
    });

    // DatePickerCell.
    DateTimeFormat dateFormat = DateTimeFormat.getFormat(DateTimeFormat.PredefinedFormat.DATE_MEDIUM);
    DatePickerCell datePicCell = new DatePickerCell(dateFormat);

    Column<DebtorsData, Date> datePicColumn = new Column<DebtorsData, Date>(datePicCell) {
        @Override
        public Date getValue(DebtorsData object) {
            return object.getDate_info();
        }
    };
    dateColumn.setSortable(true);
    dateColumn.setDefaultSortAscending(false);
    sortHandler.setComparator(dateColumn, new Comparator<DebtorsData>() {
        @Override
        public int compare(DebtorsData o1, DebtorsData o2) {
            return o1.getDate_info().compareTo(o2.getDate_info());
        }
    });
    cellTable.addColumn(dateColumn, "  Pic");

    //        addColumn(new DatePickerCell(dateFormat), "DatePicker", new GetValue<Date>() {
    //            @Override
    //            public Date getValue(ContactInfo contact) {
    //                return contact.getBirthday();
    //            }
    //        }, new FieldUpdater<ContactInfo, Date>() {
    //            @Override
    //            public void update(int index, ContactInfo object, Date value) {
    //                pendingChanges.add(new BirthdayChange(object, value));
    //            }
    //        });
    //        /**
    //         * Add a column with a header.
    //         *
    //         * @param <C> the cell type
    //         * @param cell the cell used to render the column
    //         * @param headerText the header string
    //         * @param getter the value getter for the cell
    //         */
    //    private <C> Column<ContactInfo, C> addColumn(Cell<C> cell, String headerText,
    //            final GetValue<C> getter, FieldUpdater<ContactInfo, C> fieldUpdater) {
    //        Column<ContactInfo, C> column = new Column<ContactInfo, C>(cell) {
    //            @Override
    //            public C getValue(ContactInfo object) {
    //                return getter.getValue(object);
    //            }
    //        };
    //        column.setFieldUpdater(fieldUpdater);
    //        if (cell instanceof AbstractEditableCell<?, ?>) {
    //            editableCells.add((AbstractEditableCell<?, ?>) cell);
    //        }
    //        contactList.addColumn(column, headerText);
    //        return column;
    //    }
    ///////////////////////////////////////////////////////////////////////
    //        // Address.
    //        Column<DebtorsData, String> addressColumn = new Column<DebtorsData, String>(
    //                new TextCell()) {
    //            @Override
    //            public String getValue(DebtorsData object) {
    //                return object.getAddress();
    //            }
    //        };
    //        addressColumn.setSortable(true);
    //        addressColumn.setDefaultSortAscending(false);
    //        sortHandler.setComparator(addressColumn, new Comparator<DebtorsData>() {
    //            @Override
    //            public int compare(DebtorsData o1, DebtorsData o2) {
    //                return o1.getAddress().compareTo(o2.getAddress());
    //            }
    //        });
    //        cellTable.addColumn(addressColumn, constants.cwCellTableColumnAddress());
    //        cellTable.setColumnWidth(addressColumn, 60, Unit.PCT);
    //
    //        ///////////////////////////////////////////////////////////////////////
    //        // Last name.
    //        Column<DebtorsData, String> lastNameColumn = new Column<DebtorsData, String>(
    //                new EditTextCell()) {
    //            @Override
    //            public String getValue(DebtorsData object) {
    //                return object.getLastName();
    //            }
    //        };
    //        lastNameColumn.setSortable(true);
    //        sortHandler.setComparator(lastNameColumn, new Comparator<DebtorsData>() {
    //            @Override
    //            public int compare(DebtorsData o1, DebtorsData o2) {
    //                return o1.getLastName().compareTo(o2.getLastName());
    //            }
    //        });
    //        cellTable.addColumn(lastNameColumn, constants.cwCellTableColumnLastName());
    //        lastNameColumn.setFieldUpdater(new FieldUpdater<DebtorsData, String>() {
    //            @Override
    //            public void update(int index, DebtorsData object, String value) {
    //                // Called when the user changes the value.
    //                object.setLastName(value);
    //                ContactDatabase.get().refreshDisplays();
    //            }
    //        });
    //        cellTable.setColumnWidth(lastNameColumn, 20, Unit.PCT);
    //
    //        // Category.
    //        final Category[] categories = ContactDatabase.get().queryCategories();
    //        List<String> categoryNames = new ArrayList<String>();
    //        for (Category category : categories) {
    //            categoryNames.add(category.getDisplayName());
    //        }
    //        SelectionCell categoryCell = new SelectionCell(categoryNames);
    //        Column<DebtorsData, String> categoryColumn = new Column<DebtorsData, String>(
    //                categoryCell) {
    //            @Override
    //            public String getValue(DebtorsData object) {
    //                return object.getCategory().getDisplayName();
    //            }
    //        };
    //        cellTable.addColumn(categoryColumn, constants.cwCellTableColumnCategory());
    //        categoryColumn.setFieldUpdater(new FieldUpdater<DebtorsData, String>() {
    //            @Override
    //            public void update(int index, DebtorsData object, String value) {
    //                for (Category category : categories) {
    //                    if (category.getDisplayName().equals(value)) {
    //                        object.setCategory(category);
    //                    }
    //                }
    //                ContactDatabase.get().refreshDisplays();
    //            }
    //        });
    //        cellTable.setColumnWidth(categoryColumn, 130, Unit.PX);
    //
    //        // Address.
    //        Column<DebtorsData, String> addressColumn = new Column<DebtorsData, String>(
    //                new TextCell()) {
    //            @Override
    //            public String getValue(DebtorsData object) {
    //                return object.getAddress();
    //            }
    //        };
    //        addressColumn.setSortable(true);
    //        addressColumn.setDefaultSortAscending(false);
    //        sortHandler.setComparator(addressColumn, new Comparator<DebtorsData>() {
    //            @Override
    //            public int compare(DebtorsData o1, DebtorsData o2) {
    //                return o1.getAddress().compareTo(o2.getAddress());
    //            }
    //        });
    //        cellTable.addColumn(addressColumn, constants.cwCellTableColumnAddress());
    //        cellTable.setColumnWidth(addressColumn, 60, Unit.PCT);
}

From source file:uk.ac.ncl.openlab.intake24.client.CallbackRequestForm.java

private void doRequest() {
    requestCallbackButton.setEnabled(false);

    errorMessage.clear();//w  w  w  .j a v  a2  s . co  m

    if (nameTextBox.getText().isEmpty() || phoneNumberTextBox.getText().isEmpty()) {
        errorMessage
                .add(new HTMLPanel(SafeHtmlUtils.fromSafeConstant(messages.callbackRequestForm_fieldsEmpty())));
        errorMessage.getElement().addClassName("intake24-login-error-message");
        requestCallbackButton.setEnabled(true);
        return;
    }

    if (EmbeddedData.surveyId.equals("demo")) {
        errorMessage.add(new HTMLPanel(SafeHtmlUtils
                .fromSafeConstant(messages.callbackRequestForm_disabledForDemo("support@intake24.co.uk"))));
        errorMessage.getElement().addClassName("intake24-login-error-message");
        requestCallbackButton.setEnabled(true);
        return;
    }

    errorMessage.add(new LoadingWidget());

    HelpService.INSTANCE.requestCallback(EmbeddedData.surveyId,
            new CallbackRequest(nameTextBox.getText(), phoneNumberTextBox.getText()),
            new MethodCallback<Void>() {
                @Override
                public void onFailure(Method method, Throwable exception) {

                    if (method.getResponse().getStatusCode() == 429) {
                        errorMessage.clear();
                        errorMessage.getElement().addClassName("intake24-login-error-message");
                        errorMessage.add(new HTMLPanel(
                                SafeHtmlUtils.fromSafeConstant(messages.callbackRequestForm_tooSoon())));

                        GoogleAnalytics.trackHelpCallbackRejected();
                    } else {
                        errorMessage.clear();
                        errorMessage.add(
                                new HTMLPanel(SafeHtmlUtils.fromSafeConstant(messages.serverErrorTitle())));
                        errorMessage.add(new HTMLPanel(SafeHtmlUtils
                                .fromSafeConstant(messages.serverErrorText(EmbeddedData.surveySupportEmail))));
                        errorMessage.getElement().addClassName("intake24-login-error-message");
                        requestCallbackButton.setEnabled(true);
                    }
                }

                @Override
                public void onSuccess(Method method, Void response) {
                    errorMessage.clear();
                    errorMessage.getElement().addClassName("intake24-login-success-message");
                    errorMessage.add(new HTMLPanel(
                            SafeHtmlUtils.fromSafeConstant(messages.callbackRequestForm_success())));

                    GoogleAnalytics.trackHelpCallbackAccepted();
                }
            });
}

From source file:uk.ac.ncl.openlab.intake24.client.survey.FlatFinalPage.java

License:Apache License

@Override
public SimpleSurveyStageInterface getInterface(Callback1<Survey> onComplete,
        Callback2<Survey, Boolean> onIntermediateStateChange) {
    final CompletedSurvey finalData = data.finalise(log);
    final FlowPanel contents = new FlowPanel();
    contents.addStyleName("intake24-survey-content-container");

    contents.add(new LoadingPanel(messages.submitPage_loadingMessage()));

    SurveyService.INSTANCE.submitSurvey(EmbeddedData.surveyId, finalData,
            new MethodCallback<SurveySubmissionResponse>() {
                @Override/*  ww  w. j  a  va 2 s  . c  o  m*/
                public void onFailure(Method method, Throwable exception) {
                    contents.clear();

                    if (exception instanceof RequestTimeoutException) {
                        final MethodCallback<SurveySubmissionResponse> outer = this;

                        contents.add(
                                new HTMLPanel(SafeHtmlUtils.fromSafeConstant(messages.submitPage_timeout())));

                        contents.add(WidgetFactory.createGreenButton(messages.submitPage_tryAgainButton(),
                                "finalPageTryAgainButton", new ClickHandler() {
                                    @Override
                                    public void onClick(ClickEvent event) {
                                        SurveyService.INSTANCE.submitSurvey(EmbeddedData.surveyId, finalData,
                                                outer);
                                    }
                                }));
                    } else {
                        contents.add(
                                new HTMLPanel(SafeHtmlUtils.fromSafeConstant(messages.submitPage_error())));
                    }

                    contents.add(new HTMLPanel(finalPageHtml));
                }

                @Override
                public void onSuccess(Method method, SurveySubmissionResponse response) {
                    contents.clear();
                    HTMLPanel p = new HTMLPanel(SafeHtmlUtils.fromSafeConstant(messages.submitPage_success()));
                    p.getElement().getStyle().setMarginBottom(30, Style.Unit.PX);
                    contents.add(p);

                    if (response.redirectToFeedback) {

                        HTMLPanel p1 = new HTMLPanel("h4", surveyMessages.finalPage_feedbackLabel());
                        p1.getElement().getStyle().setMarginBottom(0, Style.Unit.PX);

                        contents.add(p1);

                        Button feedbackButton = WidgetFactory.createGreenButton(
                                surveyMessages.finalPage_feedbackButtonLabel(), "feedbackButton",
                                new ClickHandler() {
                                    @Override
                                    public void onClick(ClickEvent clickEvent) {
                                        UrlBuilder builder = Window.Location.createUrlBuilder();

                                        for (String paramName : Window.Location.getParameterMap().keySet()) {
                                            builder.removeParameter(paramName);
                                        }

                                        builder.setPath(Window.Location.getPath() + "/feedback");
                                        builder.setHash("/");

                                        Window.open(builder.buildString(), "_blank", "");
                                    }
                                });

                        contents.add(feedbackButton);
                    }

                    response.followUpUrl.accept(new Option.SideEffectVisitor<String>() {
                        @Override
                        public void visitSome(String url) {

                            if (response.redirectToFeedback) {
                                HTMLPanel p2 = new HTMLPanel("h4",
                                        surveyMessages.finalPage_externalFollowUpLabel_afterFeedback());
                                p2.getElement().getStyle().setMarginBottom(0, Style.Unit.PX);
                                contents.add(p2);
                            } else {
                                HTMLPanel p2 = new HTMLPanel("h4",
                                        surveyMessages.finalPage_externalFollowUpLabel_noFeedback());
                                p2.getElement().getStyle().setMarginBottom(0, Style.Unit.PX);
                                contents.add(p2);
                            }

                            FlowPanel externalLinkDiv = new FlowPanel();

                            externalLinkDiv.add(WidgetFactory.createGreenButton(
                                    surveyMessages.finalPage_externalFollowUpButtonLabel(),
                                    "finalPageExternalUrlButton", new ClickHandler() {
                                        @Override
                                        public void onClick(ClickEvent clickEvent) {
                                            Window.open(url, "_blank", "");
                                        }
                                    }));

                            contents.add(externalLinkDiv);
                        }

                        @Override
                        public void visitNone() {
                        }
                    });

                    contents.add(new HTMLPanel(finalPageHtml));

                    UxEventsHelper.cleanSessionId();
                    StateManagerUtil.clearLatestState(AuthCache.getCurrentUserId());
                }
            });

    return new SimpleSurveyStageInterface(contents, FlatFinalPage.class.getSimpleName());
}

From source file:uk.ac.ncl.openlab.intake24.client.survey.NavigationPanel.java

License:Apache License

public void stateChanged(final Survey state) {
    mealsPanel.clear();/*from w  ww.  j ava  2  s.  co m*/

    Button addMealButton = WidgetFactory.createButton(messages.addMealLabel(), new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            requestAddMeal.call();
        }
    });

    addMealButton.getElement().setId("intake24-add-meal-button");

    UnorderedList<MealPanel> mealList = new UnorderedList<MealPanel>();
    mealList.addStyleName("intake24-meal-list");

    for (WithIndex<Meal> m : state.mealsSortedByTime) {
        MealPanel p = new MealPanel(m.value, m.index, state.selectedElement, new Callback1<Selection>() {
            @Override
            public void call(Selection arg1) {
                requestSelection.call(arg1);
            }
        });
        mealList.addItem(p);
    }

    headerContainer = new FlowPanel();
    headerContainer.addStyleName("intake24-meals-panel-header-container");

    headerButton = new FlowPanel();
    headerButton.addStyleName("intake24-meals-panel-header-button");

    HTMLPanel header = new HTMLPanel(SafeHtmlUtils.fromSafeConstant(messages.navPanelHeader()));
    header.addStyleName("intake24-meals-panel-header");

    headerContainer.add(headerButton);
    headerContainer.add(header);

    mealsPanel.add(headerContainer);
    mealsPanel.add(mealList);
    mealsPanel.add(addMealButton);

    headerButton.sinkEvents(Event.ONCLICK | Event.ONTOUCHSTART);

    headerButton.addHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent clickEvent) {
            togglePanel();
        }
    }, ClickEvent.getType());

    headerButton.addHandler(new TouchStartHandler() {
        @Override
        public void onTouchStart(TouchStartEvent touchStartEvent) {
            togglePanel();

        }
    }, TouchStartEvent.getType());

    onWindowResize();
}

From source file:uk.ac.ncl.openlab.intake24.client.survey.portionsize.AsServedScript.java

License:Apache License

public Option<SimplePrompt<UpdateFunc>> nextPrompt(PMap<String, String> data, FoodData foodData) {
    boolean hasLeftoverImages = !leftoversImages.isEmpty();

    /*Logger log = Logger.getLogger("AsServedScript");
            //from  ww w .jav  a  2s  .  co  m
    log.info("Has leftovers: " + hasLeftoverImages);
            
    for (String k : data.keySet()) {
       log.info (k + " = " + data.get(k));
    }*/

    if (!data.containsKey("servingWeight")) {
        SimplePrompt<UpdateFunc> portionSizePrompt = withBackLink(
                asServedPrompt(servingImages, PromptMessages.INSTANCE.asServed_servedLessButtonLabel(),
                        PromptMessages.INSTANCE.asServed_servedMoreButtonLabel(),
                        PromptMessages.INSTANCE.asServed_servedContinueButtonLabel(), "servingChoiceIndex",
                        "servingImage", "servingWeight", defaultServingSizePrompt(foodData.description())));

        if (!hasLeftoverImages)
            return Option.some(setAdditionalField(portionSizePrompt, "leftoversWeight", "0"));
        else
            return Option.some(portionSizePrompt);
    } else if (!data.containsKey("leftoversWeight") && hasLeftoverImages) {
        if (!data.containsKey("leftovers"))
            return Option.some(withBackLink(yesNoPromptZeroField(
                    SafeHtmlUtils.fromSafeConstant(PromptMessages.INSTANCE.asServed_leftoversQuestionPromptText(
                            SafeHtmlUtils.htmlEscape(foodData.description().toLowerCase()))),
                    PromptMessages.INSTANCE.yesNoQuestion_defaultYesLabel(),
                    PromptMessages.INSTANCE.yesNoQuestion_defaultNoLabel(), "leftovers", "leftoversWeight")));
        else
            return Option.some(withBackLink(asServedPrompt(leftoversImages.getOrDie(),
                    PromptMessages.INSTANCE.asServed_leftLessButtonLabel(),
                    PromptMessages.INSTANCE.asServed_leftMoreButtonLabel(),
                    PromptMessages.INSTANCE.asServed_leftContinueButtonLabel(), "leftoversChoiceIndex",
                    "leftoversImage", "leftoversWeight", defaultLeftoversPrompt(foodData.description()))));
    } else
        return done();
}

From source file:uk.ac.ncl.openlab.intake24.client.survey.portionsize.GuideScript.java

License:Apache License

@Override
public Option<SimplePrompt<UpdateFunc>> nextPrompt(PMap<String, String> data, FoodData foodData) {
    if (!data.containsKey("objectWeight")) {
        return Option.some(PromptUtil.map(
                withBackLink(guidePrompt(SafeHtmlUtils.fromSafeConstant(messages.guide_choicePromptText()),
                        guideDef.imageMap.toImageMap(), "objectIndex", "imageUrl")),
                new Function1<UpdateFunc, UpdateFunc>() {
                    @Override/*  w  ww  . j av  a2 s. co  m*/
                    public UpdateFunc apply(final UpdateFunc f) {
                        return new UpdateFunc() {
                            @Override
                            public PMap<String, String> apply(PMap<String, String> argument) {
                                PMap<String, String> a = f.apply(argument);
                                return a.plus("objectWeight", Double.toString(
                                        guideDef.weights.get(Integer.parseInt(a.get("objectIndex")))));
                            }
                        };
                    }
                }));

    } else if (!data.containsKey("quantity")) {

        return Option.some(withBackLink(PromptUtil.map(
                quantityPrompt(SafeHtmlUtils.fromSafeConstant(messages.guide_quantityPromptText()),
                        messages.guide_quantityContinueButtonLabel(), "quantity"),
                new Function1<UpdateFunc, UpdateFunc>() {
                    @Override
                    public UpdateFunc apply(final UpdateFunc f) {
                        return new UpdateFunc() {
                            @Override
                            public PMap<String, String> apply(PMap<String, String> argument) {
                                PMap<String, String> a = f.apply(argument);
                                return a.plus("servingWeight",
                                        Double.toString(Double.parseDouble(a.get("objectWeight"))
                                                * Double.parseDouble(a.get("quantity"))))
                                        .plus("leftoversWeight", Double.toString(0));
                            }
                        };
                    }
                })));
    } else
        return done();
}

From source file:uk.ac.ncl.openlab.intake24.client.survey.prompts.AddMealPrompt.java

@Override
public SurveyStageInterface getInterface(final Callback1<SurveyOperation> onComplete,
        final Callback1<Function1<Survey, Survey>> onIntermediateStateChange) {
    SafeHtml promptText = SafeHtmlUtils.fromSafeConstant(messages.addMeal_promptText());

    HorizontalPanel mealNamePanel = new HorizontalPanel();
    mealNamePanel.setSpacing(5);//  w w w. j  a  v  a 2s. co m
    mealNamePanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);

    HorizontalPanel mealListPanel = new HorizontalPanel();
    mealListPanel.setSpacing(5);
    mealListPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);

    final TextBox text = new TextBox();

    text.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            text.selectAll();
        }
    });

    text.addKeyUpHandler(new KeyUpHandler() {
        @Override
        public void onKeyUp(KeyUpEvent event) {
            if (event.getNativeKeyCode() == KeyCodes.KEY_ENTER) {
                if (!text.getText().isEmpty())
                    onComplete.call(SurveyOperation.update(new Function1<Survey, Survey>() {
                        @Override
                        public Survey apply(Survey argument) {
                            return argument.plusMeal(Meal.empty(text.getText()))
                                    .withSelection(new Selection.SelectedMeal(argument.meals.size(),
                                            SelectionMode.AUTO_SELECTION));
                        }
                    }));
            }
        }
    });

    final ListBox list = new ListBox();

    for (String s : PredefinedMeals.getSuggestedMealNamesForCurrentLocale())
        list.addItem(s);

    list.setSelectedIndex(selectedIndex);

    text.setText(list.getItemText(list.getSelectedIndex()));

    list.addChangeHandler(new ChangeHandler() {
        @Override
        public void onChange(ChangeEvent event) {
            text.setText(list.getItemText(list.getSelectedIndex()));
        }
    });

    mealListPanel.add(new Label(messages.addMeal_predefLabel()));
    mealListPanel.add(list);
    mealListPanel.getElement().setId("intake24-predef-meal-name");
    ShepherdTour.makeShepherdTarget(mealListPanel);

    mealNamePanel.add(new Label(messages.addMeal_customLabel()));
    mealNamePanel.add(text);
    mealNamePanel.getElement().setId("intake24-custom-meal-name");
    ShepherdTour.makeShepherdTarget(mealNamePanel);

    Button acceptButton = WidgetFactory.createButton(messages.addMeal_addButtonLabel(), new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            if (!text.getText().isEmpty())
                onComplete.call(SurveyOperation.update(new Function1<Survey, Survey>() {
                    @Override
                    public Survey apply(Survey argument) {
                        return argument.plusMeal(Meal.empty(text.getText()))
                                .withSelection(new Selection.SelectedMeal(argument.meals.size(),
                                        SelectionMode.AUTO_SELECTION));
                    }
                }));
        }
    });

    acceptButton.getElement().setId("intake24-accept-button");

    Button cancelButton = WidgetFactory.createButton(messages.addMeal_cancelButtonLabel(), new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            onComplete.call(SurveyOperation.noChange);
        }
    });

    cancelButton.getElement().setId("intake24-cancel-button");

    ShepherdTour.makeShepherdTarget(acceptButton, cancelButton);

    FlowPanel contents = new FlowPanel();
    contents.add(WidgetFactory.createPromptPanel(promptText,
            ShepherdTour.createTourButton(tour, AddMealPrompt.class.getSimpleName())));
    contents.add(mealListPanel);
    contents.add(mealNamePanel);
    contents.add(WidgetFactory.createButtonsPanel(acceptButton, cancelButton));

    return new SurveyStageInterface.Aligned(contents, HasHorizontalAlignment.ALIGN_LEFT,
            HasVerticalAlignment.ALIGN_TOP, SurveyStageInterface.DEFAULT_OPTIONS,
            AddMealPrompt.class.getSimpleName());
}

From source file:uk.ac.ncl.openlab.intake24.client.survey.prompts.AssociatedFoodPrompt.java

License:Apache License

@Override
public SurveyStageInterface getInterface(final Callback1<MealOperation> onComplete,
        Callback1<Function1<Pair<FoodEntry, Meal>, Pair<FoodEntry, Meal>>> updateIntermediateState) {
    final EncodedFood food = (EncodedFood) pair.left;
    final AssociatedFood prompt = food.enabledPrompts.get(promptIndex);

    final FlowPanel content = new FlowPanel();
    PromptUtil.addBackLink(content);//from  w ww  .  jav  a  2s.  c om
    final Panel promptPanel = WidgetFactory.createPromptPanel(
            SafeHtmlUtils.fromSafeConstant("<p>" + SafeHtmlUtils.htmlEscape(prompt.promptText) + "</p>"),
            WidgetFactory.createHelpButton(new ClickHandler() {
                @Override
                public void onClick(ClickEvent arg0) {
                    String promptType = AssociatedFoodPrompt.class.getSimpleName();
                    GoogleAnalytics.trackHelpButtonClicked(promptType);
                    ShepherdTour.startTour(getShepherdTourSteps(), promptType);
                }
            }));
    content.add(promptPanel);
    ShepherdTour.makeShepherdTarget(promptPanel);

    UxEventsHelper.postManualAssociatedFoodReceived(
            new ManualReceivedData(new FoodHeader(food.data.code, food.data.localDescription), prompt));

    final Callback1<FoodData> addNewFood = new Callback1<FoodData>() {
        @Override
        public void call(final FoodData result) {
            onComplete.call(MealOperation.update(new Function1<Meal, Meal>() {
                @Override
                public Meal apply(final Meal meal) {
                    // Special case for cereal:
                    // if a "milk on cereal" food is linked to a cereal food
                    // copy bowl type from the parent food
                    Option<String> bowl_id = getParamValue(food, "bowl");

                    FoodData foodData = bowl_id.accept(new Option.Visitor<String, FoodData>() {
                        @Override
                        public FoodData visitSome(String bowl_id) {
                            return result.withPortionSizeMethods(
                                    appendPotionSizeParameter(result.portionSizeMethods, "bowl", bowl_id));
                        }

                        @Override
                        public FoodData visitNone() {
                            return result;
                        }
                    });

                    EncodedFood assocFood = new EncodedFood(foodData, FoodLink.newUnlinked(),
                            "associated food prompt");

                    return linkAssociatedFood(meal.plusFood(assocFood), food, assocFood, prompt.linkAsMain);
                }

                ;
            }));
        }
    };

    final Callback addMissingFood = new Callback() {
        @Override
        public void call() {
            onComplete.call(MealOperation.update(new Function1<Meal, Meal>() {
                @Override
                public Meal apply(final Meal meal) {
                    FoodEntry missingFood = new MissingFood(FoodLink.newUnlinked(),
                            prompt.genericName.substring(0, 1).toUpperCase() + prompt.genericName.substring(1),
                            false, Option.<MissingFoodDescription>none())
                                    .withCustomDataField(MissingFood.KEY_ASSOC_FOOD_NAME, food.description())
                                    .withCustomDataField(MissingFood.KEY_ASSOC_FOOD_CATEGORY,
                                            prompt.foodOrCategoryCode.getRightOrDie());

                    return linkAssociatedFood(meal.plusFood(missingFood), food, missingFood, prompt.linkAsMain);
                }
            }));
        }
    };

    final Callback1<FoodEntry> addExistingFood = new Callback1<FoodEntry>() {
        @Override
        public void call(final FoodEntry existing) {
            onComplete.call(MealOperation.update(new Function1<Meal, Meal>() {
                @Override
                public Meal apply(final Meal meal) {
                    return linkAssociatedFood(meal, food, existing, prompt.linkAsMain);
                }

                ;
            }));
        }
    };

    foodBrowser = new FoodBrowser(locale, new Callback2<FoodData, Integer>() {
        @Override
        public void call(FoodData result, Integer index) {

            UxEventsHelper.postManualAssociatedFoodConfirmed(
                    new ManualConfirmedData(new FoodHeader(food.data.code, food.data.localDescription),
                            getSelectedFoods(), prompt, new FoodHeader(result.code, result.localDescription)));

            addNewFood.call(result);
        }
    }, new Callback1<String>() {
        @Override
        public void call(String code) {
            throw new RuntimeException("Special foods are not allowed as associated foods");
        }
    }, new Callback() {
        @Override
        public void call() {
            addMissingFood.call();
        }
    }, Option.<SkipFoodHandler>none(), false, Option.<Pair<String, String>>none(), Option.none(),
            Option.none());

    Button no = WidgetFactory.createButton(messages.assocFoods_noButtonLabel(), new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {

            UxEventsHelper.postManualAssociatedFoodRejected(
                    new ManualRejectedData(new FoodHeader(food.data.code, food.data.localDescription), prompt));

            onComplete
                    .call(MealOperation.updateEncodedFood(foodIndex, new Function1<EncodedFood, EncodedFood>() {
                        @Override
                        public EncodedFood apply(EncodedFood argument) {
                            return argument.minusPrompt(promptIndex);
                        }
                    }));
        }
    });

    Button yes = WidgetFactory.createButton(messages.assocFoods_yesButtonLabel(), new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            if (prompt.foodOrCategoryCode.isRight()) {
                content.clear();
                PromptUtil.addBackLink(content);
                content.add(promptPanel);
                content.add(new HTMLPanel(
                        SafeHtmlUtils.fromSafeConstant(messages.assocFoods_specificFoodPrompt())));
                content.add(interf);

                content.add(foodBrowser);
                isInBrowserMode = true;

                foodBrowser.browse(prompt.foodOrCategoryCode.getRightOrDie(),
                        messages.assocFoods_allFoodsDataSetName());
            } else {
                content.clear();
                content.add(new LoadingPanel(messages.foodBrowser_loadingMessage()));

                FoodDataService.INSTANCE.getFoodData(locale, prompt.foodOrCategoryCode.getLeftOrDie(),
                        new MethodCallback<FoodData>() {
                            @Override
                            public void onFailure(Method method, Throwable exception) {
                                content.clear();
                                content.add(WidgetFactory.createDefaultErrorMessage());
                                content.add(WidgetFactory.createBackLink());
                            }

                            @Override
                            public void onSuccess(Method method, FoodData response) {

                                UxEventsHelper.postManualAssociatedFoodConfirmed(new ManualConfirmedData(
                                        new FoodHeader(food.data.code, food.data.localDescription),
                                        getSelectedFoods(), prompt,
                                        new FoodHeader(response.code, response.localDescription)));

                                addNewFood.call(response);
                            }
                        });
            }
        }
    });

    yes.getElement().setId("intake24-assoc-food-yes-button");

    final int existingIndex = CollectionUtils.indexOf(pair.right.foods, new Function1<FoodEntry, Boolean>() {
        @Override
        public Boolean apply(FoodEntry argument) {
            return argument.accept(new FoodEntry.Visitor<Boolean>() {
                @Override
                public Boolean visitRaw(RawFood food) {
                    return false;
                }

                @Override
                public Boolean visitEncoded(EncodedFood food) {
                    // don't suggest foods that are already linked to other
                    // foods
                    if (food.link.isLinked())
                        return false;
                    // don't suggest linking the food to itself
                    else if (food.link.id.equals(pair.left.link.id))
                        return false;
                    // don't suggest if the food has foods linked to it
                    else if (!Meal.linkedFoods(pair.right.foods, food).isEmpty())
                        return false;
                    else if (prompt.foodOrCategoryCode.isRight())
                        return food.isInCategory(prompt.foodOrCategoryCode.getRightOrDie());
                    else
                        return food.data.code.equals(prompt.foodOrCategoryCode.getLeftOrDie());
                }

                @Override
                public Boolean visitTemplate(TemplateFood food) {
                    return false;
                }

                @Override
                public Boolean visitMissing(MissingFood food) {
                    return false;
                }

                @Override
                public Boolean visitCompound(CompoundFood food) {
                    return false;
                }
            });
        }
    });

    no.getElement().setId("intake24-assoc-food-no-button");

    tour = TreePVector.<ShepherdTour.Step>empty()
            .plus(new ShepherdTour.Step("noButton", "#intake24-assoc-food-no-button",
                    helpMessages.assocFood_noButtonTitle(), helpMessages.assocFood_noButtonDescription()))
            .plus(new ShepherdTour.Step("yesButton", "#intake24-assoc-food-yes-button",
                    helpMessages.assocFood_yesButtonTitle(), helpMessages.assocFood_yesButtonDescription()));

    if (existingIndex != -1) {
        Button yesExisting = WidgetFactory.createButton(messages.assocFoods_alreadyEntered(),
                new ClickHandler() {
                    @Override
                    public void onClick(ClickEvent event) {
                        UxEventsHelper.postManualAssociatedFoodAlreadyReported(new ManualAlreadyReportedData(
                                new FoodHeader(food.data.code, food.data.localDescription), prompt));
                        addExistingFood.call(pair.right.foods.get(existingIndex));
                    }
                });

        yesExisting.getElement().setId("intake24-assoc-food-yes-existing-button");

        tour = tour.plus(new ShepherdTour.Step("yesButton", "#intake24-assoc-food-yes-existing-button",
                helpMessages.assocFood_yesExistingButtonTitle(),
                helpMessages.assocFood_yesExistingButtonDescription(), "top right", "bottom right"));

        ShepherdTour.makeShepherdTarget(yesExisting);

        buttonsPanel = WidgetFactory.createButtonsPanel(no, yes, yesExisting);
    } else {
        buttonsPanel = WidgetFactory.createButtonsPanel(no, yes);
    }

    content.add(buttonsPanel);

    ShepherdTour.makeShepherdTarget(yes, no);

    interf = new FlowPanel();

    return new SurveyStageInterface.Aligned(content, HasHorizontalAlignment.ALIGN_LEFT,
            HasVerticalAlignment.ALIGN_TOP, SurveyStageInterface.DEFAULT_OPTIONS,
            AssociatedFoodPrompt.class.getSimpleName());
}

From source file:uk.ac.ncl.openlab.intake24.client.survey.prompts.AutomaticAssociatedFoodsPrompt.java

License:Apache License

@Override
public SurveyStageInterface getInterface(final Callback1<MealOperation> onComplete,
        Callback1<Function1<Meal, Meal>> updateIntermediateState) {
    final FlowPanel content = new FlowPanel();
    PromptUtil.addBackLink(content);/*ww w.j  a v  a2s .co  m*/

    final FlowPanel promptPanel = WidgetFactory.createPromptPanel(SafeHtmlUtils.fromSafeConstant(
            messages.assocFoods_automaticPrompt(SafeHtmlUtils.htmlEscape(meal.name.toLowerCase()))));

    content.add(promptPanel);

    final LoadingPanel loading = new LoadingPanel(messages.foodBrowser_loadingMessage());

    content.add(loading);

    final ArrayList<FoodHeader> encodedFoods = new ArrayList<>();
    final ArrayList<String> foodCodes = new ArrayList<>();

    for (FoodEntry e : meal.foods) {
        if (e.isEncoded()) {

            EncodedFood ef = e.asEncoded();

            encodedFoods.add(new FoodHeader(ef.data.code, ef.data.localDescription));
            foodCodes.add(ef.data.code);
        }
    }

    FoodDataService.INSTANCE.getAutomaticAssociatedFoods(locale, foodCodes,
            new MethodCallback<AutomaticAssociatedFoods>() {
                @Override
                public void onFailure(Method method, Throwable exception) {
                    content.remove(loading);
                    content.add(WidgetFactory.createDefaultErrorMessage());
                }

                @Override
                public void onSuccess(Method method, AutomaticAssociatedFoods response) {
                    content.remove(loading);

                    final List<CheckBox> checkBoxes = new ArrayList<>();
                    final Map<CheckBox, CategoryHeader> foodMap = new LinkedHashMap<>();

                    List<CategoryHeader> categories = response.categories.stream()
                            .filter(c -> milkIsRerevant(c)).collect(Collectors.toList());

                    List<String> codes = categories.stream().map(c -> c.code).collect(Collectors.toList());

                    if (!cachedAssociatedFoodsChanged(codes) || codes.size() == 0) {
                        cacheAssociatedFoods(listToJsArray(new ArrayList<>()));
                        onComplete.call(MealOperation.update(m -> m.markAssociatedFoodsComplete()));
                    } else {
                        cacheAssociatedFoods(listToJsArray(codes));
                        UxEventsHelper.postAutomaticAssociatedFoodsReceived(new AutomaticData(
                                Viewport.getCurrent(), encodedFoods, response.categories, new ArrayList<>()));
                    }

                    for (CategoryHeader category : categories) {
                        CheckBox cb = new CheckBox(SafeHtmlUtils.fromString(category.description()));

                        FlowPanel div = new FlowPanel();
                        div.getElement().getStyle().setPaddingBottom(4, Style.Unit.PX);
                        div.add(cb);
                        cb.getElement().getFirstChildElement().getStyle().setMargin(0, Style.Unit.PX);
                        content.add(div);

                        checkBoxes.add(cb);
                        foodMap.put(cb, category);
                    }

                    Button continueButton = WidgetFactory.createGreenButton("Continue", "continue-button",
                            new ClickHandler() {
                                @Override
                                public void onClick(ClickEvent clickEvent) {

                                    ArrayList<String> selectedCategories = new ArrayList<>();

                                    for (CheckBox cb : checkBoxes) {
                                        if (cb.getValue()) {
                                            selectedCategories.add(foodMap.get(cb).code);
                                        }
                                    }

                                    UxEventsHelper.postAutomaticAssociatedFoodsResponse(
                                            new AutomaticData(Viewport.getCurrent(), encodedFoods,
                                                    response.categories, selectedCategories));

                                    onComplete.call(MealOperation.update(m -> {
                                        List<FoodEntry> newFoodEntries = new ArrayList<>();

                                        for (CheckBox cb : checkBoxes) {
                                            if (cb.getValue()) {
                                                Optional<FoodEntry> assocFood;
                                                CategoryHeader ch = foodMap.get(cb);
                                                switch (ch.code) {
                                                case SpecialData.FOOD_CODE_MILK_ON_CEREAL:
                                                    assocFood = meal.foods.stream()
                                                            .filter(f -> isCerealWithMilk(f)).findFirst();
                                                    if (assocFood.isPresent()) {
                                                        addFood(newFoodEntries, ch, assocFood);
                                                    }
                                                    break;
                                                case SpecialData.FOOD_CODE_MILK_IN_HOT_DRINK:
                                                    assocFood = meal.foods.stream()
                                                            .filter(f -> isHotDrinkWithMilk(f)).findFirst();
                                                    if (assocFood.isPresent()) {
                                                        addFood(newFoodEntries, ch, assocFood);
                                                    }
                                                    break;
                                                default:
                                                    addFood(newFoodEntries, ch, Optional.empty());
                                                    break;

                                                }
                                            }
                                        }

                                        if (newFoodEntries.size() > 0) {
                                            return m.withFoods(m.foods.plusAll(newFoodEntries));
                                        } else {
                                            cacheAssociatedFoods(listToJsArray(new ArrayList<>()));
                                            return m.withFoods(m.foods.plusAll(newFoodEntries))
                                                    .markAssociatedFoodsComplete();
                                        }

                                    }));
                                }
                            });

                    content.add(WidgetFactory.createButtonsPanel(continueButton));
                }
            });

    return new SurveyStageInterface.Aligned(content, HasHorizontalAlignment.ALIGN_LEFT,
            HasVerticalAlignment.ALIGN_TOP, SurveyStageInterface.DEFAULT_OPTIONS,
            AutomaticAssociatedFoodsPrompt.class.getSimpleName());
}