<RULES urn="#[FILE_URN]" language="GmlScript">

<!-- =============================================================== -->
<!--                        RULE EXTENSION                           -->
<!-- =============================================================== -->

<extend rule="defineCommands">
	<constraint>model isa gml2:Model</constraint>
   	<comments>BI Commands</comments>

	<command id="BICSViewWizard" text="#XMLTEXT[XMSG_MENU_QUERY_WIZARD]" icon="#URL[~skin:Symbols.InfoActors.query16.gif]" category="STANDARD">
			<signal>
			<![CDATA[
			try {
				BEGIN("#TEXT[XMSG_MENU_QUERY_WIZARD]");
				// check if wizard can be run
				if (ISA($ENV.contextUnit, 'gml2:Scenario', 'gml2:Service')) {
					PROGRESS("#TEXT[XMSG_BICSWIZ_WIZ_PGS_LAUNCH]", 30, "#TEXT[XMSG_MENU_QUERY_WIZARD]");
					MODAL('#URL[dialogs.bicsWizard.BICSQueryWizard.htm]', {type:'view', action:'create'}, true);
				} else {
		  			CRITICAL("#TEXT[XMSG_BICSWIZ_WIZ_WRONG_CONTEXT]");
				}
				COMMIT("#TEXT[XMSG_MENU_QUERY_WIZARD]");
			}
			catch(e) {
				ROLLBACK();
			}
			]]>
			</signal>
	</command>
	
	<command id="BICSSelectorWizard" text="#XMLTEXT[XMSG_MENU_SELECTOR_WIZARD]" icon="#URL[~skin:Symbols.InfoActors.infoobject16.gif]" category="STANDARD">
			<signal>
			<![CDATA[
			try {
				BEGIN("#TEXT[XMSG_MENU_SELECTOR_WIZARD]");
				// check if wizard can be run
				if (ISA($ENV.contextUnit, 'gml2:Scenario', 'gml2:Service')) {
				    PROGRESS("#TEXT[XMSG_BICSWIZ_WIZ_PGS_SEL_LAUNCH]", 30, "#TEXT[XMSG_MENU_SELECTOR_WIZARD]");
		    	    MODAL('#URL[dialogs.bicsWizard.BICSQueryWizard.htm]', {type:'selector', action:'create'}, true);
				} else {
		  			CRITICAL("#TEXT[XMSG_BICSWIZ_WIZ_WRONG_CONTEXT]");
				}
				COMMIT("#TEXT[XMSG_MENU_SELECTOR_WIZARD]");
			}
			catch(e) {
				ROLLBACK();
			}
			]]>
			</signal>
	</command>

	<command id="BICSReimportView" text="#XMLTEXT[XMSG_MENU_QUERY_WIZARD]" icon="#URL[~skin:Symbols.InfoActors.query16.gif]" category="STANDARD">
			<signal>
			<![CDATA[
		    PROGRESS("#TEXT[XMSG_BICSWIZ_WIZ_PGS_LAUNCH]", 30, "#TEXT[XMSG_MENU_QUERY_WIZARD]");
    	    MODAL('#URL[dialogs.bicsWizard.BICSQueryWizard.htm]', {type:'view', action:'reimport'}, true);
			]]>
			</signal>
	</command>

	<command id="BICSReimportSelector" text="#XMLTEXT[XMSG_MENU_SELECTOR_WIZARD]" icon="#URL[~skin:Symbols.InfoActors.infoobject16.gif]" category="STANDARD">
			<signal>
			<![CDATA[
		    PROGRESS("#TEXT[XMSG_BICSWIZ_WIZ_PGS_LAUNCH]", 30, "#TEXT[XMSG_MENU_QUERY_WIZARD]");
    	    MODAL('#URL[dialogs.bicsWizard.BICSQueryWizard.htm]', {type:'selector', action:'reimport'}, true);
			]]>
			</signal>
	</command>

	
	<command id="BICSDeriveSelector" text="#XMLTEXT[XMSG_MENU_SELECTOR_CREATE]" icon="#URL[~skin:Symbols.InfoActors.infoobject16.gif]" category="STANDARD">
			<signal>
			<![CDATA[
		    PROGRESS("#TEXT[XMSG_BICSWIZ_WIZ_PGS_LAUNCH]", 30, "#TEXT[XMSG_MENU_QUERY_WIZARD]");
    	    MODAL('#URL[dialogs.bicsWizard.BICSQueryWizard.htm]', {type:'selector', action:'derive'}, true);
			]]>
			</signal>
	</command>

	<command id="BICSFindInTree" text="#XMLTEXT[XMSG_MENU_FIND_IN_TREE]" icon="#URL[dev~skin:icons.manage16.gif]" category="STANDARD">
			<signal>
			<![CDATA[
			var elem = null, gmlFullClassName = null, implLocation = null;
			if(args && args[0]){
				elem = args[0];
				gmlFullClassName = args[1];
			} else {
				elem = $ENV.contextElement || $ENV.contextUnit;	
			}
			var unit = elem.getComponent();
			if(unit){
				implLocation = unit.impl_location;
				gmlFullClassName = unit.Class.fullname;
			}
			if(implLocation){
				if("MANAGEMODELS"!=$TSK.currentPanel){				
					$TSK.openPanel("MANAGEMODELS",true,onMMDLoad);
					function onMMDLoad() {
						$ENV.fireFindInDepot(implLocation, gmlFullClassName );	
				    }
				} 
				else {
				    $ENV.fireFindInDepot(implLocation, gmlFullClassName );	
				}				
			}	
		]]>
			</signal>
	</command>

	<command id="BICSPlfunc" text="#XMLTEXT[XMIT_PLFUNC_WIZARD]" icon="#URL[~skin:Symbols.InfoActors.plan_function16.gif]" category="STANDARD">
			<signal>
			<![CDATA[
			try {
				BEGIN("#TEXT[XMIT_PLFUNC_WIZARD]");
				// check if wizard can be run
				if (ISA($ENV.contextUnit, 'gml2:Scenario', 'gml2:Service')) {
		    	    MODAL('#URL[dialogs.plfunc.BICSPlfuncWizard.htm]', {reimport:false}, true);
				} else {
		  			CRITICAL("#TEXT[XMSG_BICSWIZ_WIZ_WRONG_CONTEXT]");
				}
				COMMIT("#TEXT[XMIT_PLFUNC_WIZARD]");
			}
			catch(e) {
				ROLLBACK();
			}
			]]>
			</signal>
	</command>
	
	<command id="BICSPlfuncReimport" text="#XMLTEXT[XMIT_PLFUNC_WIZARD]" icon="#URL[~skin:Symbols.InfoActors.plan_function16.gif]" category="STANDARD">
			<signal>
			<![CDATA[
			// check if wizard can be run
			if (ISA($ENV.contextUnit, 'gml2:Scenario', 'gml2:Service')) {
	    	    MODAL('#URL[dialogs.plfunc.BICSPlfuncWizard.htm]', {reimport:true}, true);
			} else {
	  			CRITICAL("#TEXT[XMSG_BICSWIZ_WIZ_WRONG_CONTEXT]");
			}
			]]>
			</signal>
	</command>
	
	<command id="BICSPlseq" text="#XMLTEXT[XMIT_PLSEQ_TITLE]" icon="#URL[~skin:Symbols.InfoActors.plan_sequence16.gif]" category="STANDARD">
			<signal>
			<![CDATA[
			try {
				BEGIN("#TEXT[XMIT_PLSEQ_TITLE]");
				// check if wizard can be run
				if (ISA($ENV.contextUnit, 'gml2:Scenario', 'gml2:Service')) {
		    	    MODAL('#URL[dialogs.plseq.BICSPlseq.htm]', {reimport:false}, true);
				} else {
		  			CRITICAL("#TEXT[XMSG_BICSWIZ_WIZ_WRONG_CONTEXT]");
				}
				COMMIT("#TEXT[XMIT_PLSEQ_TITLE]");
			}
			catch(e) {
				ROLLBACK();
			}
			]]>
			</signal>
	</command>
	
	<command id="BICSPlseqReimport" text="#XMLTEXT[XMIT_PLSEQ_TITLE]" icon="#URL[~skin:Symbols.InfoActors.plan_sequence16.gif]" category="STANDARD">
			<signal>
			<![CDATA[
			// check if wizard can be run
			if (ISA($ENV.contextUnit, 'gml2:Scenario', 'gml2:Service')) {
	    	    MODAL('#URL[dialogs.plseq.BICSPlseq.htm]', {reimport:true}, true);
			} else {
	  			CRITICAL("#TEXT[XMSG_BICSWIZ_WIZ_WRONG_CONTEXT]");
			}
			]]>
			</signal>
	</command>
	
	
	<command id="BICSPlcommand" text="#XMLTEXT[XMIT_PLCOMMAND_EDITOR]" icon="#URL[~skin:Symbols.InfoActors.plan_command16.gif]" category="STANDARD">
			<signal>
			<![CDATA[
			try {
				BEGIN("#TEXT[XMIT_PLCOMMAND_EDITOR]");
				// check if wizard can be run
				if (ISA($ENV.contextUnit, 'gml2:Scenario', 'gml2:Service')) {
		    	    MODAL('#URL[dialogs.plcommand.BICSPlcommand.htm]', {reimport:true}, true);
				} else {
		  			CRITICAL("#TEXT[XMSG_BICSWIZ_WIZ_WRONG_CONTEXT]");
				}
				COMMIT("#TEXT[XMIT_PLCOMMAND_EDITOR]");
			}
			catch(e) {
				ROLLBACK();
			}
			]]>
			</signal>
	</command>
	
	<command id="SearchAndBrowseDialog" text="#XMLTEXT[XMSG_MENU_SEARCH_DIALOG]" icon="#URL[dev~skin:icons.new.gif]" category="STANDARD">
			<signal>var x=MODAL('#URL[dialogs.search.BISearchDialog.htm]', null, true);alert(x)
			</signal>
	</command>
	
	<command id="SQLReimport" text="#XMLTEXT[XMSG_MENU_SQL_DIALOG]" icon="#URL[~skin:Symbols.InfoActors.table16.gif]" category="STANDARD">
			<signal>
			<![CDATA[
		    PROGRESS("#TEXT[XMSG_SQLEDIT_LAUNCH]", 30, "#TEXT[XMSG_MENU_SQL_DIALOG]");
    	    MODAL('#URL[dialogs.sqlEditor.BISQLEditorDialog.htm]', {createInfoactor:true, reimport:true}, false);
			]]>
			</signal>

	</command>

	<command id="FIX_PROXY" text="Fix Service" category="STANDARD">
	<signal>
	<![CDATA[   
		 var handler = $ENV.createObject('#NS[ExistingProxyFlowHandler]');
		 handler.executeFix('#NS[ExistingSingleProxyHandler]', $ENV.contextElement);
	]]>
	</signal>
	</command>

	<command id="FIX_ALL_PROXIES_IN_MODEL" text="Fix All Services in parent model" category="STANDARD">
	<signal>
	<![CDATA[
		 var handler = $ENV.createObject('#NS[ExistingProxyFlowHandler]');
		 handler.executeFix('#NS[ExistingModelScopeHandler]', $ENV.contextElement);
	]]>
	</signal>
	</command>

	<command id="FIX_ALL_PROXIES_IN_DC" text="Fix All Services in DC" category="STANDARD">
	<signal>
	<![CDATA[
		 var handler = $ENV.createObject('#NS[ExistingProxyFlowHandler]');
		 handler.executeFix('#NS[ExistingDCScopeHandler]', $ENV.contextElement);
	]]>
	</signal>
	</command>

	<command id="SELECT_COUNTERPART" text="#XMLTEXT[XMIT_SELECT_COUNTERPART]" category="STANDARD">
	<signal>
	<![CDATA[
		var infoActor = $ENV.contextElement, unit = $ENV.contextUnit;
		var usageId = infoActor.counterparts["writeFunction"];
		var counterpart = null;
		
		if (usageId) {
			// get the "write" counterpart:
			counterpart = usageId ? unit.getElement(usageId) : null;
		}
		else {
			// look for the "read" counterpart in the model:
			var usages = unit.getElementsByType("gml2:RemoteFunction", true);
			
			for (var i in usages) {
				var usage = usages[i];
				if (usage.counterparts["writeFunction"] == infoActor.id) {
					counterpart = usage;
					break;
				}
			}
		}
		
		if (counterpart) {
			var snapshot = $WIN.captureSnapshot();
			snapshot.selection = [infoActor.id, counterpart.id];
			snapshot.focus = counterpart.id;
			$WIN.restoreSnapshot(snapshot);	
			SIGNAL('BOARD\\-\\>scrollToFocus');	
		}
	]]>
	</signal>
	<disable><![CDATA[
		var isDisabled = true;

		var infoActor = $ENV.contextElement, unit = $ENV.contextUnit;
		var usageId = infoActor.counterparts["writeFunction"];
		var counterpart = null;
		
		if (usageId) {
			// get the "write" counterpart:
			counterpart = usageId ? unit.getElement(usageId) : null;
		}
		else {
			// look for the "read" counterpart in the model:
			var usages = unit.getElementsByType("gml2:RemoteFunction", true);
			
			for (var i in usages) {
				var usage = usages[i];
				if (usage.counterparts["writeFunction"] == infoActor.id) {
					counterpart = usage;
					break;
				}
			}
		}

		if (counterpart)
			isDisabled = false;

		isDisabled;
	]]></disable>
	</command>

</extend>

</RULES>
