" + listParameter.getDescription() + "
"); descr.addStyleName("workflow-fieldDescription"); } horiz.add(listContainer, new BoxLayoutData(new Margins(0))); horiz.add(descr, new BoxLayoutData(new Margins(0))); fieldContainer.add(horiz); addField(null); } protected void addField(StringItem upperItem) { ObjectParameter objPar = new ObjectParameter(listParameter.getName(), listParameter.getDescription(), listParameter.getType(), null); if (upperItem == null) { StringItem item = new StringItem(this, objPar, true); items.add(item); vp.add(item); } else { // search the position of the upper item int pos = items.indexOf(upperItem); if (pos > -1) { upperItem.showCancelButton(); upperItem.forceLayout(); StringItem item = new StringItem(this, objPar, false); items.add(pos + 1, item); vp.insert(item, pos + 1);//don't use new VerticalLayoutData(1, -1,new Margins(0)) } else { upperItem.forceLayout(); StringItem item = new StringItem(this, objPar, true); items.add(item); vp.add(item);//don't use new VerticalLayoutData(-1, -1, new Margins(0)) } } forceLayout(); } protected void forceLayout(){ vp.forceLayout(); horiz.forceLayout(); fieldContainer.forceLayout(); } /** * @param item */ protected void removeField(StringItem item) { items.remove(item); vp.remove(item); if (items.size() == 1) { items.get(0).hideCancelButton(); items.get(0).forceLayout(); } forceLayout(); } /** * */ @Override public String getValue() { String separator = listParameter.getSeparator(); String value = ""; boolean first = true; for (StringItem item : items) { String itemValue = item.getValue(); if (itemValue != null && !itemValue.contentEquals("")) { value += (first ? "" : separator) + itemValue; first = false; } } return value; } /** * */ @Override public Widget getWidget() { return fieldContainer; } /** * */ @Override public boolean isValid() { boolean valid = false; for (StringItem item : items) if (item.isValid()) { valid = true; break; } return valid; } }