/////////////////////////////////////////////////////////////////////////// // Scripting Tutorial #6 - More Object Options and Custom Dialog /////////////////////////////////////////////////////////////////////////// // Title // Report to list all attributes from the current selected object(s) // // Main new features // - More Objects as start base (Model, Object, Multiple Objects) // - Custom Dialog // // Author // Volker Eckardt, Oracle Corporation, April 2010 /////////////////////////////////////////////////////////////////////////// var nLocale=Context.getSelectedLanguage(); // NEW IN PART 6: global variable for reuse var sScriptName=Context.getScriptInfo(Constants.SCRIPT_NAME); // Attribute Header Values and Width var headerList = [getString("ID_ATTRIBUTE"), getString("ID_VALUE"), getString("ID_ID"), getString("ID_API_NAME")] var hWidthList = [30,30,10,30] // To show only maintained attributes set to false var bShowNotMaintainedAttr = false // To force a fixed Excel file name, set to true var bUseFixedOutPutFileName = false // NEW IN PART 6: font size list for dialog // Font Size List var aOutputFontSizeList = ["Small", "Medium", "Large"] var nOutputFontSizeOffset = 1 /** Main Function */ function main(){ // if you like to define the excel name explicitely, you can use the following instead: if (bUseFixedOutPutFileName == true && Context.getSelectedFormat()==Constants.OUTEXCEL) { var outFileName = Context.getScriptInfo(Constants.SCRIPT_NAME) + ".xls"; var oOutput = Context.createOutputObject(Context.getSelectedFormat(), outFileName); } else { // Create an output Object var oOutput = Context.createOutputObject(); } // define multiple styles defineStyles(oOutput); // set the html page name oOutput.SetTitle(sScriptName) // read the current selected objects var objoccs = ArisData.getSelectedObjOccs(); // NEW IN PART 6: Further Object support // if no object occurrence is selected, try also objectdef if (objoccs.length == 0) { var objDefs = ArisData.getSelectedObjDefs (); // is at least one object is selected // hint: you can select multiple objects in the search result window if (objDefs.length > 0) // collect referenced object occurrences objoccs = collectObjOccs(objDefs) else { // if no objOcc and no objDef is selected, try model var modDefs = ArisData.getSelectedModels() // is a model selected? Take the first only. if ( modDefs.length > 0 ) objoccs = modDefs[0].ObjOccListFilter() } } // if at least one object selected if (objoccs.length > 0) { // loop through all objects in the list for (o=0;o 0)); } /** Defines a format template - style * @param {Output} oOutput The output object */ function defineStyles(oOutput) { oOutput.DefineF("TEXT", getString("ID_DEFAULT_FONT"), 8+nOutputFontSizeOffset, Constants.C_DARK_BLUE, Constants.C_TRANSPARENT, Constants.FMT_LEFT, 0, 0, 0, 0, 0, 0); oOutput.DefineF("TABLE_HEAD",getString("ID_DEFAULT_FONT"), 9+nOutputFontSizeOffset, Constants.C_BLACK, Constants.C_SKY_BLUE, Constants.FMT_BOLD | Constants.FMT_CENTER | Constants.FMT_VCENTER, 0, 0, 0, 0, 0, 1); oOutput.DefineF("TABLE_HEAD_RIGHT",getString("ID_DEFAULT_FONT"), 9+nOutputFontSizeOffset, Constants.C_BLACK, Constants.C_SKY_BLUE, Constants.FMT_BOLD | Constants.FMT_RIGHT | Constants.FMT_VCENTER, 0, 0, 0, 0, 0, 1); oOutput.DefineF("TABLE_DATA",getString("ID_DEFAULT_FONT"), 9+nOutputFontSizeOffset, Constants.C_BLACK, Constants.C_WHITE, Constants.FMT_LEFT | Constants.FMT_VCENTER, 0, 0, 0, 0, 0, 1); oOutput.DefineF("ERROR",getString("ID_DEFAULT_FONT"), 11+nOutputFontSizeOffset, Constants.C_RED, Constants.C_WHITE, Constants.FMT_LEFT | Constants.FMT_VCENTER, 0, 0, 0, 0, 0, 1); oOutput.DefineF("TITLE",getString("ID_DEFAULT_FONT"), 13+nOutputFontSizeOffset, Constants.C_OLIVE, Constants.C_WHITE, Constants.FMT_BOLD | Constants.FMT_CENTER | Constants.FMT_VCENTER, 0, 0, 0, 0, 0, 1); } // NEW IN PART 6 /** Renders and displays a dialog */ function userdlg () { // Variable for the user dialog definition var userdialog = Dialogs.createNewDialogTemplate(0, 0, 440, 100, sScriptName); // define the layout userdialog.Text(60, 40, 400, 15, getString("DLG_MAIN_MESSAGE")); userdialog.CheckBox(60,60, 250, 15, getString("DLG_SHOW_NOT_MAINTAINED_ATTRIBUTES"), "DLG_SHOW_NOT_MAINTAINED_ATTR"); userdialog.CheckBox(60,80, 300, 15, getString("DLG_USE_FIXED_OUTPUT_FILENAME"), "DLG_USE_FIXED_OUTPUT_FILENAME"); userdialog.Text(60, 150, 400, 15, getString("DLG_HINT_OUTPUT_FONT_SIZE")); userdialog.ComboBox(60,170, 150, 15, aOutputFontSizeList, "DLG_OUTPUT_FONT_SIZE"); userdialog.OKButton(); userdialog.CancelButton(); // userdialog.HelpButton("HID_d15ec480_4286_11d9_74b9_000f1f28afc9_dlg_01.hlp"); // Render the dialog var dlg = Dialogs.createUserDialog(userdialog); // Read dialog settings from config (if any) var sSection = "DLG_VALUES_95c31770-5dc7-11df-123a-005056c00008"; // ReadSettingsDlgValue(dlg, sSection, "OBJECT_LIST", 1); ReadSettingsDlgValue(dlg, sSection, "DLG_SHOW_NOT_MAINTAINED_ATTR", 0); ReadSettingsDlgValue(dlg, sSection, "DLG_USE_FIXED_OUTPUT_FILENAME", 0); ReadSettingsDlgValue(dlg, sSection, "DLG_OUTPUT_FONT_SIZE", 0); // Show dialog (wait for ok or cancel). var nuserdlg = Dialogs.show(dlg); if (nuserdlg != 0) { // read the values from the dialog bShowNotMaintainedAttr = (dlg.getDlgValue("DLG_SHOW_NOT_MAINTAINED_ATTR") == 1); bUseFixedOutPutFileName = (dlg.getDlgValue("DLG_USE_FIXED_OUTPUT_FILENAME") == 1); nOutputFontSizeOffset = dlg.getDlgValue("DLG_OUTPUT_FONT_SIZE"); // Write dialog settings to config WriteSettingsDlgValue(dlg, sSection, "DLG_SHOW_NOT_MAINTAINED_ATTR"); WriteSettingsDlgValue(dlg, sSection, "DLG_USE_FIXED_OUTPUT_FILENAME"); WriteSettingsDlgValue(dlg, sSection, "DLG_OUTPUT_FONT_SIZE"); } return (nuserdlg != 0) } // NEW IN PART 6: New function /** Reads all Object Occurrences linked to these objects * @param {Object} oObjectDefList The object definition list */ function collectObjOccs(oObjectDefList){ var result = new Array(); for(var i=0; i