List of usage examples for com.google.gwt.safehtml.shared SafeHtmlBuilder appendHtmlConstant
public SafeHtmlBuilder appendHtmlConstant(String html)
From source file:cimav.client.view.nomina.NomDateInputCell.java
@Override public void render(Cell.Context context, String value, SafeHtmlBuilder sb) { // Get the view data. Object key = context.getKey(); TextInputCell.ViewData viewData = this.getViewData(key); if (viewData != null && viewData.getCurrentValue().equals(value)) { clearViewData(key);/*from ww w .jav a 2s . c o m*/ viewData = null; } // boolean isEditing = this.isEditing(context, null, value); String v = (viewData != null) ? viewData.getCurrentValue() : value; if (v == null) // || isEditing) { sb.appendHtmlConstant("<input type=\"text\" tabindex=\"-1\"></input>"); } else { // this is where we set value, size, style sb.append(template.input(v, "1980-01-01", "width: 100%; text-align: inherit; margin: 0px; height: 22px !important; font-size:11px;")); } }
From source file:cimav.client.view.nomina.NomIconInputCell.java
@Override public void render(Cell.Context context, String value, SafeHtmlBuilder sb) { // Get the view data. Object key = context.getKey(); TextInputCell.ViewData viewData = this.getViewData(key); if (viewData != null && viewData.getCurrentValue().equals(value)) { clearViewData(key);/*from w w w . j av a 2 s . c o m*/ viewData = null; } // boolean isEditing = this.isEditing(context, null, value); String v = (viewData != null) ? viewData.getCurrentValue() : value; if (v == null) // || isEditing) { sb.appendHtmlConstant("<input type='text' tabindex='-1'></input>"); } else { if (SALDO == tipo) { sb.append(templateSaldo.input(v)); } else if (FALTA == tipo) { sb.append(templateFalta.input(v)); } else if (HORA_EXTRA == tipo) { sb.append(templateHoraExtra.input(v)); } } }
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// w ww . j a v a2 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.NominaMovimientosUI.java
private void initTableColumns() { // Concepto//from w ww . j a v a 2 s. c o m Column<Movimiento, SafeHtml> conceptoCol = new Column<Movimiento, SafeHtml>(new SafeHtmlCell()) { @Override public SafeHtml getValue(Movimiento object) { SafeHtmlBuilder a = new SafeHtmlBuilder(); 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(conceptoCol, "Concepto"); dataGrid.setColumnWidth(conceptoCol, 80, Style.Unit.PCT); // Cantidad Column<Movimiento, SafeHtml> cantidadCol = new Column<Movimiento, SafeHtml>(new SafeHtmlCell()) { @Override public SafeHtml getValue(Movimiento object) { String result = Utils.formatCantidad(object.getCantidad()); SafeHtmlBuilder a = new SafeHtmlBuilder(); if (object.getConcepto().getSuma()) { a.appendHtmlConstant("<span style='padding-right: 5px;'>" + result + "</span>"); } else { a.appendHtmlConstant("<span style='padding-right: 5px; color: grey; font-style: italic;'>" + result + "</span>"); } return a.toSafeHtml(); } }; cantidadCol.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT); SafeHtmlHeader headerCantidad = new SafeHtmlHeader(new SafeHtml() { @Override public String asString() { return "<p style='text-align:center; margin-bottom: 0px;'>Cantidad</p>"; } }); if (ETipoConcepto.PERCEPCION.equals(this.tipoConcepto) || ETipoConcepto.DEDUCCION.equals(this.tipoConcepto)) { SafeHtmlHeader footerCantidad = new SafeHtmlHeader(new SafeHtml() { @Override public String asString() { String result = "0.00"; List<Movimiento> items = dataGrid.getVisibleItems(); if (!items.isEmpty()) { // create MathContext object with 2 precision BigDecimal totalPercepciones = BigDecimal.ZERO; for (Movimiento nomQuin : items) { if (nomQuin.getConcepto().getSuma()) { // si el concepto suma (ej. Despensa no suma) totalPercepciones = totalPercepciones.add(nomQuin.getCantidad()); } } result = Utils.formatCurrency(totalPercepciones); } return "<p style=\"text-align:right;\">" + result.trim() + "</p>"; } }); dataGrid.addColumn(cantidadCol, headerCantidad, footerCantidad); } else { dataGrid.addColumn(cantidadCol, headerCantidad); } dataGrid.setColumnWidth(cantidadCol, 20, Style.Unit.PCT); }
From source file:cimav.client.view.nomina.NominaRepercucionesUI.java
private void initTableColumns() { // Concepto/*from w ww . j a va 2s . c o m*/ Column<Movimiento, SafeHtml> conceptoCol = new Column<Movimiento, SafeHtml>(new SafeHtmlCell()) { @Override public SafeHtml getValue(Movimiento object) { SafeHtmlBuilder a = new SafeHtmlBuilder(); 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(conceptoCol, "Concepto"); dataGrid.setColumnWidth(conceptoCol, 80, Style.Unit.PCT); // Cantidad Column<Movimiento, SafeHtml> cantidadCol = new Column<Movimiento, SafeHtml>(new SafeHtmlCell()) { @Override public SafeHtml getValue(Movimiento object) { String result = Utils.formatCantidad(object.getCantidad()); SafeHtmlBuilder a = new SafeHtmlBuilder(); if (object.getConcepto().getSuma()) { a.appendHtmlConstant("<span style='padding-right: 5px;'>" + result + "</span>"); } else { a.appendHtmlConstant("<span style='padding-right: 5px; color: grey; font-style: italic;'>" + result + "</span>"); } return a.toSafeHtml(); } }; cantidadCol.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT); SafeHtmlHeader headerCantidad = new SafeHtmlHeader(new SafeHtml() { @Override public String asString() { return "<p style='text-align:center; margin-bottom: 0px;'>Empleado</p>"; } }); dataGrid.addColumn(cantidadCol, headerCantidad); dataGrid.setColumnWidth(cantidadCol, 20, Style.Unit.PCT); // Cantidad_empresa Column<Movimiento, SafeHtml> cantidadEmpresaCol = new Column<Movimiento, SafeHtml>(new SafeHtmlCell()) { @Override public SafeHtml getValue(Movimiento object) { String result = Utils.formatCantidad(object.getCantidadEmpresa()); SafeHtmlBuilder a = new SafeHtmlBuilder(); a.appendHtmlConstant("<span style='padding-right: 5px;'>" + result + "</span>"); return a.toSafeHtml(); } }; cantidadEmpresaCol.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT); SafeHtmlHeader headerCantidadEmpresa = new SafeHtmlHeader(new SafeHtml() { @Override public String asString() { return "<p style='text-align:center; margin-bottom: 0px;'>Empresa</p>"; } }); dataGrid.addColumn(cantidadEmpresaCol, headerCantidadEmpresa); dataGrid.setColumnWidth(cantidadEmpresaCol, 20, Style.Unit.PCT); }
From source file:cimav.client.view.nomina.NominaSaldoUI.java
/** * Add the columns to the table.// w w w . ja va 2 s . 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.client.view.nomina.NomIntegerInputCell.java
@Override public void render(Cell.Context context, String value, SafeHtmlBuilder sb) { // Get the view data. Object key = context.getKey(); TextInputCell.ViewData viewData = this.getViewData(key); if (viewData != null && viewData.getCurrentValue().equals(value)) { clearViewData(key);/* w w w . java 2 s. c o m*/ viewData = null; } // boolean isEditing = this.isEditing(context, null, value); String s = (viewData != null) ? viewData.getCurrentValue() : value; if (s == null) // || isEditing) { sb.appendHtmlConstant("<input type=\"text\" tabindex=\"-1\"></input>"); } else { // this is where we set value, size, style sb.append(template.input(s, this.max)); } }
From source file:cimav.client.view.nomina.NomTextInputCell.java
@Override public void render(Cell.Context context, String value, SafeHtmlBuilder sb) { // Get the view data. Object key = context.getKey(); TextInputCell.ViewData viewData = this.getViewData(key); if (viewData != null && viewData.getCurrentValue().equals(value)) { clearViewData(key);/* w ww .jav a2s.com*/ viewData = null; } // boolean isEditing = this.isEditing(context, null, value); String v = (viewData != null) ? viewData.getCurrentValue() : value; if (v == null) // || isEditing) { sb.appendHtmlConstant("<input type'text' tabindex='-1'></input>"); } else { // this is where we set value, size, style sb.append(template.input(v, "width: 130px; text-align: inherit; margin: 0px; height: 22px !important; font-size:11px;")); } }
From source file:com.akanoo.client.views.SharingPopupView.java
License:Apache License
private void setupCellList(CellList.Resources cellListResources) { selectionModel = new MultiSelectionModel<UserInfo>(UserInfo.keyprovider); // Construct a composite cell for contacts that includes a checkbox. List<HasCell<UserInfo, ?>> hasCells = new ArrayList<HasCell<UserInfo, ?>>(); hasCells.add(new HasCell<UserInfo, Boolean>() { private CheckboxCell cell = new CheckboxCell(true, false); public Cell<Boolean> getCell() { return cell; }/*from www. j av a 2s.c om*/ public FieldUpdater<UserInfo, Boolean> getFieldUpdater() { return null; } public Boolean getValue(UserInfo object) { return selectionModel.isSelected(object); } }); hasCells.add(new HasCell<UserInfo, UserInfo>() { private UserCell cell = new UserCell(); public Cell<UserInfo> getCell() { return cell; } public FieldUpdater<UserInfo, UserInfo> getFieldUpdater() { return null; } public UserInfo getValue(UserInfo object) { return object; } }); CompositeCell<UserInfo> friendCell = new CompositeCell<UserInfo>(hasCells) { @Override public void render(Context context, UserInfo value, SafeHtmlBuilder sb) { sb.appendHtmlConstant("<table><tbody><tr>"); super.render(context, value, sb); sb.appendHtmlConstant("</tr></tbody></table>"); } @Override protected Element getContainerElement(Element parent) { // Return the first TR element in the table. return parent.getFirstChildElement().getFirstChildElement().getFirstChildElement(); } @Override protected <X> void render(Context context, UserInfo value, SafeHtmlBuilder sb, HasCell<UserInfo, X> hasCell) { Cell<X> cell = hasCell.getCell(); sb.appendHtmlConstant("<td>"); cell.render(context, hasCell.getValue(value), sb); sb.appendHtmlConstant("</td>"); } }; shares = new CellList<UserInfo>(friendCell, cellListResources, UserInfo.keyprovider); shares.setSelectionModel(selectionModel, DefaultSelectionEventManager.<UserInfo>createCheckboxManager()); dataProvider = new ListDataProvider<UserInfo>(UserInfo.keyprovider); dataProvider.addDataDisplay(shares); selectionModel.addSelectionChangeHandler(this); }
From source file:com.anritsu.mcrepositorymanager.client.FilterDBForm.java
public void buildPackageListTable(final CellTable table) { table.setPageSize(200);/*from w w w. java 2s . c om*/ // Attach column sort handler ListHandler<McPackage> sortHandler = new ListHandler<McPackage>(dataProvider.getList()); table.addColumnSortHandler(sortHandler); Column<McPackage, String> packageNameColumn = new Column<McPackage, String>( new ButtonCell(ButtonType.LINK)) { @Override public String getValue(McPackage object) { return object.getName(); } }; packageNameColumn.setFieldUpdater(new FieldUpdater<McPackage, String>() { @Override public void update(int index, McPackage object, String value) { Set<String> dependencies = new HashSet(); for (McPackage p : object.getDependencies()) { dependencies.add(p.getName() + "-" + p.getPackageVersion()); } Set<String> dependencyFor = new HashSet<>(); for (McPackage p : object.getDependencyFor()) { dependencyFor.add(p.getName() + "-" + p.getPackageVersion()); } Notify.notify("Dependencies: " + Arrays.toString(dependencies.toArray()) + "\nDependency for: " + Arrays.toString(dependencyFor.toArray())); } }); packageNameColumn.setSortable(true); packageNameColumn.setDefaultSortAscending(true); sortHandler.setComparator(packageNameColumn, new Comparator<McPackage>() { @Override public int compare(McPackage t1, McPackage t2) { return t1.getName().compareTo(t2.getName()); } }); Column<McPackage, String> packageVersionColumn = new Column<McPackage, String>( new ButtonCell(ButtonType.LINK)) { @Override public String getValue(McPackage object) { return object.getPackageVersion(); } }; packageVersionColumn.setFieldUpdater(new FieldUpdater<McPackage, String>() { @Override public void update(int index, McPackage object, String value) { HTML html = new HTML(); SafeHtmlBuilder sHtmlBuilder = new SafeHtmlBuilder(); for (String stringLink : object.getDownloadLinks()) { sHtmlBuilder.appendHtmlConstant("<a href='" + stringLink + "'>"); sHtmlBuilder.appendEscaped(stringLink); sHtmlBuilder.appendHtmlConstant("</a><br />"); } html.setHTML(sHtmlBuilder.toSafeHtml()); downloadLinkModalBody.clear(); downloadLinkModalBody.add(html); downloadLinkModal.show(); } }); Column<McPackage, String> packageQ7admOutputVersionColumn = new Column<McPackage, String>( new ButtonCell(ButtonType.LINK)) { @Override public String getValue(McPackage object) { return object.getQ7admOutputVersion(); } }; TextColumn<McPackage> packageAvailabilityColumn = new TextColumn<McPackage>() { @Override public String getValue(McPackage pack) { return pack.getAvailability(); } }; TextColumn<McPackage> packageReleaseDateColumn = new TextColumn<McPackage>() { @Override public String getValue(McPackage pack) { StringBuilder dateFormated = new StringBuilder(); if (pack.getReleaseDate() != null) { String[] releaseDateArray = pack.getReleaseDate().toString().split(" "); dateFormated .append(releaseDateArray[2] + "-" + releaseDateArray[1] + "-" + releaseDateArray[5]); return dateFormated.toString(); } return ""; } }; Column<McPackage, String> selectedForDownloadColumn = new Column<McPackage, String>(new ButtonCell()) { @Override public String getValue(McPackage object) { ((ButtonCell) this.getCell()).setEnabled(false); if (object.getDownloadLinks().isEmpty()) { return "Missing from DB"; } if (object.isMatchFilter()) { ((ButtonCell) this.getCell()).setEnabled(true); } if (object.isDependency()) { ((ButtonCell) this.getCell()).setEnabled(false); } return (object.isAddToRepository()) ? "remove from repository" : "add to repository"; } }; selectedForDownloadColumn.setFieldUpdater(new FieldUpdater<McPackage, String>() { @Override public void update(int index, McPackage object, String value) { downloadRepositoryArchive.setVisible(false); downloadRepositoryArchive.setActive(false); repositoryDownloadLink.setVisible(false); repositoryDownloadLink.setActive(false); object.setAddToRepository(!object.isAddToRepository()); // Dealing with dependencies HashSet<McPackage> pList = new HashSet<>(); for (McPackage p : dataProvider.getList()) { if (p.isAddToRepository() && p.isMatchFilter()) { p.setDependencySolved(false); pList.add(p); } } getService().solveDependencies(pList, solveDependenciesCallback); Notify.notify("Package " + object.getName() + " " + value + " : " + object.isAddToRepository()); } }); table.addColumn(packageNameColumn, "Package Name"); table.addColumn(packageQ7admOutputVersionColumn, "Installed version"); table.addColumn(packageVersionColumn, "Package Version"); table.addColumn(packageAvailabilityColumn, "Availability"); table.addColumn(packageReleaseDateColumn, "Release Date"); table.addColumn(selectedForDownloadColumn, "Add to repository"); }