PDA

View Full Version : textfield issue on focus



fother
19 Mar 2009, 9:38 AM
I modify this code.. click at the button.. focus work fine..
click in one item at the tree.. don't work..

code example


/*

* Ext GWT - Ext for GWT

* Copyright(c) 2007, 2008, Ext JS, LLC.

* licensing@extjs.com

*

* http://extjs.com/license

*/

package com.extjs.gxt.samples.client.examples.tree;



import java.util.List;



import com.extjs.gxt.samples.client.Examples;

import com.extjs.gxt.samples.client.FileServiceAsync;

import com.extjs.gxt.samples.client.examples.model.FileModel;

import com.extjs.gxt.samples.client.examples.model.FolderModel;

import com.extjs.gxt.ui.client.Registry;

import com.extjs.gxt.ui.client.binder.TreeBinder;

import com.extjs.gxt.ui.client.data.BaseTreeLoader;

import com.extjs.gxt.ui.client.data.ModelData;

import com.extjs.gxt.ui.client.data.ModelStringProvider;

import com.extjs.gxt.ui.client.data.RpcProxy;

import com.extjs.gxt.ui.client.data.TreeLoader;

import com.extjs.gxt.ui.client.event.ButtonEvent;

import com.extjs.gxt.ui.client.event.SelectionChangedEvent;

import com.extjs.gxt.ui.client.event.SelectionChangedListener;

import com.extjs.gxt.ui.client.event.SelectionListener;

import com.extjs.gxt.ui.client.store.Store;

import com.extjs.gxt.ui.client.store.StoreSorter;

import com.extjs.gxt.ui.client.store.TreeStore;

import com.extjs.gxt.ui.client.widget.LayoutContainer;

import com.extjs.gxt.ui.client.widget.button.Button;

import com.extjs.gxt.ui.client.widget.form.NumberField;

import com.extjs.gxt.ui.client.widget.layout.FlowLayout;

import com.extjs.gxt.ui.client.widget.tree.Tree;

import com.google.gwt.user.client.Element;

import com.google.gwt.user.client.rpc.AsyncCallback;



public class AsyncTreeExample extends LayoutContainer {

@Override

protected void onRender(Element parent, int pos) {

super.onRender(parent, pos);



final NumberField field = new NumberField();



add(field);



Button btn = new Button("focus", new SelectionListener<ButtonEvent>() {



@Override

public void componentSelected(ButtonEvent ce) {



field.focus();

}

});



add(btn);



setLayout(new FlowLayout(10));



final FileServiceAsync service = (FileServiceAsync) Registry.get(Examples.FILE_SERVICE);



// data proxy

RpcProxy<FileModel, List<FileModel>> proxy = new RpcProxy<FileModel, List<FileModel>>() {

@Override

protected void load(FileModel loadConfig, AsyncCallback<List<FileModel>> callback) {

service.getFolderChildren(loadConfig, callback);

}

};



// tree loader

TreeLoader loader = new BaseTreeLoader(proxy) {

@Override

public boolean hasChildren(ModelData parent) {

return parent instanceof FolderModel;

}

};



// trees store

TreeStore<FileModel> store = new TreeStore<FileModel>(loader);

store.setStoreSorter(new StoreSorter<FileModel>() {



@Override

public int compare(Store store, FileModel m1, FileModel m2, String property) {

boolean m1Folder = m1 instanceof FolderModel;

boolean m2Folder = m2 instanceof FolderModel;



if (m1Folder && !m2Folder) {

return -1;

} else if (!m1Folder && m2Folder) {

return 1;

}



return super.compare(store, m1, m2, property);

}

});



Tree tree = new Tree();



TreeBinder<FileModel> binder = new TreeBinder<FileModel>(tree, store);

binder.setIconProvider(new ModelStringProvider<FileModel>() {



public String getStringValue(FileModel model, String property) {

if (!(model instanceof FolderModel)) {

String ext = model.getName().substring(model.getName().lastIndexOf(".") + 1);



// new feature, using image paths rather than style names

if ("xml".equals(ext)) {

return "images/icons/page_white_code.png";

} else if ("java".equals(ext)) {

return "images/icons/page_white_cup.png";

} else if ("html".equals(ext)) {

return "images/icons/html.png";

} else {

return "images/icons/page_white.png";

}

}

return null;

}



});

binder.setDisplayProperty("name");

binder.addSelectionChangedListener(new SelectionChangedListener<FileModel>() {



@Override

public void selectionChanged(SelectionChangedEvent<FileModel> se) {

field.setValue(5);

field.focus();

}

});



loader.load(null);

addText("<div style='font-size: 12px;padding-bottom: 8px'>Tree which loads its children on demand using a remote service.</div>");

add(tree);

}

}