/** * {@inheritDoc} */ @Override public List<RowIdWrapper> getBeanList() { return super.getBeanList(); }
/** * Write the list of contacts into the WTextArea printOutput. */ private void printDetails() { StringBuilder builder = new StringBuilder("\"Name\",\"Phone\",\"Roles\",\"Identifier\"\n"); for (Object contact : repeater.getBeanList()) { builder.append(contact).append('\n'); } printOutput.setText(builder.toString()); }
/** * Write the list of contacts into the textarea console. Any modified phone numbers should be printed out. */ private void printEditedDetails() { StringBuilder buf = new StringBuilder(); for (Object contact : repeater.getBeanList()) { buf.append(contact).append('\n'); } console.setText(buf.toString()); }
/** * Retrieves the UIContext for a row, where the row index is not known. * * @param rowBean the row's bean. * @return The context for the given row. */ public UIContext getRowContext(final Object rowBean) { return getRowContext(rowBean, getBeanList().indexOf(rowBean)); }
/** * Retrieves the row contexts for all rows. * * @return A list containing a UIContext for each row. Will never return null, but it can return an empty list. */ public List<UIContext> getRowContexts() { List<?> beanList = this.getBeanList(); List<UIContext> contexts = new ArrayList<>(beanList.size()); for (int i = 0; i < beanList.size(); i++) { Object rowData = beanList.get(i); contexts.add(this.getRowContext(rowData, i)); } return Collections.unmodifiableList(contexts); }
@Override public void execute(final ActionEvent event) { List<NameBean> names = new ArrayList<>(repeat.getBeanList()); names.add(new NameBean(new Date().toString(), "F", "L")); repeat.setBeanList(names); } });
/** * @return a String representation of this component, for debugging purposes. */ @Override public String toString() { String text = getBeanList().size() + "x " + getRepeatedComponent().getClass(). getSimpleName(); return toString(text, -1, -1); }
/** * Show the current list of beans used by the repeater. */ public void show() { StringBuffer out = new StringBuffer(); for (Iterator iter = repeater.getBeanList().iterator(); iter.hasNext();) { MyData data = (MyData) iter.next(); out.append(data.getName()).append(" : ").append(data.getCount()).append('\n'); } selectorText.setText(out.toString()); } }
/** * @param uic the SubUIContext to determine the row index for * @return the row index for the specified SubUIContext. */ private int getRowIndex(final SubUIContext uic) { // SubUIContext does not cater for pagination return (Integer) table.getRepeater().getBeanList().get(uic.getRowIndex()); }
/** * @param table the table that the row renderer belongs to * @param uic the SubUIContext to determine the row index for * @return the row index for the specified SubUIContext. */ private int getRowIndex(final WDataTable table, final SubUIContext uic) { // SubUIContext does not cater for pagination return (Integer) table.getRepeater().getBeanList().get(uic.getRowIndex()); } }
/** * Remove a contact from the list. */ private void removeRow() { UIContext uic = UIContextHolder.getCurrent(); if (!(uic instanceof WRepeater.SubUIContext)) { return; } List list = new ArrayList(repeater.getBeanList()); list.remove((ContactDetails) repeater.getRowBeanForSubcontext((WRepeater.SubUIContext) uic)); repeater.setData(list); }
/** * Adds a new contact to the list of contacts. The contact's name is obtained from {@link newNameField}. */ private void addNewContact() { String name = newNameField.getText(); if (name != null && !"".equals(name)) { List list = new ArrayList(repeater.getBeanList()); list.add(new ContactDetails(name, null, new String[0])); repeater.setBeanList(list); } newNameField.setText(""); }
/** * Adds a new contact to the list of contacts. The contact's name is obtained from {@link newNameField}. */ private void addNewContact() { List list = new ArrayList(repeater.getBeanList()); list.add(new ContactDetails(newNameField.getText(), null, new String[0])); newNameField.setText(""); repeater.setBeanList(list); }
@Override public void updateData(final Object data) { MyDataBean myBean = (MyDataBean) data; myBean.setName(nameText.getText()); myBean.setMyBeans(repeater.getBeanList()); } }
@Test public void testSetBeanList() { WRepeater repeater = new WRepeater(); Assert.assertEquals("Default bean list should be empty", 0, repeater.getBeanList().size()); repeater.setLocked(true); setActiveContext(createUIContext()); repeater.setBeanList(Arrays.asList(ROW_DATA)); Assert.assertEquals("Incorrect bean list size", 3, repeater.getBeanList().size()); Assert.assertEquals("Incorrect row data 0", ROW_DATA[0], repeater.getBeanList().get(0)); Assert.assertEquals("Incorrect row data 1", ROW_DATA[1], repeater.getBeanList().get(1)); Assert.assertEquals("Incorrect row data 2", ROW_DATA[2], repeater.getBeanList().get(2)); resetContext(); Assert.assertEquals("Bean list for other UI context should be empty", 0, repeater. getBeanList().size()); }
/** * Override updateBeanValue to update the bean value for all WBeanComponents Updates the bean value with the value * returned by {@link #getData()}. */ @Override public void updateBeanValue() { List<?> beanList = this.getBeanList(); WComponent renderer = getRepeatedComponent(); for (int i = 0; i < beanList.size(); i++) { Object rowData = beanList.get(i); UIContext rowContext = getRowContext(rowData, i); UIContextHolder.pushContext(rowContext); try { WebUtilities.updateBeanValue(renderer); } finally { UIContextHolder.popContext(); } } }
/** * Validates each row. * * @param diags the list of SfpDiagnostics to add to. */ @Override public void validate(final List<Diagnostic> diags) { // Validate each row. List beanList = this.getBeanList(); WComponent row = getRepeatedComponent(); for (int i = 0; i < beanList.size(); i++) { Object rowData = beanList.get(i); UIContext rowContext = getRowContext(rowData, i); UIContextHolder.pushContext(rowContext); try { row.validate(diags); } finally { UIContextHolder.popContext(); } } }
/** * Visually marks any fields or blocks that have errors in the given diag list. * * @param diags the list of SfpDiagnostics from the last validation pass. */ @Override public void showErrorIndicators(final List<Diagnostic> diags) { // Show error indicators for each row. List beanList = this.getBeanList(); WComponent row = getRepeatedComponent(); for (int i = 0; i < beanList.size(); i++) { Object rowData = beanList.get(i); UIContext rowContext = getRowContext(rowData, i); UIContextHolder.pushContext(rowContext); try { row.showErrorIndicators(diags); } finally { UIContextHolder.popContext(); } } }
@Test public void testSortTable() { SimpleTableDataModel model = new SimpleTableDataModel(new String[][]{{"1"}, {"3"}, {"2"}}); model.setComparator(0, SimpleTableDataModel.COMPARABLE_COMPARATOR); WDataTable table = new WDataTable(); table.setSelectMode(WDataTable.SelectMode.SINGLE); table.setDataModel(model); table.addColumn(new WTableColumn("dummy", WText.class)); table.setLocked(true); setActiveContext(createUIContext()); // Sort table manually table.sort(0, true); Assert.assertTrue("Incorrect selection after sort method", table.isSorted()); Assert. assertEquals("Incorrect sort column after sort method", 0, table. getSortColumnIndex()); Assert.assertTrue("Incorrect sort direction after sort method", table.isSortAscending()); List<?> rowIndices = table.getRepeater().getBeanList(); Assert.assertEquals("Incorrect sort", Arrays.asList(new Integer[]{0, 2, 1}), rowIndices); }
@Test public void testHandleRequest() { WRepeater repeater = new WRepeater(); repeater.setRepeatedComponent(new WTextField()); repeater.setLocked(true); UIContext uic = createUIContext(); setActiveContext(uic); MockRequest request = new MockRequest(); repeater.setBeanList(Arrays.asList(ROW_DATA)); repeater.preparePaint(request); Assert.assertEquals("Incorrect row value before request", ROW_DATA[0], repeater. getBeanList().get(0)); UIContext rowContext = repeater.getRowContexts().get(0); setActiveContext(rowContext); String name = repeater.getRepeatedComponent().getId(); String newValue = ROW_DATA[0] + ".new"; request.setParameter(name, newValue); setActiveContext(uic); repeater.handleRequest(request); DataBound component = (DataBound) repeater.getRepeatedComponent(); setActiveContext(rowContext); Assert.assertEquals("Incorrect row value after request", newValue, component.getData()); }