void textArea1_textValueChanged(TextEvent e) { dirty=true; }This will make sure that any character typed in the text area will force the dirty flag to true.
if (!dirty) { return true; }The okToAbandon() method should now look like this:
boolean okToAbandon() { if (!dirty) { return true; } message1.setButtonSet(Message.YES_NO_CANCEL); message1.setTitle("Text Edit"); message1.setMessage("Save changes?"); message1.show(); switch (message1.getResult()) { case Message.YES: // yes, please save changes return saveFile(); case Message.NO: // no, abandon edits // i.e. return true without saving return true; case Message.CANCEL: default: // cancel return false; } }