package com.iambookmaster.client.iphone; import com.google.code.gwt.database.client.service.ListCallback; import com.google.code.gwt.database.client.service.ScalarCallback; import com.google.code.gwt.database.client.service.VoidCallback; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.ui.Label; import com.iambookmaster.client.beans.Greeting; import com.iambookmaster.client.beans.Paragraph; import com.iambookmaster.client.iphone.common.IPhoneButton; import com.iambookmaster.client.iphone.data.IPhoneDataService; import com.iambookmaster.client.iphone.data.IPhoneFileBean; import com.iambookmaster.client.iphone.images.IPhoneImages; import com.iambookmaster.client.iphone.images.IPhoneStyles; import com.iambookmaster.client.locale.AppConstants; import com.iambookmaster.client.locale.AppLocale; import com.iambookmaster.client.model.Model; import com.iambookmaster.client.player.PlayerState; public class IPhoneIntroScreen { private static final AppConstants appConstants = AppLocale.getAppConstants(); private static final IPhoneStyles css = IPhoneImages.INSTANCE.css(); private IPhoneIntroScreenListener owner; private IPhoneViewListenerAdapter listener; private Model model; private ClickHandler help; private ClickHandler about; private ClickHandler start; private ClickHandler continueGame; private PlayerState state; private boolean showAbout; private IPhoneCanvas canvas; private boolean hasContinue; private ClickHandler moreBooks; protected IPhoneFeedbackPanelListener feedbackListener; private IPhoneDataService ds; public IPhoneIntroScreen(IPhoneIntroScreenListener lst,Model md,PlayerState state, IPhoneDataService dbService) { this.owner = lst; this.model = md; this.state = state; this.ds = dbService; showAbout = model.getSettings().isShowAboutOnStart(); feedbackListener = new IPhoneFeedbackPanelListener() { public void close() { canvas.clearWithAnimation(true); draw(canvas); } }; help = new ClickHandler() { public void onClick(ClickEvent event) { showHelp(false); } }; about = new ClickHandler() { public void onClick(ClickEvent event) { showAbout=true; canvas.clear(); draw(canvas); } }; start = new ClickHandler() { public void onClick(ClickEvent event) { owner.start(); } }; continueGame = new ClickHandler() { public void onClick(ClickEvent event) { owner.continueGame(); } }; moreBooks = new ClickHandler() { public void onClick(ClickEvent event) { IPhoneFeedbackPanel feedbackPanel = new IPhoneFeedbackPanel(model,ds); feedbackPanel.show(feedbackListener, canvas, false); } }; listener = new IPhoneViewListenerAdapter(){ @Override public void redraw(IPhoneCanvas canvas) { canvas.clear(); draw(canvas); } @Override public void back() { showHelp(true); } @Override public void forward() { owner.start(); } }; } private void showHelp(boolean leftToRight) { Model model = new Model(appConstants, AppLocale.getAppMessages()); try { model.fromJSON(IPhoneImages.INSTANCE.helpModel().getText()); new IPhonePlayer(canvas,model,new IPhoneDataService() { @Override public void storeState(String data) { //nothing } @Override public void loadLastState(Model model, ScalarCallback<String> callback) { //nothing } @Override public void donate(VoidCallback callback) { } @Override public void calculateDonate(ScalarCallback<String> callback) { } @Override public void selectAvailableFiles(String exention, ListCallback<IPhoneFileBean> callback) { } @Override public void loadSingleFile(String name, ScalarCallback<String> callback) { } },new IPhonePlayerListener() { public boolean onParagraph(Paragraph paragraph) { if (paragraph.isFail() || paragraph.isSuccess()) { //return here canvas.clearWithAnimation(false); draw(canvas); return false; } else { return true; } } public boolean onOpenPlayerList() { return true; } public boolean onOpenFeedback() { return true; } }); } catch (Exception e) { } } private void draw(IPhoneCanvas canvas) { this.canvas = canvas; canvas.setListener(listener); Label label = new Label(model.getSettings().getBookTitle()); label.setStyleName(css.bookName()); canvas.add(label); label = new Label(model.getSettings().getBookAuthors()); label.setStyleName(css.bookAuthors()); canvas.add(label); label = new Label(model.getSettings().getBookDescription()); label.setStyleName(css.bookDescription()); canvas.add(label); if (model.getSettings().isDemoVersion() && (model.getDemoInfoText() != null && model.getDemoInfoText().length()>0)) { label = new Label(model.getDemoInfoText()); label.setStyleName(css.bookDemoVersion()); canvas.add(label); } addSelection(canvas,appConstants.iphoneStartNewGame(),start); if (hasContinue) { addSelection(canvas,appConstants.iphoneContinueGame(),continueGame); } addSelection(canvas,appConstants.iphoneHelp(),help); //view others books addSelection(canvas,appConstants.iphoneViewMore(),moreBooks); if (showAbout==false && model.getSettings().getGreetings().isEmpty()==false) { addSelection(canvas,appConstants.iphoneGreetings(),about); } // if (model.getSettings().isDisableAudio()==false) { // IPhoneAudioState audioState = new IPhoneAudioState(state.isAllowAudio(),canvas) { // @Override // protected void setEnabled(boolean enabled) { // super.setEnabled(enabled); // state.setAllowAudio(enabled); // } // }; // canvas.add(audioState); // } if (model.getPlayerRules().length()>0) { Label rules = new Label(model.getPlayerRules()); rules.setStyleName(css.bookDescription()); canvas.add(rules); } if (showAbout && model.getSettings().getGreetings().isEmpty()==false) { //show greetings Label title = new Label(appConstants.iphoneGreetings()); title.setStyleName(css.greetingTitle()); canvas.add(title); for (Greeting greeting : model.getSettings().getGreetings()) { IPhoneGreetingWidgetFactory.create(greeting,canvas,model.getContentPlayer()); } } canvas.done(); } private void addSelection(IPhoneCanvas canvas, String titel,final ClickHandler handler) { // final FlowPanel left = new FlowPanel(); // left.setStyleName(css.menuItemLeft()); // left.addStyleName(css.menuItem()); // FlowPanel right = new FlowPanel(); // right.setStyleName(css.menuItemRight()); // left.add(right); // HTML label = new HTML("<button class=\"btnCommon\"><div>"+titel+"</div></button>"); IPhoneButton label = new IPhoneButton(titel,handler); if (canvas.isVertical()) { // label.getElement().getStyle().setDisplay(Display.INLINE_BLOCK); label.setWidth(IPhoneViewerOldBook.toPixels(canvas.getClientWidth()-30)); // label.setWidth("auto"); } // label.setStyleName(css.menuItemCenter()); // label.setStyleName(css.stateSelection()); // label.setStyleName(css.stateSelection()); // label.addClickHandler(handler); // right.add(label); canvas.add(label); canvas.addClickHandler(label, handler); } public void show(boolean hasContinue,IPhoneCanvas canvas) { this.hasContinue = hasContinue; canvas.setListener(listener); draw(canvas); } }