List of usage examples for com.google.gwt.safehtml.shared SafeHtmlUtils fromSafeConstant
public static SafeHtml fromSafeConstant(String s)
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()); }