1 16 package com.google.gwt.sample.kitchensink.client; 17 18 import com.google.gwt.core.client.EntryPoint; 19 import com.google.gwt.core.client.GWT; 20 import com.google.gwt.sample.kitchensink.client.Sink.SinkInfo; 21 import com.google.gwt.user.client.DOM; 22 import com.google.gwt.user.client.History; 23 import com.google.gwt.user.client.HistoryListener; 24 import com.google.gwt.user.client.ui.HTML; 25 import com.google.gwt.user.client.ui.RootPanel; 26 import com.google.gwt.user.client.ui.VerticalPanel; 27 28 31 public class KitchenSink implements EntryPoint, HistoryListener { 32 33 private static final Sink.Images images = (Sink.Images) GWT.create(Sink.Images.class); 34 35 protected SinkList list = new SinkList(images); 36 private SinkInfo curInfo; 37 private Sink curSink; 38 private HTML description = new HTML(); 39 private VerticalPanel panel = new VerticalPanel(); 40 41 public void onHistoryChanged(String token) { 42 SinkInfo info = list.find(token); 46 if (info == null) { 47 showInfo(); 48 return; 49 } 50 show(info, false); 51 } 52 53 public void onModuleLoad() { 54 loadSinks(); 56 57 panel.add(list); 58 panel.add(description); 59 panel.setWidth("100%"); 60 61 description.setStyleName("ks-Info"); 62 63 History.addHistoryListener(this); 64 RootPanel.get().add(panel); 65 66 String initToken = History.getToken(); 68 if (initToken.length() > 0) { 69 onHistoryChanged(initToken); 70 } else { 71 showInfo(); 72 } 73 } 74 75 public void show(SinkInfo info, boolean affectHistory) { 76 if (info == curInfo) { 81 return; 82 } 83 curInfo = info; 84 85 if (curSink != null) { 87 curSink.onHide(); 88 panel.remove(curSink); 89 } 90 91 curSink = info.getInstance(); 94 list.setSinkSelection(info.getName()); 95 description.setHTML(info.getDescription()); 96 97 if (affectHistory) { 102 History.newItem(info.getName()); 103 } 104 105 DOM.setStyleAttribute(description.getElement(), "backgroundColor", 107 info.getColor()); 108 109 curSink.setVisible(false); 111 panel.add(curSink); 112 panel.setCellHorizontalAlignment(curSink, VerticalPanel.ALIGN_CENTER); 113 curSink.setVisible(true); 114 curSink.onShow(); 115 } 116 117 122 protected void loadSinks() { 123 list.addSink(Info.init()); 124 list.addSink(Widgets.init(images)); 125 list.addSink(Panels.init(images)); 126 list.addSink(Lists.init(images)); 127 list.addSink(Text.init()); 128 list.addSink(Popups.init()); 129 } 130 131 private void showInfo() { 132 show(list.find("Intro"), false); 133 } 134 } 135 | Popular Tags |