private int GenBrowserCode(String url, String title, String appName, int hBrwsWnd) { if (!this.hwndBrowserToIndex.ContainsKey(hBrwsWnd)) { RawStatement startup = null; int nIndex = this.hwndBrowserToIndex.Count; this.hwndBrowserToIndex.Add(hBrwsWnd, nIndex); if (nIndex == 0) { startup = RawStatement.CreateStartBrowserStatement(url, nIndex, hBrwsWnd); } else { startup = RawStatement.CreateFindBrowserStatement(url, title, appName, nIndex, hBrwsWnd); } this.AddStatement(startup); return(nIndex); } else { return(this.hwndBrowserToIndex[hBrwsWnd]); } }
static public RawStatement CreateBackStatement() { RawStatement backStatement = new RawStatement(); backStatement.type = RawStatementType.BACK_NAVIGATION; return(backStatement); }
static public RawStatement CreateForwardStatement() { RawStatement fwdStatement = new RawStatement(); fwdStatement.type = RawStatementType.FORWARD_NAVIGATION; return(fwdStatement); }
private void OnRecordForward(Object sender, EventArgs evt) { if (this.hwndBrowserToIndex.Count > 0) { RawStatement fwdtatement = RawStatement.CreateForwardStatement(); this.AddStatement(fwdtatement); } }
private void OnRecordBack(Object sender, EventArgs evt) { if (this.hwndBrowserToIndex.Count > 0) { RawStatement backStatement = RawStatement.CreateBackStatement(); this.AddStatement(backStatement); } }
static public RawStatement CreateStartBrowserStatement(String url, int brwsNameIndex, int brwsHwnd) { RawStatement result = new RawStatement(); result.type = RawStatementType.START_UP; result.browserURL = url; result.browserNameIdx = brwsNameIndex; result.browserHWND = brwsHwnd; return(result); }
static public RawStatement CreateSelectionChangeStatement ( String tag, String attr, String attrVal, List <String> val, bool isMultipleSel, bool genVarForSelect, int index, int brwsNameIndex ) { RawStatement rs = CreateChangeStatement(RawStatementType.SELECTION_CHANGE, tag, attr, attrVal, val, index, brwsNameIndex); rs.generateVarForSelect = genVarForSelect && isMultipleSel && (val.Count > 1); rs.isMultipleSelection = isMultipleSel; return(rs); }
static public RawStatement CreateClickStatement(String tag, String attr, String attrVal, int index, bool isChecked, bool isRightClick, int brwsNameIndex) { RawStatement result = new RawStatement(); result.type = isRightClick ? RawStatementType.RIGHT_CLICK : RawStatementType.CLICK; result.tagName = tag; result.attributeName = attr; result.attributeValue = attrVal; result.index = index; result.isChecked = isChecked; return(result); }
private void EmitStatement(RawStatement rs) { String newStatement = this.languageGenerator.Generate(rs); if (newStatement != null) { newStatement += "\n"; this.allCode += newStatement; if (NewStatement != null) { this.NewStatement(this, new CodeGenEventArgs(newStatement)); } } }
private void OnClick(Object sender, RecEventArgs evt, bool isRightClick) { int brwsNameIndex = GenBrowserCode(evt.BrowserURL, evt.BrowserTitle, evt.BrowserAppName, evt.BrowserHWND); String attr; String attrVal; String twebstTagName = ComputeTwebstTagName(evt); bool success = GetAttrToRecord(evt, out attr, out attrVal); // What to do if no attribute (success is false). Use only index or don't record anything? int index = ComputeIndex(evt, twebstTagName, attr, attrVal); RawStatement rs = RawStatement.CreateClickStatement(twebstTagName, attr, attrVal, index, evt.IsChecked, isRightClick, brwsNameIndex); this.AddStatement(rs); }
public override bool Equals(Object obj) { if (obj == null || (GetType() != obj.GetType())) { return(false); } RawStatement otherRawStat = (RawStatement)obj; return((this.isMultipleSelection == otherRawStat.isMultipleSelection) && (this.tagName == otherRawStat.tagName) && (this.attributeValue == otherRawStat.attributeValue) && (this.attributeName == otherRawStat.attributeName) && (this.type == otherRawStat.type) && (this.browserURL == otherRawStat.browserURL)); }
static private RawStatement CreateChangeStatement ( RawStatementType t, String tag, String attr, String attrVal, List <String> val, int index, int brwsNameIndex ) { RawStatement result = new RawStatement(); result.type = t; result.tagName = tag; result.attributeName = attr; result.attributeValue = attrVal; result.values = val; result.index = index; return(result); }
private void OnChangeAction(Object sender, RecEventArgs evt) { int brwsNameIndex = GenBrowserCode(evt.BrowserURL, evt.BrowserTitle, evt.BrowserAppName, evt.BrowserHWND); String attr; String attrVal; bool success = GetAttrToRecord(evt, out attr, out attrVal); String twebstTagName = ComputeTwebstTagName(evt); int index = ComputeIndex(evt, twebstTagName, attr, attrVal); if (evt.TagName == "select") { RawStatement rs = RawStatement.CreateSelectionChangeStatement(twebstTagName, attr, attrVal, evt.Values, evt.IsMultipleSelection, !this.IsSelectVarDeclared, index, brwsNameIndex); if (evt.IsMultipleSelection) { RawStatement lastStatement = this.LastStatement; if (lastStatement != null) { if (lastStatement.Equals(rs)) { this.rawStatements[this.rawStatements.Count - 1] = rs; this.FireCodeChanged(); } else { this.AddStatement(rs); } } else { this.AddStatement(rs); } } else { this.AddStatement(rs); } } else { RawStatement rs = RawStatement.CreateTextChangeStatement(twebstTagName, attr, attrVal, evt.Values, index, brwsNameIndex); this.AddStatement(rs); } }
public void DeleteLastStatement() { if (this.rawStatements.Count > 0) { RawStatement lastStatement = this.rawStatements[this.rawStatements.Count - 1]; if (lastStatement.BrowserHWND != -1) { this.hwndBrowserToIndex.Remove(lastStatement.BrowserHWND); } this.rawStatements.RemoveAt(this.rawStatements.Count - 1); if (this.rawStatements.Count == 0) { this.Reset(); } this.FireCodeChanged(); } }
static public RawStatement CreateFindBrowserStatement ( String url, String title, String appName, int brwsNameIndex, int brwsHwnd ) { RawStatement result = new RawStatement(); result.type = RawStatementType.FIND_BROWSER; result.browserURL = url; result.browserNameIdx = brwsNameIndex; result.browserHWND = brwsHwnd; result.browserAppName = appName; result.browserTitle = title; return(result); }
internal String Generate(RawStatement rs) { String result = null; switch (rs.Type) { case RawStatementType.BACK_NAVIGATION: { result = BACK_NAVIGATION_STATEMENT; break; } case RawStatementType.FORWARD_NAVIGATION: { result = FORWARD_NAVIGATION_STATEMENT; break; } case RawStatementType.START_UP: { String startup = START_UP_STATEMENT; result = String.Format(startup, rs.Url); break; } case RawStatementType.RIGHT_CLICK: case RawStatementType.CLICK: { String action = ((RawStatementType.CLICK == rs.Type) ? this.CLICK_ACTION_CALL : this.RIGHT_CLICK_ACTION_CALL); if (rs.TagName == "input radio") { // For radios alwasy generate Check. To un-check a radio just click on another radio in the group. action = this.CHECK_ACTION_CALL; } else if (rs.TagName == "input checkbox") { if (rs.IsChecked) { action = this.UNCHECK_ACTION_CALL; } else { action = this.CHECK_ACTION_CALL; } } if (rs.Index == 0) { if ((rs.AttrValue != null) && (rs.AttrName != null)) { String click = CLICK_NO_INDEX_STATEMENT; String attrVal = EscapeStr(rs.AttrValue); result = String.Format(click, EncodeHtmlTagName(rs.TagName), EncodeAttrName(rs.AttrName), attrVal, action); } else { // No relevant attribute, use only index which is zero so don't mention it. String click = CLICK_NO_INDEX_NO_ATTR_STATEMENT; result = String.Format(click, EncodeHtmlTagName(rs.TagName), action); } } else { if ((rs.AttrValue != null) && (rs.AttrName != null)) { String click = CLICK_STATEMENT; String attrVal = EscapeStr(rs.AttrValue); result = String.Format(click, EncodeHtmlTagName(rs.TagName), EncodeAttrName(rs.AttrName), attrVal, EncodeIndex(rs.Index), action); } else { // No relevant attribute, use only index. String click = CLICK_NO_ATTR_STATEMENT; String attrVal = EscapeStr(rs.AttrValue); result = String.Format(click, EncodeHtmlTagName(rs.TagName), EncodeIndex(rs.Index), action); } } break; } case RawStatementType.TEXT_CHANGE: { if (rs.Index == 0) { if ((rs.AttrValue != null) && (rs.AttrName != null)) { String textChange = TEXT_CHANGED_NO_INDEX_STATEMENT; String attrVal = EscapeStr(rs.AttrValue); result = String.Format(textChange, EncodeHtmlTagName(rs.TagName), EncodeAttrName(rs.AttrName), attrVal, EscapeStr(rs.Values[0])); } else { String textChange = TEXT_CHANGED_NO_INDEX_NO_ATTR_STATEMENT; result = String.Format(textChange, EncodeHtmlTagName(rs.TagName), EscapeStr(rs.Values[0])); } } else { if ((rs.AttrValue != null) && (rs.AttrName != null)) { String textChange = TEXT_CHANGED_STATEMENT; String attrVal = EscapeStr(rs.AttrValue); result = String.Format(textChange, EncodeHtmlTagName(rs.TagName), EncodeAttrName(rs.AttrName), attrVal, EncodeIndex(rs.Index), EscapeStr(rs.Values[0])); } else { String textChange = TEXT_CHANGED_NO_ATTR_STATEMENT; String attrVal = EscapeStr(rs.AttrValue); result = String.Format(textChange, EncodeHtmlTagName(rs.TagName), EncodeIndex(rs.Index), EscapeStr(rs.Values[0])); } } if (rs.TagName == "input file") { if (this.IEVersion.CompareTo("8") >= 0) { result = TEXT_CHANGED_ON_FILE_IE8_COMMENT + "\n" + result; } } break; } case RawStatementType.SELECTION_CHANGE: { if (rs.IsMultipleSelection && (rs.Values.Count > 1)) { String varDecl = (rs.DeclareSelectVar ? SELECT_MULTIPLE_DECLARATION : ""); String attrVal = EscapeStr(rs.AttrValue); String textSelChange = null; String selectAction = String.Format(SELECT_MULTIPLE_FIRST_ITEM_STATEMENT, EscapeStr(rs.Values[0])); if (rs.Index == 0) { if ((rs.AttrValue != null) && (rs.AttrName != null)) { textSelChange = String.Format(SELECT_MULTIPLE_NO_INDEX_STATEMENT, varDecl, rs.TagName, EncodeAttrName(rs.AttrName), attrVal); } else { textSelChange = String.Format(SELECT_MULTIPLE_NO_INDEX_NO_ATTR_STATEMENT, varDecl, rs.TagName); } } else { if ((rs.AttrValue != null) && (rs.AttrName != null)) { textSelChange = String.Format(SELECT_MULTIPLE_STATEMENT, varDecl, EncodeHtmlTagName(rs.TagName), EncodeAttrName(rs.AttrName), attrVal, EncodeIndex(rs.Index)); } else { textSelChange = String.Format(SELECT_MULTIPLE_NO_ATTR_STATEMENT, varDecl, EncodeHtmlTagName(rs.TagName), EncodeIndex(rs.Index)); } } result = textSelChange + selectAction; // AddSelection for the rest of the items to be selected. for (int i = 1; i < rs.Values.Count; ++i) { selectAction = String.Format(ADD_SELECTION_STATEMENT, EscapeStr(rs.Values[i])); result += selectAction; } result += "\n"; } else { if (rs.Index == 0) { if ((rs.AttrValue != null) && (rs.AttrName != null)) { String attrVal = EscapeStr(rs.AttrValue); String selectChange = SELECT_NO_INDEX_STATEMENT; result = String.Format(selectChange, EncodeHtmlTagName(rs.TagName), EncodeAttrName(rs.AttrName), attrVal, EscapeStr(rs.Values[0])); } else { String selectChange = SELECT_NO_INDEX_NO_ATTR_STATEMENT; result = String.Format(selectChange, EncodeHtmlTagName(rs.TagName), EscapeStr(rs.Values[0])); } } else { if ((rs.AttrValue != null) && (rs.AttrName != null)) { String attrVal = EscapeStr(rs.AttrValue); String selectChange = SELECT_STATEMENT; result = String.Format(selectChange, EncodeHtmlTagName(rs.TagName), EncodeAttrName(rs.AttrName), attrVal, EncodeIndex(rs.Index), EscapeStr(rs.Values[0])); } else { String selectChange = SELECT_NO_ATTR_STATEMENT; result = String.Format(selectChange, EncodeHtmlTagName(rs.TagName), EncodeIndex(rs.Index), EscapeStr(rs.Values[0])); } } } break; } } return(result); }
private void AddStatement(RawStatement rs) { this.rawStatements.Add(rs); this.EmitStatement(rs); }