/** * 在指定文本段的 index 处分割文本段 * * @param xe * @param segNum * @param splitIndex */ public static void splitAt(XlfEditor xe, int segNum, int splitIndex) { // 判断该文本段是否可编辑 String rowID = xe.rowIdOfSegNum(segNum); XliffUtil xu = new XliffUtil(rowID); SegmentAsserts.segIsEditable(xu); // 进入编辑模式,方便读取样式文本框中的内容 xe.enterEditModeSource(segNum); // 在实际进行分割文本段之前,得到原文本段的 tuid 和分割后两个文本段的预期内容, // 用以在分割后验证得到的文本段内容是否符合预期。 String tuid = xe.tuidOfSegNum(segNum); // 判断给定的分割点是否可分割,然后在两个分支中分别验证结果 HsSWTBotStyledText st = xe.getStyledText(); if (SegmentAsserts.indexIsSplitable(st, splitIndex)) { String[] expectedText = st.splitTextAt(splitIndex); // 将光标移到指定位置,并点击相应的菜单项进行分割 xe.navigateToIndex(splitIndex); ts.menuTranslationSplitSegment().click(); xe.getNatTable(); // 确认文本段已按预期分割 SegmentAsserts.segIsSplit(tuid, expectedText, xe.getSplitXliffUtil(expectedText)); System.out.println( "[Passed] Segment No.\"" + segNum + "\" was successfully split at Index \"" + splitIndex + "\"."); } else { String expectedText = st.getText(); String position; // 将光标移到指定位置,并点击相应的菜单项进行分割 if (splitIndex <= 0) { position = "Beginning."; xe.navigateToBegining(); } else { position = "End."; xe.navigateToEnd(); } ts.menuTranslationSplitSegment().click(); // 弹出提示信息 InformationDialog dialog = new InformationDialog(1, TsUIConstants.getString("msgPlaceCursorToSplit")); dialog.lblMessage().isVisible(); dialog.btnOK().click(); xe.getNatTable(); // 确认文本段没有被分割 SegmentAsserts.segNotSplit(tuid, expectedText, xu); System.out.println("[Passed] Segment No.\"" + segNum + "\" was not split at the " + position); } }
/** * 尝试分割已批准的文本段 * * @param xe 要操作的 XlfEditor 对象 * @param segNum 尝试分割的文本段序号 */ public static void splitApprovedSeg(XlfEditor xe, int segNum) { // 判断该文本段是否已批准 String rowID = xe.rowIdOfSegNum(segNum); XliffUtil xu = new XliffUtil(rowID); assertTrue(xu.tuIsApproved()); // 进入编辑模式,方便读取样式文本框中的内容 xe.enterEditModeSource(segNum); // 在实际进行分割文本段之前,得到原文本段的 tuid 和分割后两个文本段的预期内容, // 用以在分割后验证得到的文本段内容是否符合预期。 String tuid = xe.tuidOfSegNum(segNum); // 判断给定的分割点是否可分割 HsSWTBotStyledText st = xe.getStyledText(); String expectedText = st.getText(); // 将光标移到任意位置(这里取 index=1),并点击相应的菜单项进行分割 xe.navigateToIndex(1); ts.menuTranslationSplitSegment().click(); // 弹出提示信息 InformationDialog dialog = new InformationDialog(1, TsUIConstants.getString("msgCannotMergeApprovedSeg")); dialog.lblMessage().isVisible(); dialog.btnOK().click(); xe.getNatTable(); // 确认文本段没有被分割 SegmentAsserts.segNotSplit(tuid, expectedText, xu); }
/** * 尝试不将光标置于源文本中直接分割 * * @param xe 要操作的 XlfEditor 对象 * @param segNum 尝试分割的文本段序号 */ public static void splitWithoutCursor(XlfEditor xe, int segNum) { // 判断该文本段是否可编辑 String rowID = xe.rowIdOfSegNum(segNum); XliffUtil xu = new XliffUtil(rowID); SegmentAsserts.segIsEditable(xu); // 选中文本段的源文本单元格,而不进入编辑状态 xe.selectSourceCell(segNum); // 在实际进行分割文本段之前,得到原文本段的 tuid,用以验证得到的文本段内容是否符合预期。 String tuid = xe.tuidOfSegNum(segNum); // 判断给定的分割点是否可分割 SWTBotNatTable nt = xe.getNatTable(); Position pos = nt.positionOfSelectedCell(); String expectedText = nt.getTextByPosition(pos.line, pos.column); // 点击相应的菜单项进行分割 ts.menuTranslationSplitSegment().click(); // 弹出提示信息 InformationDialog dialog = new InformationDialog(1, TsUIConstants.getString("msgPlaceCursorToSplit")); dialog.lblMessage().isVisible(); dialog.btnOK().click(); xe.getNatTable(); // 确认文本段没有被分割 SegmentAsserts.segNotSplit(tuid, expectedText, xu); }
/** 未打开文件时,分割文本段功能被禁用 */ public static void splitWithoutFile() { assertTrue(HSBot.bot().editors().isEmpty()); assertTrue(!ts.menuTranslationSplitSegment().isEnabled()); }