package com.delect.motiver.client.view.guide; import com.delect.motiver.client.AppController; import com.delect.motiver.client.presenter.guide.BeginnersGuidePresenter; import com.delect.motiver.client.presenter.guide.BeginnersGuidePresenter.BeginnersGuideHandler; import com.delect.motiver.client.presenter.guide.BeginnersGuidePresenter.Button; import com.delect.motiver.client.presenter.guide.BeginnersGuidePresenter.PointDirection; import com.delect.motiver.client.res.MyResources; import com.delect.motiver.client.view.widget.MyButton; import com.delect.motiver.client.view.widget.MyButton.Style; import com.extjs.gxt.ui.client.Style.HorizontalAlignment; import com.extjs.gxt.ui.client.Style.VerticalAlignment; import com.extjs.gxt.ui.client.event.BaseEvent; import com.extjs.gxt.ui.client.event.Events; import com.extjs.gxt.ui.client.event.Listener; import com.extjs.gxt.ui.client.fx.FxConfig; import com.extjs.gxt.ui.client.widget.Popup; import com.extjs.gxt.ui.client.widget.Text; import com.extjs.gxt.ui.client.widget.layout.TableData; import com.extjs.gxt.ui.client.widget.layout.TableLayout; import com.google.gwt.resources.client.ImageResource; import com.google.gwt.user.client.DOM; import com.google.gwt.user.client.Element; import com.google.gwt.user.client.ui.Image; import com.google.gwt.user.client.ui.Widget; public class BeginnersGuideView extends BeginnersGuidePresenter.BeginnersGuideDisplay { Text textTitle = new Text(); Text text = new Text(); Popup popup = new Popup(); private BeginnersGuideHandler handler; MyButton btnPrev = new MyButton(); MyButton btnNext = new MyButton(); MyButton btnClose = new MyButton(); public BeginnersGuideView() { this.setWidth(225); this.setStyleName("panel-tutorial"); TableLayout layout = new TableLayout(2); layout.setWidth("100%"); layout.setCellVerticalAlign(VerticalAlignment.MIDDLE); layout.setCellHorizontalAlign(HorizontalAlignment.LEFT); layout.setCellPadding(5); this.setLayout(layout); //title TableData td = new TableData(); td.setColspan(2); textTitle.setStyleName("label-title-medium"); this.add(textTitle, td); TableData td2 = new TableData(); td2.setColspan(2); this.add(text, td2); //previous button btnPrev.setText(AppController.Lang.Previous()); btnPrev.addListener(Events.OnClick, new Listener<BaseEvent>() { @Override public void handleEvent(BaseEvent be) { handler.onButtonClicked(Button.PREVIOUS); } }); this.add(btnPrev); //next button btnNext.setText(AppController.Lang.Next()); btnNext.addListener(Events.OnClick, new Listener<BaseEvent>() { @Override public void handleEvent(BaseEvent be) { handler.onButtonClicked(Button.NEXT); } }); btnNext.setColor(Style.GREEN); TableData td3 = new TableData(); td3.setHorizontalAlign(HorizontalAlignment.RIGHT); this.add(btnNext, td3); //close button btnClose.setText(AppController.Lang.Close()); btnClose.addListener(Events.OnClick, new Listener<BaseEvent>() { @Override public void handleEvent(BaseEvent be) { handler.onButtonClicked(Button.CLOSE); } }); btnClose.setColor(Style.RED); TableData td4 = new TableData(); td4.setColspan(2); this.add(btnClose, td4); popup.setAutoHide(false); popup.setSize(32, 32); } @Override public Widget asWidget() { return this; } @Override public void onStop() { if(popup != null && popup.isVisible()) { popup.hide(); } } @Override public void showText(String t) { text.setText(t); } @Override public void setHandler(BeginnersGuideHandler handler) { this.handler = handler; } @Override public void setButtonEnabled(Button button, boolean enabled) { switch(button) { case NEXT: btnNext.setEnabled(enabled); break; case PREVIOUS: btnPrev.setEnabled(enabled); break; } } @Override public void showArrow(String id, PointDirection direction) { if(popup != null && popup.isVisible()) { popup.hide(); } popup.removeAll(); if(id != null) { Element el = DOM.getElementById(id); if(el == null) return; el.scrollIntoView(); ImageResource image; int offsetY = 0; int offsetX = 0; switch(direction) { case LEFT: image = MyResources.INSTANCE.getArrowRedLeft(); offsetX = el.getClientWidth()+5; offsetY = el.getClientHeight()/2; break; case RIGHT: image = MyResources.INSTANCE.getArrowRedRight(); offsetX = -36; offsetY = el.getClientHeight()/2; break; case DOWN: image = MyResources.INSTANCE.getArrowRedDown(); offsetX = el.getClientWidth()/2; offsetY = -36; break; default: image = MyResources.INSTANCE.getArrowRedUp(); offsetX = el.getClientWidth()/2; offsetY = el.getClientHeight()+5; break; } popup.add(new Image(image)); popup.show(el, "", new int[] {offsetX, offsetY} ); popup.setZIndex(2000); FxConfig config = new FxConfig(); config.setDuration(500); popup.el().blink(config); popup.layout(); } } @Override public void showTitle(String title) { textTitle.setText(title); } }