It seems that I figured out how to use your extension, and it is a very nice piece of work. In the end, seeing the characters appear and disappear isn’t so bad, but the ‘bug’ is kind of strange.
To help you at least identify the bug, I have copied the code below. It is very rough, and hasn’t been cleaned up, so that may attribute to the way it works. None the less, I will copy it below in its current form so that you can see what’s going on which may shed some light.
private void applyFundsToTable() {
String numReg = "-?[0-9]
*";
String floatReg = "(\\+|-)?([0-9]
*(\\.{0,1}[0-9]
*))";
List<ComplexFund> funds = filterFunds();
complexTable.removeAllItems();
if (funds != null) {
for (final ComplexFund f : funds) {
CSValidator tnaValidator = new CSValidator();
tnaValidator.setPreventInvalidTyping(true);
CSValidator navValidator = new CSValidator();
navValidator.setPreventInvalidTyping(true);
CSValidator sharesValidator = new CSValidator();
sharesValidator.setPreventInvalidTyping(true);
tnaValidator.setRegExp(numReg);
navValidator.setRegExp(floatReg);
sharesValidator.setRegExp(numReg);
TextField tnaField = new TextField("");
tnaValidator.extend(tnaField);
tnaField.setWidth("140px");
tnaField.addFocusListener(new FieldEvents.FocusListener() {
@Override
public void focus(FieldEvents.FocusEvent event) {
rowFundClicked(f.getFundid());
complexTable.select(f.getFundid());
}
});
if (f.getTna() != null)
tnaField.setValue(f.getTna());
Button tnaButton = new Button("");
tnaButton.setWidth("40px");
tnaButton.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(Button.ClickEvent event) {
complexTable.select(f.getFundid());
rowFundClicked(f.getFundid());
if (tableEditable) {
ConfirmationWindow results = new ConfirmationWindow(dao, ConfirmationWindow.TNA_TYPE, f.getFundid(), f.getIob12());
UI.getCurrent().addWindow(results);
}
}
});
if (f.getTnac() != null)
tnaButton.setCaption(f.getTnac());
TextField navField = new TextField("");
navValidator.extend(navField);
navField.setWidth("140px");
navField.addFocusListener(new FieldEvents.FocusListener() {
@Override
public void focus(FieldEvents.FocusEvent event) {
rowFundClicked(f.getFundid());
complexTable.select(f.getFundid());
}
});
if (f.getNav() != null)
navField.setValue(f.getNav());
Button navButton = new Button("");
navButton.setWidth("40px");
navButton.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(Button.ClickEvent event) {
complexTable.select(f.getFundid());
rowFundClicked(f.getFundid());
if (tableEditable) {
ConfirmationWindow results = new ConfirmationWindow(dao, ConfirmationWindow.NAV_TYPE, f.getFundid(), f.getIob12());
UI.getCurrent().addWindow(results);
}
}
});
if (f.getNavc() != null)
navButton.setCaption(f.getNavc());
TextField sharesField = new TextField("");
sharesValidator.extend(sharesField);
sharesField.setWidth("140px");
sharesField.addFocusListener(new FieldEvents.FocusListener() {
@Override
public void focus(FieldEvents.FocusEvent event) {
complexTable.select(f.getFundid());
rowFundClicked(f.getFundid());
}
});
if (f.getShares() != null)
sharesField.setValue(f.getShares());
Button sharesButton = new Button("");
sharesButton.setWidth("40px");
sharesButton.addClickListener(new Button.ClickListener() {
@Override
public void buttonClick(Button.ClickEvent event) {
complexTable.select(f.getFundid());
rowFundClicked(f.getFundid());
if (tableEditable) {
ConfirmationWindow results = new ConfirmationWindow(dao, ConfirmationWindow.SHARES_TYPE, f.getFundid(), f.getIob12());
UI.getCurrent().addWindow(results);
}
}
});
if (f.getSharesc() != null)
sharesButton.setCaption(f.getSharesc());
complexTable.addItem(new Object[]{new Label(""+f.getFundid()), new Label(f.getTicker()), new Label(f.getName()), tnaField, tnaButton, navField, navButton, sharesField, sharesButton,
new Label(""+f.getClasstype()), new Label(""+f.getIob12()),
new Label(""+f.getTna_source()), new Label(f.getTna_entry_user()), new Label(f.getTna_entry_date()), new Label(f.getTna_update_user()), new Label(f.getTna_update_date()),
new Label(""+f.getNav_source()), new Label(f.getNav_entry_user()), new Label(f.getNav_entry_date()), new Label(f.getNav_update_user()), new Label(f.getNav_update_date()),
new Label(""+f.getShares_source()), new Label(f.getShares_entry_user()), new Label(f.getShares_entry_date()), new Label(f.getShares_update_user()), new Label(f.getShares_update_date()),
}, f.getFundid());
}
}
}