/* * Smart GWT (GWT for SmartClient) * Copyright 2008 and beyond, Isomorphic Software, Inc. * * Smart GWT is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License version 3 * as published by the Free Software Foundation. Smart GWT is also * available under typical commercial license terms - see * http://smartclient.com/license * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. */ import com.smartgwt.client.types.Alignment; import com.smartgwt.client.types.DragAppearance; import com.smartgwt.client.widgets.Canvas; import com.smartgwt.client.widgets.Img; import com.smartgwt.client.widgets.Label; import com.smartgwt.client.widgets.events.FocusChangedEvent; import com.smartgwt.client.widgets.events.FocusChangedHandler; import com.smartgwt.client.widgets.form.DynamicForm; import com.smartgwt.client.widgets.form.fields.ComboBoxItem; import com.smartgwt.client.widgets.form.fields.DateItem; import com.smartgwt.client.widgets.layout.HStack; import com.smartgwt.client.widgets.layout.VLayout; import com.google.gwt.core.client.EntryPoint; public class BasicFocusTabbingSample implements EntryPoint { public void onModuleLoad() { HStack hStack = new HStack(); hStack.setWidth(300); hStack.setHeight(100); hStack.setShowEdges(true); hStack.setCanAcceptDrop(true); hStack.setAnimateMembers(true); hStack.setDropLineThickness(4); final Label focusLabel = new Label(); focusLabel.setID("focusLabel"); focusLabel.setAlign(Alignment.CENTER); focusLabel.setTop(150); focusLabel.setWidth(300); focusLabel.setHeight(50); final Img bluePawn = new Img(); bluePawn.setID("bluePawn"); bluePawn.setLayoutAlign(Alignment.CENTER); bluePawn.setWidth(48); bluePawn.setHeight(48); bluePawn.setCanFocus(true); bluePawn.setSrc("pieces/48/pawn_blue.png"); bluePawn.setCanDragReposition(true); bluePawn.setCanDrop(true); bluePawn.setDragAppearance(DragAppearance.TARGET); bluePawn.addFocusChangedHandler(new FocusChangedHandler() { public void onFocusChanged(FocusChangedEvent event) { changeLabel(focusLabel, bluePawn.getID(), event.getHasFocus()); } }); ComboBoxItem field1 = new ComboBoxItem(); field1.setName("field1"); field1.setValueMap("Option 1", "Option 2"); DateItem field2 = new DateItem(); field2.setName("field2"); final DynamicForm simpleForm = new DynamicForm(); simpleForm.setID("simpleForm"); simpleForm.setLayoutAlign(Alignment.CENTER); simpleForm.setHeight(48); simpleForm.setFields(field1, field2); simpleForm.addFocusChangedHandler(new FocusChangedHandler() { public void onFocusChanged(FocusChangedEvent event) { changeLabel(focusLabel, simpleForm.getID(), event.getHasFocus()); } }); final Img greenPawn = new Img(); greenPawn.setID("greenPawn"); greenPawn.setLayoutAlign(Alignment.CENTER); greenPawn.setWidth(48); greenPawn.setHeight(48); greenPawn.setCanFocus(true); greenPawn.setSrc("pieces/48/pawn_green.png"); greenPawn.setCanDragReposition(true); greenPawn.setCanDrop(true); greenPawn.setDragAppearance(DragAppearance.TARGET); greenPawn.addFocusChangedHandler(new FocusChangedHandler() { public void onFocusChanged(FocusChangedEvent event) { changeLabel(focusLabel, greenPawn.getID(), event.getHasFocus()); } }); hStack.addMember(bluePawn); hStack.addMember(simpleForm); hStack.addMember(greenPawn); VLayout vLayout = new VLayout(); vLayout.setMembersMargin(10); vLayout.addMember(hStack); vLayout.addMember(focusLabel); vLayout.draw(); } private void changeLabel(Label label, String id, boolean hasFocus) { if (hasFocus) label.setContents(id + " has focus"); else label.setContents(""); } }