/// <summary> /// Pre validates the given set of values. /// This is where you populate derived parameters based on input, among other things. /// </summary> /// <param name="paramValues"></param> /// <param name="pEnvMgr"></param> public override void UpdateParameters(IArray paramValues, IGPEnvironmentManager pEnvMgr) { try { UpdateParametersCommon(paramValues, pEnvMgr); } catch (WmxDefaultDbNotSetException) { // If the default DB wasn't set, stop executing return; } catch (NullReferenceException) { // If one of the parameters was null, stop executing return; } // Get the parameters as a map for easier access WmauParameterMap paramMap = new WmauParameterMap(paramValues); IGPParameter3 assigneeType = paramMap.GetParam(C_PARAM_ASSIGNEE_TYPE); IGPParameterEdit3 assigneeTypeEdit = paramMap.GetParamEdit(C_PARAM_ASSIGNEE_TYPE); IGPParameter3 assignee = paramMap.GetParam(C_PARAM_ASSIGNEE); IGPParameterEdit assigneeEdit = paramMap.GetParamEdit(C_PARAM_ASSIGNEE); // If the assignee type has changed, update the domain for the assignee // parameter // // NOTE: Updating the assignee value can cause things to get confused, // particularly when background geoprocessing is enabled. So rather than // do this, let the assignee parameter value conflict with the domain // for that parameter, if need be. if (!assigneeType.Value.GetAsText().Equals(m_assigneeType)) { m_assigneeType = assigneeType.Value.GetAsText(); if (m_assigneeType.Equals(C_OPT_ASSIGN_TO_GROUP)) { assigneeEdit.Domain = Common.WmauGpDomainBuilder.BuildAssignableGroupsDomain(this.WmxDatabase); } else if (m_assigneeType.Equals(C_OPT_ASSIGN_TO_USER)) { assigneeEdit.Domain = Common.WmauGpDomainBuilder.BuildAssignableUsersDomain(this.WmxDatabase); } else if (m_assigneeType.Equals(C_OPT_UNASSIGNED) || String.IsNullOrEmpty(m_assigneeType)) { assigneeEdit.Domain = null; } } // Check to see if the data workspace parameter has changed; if so, store the // new workspace value and mark the domain for the workspace version to be reset. IGPParameter3 workspaceParam = paramMap.GetParam(C_PARAM_DATAWORKSPACE); if (this.IsDataWorkspaceParameterChanged(workspaceParam)) { if (workspaceParam.Value == null) { m_dataWorkspaceId = string.Empty; } else { string temp = workspaceParam.Value.GetAsText(); m_dataWorkspaceId = Common.WmauHelperFunctions.LookupWorkspaceId(this.WmxDatabase, temp); } IGPParameterEdit3 versionParam = paramMap.GetParamEdit(C_PARAM_PARENTVERSION); // Keep the version parameter's value unchanged; changing it "smartly" to help // out a user can lead to trouble. Instead, let any problem value be flagged // as something that's not a member of the domain. //versionParam.Value = null; versionParam.Domain = null; m_parentVersion = string.Empty; } // Set the domains for any parameters that need them if (paramMap.GetParam(C_PARAM_JOB_TYPE).Domain == null) { paramMap.GetParamEdit(C_PARAM_JOB_TYPE).Domain = Common.WmauGpDomainBuilder.BuildJobTypeDomain(this.WmxDatabase); } if (paramMap.GetParam(C_PARAM_JOB_OWNER).Domain == null) { paramMap.GetParamEdit(C_PARAM_JOB_OWNER).Domain = Common.WmauGpDomainBuilder.BuildUsersDomain(this.WmxDatabase); } if (paramMap.GetParam(C_PARAM_PRIORITY).Domain == null) { paramMap.GetParamEdit(C_PARAM_PRIORITY).Domain = Common.WmauGpDomainBuilder.BuildPriorityDomain(this.WmxDatabase); } if (paramMap.GetParam(C_PARAM_PARENTJOBID).Domain == null) { paramMap.GetParamEdit(C_PARAM_PARENTJOBID).Domain = Common.WmauGpDomainBuilder.BuildJobIdDomain(this.WmxDatabase); } if (paramMap.GetParam(C_PARAM_DATAWORKSPACE).Domain == null) { if (CurrentUserHasPrivilege(ESRI.ArcGIS.JTX.Utilities.Constants.PRIV_MANAGE_DATA_WORKSPACE)) { paramMap.GetParamEdit(C_PARAM_DATAWORKSPACE).Domain = Common.WmauGpDomainBuilder.BuildWorkspaceDomain(this.WmxDatabase, new string[] { C_OPT_VAL_NOT_SET }); } else { paramMap.GetParamEdit(C_PARAM_DATAWORKSPACE).Domain = new GPCodedValueDomainClass() as IGPDomain; } } if (paramMap.GetParam(C_PARAM_PARENTVERSION).Domain == null) { if (!m_dataWorkspaceId.Equals(string.Empty) && !m_dataWorkspaceId.Equals(C_OPT_VAL_NOT_SET) && CurrentUserHasPrivilege(ESRI.ArcGIS.JTX.Utilities.Constants.PRIV_MANAGE_VERSION)) { try { string dbName = this.WmxDatabase.GetDataWorkspaceName(m_dataWorkspaceId).Name; paramMap.GetParamEdit(C_PARAM_PARENTVERSION).Domain = Common.WmauGpDomainBuilder.BuildVersionsDomain( this.WmxDatabase, dbName, new string[] { C_OPT_VAL_NOT_SET }); } catch (WmauException) { // If we run into an exception, set the domain to be empty so that // we can detect it and flag an error during parameter validation paramMap.GetParamEdit(C_PARAM_PARENTVERSION).Domain = new GPCodedValueDomainClass(); } } } // After the domains have been set, check to see if any parameters should be // enabled/disabled based on the contents of these domains. assigneeEdit.Enabled = !m_assigneeType.Equals(C_OPT_UNASSIGNED); EnableDisableParamBasedOnDomain(paramMap.GetParam(C_PARAM_DATAWORKSPACE)); EnableDisableParamBasedOnDomain(paramMap.GetParam(C_PARAM_PARENTVERSION)); // Also check the AOI; if the user can't manage a job's AOI, then disable the // parameter paramMap.GetParamEdit(C_PARAM_AOI).Enabled = CurrentUserHasPrivilege(ESRI.ArcGIS.JTX.Utilities.Constants.PRIV_MANAGE_AOI); }
private void EnableParameter(IGPParameterEdit gpParamEdit) { gpParamEdit.Enabled = true; return; }
/// <summary> /// Pre validates the given set of values. /// This is where you populate derived parameters based on input, among other things. /// </summary> /// <param name="paramValues"></param> /// <param name="pEnvMgr"></param> public override void UpdateParameters(IArray paramValues, IGPEnvironmentManager pEnvMgr) { try { UpdateParametersCommon(paramValues, pEnvMgr); } catch (WmxDefaultDbNotSetException) { // If the default DB wasn't set, stop executing return; } catch (NullReferenceException) { // If one of the parameters was null, stop executing return; } // Get the parameters as a map for easier access WmauParameterMap paramMap = new WmauParameterMap(paramValues); IGPParameter3 jobId = paramMap.GetParam(C_PARAM_JOB_ID); IGPParameterEdit3 jobIdEdit = paramMap.GetParamEdit(C_PARAM_JOB_ID); IGPParameter3 assigneeType = paramMap.GetParam(C_PARAM_ASSIGNEE_TYPE); IGPParameterEdit3 assigneeTypeEdit = paramMap.GetParamEdit(C_PARAM_ASSIGNEE_TYPE); IGPParameter3 assignee = paramMap.GetParam(C_PARAM_ASSIGNEE); IGPParameterEdit assigneeEdit = paramMap.GetParamEdit(C_PARAM_ASSIGNEE); // Set the domains for any parameters that need them // Set the job ID domain if it hasn't already been populated if (jobId.Domain == null) { jobIdEdit.Domain = Common.WmauGpDomainBuilder.BuildNonClosedJobIdDomain(this.WmxDatabase); } // If the assignee type has changed, update the domain for the assignee // parameter // // NOTE: Updating the assignee value can cause things to get confused, // particularly when background geoprocessing is enabled. So rather than // do this, let the assignee parameter value conflict with the domain // for that parameter, if need be. if (!assigneeType.Value.GetAsText().Equals(m_assigneeType) || assignee.Domain == null) { m_assigneeType = assigneeType.Value.GetAsText(); //assignee.Value.Empty(); if (m_assigneeType.Equals(C_OPT_ASSIGN_TO_GROUP)) { assigneeEdit.Domain = Common.WmauGpDomainBuilder.BuildAssignableGroupsDomain(this.WmxDatabase); } else if (m_assigneeType.Equals(C_OPT_ASSIGN_TO_USER)) { assigneeEdit.Domain = Common.WmauGpDomainBuilder.BuildAssignableUsersDomain(this.WmxDatabase); } else if (m_assigneeType.Equals(C_OPT_UNASSIGNED)) { assigneeEdit.Domain = null; //assignee.Value.SetAsText(C_OPT_VAL_UNASSIGNED); } } // After the domains have been set, check to see if any parameters should be // enabled/disabled based on the contents of these domains. assigneeEdit.Enabled = !m_assigneeType.Equals(C_OPT_UNASSIGNED); }
private void DisableParameter(IGPParameterEdit gpParamEdit, IGPValue emptyValue) { gpParamEdit.Value = emptyValue; gpParamEdit.Enabled = false; return; }