use of net.heartsome.cat.ts.test.ui.utils.XliffUtil in project translationstudio8 by heartsome.
the class MergeSegments method MergeWithNoPartner.
/**
* 尝试将文本段与不存在的上/下一个文本段合并
* @param xe 编辑器
* @param segNum 文本段序号
* @param direction 合并方向,只能为 N 或 P
*/
private static void MergeWithNoPartner(XlfEditor xe, int segNum, String direction) {
assertTrue("Wrong value for parameter \"direction\".", "N".equals(direction) || "P".equals(direction));
String rowID = xe.rowIdOfSegNum(segNum);
XliffUtil xu = new XliffUtil(rowID);
String tuid = xu.getTUID();
String srcText = xu.getSourceText();
if ("N".equals(direction)) {
TryMergeAndVerifyMsg(xe, xu, null, segNum, 0, "N");
} else {
TryMergeAndVerifyMsg(xe, null, xu, 0, segNum, "P");
}
// 更新 NatTable
xe.getNatTable();
// 更新 XliffUtil
xu = new XliffUtil(rowID);
// 断言文本段没有被改动
SegmentAsserts.segNoChange(xu, tuid, srcText);
}
use of net.heartsome.cat.ts.test.ui.utils.XliffUtil in project translationstudio8 by heartsome.
the class MergeSegments method MergeSegs.
/**
* 合并两个文本段,仅适合能取到要合并的两个文本段序号的情况
* @param xe 要操作的 XliffEditor 对象
* @param segNum 由要合并的两个文本段序号组成的 int 数组
* @param direction 合并方向:N 表示 Next,即与下一文本段合并;P 表示 Previous,即与上一文本段合并
*/
public static void MergeSegs(XlfEditor xe, int[] segNum, String direction) {
// 先判断传入的方向参数是否正确
assertTrue("Wrong value for parameter \"direction\".", "N".equals(direction) || "P".equals(direction));
String[] rowID = new String[2];
XliffUtil[] xu = new XliffUtil[2];
String[] tuid = new String[2];
String[] srcText = new String[2];
for (int i = 0; i < 2; i++) {
rowID[i] = xe.rowIdOfSegNum(segNum[i]);
xu[i] = new XliffUtil(rowID[i]);
tuid[i] = xu[i].getTUID();
srcText[i] = xu[i].getSourceText();
}
// 判断两个文本段符合合并文本段的条件
if (SegmentAsserts.segsAreMergeable(xe, xu[0], xu[1])) {
// 预先得到合并后的源文本内容
String tag = "<ph id=\"hs-merge" + tuid[0] + "~" + tuid[1] + "\"/>";
String expectedText = srcText[0] + tag + srcText[1];
// 方向为与下一文本段合并
if (direction.equals("N")) {
xe.gotoSeg(segNum[0]);
// ts.menuTranslationMergeWithNextSegment().click(); // FIXME
} else // 方向为与上一文本段合并
{
xe.gotoSeg(segNum[1]);
// ts.menuTranslationMergeWithPreivousSegment().click(); // FIXME
}
// 更新 NatTable
xe.getNatTable();
// 更新 XliffUtil
for (int i = 0; i < 2; i++) {
xu[i] = new XliffUtil(rowID[i]);
}
// 断言指定的两个文本段已经成功合并
SegmentAsserts.segsAreMerged(xu, tuid, expectedText);
} else // 不符合合并条件
{
// 跳到指定文本段,尝试执行合并操作
TryMergeAndVerifyMsg(xe, xu[0], xu[1], segNum[0], segNum[1], direction);
// 更新 NatTable
xe.getNatTable();
// 更新 XliffUtil
for (int i = 0; i < 2; i++) {
xu[i] = new XliffUtil(rowID[i]);
}
// 断言指定的两个文本段没有被合并
SegmentAsserts.segsNotMerged(xu, tuid, srcText);
}
}
use of net.heartsome.cat.ts.test.ui.utils.XliffUtil in project translationstudio8 by heartsome.
the class SplitSegment method splitApprovedSeg.
/**
* 尝试分割已批准的文本段
* @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);
}
use of net.heartsome.cat.ts.test.ui.utils.XliffUtil in project translationstudio8 by heartsome.
the class SplitSegment method splitWithoutCursor.
/**
* 尝试不将光标置于源文本中直接分割
* @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);
}
use of net.heartsome.cat.ts.test.ui.utils.XliffUtil in project translationstudio8 by heartsome.
the class XlfEditor method getSplitXliffUtil.
// public String ctxMenuTargetStatenew() {
// return TsUIConstants.getString("TargetStateNew");
// }
//
// public String ctxMenuTargetStatefinal() {
// return TsUIConstants.getString("TargetStatefinal");
// }
//
// public String ctxMenuTargetStatetranslated() {
// return TsUIConstants.getString("TargetStatetranslated");
// }
//
// public String ctxMenuTargetStatesigned_off() {
// return TsUIConstants.getString("TargetStatesigned-off");
// }
//
// public String ctxMenuTargetStateneeds_adaptation() {
// return TsUIConstants.getString("TargetStateneeds-adaptation");
// }
//
// public String ctxMenuTargetStateneeds_reivew_adaptation() {
// return TsUIConstants.getString("TargetStateneeds-reivew-adaptation");
// }
//
// public String ctxMenuTargetStateneeds_l10n() {
// return TsUIConstants.getString("TargetStateneeds-l10n");
// }
//
// public String ctxMenuTargetStateneeds_review_l10n() {
// return TsUIConstants.getString("TargetStateneeds-review-l10n");
// }
//
// public String ctxMenuTargetStateneeds_translation() {
// return TsUIConstants.getString("TargetStateneeds-translation");
// }
//
// public String ctxMenuTargetStateneeds_review_translation() {
// return TsUIConstants.getString("TargetStateneeds-review-translation");
// }
/************** 一些常用的任务 ************ */
/**
* @param expectedText 字符串数组:分割后的文本段内容
* @return XliffUtil 数组:分割后的新 XliffUtil 对象;
*/
public XliffUtil[] getSplitXliffUtil(String[] expectedText) {
XliffUtil[] xu = new XliffUtil[2];
int segNum1 = segNumOfSource(expectedText[0]);
String rowID1 = rowIdOfSegNum(segNum1);
xu[0] = new XliffUtil(rowID1);
int segNum2 = segNumOfSource(expectedText[1]);
String rowID2 = rowIdOfSegNum(segNum2);
xu[1] = new XliffUtil(rowID2);
return xu;
}
Aggregations