| /* |
| * Copyright 2009 Google Inc. |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| * use this file except in compliance with the License. You may obtain a copy of |
| * the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| * License for the specific language governing permissions and limitations under |
| * the License. |
| */ |
| package com.google.gwt.museum.client.defaultmuseum; |
| |
| import com.google.gwt.dom.client.Document; |
| import com.google.gwt.dom.client.Element; |
| import com.google.gwt.event.dom.client.ClickEvent; |
| import com.google.gwt.event.dom.client.ClickHandler; |
| import com.google.gwt.event.dom.client.MouseDownEvent; |
| import com.google.gwt.event.dom.client.MouseDownHandler; |
| import com.google.gwt.museum.client.common.AbstractIssue; |
| import com.google.gwt.user.client.Timer; |
| import com.google.gwt.user.client.ui.Button; |
| import com.google.gwt.user.client.ui.FlexTable; |
| import com.google.gwt.user.client.ui.HTML; |
| import com.google.gwt.user.client.ui.Label; |
| import com.google.gwt.user.client.ui.MultiWordSuggestOracle; |
| import com.google.gwt.user.client.ui.SuggestBox; |
| import com.google.gwt.user.client.ui.VerticalPanel; |
| import com.google.gwt.user.client.ui.Widget; |
| |
| import java.util.Arrays; |
| import java.util.List; |
| |
| /** |
| * Visual test for suggest box. |
| */ |
| public class VisualsForSuggestBox extends AbstractIssue { |
| MultiWordSuggestOracle girlsNames = new MultiWordSuggestOracle(); |
| MultiWordSuggestOracle girlsNamesWithDefault = new MultiWordSuggestOracle(); |
| |
| Element textBoxToWrap; |
| |
| VisualsForSuggestBox() { |
| List<String> femaleNames = Arrays.asList("Jamie", "Jill", "Jackie", |
| "Susan", "Helen", "Emily", "Karen", "Emily", "Isabella", "Emma", "Ava", |
| "Madison", "Sophia", "Olivia", "Abigail", "Hannah", "Elizabeth", |
| "Addison", "Samantha", "Ashley", "Alyssa", "Mia", "Chloe", "Natalie", |
| "Sarah", "Alexis", "Grace", "Ella", "Brianna", "Hailey", "Taylor", |
| "Anna", "Kayla", "Lily", "Lauren", "Victoria", "Savannah", "Nevaeh", |
| "Jasmine", "Lillian", "Julia", "Sofia", "Kaylee", "Sydney", |
| "Gabriella", "Katherine", "Alexa", "Destiny", "Jessica", "Morgan", |
| "Kaitlyn", "Brooke", "Allison", "Makayla", "Avery", "Alexandra", |
| "Jocelyn"); |
| girlsNames.addAll(femaleNames); |
| girlsNamesWithDefault.addAll(femaleNames); |
| girlsNamesWithDefault.setDefaultSuggestionsFromText(femaleNames); |
| } |
| |
| /** |
| * This is the entry point method. |
| */ |
| @Override |
| public Widget createIssue() { |
| VerticalPanel panel = new VerticalPanel(); |
| HTML wrapperText = new HTML( |
| "Make sure this wrapped suggest box works as normal."); |
| panel.add(wrapperText); |
| textBoxToWrap = Document.get().createTextInputElement(); |
| wrapperText.getElement().appendChild(textBoxToWrap); |
| |
| panel.add(new HTML( |
| "Select the show button, nothing should open <br/> Type 'e' and select the button again, now a suggestion list should open and close.")); |
| panel.add(manuallyShowAndHide()); |
| panel.add(new Label( |
| "Click on suggest box, it should open automatically. Check that First item is not selected")); |
| panel.add(suggestBoxWithDefault()); |
| return panel; |
| } |
| |
| @Override |
| public String getInstructions() { |
| return "Follow the directions above each suggest box"; |
| } |
| |
| @Override |
| public String getSummary() { |
| return "suggest box visuals"; |
| } |
| |
| @Override |
| public boolean hasCSS() { |
| return false; |
| } |
| |
| private Widget manuallyShowAndHide() { |
| FlexTable t = new FlexTable(); |
| t.getFlexCellFormatter().setColSpan(0, 0, 20); |
| final SuggestBox box = simpleSuggestBox(); |
| box.setAnimationEnabled(true); |
| t.setWidget(0, 0, box); |
| |
| Button showSuggestions = new Button( |
| "show suggestions, then hide after 2 seconds", new ClickHandler() { |
| public void onClick(ClickEvent event) { |
| box.showSuggestionList(); |
| new Timer() { |
| |
| @Override |
| public void run() { |
| box.hideSuggestionList(); |
| } |
| |
| }.schedule(2000); |
| } |
| }); |
| t.setWidget(1, 0, showSuggestions); |
| return t; |
| } |
| |
| private SuggestBox simpleSuggestBox() { |
| SuggestBox b = new SuggestBox(girlsNames); |
| return b; |
| } |
| |
| private SuggestBox suggestBoxWithDefault() { |
| final SuggestBox b = new SuggestBox(girlsNamesWithDefault); |
| b.setAutoSelectEnabled(false); |
| b.getTextBox().addMouseDownHandler(new MouseDownHandler() { |
| |
| public void onMouseDown(MouseDownEvent event) { |
| b.showSuggestionList(); |
| } |
| |
| }); |
| return b; |
| } |
| } |