Wednesday, December 24, 2014

Customise code tagging in AX 2012 – MS Dynamics AX Best practice

Code commenting is one of the best practice for any software development which really helps other team mates or future developers to understand code quickly. Code comments should be enough expounding for others.

MS Dynamics AX provides diverse possibilities to comment out code in much better and generic way through scripts. This can be used by right click in any method within AOT objects as shown;



Here we also have tagging option to use generic way to comment out our code and this could be really helpful when working on big projects. MS Dynamics AX uses a class EditorScript behind these scripts tool, I added a following method under this class for specific code comment pattern.









public void tagging_CodeModifications(Editor editor)
{
    #Define.NextLine('\n')
    int currentLineNo = editor.selectionStartLine();
    int currentCol    = editor.selectionStartCol();
    int selectedLine  = editor.selectionEndLine(); 
    Dialog          dialog          = new Dialog("Enter Project Number");  
    DialogField     dlgExtTypeName  = dialog.addField(extendedTypeStr(Name));
    container       dialogValue; 
    str tab = ""; 
    tab = strRep('\t', currentCol/4); 
    dialogValue = xSysLastValue::getValue(curExt(), curUserId(), UtilElementType::ClassInstanceMethod,    'SaveLastValue');

    if (dialogValue != conNull())
    {
        dlgExtTypeName.value(conPeek(dialogValue, 1));
    }

    if (dialog.run())
    {
        dialogValue = conNull(); 
        dialogValue += dlgExtTypeName.value(); 
        xSysLastValue::putValue(dialogValue, curExt(), curUserId(), UtilElementType::ClassInstanceMethod, 'SaveLastValue'); 
        editor.gotoLine(currentLineNo - 1);
        editor.gotoLine(currentLineNo);
        editor.gotoCol(currentCol); 
        editor.insertLines(strFmt('// Project_%1 %2 %3 ---> %4 %5', dlgExtTypeName.value(), strReplace(curUserId(),'I_',""), systemDateGet(), #NextLine, tab));
        editor.gotoLine(selectedLine + 2); 
        editor.insertLines(strFmt('%1// Project _%2 %3 %4 <---', tab, dlgExtTypeName.value(), strReplace(curUserId(),'I_',""), systemDateGet(), #NextLine));
    }
}

Output:



Click OK; following lines will be added into code.

// Project_CustInvoice faisal.f 24/12/2014 --->
// Project_CustInvoice faisal.f 24/12/2014 <--- data-blogger-escaped-span="">