Example usage for com.google.gwt.safehtml.shared SafeHtmlBuilder appendEscaped

List of usage examples for com.google.gwt.safehtml.shared SafeHtmlBuilder appendEscaped

Introduction

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

Prototype

public SafeHtmlBuilder appendEscaped(String text) 

Source Link

Document

Appends a string after HTML-escaping it.

Usage

From source file:de.uni_koeln.spinfo.maalr.webapp.ui.editor.client.entry.LexEditor.java

License:Apache License

public void setColumns(final List<String> fields) {
    LocalizedStrings.afterLoad(new AsyncCallback<TranslationMap>() {

        @Override/*from   w  w  w . j a v a2  s. c om*/
        public void onFailure(Throwable caught) {
            setColumns(fields, new TranslationMap());
        }

        private void setColumns(List<String> fields, TranslationMap hashMap) {
            for (final String field : fields) {
                final String title = hashMap.get(field) == null ? field : hashMap.get(field);
                final CheckBox box = new CheckBox(title);
                box.getElement().getStyle().setMargin(5, Unit.PX);
                final Cell<LemmaVersionCellWrapper> cell = new AbstractCell<LemmaVersionCellWrapper>() {

                    @Override
                    public void render(com.google.gwt.cell.client.Cell.Context context,
                            LemmaVersionCellWrapper wrapper, SafeHtmlBuilder sb) {
                        String value = wrapper.getLemmaVersion().getEntryValue(field);
                        if (value == null)
                            return;
                        value = value.trim();
                        if (value.length() > 105) {
                            value = value.substring(0, 50) + "..."
                                    + value.substring(value.length() - 50, value.length());
                        }
                        sb.appendEscaped(value);

                    }
                };
                box.addClickHandler(new ClickHandler() {

                    com.google.gwt.user.cellview.client.Column<LemmaVersion, LemmaVersionCellWrapper> column = new com.google.gwt.user.cellview.client.Column<LemmaVersion, LemmaVersionCellWrapper>(
                            cell) {

                        @Override
                        public LemmaVersionCellWrapper getValue(LemmaVersion object) {
                            return new LemmaVersionCellWrapper(object);
                        }
                    };

                    @Override
                    public void onClick(ClickEvent event) {
                        if (box.getValue()) {
                            entryList.addColumn(title, column);
                        } else {
                            entryList.removeColumn(column);
                        }
                        //event.preventDefault();
                        event.stopPropagation();
                    }
                });
                columns.add(box);
            }
        }

        @Override
        public void onSuccess(TranslationMap result) {
            setColumns(fields, result);
        }
    });
}

From source file:de.uni_koeln.spinfo.maalr.webapp.ui.editor.client.entry.SuggestionEditor.java

License:Apache License

public void setColumns(final List<String> fields) {
    LocalizedStrings.afterLoad(new AsyncCallback<TranslationMap>() {

        @Override//w  ww.  ja v a 2s .  c  om
        public void onFailure(Throwable caught) {
            setColumns(fields, new TranslationMap());
        }

        private void setColumns(List<String> fields, TranslationMap map) {
            for (final String field : fields) {
                final String title = map.get(field) == null ? field : map.get(field);
                final CheckBox box = new CheckBox(title);
                box.getElement().getStyle().setMargin(5, Unit.PX);
                final Cell<LexEntryCellWrapper> cell = new AbstractCell<LexEntryCellWrapper>() {

                    @Override
                    public void render(com.google.gwt.cell.client.Cell.Context context,
                            LexEntryCellWrapper wrapper, SafeHtmlBuilder sb) {
                        String value = wrapper.getLemmaVersion().getEntryValue(field);
                        if (value == null)
                            return;
                        value = value.trim();
                        if (value.length() > 105) {
                            value = value.substring(0, 50) + "..."
                                    + value.substring(value.length() - 50, value.length());
                        }
                        sb.appendEscaped(value);

                    }
                };
                box.addClickHandler(new ClickHandler() {

                    com.google.gwt.user.cellview.client.Column<LexEntry, LexEntryCellWrapper> column = new com.google.gwt.user.cellview.client.Column<LexEntry, LexEntryCellWrapper>(
                            cell) {

                        @Override
                        public LexEntryCellWrapper getValue(LexEntry object) {
                            return new LexEntryCellWrapper(object, object.getCurrent());
                        }
                    };

                    @Override
                    public void onClick(ClickEvent event) {
                        if (box.getValue()) {
                            entryList.addColumn(title, column);
                        } else {
                            entryList.removeColumn(column);
                        }
                        //event.preventDefault();
                        event.stopPropagation();
                    }
                });
                columns.add(box);
            }
        }

        @Override
        public void onSuccess(TranslationMap result) {
            setColumns(fields, result);
        }
    });

}

From source file:de.uni_koeln.spinfo.maalr.webapp.ui.user.client.entry.OverlayPopup.java

License:Apache License

private static void createOverlay(Overlay overlay, LemmaVersion lemmaVersion, String closeButton) {
    String form = overlay.getForm();
    HashSet<String> values = new HashSet<String>();
    RegExp regExp = RegExp.compile("(\\$\\{(.*)\\})", "g");
    for (MatchResult matcher = regExp.exec(form); matcher != null; matcher = regExp.exec(form)) {
        values.add(matcher.getGroup(2));
    }/* w  w  w. ja v a2  s. co  m*/
    for (String key : values) {
        String value = lemmaVersion.getEntryValue(key);
        if (value == null || value.trim().length() == 0) {
            form = form.replaceAll("\\$\\{" + key + "\\}", "");
        } else {
            SafeHtmlBuilder builder = new SafeHtmlBuilder();
            builder.appendEscaped(value);
            form = form.replaceAll("\\$\\{" + key + "\\}", builder.toSafeHtml().asString());
        }
    }
    SafeHtmlBuilder builder = new SafeHtmlBuilder();
    builder.appendHtmlConstant(form);
    final Modal popup = new Modal(true);
    popup.add(new HTML(builder.toSafeHtml()));
    popup.setBackdrop(BackdropType.NORMAL);
    popup.setCloseVisible(true);
    popup.setWidth(1000);

    final Button close = new Button(closeButton);
    close.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            popup.hide();
        }
    });
    ModalFooter footer = new ModalFooter(close);
    popup.add(footer);
    popup.show();
}

From source file:de.yarkon.gwt.eventcalendar.client.EventTable.java

License:Open Source License

public EventTable(Date month) {
    super();//  w w w .j av  a 2 s  . co m

    TableResources.INSTANCE.cellTableStyle().ensureInjected();

    this.setMonth(month);

    setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);

    // Anchor column for the name of the event
    Column<EventInfo, EventInfo> nameColumn = new Column<EventInfo, EventInfo>(new AbstractCell<EventInfo>() {

        @Override
        public void render(com.google.gwt.cell.client.Cell.Context context, EventInfo value,
                SafeHtmlBuilder sb) {
            if (value == null) {
                return;
            }

            // Append some HTML that sets the text color.
            sb.appendHtmlConstant("<a target=\"_blank\" href=\"" + value.getLinkURL() + "\">");
            sb.appendEscaped(value.getEvent());
            sb.appendHtmlConstant("</a>");
        }
    }) {

        @Override
        public EventInfo getValue(EventInfo object) {
            return object;
        }
    };

    addColumn(nameColumn, "Veranstaltung");
    addColumnStyleName(0, "cellTableColumn-event");

    // Add a date column
    TextColumn<EventInfo> dateColumn = new TextColumn<EventInfo>() {
        @Override
        public String getValue(EventInfo object) {
            return dateShortFormat.format(object.getDate());
        }
    };
    addColumn(dateColumn, "Datum");
    addColumnStyleName(1, "cellTableColumn-date");

    // Add a text column to show location of the event.

    TextColumn<EventInfo> locationColumn = new TextColumn<EventInfo>() {
        @Override
        public String getValue(EventInfo object) {
            return object.getLocation();
        }
    };

    addColumn(locationColumn, "Ort");
    addColumnStyleName(2, "cellTableColumn-loc");

    addStyleName("cellTable");
    setRowStyles(new RowStyles<EventInfo>() {
        @Override
        public String getStyleNames(EventInfo row, int rowIndex) {
            return "cellTableRow";
        }
    });
}

From source file:eu.riscoss.client.rdr.ContactCell.java

License:Apache License

@Override
public void render(Context context, EntityInfo value, SafeHtmlBuilder sb) {
    // Value can be null, so do a null check..
    if (value == null) {
        return;/*  ww w .  j  ava 2 s .co m*/
    }

    //      sb.appendHtmlConstant("<table><tr><td style='font-size:95%;'>");
    sb.appendHtmlConstant("<a class='gwt-Anchor' href='javascript:'>");
    sb.appendEscaped(value.getName());
    sb.appendHtmlConstant("</a>");
    //      sb.appendHtmlConstant("</td></tr></table>");
}

From source file:gov.nist.spectrumbrowser.client.SensorDataStream.java

License:Open Source License

private void drawMenuItems() {
    MenuBar menuBar = new MenuBar();
    SafeHtmlBuilder safeHtml = new SafeHtmlBuilder();

    menuBar.addItem(new SafeHtmlBuilder().appendEscaped(SpectrumBrowserShowDatasets.END_LABEL).toSafeHtml(),
            new Scheduler.ScheduledCommand() {

                @Override/* w w w. ja va2s .c o m*/
                public void execute() {
                    state = STATUS_MESSAGE_NOT_SEEN;
                    closingState = true;
                    websocket.close();
                    spectrumBrowserShowDatasets.draw();
                }
            });
    if (spectrumBrowser.isUserLoggedIn()) {
        menuBar.addItem(safeHtml.appendEscaped(SpectrumBrowser.LOGOFF_LABEL).toSafeHtml(),
                new Scheduler.ScheduledCommand() {

                    @Override
                    public void execute() {
                        state = STATUS_MESSAGE_NOT_SEEN;
                        closingState = true;
                        websocket.close();
                        spectrumBrowser.logoff();

                    }
                });
    }

    verticalPanel.add(menuBar);

    titlePanel = new VerticalPanel();

    verticalPanel.add(titlePanel);

    HorizontalPanel cutoffHorizontalPanel = new HorizontalPanel();

    Label cutoffLabel = new Label("Threshold (dBm):");

    cutoffHorizontalPanel.add(cutoffLabel);

    cutoffTextBox = new TextBox();

    cutoffTextBox.setText(Integer.toString((int) cutoff));

    cutoffHorizontalPanel.add(cutoffTextBox);

    Button cutoffButton = new Button("Change");

    cutoffHorizontalPanel.add(cutoffButton);

    cutoffButton.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {
            String cutoffString = cutoffTextBox.getValue();
            try {
                cutoff = Integer.parseInt(cutoffString);
            } catch (NumberFormatException nfe) {
                Window.alert("Please enter an integer");
                if (cutoff < 0)
                    cutoffTextBox.setText(Integer.toString((int) (cutoff - 0.5)));
                else
                    cutoffTextBox.setText(Integer.toString((int) (cutoff + 0.5)));
            }

        }
    });

    freezeButton = new Button("Freeze");

    freezeButton.addClickHandler(new ClickHandler() {

        @Override
        public void onClick(ClickEvent event) {

            isFrozen = !isFrozen;
            if (isFrozen) {
                freezeButton.setText("Unfreeze");
            } else {
                freezeButton.setText("Freeze");
            }
        }
    });
    cutoffHorizontalPanel.add(freezeButton);

    lastCaptureButton = new Button("Show Last Acquistion");

    cutoffHorizontalPanel.add(lastCaptureButton);

    lastCaptureButton.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            websocket.close();
            spectrumBrowser.getSpectrumBrowserService().getLastAcquisitionTime(sensorId,
                    new SpectrumBrowserCallback<String>() {

                        @Override
                        public void onSuccess(String result) {
                            JSONValue jsonValue = JSONParser.parseLenient(result);
                            final long selectionTime = (long) jsonValue.isObject().get("aquisitionTimeStamp")
                                    .isNumber().doubleValue();
                            if (selectionTime != -1) {
                                chartApiLoaded = false;
                                occupancyDataTable = null;
                                websocket.close();
                                state = STATUS_MESSAGE_NOT_SEEN;
                                isFrozen = false;
                                Timer timer = new Timer() {
                                    @Override
                                    public void run() {

                                        ArrayList<SpectrumBrowserScreen> navigation = new ArrayList<SpectrumBrowserScreen>();
                                        navigation.add(spectrumBrowserShowDatasets);
                                        navigation.add(SensorDataStream.this);
                                        new FftPowerOneAcquisitionSpectrogramChart(sensorId, selectionTime,
                                                sys2detect, minFreqHz, maxFreqHz, verticalPanel,
                                                spectrumBrowser, navigation);
                                    }
                                };
                                // Wait for websocket to close.
                                timer.schedule(500);
                            } else {
                                Window.alert("No Capture Found");
                            }
                        }

                        @Override
                        public void onFailure(Throwable throwable) {
                            logger.log(Level.SEVERE, "Problem contacting web server.");
                            Window.alert("Problem contacting web server");
                        }
                    });
        }
    });

    verticalPanel.add(cutoffHorizontalPanel);

}

From source file:gov.wa.wsdot.mobile.client.activities.trafficmap.restarea.RestAreaActivity.java

License:Open Source License

@Override
public void start(AcceptsOneWidget panel, final EventBus eventBus) {
    view = clientFactory.getRestAreaView();
    analytics = clientFactory.getAnalytics();
    accessibility = clientFactory.getAccessibility();
    this.eventBus = eventBus;
    view.setPresenter(this);

    Place place = clientFactory.getPlaceController().getWhere();

    if (place instanceof RestAreaPlace) {
        RestAreaPlace restAreaPlace = (RestAreaPlace) place;

        int restAreaId = Integer.valueOf(restAreaPlace.getId());

        String jsonString = AppBundle.INSTANCE.restAreaData().getText();
        RestAreaFeed restAreas = JsonUtils.safeEval(jsonString);

        view.setTitle("Safety Rest Area");

        SafeHtmlBuilder detailsHTMLBuilder = new SafeHtmlBuilder();

        detailsHTMLBuilder.appendEscaped(restAreas.getRestAreas().get(restAreaId).getRoute() + " - "
                + restAreas.getRestAreas().get(restAreaId).getLocation());

        detailsHTMLBuilder.appendHtmlConstant("<br>");

        detailsHTMLBuilder.appendEscaped("Milepost: " + restAreas.getRestAreas().get(restAreaId).getMilepost()
                + " - " + restAreas.getRestAreas().get(restAreaId).getDirection());

        view.setDetails(detailsHTMLBuilder.toSafeHtml());

        if (restAreas.getRestAreas().get(restAreaId).getNotes() == null) {
            view.hideNotesHeading();/*from   w ww .  java 2s  . c  o  m*/
            view.setNotes("");
        } else {
            view.showNotesHeading();
            view.setNotes(restAreas.getRestAreas().get(restAreaId).getNotes());
        }

        SafeHtmlBuilder amenitiesHTMLBuilder = new SafeHtmlBuilder();

        amenitiesHTMLBuilder.appendHtmlConstant("<ul>");
        for (int i = 0; i < restAreas.getRestAreas().get(restAreaId).getAmenities().length; i++) {
            amenitiesHTMLBuilder.appendHtmlConstant("<li>");
            amenitiesHTMLBuilder.appendEscaped(restAreas.getRestAreas().get(restAreaId).getAmenities()[i]);
            amenitiesHTMLBuilder.appendHtmlConstant("</li>");
        }

        if (restAreas.getRestAreas().get(restAreaId).getAmenities().length == 0) {
            view.hideAmenitiesHeading();
        } else {
            view.showAmenitiesHeading();
        }

        amenitiesHTMLBuilder.appendHtmlConstant("</ul>");

        view.setAmenities(amenitiesHTMLBuilder.toSafeHtml());

        view.setLatLon(Double.valueOf(restAreas.getRestAreas().get(restAreaId).getLatitude()),
                Double.valueOf(restAreas.getRestAreas().get(restAreaId).getLongitude()));

        view.refresh();

    }

    panel.setWidget(view);
    accessibility.postScreenChangeNotification();
}

From source file:net.officefloor.demo.chat.client.ChatWidget.java

License:Open Source License

/**
 * Initiate.//www  . j  a v  a2 s .c  o m
 */
public ChatWidget() {

    // Provide means to send a message
    HorizontalPanel messagePanel = new HorizontalPanel();
    // messagePanel.setSpacing(10);
    messagePanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_MIDDLE);
    this.add(messagePanel);

    // Provide message text box
    this.messageText.setStylePrimaryName("message");
    messagePanel.add(this.messageText);
    this.messageText.addFocusHandler(new FocusHandler() {
        @Override
        public void onFocus(FocusEvent event) {
            ChatWidget.this.ensureHaveUserName();
        }
    });

    // Provide send button for message
    Button sendButton = new Button("send");
    sendButton.addClickHandler(new ClickHandler() {
        @Override
        public void onClick(ClickEvent event) {
            ChatWidget.this.sendChatMessage();
        }
    });
    messagePanel.add(sendButton);

    // Provide messages in scroll area
    VerticalPanel messagesPanel = new VerticalPanel();
    messagesPanel.setSize("100%", "100%");
    ScrollPanel scrollMessagesPanel = new ScrollPanel(messagesPanel);
    scrollMessagesPanel.setStylePrimaryName("messages");
    this.add(scrollMessagesPanel);

    // Provide label to display typing users
    final Label typingLabel = new Label();
    typingLabel.setStylePrimaryName("typing");
    messagesPanel.add(typingLabel);
    typingLabel.setVisible(false); // initially hidden as no typing users

    // List to contain chat messages
    Cell<ChatMessage> chatCell = new AbstractCell<ChatMessage>() {
        @Override
        public void render(Context context, ChatMessage value, SafeHtmlBuilder sb) {
            sb.appendHtmlConstant("<span><b>");
            sb.appendEscaped(value.getUserName());
            sb.appendHtmlConstant("</b>");
            sb.appendEscaped(" > ");
            sb.appendEscaped(value.getMessage());
            sb.appendHtmlConstant("</span>");
        }
    };
    CellList<ChatMessage> chatList = new CellList<ChatMessage>(chatCell);
    messagesPanel.add(chatList);

    // Add the data
    final ListDataProvider<ChatMessage> chatEntries = new ListDataProvider<ChatMessage>();
    chatEntries.addDataDisplay(chatList);

    // Handle listening for messages
    OfficeFloorComet.subscribe(ConversationSubscription.class, new ConversationSubscription() {
        @Override
        public void message(ChatMessage message) {

            // Determine if typing notification
            String userName = message.getUserName();
            if ((ChatWidget.this.userName == null) || (!(ChatWidget.this.userName.equals(userName)))) {
                // Not user so provide notification of typing
                if (message.isTyping()) {
                    // Include user as typing
                    if (!(ChatWidget.this.typingUserNames.contains(userName))) {
                        ChatWidget.this.typingUserNames.add(userName);
                    }
                } else {
                    // User has stopped typing
                    ChatWidget.this.typingUserNames.remove(userName);
                }
            }

            // Display typing notification
            if (ChatWidget.this.typingUserNames.size() == 0) {
                // No typing users
                typingLabel.setVisible(false);

            } else {
                // Display the typing users
                StringBuilder typingUsers = new StringBuilder();
                boolean isFirst = true;
                for (String typingUserName : ChatWidget.this.typingUserNames) {
                    if (!isFirst) {
                        typingUsers.append(", ");
                    }
                    isFirst = false;
                    typingUsers.append(typingUserName);
                }
                typingUsers.append(" ... (typing)");
                typingLabel.setText(typingUsers.toString());
                typingLabel.setVisible(true);
            }

            // Add the message (if one provided)
            String text = message.getMessage();
            if (text != null) {
                List<ChatMessage> list = chatEntries.getList();
                if (list.size() == 0) {
                    list.add(message);
                } else {
                    list.add(0, message);
                }
            }
        }
    }, null);

    // Handle submitting a message
    this.messageText.addKeyDownHandler(new KeyDownHandler() {
        @Override
        public void onKeyDown(KeyDownEvent event) {

            // Obtain the message text and cursor position
            String message = ChatWidget.this.messageText.getText();
            int cursorPosition = ChatWidget.this.messageText.getCursorPos();

            // Handle various scenarios of keys for sending/notification
            switch (event.getNativeKeyCode()) {
            case KeyCodes.KEY_ENTER:
                ChatWidget.this.sendChatMessage();
                break;

            case KeyCodes.KEY_BACKSPACE:
                if (ChatWidget.this.isTyping && (message.length() == 1) && (cursorPosition == 1)) {
                    // No longer typing as deleting last character
                    ChatWidget.this.sendChatMessage(false, null);
                }
                break;

            case KeyCodes.KEY_DELETE:
                if (ChatWidget.this.isTyping && (message.length() == 1) && (cursorPosition == 0)) {
                    // No longer typing as deleting last character
                    ChatWidget.this.sendChatMessage(false, null);
                }
                break;

            case KeyCodes.KEY_ALT:
            case KeyCodes.KEY_CTRL:
            case KeyCodes.KEY_DOWN:
            case KeyCodes.KEY_END:
            case KeyCodes.KEY_ESCAPE:
            case KeyCodes.KEY_HOME:
            case KeyCodes.KEY_LEFT:
            case KeyCodes.KEY_PAGEDOWN:
            case KeyCodes.KEY_PAGEUP:
            case KeyCodes.KEY_RIGHT:
            case KeyCodes.KEY_SHIFT:
            case KeyCodes.KEY_UP:
                // Do nothing
                break;

            default:
                if ((!ChatWidget.this.isTyping) && (message.length() == 0)) {
                    // Started typing a message
                    ChatWidget.this.sendChatMessage(true, null);
                }
                break;
            }
        }
    });
}

From source file:org.activityinfo.ui.client.page.entry.column.AdminColumnRenderer.java

License:Open Source License

private Object render(SiteDTO model) {

    StringBuilder qtip = new StringBuilder();
    SafeHtmlBuilder summary = new SafeHtmlBuilder();

    // we use this set to keep track of names that we've added
    // to the summary to avoid duplication that is common between
    // territories, zones de sante, provinces and districts, etc
    seen.clear();/*from w ww . j  av a2 s  . c o  m*/

    int summaryLines = 0;

    for (AdminLevelDTO level : levels) {
        AdminEntityDTO entity = model.getAdminEntity(level.getId());

        if (entity != null) {
            String name = entity.getName();
            if (qtip.length() > 0) {
                qtip.append("<br>");
            }
            qtip.append(level.getName()).append(": ").append(name);
            if (summaryLines < 3 && !seen.contains(name)) {
                if (summaryLines > 0) {
                    summary.appendHtmlConstant("<br/>");
                }
                summary.appendEscaped(name);
                seen.add(name);
                summaryLines++;
            }
        }
    }
    // return summary.toSafeHtml().asString();
    return ColumnTemplates.INSTANCE.adminCell(qtip.toString(), summary.toSafeHtml()).asString();
}

From source file:org.datacleaner.monitor.scheduling.widgets.ExecutionIdentifierCell.java

License:Open Source License

@Override
public void render(com.google.gwt.cell.client.Cell.Context context, ExecutionIdentifier executionIdentifier,
        SafeHtmlBuilder sb) {
    sb.appendHtmlConstant("<div class=\"ExecutionIdentifier\">");

    final Date beginDate = executionIdentifier.getJobBeginDate();
    final String dateString;
    if (beginDate == null) {
        dateString = "(n/a)";
    } else {//www  .  j a  v  a  2  s  .c o m
        dateString = _format.format(beginDate);
    }

    // date
    sb.appendHtmlConstant("<span class=\"beginDate\">");
    sb.appendEscaped(dateString);
    sb.appendHtmlConstant("</span>");

    // trigger type
    sb.appendHtmlConstant("<span class=\"triggerTypes\">");
    final TriggerType triggerType = executionIdentifier.getTriggerType();
    if (triggerType == null) {
        sb.appendEscaped("(n/a)");
    } else {
        sb.appendEscaped(triggerType.toString());
    }
    sb.appendHtmlConstant("</span>");

    // execution status
    sb.appendHtmlConstant("<span class=\"executionStatus\">");
    final ExecutionStatus executionStatus = executionIdentifier.getExecutionStatus();
    if (executionStatus == null) {
        sb.appendEscaped("(n/a)");
    } else {
        sb.appendEscaped(executionStatus.toString());
    }
    sb.appendHtmlConstant("</span>");

    sb.appendHtmlConstant("</div>");
}