public class AsServedPrompt implements SimplePrompt<Integer> { private final AsServedPromptDef def; public AsServedPrompt(AsServedPromptDef def) { this.def = def; } private static final HelpMessages helpMessages = HelpMessages.Util.getInstance(); private static final PVector<ShepherdTour.Step> tour = TreePVector.<ShepherdTour.Step>empty() .plus( new ShepherdTour.Step( "image", "#intake24-as-served-image-container", helpMessages.asServed_imageTitle(), helpMessages.asServed_imageDescription())) .plus( new ShepherdTour.Step( "label", "#intake24-as-served-image-container", helpMessages.asServed_labelTitle(), helpMessages.asServed_labelDescription(), "top right", "bottom right")) .plus( new ShepherdTour.Step( "thumbs", "#intake24-as-served-thumbs-container", helpMessages.asServed_thumbsTitle(), helpMessages.asServed_thumbsDescription())) .plus( new ShepherdTour.Step( "hadLess", "#intake24-as-served-prev-button", helpMessages.asServed_prevButtonTitle(), helpMessages.asServed_prevButtonDescription(), "bottom left", "top left")) .plus( new ShepherdTour.Step( "hadMore", "#intake24-as-served-next-button", helpMessages.asServed_nextButtonTitle(), helpMessages.asServed_nextButtonDescription(), "bottom left", "top left")) .plus( new ShepherdTour.Step( "hadThisMuch", "#intake24-as-served-confirm-button", helpMessages.asServed_confirmButtonTitle(), helpMessages.asServed_confirmButtonDescription(), "bottom right", "top right")); @Override public FlowPanel getInterface(final Callback1<Integer> onComplete) { final FlowPanel content = new FlowPanel(); FlowPanel promptPanel = WidgetFactory.createPromptPanel( def.promptText, ShepherdTour.createTourButton(tour, AsServedPrompt.class.getSimpleName())); ShepherdTour.makeShepherdTarget(promptPanel); content.add(promptPanel); ImageChooser imageChooser = new ImageChooser( def.images, def.prevLabel, def.nextLabel, def.acceptLabel, def.images.length / 2, new ImageChooser.ResultHandler() { @Override public void handleResult(final int index) { onComplete.call(index); }; }); content.add(imageChooser); ShepherdTour.makeShepherdTarget( imageChooser.imageContainer, imageChooser.thumbsContainer, imageChooser.nextButton, imageChooser.prevButton, imageChooser.confirmButton); return content; } @Override public String toString() { return "As served portion size prompt"; } }