Exemplo n.º 1
0
        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]);
            }
        }
Exemplo n.º 2
0
        static public RawStatement CreateBackStatement()
        {
            RawStatement backStatement = new RawStatement();

            backStatement.type = RawStatementType.BACK_NAVIGATION;

            return(backStatement);
        }
Exemplo n.º 3
0
        static public RawStatement CreateForwardStatement()
        {
            RawStatement fwdStatement = new RawStatement();

            fwdStatement.type = RawStatementType.FORWARD_NAVIGATION;

            return(fwdStatement);
        }
Exemplo n.º 4
0
 private void OnRecordForward(Object sender, EventArgs evt)
 {
     if (this.hwndBrowserToIndex.Count > 0)
     {
         RawStatement fwdtatement = RawStatement.CreateForwardStatement();
         this.AddStatement(fwdtatement);
     }
 }
Exemplo n.º 5
0
 private void OnRecordBack(Object sender, EventArgs evt)
 {
     if (this.hwndBrowserToIndex.Count > 0)
     {
         RawStatement backStatement = RawStatement.CreateBackStatement();
         this.AddStatement(backStatement);
     }
 }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
        }
Exemplo n.º 8
0
        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);
        }
Exemplo n.º 9
0
        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));
                }
            }
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
        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));
        }
Exemplo n.º 12
0
        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);
        }
Exemplo n.º 13
0
        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);
            }
        }
Exemplo n.º 14
0
        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();
            }
        }
Exemplo n.º 15
0
        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);
        }
Exemplo n.º 16
0
        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);
        }
Exemplo n.º 17
0
 private void AddStatement(RawStatement rs)
 {
     this.rawStatements.Add(rs);
     this.EmitStatement(rs);
 }