Search in sources :

Example 1 with XliffUtil

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);
}
Also used : XliffUtil(net.heartsome.cat.ts.test.ui.utils.XliffUtil)

Example 2 with XliffUtil

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);
    }
}
Also used : XliffUtil(net.heartsome.cat.ts.test.ui.utils.XliffUtil)

Example 3 with XliffUtil

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);
}
Also used : XliffUtil(net.heartsome.cat.ts.test.ui.utils.XliffUtil) InformationDialog(net.heartsome.cat.ts.test.ui.msgdialogs.InformationDialog) HsSWTBotStyledText(net.heartsome.test.swtbot.widgets.HsSWTBotStyledText)

Example 4 with XliffUtil

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);
}
Also used : XliffUtil(net.heartsome.cat.ts.test.ui.utils.XliffUtil) InformationDialog(net.heartsome.cat.ts.test.ui.msgdialogs.InformationDialog) SWTBotNatTable(net.heartsome.test.swtbot.widgets.SWTBotNatTable) Position(org.eclipse.swtbot.swt.finder.utils.Position)

Example 5 with XliffUtil

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;
}
Also used : XliffUtil(net.heartsome.cat.ts.test.ui.utils.XliffUtil)

Aggregations

XliffUtil (net.heartsome.cat.ts.test.ui.utils.XliffUtil)9 InformationDialog (net.heartsome.cat.ts.test.ui.msgdialogs.InformationDialog)3 HsSWTBotStyledText (net.heartsome.test.swtbot.widgets.HsSWTBotStyledText)2 TS (net.heartsome.cat.ts.test.ui.dialogs.TS)1 XlfEditor (net.heartsome.cat.ts.test.ui.editors.XlfEditor)1 ProjectTreeItem (net.heartsome.cat.ts.test.ui.views.ProjectTreeItem)1 SWTBotNatTable (net.heartsome.test.swtbot.widgets.SWTBotNatTable)1 Position (org.eclipse.swtbot.swt.finder.utils.Position)1 Ignore (org.junit.Ignore)1 Test (org.junit.Test)1