List of usage examples for com.google.gwt.dom.client UListElement addClassName
@Override
public boolean addClassName(String className)
From source file:com.smartgwt.mobile.client.widgets.tableview.TableView.java
License:Open Source License
/** * Renders the records in <code>recordsToShow</code> on screen. * * @see #getShowRecordComponents()/*from w w w .j a v a2s . c o m*/ */ public void loadRecords(List<Record> recordsToShow) { destroyRecordComponents(); final boolean hadShowDeletableRecordsClassName, hadShowMoveableRecordsClassName; if (_ul != null) { hadShowDeletableRecordsClassName = ElementUtil.hasClassName(_ul, _CSS.tableViewShowDeleteDisclosuresClass()); hadShowMoveableRecordsClassName = ElementUtil.hasClassName(_ul, _CSS.tableViewShowMoveIndicatorsClass()); if (_ul.hasParentElement()) { _ul.removeFromParent(); } } else { hadShowDeletableRecordsClassName = false; hadShowMoveableRecordsClassName = false; } final Document document = Document.get(); _ul = document.createULElement(); _ul.addClassName(COMPONENT_CLASS_NAME); if (parentNavStack != null) { _ul.addClassName(_CSS.tableViewHasParentNavStackClass()); } if (hadShowDeletableRecordsClassName) { _ul.addClassName(_CSS.tableViewShowDeleteDisclosuresClass()); } if (hadShowMoveableRecordsClassName) { _ul.addClassName(_CSS.tableViewShowMoveIndicatorsClass()); } if (this.tableMode == TableMode.GROUPED) { _ul.addClassName(_CSS.groupedTableViewClass()); } if (recordsToShow == null) recordsToShow = Collections.emptyList(); for (int i = 0; i < recordsToShow.size(); ++i) { final Record record = recordsToShow.get(i); if (record == null) throw new NullPointerException("The Record at index " + i + " is null."); record.setAttribute(recordIndexProperty, Integer.valueOf(i)); } ListGridField groupByField = null; GroupNode[] sortedGroupNodes = null; // Handle table grouping if (groupByFieldName != null) { final ListGridField[] fields = getFields(); if (fields != null) { for (ListGridField field : fields) { if (field != null && groupByFieldName.equals(field.getName())) { groupByField = field; break; } } } if (groupByField == null) { SC.logWarn("Could not find groupByField '" + groupByFieldName + "'"); } else if (groupByField.getGroupValueFunction() == null) { SC.logWarn("The groupByField '" + groupByFieldName + "' does not have a GroupByFunction."); } else { final GroupValueFunction groupByFunction = groupByField.getGroupValueFunction(); final Map<Object, GroupNode> groupNodes = new LinkedHashMap<Object, GroupNode>(); for (Record record : recordsToShow) { final Object groupValue = groupByFunction.getGroupValue( record.getAttributeAsObject(groupByFieldName), record, groupByField, groupByFieldName, this); GroupNode groupNode = groupNodes.get(groupValue); if (groupNode == null) { groupNode = new GroupNode(groupValue); groupNodes.put(groupValue, groupNode); } groupNode._add(record); } sortedGroupNodes = groupNodes.values().toArray(new GroupNode[groupNodes.size()]); Arrays.sort(sortedGroupNodes, GroupNode._COMPARATOR); } } elementMap = new HashMap<Object, Element>(); if (getShowRecordComponents()) recordComponents = new ArrayList<Canvas>(); if (recordsToShow.isEmpty()) { if (_getData() instanceof ResultSet && !((ResultSet) _getData()).lengthIsKnown()) { _ul.setInnerText(this.getLoadingMessage()); } else { if (emptyMessage != null) _ul.setInnerText(emptyMessage); } getElement().appendChild(_ul); } else { UListElement ul = _ul; LIElement lastLI; if (sortedGroupNodes == null) { lastLI = showGroup(recordsToShow, ul); } else { assert groupByField != null; assert sortedGroupNodes.length >= 1; final GroupTitleRenderer groupTitleRenderer = groupByField.getGroupTitleRenderer(); int i = 0; LIElement li; do { final GroupNode groupNode = sortedGroupNodes[i]; groupNode._setGroupTitle( groupTitleRenderer == null ? SafeHtmlUtils.htmlEscape(groupNode._getGroupValueString()) : groupTitleRenderer.getGroupTitle(groupNode.getGroupValue(), groupNode, groupByField, groupByFieldName, this)); li = document.createLIElement(); li.setAttribute(GROUP_VALUE_STRING_ATTRIBUTE_NAME, groupNode._getGroupValueString()); if (ul == null || _ul.equals(ul)) li.addClassName(_CSS.firstTableViewGroupClass()); final String groupTitle = groupNode.getGroupTitle(); if (groupTitle == null) { li.addClassName(_CSS.tableViewGroupWithoutGroupTitleClass()); } else { final DivElement labelDiv = document.createDivElement(); labelDiv.setClassName(Label.COMPONENT_CLASS_NAME); labelDiv.setInnerHTML(groupTitle); li.appendChild(labelDiv); } ul = document.createULElement(); ul.setClassName(COMPONENT_CLASS_NAME); ul.addClassName(TABLE_GROUP_CLASS_NAME); lastLI = showGroup(groupNode._getGroupMembersList(), ul); if (i != sortedGroupNodes.length - 1 && lastLI != null) { lastLI.addClassName(_CSS.lastTableViewRowClass()); } li.appendChild(ul); _ul.appendChild(li); } while (++i < sortedGroupNodes.length); assert li != null; li.addClassName(_CSS.lastTableViewGroupClass()); } if (_getData() instanceof ResultSet) { ResultSet rs = (ResultSet) _getData(); if (rs.getFetchMode() == FetchMode.PAGED && !rs.allRowsCached()) { LIElement li = document.createLIElement(); li.setClassName(ROW_CLASS_NAME); com.google.gwt.user.client.Element loadMoreRecordsElement = (com.google.gwt.user.client.Element) li .cast(); DOM.setEventListener(loadMoreRecordsElement, this); SpanElement span = document.createSpanElement(); span.addClassName(RECORD_TITLE_CLASS_NAME); span.setInnerText(SmartGwtMessages.INSTANCE.listGrid_loadMoreRecords()); span.setAttribute(IS_LOAD_MORE_RECORDS_ATTRIBUTE_NAME, "true"); li.setAttribute(IS_LOAD_MORE_RECORDS_ATTRIBUTE_NAME, "true"); li.appendChild(span); ul.appendChild(li); lastLI = li; } } if (lastLI != null) { lastLI.addClassName(_CSS.lastTableViewRowClass()); } getElement().appendChild(_ul); setSelecteds(); } if (isAttached()) { _fireContentChangedEvent(); // If this `TableView' is not currently attached, defer the firing of the content // changed event. } else { fireContentChangedOnLoad = true; } }
From source file:com.smartgwt.mobile.client.widgets.tableview.TableView.java
License:Open Source License
private LIElement showGroup(List<Record> recordsToShow, UListElement ul) { final Document document = Document.get(); final String primaryKeyField = getPrimaryKeyFieldName(), iconField = getIconField(), titleField = getTitleField(), infoField = getInfoField(), descriptionField = getDescriptionField(); LIElement lastLI = null;/*w w w . j a v a 2 s . c om*/ for (final Record record : recordsToShow) { final Canvas recordComponent; if (getShowRecordComponents()) { recordComponent = createRecordComponent(record); if (recordComponent == null) { continue; } else recordComponents.add(recordComponent); } else recordComponent = null; final LIElement li = document.createLIElement(); li.addClassName(ROW_CLASS_NAME); com.google.gwt.user.client.Element element = li.cast(); final Object recordID = record.getAttributeAsObject(primaryKeyField); elementMap.put(recordID, element); final Integer recordIndex = record.getAttributeAsInt(recordIndexProperty); li.setAttribute(RECORD_INDEX_ATTRIBUTE_NAME, recordIndex.toString()); if (lastLI == null) { li.addClassName(_CSS.firstTableViewRowClass()); } if (showSelectedIcon && selectedIcon == null && getSelectionType() == SelectionStyle.MULTIPLE) { DivElement selectionDisclosure = document.createDivElement(); selectionDisclosure.setClassName(_CSS.recordSelectionDisclosureClass()); if (!_canSelectRecord(record)) { selectionDisclosure.addClassName(_CSS.nonselectableSelectionDisclosureClass()); } SpanElement span = document.createSpanElement(); selectionDisclosure.appendChild(span); li.appendChild(selectionDisclosure); } if (canRemoveRecords) { Boolean deletable = record.getAttributeAsBoolean(canRemoveProperty); if (deletable == null || (deletable != null && deletable.booleanValue())) { DivElement div = document.createDivElement(); div.addClassName(_CSS.recordDeleteDisclosureClass()); SpanElement span = document.createSpanElement(); div.appendChild(span); li.appendChild(div); if (markedForRemoval != null && markedForRemoval.contains(record)) { _markRecordRemoved(record, div, true); } } } if (canReorderRecords) { MoveIndicator draggableRow = new MoveIndicator(element); add(draggableRow, element); } if (!getShowRecordComponents()) { if (recordFormatter != null) { DivElement div = document.createDivElement(); div.setClassName("content"); div.setInnerHTML(recordFormatter.format(record)); li.appendChild(div); } else { if (getShowNavigation(record)) { final ImageResource navIcon = getNavigationIcon(record); if (navigationMode == NavigationMode.NAVICON_ONLY) { Boolean navigate = record.getAttributeAsBoolean(getRecordNavigationProperty()); if (navigate == null || (navigate != null && navigate.booleanValue())) { final DetailsRow detailsRow = new DetailsRow(navIcon); add(detailsRow, element); } } else if (navIcon != null) { final Image image = new Image(navIcon); image.getElement().addClassName(TableView._CSS.recordDetailDisclosureNavIconClass()); add(image, element); } else { li.addClassName(_CSS.tableViewRowHasNavigationDisclosureClass()); } } if (showIcons) { Object icon = record.get(iconField); if (!(icon instanceof ImageResource) && !(icon instanceof Image)) { icon = formatCellValue(record, recordIndex.intValue(), iconField); } if (icon != null) { SpanElement span = document.createSpanElement(); span.addClassName(RECORD_ICON_CLASS_NAME); li.appendChild(span); li.addClassName(_CSS.tableViewRowHasIconClass()); ImageElement img = document.createImageElement(); if (icon instanceof ImageResource) { img.setSrc(((ImageResource) icon).getSafeUri().asString()); } else if (icon instanceof Image) { img.setSrc(((Image) icon).getUrl()); } else { img.setSrc(icon.toString()); } span.appendChild(img); } } if (showDetailCount) { String count = formatCellValue(record, recordIndex.intValue(), detailCountProperty); if (count != null) { SpanElement span = document.createSpanElement(); span.addClassName(RECORD_COUNTER_CLASS_NAME); span.setInnerHTML(count); li.appendChild(span); } } String title = formatCellValue(record, recordIndex.intValue(), titleField); if (title != null) { SpanElement span = document.createSpanElement(); final String baseStyle = getBaseStyle(record, recordIndex.intValue(), getFieldNum(titleField)); if (baseStyle != null) span.setClassName(baseStyle); span.addClassName(RECORD_TITLE_CLASS_NAME); span.setInnerHTML(title); li.appendChild(span); } if (recordLayout == RecordLayout.AUTOMATIC || recordLayout == RecordLayout.SUMMARY_FULL || recordLayout == RecordLayout.SUMMARY_INFO) { String info = formatCellValue(record, recordIndex.intValue(), infoField); if (info != null) { ul.addClassName(_CSS.stackedTableViewClass()); li.addClassName(_CSS.tableViewRowHasRecordInfoClass()); SpanElement span = document.createSpanElement(); final String baseStyle = getBaseStyle(record, recordIndex.intValue(), getFieldNum(infoField)); if (baseStyle != null) span.setClassName(baseStyle); span.addClassName(RECORD_INFO_CLASS_NAME); span.appendChild(document.createTextNode(info)); li.appendChild(span); } } if (recordLayout == RecordLayout.AUTOMATIC || recordLayout == RecordLayout.TITLE_DESCRIPTION || recordLayout == RecordLayout.SUMMARY_DATA || recordLayout == RecordLayout.SUMMARY_FULL || recordLayout == RecordLayout.SUMMARY_INFO) { String description = formatCellValue(record, recordIndex.intValue(), descriptionField); if (description != null) { SpanElement span = document.createSpanElement(); final String baseStyle = getBaseStyle(record, recordIndex.intValue(), getFieldNum(descriptionField)); if (baseStyle != null) span.setClassName(baseStyle); span.addClassName(RECORD_DESCRIPTION_CLASS_NAME); span.appendChild(document.createTextNode(description)); li.appendChild(span); } } } } else { assert recordComponent != null; recordComponent.getElement().addClassName(RECORD_COMPONENT_CLASS_NAME); add(recordComponent, element); } ul.appendChild(li); lastLI = li; } return lastLI; }