/** * Load the styled string to be used by this control. <br> * It will also restore any text selection saved with the text. * * @param fname the name of the file to use * @return true if loaded successfully else false */ public boolean loadText(String fname) { StyledString ss = StyledString.load(winApp, fname); if (ss == null) return false; setStyledText(ss); // Now restore any text selection if (stext.startIdx >= 0) { // we have a selection // Selection starts at ... startTLHI = new TextLayoutHitInfo(); startTLHI.tli = stext.getTLIforCharNo(stext.startIdx); int pInLayout = stext.startIdx - startTLHI.tli.startCharIndex; if (pInLayout == 0) startTLHI.thi = startTLHI.tli.layout.getNextLeftHit(1); else startTLHI.thi = startTLHI.tli.layout.getNextRightHit(pInLayout - 1); // Selection ends at ... endTLHI = new TextLayoutHitInfo(); endTLHI.tli = stext.getTLIforCharNo(stext.endIdx); pInLayout = stext.endIdx - endTLHI.tli.startCharIndex; if (pInLayout == 0) endTLHI.thi = endTLHI.tli.layout.getNextLeftHit(1); else endTLHI.thi = endTLHI.tli.layout.getNextRightHit(pInLayout - 1); calculateCaretPos(endTLHI); } bufferInvalid = true; return true; }