WorkPackage-actions.xml

      <action name="zipWithUI">
         <!-- Launch wizard to create zip with security labels specified for filtering -->
         <command class="com.ptc.netmarkets.wp.delivery.NmDeliveryCommands" method="createZipWithOptions" windowType="popup"/>
      </action>
      
-----------------------------

com.ptc.netmarkets.wp.delivery.NmDeliveryCommands

    public static FormResult createZipWithOptions(NmCommandBean nmcommandbean)
        throws WTPropertyVetoException, WTException
    {
        DeliveryRecord deliveryrecord = getDeliveryBeingZipped(nmcommandbean);
        DeliveryOptions deliveryoptions = new DeliveryOptions();
        DeliveryOptionType deliveryoptiontype = getDeliveryOptionChoice(nmcommandbean);
        deliveryoptions.selectedDeliveryOption = deliveryoptiontype;
        boolean flag = DeliveryOptionType.INCREMENTAL.equals(deliveryoptiontype) || DeliveryOptionType.FULL_WITH_INCREMENTAL_MANIFEST.equals(deliveryoptiontype);
        if(flag)
        {
            String s = nmcommandbean.getRequest().getParameter("baseDeliveryOid");
            NmOid nmoid = NmOid.newNmOid(s);
            DeliveryRecord deliveryrecord1 = (DeliveryRecord)nmoid.getRefObject();
            deliveryoptions.baseDelivery = deliveryrecord1;
        }
        if(DeliveryHelper.isRecipientWtUser(deliveryrecord))
        {
            String s1 = getWTUserSecurityChoice(nmcommandbean);
            WTUserSecurityChoice wtusersecuritychoice = WTUserSecurityChoice.toWTUserSecurityChoice(s1);
            deliveryoptions.wtuserSecurityChoice = wtusersecuritychoice;
        }
        String s2 = getDeliveryManifestChoice(nmcommandbean);
        DeliveryManifestType deliverymanifesttype = DeliveryManifestType.toDeliveryManifestType(s2);
        deliveryoptions.selectedDeliveryManifestOption = deliverymanifesttype;
        Map map = getSecurityLabelFilters(nmcommandbean);
        if(map != null && !map.isEmpty())
            deliveryoptions.mapFilterSecurityLabels = map;
        createZip(deliveryrecord, deliveryoptions);
        return buildFormResult(nmcommandbean.getLocale(), true, FormResultAction.REFRESH_OPENER);
    }

-----------------------------

com.ptc.windchill.wp.delivery.DeliveryHelper


    public static boolean isZipCreated(DeliveryRecord deliveryrecord)
        throws WTException
    {
        return getSecondaryContentItem(deliveryrecord) != null;
    }

    public static boolean isZipInProcess(DeliveryRecord deliveryrecord)
        throws WTException
    {
        String s = WPSyncClassProxy.getExportStatus(ObjectReference.newObjectReference(deliveryrecord));
        if(s == null)
            return false;
        else
            return "NOT_STARTED".equalsIgnoreCase(s) || "SYNC_IN_PROGRESS".equalsIgnoreCase(s) || "IN_QUEUE".equalsIgnoreCase(s) || "EXPORT_IN_PROGRESS".equalsIgnoreCase(s);
    }

    public static Vector getSecondaryContentItem(FormatContentHolder formatcontentholder)
        throws WTException
    {
        if(formatcontentholder == null)
            return null;
        Vector vector;
        int i;
        try
        {
            if(!formatcontentholder.isHasContents())
                formatcontentholder = (FormatContentHolder)ContentHelper.service.getContents(formatcontentholder);
            vector = ContentHelper.getContentList(formatcontentholder);
            if(vector == null || vector.isEmpty())
                return null;
        }
        catch(PropertyVetoException propertyvetoexception)
        {
            throw new WTException(propertyvetoexception);
        }
        for(i = vector.size() - 1; i >= 0; i--)
            if(!((ContentItem)vector.get(i)).getRole().equals(ContentRoleType.SECONDARY))
                vector.remove(i);

        return vector.isEmpty() ? null : vector;
    }
    
-----------------------------

com.ptc.netmarkets.wp.validator.ZipPackageActionValidator

    protected void populateValidationResultSetForDeliveryZip(UIValidationResultSet uivalidationresultset, DeliveryRecord deliveryrecord, UIValidationKey uivalidationkey)
        throws WTException
    {
        AbstractWorkPackage abstractworkpackage = deliveryrecord.getMyPackage();
        String s = WPHelper.service.getZipFilePreference(abstractworkpackage);
        if(NEVER_GENERATE.equals(s))
        {
            uivalidationresultset.addResult(UIValidationResult.newInstance(uivalidationkey, UIValidationStatus.HIDDEN));
        } else
        {
            UIValidationStatus uivalidationstatus = UIValidationStatus.DISABLED;
            if(abstractworkpackage.isLocked() && !DeliveryHelper.isZipCreatedOrInProcess(deliveryrecord))
                uivalidationstatus = applyContentControlState(deliveryrecord);
            uivalidationresultset.addResult(UIValidationResult.newInstance(uivalidationkey, uivalidationstatus));
        }
    }


    public UIValidationResult validateSelectedAction(UIValidationKey uivalidationkey, UIValidationCriteria uivalidationcriteria, Locale locale)
        throws WTException
    {
        UIValidationResult uivalidationresult = UIValidationResult.newInstance(uivalidationkey, UIValidationStatus.PERMITTED);
        WTReference wtreference = uivalidationcriteria.getContextObject();
        Object obj = null;
        UIValidationFeedbackMsg uivalidationfeedbackmsg = UIValidationFeedbackMsg.newInstance();
        AbstractWorkPackage abstractworkpackage = ValidatorHelper.getWorkPackage(uivalidationcriteria);
        if(abstractworkpackage != null && !abstractworkpackage.isLocked())
        {
            String s = WTMessage.getLocalizedMessage("com.ptc.netmarkets.wp.wpResource", "CANNOT_ZIP_NOT_LOCKED_PACKAGE");
            uivalidationfeedbackmsg.setMessageText(s);
            uivalidationfeedbackmsg.setMessageType(FeedbackType.FAILURE);
            uivalidationresult.addFeedbackMsg(uivalidationfeedbackmsg);
            uivalidationresult.setStatus(UIValidationStatus.DENIED);
            return uivalidationresult;
        }
        if(com/ptc/windchill/wp/delivery/DeliveryRecord.isAssignableFrom(wtreference.getReferencedClass()))
        {
            DeliveryRecord deliveryrecord = (DeliveryRecord)wtreference.getObject();
            if(DeliveryHelper.isZipCreatedOrInProcess(deliveryrecord))
            {
                String s1 = WTMessage.getLocalizedMessage("com.ptc.windchill.wp.delivery.deliveryResource", "ALREADY_ZIPPED");
                uivalidationfeedbackmsg.setMessageText(s1);
                uivalidationfeedbackmsg.setMessageType(FeedbackType.FAILURE);
                uivalidationresult.addFeedbackMsg(uivalidationfeedbackmsg);
                uivalidationresult.setStatus(UIValidationStatus.DENIED);
                return uivalidationresult;
            }
            if(applyContentControlState(deliveryrecord).equals(UIValidationStatus.DISABLED))
            {
                String s2 = WTMessage.getLocalizedMessage("com.ptc.netmarkets.wp.wpResource", "CANNOT_ZIP_PKG_WITH_INVALID_STATE");
                uivalidationfeedbackmsg.setMessageText(s2);
                uivalidationfeedbackmsg.setMessageType(FeedbackType.FAILURE);
                uivalidationresult.addFeedbackMsg(uivalidationfeedbackmsg);
                uivalidationresult.setStatus(UIValidationStatus.DENIED);
                return uivalidationresult;
            }
            if(DeliveryHelper.isRecipientUserDeleted(deliveryrecord))
            {
                String s3 = WTMessage.getLocalizedMessage("com.ptc.netmarkets.wp.wpResource", "WP_ZIP_CONFIRMATION_MESSAGE_RECIPIENT_INVALID", null, locale);
                uivalidationfeedbackmsg.setMessageText(s3);
                uivalidationfeedbackmsg.setMessageType(FeedbackType.CONFIRMATION);
                uivalidationresult.addFeedbackMsg(uivalidationfeedbackmsg);
                uivalidationresult.setStatus(UIValidationStatus.PROMPT_FOR_CONFIRMATION);
                return uivalidationresult;
            }
        }
        uivalidationresult.setStatus(UIValidationStatus.PERMITTED);
        return uivalidationresult;
    }

        if(com/ptc/windchill/wp/delivery/DeliveryRecord.isAssignableFrom(wtreference.getReferencedClass()))
        {
            DeliveryRecord deliveryrecord = (DeliveryRecord)wtreference.getObject();
            if(DeliveryHelper.isZipCreatedOrInProcess(deliveryrecord))
            {
                String s1 = WTMessage.getLocalizedMessage("com.ptc.windchill.wp.delivery.deliveryResource", "ALREADY_ZIPPED");
                uivalidationfeedbackmsg.setMessageText(s1);
                uivalidationfeedbackmsg.setMessageType(FeedbackType.FAILURE);
                uivalidationresult.addFeedbackMsg(uivalidationfeedbackmsg);
                uivalidationresult.setStatus(UIValidationStatus.DENIED);
                return uivalidationresult;
            }
        }
        
        switch to 
        
        uivalidationresult.setStatus(UIValidationStatus.PERMITTED);

            
-----------------------------

wt.services/svc/default/com.ptc.core.ui.validation.UIComponentValidator/zip/null/0=com.ptc.netmarkets.wp.validator.ZipPackageActionValidator/duplicate

Windchill\codebase\service.properties:wt.services/svc/default/com.ptc.core.ui.validation.UIComponentValidator/zip/null/0=com.ptc.netmarkets.wp.validator.ZipPackageActionValidator/duplicate
Windchill\esi\RTN\service.properties:wt.services/svc/default/com.ptc.core.ui.validation.UIComponentValidator/zip/null/0=com.ptc.netmarkets.wp.validator.ZipPackageActionValidator/duplicate
Windchill\esi\RTN\service.properties:wt.services/svc/default/com.ptc.core.ui.validation.UIComponentValidator/zipWithUI/null/0=com.ptc.netmarkets.wp.validator.ZipPackageActionValidator/duplicate
Windchill\wc_dev\DJ_jad\DJ_jad\codebase\service.properties:wt.services/svc/default/com.ptc.core.ui.validation.UIComponentValidator/zip/null/0=com.ptc.netmarkets.wp.validator.ZipPackageActionValidator/duplicate
Windchill\wc_dev\DRW2PDF\ITT\windchill\codebase\service.properties:wt.services/svc/default/com.ptc.core.ui.validation.UIComponentValidator/zip/null/0=com.ptc.netmarkets.wp.validator.ZipPackageActionValidator/duplicate


