ricardo rodriguez
18 Feb 2009, 5:56 AM
Dear Sirs,
I made a Porlet and when I show it, the components do not appear. But, when I move the portlet, all components are showed. What happened?
Could you help me ?
Regards
Ricardo Rodriguez.
Code:
package br.com.webb.ria.client.ui.requisition;
import java.io.Serializable;
import java.util.Vector;
import br.com.webb.ria.client.command.CatalogTreeCallback;
import br.com.webb.ria.client.common.requisition.AppConstants;
import br.com.webb.ria.client.model.requisition.CatalogTree;
import br.com.webb.ria.client.model.requisition.CatalogoModelDetail;
import br.com.webb.ria.client.rpc.ICatalogAsync;
import br.com.webb.ria.client.rpc.ICatalog.UtilCatalogAsync;
import com.extjs.gxt.ui.client.Events;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.Style.Scroll;
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.TreeLoader;
import com.extjs.gxt.ui.client.data.TreeModel;
import com.extjs.gxt.ui.client.data.TreeModelReader;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.TreeEvent;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.store.Store;
import com.extjs.gxt.ui.client.store.TreeStore;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.StoreFilterField;
import com.extjs.gxt.ui.client.widget.layout.AccordionLayout;
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.tree.Tree;
import com.extjs.gxt.ui.client.widget.tree.TreeItem;
import com.google.gwt.core.client.GWT;
/**
* @author smart.rodriguez
*
*/
public class SearchCatalogPortlet extends BasePortlet implements Serializable {
private static final long serialVersionUID = -5812997768506913024L;
private ListStore<CatalogoModelDetail> storeCatalogo = new ListStore<CatalogoModelDetail>();
private ContentPanel west = new ContentPanel();
private ContentPanel nav = new ContentPanel();
private LayoutContainer contentGrid = new LayoutContainer();
private BorderLayoutData westData = new BorderLayoutData( LayoutRegion.WEST, 400, 400, 750 );
private BorderLayoutData centerData = new BorderLayoutData( LayoutRegion.CENTER );
private LayoutContainer window = new LayoutContainer();
private ContentPanel content = new ContentPanel();
private CatalogTree catalogTreeBean;
private final ICatalogAsync catalogAsync = UtilCatalogAsync.getInstance();
private static final AppConstants constants = (AppConstants) GWT.create( AppConstants.class );
/**
* Constructor de SearchCatalogPortlet.
*/
public SearchCatalogPortlet() {
super();
this.getPortlet().setHeading( "Catalogo" );
this.getPortlet().setAutoHeight( false );
this.getPortlet().setHeight( 350 );
ConfigPanel.configWithClose( this.getPortlet() );
this.getPortlet().setBorders( true );
if ( catalogAsync == null ) {
MessageBox box = new MessageBox();
box.setButtons( MessageBox.OK );
box.setIcon( MessageBox.INFO );
box.setTitle( constants.importantMessage() );
box.setMessage( "No services detected" );
box.show();
return;
}
this.getCatalogo();
this.getPortlet().layout();
}
/**
* Configura os elementos de tela
*/
private void configuraElementos() {
centerData.setMargins( new Margins( 5 ) );
west.setBodyBorder( true );
west.setHeading( constants.catalogSearchItems() );
west.setLayout( new AccordionLayout() );
nav.setHeading( constants.catalogTitle() );
nav.setScrollMode( Scroll.AUTOY );
nav.setAutoHeight( false );
nav.setHeight( 290 );
nav.setAutoWidth( true );
nav.setBorders( false );
// nav.setBodyStyle("fontSize: 12px; padding: 6px");
west.add( nav );
west.setAutoHeight( true );
westData.setMargins( new Margins( 5, 0, 5, 5 ) );
westData.setCollapsible( true );
westData.setSplit( true );
window.setLayout( new FitLayout() );
window.setAutoHeight( true );
window.setAutoWidth( true );
window.setBorders( false );
window.setTitle( constants.catalogLocateItemTitle() );
content.setLayout( new BorderLayout() );
content.setBorders( true );
content.setAutoWidth( true );
content.setAutoHeight( false );
content.setHeight( 290 );
content.setTitleCollapse( disabled );
content.setCollapsible( disabled );
content.setHeaderVisible( disabled );
content.setScrollMode( Scroll.AUTOY );
}
/**
* Carrega os elementos de tela.
*/
private void carregaElementos() {
storeCatalogo.add( new Vector<CatalogoModelDetail>() );
content.add( west, westData );
content.add( contentGrid, centerData );
window.add( content );
this.getPortlet().add( content );
}
private void getCatalogo() {
Info.display( constants.importantTitle(), constants.catalogImportantStartMessage() );
catalogAsync.getCatalogTreeBean( new CatalogTreeCallback( this ) );
}
public void processCatalogAfterCallback( CatalogTree result ) {
catalogTreeBean = result;
carregaArvorePesquisa();
configuraElementos();
carregaElementos();
Info.display( constants.importantTitle(), constants.catalogImportantEndMessage() );
}
@SuppressWarnings( "unchecked" )
private void carregaArvorePesquisa() {
final Tree tree = new Tree();
TreeLoader loader = new BaseTreeLoader( new TreeModelReader() );
TreeStore<ModelData> store = new TreeStore<ModelData>( loader );
TreeBinder binder = new TreeBinder( tree, store );
loader.load( this.catalogTreeBean );
binder.setAutoLoad( true );
binder.setDisplayProperty( CatalogTree.NOME ); // name do folder
tree.addListener( Events.SelectionChange, new Listener<TreeEvent>() {
public void handleEvent( TreeEvent te ) {
final TreeItem item = te.tree.getSelectedItem();
if ( item != null ) {
ModelData record = item.getModel();
if ( record instanceof CatalogoModelDetail ) {
// Info.display("Parametro selecionado",
// record.toString());
String codigo = (String) record.get( CatalogoModelDetail.CODIGO );
String[] fields = codigo.split( ";" );
filtraCatalogo( fields );
}
}
}
} );
binder.setIconProvider( new ModelStringProvider() {
public String getStringValue( ModelData model, String property ) {
if ( ( (TreeModel) model ).isLeaf() ) {
return "icon-music";
}
return null;
}
} );
StoreFilterField filter = new StoreFilterField<ModelData>() {
@Override
protected boolean doSelect( Store store, ModelData parent, ModelData record, String property, String filter ) {
// only match leaf nodes
if ( record instanceof CatalogTree ) {
return false;
}
String name = record.get( CatalogoModelDetail.NOME );
name = name.toLowerCase();
if ( name.startsWith( filter.toLowerCase() ) ) {
return true;
}
return false;
}
};
filter.bind( store );
filter.setWidth( "200px" );
nav.add( filter );
nav.add( tree );
}
private void filtraCatalogo( String[] fields ) {
Info.display( constants.importantMessage(), "Catalogo: " + fields[ 0 ] + " Categoria: " + fields[ 1 ] );
this.constroiGridItemsCatalogo( fields[ 0 ], fields[ 1 ] );
}
@SuppressWarnings( "unchecked" )
private void constroiGridItemsCatalogo( final String catalog, final String category ) {
contentGrid = new GridCatalogItem( catalog, category );
content.add( contentGrid, centerData );
content.layout();
}
}
I made a Porlet and when I show it, the components do not appear. But, when I move the portlet, all components are showed. What happened?
Could you help me ?
Regards
Ricardo Rodriguez.
Code:
package br.com.webb.ria.client.ui.requisition;
import java.io.Serializable;
import java.util.Vector;
import br.com.webb.ria.client.command.CatalogTreeCallback;
import br.com.webb.ria.client.common.requisition.AppConstants;
import br.com.webb.ria.client.model.requisition.CatalogTree;
import br.com.webb.ria.client.model.requisition.CatalogoModelDetail;
import br.com.webb.ria.client.rpc.ICatalogAsync;
import br.com.webb.ria.client.rpc.ICatalog.UtilCatalogAsync;
import com.extjs.gxt.ui.client.Events;
import com.extjs.gxt.ui.client.Style.LayoutRegion;
import com.extjs.gxt.ui.client.Style.Scroll;
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.TreeLoader;
import com.extjs.gxt.ui.client.data.TreeModel;
import com.extjs.gxt.ui.client.data.TreeModelReader;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.TreeEvent;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.store.Store;
import com.extjs.gxt.ui.client.store.TreeStore;
import com.extjs.gxt.ui.client.util.Margins;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Info;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.MessageBox;
import com.extjs.gxt.ui.client.widget.StoreFilterField;
import com.extjs.gxt.ui.client.widget.layout.AccordionLayout;
import com.extjs.gxt.ui.client.widget.layout.BorderLayout;
import com.extjs.gxt.ui.client.widget.layout.BorderLayoutData;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.tree.Tree;
import com.extjs.gxt.ui.client.widget.tree.TreeItem;
import com.google.gwt.core.client.GWT;
/**
* @author smart.rodriguez
*
*/
public class SearchCatalogPortlet extends BasePortlet implements Serializable {
private static final long serialVersionUID = -5812997768506913024L;
private ListStore<CatalogoModelDetail> storeCatalogo = new ListStore<CatalogoModelDetail>();
private ContentPanel west = new ContentPanel();
private ContentPanel nav = new ContentPanel();
private LayoutContainer contentGrid = new LayoutContainer();
private BorderLayoutData westData = new BorderLayoutData( LayoutRegion.WEST, 400, 400, 750 );
private BorderLayoutData centerData = new BorderLayoutData( LayoutRegion.CENTER );
private LayoutContainer window = new LayoutContainer();
private ContentPanel content = new ContentPanel();
private CatalogTree catalogTreeBean;
private final ICatalogAsync catalogAsync = UtilCatalogAsync.getInstance();
private static final AppConstants constants = (AppConstants) GWT.create( AppConstants.class );
/**
* Constructor de SearchCatalogPortlet.
*/
public SearchCatalogPortlet() {
super();
this.getPortlet().setHeading( "Catalogo" );
this.getPortlet().setAutoHeight( false );
this.getPortlet().setHeight( 350 );
ConfigPanel.configWithClose( this.getPortlet() );
this.getPortlet().setBorders( true );
if ( catalogAsync == null ) {
MessageBox box = new MessageBox();
box.setButtons( MessageBox.OK );
box.setIcon( MessageBox.INFO );
box.setTitle( constants.importantMessage() );
box.setMessage( "No services detected" );
box.show();
return;
}
this.getCatalogo();
this.getPortlet().layout();
}
/**
* Configura os elementos de tela
*/
private void configuraElementos() {
centerData.setMargins( new Margins( 5 ) );
west.setBodyBorder( true );
west.setHeading( constants.catalogSearchItems() );
west.setLayout( new AccordionLayout() );
nav.setHeading( constants.catalogTitle() );
nav.setScrollMode( Scroll.AUTOY );
nav.setAutoHeight( false );
nav.setHeight( 290 );
nav.setAutoWidth( true );
nav.setBorders( false );
// nav.setBodyStyle("fontSize: 12px; padding: 6px");
west.add( nav );
west.setAutoHeight( true );
westData.setMargins( new Margins( 5, 0, 5, 5 ) );
westData.setCollapsible( true );
westData.setSplit( true );
window.setLayout( new FitLayout() );
window.setAutoHeight( true );
window.setAutoWidth( true );
window.setBorders( false );
window.setTitle( constants.catalogLocateItemTitle() );
content.setLayout( new BorderLayout() );
content.setBorders( true );
content.setAutoWidth( true );
content.setAutoHeight( false );
content.setHeight( 290 );
content.setTitleCollapse( disabled );
content.setCollapsible( disabled );
content.setHeaderVisible( disabled );
content.setScrollMode( Scroll.AUTOY );
}
/**
* Carrega os elementos de tela.
*/
private void carregaElementos() {
storeCatalogo.add( new Vector<CatalogoModelDetail>() );
content.add( west, westData );
content.add( contentGrid, centerData );
window.add( content );
this.getPortlet().add( content );
}
private void getCatalogo() {
Info.display( constants.importantTitle(), constants.catalogImportantStartMessage() );
catalogAsync.getCatalogTreeBean( new CatalogTreeCallback( this ) );
}
public void processCatalogAfterCallback( CatalogTree result ) {
catalogTreeBean = result;
carregaArvorePesquisa();
configuraElementos();
carregaElementos();
Info.display( constants.importantTitle(), constants.catalogImportantEndMessage() );
}
@SuppressWarnings( "unchecked" )
private void carregaArvorePesquisa() {
final Tree tree = new Tree();
TreeLoader loader = new BaseTreeLoader( new TreeModelReader() );
TreeStore<ModelData> store = new TreeStore<ModelData>( loader );
TreeBinder binder = new TreeBinder( tree, store );
loader.load( this.catalogTreeBean );
binder.setAutoLoad( true );
binder.setDisplayProperty( CatalogTree.NOME ); // name do folder
tree.addListener( Events.SelectionChange, new Listener<TreeEvent>() {
public void handleEvent( TreeEvent te ) {
final TreeItem item = te.tree.getSelectedItem();
if ( item != null ) {
ModelData record = item.getModel();
if ( record instanceof CatalogoModelDetail ) {
// Info.display("Parametro selecionado",
// record.toString());
String codigo = (String) record.get( CatalogoModelDetail.CODIGO );
String[] fields = codigo.split( ";" );
filtraCatalogo( fields );
}
}
}
} );
binder.setIconProvider( new ModelStringProvider() {
public String getStringValue( ModelData model, String property ) {
if ( ( (TreeModel) model ).isLeaf() ) {
return "icon-music";
}
return null;
}
} );
StoreFilterField filter = new StoreFilterField<ModelData>() {
@Override
protected boolean doSelect( Store store, ModelData parent, ModelData record, String property, String filter ) {
// only match leaf nodes
if ( record instanceof CatalogTree ) {
return false;
}
String name = record.get( CatalogoModelDetail.NOME );
name = name.toLowerCase();
if ( name.startsWith( filter.toLowerCase() ) ) {
return true;
}
return false;
}
};
filter.bind( store );
filter.setWidth( "200px" );
nav.add( filter );
nav.add( tree );
}
private void filtraCatalogo( String[] fields ) {
Info.display( constants.importantMessage(), "Catalogo: " + fields[ 0 ] + " Categoria: " + fields[ 1 ] );
this.constroiGridItemsCatalogo( fields[ 0 ], fields[ 1 ] );
}
@SuppressWarnings( "unchecked" )
private void constroiGridItemsCatalogo( final String catalog, final String category ) {
contentGrid = new GridCatalogItem( catalog, category );
content.add( contentGrid, centerData );
content.layout();
}
}