[ https://issues.apache.org/jira/browse/PIVOT-841?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sandro Martini updated PIVOT-841: --------------------------------- Fix Version/s: (was: 2.0.4) 2.5 > TextArea - ParagraphListener - textInserted method problem - count is equal 0 > ----------------------------------------------------------------------------- > > Key: PIVOT-841 > URL: https://issues.apache.org/jira/browse/PIVOT-841 > Project: Pivot > Issue Type: Bug > Components: wtk > Affects Versions: 2.0.1, 2.0.2 > Environment: Windows 7, Java 1.7.0_01 > Reporter: Imbue Lab > Assignee: Noel Grandin > Priority: Minor > Fix For: 2.5 > > > I use TextArea and want to listen to the inserted text (simply by using > keyboard). I do it using ParagraphListener. Every time new character is typed > a listener's method textInserted(Paragraph paragraph, int index, int count) > is invoked. Everything works fine till I press ENTER. In that case > textInserted method is invoked with "count" parameter set to 0. Does it make > any sense? > I've prepared the simplest example I could imagine, it looks ugly, but it's > simple and works :-) > Please take a look on the code below and description after it: > import org.apache.pivot.collections.Map; > import org.apache.pivot.wtk.Application; > import org.apache.pivot.wtk.DesktopApplicationContext; > import org.apache.pivot.wtk.Display; > import org.apache.pivot.wtk.TextArea; > import org.apache.pivot.wtk.TextArea.Paragraph; > import org.apache.pivot.wtk.TextArea.ParagraphListener; > import org.apache.pivot.wtk.TextAreaContentListener; > import org.apache.pivot.wtk.Window; > public class TextAreaListenersExample extends Application.Adapter { > @Override > public void startup(Display display, Map<String, String> properties) throws > Exception { > TextArea textArea = new TextArea(); > textArea.setText("abcxyz"); > //--- > final ParagraphListener paragraphListener = new > ParagraphListener.Adapter() { > @Override > public void textInserted(Paragraph paragraph, int index, int count) { > System.out.println("Text inserted\n\tparagraph content: '" + > paragraph.getCharacters() + "" + "'\n\tindex: " + index + "\n\tcount: " + > count); > } > @Override > public void textRemoved(Paragraph paragraph, int index, int count) { > System.out.println("Text removed\n\tparagraph content: '" + > paragraph.getCharacters() + "'\n\tindex: " + index + "\n\tcount: " + count); > } > }; > > > textArea.getParagraphs().get(0).getParagraphListeners().add(paragraphListener); > > textArea.getTextAreaContentListeners().add(new > TextAreaContentListener.Adapter() { > @Override > public void paragraphInserted(TextArea textArea, int index) { > Paragraph paragraph = textArea.getParagraphs().get(index); > > System.out.println("Paragraph inserted\n\tparagraph content: '" + > paragraph.getCharacters() + "'\n\tindex: " + index); > > paragraph.getParagraphListeners().add(paragraphListener); > } > }); > > Window window = new Window(textArea); > > window.open(display); > } > public static void main(String[] args) throws Exception { > DesktopApplicationContext.main(TextAreaListenersExample.class, new > String[0]); > } > } > When you place carret after the "c" character in the TextArea and press > ENTER, you get following output: > Text removed > paragraph content: 'abc' <- text 'xyz' was removed from the first > paragraph 'abcxyz' > index: 3 > count: 3 > Text inserted > paragraph content: 'abc' <- first paragraph insertion, probably it was > ENTER > index: 3 > count: 0 <- count is 0!!! > Paragraph inserted > paragraph content: 'xyz' <- new paragraph is inserted together with the > content > index: 1 > Text inserted > paragraph content: 'xyz' <- I don't know why insertion happens here > index: 0 > count: 0 <- again, count is 0!!! > One more thing, maybe it would be better to have paragraph insertion without > any content (not like it is now), and after that text insertion with the all > content of the new created paragraph, it would be more intuitive and easier > to handle, I really struggle with that now. Can you consider that? -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira