Páginas

Mostrando entradas con la etiqueta GXT. Mostrar todas las entradas
Mostrando entradas con la etiqueta GXT. Mostrar todas las entradas

13 de febrero de 2014

cargar la información cuando selecciona el tab


para cargar la información cuando esta la pestaña seleccionada


display.getTabItem().addListener(Events.Select, new Listener(){

@Override
public void handleEvent(BaseEvent be) {

Tools.loadingContainerSetVisible(true);
cargar();
}

});

cambia de color la fila en grid


/**
* Función que cambia de color la fila
*
*/
public class GVC extends GridViewConfig{
@Override
        public String getRowStyle(ModelData model, int rowIndex, ListStore ds){

    if (rowIndex%2==0){
    return "coloreador-grid-row-impar";
    }
    else
            return "";
    }
        
    }

GridView view = new GridView(); 
view.setViewConfig(new GVC());

grid.setView(view);

presenter

this.display.getGrid().getView().setViewConfig(new GridViewConfig() {
@Override
public String getRowStyle(ModelData model, int rowIndex,
ListStore ds) {
if (model != null) {

if (model.get("id") == null){
return "coloreador-grid-row-nuevo";
}
else{
if (model.get("colorea") != null && (Boolean) model.get("colorea")) {
return "coloreador-grid-row-borrado";
} else {
return "coloreador-grid-row-sincolor";
}
}

}
return "";
}

});


en  css 

.coloreador-grid-row-sincolor {
background-color: #FFFFFF !important;
}

31 de agosto de 2013

descarga de ficheros desde aplicación con GWT


Os comento a continuación una forma de detectar la descarga de ficheros desde aplicación.

Este método es compatible con todos los navegadores empleando JQuery 1.x y un par de extensiones del mismo: BlockUI y Cookie. La idea se basa en generar un token de descarga que se escribe en una cookie una vez el fichero ha sido descargado: la aplicación queda a la espera de este token leyendo las cookies cada cierto tiempo.

La implementación es sencilla:

1. Preparar para la descarga de ficheros un iframe vacío en la página index (o la que se emplee como montaje de la aplicación):


"<"iframe src="javascript:''" id="__gwt_downloadFrame" tabIndex='-1'
        style="position: absolute; width: 0; height: 0; border: 0"">""<"/iframe">"


2. Llamar a fichero a descargar. Llamamos a un servlet que genera el documento indicando un token que en el fondo es un UID o número aleatorio:
"
String UID = Math.random()*1000*Math.random()*10000;
String url = GWT.getHostPageBaseURL() + "/tools/XXXXXXXX" + "&UID=" + UID;
iniciarProcesoCheckDownload (UID);
DOM.setElementAttribute(RootPanel.get("__gwt_downloadFrame").getElement(),"src", url); 
"
Donde se invoca una función javascript antes de la descarga para comunicar el token (UID):
"
public static native void iniciarProcesoCheckDownload(String token) /*-{
    $wnd.programarEscuchaFichero (token);
}-*/;
"
3. En este proceso estamos llamando a una función de Javascript que realiza el bloqueo de la pantalla y la espera de lectura de cookie, donde hemos incluido un control por tiempo como mecanismo de control. Este código requiere de las librerías JS de JQuery:

"<"script src="js/jquery-1.10.2.min.js" ">""<"/script">"
"<"script src="js/jquery.cookie.js">"<"/script">"
"<"script src="js/jquery.blockUI.js"">""<"/script">"
"
var fileDownloadCheckTimer;
var downloadToken;
var startTime;

function ocultarDivDescarga() {
    $.unblockUI();
    window.clearInterval(fileDownloadCheckTimer);
    window.status = '';
}

function programarEscuchaFichero(token) {
    
    downloadToken = token;
    $.blockUI({baseZ: 3000, message: '"<"h1">"Espere mientras se prepara la descarga ... "<"br/">""<"br/">" "<"img src="custom/LoadingProgressBar.gif" border="0" width="100"/">" "<"/h1">"' });
    startTime = new Date();
    
    fileDownloadCheckTimer = window.setInterval(function () {
      var cookieValue = $.cookie('FileCookie');
      if (cookieValue == downloadToken) {
          ocultarDivDescarga();
      }
      else {
          var endTime = new Date();
          var secondsOpen = Math.floor((endTime - startTime) / 1000);
          if (secondsOpen> 60*2) { // 2 minutos
              // Salimos por tiempo, medida de seguridad
              ocultarDivDescarga();
                window.alert ('La descarga no se completó en el tiempo esperado, por favor verifique si ha obtenido el fichero solicitado o inténtelo de nuevo.');
          }
          else
          {
              window.status = 'Espere mientras se prepara la descarga ... ('+secondsOpen + ' segundos )';
          }
      }
    }, 1000);
  }
"

4. En la parte servidora, solo tenemos que recoger el token de la petición:

String token = request.getParameter("UID");

5. Y al descargar el fichero incluir una cookie con el token, para que el cliente (navegador web) salga de la espera cuando la lea. Hay que poner la ruta raiz así como un tiempo de expiración no demasiado bajo (problemas con diferencia de hora con servidor, zona horaria, etc.):

// indicar token para control de descarga:
Cookie thecookie = new Cookie("FileCookie", token);
thecookie.setMaxAge(60 * 60 * 4); // 4 horas de vida TOPS
thecookie.setPath("/");
response.addCookie(thecookie);

// Escribir binario en salida
response.setContentType ("application/xls");
response.setHeader ("Content-Disposition", "attachment;filename=" + sArchivo);
OutputStream ostSalida = response.getOutputStream();
"["..."]"


La fuente original de la solución es la siguiente: 

http://geekswithblogs.net/GruffCode/archive/2010/10/28/detecting-the-file-download-dialog-in-the-browser.aspx

3 de julio de 2013

borrar handlers de las ventanas

((ToolButton)display.getWindow().getHeader().getTool(this.display.getWindow().getHeader().getTools().size()-1)).addSelectionListener(new SelectionListener() {
@Override
public void componentSelected(IconButtonEvent ce) {
for (HandlerRegistration hr: registeredHandlers) {
hr.removeHandler();
}
}
}));

18 de febrero de 2013

llamadas a un servlet desde gwt



hacer la clase del servlet 


@WebServlet(name = "nombre_servlet", urlPatterns = {"/nombre_proyecto/nombre_servlet"})
public class no_clase_servlet  extends HttpServlet  {

// variable serializable 


//aquie va la chicha
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
          throws ServletException, IOException {
      doPost(req, resp);
    }


@Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
 
String id = request.getParameter("id");
String salida = "";
Typo_variable variable = new Typo_variable();
  nota = (Typo_variable)request.getAttribute("id_varible");



}

}//fin de la clase



llamada a un servlet desde gwt


 String url = GWT.getModuleBaseURL() + "nombre_servlet?id="+id+"& id_varible ="+ variable;
RequestBuilder rq = new RequestBuilder(RequestBuilder.POST,url);
rq.setHeader("Content-Type","multipart/form-data");
rq.setHeader("Access-Control-Allow-Origin", "*");
try {
rq.sendRequest(null, new RequestCallback() {

@Override
public void onError(Request arg0, Throwable arg1) {
// TODO Auto-generated method stub
}

@Override
public void onResponseReceived(Request arg0, Response arg1) {
//Info.display("","exito "+arg0.toString());
//Info.display("","exito "+arg1.getText());
String sCoSiniestro = "";
//System.out.println(arg1.getStatusCode());
try {
sCoSiniestro = new String(arg1.getText().getBytes("ISO-8859-1"));
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//System.out.println("text "+arg1.getText());
//System.out.println("text "+arg1.getStatusText());
//System.out.println("text "+arg1.getHeadersAsString());
//System.out.println("string "+arg1.toString());
str_imprimir = sCoSiniestro;
//display.setData(sCoSiniestro);

}
});
} catch (RequestException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

llamada para una descarga de documentos


com.google.gwt.user.client.Window.open(GWT.getModuleBaseURL() + "nombre_servlet?tipoInforme=19", null, null );

otra menera

String cadena = GWT.getModuleBaseURL() + "nombre_servlet?id="+id+"& id_varible ="+ variable;
com.google.gwt.user.client.Window.open(cadena, 
                        "_blank", "");

imprimir en GWT


en el evento del boton para imprimir


Element nodoiFrame = display.getDetalle().getElement().getChild(1).getChild(0).getChild(0).getChild(0).getParentElement();
//nodoiFrame.getFirstChildElement().setId("imprimir");
it(nodoiFrame.getFirstChildElement());


buscando el compone iframe donde esta el conetado de lo que queremos imprimir

// display.getDetalle().getElement().getChild(1).getChild(0).getChild(0).getChild(0).getChild(0).getParentElement().setId("imprimir");
Element nodoiFrame = display.getDetalle().getElement().getChild(1).getChild(0).getChild(0).getChild(0).getParentElement();
nodoiFrame.getFirstChildElement().setId("imprimir");


el codigo que hace imprimir

public static native void it() /*-{ 
        $wnd.print();
    }-*/;

    public static native void it(String html) /*-{
        var frame = $doc.getElementById('imprimir');
        if (!frame) {
            $wnd.alert("Error: Can't find printing frame."); 
            return;
        }
        frame = frame.contentWindow;
        var doc = frame.document;
        doc.open();
        doc.write(html);
        doc.close();
        frame.focus();
        frame.print();
    }-*/;

    public static void it(UIObject obj) {
        it("", obj.getElement().toString());
    }

    public static void it(Element element) {
      it("", element.toString());
    }
   

    public static void it(String style, String it) {
        it("
"+style+"
"+it+""); 
    }

    public static void it(String style, UIObject obj) {
        it(style, obj.getElement().toString());
    }

    public static void it(String style, Element element) {
        it(style, element.toString ());
    }

22 de agosto de 2012

error del glassfish al desplegar



error del glassfish

SEVERE: Class [ Lcom/ziaur/one/SaveInfoLocal; ] not found. Error while loading [ class com.ziaur.two.InfoRedaerImpl ]
SEVERE: Exception while deploying the app [Gtwo]
SEVERE: Invalid ejb jar [Gtwo]: it contains zero ejb.
Note:
1. A valid ejb jar requires at least one session, entity (1.x/2.x style), or message-driven bean.
2. EJB3+ entity beans (@Entity) are POJOs and please package them as library jar.
3. If the jar file contains valid EJBs which are annotated with EJB component level annotations (@Stateless, @Stateful, @MessageDriven, @Singleton), please check server.log to see whether the annotations were processed properly.
java.lang.IllegalArgumentException: Invalid ejb jar [Gtwo]: it contains zero ejb.
Note:
1. A valid ejb jar requires at least one session, entity (1.x/2.x style), or message-driven bean.
2. EJB3+ entity beans (@Entity) are POJOs and please package them as library jar.
3. If the jar file contains valid EJBs which are annotated with EJB component level annotations (@Stateless, @Stateful, @MessageDriven, @Singleton), please check server.log to see whether the annotations were processed properly.
at com.sun.enterprise.deployment.util.EjbBundleValidator.accept(EjbBundleValidator.java:76)
at com.sun.enterprise.deployment.util.ApplicationValidator.accept(ApplicationValidator.java:128)
at com.sun.enterprise.deployment.EjbBundleDescriptor.visit(EjbBundleDescriptor.java:730)
at com.sun.enterprise.deployment.Application.visit(Application.java:1768)
at com.sun.enterprise.deployment.archivist.ApplicationFactory.openArchive(ApplicationFactory.java:195)
at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:180)
at org.glassfish.javaee.core.deployment.DolProvider.load(DolProvider.java:93)
at com.sun.enterprise.v3.server.ApplicationLifecycle.loadDeployer(ApplicationLifecycle.java:826)
at com.sun.enterprise.v3.server.ApplicationLifecycle.setupContainerInfos(ApplicationLifecycle.java:768)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:368)
at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240)
at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:370)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:355)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:370)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1067)
at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:96)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1247)
at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1235)
at com.sun.enterprise.v3.admin.AdminAdapter.doCommand(AdminAdapter.java:465)
at com.sun.enterprise.v3.admin.AdminAdapter.service(AdminAdapter.java:222)
at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:168)
at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:234)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:822)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:719)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1013)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:225)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662)  



y no ecuentra 

java.lang.NoClassDefFoundError: com/foo/sdk/core/AbstractClass

este errror que tiene pinta de ser del EJB pero es de como tenemos configurados nuestro EAR

debes de mirar las propiedades del proyecto del ear. en el apartado de "Deployment Assembly" debes de introducir las librerias que no se encuentran, así como los proyectos para desplegar tu aplicacion

23 de mayo de 2012

no muestra datos en store cuando no esta vacío con scarol




conter_panel_grid.setScrollMode(Scroll.AUTOX);


en el sert data del grid deberiamos hacer un reconfigure
grid.reconfigure(gridBalance.getStore(), gridBalance.getColumnModel());
grid.getLayoutData();
conter_panel_grid.layout();

7 de febrero de 2012

idioma según el navegador [ idioma browser]



para que el idioma de la aplicación gwt sea el mismo que el del navegador debes de:

primero entrar en el archivo nombre_proyecto.gwt.xml habría que quitar las dobles comillas  < y >


 < extend-property name="locale" values="es_ES"/>

extend-property name=" locale" values="en"/>

extend-property name=" locale" values="fr"" />

< set-property-fallback name="locale" value="es_ES" />



en el archivo index.jsp

debes añadir esta linea y habría que quitar las dobles comillas  < y >
< meta name="gwt:property" content="locale=<%= request.getLocale() %/>

28 de septiembre de 2011

llamada entre dos servicios gwt


la llamada desde dos servicios

se hacer  muy simple

lo primoero se crea el objeto serviceImpl

ClassServiceImpl oSI = new ClassServiceImpl();

luego hacer las llamada al oSI.getContext() 

en esta clase te debe de devolver OjetoBeanRemote

asi podras llamar a los metos del servicio que desees

oSI.insertarBBDD();


24 de septiembre de 2011

tooltip grid cell whith messager


y en la creacion de las columnas del grid

    public static GridCellRenderer getTootipCeld(final String str) {
         GridCellRenderer renderer = new GridCellRenderer() {

            @Override
            public Object render(BaseModel model, String property,
                    ColumnData config, int rowIndex, int colIndex,
                    ListStore store, Grid grid) {
               
                Label label = new Label(""+model.get(property));
                label.setToolTip(str);
                return label;
   
            }
       
         };
       
         return renderer;
       
    }



y en la creacion de las columnas del grid

column.setRenderer(ColumnRendered.getTootipCeld("String"));


grid selected row


en la creación del grid

 grid.setSelectionModel(new GridSelectionModel());


en el presenter en la funcion bind


display.getGrid().addListener(Events.CellMouseDown, new Listener>() {


            @Override
            public void handleEvent(GridEvent be) {
               
                Objeto dec = display.getData();
                if (dec != null){
               BaseModel bd = display.getGrid().getSelectionModel().getSelectedItem();
                }else{
               
                    ApplicationMsg.getMsgError(conjuntoTipoInfosDisplay.ERROR.toString(), servicios.getMessages().error_datos());   
                }
               
            }

        });


10 de marzo de 2011

Grid with buttons

Esto en un ejemplo que viene el la pagina de sencha.com con algo mas de miga


en la parte del view debemos tener algo como esto

public void getListado(final ClickHandler handlerEdit, final ClickHandler handlerDelete,
final ConjuntoServicios servicios,
boolean bReadOnly) {

cp = new ContentPanel();

List configs = new ArrayList();


// A�adimos las columnas.
ColumnConfig clmncnfgID = new ColumnConfig("id", "Id", 100);
clmncnfgID.setHidden(true);
configs.add(clmncnfgID);


ColumnConfig clmncnfgSeccion = new ColumnConfig("id_1", servicios.getConstants().cmn_nombre(), 200);
configs.add(clmncnfgSeccion);

ColumnConfig clmncnfgCodigo = new ColumnConfig("id_2", servicios.getConstants().cmn_codigo(), 200);
configs.add(clmncnfgCodigo);

//añadimos el boton el colum render
// en este caso tenemos dos botones una de bajada y otro de subida
GridCellRenderer buttonDownRenderer = new GridCellRenderer() {
public Object render(final BaseModel model, String property, ColumnData config, final int rowIndex,
final int colIndex, ListStore store, final Grid grid) {

init = true;
grid.addListener(Events.ColumnResize, new Listener() {

public void handleEvent(GridEvent be) {

for (int i = 0; i < be.getGrid().getStore().getCount(); i++) { if (be.getGrid().getView().getWidget(i, be.getColIndex()) != null ){ // && be.getGrid().getView().getWidget(i, be.getColIndex()) instanceof BoxComponent) { //((BoxComponent) be.getGrid().getView().getWidget(i, be.getColIndex())).setWidth(be.getWidth() - 10); } } } }); Button bntDown = new Button(); bntDown.addSelectionListener( new SelectionListener() {
@Override
public void componentSelected(ButtonEvent ce) {
GridEvent gridEvent = new GridEvent(grid);
gridEvent.setModel(model);

//este es el evento que mando por boton que recojo en el presenter
grid.fireEvent(Events.Deactivate, gridEvent);
}
});

bntDown.setWidth(17);
bntDown.setHeight(17);
bntDown.setIconStyle("icon_bajar");

return bntDown;
}
};


//segundo boton
GridCellRenderer buttonUpRenderer = new GridCellRenderer() {
public Object render(final BaseModel model, String property, ColumnData config, final int rowIndex,
final int colIndex, ListStore store, final Grid grid) {
if (!init) {
init = true;

}


Button bntUp = new Button();
bntUp.addSelectionListener( new SelectionListener() {
@Override
public void componentSelected(ButtonEvent ce) {
GridEvent gridEvent = new GridEvent(grid);
gridEvent.setModel(model);
//evento que se lanza desde el view
grid.fireEvent(Events.TwinTriggerClick, gridEvent);
}
});
bntUp.setWidth(17);
bntUp.setHeight(17);
bntUp.setIconStyle("icon_subir");


return bntUp;
}
};

ColumnConfig columordenBajar= new ColumnConfig("in_orden", "", 30);
columordenBajar.setRenderer(buttonDownRenderer);
configs.add(columordenBajar);

ColumnConfig columordenSubir= new ColumnConfig("id_version", "", 30);
columordenSubir.setRenderer(buttonUpRenderer);
configs.add(columordenSubir);

ColumnConfig clmncnfgEditar = new ColumnConfig("idEditar", "", 80);
configs.add(clmncnfgEditar);

ColumnConfig clmncnfgEliminar = new ColumnConfig("idEliminar", "", 80);
configs.add(clmncnfgEliminar);

GridCellRenderer accionesEditarRenderer = new GridCellRenderer() {

@Override
public Object render(final BaseModel model, final String property, ColumnData config,
final int rowIndex, final int colIndex, final ListStore store,
final Grid grid) {

Anchor enlaceEditar = new Anchor("Editar", "#");
if (handlerEdit!=null) enlaceEditar.addClickHandler(handlerEdit);
return enlaceEditar;
}};
clmncnfgEditar.setAlignment(HorizontalAlignment.CENTER);
clmncnfgEditar.setRenderer(accionesEditarRenderer);


// Renderer de eliminar,
GridCellRenderer accionesEliminarRenderer = new GridCellRenderer() {

@Override
public Object render(final BaseModel model, final String property, ColumnData config,
final int rowIndex, final int colIndex, final ListStore store,
final Grid grid) {

Anchor enlaceEliminar = new Anchor("Eliminar", "#");
if (handlerDelete!=null) enlaceEliminar.addClickHandler(handlerDelete);
return enlaceEliminar;
}};

clmncnfgEliminar.setAlignment(HorizontalAlignment.CENTER);
clmncnfgEliminar.setRenderer(accionesEliminarRenderer);


grid = new Grid(new GroupingStore(), new ColumnModel(configs));
grid.setBorders(false);
//gridCompositeSecciones.setLoadMask(true);
grid.setAutoExpandColumn("no_garantia");
grid.setAutoExpandMax(1500);

grid.addListener(Events.ViewReady, Tools.configAutoHeightListener(this.grid, this.cp));
grid.addListener(Events.ColumnResize, Tools.configAutoHeightListener(this.grid, this.cp));
grid.getColumnModel().addListener(Events.HiddenChange, Tools.configAutoHeightListener(this.grid, this.cp));
grid.getStore().addListener(Store.Add, Tools.configAutoHeightListener(this.grid, this.cp));


Tools.maskEmptyGrid(grid, CasiopeaMessages.INSTANCE.grid_vacio_pulse_anadir());


en la parte del presenter en el bind() o donde declares los botones
como los eventos eran del grid aunque generados por los botoenes por eso tenemos que mandar el grid entero


this.display.getGrid().addListener(Events.Deactivate, new Listenert(){

@Override
public void handleEvent(GridEvent
be) {

actualizarSeccionOrden(-1,be.getModel(),be.getGrid().getStore().getCount());

}

});

this.display.getGrid().addListener(Events.TwinTriggerClick, new Listener
(){

@Override
public void handleEvent(GridEvent
be) {

actualizarSeccionOrden(+1,be.getModel(),be.getGrid().getStore().getCount());

}

});

27 de febrero de 2011

button with icons


primer tipo de icono con boton

final IButton stretchButton = new IButton("");
stretchButton.setWidth(50);
stretchButton.setShowRollOver(true);
stretchButton.setShowDisabled(true);
stretchButton.setShowDown(true);
stretchButton.setTitleStyle("Stretch Button");
stretchButton.setIcon("icons/16/find.png");

Segundo tipo de icono con boton

final Button cssButton = new Button("");
cssButton.setShowRollOver(true);
cssButton.setShowDisabled(true);
cssButton.setShowDown(true);
cssButton.setIcon("icons/16/icon_add_files.png");

Tercero tipo de icono con boton

final ImgButton imgButton = new ImgButton();
imgButton.setWidth(18);
imgButton.setHeight(18);
imgButton.setShowRollOver(true);
imgButton.setShowDown(true);
imgButton.setSrc("[SKIN]/ImgButton/button.png");





15 de febrero de 2011

gwt 2.2

ya esta la version 2.2 de gwt... esperemos que dure algo mas que la versión anterior.

porque la anterior versión solo duro tres mese. ya también hay versión de sencha ha sacado su versión gratuita

21 de enero de 2011

Tree Grid color column

al principio del tu list view

public class GVC extends GridViewConfig
{ @Override
public String getRowStyle(ModelData model, int rowIndex, ListStore ds)
{

if (model.get("in_estado")!=null){
if ((Integer)model.get("in_estado")==1) {
return "grid-endoso";
} else {
return "";
}
}else{
return "";
}
}
}


grid-endoso -> es una clase de css para el color.

te creas un objeto treeGridView para añadir la clase GVC
TreeGridView view = new TreeGridView();
view.setForceFit(true);
view.setViewConfig(new GVC());

luego lo añadres a tu treeGrid

treeGrid.setView(view);

18 de enero de 2011

Tree Grid

TreeStore storeArbol = new TreeStore();
TreeGrid treeGrid = null;

cuando se definda la columna en la primera, deberiamos de poner un render rn ella

ColumnConfig clmncnfg1 = new ColumnConfig("id", constants.cmn_cod_nota(), 100);
clmncnfg1.setAlignment(HorizontalAlignment.LEFT);
clmncnfg1.setRenderer(new TreeGridCellRenderer());
configs.add(clmncnfg1);

definicion del treeGrid

treeGrid = new TreeGrid(storeArbol, new ColumnModel(configs));
treeGrid.setBorders(true);
treeGrid.setAutoExpandMax(2000);

para rellenar el store del arbol deberimos de tener en la vista un metodo set de tipo
TreeGrid siendo BaseModel un modelo basico creado para nuestros prpositos

public void setStoreTreeGrid(TreeStore storeArbol){
this.storeArbol = storeArbol;
}

En el presenter rellenas un objeto TreeStore y se lo pasas al display.setStoreTreeGrid(treeGridRellenado())

esto debe estar antes del llamar al "init"

y se haces servicios para rellenar el store deberia estar dentro del servicio el "init" porque primero hay que rellenar el store y cuando se lo presentar al treeGrid ya lo pinta. ya que el treeGrid no tiene un reconfigure.


forma de insertar el treeStore
para crear padres
storeArbol.add(object,false);
para crear hijos
storeArbol.add(ncPadre,object,false);

3 de diciembre de 2010

GWT: grid con tooltip


una opcion para poner un tooltip en un grid es la que viene en la pagina de sencha


crearse esta función

  1. GridCellRenderer change = new GridCellRenderer() {
  2. public String render(Stock model, String property, ColumnData config, int rowIndex, int colIndex,
  3. ListStore store, Grid grid) {
  4. double val = (Double) model.get(property);

  5. return " + cm.getColumnById(property).getHeader() + "' qtip='" + v
  6. + "'>" + v + "";
  7. }
  8. };


en la columna donde se va a generar el tooltip se debemos de poner algo como

  1. column = new ColumnConfig("change", "Change", 100);
  2. column.setRenderer(change);
  3. configs.add(column);



al final de la función donde este declarado el gird poner


new QuickTip(grid);


otra manera de hacer esto seria

  1. GridCellRenderer change = new GridCellRenderer() {
  2. public label render(Stock model, String property, ColumnData config, int rowIndex, int colIndex,
  3. ListStore store, Grid grid) {
  4. double val = (Double) model.get(property);
  5. Label label = new Label();
  6. label.add(val);
  7. label.setTootip(val);
  8. return label;
  9. }
  10. };

después de esto solo debes de introducirlo a la columna



  1. column = new ColumnConfig("change", "Change", 100);
  2. column.setRenderer(change);
  3. configs.add(column);


espero que ayude estos dos dos tipos de tootips en grid.