I don't need to close the page when it is having a pageMessage on a vf page. if it doesnt have any message then the page has to close automatically... following is the page...
<apex:page showHeader="false" controller="GSDLocateQueueController" sidebar="false" cache="true" docType="html-5.0">
<script type="text/javascript">
window.returnValue = null;
var returnedArray = new Array();
function callParentPage(queueID,queuename)
{
window.opener.SetValueOnParentPage(queueID,queuename);
window.close();
}
</script>
<apex:form >
<apex:pageBlock >
<!-- Page Block Buttons (START) -->
<!--<apex:outputPanel id="ErrorMessage" rendered="{!renderErrorMessage}" ><b>The queue value is:{!manualQID}</b></apex:outputpanel>-->
<apex:pageMessages id="ErrorMessage" rendered="{!renderErrorMessage}"></apex:pageMessages>
<apex:pageBlockButtons >
<apex:outputPanel id="customButtons" >
<apex:commandButton value="OK" action="{!checkQ}" onComplete="javascript:callParentPage('{!JSINHTMLENCODE(manualQID)}','{!JSINHTMLENCODE(manualQName)}');" reRender="ErrorMessage"/>
<apex:commandButton value="{!$Label.GSD_PsaCancelButton}" onclick="window.close();" />
</apex:outputPanel>
</apex:pageBlockButtons>
<!-- Page Block Buttons (START) -->
<!-- Outer Panel (START) -->
<apex:outputPanel id="outer">
<table cellpadding="10" style="table-layout:auto;width: 100%;">
<tr>
<td><apex:outputLabel value="System Generated Queue"/></td>
<td><apex:inputText value="{!systemGenQueueName}" id="queueName" disabled="true"/></td>
</tr>
<tr>
<td><apex:outputLabel value="Manually Overide Queue"/></td>
<td><apex:inputText value="{!manualQName}" id="manualOverrideQ" /></td>
</tr>
</table>
</apex:outputpanel>
</apex:pageBlock>
</apex:form>
</apex:page>
Controller:
public with sharing class GSDLocateQueueController {
public PSA_Assignment_Rules__c psaAssignmentRule{get;set;}
public string queue {get;set;}
public string systemGeneratedQ {get;set;}
public string manualQID {get;set;}
public string manualQName {get;set;}
public string queueAssigned {get;set;}
public string systemGenQueueName {get;set;}
public string systemGenQueueID {get;set;}
public string defaultQueueName;
public static List<group>listQueue;
public List<PSA_Assignment_Rules__c> listRules;
public Boolean renderErrorMessage {get;set;}
public string returnQueue {get;set;}
Public String validatedQueue {get;set;}
public GSDLocateQueueController()
{
renderErrorMessage=true;
//flag=false;
String role = ApexPages.currentPage().getParameters().get('role');
String region = ApexPages.currentPage().getParameters().get('regionId');
String practice = ApexPages.currentPage().getParameters().get('practiceId');
String deliveryMethod= ApexPages.currentPage().getParameters().get('deliveryMethod');
String productFamily = ApexPages.currentPage().getParameters().get('productFamily');
string account = ApexPages.currentPage().getParameters().get('AccountId');
system.debug('GSDLocateQueueCtrl:role>>>'+role );
system.debug('GSDLocateQueueCtrl:regionId>>>'+region );
system.debug('GSDLocateQueueCtrl:practiceId>>>'+ practice);
system.debug('GSDLocateQueueCtrl:deliveryMethod>>>'+ deliveryMethod);
system.debug('GSDLocateQueueCtrl:productFamily>>>'+productFamily );
system.debug('Account>>>'+Account);
pse__Resource_Request__c resReq =new pse__Resource_Request__c();
resReq.pse__Resource_Role__c=role;
resReq.pse__Region__c=region;
resReq.pse__Practice__c=practice;
resReq.GSD_Delivery_Method_1__c=deliveryMethod;
resReq.GSD_Product_Family_1__c=productFamily;
system.debug('resReq-->'+resReq);
GSD_Security.PSAAssignmentEngineRR rr= new GSD_Security.PSAAssignmentEngineRR();
systemGenQueueName=rr.getRRQueue(resReq);
system.debug('manual queue name-->'+systemGenQueueName);
}
/** Thsi method will be called on Click of 'OK' button, Returns 'true' on finding the manually entered Queue, else return 'false' **/
public void checkQ()
{
if(String.isNotBlank(manualQName)){
system.debug('Manually Override Queue>>>'+manualQName );
listQueue=[select id,name from Group where type='Queue' AND Name=:manualQName];
system.debug('GSDLocateQueueCtrl:listQueue size>>>'+listQueue.size());
if(listQueue.size()>0)
{
system.debug('GSDLocateQueueCtrl:manual Queue name, ID>>>'+listQueue[0].name+','+listQueue[0].id);
manualQName=listQueue[0].name;
manualQID=listQueue[0].id;
//return null;
}
else
{
ApexPages.addMessage(new ApexPages.Message(ApexPages.Severity.WARNING, 'Manually Override Queue is not valid Queue,Please re-enter the queue name'));
// get default qname from managed package custom setting
manualQName=systemGenQueueName;
manualQID=[select id,name from Group where type='Queue' AND Name=:systemGenQueueName limit 1].id;
system.debug('Manual entered Q is not valid.Final Qname, Qid:>>>'+manualQName+','+manualQID);
//return null;
}
}
else{
manualQName=systemGenQueueName;
manualQID=[select id,name from Group where type='Queue' AND Name=:systemGenQueueName limit 1].id;
system.debug('Manual entered Q is not valid.Final Qname, Qid:>>>'+manualQName+','+manualQID);
}
}
}