DataTable - ContextMenu

ContextMenu has special integration with DataTable.

RightClick to View Options
IdYearBrandColor
46d5681a1961BMWBrown
69a7b01b1993AudiYellow
191dc5881984FordWhite
115c9f171973JaguarBlack
c998301f1960FordSilver
4bcf47c71973FiatWhite
e94978301982RenaultSilver
3c597ac61987FiatGreen
8207a2141961FordWhite
8d071ab41962VolkswagenSilver
Car Info
<h:form id="form">
    <p:dataTable id="cars" var="car" value="#{dtContextMenuView.cars}" rowKey="#{car.id}"
                 selection="#{dtContextMenuView.selectedCar}" selectionMode="single">
        <f:facet name="header">
            RightClick to View Options
        </f:facet>
        <p:column headerText="Id">
            <h:outputText value="#{car.id}" />
        </p:column>
        <p:column headerText="Year">
            <h:outputText value="#{car.year}" />
        </p:column>
        <p:column headerText="Brand">
            <h:outputText value="#{car.brand}" />
        </p:column>
        <p:column headerText="Color">
            <h:outputText value="#{car.color}" />
        </p:column>
    </p:dataTable> 

    <p:contextMenu for="cars">
        <p:menuitem value="View" update="carDetail" icon="pi pi-search" oncomplete="PF('carDialog').show()"/>
        <p:menuitem value="Delete" update="cars" icon="pi pi-times" action="#{dtContextMenuView.deleteCar}"/>
    </p:contextMenu>
    
    <p:dialog header="Car Info" widgetVar="carDialog" modal="true" showEffect="fade" hideEffect="fade" resizable="false">
        <p:outputPanel id="carDetail" style="text-align:center;">
            <p:panelGrid  columns="2" rendered="#{not empty dtContextMenuView.selectedCar}" columnClasses="label,value">
                <f:facet name="header">
                    <p:graphicImage name="demo/images/car/#{dtContextMenuView.selectedCar.brand}-big.gif"/> 
                </f:facet>
                
                <h:outputText value="Id:" />
                <h:outputText value="#{dtContextMenuView.selectedCar.id}" />

                <h:outputText value="Year" />
                <h:outputText value="#{dtContextMenuView.selectedCar.year}" />

                <h:outputText value="Color:" />
                <h:outputText value="#{dtContextMenuView.selectedCar.color}" style="color:#{dtContextMenuView.selectedCar.color}"/>
            
                <h:outputText value="Price" />
                <h:outputText value="$#{dtContextMenuView.selectedCar.price}" />
            </p:panelGrid>
        </p:outputPanel>
    </p:dialog>
</h:form>