List of usage examples for com.google.gwt.safehtml.shared SafeHtmlBuilder append
public SafeHtmlBuilder append(SafeHtml html)
From source file:org.geomajas.quickstart.mobile.client.view.cellist.FeatureInfoList.java
License:Open Source License
@Override public void render(SafeHtmlBuilder safeHtmlBuilder, final T model) { final MCheckBox mCheckBox1 = new MCheckBox(); // mCheckBox1.setText("again"); mCheckBox1.setImportant(true);/*ww w . j ava2s . c om*/ safeHtmlBuilder.append(template.content(getDisplayString(model))); }
From source file:org.glom.web.client.ui.cell.NumericCell.java
License:Open Source License
@Override public void render(final Context context, final Double value, final SafeHtmlBuilder sb) { if (value == null) { // The value is from an empty row. sb.appendHtmlConstant(" "); return;//from ww w. j a v a 2 s . com } // set the foreground color to red if the number is negative and this is requested if (useAltColorForNegatives && value.doubleValue() < 0) { // The default alternative color in libglom is red. colorCSSProp = SafeHtmlUtils.fromString("color: #FF0000;"); } // Convert the number to a string and set some CSS properties on the text. // The overflow and text-overflow properties tell the browser to add an ellipsis when the text overflows the // table cell. // FIXME this isn't using safe html correctly! sb.appendHtmlConstant("<div style=\"overflow: hidden; text-overflow: ellipsis; " + colorCSSProp.asString() + backgroundColorCSSProp.asString() + "\">"); sb.append(SafeHtmlUtils.fromString(currencyCode + numberFormat.format(value))); sb.appendHtmlConstant("</div>"); }
From source file:org.glom.web.client.ui.cell.TextCell.java
License:Open Source License
@Override public void render(final Context context, final String value, final SafeHtmlBuilder sb) { if (value == null) { // The value is from an empty row. sb.appendHtmlConstant(" "); return;//from w ww . j a va 2 s .c om } // Set the text and some CSS properties for the text. // The overflow and text-overflow properties tell the browser to add an ellipsis when the text overflows the // table cell. // FIXME this isn't using safe html correctly! sb.appendHtmlConstant("<div style=\"overflow: hidden; text-overflow: ellipsis; " + colorCSSProp.asString() + backgroundColorCSSProp.asString() + "\">"); sb.append(SafeHtmlUtils.fromString(value)); sb.appendHtmlConstant("</div>"); }
From source file:org.glom.web.client.ui.details.DetailsCell.java
License:Open Source License
public void setData(final DataItem dataItem) { detailsData.clear();/*w w w .ja va 2 s. c om*/ if (dataItem == null) { return; } Formatting formatting = layoutItem.getFormatting(); // FIXME use the cell renderers from the list view to render the information here switch (this.dataType) { case TYPE_BOOLEAN: final CheckBox checkBox = new CheckBox(); checkBox.setValue(dataItem.getBoolean()); checkBox.addClickHandler(new ClickHandler() { @Override public void onClick(final ClickEvent event) { // don't let users change the checkbox checkBox.setValue(dataItem.getBoolean()); } }); detailsData.add(checkBox); break; case TYPE_NUMERIC: if (formatting == null) { GWT.log("setData(): formatting is null"); formatting = new Formatting(); // To avoid checks later. } final NumericFormat numericFormat = formatting.getNumericFormat(); final NumberFormat gwtNumberFormat = Utils.getNumberFormat(numericFormat); // set the foreground color to red if the number is negative and this is requested if (numericFormat.getUseAltForegroundColorForNegatives() && dataItem.getNumber() < 0) { // The default alternative color in libglom is red. detailsData.getElement().getStyle() .setColor(NumericFormat.getAlternativeColorForNegativesAsHTMLColor()); } final String currencyCode = StringUtils.isEmpty(numericFormat.getCurrencySymbol()) ? "" : numericFormat.getCurrencySymbol().trim() + " "; detailsLabel.setText(currencyCode + gwtNumberFormat.format(dataItem.getNumber())); detailsData.add(detailsLabel); break; case TYPE_DATE: case TYPE_TIME: case TYPE_TEXT: final String text = StringUtils.defaultString(dataItem.getText()); // Deal with multiline text differently than single line text. if ((formatting != null) && (formatting.getTextFormatMultilineHeightLines() > 1)) { detailsData.getElement().getStyle().setOverflow(Overflow.AUTO); // Convert '\n' to <br/> escaping the data so that it won't be rendered as HTML. try { // JavaScript requires the charsetName to be "UTF-8". CharsetName values that work in Java (such as // "UTF8") will not work when compiled to JavaScript. final String utf8NewLine = new String(new byte[] { 0x0A }, "UTF-8"); final String[] lines = text.split(utf8NewLine); final SafeHtmlBuilder sb = new SafeHtmlBuilder(); for (final String line : lines) { sb.append(SafeHtmlUtils.fromString(line)); sb.append(SafeHtmlUtils.fromSafeConstant("<br/>")); } // Manually add the HTML to the detailsData container. final DivElement div = Document.get().createDivElement(); div.setInnerHTML(sb.toSafeHtml().asString()); detailsData.getElement().appendChild(div); // Expand the width of detailsData if a vertical scrollbar has been placed on the inside of the // detailsData container. final int scrollBarWidth = detailsData.getOffsetWidth() - div.getOffsetWidth(); if (scrollBarWidth > 0) { // A vertical scrollbar is on the inside. detailsData.setWidth((detailsData.getOffsetWidth() + scrollBarWidth + 4) + "px"); } // TODO Add horizontal scroll bars when detailsData expands beyond its container. } catch (final UnsupportedEncodingException e) { // If the new String() line throws an exception, don't try to add the <br/> tags. This is unlikely // to happen but we should do something if it does. detailsLabel.setText(text); detailsData.add(detailsLabel); } } else { final SingleLineText textPanel = new SingleLineText(text); detailsData.add(textPanel); } break; case TYPE_IMAGE: final Image image = new Image(); final String imageDataUrl = dataItem.getImageDataUrl(); if (imageDataUrl != null) { image.setUrl(imageDataUrl); // Set an arbitrary default size: // image.setPixelSize(200, 200); } detailsData.add(image); break; default: break; } this.dataItem = dataItem; // enable the navigation button if it's safe if (openButton != null && openButtonHandlerReg != null && this.dataItem != null) { openButton.setEnabled(true); } }
From source file:org.glom.web.client.ui.details.RelatedListTable.java
License:Open Source License
private static int initializeExepectedHeight() { // TODO Use a real RelatedListTable instead of building one manually. It's probably better to do this when // RelatedListTables are created in Portal instead of DetailsActivity. // This table simulates a related list with one row containing a Text cell and a Button cell. final SafeHtmlBuilder tableBuilder = new SafeHtmlBuilder(); tableBuilder.append(SafeHtmlUtils.fromSafeConstant( "<table class=\"data-list\"><thead><tr><th>TH</th><th>BH</th></tr></thead><tbody>")); for (int i = 0; i < MAX_TABLE_ROWS; i++) { tableBuilder.append(SafeHtmlUtils .fromSafeConstant("<tr><td>T</td><td><button type=\"button\">B</button></td></tr>")); }/* www.ja va 2 s .c o m*/ tableBuilder.append(SafeHtmlUtils.fromSafeConstant("</tbody></head>")); final HTML table = new HTML(tableBuilder.toSafeHtml()); // The pager final SimplePager pager = new SimplePager(); pager.addStyleName("pager"); // Pack the table and pager as they are found in the details view. final FlowPanel group = new FlowPanel(); group.setStyleName("group"); final FlowPanel subgroup = new FlowPanel(); subgroup.setStyleName("portal"); subgroup.add(table); subgroup.add(pager); group.add(subgroup); // Calculate the height similar to Utils.getWidgetHeight(). final Document doc = Document.get(); com.google.gwt.dom.client.Element div = doc.createDivElement(); div.getStyle().setVisibility(Visibility.HIDDEN); div.appendChild(group.getElement().<com.google.gwt.dom.client.Element>cast()); doc.getBody().appendChild(div); final int relatedListTableHeight = group.getElement().getFirstChildElement().getOffsetHeight(); // remove the div from the from the document doc.getBody().removeChild(div); div = null; return relatedListTableHeight; }
From source file:org.gss_project.gss.web.client.FileList.java
License:Open Source License
/** * Construct the file list widget. This entails setting up the widget * layout, fetching the number of files in the current folder from the * server and filling the local file cache of displayed files with data from * the server, as well.//from w w w. j a v a 2 s . c o m * * @param _images */ public FileList(Images _images) { images = _images; DragAndDropCellTable.Resources resources = GWT.create(TableResources.class); ProvidesKey<FileResource> keyProvider = new ProvidesKey<FileResource>() { @Override public Object getKey(FileResource item) { return item.getUri(); } }; celltable = new DragAndDropCellTable<FileResource>(GSS.VISIBLE_FILE_COUNT, resources, keyProvider); DragAndDropColumn<FileResource, ImageResource> status = new DragAndDropColumn<FileResource, ImageResource>( new ImageResourceCell() { @Override public boolean handlesSelection() { return false; } }) { @Override public ImageResource getValue(FileResource entity) { return getFileIcon(entity); } }; celltable.addColumn(status, ""); initDragOperation(status); final DragAndDropColumn<FileResource, SafeHtml> nameColumn = new DragAndDropColumn<FileResource, SafeHtml>( new SafeHtmlCell()) { @Override public SafeHtml getValue(FileResource object) { SafeHtmlBuilder sb = new SafeHtmlBuilder(); sb.append(Templates.INSTANCE.filenameSpan(object.getName())); if (object.getContentType().endsWith("png") || object.getContentType().endsWith("gif") || object.getContentType().endsWith("jpeg")) { sb.appendHtmlConstant(" ") .append(Templates.INSTANCE.viewLink( GSS.get().getTopPanel().getFileMenu().getDownloadURL(object), object.getOwner() + " : " + object.getPath() + object.getName())); } return sb.toSafeHtml(); } }; initDragOperation(nameColumn); celltable.addColumn(nameColumn, nameHeader = new SortableHeader("Name")); allHeaders.add(nameHeader); //nameHeader.setSorted(true); //nameHeader.toggleReverseSort(); nameHeader.setUpdater(new FileValueUpdater(nameHeader, "name")); celltable.redrawHeaders(); SortableHeader aheader; DragAndDropColumn<FileResource, String> aColumn; celltable.addColumn(aColumn = new DragAndDropColumn<FileResource, String>(new TextCell()) { @Override public String getValue(FileResource object) { return GSS.get().findUserFullName(object.getOwner()); } }, aheader = new SortableHeader("Owner")); initDragOperation(aColumn); allHeaders.add(aheader); aheader.setUpdater(new FileValueUpdater(aheader, "owner")); celltable.addColumn(aColumn = new DragAndDropColumn<FileResource, String>(new TextCell()) { @Override public String getValue(FileResource object) { // TODO Auto-generated method stub return object.getPath(); } }, aheader = new SortableHeader("Path")); initDragOperation(aColumn); allHeaders.add(aheader); aheader.setUpdater(new FileValueUpdater(aheader, "path")); celltable.addColumn(aColumn = new DragAndDropColumn<FileResource, String>(new TextCell()) { @Override public String getValue(FileResource object) { if (object.isVersioned()) return object.getVersion().toString(); return "-"; } }, aheader = new SortableHeader("Version")); initDragOperation(aColumn); allHeaders.add(aheader); aheader.setUpdater(new FileValueUpdater(aheader, "version")); celltable.addColumn(aColumn = new DragAndDropColumn<FileResource, String>(new TextCell()) { @Override public String getValue(FileResource object) { // TODO Auto-generated method stub return object.getFileSizeAsString(); } }, aheader = new SortableHeader("Size")); initDragOperation(aColumn); allHeaders.add(aheader); aheader.setUpdater(new FileValueUpdater(aheader, "size")); celltable.addColumn(aColumn = new DragAndDropColumn<FileResource, String>(new TextCell()) { @Override public String getValue(FileResource object) { return formatter.format(object.getModificationDate()); } }, aheader = new SortableHeader("Last Modified")); allHeaders.add(aheader); aheader.setUpdater(new FileValueUpdater(aheader, "date")); provider.addDataDisplay(celltable); celltable.addDragStopHandler(dragStop); celltable.addDragStartHandler(new DragStartEventHandler() { public void onDragStart(DragStartEvent event) { FileResource value = event.getDraggableData(); com.google.gwt.dom.client.Element helper = event.getHelper(); SafeHtmlBuilder sb = new SafeHtmlBuilder(); sb.appendHtmlConstant("<b>"); DisplayHelper.log(value.getName()); if (getSelectedFiles().size() == 1) sb.appendEscaped(value.getName()); else sb.appendEscaped(getSelectedFiles().size() + " files"); sb.appendHtmlConstant("</b>"); helper.setInnerHTML(sb.toSafeHtml().asString()); } }); VerticalPanel vp = new VerticalPanel(); vp.setWidth("100%"); pagerTop = new GssSimplePager(GssSimplePager.TextLocation.CENTER); pagerTop.setDisplay(celltable); uploadButtonTop = new Button("<span id='topMenu.file.upload'>" + AbstractImagePrototype.create(images.fileUpdate()).getHTML() + " Upload</span>"); uploadButtonTop.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { new UploadFileCommand(null).execute(); } }); HorizontalPanel topPanel = new HorizontalPanel(); topPanel.add(pagerTop); topPanel.add(uploadButtonTop); vp.add(topPanel); celltable.setWidth("100%"); vp.add(celltable); pagerBottom = new GssSimplePager(GssSimplePager.TextLocation.CENTER); pagerBottom.setDisplay(celltable); HorizontalPanel bottomPanel = new HorizontalPanel(); bottomPanel.add(pagerBottom); uploadButtonBottom = new Button("<span id='topMenu.file.upload'>" + AbstractImagePrototype.create(images.fileUpdate()).getHTML() + " Upload</span>"); uploadButtonBottom.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { new UploadFileCommand(null).execute(); } }); bottomPanel.add(uploadButtonBottom); vp.add(bottomPanel); vp.setCellWidth(celltable, "100%"); initWidget(vp); pagerBottom.setVisible(false); pagerTop.setVisible(false); celltable.setStyleName("gss-List"); selectionModel = new MultiSelectionModel<FileResource>(keyProvider); Handler selectionHandler = new SelectionChangeEvent.Handler() { @Override public void onSelectionChange(com.google.gwt.view.client.SelectionChangeEvent event) { if (getSelectedFiles().size() == 1) GSS.get().setCurrentSelection(getSelectedFiles().get(0)); else GSS.get().setCurrentSelection(getSelectedFiles()); } }; selectionModel.addSelectionChangeHandler(selectionHandler); celltable.setSelectionModel(selectionModel, GSSSelectionEventManager.<FileResource>createDefaultManager()); celltable.setPageSize(GSS.VISIBLE_FILE_COUNT); //celltable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED); Scheduler.get().scheduleIncremental(new RepeatingCommand() { @Override public boolean execute() { return fetchRootFolder(); } }); sinkEvents(Event.ONCONTEXTMENU); sinkEvents(Event.ONMOUSEUP); sinkEvents(Event.ONMOUSEDOWN); sinkEvents(Event.ONCLICK); sinkEvents(Event.ONKEYDOWN); sinkEvents(Event.ONDBLCLICK); GSS.preventIESelection(); }
From source file:org.gss_project.gss.web.client.SearchResults.java
License:Open Source License
/** * Construct the file list widget. This entails setting up the widget * layout, fetching the number of files in the current folder from the * server and filling the local file cache of displayed files with data from * the server, as well.//from www . j a v a2 s. c om * * @param _images */ public SearchResults(Images _images) { images = _images; DragAndDropCellTable.Resources resources = GWT.create(TableResources.class); ProvidesKey<FileResource> keyProvider = new ProvidesKey<FileResource>() { @Override public Object getKey(FileResource item) { return item.getUri(); } }; celltable = new DragAndDropCellTable<FileResource>(GSS.VISIBLE_FILE_COUNT, resources, keyProvider) { @Override protected void onBrowserEvent2(Event event) { /*if (DOM.eventGetType((Event) event) == Event.ONMOUSEDOWN && DOM.eventGetButton((Event) event) == NativeEvent.BUTTON_RIGHT){ fireClickEvent((Element) event.getEventTarget().cast()); }*/ super.onBrowserEvent2(event); } }; provider.addDataDisplay(celltable); celltable.addDragStopHandler(dragStop); celltable.addDragStartHandler(new DragStartEventHandler() { public void onDragStart(DragStartEvent event) { FileResource value = event.getDraggableData(); com.google.gwt.dom.client.Element helper = event.getHelper(); SafeHtmlBuilder sb = new SafeHtmlBuilder(); sb.appendHtmlConstant("<b>"); DisplayHelper.log(value.getName()); if (getSelectedFiles().size() == 1) sb.appendEscaped(value.getName()); else sb.appendEscaped(getSelectedFiles().size() + " files"); sb.appendHtmlConstant("</b>"); helper.setInnerHTML(sb.toSafeHtml().asString()); } }); DragAndDropColumn<FileResource, ImageResource> status = new DragAndDropColumn<FileResource, ImageResource>( new ImageResourceCell() { @Override public boolean handlesSelection() { return false; } }) { @Override public ImageResource getValue(FileResource entity) { return getFileIcon(entity); } }; celltable.addColumn(status, ""); initDragOperation(status); final DragAndDropColumn<FileResource, SafeHtml> nameColumn = new DragAndDropColumn<FileResource, SafeHtml>( new SafeHtmlCell()) { @Override public SafeHtml getValue(FileResource object) { SafeHtmlBuilder sb = new SafeHtmlBuilder(); sb.append(FileList.Templates.INSTANCE.filenameSpan(object.getName())); if (object.getContentType().endsWith("png") || object.getContentType().endsWith("gif") || object.getContentType().endsWith("jpeg")) { sb.appendHtmlConstant(" ") .append(FileList.Templates.INSTANCE.viewLink( GSS.get().getTopPanel().getFileMenu().getDownloadURL(object), object.getOwner() + " : " + object.getPath() + object.getName())); } return sb.toSafeHtml(); } }; initDragOperation(nameColumn); celltable.addColumn(nameColumn, "Name"); DragAndDropColumn<FileResource, String> aColumn; celltable.addColumn(aColumn = new DragAndDropColumn<FileResource, String>(new TextCell()) { @Override public String getValue(FileResource object) { return GSS.get().findUserFullName(object.getOwner()); } }, "Owner"); initDragOperation(aColumn); celltable.addColumn(aColumn = new DragAndDropColumn<FileResource, String>(new TextCell()) { @Override public String getValue(FileResource object) { if (object.isDeleted()) return object.getPath() + " (In Trash)"; return object.getPath(); } }, "Path"); initDragOperation(aColumn); celltable.addColumn(aColumn = new DragAndDropColumn<FileResource, String>(new TextCell()) { @Override public String getValue(FileResource object) { if (object.isVersioned()) return object.getVersion().toString(); return "-"; } }, "Version"); initDragOperation(aColumn); celltable.addColumn(aColumn = new DragAndDropColumn<FileResource, String>(new TextCell()) { @Override public String getValue(FileResource object) { // TODO Auto-generated method stub return object.getFileSizeAsString(); } }, "Size"); initDragOperation(aColumn); celltable.addColumn(aColumn = new DragAndDropColumn<FileResource, String>(new TextCell()) { @Override public String getValue(FileResource object) { return formatter.format(object.getModificationDate()); } }, "Last Modified"); VerticalPanel vp = new VerticalPanel(); vp.setWidth("100%"); celltable.setWidth("100%"); vp.add(searchResults); searchResults.addStyleName("gss-searchLabel"); pagerTop = new GssSimplePager(GssSimplePager.TextLocation.CENTER); pagerTop.setDisplay(celltable); vp.add(pagerTop); vp.add(celltable); pager = new GssSimplePager(GssSimplePager.TextLocation.CENTER); pager.setDisplay(celltable); //celltable.setPageSize(2); vp.add(pager); vp.setCellWidth(celltable, "100%"); initWidget(vp); //initWidget(celltable); celltable.setStyleName("gss-List"); selectionModel = new MultiSelectionModel<FileResource>(); Handler selectionHandler = new SelectionChangeEvent.Handler() { @Override public void onSelectionChange(com.google.gwt.view.client.SelectionChangeEvent event) { if (getSelectedFiles().size() == 1) GSS.get().setCurrentSelection(getSelectedFiles().get(0)); else GSS.get().setCurrentSelection(getSelectedFiles()); //contextMenu.setFiles(getSelectedFiles()); } }; selectionModel.addSelectionChangeHandler(selectionHandler); celltable.setSelectionModel(selectionModel, GSSSelectionEventManager.<FileResource>createDefaultManager()); celltable.setPageSize(GSS.VISIBLE_FILE_COUNT); celltable.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED); Scheduler.get().scheduleIncremental(new RepeatingCommand() { @Override public boolean execute() { return fetchRootFolder(); } }); sinkEvents(Event.ONCONTEXTMENU); sinkEvents(Event.ONMOUSEUP); sinkEvents(Event.ONMOUSEDOWN); sinkEvents(Event.ONCLICK); sinkEvents(Event.ONKEYDOWN); sinkEvents(Event.ONDBLCLICK); GSS.preventIESelection(); }
From source file:org.guvnor.messageconsole.client.console.HyperLinkCell.java
License:Apache License
@Override public void render(final Context context, final HyperLink value, final SafeHtmlBuilder sb) { if (value != null) { if (value.isLink()) { sb.append( hyperLinkTemplate.hyperLink(SafeHtmlUtils.fromString(value.getLabel()), value.getLabel())); } else {//from w ww. j a v a2 s . co m sb.append(textTemplate.text(value.getLabel(), value.getLabel())); } } }
From source file:org.gwtbootstrap3.client.ui.gwt.ButtonCell.java
License:Apache License
@Override public void render(com.google.gwt.cell.client.Cell.Context context, SafeHtml data, SafeHtmlBuilder sb) { String cssClasses = new StringBuilder("btn") // .append(" ") // .append(type.getCssName()) // .append(" ") // .append(size.getCssName()) // .toString();/*from w ww . jav a 2s .c o m*/ String disabled = ""; if (!enabled) { disabled = " disabled=\"disabled\""; } sb.appendHtmlConstant( "<button type=\"button\" class=\"" + cssClasses + "\" tabindex=\"-1\"" + disabled + ">"); if (icon != null) { String iconHtml = new StringBuilder("<i class=\"") // .append(Styles.FONT_AWESOME_BASE) // .append(" ") // .append(icon.getCssName()) // .append("\"></i> ") // .toString(); sb.appendHtmlConstant(iconHtml); } if (data != null) { sb.append(data); } sb.appendHtmlConstant("</button>"); }
From source file:org.hudsonci.maven.plugin.ui.gwt.buildinfo.widget.HyperlinkCell.java
License:Open Source License
@Override public void render(Context context, Hyperlink link, SafeHtmlBuilder sb) { // Note: toString renders properly but getHTML doesn't; go figure. sb.append(SafeHtmlUtils.fromTrustedString(link.toString())); }