package com.iambookmaster.client.iphone.urq; import java.util.List; import com.google.gwt.core.client.Scheduler; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.user.client.Command; import com.google.gwt.user.client.ui.Label; import com.iambookmaster.client.iphone.IPhoneCanvas; import com.iambookmaster.client.iphone.IPhoneViewListenerAdapter; import com.iambookmaster.client.iphone.common.IPhoneButton; import com.iambookmaster.client.iphone.common.IPhoneFlatButton; import com.iambookmaster.client.iphone.data.IPhoneFileBean; import com.iambookmaster.client.iphone.images.IPhoneImages; import com.iambookmaster.client.iphone.images.IPhoneStyles; public abstract class IPhoneURQSelectFile extends IPhoneViewListenerAdapter { static final IPhoneStyles css = IPhoneImages.INSTANCE.css(); private IPhoneCanvas canvas; private ClickHandler backHandler; private List<IPhoneFileBean> files; private boolean processing; private final String title; private String newButtonTitle; private ClickHandler newFileHandler; public IPhoneURQSelectFile(String title) { this.title = title; backHandler = new ClickHandler() { public void onClick(ClickEvent event) { back(); } }; newFileHandler = new ClickHandler() { public void onClick(ClickEvent event) { newFile(); } }; } protected void newFile() { } public IPhoneURQSelectFile(String title,String newButton) { this(title); this.newButtonTitle = newButton; } public void show(IPhoneCanvas canvas,List<IPhoneFileBean> files) { this.canvas = canvas; this.files = files; processing = false; _redraw(canvas,1); } public void redraw(IPhoneCanvas canvas) { _redraw(canvas, 0); } public void _redraw(IPhoneCanvas canvas,int animiation) { canvas.setListener(this); switch (animiation) { case -1: canvas.clearWithAnimation(true); break; case 1: canvas.clearWithAnimation(false); break; default: canvas.clear(); break; } if (processing) { Label label = new Label("Идет обработка..."); label.setStyleName(css.urqScreenTitle()); canvas.add(label); } else { Label label = new Label(title,false); label.setStyleName(css.urqScreenTitle()); canvas.add(label); if (newButtonTitle != null) { IPhoneButton button = new IPhoneButton(newButtonTitle); canvas.add(button); canvas.addClickHandler(button, newFileHandler); } int i=1; for (IPhoneFileBean file : files) { ClickHandler handler = new ActionClickHandler(file); IPhoneFlatButton button = new IPhoneFlatButton(file.getName()); canvas.add(button); canvas.addClickHandler(button, handler); i++; } IPhoneButton button = new IPhoneButton("Назад"); canvas.addClickHandler(button, backHandler); canvas.add(button); } canvas.done(); } public void drawn() { } public class ActionClickHandler implements ClickHandler { private IPhoneFileBean file; public ActionClickHandler(IPhoneFileBean file) { this.file = file; } public void onClick(ClickEvent event) { processing = true; redraw(canvas); Scheduler.get().scheduleDeferred(new Command() { public void execute() { selectFile(file); } }); } } protected abstract void selectFile(IPhoneFileBean file); }