Fonctionnalités supplémentaires de Windchill > Gestion des processus de fabrication > Personnalisation de l'Explorateur de structures produit de fabrication > Désactivation d'actions par type d'objet
  
Désactivation d'actions par type d'objet
Pour désactiver une action dans l'Explorateur de structures produit par type d'objet, procédez comme suit :
1. Modifiez le fichier ExplorerStructures.xml.
Créez un élément <TypeDefinition> pour le ou les types pour lesquels vous souhaitez désactiver une ou plusieurs actions. Par exemple, pour les types org.my.MyTypeA , org.my.MyTypeB et org.my.MyTypeD qui sont des enfants de WTPart, vous définiriez les éléments suivants :
<TypeDefinition id="com.my.MyTypeATD"
typeId="WCTYPE|wt.part.WTPart|org.my.MyTypeA"/>
<TypeDefinition id="com.my.MyTypeBTD"
typeId="WCTYPE|wt.part.WTPart|org.my.MyTypeB"/>
<TypeDefinition id="com.my.MyTypeDTD"
typeId="WCTYPE|wt.part.WTPart|org.my.MyTypeD"/>
2. Modifiez le fichier ExplorerValidators.xml.
Créez un élément <ValidatorDefinition> pour le groupe de types pour lesquels vous souhaitez désactiver des actions. Cette opération renvoie la valeur "false" si le type de l'article sélectionné correspond à l'un des types référencés dans la définition du programme de validation. Par exemple, pour les trois types ci-dessus, vous définiriez un programme de validation comme suit :
<ValidatorDefinition id="com.my.IsNotEqualToTypesABDVAL"
validatorClass="com.ptc.windchill.explorer.structureexplorer.
validators.IsValidTypeValidator" inverted="true">
<Import id="com.my.MyTypeATD"/>
<Import id="com.my.MyTypeBTD"/>
<Import id="com.my.MyTypeDTD"/>
</ValidatorDefinition>
* 
Il est important que la valeur de l'attribut validatorClass de l'élément ValidatorDefinition corresponde exactement à la classe indiquée ci-dessus, et que l'attribut "inverted" soit défini sur "true".
3. Modifiez le fichier ExplorerActions.xml.
Ajoutez un élément <ValidatorEntry> aux actions que vous souhaitez désactiver pour les types spécifiés.
<ActionDefinition id="ptc.wnc.exp.EditCommonAttrsAction" ... >
...
<ValidatorEntry>
<Import id="com.my.IsNotEqualToTypesABDVAL"/>
</ValidatorEntry>
...
</ActionDefinition>
Cette configuration désactivera l'action Modifier les attributs communs dans l'application de l'Explorateur de structures produit chaque fois qu'un article de type A, B ou D sera sélectionné.
Programme de validation isValidTypeValidator
Le programme de validation isValidTypeValidator est implémenté par la classe : com.ptc.windchill.explorer.structureexplorer.validators.IsValidTypeValidator. Pour un ensemble donné de définitions de type, ce programme de validation renverra la valeur "true" si le type de l'article actuellement sélectionné figure dans le groupe susmentionné. Par exemple, si une instance de ce programme de validation est définie avec des définitions de type pour les types A, B et D, le programme de validation renverra la valeur "true" en cas de sélection d'un article de type A, B ou D. Si un article d'un autre type, par exemple de type C, est sélectionné, le programme de validation renverra la valeur "false".
Par exemple, un élément <ValidatorDefinition> devant renvoyer la valeur "true" si le type sélectionné est A, B ou D serait défini comme suit :
<ValidatorDefinition id="com.my.IsEqualToOneOfTypesABDVAL"
validatorClass="com.ptc.windchill.explorer.structureexplorer.vali
dators.IsValidTypeValidator">
<Import id="com.my.MyTypeATD"/>
<Import id="com.my.MyTypeBTD"/>
<Import id="com.my.MyTypeDTD"/>
</ValidatorDefinition>
Inversement, un élément <ValidatorDefinition> renvoyant la valeur "false" si le type sélectionné est A, B ou D serait défini de la façon suivante (notez l'inclusion de l'attribut "inverted") :
<ValidatorDefinition id="com.my.IsNotEqualToTypesABDVAL"
validatorClass="com.ptc.windchill.explorer.structureexplorer.vali
dators.IsValidTypeValidator" inverted="true">
<Import id="com.my.MyTypeATD"/>
<Import id="com.my.MyTypeBTD"/>
<Import id="com.my.MyTypeDTD"/>
</ValidatorDefinition>
Les éléments <Import> font référence aux éléments <TypeDefinition> qui seraient définis comme suit (dans l'hypothèse où chaque type est un enfant direct de WTPart) :
<TypeDefinition id="com.my.MyTypeATD"
typeId="WCTYPE|wt.part.WTPart|org.my.MyTypeA"/>
<TypeDefinition id="com.my.MyTypeBTD"
typeId="WCTYPE|wt.part.WTPart|org.my.MyTypeB"/>
<TypeDefinition id="com.my.MyTypeDTD"
typeId="WCTYPE|wt.part.WTPart|org.my.MyTypeD"/>