package com.delcyon.capo.webapp.widgets; import org.w3c.dom.Comment; import org.w3c.dom.Element; import org.w3c.dom.Node; import com.delcyon.capo.webapp.models.DomItemModel; import com.delcyon.capo.webapp.models.DomItemModel.DomUse; import eu.webtoolkit.jwt.AlignmentFlag; import eu.webtoolkit.jwt.SelectionMode; import eu.webtoolkit.jwt.WContainerWidget; import eu.webtoolkit.jwt.WLength; import eu.webtoolkit.jwt.WLength.Unit; import eu.webtoolkit.jwt.WLineEdit; import eu.webtoolkit.jwt.WTabWidget; import eu.webtoolkit.jwt.WTableView; public class WXmlElementEditor extends WTabWidget { private WTableView attributeTableView; private Element element; private WContainerWidget detailsContainerWidget; private WLineEdit commentEditor; public WXmlElementEditor() { this.addTab(getDetailsContainerWidget(), "Details"); } public void setElement(Element element) { this.element = element; getAttributeTableView().setModel(new DomItemModel(this.element, DomUse.ATTRIBUTES)); Node node = getComment(); if(node != null && node instanceof Comment) { getCommentEditor().setText(node.getTextContent()); } else { getCommentEditor().setText(""); } } private Comment getComment() { Comment comment = null; Node node = element.getPreviousSibling(); while(node != null) { if(node instanceof Element) { break; } else if (node instanceof Comment) { comment = (Comment) node; break; } else { node = node.getPreviousSibling(); } } return comment; } private WTableView getAttributeTableView() { if (attributeTableView == null) { attributeTableView = new WTableView(); attributeTableView.addStyleClass("bg-transparent"); attributeTableView.setItemDelegateForColumn(0, new WCSSItemDelegate("font-weight: bold;")); attributeTableView.setSortingEnabled(true); attributeTableView.setSelectable(true); attributeTableView.setAlternatingRowColors(true); attributeTableView.setColumnResizeEnabled(true); attributeTableView.setColumnAlignment(0, AlignmentFlag.AlignRight); attributeTableView.setColumnWidth(1, new WLength(500)); attributeTableView.setSelectionMode(SelectionMode.SingleSelection); } return attributeTableView; } private WContainerWidget getDetailsContainerWidget() { if (detailsContainerWidget == null) { detailsContainerWidget = new WContainerWidget(); detailsContainerWidget.addWidget(getCommentEditor()); detailsContainerWidget.addWidget(getAttributeTableView()); } return detailsContainerWidget; } private WLineEdit getCommentEditor() { if(commentEditor == null) { commentEditor = new WLineEdit(); commentEditor.setWidth(new WLength(95,Unit.Percentage)); commentEditor.setMargin(5); } return commentEditor; } }