You need to create a controller that manages the data for the needed checkboxes and a dynamic selectOption list. You can then use action regions on the checkbox to tell the system to populate the picklist on change.
Hopefully the following code helps illustrate.
Controller:
public List<selectOption> pickList {get;set;}
public Boolean checkboxA {get;set;}
public Boolean checkboxB {get;set;}
public Boolean checkboxC {get;set;}
public void populatePicklist()
{
Case caseRec = (Case)stdCtrl.getRecord();
pickList= new List<selectOption>();
pickList.add(new selectOption('','-None-'));
if(checkboxA)
{
pickList.add(new selectOption('','6'));
pickList.add(new selectOption('','7'));
pickList.add(new selectOption('','8'));
pickList.add(new selectOption('','9'));
}
else if(checkboxB && checkboxC)
{
pickList.add(new selectOption('','1'));
pickList.add(new selectOption('','2'));
pickList.add(new selectOption('','3'));
}
}
Visualforce:
<apex:page standardController="Case" tabStyle="Case" extensions="CaseTechnicalSupportExt">
<apex:form >
<apex:sectionHeader title="Case Edit" subtitle="{!if(Case.Id==null,'New Case',Case.CaseNumber)}"/>
<apex:pageBlock mode="edit" id="casePB" title="Case Edit">
<apex:pageBlockButtons >
<apex:commandButton action="{!save}" value="Save"/>
<apex:commandButton action="{!cancel}" value="Cancel"/>
</apex:pageBlockButtons>
<apex:pageMessages id="messages"/>
<apex:pageBlockSection id="CaseInformationPBS" title="Case Information">
<apex:pageBlockSectionItem >
<apex:outputLabel value="CheckboxA" for="caseCheckboxA"/>
<apex:actionRegion >
<apex:inputField value="{!Case.checkboxA}" rendered="true" id="caseCheckboxA">
<apex:actionSupport event="onchange" action="{!populatePicklist}" reRender="messages,pickListSelectList"/>
</apex:inputField>
</apex:actionRegion>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >
<apex:outputLabel value="CheckboxB" for="caseCheckboxB"/>
<apex:actionRegion >
<apex:inputField value="{!Case.checkboxA}" rendered="true" id="caseCheckboxB">
<apex:actionSupport event="onchange" action="{!populatePicklist}" reRender="messages,pickListSelectList"/>
</apex:inputField>
</apex:actionRegion>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >
<apex:outputLabel value="CheckboxC" for="caseCheckboxC"/>
<apex:actionRegion >
<apex:inputField value="{!Case.checkboxA}" rendered="true" id="caseCheckboxC">
<apex:actionSupport event="onchange" action="{!populatePicklist}" reRender="messages,pickListSelectList"/>
</apex:inputField>
</apex:actionRegion>
</apex:pageBlockSectionItem>
<apex:pageBlockSectionItem >
<apex:outputLabel value="PickList" for="pickLIstSelectList"/>
<apex:selectList value="{!pickList}" multiselect="false" size="1" id="pickListSelectList">
<apex:selectOptions value="{!pickList}" />
</apex:selectList>
</apex:pageBlockSectionItem>
</apex:pageBlockSection>
</apex:pageBlock>
</apex:form>
</apex:page>