}
return bean;
}
static private WidgetBean createWidgetBean(String sitemapName, Widget widget, boolean drillDown, URI uri, String widgetId) {
ItemUIRegistry itemUIRegistry = RESTApplication.getItemUIRegistry();
// Test visibility
if(itemUIRegistry.getVisiblity(widget) == false)
return null;
WidgetBean bean = new WidgetBean();
if(widget.getItem()!=null) {
Item item = ItemResource.getItem(widget.getItem());
if(item!=null) {
bean.item = ItemResource.createItemBean(item, false, UriBuilder.fromUri(uri).build().toASCIIString());
}
}
bean.widgetId = widgetId;
bean.icon = itemUIRegistry.getIcon(widget);
bean.labelcolor = itemUIRegistry.getLabelColor(widget);
bean.valuecolor = itemUIRegistry.getValueColor(widget);
bean.label = itemUIRegistry.getLabel(widget);
bean.type = widget.eClass().getName();
if (widget instanceof LinkableWidget) {
LinkableWidget linkableWidget = (LinkableWidget) widget;
EList<Widget> children = itemUIRegistry.getChildren(linkableWidget);
if(widget instanceof Frame) {
int cntWidget=0;
for(Widget child : children) {
widgetId += "_" + cntWidget;
WidgetBean subWidget = createWidgetBean(sitemapName, child, drillDown, uri, widgetId);
if(subWidget != null) {
bean.widgets.add(subWidget);
cntWidget++;
}
}
} else if(children.size()>0) {
String pageName = itemUIRegistry.getWidgetId(linkableWidget);
bean.linkedPage = createPageBean(sitemapName, itemUIRegistry.getLabel(widget), itemUIRegistry.getIcon(widget), pageName,
drillDown ? children : null, drillDown, isLeaf(children), uri);
}
}
if(widget instanceof Switch) {
Switch switchWidget = (Switch) widget;
for(Mapping mapping : switchWidget.getMappings()) {
MappingBean mappingBean = new MappingBean();
// Remove quotes - if they exist
if(mapping.getCmd() != null) {
if(mapping.getCmd().startsWith("\"") && mapping.getCmd().endsWith("\"")) {
mappingBean.command = mapping.getCmd().substring(1, mapping.getCmd().length()-1);
}
else {
mappingBean.command = mapping.getCmd();
}
}
else {
mappingBean.command = mapping.getCmd();
}
mappingBean.label = mapping.getLabel();
bean.mappings.add(mappingBean);
}
}
if (widget instanceof Selection) {
Selection selectionWidget = (Selection) widget;
for (Mapping mapping : selectionWidget.getMappings()) {
MappingBean mappingBean = new MappingBean();
// Remove quotes - if they exist
if(mapping.getCmd() != null) {
if(mapping.getCmd().startsWith("\"") && mapping.getCmd().endsWith("\"")) {
mappingBean.command = mapping.getCmd().substring(1, mapping.getCmd().length()-1);
}
else {
mappingBean.command = mapping.getCmd();
}
}
else {
mappingBean.command = mapping.getCmd();
}
mappingBean.label = mapping.getLabel();
bean.mappings.add(mappingBean);
}
}
if(widget instanceof Slider) {
Slider sliderWidget = (Slider) widget;
bean.sendFrequency = sliderWidget.getFrequency();
bean.switchSupport = sliderWidget.isSwitchEnabled();
}
if(widget instanceof List) {
List listWidget = (List) widget;
bean.separator = listWidget.getSeparator();
}
if (widget instanceof Image ||
widget instanceof Video ||
widget instanceof Webview) {
if(widget instanceof Image) {
Image imageWidget = (Image) widget;
if(imageWidget.getRefresh() > 0) {
bean.refresh = imageWidget.getRefresh();
}
bean.url = imageWidget.getUrl();
}
else if (widget instanceof Video) {
Video videoWidget = (Video) widget;
if(videoWidget.getEncoding() != null) {
bean.encoding = videoWidget.getEncoding();
}
bean.url = videoWidget.getUrl();
}
else {
Webview webViewWidget = (Webview) widget;
bean.height = webViewWidget.getHeight();
bean.url = webViewWidget.getUrl();
}
String wId = itemUIRegistry.getWidgetId(widget);
StringBuilder sbBaseUrl = new StringBuilder();
sbBaseUrl.append(uri.getScheme()).append("://").append(uri.getHost());
if (uri.getPort() >= 0 && uri.getPort() != 80) {
sbBaseUrl.append(":").append(uri.getPort());