| /* |
| * Copyright 2008 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.museum.client.common.AbstractIssue; |
| import com.google.gwt.user.client.ui.CheckBox; |
| import com.google.gwt.user.client.ui.Focusable; |
| import com.google.gwt.user.client.ui.HorizontalPanel; |
| import com.google.gwt.user.client.ui.Label; |
| import com.google.gwt.user.client.ui.RadioButton; |
| import com.google.gwt.user.client.ui.SimpleCheckBox; |
| import com.google.gwt.user.client.ui.SimplePanel; |
| import com.google.gwt.user.client.ui.Tree; |
| import com.google.gwt.user.client.ui.TreeItem; |
| import com.google.gwt.user.client.ui.VerticalPanel; |
| import com.google.gwt.user.client.ui.Widget; |
| |
| /** |
| * A simple tree used to quickly exercise tree behavior. |
| */ |
| public class VisualsForTree extends AbstractIssue { |
| |
| static class DelegatingFocusPanel extends HorizontalPanel implements |
| Focusable { |
| |
| public int getTabIndex() { |
| return getFocusable().getTabIndex(); |
| } |
| |
| public void setAccessKey(char key) { |
| getFocusable().setAccessKey(key); |
| } |
| |
| public void setFocus(boolean focused) { |
| getFocusable().setFocus(focused); |
| } |
| |
| public void setTabIndex(int index) { |
| getFocusable().setTabIndex(index); |
| } |
| |
| private Focusable getFocusable() { |
| for (Widget widget : this.getChildren()) { |
| if (widget instanceof Focusable) { |
| return (Focusable) widget; |
| } |
| } |
| throw new IllegalArgumentException("No focusable children to focus on"); |
| } |
| } |
| |
| public static Tree createTree() { |
| Tree tree = new Tree(); |
| TreeItem a = new TreeItem("a"); |
| TreeItem b = new TreeItem( |
| "b, though this is a very, very long text field in order to trigger text wrapping bugs, if there are any such bugs currently in the tree."); |
| TreeItem ba = new TreeItem("b.a"); |
| TreeItem bb = new TreeItem("b.b"); |
| TreeItem bba = new TreeItem("b.b.a"); |
| TreeItem bc = new TreeItem("b.c"); |
| TreeItem c = new TreeItem("c"); |
| TreeItem d = new TreeItem(new RadioButton("myradio", |
| "I should line up nicely")); |
| TreeItem e = new TreeItem(new CheckBox("I should line up nicely")); |
| TreeItem f = new TreeItem(new CheckBox("I should also line up nicely")); |
| f.addItem(new CheckBox("me to")); |
| SimplePanel panel = new SimplePanel(); |
| panel.setWidget(new Label("There should not be any space above me")); |
| TreeItem g = new TreeItem(panel); |
| |
| tree.setSelectedItem(b); |
| tree.addItem(a); |
| tree.addItem(b); |
| tree.addItem(c); |
| tree.addItem(d); |
| tree.addItem(e); |
| tree.addItem(f); |
| tree.addItem(g); |
| b.addItem(ba); |
| b.addItem(bb); |
| bb.addItem(bba); |
| b.addItem(bc); |
| |
| // Focus checks |
| DelegatingFocusPanel focus = new DelegatingFocusPanel(); |
| focus.add(new Label("first check box should have focus ")); |
| focus.add(new SimpleCheckBox()); |
| focus.add(new SimpleCheckBox()); |
| |
| final DelegatingFocusPanel focus2 = new DelegatingFocusPanel(); |
| focus2.add(new Label("second check box should have focus ")); |
| focus2.add(new SimpleCheckBox()); |
| focus2.add(new SimpleCheckBox()); |
| |
| TreeItem customFocus = new TreeItem(focus2) { |
| @Override |
| public Focusable getFocusable() { |
| return (Focusable) focus2.getWidget(2); |
| } |
| }; |
| tree.addItem(focus); |
| tree.addItem(customFocus); |
| return tree; |
| } |
| |
| @Override |
| public Widget createIssue() { |
| VerticalPanel p = new VerticalPanel(); |
| p.add(createTree()); |
| return p; |
| } |
| |
| @Override |
| public String getInstructions() { |
| return "Open each node, make sure everything looks right"; |
| } |
| |
| @Override |
| public String getSummary() { |
| return "simple tree, used for generic tree tests"; |
| } |
| |
| @Override |
| public boolean hasCSS() { |
| return false; |
| } |
| |
| } |