Example usage for com.google.gwt.safehtml.shared SafeHtmlUtils fromString

List of usage examples for com.google.gwt.safehtml.shared SafeHtmlUtils fromString

Introduction

In this page you can find the example usage for com.google.gwt.safehtml.shared SafeHtmlUtils fromString.

Prototype

public static SafeHtml fromString(String s) 

Source Link

Document

Returns a SafeHtml containing the escaped string.

Usage

From source file:cc.alcina.framework.gwt.client.widget.dialog.OkCancelDialogBox.java

License:Apache License

public OkCancelDialogBox(String title, Widget widget, PermissibleActionListener listener,
        HorizontalAlignmentConstant widgetAlign) {
    this.widget = widget;
    this.vetoableActionListener = listener;
    setText(title);/*from  w w w .j a  va  2 s. c o  m*/
    setAnimationEnabled(showAnimated());
    VerticalPanel vp = new VerticalPanel();
    vp.add(widget);
    vp.setCellHorizontalAlignment(widget, widgetAlign);
    buttonsPanel = new HorizontalPanel();
    cancelButton = new Button("Cancel");
    cancelButton.addClickHandler(e -> cancel());
    okButton = new Button(SafeHtmlUtils.fromString(getOKButtonName()));
    okButton.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            onOkButtonClicked();
        }
    });
    buttonsPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
    buttonsPanel.setSpacing(8);
    buttonsPanel.add(okButton);
    buttonsPanel.add(cancelButton);
    vp.add(buttonsPanel);
    vp.setCellHorizontalAlignment(buttonsPanel, HasHorizontalAlignment.ALIGN_CENTER);
    setWidget(vp);
    adjustDisplay();
    center();
}

From source file:cimav.client.view.nomina.HorasExtrasUI.java

private void initTableColumns() {

    // id + icon remove
    Column<HoraExtra, String> iconCol = new Column<HoraExtra, String>(
            new NomIconInputCell(NomIconInputCell.HORA_EXTRA)) {
        @Override//from   ww  w  .ja v  a 2  s.  co  m
        public String getValue(HoraExtra object) {
            return "" + object.getId();
        }
    };
    dataGrid.addColumn(iconCol, "");
    dataGrid.setColumnWidth(iconCol, 16, Style.Unit.PX);

    // Semana
    Column<HoraExtra, SafeHtml> semanaCol = new Column<HoraExtra, SafeHtml>(new SafeHtmlCell()) {
        @Override
        public SafeHtml getValue(HoraExtra object) {
            SafeHtmlBuilder a = new SafeHtmlBuilder();
            a.appendHtmlConstant("<span>" + object.getWeekOfYear() + "</span>");
            //                if (object.getConcepto().getSuma()) {
            //                    a.appendHtmlConstant("<span>" + object.getConcepto().getName() + "</span>");
            //                } else {
            //                    a.appendHtmlConstant("<span style='color: grey; font-style: italic;'>" + object.getConcepto().getName() + "</span>");
            //                }
            return a.toSafeHtml();
        }
    };
    dataGrid.addColumn(semanaCol, "Semana");
    dataGrid.setColumnWidth(semanaCol, 120, Style.Unit.PCT);

    // Fecha
    Column<HoraExtra, Date> diaCol = new Column<HoraExtra, Date>(diaCell) {
        @Override
        public Date getValue(HoraExtra object) {
            return object.getDia();
        }
    };
    diaCol.setFieldUpdater(new FieldUpdater<HoraExtra, Date>() {
        @Override
        public void update(int index, HoraExtra object, Date value) {
            try {
                object.setDia(value);

                //object.ajustar();

                getHorasExtrasREST().update(object);
            } catch (Exception ex) {

            }
            diaCell.clearViewData(object);
            int absRowIndex = index;
            dataGrid.redrawRow(absRowIndex);
        }
    });
    dataGrid.addColumn(diaCol, "Da (fecha)");
    dataGrid.setColumnWidth(diaCol, 120, Style.Unit.PX);

    // Horas
    Column<HoraExtra, String> horasCol = new Column<HoraExtra, String>(horasCell) {
        @Override
        public String getValue(HoraExtra object) {
            Double result = object == null || object.getHoras() == null ? 0 : object.getHoras();
            return Double.toString(result);
        }
    };
    horasCol.setFieldUpdater(new FieldUpdater<HoraExtra, String>() {
        @Override
        public void update(int index, HoraExtra object, String value) {
            try {
                Double horas = Double.parseDouble(value);
                object.setHoras(horas);

                //object.ajustar();

                getHorasExtrasREST().update(object);
            } catch (Exception ex) {

            }
            horasCell.clearViewData(object);
            int absRowIndex = index;
            dataGrid.redrawRow(absRowIndex);
        }
    });
    horasCol.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
    Header<String> forzarFooter = new Header<String>(new TextCell()) {
        @Override
        public String getValue() {
            return "  ";
        }
    };
    dataGrid.addColumn(horasCol, new SafeHtmlHeader(SafeHtmlUtils.fromString("Horas")), forzarFooter);
    dataGrid.setColumnWidth(horasCol, 68, Style.Unit.PX);

}

From source file:cimav.client.view.nomina.NominaFaltasUI.java

private void initTableColumns() {

    // id + icon remove
    Column<Incidencia, String> iconCol = new Column<Incidencia, String>(
            new NomIconInputCell(NomIconInputCell.FALTA)) {
        @Override//from w w w  .j av  a 2 s .  co m
        public String getValue(Incidencia object) {
            return "" + object.getId();
        }
    };
    dataGrid.addColumn(iconCol, "");
    dataGrid.setColumnWidth(iconCol, 16, Style.Unit.PX);

    // Id+Tipo
    Column<Incidencia, SafeHtml> tipoCol = new Column<Incidencia, SafeHtml>(new SafeHtmlCell()) {
        @Override
        public SafeHtml getValue(Incidencia object) {
            SafeHtmlBuilder sb = new SafeHtmlBuilder();
            sb.appendHtmlConstant(
                    "<div style='outline-style:none; white-space: nowrap;'><strong style='font-size: 12px; padding-right: 3px;'>"
                            + object.getCode() + "</strong> " + "<span>" + object.getTipo().getDescripcion()
                            + "</span></div>");
            return sb.toSafeHtml();
        }
    };
    dataGrid.addColumn(tipoCol, "Tipo");
    dataGrid.setColumnWidth(tipoCol, 60, Style.Unit.PCT);

    // Fecha
    Column<Incidencia, Date> fechaCol = new Column<Incidencia, Date>(fechaInicioCell) {
        @Override
        public Date getValue(Incidencia object) {
            return object.getFechaInicial();
        }
    };
    fechaCol.setFieldUpdater(new FieldUpdater<Incidencia, Date>() {
        @Override
        public void update(int index, Incidencia object, Date value) {
            try {
                object.setFechaInicial(value);

                object.ajustar();

                getIncidenciasREST().update(object);
            } catch (Exception ex) {

            }
            fechaInicioCell.clearViewData(object);
            int absRowIndex = index;
            dataGrid.redrawRow(absRowIndex);
        }
    });
    dataGrid.addColumn(fechaCol, "Fecha");
    dataGrid.setColumnWidth(fechaCol, 120, Style.Unit.PX);

    // Dias
    Column<Incidencia, String> diasCol = new Column<Incidencia, String>(diasCell) {
        @Override
        public String getValue(Incidencia object) {
            Integer result = object == null || object.getDias() == null ? 0 : object.getDias();
            return Integer.toString(result);
        }
    };
    diasCol.setFieldUpdater(new FieldUpdater<Incidencia, String>() {
        @Override
        public void update(int index, Incidencia object, String value) {
            try {
                Integer dias = Integer.parseInt(value);
                object.setDias(dias);

                object.ajustar();
                getIncidenciasREST().update(object);
            } catch (Exception ex) {

            }
            diasCell.clearViewData(object);
            int absRowIndex = index;
            dataGrid.redrawRow(absRowIndex);
        }
    });
    diasCol.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
    dataGrid.addColumn(diasCol, "Das");
    dataGrid.setColumnWidth(diasCol, 88, Style.Unit.PX);

    // Dias Habiles
    Column<Incidencia, SafeHtml> diasHabilesCols = new Column<Incidencia, SafeHtml>(new SafeHtmlCell()) {
        @Override
        public SafeHtml getValue(Incidencia object) {
            Integer result = object == null || object.getDiasHabiles() == null ? 0 : object.getDiasHabiles();
            SafeHtmlBuilder sb = new SafeHtmlBuilder();
            sb.appendHtmlConstant(
                    "<div style='outline-style:none; white-space: nowrap;'><strong style='font-size: 12px; padding-right: 6px;'>"
                            + Integer.toString(result) + "</strong></div>");
            return sb.toSafeHtml();
        }
    };
    diasHabilesCols.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
    dataGrid.addColumn(diasHabilesCols, new SafeHtmlHeader(SafeHtmlUtils.fromString("Hbiles")));
    dataGrid.setColumnWidth(diasHabilesCols, 68, Style.Unit.PX);

    // Dias Inhabiles
    Column<Incidencia, SafeHtml> diasInhabiles = new Column<Incidencia, SafeHtml>(new SafeHtmlCell()) {
        @Override
        public SafeHtml getValue(Incidencia object) {
            Integer result = object == null || object.getDiasInhabiles() == null ? 0
                    : object.getDiasInhabiles();
            SafeHtmlBuilder sb = new SafeHtmlBuilder();
            sb.appendHtmlConstant(
                    "<div style='outline-style:none; white-space: nowrap;'><strong style='font-size: 12px; padding-right: 6px;'>"
                            + Integer.toString(result) + "</strong></div>");
            return sb.toSafeHtml();
        }
    };
    diasInhabiles.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
    dataGrid.addColumn(diasInhabiles, new SafeHtmlHeader(SafeHtmlUtils.fromString("Inhbiles")));
    dataGrid.setColumnWidth(diasInhabiles, 68, Style.Unit.PX);

    // Dias Restantes
    Column<Incidencia, SafeHtml> diasRestantesCol = new Column<Incidencia, SafeHtml>(new SafeHtmlCell()) {
        @Override
        public SafeHtml getValue(Incidencia object) {
            Integer result = object == null || object.getDiasRestantes() == null ? 0
                    : object.getDiasRestantes();
            SafeHtmlBuilder sb = new SafeHtmlBuilder();
            sb.appendHtmlConstant(
                    "<div style='outline-style:none; white-space: nowrap;'><strong style='font-size: 12px; padding-right: 6px;'>"
                            + Integer.toString(result) + "</strong></div>");
            return sb.toSafeHtml();
        }
    };
    diasRestantesCol.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
    dataGrid.addColumn(diasRestantesCol, new SafeHtmlHeader(SafeHtmlUtils.fromString("Restantes")));
    dataGrid.setColumnWidth(diasRestantesCol, 68, Style.Unit.PX);

    // Folio
    Column<Incidencia, String> folioCol = new Column<Incidencia, String>(folioCell) {
        @Override
        public String getValue(Incidencia object) {
            return object.getFolio();
        }
    };
    folioCol.setFieldUpdater(new FieldUpdater<Incidencia, String>() {
        @Override
        public void update(int index, Incidencia object, String value) {
            try {
                object.setFolio(value);
                getIncidenciasREST().update(object);
            } catch (Exception ex) {

            }
            folioCell.clearViewData(object);
            int absRowIndex = index;
            dataGrid.redrawRow(absRowIndex);
        }
    });
    Header<String> forzarFooter = new Header<String>(new TextCell()) {
        @Override
        public String getValue() {
            return "  ";
        }
    };
    dataGrid.addColumn(folioCol, new SafeHtmlHeader(SafeHtmlUtils.fromString("Folio")), forzarFooter);
    dataGrid.setColumnWidth(folioCol, 40, Style.Unit.PCT);

}

From source file:cimav.client.view.nomina.NominaSaldoUI.java

/**
 * Add the columns to the table.//from  w  w w.  ja va  2s . c om
 */
private void initTableColumns() {

    // id + icon remove
    Column<Movimiento, String> iconCol = new Column<Movimiento, String>(
            new NomIconInputCell(NomIconInputCell.SALDO)) {
        @Override
        public String getValue(Movimiento object) {
            return "" + object.getId();
        }
    };
    Header<String> forzarFooter = new Header<String>(new TextCell()) {
        @Override
        public String getValue() {
            return "  ";
        }
    };
    dataGrid.addColumn(iconCol, new SafeHtmlHeader(SafeHtmlUtils.fromString("")), forzarFooter);
    dataGrid.setColumnWidth(iconCol, 16, Style.Unit.PX);

    // Concepto
    Column<Movimiento, String> conceptoCol = new Column<Movimiento, String>((new TextCell())) {
        @Override
        public String getValue(Movimiento object) {
            Concepto concepto = object.getConcepto();
            return concepto.getName();
        }
    };
    dataGrid.addColumn(conceptoCol, "Concepto");
    dataGrid.setColumnWidth(conceptoCol, 100, Style.Unit.PCT);

    // Permanente
    Column<Movimiento, Boolean> permanenteCol = new Column<Movimiento, Boolean>(permanenteCell) {
        @Override
        public Boolean getValue(Movimiento object) {
            Boolean result = object.getPermanente();
            return result;
        }
    };
    permanenteCol.setFieldUpdater(new FieldUpdater<Movimiento, Boolean>() {
        @Override
        public void update(int index, Movimiento object, Boolean value) {
            try {
                object.setPermanente(value);
                getNominaQuincenalsREST().update(object);
            } catch (Exception e) {

            }
            saldoCell.clearViewData(object);
            int absRowIndex = index;
            dataGrid.redrawRow(absRowIndex);
        }
    });
    permanenteCol.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
    TextHeader permanenteHeader = new TextHeader("");
    permanenteHeader.setHeaderStyleNames("permanenteHeader");
    dataGrid.addColumn(permanenteCol, permanenteHeader);
    dataGrid.setColumnWidth(permanenteCol, 20, Style.Unit.PX);

    // Pago
    Column<Movimiento, SafeHtml> pagoCol = new Column<Movimiento, SafeHtml>(new SafeHtmlCell()) {
        @Override
        public SafeHtml getValue(Movimiento object) {
            BigDecimal pago = object == null || object.getPago() == null ? BigDecimal.ZERO : object.getPago();
            Utils.formatCantidad(pago);
            SafeHtmlBuilder a = new SafeHtmlBuilder();
            if (object.getPermanente()) {
                a.appendHtmlConstant(
                        "<span style='padding-right:3px; '>" + Utils.formatCantidad(pago) + "</span>");
            } else {
                a.appendHtmlConstant("<span style='padding-right:3px; color: grey; font-style: italic;'>"
                        + Utils.formatCantidad(pago) + "</span>");
            }
            return a.toSafeHtml();
        }
    };
    pagoCol.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
    dataGrid.addColumn(pagoCol, "Pago");
    dataGrid.setColumnWidth(pagoCol, 90, Style.Unit.PCT);

    // Saldo 
    Column<Movimiento, String> saldoCol = new Column<Movimiento, String>(saldoCell) {
        @Override
        public String getValue(Movimiento object) {
            BigDecimal result = object == null || object.getSaldo() == null ? BigDecimal.ZERO
                    : object.getSaldo();
            return Utils.formatCantidad(result);
        }
    };
    saldoCol.setFieldUpdater(new FieldUpdater<Movimiento, String>() {
        @Override
        public void update(int index, Movimiento object, String value) {
            BigDecimal nuevoSaldo;
            try {
                nuevoSaldo = new BigDecimal(value.trim());
                object.setSaldo(nuevoSaldo);
                getNominaQuincenalsREST().update(object);
            } catch (Exception e) {

            }
            saldoCell.clearViewData(object);
            int absRowIndex = index;
            dataGrid.redrawRow(absRowIndex);
        }
    });
    saldoCol.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
    dataGrid.addColumn(saldoCol, "Saldo");
    dataGrid.setColumnWidth(saldoCol, 110, Style.Unit.PX);

    // Quincenas
    Column<Movimiento, String> quincenasCol = new Column<Movimiento, String>(quincenasCell) {
        @Override
        public String getValue(Movimiento object) {
            Integer result = object == null || object.getNumQuincenas() == null ? 0 : object.getNumQuincenas();
            return Integer.toString(result);
        }
    };
    quincenasCol.setFieldUpdater(new FieldUpdater<Movimiento, String>() {
        @Override
        public void update(int index, Movimiento object, String value) {
            // Push the changes into the MyDTO. At this point, you could send an
            // asynchronous request to the server to update the database.
            // value es el valor capturado
            // si es valido, pasar al object y a la DB
            // NOTA requiere de un Ajax con icono chiquito
            // Tiene su propio loading el DataGrid

            // Intenta convertir el value a Integer
            // si falla lo deja como estaba
            // si no falla lo actualiza
            Integer numQuin = 0;
            try {
                numQuin = Integer.parseInt(value.trim());
                object.setNumQuincenas(numQuin);

                getNominaQuincenalsREST().update(object);

            } catch (NumberFormatException | NullPointerException e) {
            }
            quincenasCell.clearViewData(object);
            int absRowIndex = index;
            dataGrid.redrawRow(absRowIndex);
        }
    });
    quincenasCol.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
    dataGrid.addColumn(quincenasCol, "Veces");
    dataGrid.setColumnWidth(quincenasCol, 68, Style.Unit.PX);

}

From source file:cimav.visorglass.client.widgets.PanelesLayout.java

License:Apache License

public PanelesLayout(GWTServiceAsync gwtServiceAsync) {
    initWidget(uiBinder.createAndBindUi(this));

    this.gwtServiceAsync = gwtServiceAsync;

    // Crea el Modelo
    arbolModel = new ArbolModel();
    // Crea el node Root
    TreeItem root = new TreeItem(SafeHtmlUtils.fromString("<h2>La Root</h2>"));
    // Cambia  Recursos del Arbol
    CellTree.Resources cellTreeResources = GWT.create(ICellTreeResources.class);
    CellTree.CellTreeMessages cellTreeMsgs = GWT.<CellTree.CellTreeMessages>create(ICellTreeMessages.class);
    // Crea el arbol
    cellArbol = new CellTree(arbolModel, root, cellTreeResources, cellTreeMsgs);
    cellArbol.setKeyboardSelectionPolicy(HasKeyboardSelectionPolicy.KeyboardSelectionPolicy.ENABLED);
    // agrega el arbol a su Panel
    //flowPanelArbol.add(cellArbol);
    cellArbol.getElement().getStyle().setPosition(Style.Position.ABSOLUTE);
    cellArbol.getElement().getStyle().setTop(10, Style.Unit.PX);
    cellArbol.getElement().getStyle().setLeft(0, Style.Unit.PX);
    cellArbol.getElement().getStyle().setBottom(0, Style.Unit.PX);
    cellArbol.getElement().getStyle().setRight(0, Style.Unit.PX);
    scrollPanelArbol.add(cellArbol);//from   w  ww  . j a  v a 2s . co m
    /* Inyectarle style absolute al Abuelo para que funcione el scroll del cellArbol */
    Element divAbue2 = cellArbol.getElement().getParentElement().getParentElement();
    divAbue2.getStyle().setPosition(Style.Position.ABSOLUTE);
    divAbue2.getStyle().setTop(0, Style.Unit.PX);
    divAbue2.getStyle().setLeft(0, Style.Unit.PX);
    divAbue2.getStyle().setBottom(0, Style.Unit.PX);
    divAbue2.getStyle().setRight(0, Style.Unit.PX);

    // Crea CellList de Documentos, sus resources, su Celda, su SelectionModel y su Listener.
    documentoSelectionModel = new SingleSelectionModel<Documento>();
    CellList.Resources cellListResources = GWT.create(ICellListResources.class);
    documentosCellList = new CellList<Documento>(new DocumentoCell(documentoSelectionModel), cellListResources);
    documentosCellList.setKeyboardSelectionPolicy(HasKeyboardSelectionPolicy.KeyboardSelectionPolicy.ENABLED);
    documentosCellList.setSelectionModel(documentoSelectionModel);
    documentosCellList.setPageSize(500);
    // listener
    documentoSelectionModel.addSelectionChangeHandler(new DocumentoSelectionHandler());
    // Style absolute
    documentosCellList.getElement().getStyle().setPosition(Style.Position.ABSOLUTE);
    documentosCellList.getElement().getStyle().setTop(0, Style.Unit.PX);
    documentosCellList.getElement().getStyle().setLeft(0, Style.Unit.PX);
    documentosCellList.getElement().getStyle().setBottom(0, Style.Unit.PX);
    documentosCellList.getElement().getStyle().setRight(0, Style.Unit.PX);
    // Agregarlo a su panel
    scrollPanelDocumentos.add(documentosCellList);

    /* Inyectarle style absolute al Abuelo para que funcione el scroll del cellList */
    Element divAbue = documentosCellList.getElement().getParentElement().getParentElement();
    divAbue.getStyle().setPosition(Style.Position.ABSOLUTE);
    divAbue.getStyle().setTop(0, Style.Unit.PX);
    divAbue.getStyle().setLeft(0, Style.Unit.PX);
    divAbue.getStyle().setBottom(0, Style.Unit.PX);
    divAbue.getStyle().setRight(0, Style.Unit.PX);

    // Listener de los Botones de Paneles
    btnArbol.addClickHandler(new BtnArbolClickHandler());
    btnDocumentos.addClickHandler(new BtnDocumentosClickHandler());
    btnVisor.addClickHandler(new BtnVisorClickHandler());

    // Arega etiquetas flotantes y sus listeners
    Label arbolLabel = new Label("Arbol");
    arbolLabel.setStyleName("jsfiddle_label");
    arbolLabel.addMouseOverHandler(new JSFiddlerMouseOver());
    arbolLabel.addMouseOutHandler(new JSFiddlerMouseOut());
    flowPanelArbol.add(arbolLabel);
    documentosLabel = new Label("Documentos");
    documentosLabel.setStyleName("jsfiddle_label");
    documentosLabel.addMouseOverHandler(new JSFiddlerMouseOver());
    documentosLabel.addMouseOutHandler(new JSFiddlerMouseOut());
    flowPanelDecoratorDocumentos.add(documentosLabel);
    Label visorLabel = new Label("Visor");
    visorLabel.setStyleName("jsfiddle_label");
    visorLabel.addMouseOverHandler(new JSFiddlerMouseOver());
    visorLabel.addMouseOutHandler(new JSFiddlerMouseOut());
    flowPanelDecoratorVisor.add(visorLabel);

    frameDocViewer.addLoadHandler(new FrameLoadHandler());

    reloadIcon = new Icon(IconType.ROTATE_RIGHT);
    reloadIcon.setSize(IconSize.LARGE);
    reloadIcon.setMuted(false);
    reloadIcon.setSpin(false);
    reloadIcon.getElement().getStyle().setPosition(Style.Position.ABSOLUTE);
    reloadIcon.getElement().getStyle().setTop(3, Style.Unit.PX);
    reloadIcon.getElement().getStyle().setLeft(3, Style.Unit.PX);
    reloadIcon.getElement().getStyle().setColor("gray");
    reloadIcon.getElement().getStyle().setCursor(Style.Cursor.POINTER);
    reloadIcon.addDomHandler(new ReloadGoogleDocMouseDownHandler(), MouseDownEvent.getType());
    //        flowPanelDecoratorVisor.add(reloadIcon);

    // NOTE Quitar documentos 
    btnDocumentos.setVisible(false);

}

From source file:com.akanoo.client.views.CanvasView.java

License:Apache License

/**
 * Update note labels of the given representation with the body of the
 * corresponding note/*  ww w.j  a v  a2  s  .c o m*/
 * 
 * @param representation
 */
private void updateNoteLabels(NoteRepresentation representation) {
    Note note = representation.note;

    // escape HTML chars
    SafeHtml bodyHtml = SafeHtmlUtils.fromString(note.getBody() != null ? note.getBody() : "");
    SafeHtml backBodyHtml = SafeHtmlUtils.fromString(note.getBackBody() != null ? note.getBackBody() : "");

    // replace urls with anchors
    bodyHtml = SafeHtmlUtils.fromTrustedString(replaceUrlsWithLinks(bodyHtml.asString()));
    backBodyHtml = SafeHtmlUtils.fromTrustedString(replaceUrlsWithLinks(backBodyHtml.asString()));

    // update labels
    representation.bodyLabel.setHTML(bodyHtml);
    representation.backBodyLabel.setHTML(backBodyHtml);
}

From source file:com.bearsoft.gwt.ui.menu.MenuItemCheckBox.java

protected SafeHtml generateHtml() {
    String ltext = text != null ? text : "";
    return MenuItemTemplates.INSTANCE
            .checkBox(html ? SafeHtmlUtils.fromTrustedString(ltext) : SafeHtmlUtils.fromString(ltext));
}

From source file:com.bearsoft.gwt.ui.menu.MenuItemImageText.java

protected void regenerate() {
    String ltext = text != null ? text : "";
    SafeHtml generated = MenuItemTemplates.INSTANCE.imageText(imageUri != null ? imageUri.asString() : "",
            html ? SafeHtmlUtils.fromTrustedString(ltext) : SafeHtmlUtils.fromString(ltext));
    getElement().setInnerSafeHtml(generated);
    leftMark = getElement().getFirstChildElement().getFirstChildElement();
    field = (Element) getElement().getFirstChildElement().getLastChild();
}

From source file:com.bearsoft.gwt.ui.menu.MenuItemRadioButton.java

@Override
protected SafeHtml generateHtml() {
    String ltext = text != null ? text : "";
    return MenuItemTemplates.INSTANCE
            .radioButton(html ? SafeHtmlUtils.fromTrustedString(ltext) : SafeHtmlUtils.fromString(ltext));
}

From source file:com.bearsoft.gwt.ui.widgets.grid.Grid.java

public Grid(ProvidesKey<T> aKeyProvider) {
    super();/* w  ww.j a v  a  2s . c o m*/
    getElement().getStyle().setPosition(Style.Position.RELATIVE);
    getElement().appendChild(tdsStyleElement);
    getElement().appendChild(cellsStyleElement);
    getElement().appendChild(oddRowsStyleElement);
    getElement().appendChild(evenRowsStyleElement);
    setRowsHeight(25);
    hive = new FlexTable();
    setWidget(hive);
    hive.setCellPadding(0);
    hive.setCellSpacing(0);
    hive.setBorderWidth(0);
    headerLeft = new GridSection<T>(aKeyProvider);
    headerLeftContainer = new ScrollPanel(headerLeft);
    headerRight = new GridSection<T>(aKeyProvider);
    headerRightContainer = new ScrollPanel(headerRight);
    frozenLeft = new GridSection<T>(aKeyProvider) {

        @Override
        protected void replaceAllChildren(List<T> values, SafeHtml html) {
            super.replaceAllChildren(values, html);
            footerLeft.redrawFooters();
        }

        @Override
        protected void replaceChildren(List<T> values, int start, SafeHtml html) {
            super.replaceChildren(values, start, html);
            footerLeft.redrawFooters();
        }

    };

    frozenLeftContainer = new ScrollPanel(frozenLeft);
    frozenRight = new GridSection<T>(aKeyProvider) {

        @Override
        protected void replaceAllChildren(List<T> values, SafeHtml html) {
            super.replaceAllChildren(values, html);
            footerRight.redrawFooters();
        }

        @Override
        protected void replaceChildren(List<T> values, int start, SafeHtml html) {
            super.replaceChildren(values, start, html);
            footerRight.redrawFooters();
        }

    };
    frozenRightContainer = new ScrollPanel(frozenRight);
    scrollableLeft = new GridSection<T>(aKeyProvider) {

        @Override
        protected void replaceAllChildren(List<T> values, SafeHtml html) {
            super.replaceAllChildren(values, html);
            footerLeft.redrawFooters();
        }

        @Override
        protected void replaceChildren(List<T> values, int start, SafeHtml html) {
            super.replaceChildren(values, start, html);
            footerLeft.redrawFooters();
        }

    };
    scrollableLeftContainer = new ScrollPanel(scrollableLeft);
    scrollableRight = new GridSection<T>(aKeyProvider) {

        @Override
        protected void replaceAllChildren(List<T> values, SafeHtml html) {
            super.replaceAllChildren(values, html);
            footerRight.redrawFooters();
        }

        @Override
        protected void replaceChildren(List<T> values, int start, SafeHtml html) {
            super.replaceChildren(values, start, html);
            footerRight.redrawFooters();
        }
    };
    scrollableRightContainer = new ScrollPanel(scrollableRight);
    footerLeft = new GridSection<>(aKeyProvider);
    footerLeftContainer = new ScrollPanel(footerLeft);
    footerRight = new GridSection<>(aKeyProvider);
    footerRightContainer = new ScrollPanel(footerRight);
    // positioning context / overflow setup
    // overflow
    for (Widget w : new Widget[] { headerLeftContainer, headerRightContainer, frozenLeftContainer,
            frozenRightContainer, scrollableLeftContainer, footerLeftContainer, footerRightContainer }) {
        w.getElement().getStyle().setOverflow(Style.Overflow.HIDDEN);
    }
    // scrollableRightContainer.getElement().getStyle().setOverflow(Style.Overflow.AUTO);
    // default value
    // context
    for (Widget w : new Widget[] { headerLeftContainer, headerRightContainer, frozenLeftContainer,
            frozenRightContainer, scrollableLeftContainer, scrollableRightContainer, footerLeftContainer,
            footerRightContainer }) {
        w.getElement().getFirstChildElement().getStyle().setPosition(Style.Position.ABSOLUTE);
    }
    // propagation of some widths
    headerLeft.setWidthPropagator(new GridWidthPropagator<T>(headerLeft) {

        @Override
        public void changed() {
            super.changed();
            propagateHeaderWidth();
        }

    });
    for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerRight, frozenLeft,
            frozenRight, scrollableLeft, scrollableRight, footerLeft, footerRight }) {
        section.setWidthPropagator(new GridWidthPropagator<>(section));
    }
    headerLeft.setColumnsPartners(new AbstractCellTable[] { frozenLeft, scrollableLeft, footerLeft });
    headerRight.setColumnsPartners(new AbstractCellTable[] { frozenRight, scrollableRight, footerRight });
    ColumnsRemover leftColumnsRemover = new ColumnsRemoverAdapter<T>(headerLeft, frozenLeft, scrollableLeft,
            footerLeft);
    ColumnsRemover rightColumnsRemover = new ColumnsRemoverAdapter<T>(headerRight, frozenRight, scrollableRight,
            footerRight);
    for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerLeft, frozenLeft,
            scrollableLeft, footerLeft }) {
        section.setColumnsRemover(leftColumnsRemover);
    }
    for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerRight, frozenRight,
            scrollableRight, footerRight }) {
        section.setColumnsRemover(rightColumnsRemover);
    }
    for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { frozenLeft, scrollableLeft,
            footerLeft }) {
        section.setHeaderSource(headerLeft);
    }
    for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { frozenRight, scrollableRight,
            footerRight }) {
        section.setHeaderSource(headerRight);
    }
    for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerLeft, frozenLeft,
            scrollableLeft }) {
        section.setFooterSource(footerLeft);
    }
    for (GridSection<T> section : (GridSection<T>[]) new GridSection<?>[] { headerRight, frozenRight,
            scrollableRight }) {
        section.setFooterSource(footerRight);
    }

    // hive organization
    hive.setWidget(0, 0, headerLeftContainer);
    hive.setWidget(0, 1, headerRightContainer);
    hive.setWidget(1, 0, frozenLeftContainer);
    hive.setWidget(1, 1, frozenRightContainer);
    hive.setWidget(2, 0, scrollableLeftContainer);
    hive.setWidget(2, 1, scrollableRightContainer);
    hive.setWidget(3, 0, footerLeftContainer);
    hive.setWidget(3, 1, footerRightContainer);

    for (Widget w : new Widget[] { headerLeftContainer, headerRightContainer, frozenLeftContainer,
            frozenRightContainer, scrollableLeftContainer, scrollableRightContainer, footerLeftContainer,
            footerRightContainer }) {
        w.setWidth("100%");
        w.setHeight("100%");
    }
    // misc
    for (Widget w : new Widget[] { headerRightContainer, frozenRightContainer, footerRightContainer,
            scrollableLeftContainer }) {
        w.getElement().getParentElement().getStyle().setOverflow(Style.Overflow.HIDDEN);
    }
    hive.getElement().getStyle().setTableLayout(Style.TableLayout.FIXED);
    hive.getElement().getStyle().setPosition(Style.Position.RELATIVE);
    for (CellTable<?> tbl : new CellTable<?>[] { headerLeft, headerRight, frozenLeft, frozenRight,
            scrollableLeft, scrollableRight, footerLeft, footerRight }) {
        tbl.setTableLayoutFixed(true);
    }
    // header
    headerLeft.setHeaderBuilder(new ThemedHeaderOrFooterBuilder<T>(headerLeft, false, this));
    headerLeft.setFooterBuilder(new NullHeaderOrFooterBuilder<T>(headerLeft, true));
    headerRight.setHeaderBuilder(new ThemedHeaderOrFooterBuilder<T>(headerRight, false, this));
    headerRight.setFooterBuilder(new NullHeaderOrFooterBuilder<T>(headerRight, true));
    // footer
    footerLeft.setHeaderBuilder(new NullHeaderOrFooterBuilder<T>(footerLeft, false));
    footerLeft.setFooterBuilder(new ThemedHeaderOrFooterBuilder<T>(footerLeft, true));
    footerRight.setHeaderBuilder(new NullHeaderOrFooterBuilder<T>(footerRight, false));
    footerRight.setFooterBuilder(new ThemedHeaderOrFooterBuilder<T>(footerRight, true));
    // data bodies
    for (GridSection<?> section : new GridSection<?>[] { frozenLeft, frozenRight, scrollableLeft,
            scrollableRight }) {
        GridSection<T> gSection = (GridSection<T>) section;
        gSection.setHeaderBuilder(new NullHeaderOrFooterBuilder<T>(gSection, false));
        gSection.setFooterBuilder(new NullHeaderOrFooterBuilder<T>(gSection, true));
    }
    for (GridSection<?> section : new GridSection<?>[] { headerLeft, headerRight, frozenLeft, frozenRight,
            scrollableLeft, scrollableRight, footerLeft, footerRight }) {
        section.setAutoHeaderRefreshDisabled(true);
    }
    for (GridSection<?> section : new GridSection<?>[] { headerLeft, headerRight, footerLeft, footerRight }) {
        section.setAutoFooterRefreshDisabled(true);
    }
    // cells
    installCellBuilders();

    scrollableRightContainer.addScrollHandler(new ScrollHandler() {

        @Override
        public void onScroll(ScrollEvent event) {
            int aimTop = scrollableRightContainer.getElement().getScrollTop();
            int aimLeft = scrollableRightContainer.getElement().getScrollLeft();

            scrollableLeftContainer.getElement().setScrollTop(aimTop);
            int factTopDelta = aimTop - scrollableLeftContainer.getElement().getScrollTop();
            if (factTopDelta > 0) {
                scrollableLeftContainer.getElement().getStyle().setBottom(factTopDelta, Style.Unit.PX);
            } else {
                scrollableLeftContainer.getElement().getStyle().clearBottom();
            }
            headerRightContainer.getElement().setScrollLeft(aimLeft);
            int factLeftDelta0 = aimLeft - headerRightContainer.getElement().getScrollLeft();
            if (factLeftDelta0 > 0) {
                headerRightContainer.getElement().getStyle().setRight(factLeftDelta0, Style.Unit.PX);
            } else {
                headerRightContainer.getElement().getStyle().clearRight();
            }
            frozenRightContainer.getElement().setScrollLeft(aimLeft);
            int factLeftDelta1 = aimLeft - frozenRightContainer.getElement().getScrollLeft();
            if (factLeftDelta1 > 0) {
                frozenRightContainer.getElement().getStyle().setRight(factLeftDelta1, Style.Unit.PX);
            } else {
                frozenRightContainer.getElement().getStyle().clearRight();
            }
            footerRightContainer.getElement()
                    .setScrollLeft(scrollableRightContainer.getElement().getScrollLeft());
            int factLeftDelta2 = aimLeft - footerRightContainer.getElement().getScrollLeft();
            if (factLeftDelta2 > 0) {
                footerRightContainer.getElement().getStyle().setRight(factLeftDelta2, Style.Unit.PX);
            } else {
                footerRightContainer.getElement().getStyle().clearRight();
            }
        }

    });
    ghostLine = Document.get().createDivElement();
    ghostLine.addClassName(RULER_STYLE);
    ghostLine.getStyle().setPosition(Style.Position.ABSOLUTE);
    ghostLine.getStyle().setTop(0, Style.Unit.PX);
    ghostColumn = Document.get().createDivElement();
    ghostColumn.addClassName(COLUMN_PHANTOM_STYLE);
    ghostColumn.getStyle().setPosition(Style.Position.ABSOLUTE);
    ghostColumn.getStyle().setTop(0, Style.Unit.PX);
    addDomHandler(new DragEnterHandler() {

        @Override
        public void onDragEnter(DragEnterEvent event) {
            if (DraggedColumn.instance != null) {
                if (DraggedColumn.instance.isMove()) {
                    event.preventDefault();
                    event.stopPropagation();
                    DraggedColumn<T> target = findTargetDraggedColumn(event.getNativeEvent().getEventTarget());
                    if (target != null) {
                        showColumnMoveDecorations(target);
                        event.getDataTransfer().<XDataTransfer>cast().setDropEffect("move");
                    } else {
                        event.getDataTransfer().<XDataTransfer>cast().setDropEffect("none");
                    }
                } else {
                }
            } else {
                event.getDataTransfer().<XDataTransfer>cast().setDropEffect("none");
            }
        }
    }, DragEnterEvent.getType());
    addDomHandler(new DragHandler() {

        @Override
        public void onDrag(DragEvent event) {
            if (DraggedColumn.instance != null && DraggedColumn.instance.isResize()) {
                event.stopPropagation();
                /*
                int newWidth = event.getNativeEvent().getClientX() - DraggedColumn.instance.getCellElement().getAbsoluteLeft();
                if (newWidth > MINIMUM_COLUMN_WIDTH) {
                   event.getDataTransfer().<XDataTransfer> cast().setDropEffect("move");
                } else {
                   event.getDataTransfer().<XDataTransfer> cast().setDropEffect("none");
                }
                */
            }
        }
    }, DragEvent.getType());
    addDomHandler(new DragOverHandler() {

        @Override
        public void onDragOver(DragOverEvent event) {
            if (DraggedColumn.instance != null) {
                event.preventDefault();
                event.stopPropagation();
                if (DraggedColumn.instance.isMove()) {
                    DraggedColumn<T> target = findTargetDraggedColumn(event.getNativeEvent().getEventTarget());
                    if (target != null) {
                        event.getDataTransfer().<XDataTransfer>cast().setDropEffect("move");
                    } else {
                        hideColumnDecorations();
                        event.getDataTransfer().<XDataTransfer>cast().setDropEffect("none");
                    }
                } else {
                    Element hostElement = Grid.this.getElement();
                    int clientX = event.getNativeEvent().getClientX();
                    int hostAbsX = hostElement.getAbsoluteLeft();
                    int hostScrollX = hostElement.getScrollLeft();
                    int docScrollX = hostElement.getOwnerDocument().getScrollLeft();
                    int relativeX = clientX - hostAbsX + hostScrollX + docScrollX;
                    ghostLine.getStyle().setLeft(relativeX, Style.Unit.PX);
                    ghostLine.getStyle().setHeight(hostElement.getClientHeight(), Style.Unit.PX);
                    if (ghostLine.getParentElement() != hostElement) {
                        hostElement.appendChild(ghostLine);
                    }
                }
            }
        }
    }, DragOverEvent.getType());
    addDomHandler(new DragLeaveHandler() {

        @Override
        public void onDragLeave(DragLeaveEvent event) {
            if (DraggedColumn.instance != null) {
                event.stopPropagation();
                if (DraggedColumn.instance.isMove()) {
                    if (event.getNativeEvent().getEventTarget() == (JavaScriptObject) Grid.this.getElement()) {
                        hideColumnDecorations();
                    }
                }
            }
        }
    }, DragLeaveEvent.getType());
    addDomHandler(new DragEndHandler() {

        @Override
        public void onDragEnd(DragEndEvent event) {
            event.stopPropagation();
            hideColumnDecorations();
            DraggedColumn.instance = null;
        }
    }, DragEndEvent.getType());
    addDomHandler(new DropHandler() {

        @Override
        public void onDrop(DropEvent event) {
            DraggedColumn<?> source = DraggedColumn.instance;
            DraggedColumn<T> target = targetDraggedColumn;
            hideColumnDecorations();
            DraggedColumn.instance = null;
            if (source != null) {
                event.preventDefault();
                event.stopPropagation();
                if (source.isMove()) {
                    AbstractCellTable<T> sourceSection = (AbstractCellTable<T>) source.getTable();
                    // target table may be any section in our grid
                    if (target != null) {
                        Header<?> sourceHeader = source.getHeader();
                        Header<?> targetHeader = target.getHeader();
                        if (sourceHeader instanceof DraggableHeader<?>
                                && targetHeader instanceof DraggableHeader<?>) {
                            DraggableHeader<T> sourceDH = (DraggableHeader<T>) sourceHeader;
                            DraggableHeader<T> targetDH = (DraggableHeader<T>) targetHeader;
                            moveColumnNode(sourceDH.getHeaderNode(), targetDH.getHeaderNode());
                        } else {
                            int sourceIndex = source.getColumnIndex();
                            int targetIndex = target.getColumnIndex();
                            GridSection<T> targetSection = (GridSection<T>) target.getTable();

                            boolean isSourceLeft = sourceSection == headerLeft || sourceSection == frozenLeft
                                    || sourceSection == scrollableLeft || sourceSection == footerLeft;
                            boolean isTargetLeft = targetSection == headerLeft || targetSection == frozenLeft
                                    || targetSection == scrollableLeft || targetSection == footerLeft;
                            sourceSection = isSourceLeft ? headerLeft : headerRight;
                            targetSection = isTargetLeft ? headerLeft : headerRight;
                            int generalSourceIndex = isSourceLeft ? sourceIndex : sourceIndex + frozenColumns;
                            int generalTargetIndex = isTargetLeft ? targetIndex : targetIndex + frozenColumns;
                            Header<?> header = sourceSection.getHeader(sourceIndex);
                            if (header instanceof DraggableHeader) {
                                ((DraggableHeader) header).setTable(targetSection);
                            }
                            if (generalSourceIndex != generalTargetIndex) {
                                Column<T, ?> column = (Column<T, ?>) source.getColumn();
                                if (!(header instanceof DraggableHeader)
                                        || ((DraggableHeader) header).isMoveable()) {
                                    moveColumn(generalSourceIndex, generalTargetIndex);
                                }
                            }
                        }
                    }
                } else {
                    Header<?> header = source.getHeader();
                    if (!(header instanceof DraggableHeader) || ((DraggableHeader) header).isResizable()) {
                        int newWidth = Math.max(
                                event.getNativeEvent().getClientX() - source.getCellElement().getAbsoluteLeft(),
                                MINIMUM_COLUMN_WIDTH);
                        // Source and target tables are the same, so we can
                        // cast to DraggedColumn<T> with no care
                        setColumnWidthFromHeaderDrag(((DraggedColumn<T>) source).getColumn(), newWidth,
                                Style.Unit.PX);
                    }
                }
            }
        }
    }, DropEvent.getType());

    columnsChevron.getElement().getStyle().setPosition(Style.Position.ABSOLUTE);
    columnsChevron.getElement().addClassName(COLUMNS_CHEVRON_STYLE);
    getElement().appendChild(columnsChevron.getElement());
    columnsChevron.addDomHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            PopupPanel pp = new PopupPanel();
            pp.setAutoHideEnabled(true);
            pp.setAutoHideOnHistoryEventsEnabled(true);
            pp.setAnimationEnabled(true);
            MenuBar columnsMenu = new MenuBar(true);
            fillColumns(columnsMenu, headerLeft);
            fillColumns(columnsMenu, headerRight);
            pp.setWidget(columnsMenu);
            pp.setPopupPosition(columnsChevron.getAbsoluteLeft(), columnsChevron.getAbsoluteTop());
            pp.showRelativeTo(columnsChevron);
        }

        private void fillColumns(MenuBar aTarget, final GridSection<T> aSection) {
            for (int i = 0; i < aSection.getColumnCount(); i++) {
                Header<?> h = aSection.getHeader(i);
                final Column<T, ?> column = aSection.getColumn(i);
                SafeHtml rendered;
                if (h.getValue() instanceof String) {
                    String hVal = (String) h.getValue();
                    rendered = hVal.startsWith("<html>") ? SafeHtmlUtils.fromTrustedString(hVal.substring(6))
                            : SafeHtmlUtils.fromString(hVal);
                } else {
                    Cell.Context context = new Cell.Context(0, i, h.getKey());
                    SafeHtmlBuilder sb = new SafeHtmlBuilder();
                    h.render(context, sb);
                    rendered = sb.toSafeHtml();
                }
                MenuItemCheckBox miCheck = new MenuItemCheckBox(!aSection.isColumnHidden(column),
                        rendered.asString(), true);
                miCheck.addValueChangeHandler(new ValueChangeHandler<Boolean>() {

                    @Override
                    public void onValueChange(ValueChangeEvent<Boolean> event) {
                        if (Boolean.TRUE.equals(event.getValue())) {
                            showColumn(column);
                        } else {
                            hideColumn(column);
                        }
                        Grid.this.onResize();
                    }

                });
                aTarget.addItem(miCheck);
            }
        }

    }, ClickEvent.getType());

    ColumnSortEvent.Handler sectionSortHandler = new ColumnSortEvent.Handler() {

        @Override
        public void onColumnSort(ColumnSortEvent event) {
            boolean isCtrlKey = ((GridSection<?>) event.getSource()).isCtrlKey();
            boolean contains = false;
            int containsAt = -1;
            for (int i = 0; i < sortList.size(); i++) {
                if (sortList.get(i).getColumn() == event.getColumn()) {
                    contains = true;
                    containsAt = i;
                    break;
                }
            }
            if (!contains) {
                if (!isCtrlKey) {
                    sortList.clear();
                }
                sortList.insert(sortList.size(), new ColumnSortList.ColumnSortInfo(event.getColumn(), true));
            } else {
                boolean wasAscending = sortList.get(containsAt).isAscending();
                if (!isCtrlKey) {
                    sortList.clear();
                    if (wasAscending) {
                        sortList.push(new ColumnSortList.ColumnSortInfo(event.getColumn(), false));
                    }
                } else {
                    sortList.remove(sortList.get(containsAt));
                    if (wasAscending) {
                        sortList.insert(containsAt,
                                new ColumnSortList.ColumnSortInfo(event.getColumn(), false));
                    }
                }
            }
            ColumnSortEvent.fire(Grid.this, sortList);
        }
    };
    headerLeft.getColumnSortList().setLimit(1);
    headerLeft.addColumnSortHandler(sectionSortHandler);
    headerRight.getColumnSortList().setLimit(1);
    headerRight.addColumnSortHandler(sectionSortHandler);
    gridColor = PublishedColor.create(211, 211, 211, 255);
    regenerateDynamicTDStyles();
    regenerateDynamicOddRowsStyles();
    getElement().<XElement>cast().addResizingTransitionEnd(this);
}