NicolaIsotta opened a new pull request, #8550: URL: https://github.com/apache/netbeans/pull/8550
This PR aims at improving the logic/heuristic behind the recognition of attributes of faces components as css classes. In the current version, only the standard "h" library is considered; this PR adds third-party libraries (eg. PrimeFaces) as well. It also simplifies/improves the logic behind the attribute recognition. I have tested using the [primefaces-test](https://github.com/primefaces/primefaces-test) project and the new logic seems to work well, here's the result of my tests: <details> <summary>Attributes found with the current logic</summary> ``` h:body -> [styleClass] h:button -> [styleClass] h:commandButton -> [styleClass] h:commandLink -> [styleClass] h:dataTable -> [styleClass, headerClass, footerClass, rowClasses, columnClasses, captionClass] h:form -> [styleClass] h:graphicImage -> [styleClass] h:inputFile -> [styleClass] h:inputSecret -> [styleClass] h:inputText -> [styleClass] h:inputTextarea -> [styleClass] h:link -> [styleClass] h:message -> [styleClass] h:messages -> [styleClass] h:outputFormat -> [styleClass] h:outputLabel -> [styleClass] h:outputLink -> [styleClass] h:outputText -> [styleClass] h:panelGrid -> [styleClass] h:panelGroup -> [styleClass] h:selectBooleanCheckbox -> [styleClass] h:selectManyCheckbox -> [styleClass] h:selectManyListbox -> [styleClass] h:selectManyMenu -> [styleClass] h:selectOneListbox -> [styleClass] h:selectOneMenu -> [styleClass] h:selectOneRadio -> [styleClass] ``` </details> <details> <summary>Attributes found with the PR applied</summary> ``` h:body -> [styleClass] h:button -> [styleClass] h:column -> [footerClass, headerClass] h:commandButton -> [styleClass] h:commandLink -> [styleClass] h:dataTable -> [rowClasses, columnClasses, styleClass, headerClass, footerClass, captionClass] h:form -> [styleClass] h:graphicImage -> [styleClass] h:inputFile -> [styleClass] h:inputSecret -> [styleClass] h:inputText -> [styleClass] h:inputTextarea -> [styleClass] h:link -> [styleClass] h:message -> [errorClass, styleClass, warnClass, fatalClass, infoClass] h:messages -> [errorClass, styleClass, warnClass, fatalClass, infoClass] h:outputFormat -> [styleClass] h:outputLabel -> [styleClass] h:outputLink -> [styleClass] h:outputText -> [styleClass] h:panelGrid -> [rowClasses, columnClasses, styleClass, headerClass, footerClass, captionClass] h:panelGroup -> [styleClass] h:selectBooleanCheckbox -> [styleClass] h:selectManyCheckbox -> [enabledClass, styleClass, selectedClass, unselectedClass, disabledClass] h:selectManyListbox -> [enabledClass, styleClass, disabledClass] h:selectManyMenu -> [enabledClass, styleClass, disabledClass] h:selectOneListbox -> [enabledClass, styleClass, disabledClass] h:selectOneMenu -> [enabledClass, styleClass, disabledClass] h:selectOneRadio -> [enabledClass, styleClass, disabledClass] p:accordionPanel -> [styleClass] p:ajaxStatus -> [styleClass] p:audio -> [styleClass] p:autoComplete -> [styleClass, inputStyleClass, itemStyleClass, panelStyleClass] p:avatar -> [styleClass] p:avatarGroup -> [styleClass] p:badge -> [styleClass] p:barcode -> [styleClass] p:blockUI -> [styleClass] p:breadCrumb -> [styleClass] p:button -> [styleClass] p:calendar -> [styleClass, inputStyleClass] p:card -> [styleClass] p:carousel -> [containerStyleClass, styleClass, contentStyleClass, indicatorsContentStyleClass] p:cascadeSelect -> [styleClass] p:chart -> [canvasStyleClass, styleClass] p:checkbox -> [styleClass] p:chip -> [removeIconClass, styleClass] p:chips -> [styleClass, inputStyleClass] p:chronoline -> [styleClass] p:colorPicker -> [styleClass] p:column -> [filterStyleClass, styleClass] p:columns -> [styleClass, filterStyleClass] p:commandButton -> [styleClass] p:commandLink -> [styleClass] p:confirm -> [yesButtonClass, noButtonClass] p:confirmDialog -> [styleClass] p:confirmPopup -> [styleClass] p:contextMenu -> [styleClass] p:dashboard -> [styleClass] p:dataGrid -> [styleClass, rowStyleClass] p:dataList -> [styleClass, itemStyleClass] p:dataScroller -> [styleClass] p:dataTable -> [styleClass, rowStyleClass, tableStyleClass] p:dataView -> [gridRowStyleClass, styleClass] p:datePicker -> [styleClass, inputStyleClass, panelStyleClass] p:diagram -> [styleClass] p:dialog -> [styleClass] p:divider -> [styleClass] p:droppable -> [activeStyleClass, hoverStyleClass] p:fieldset -> [styleClass] p:fileUpload -> [styleClass, uploadButtonStyleClass, cancelButtonStyleClass, chooseButtonStyleClass] p:galleria -> [styleClass] p:gmap -> [styleClass] p:graphicImage -> [styleClass] p:headerRow -> [styleClass] p:imageCompare -> [styleClass] p:imageSwitch -> [styleClass] p:inplace -> [styleClass] p:inputMask -> [styleClass] p:inputNumber -> [styleClass, inputStyleClass] p:inputText -> [styleClass] p:inputTextarea -> [styleClass] p:keyboard -> [styleClass] p:knob -> [styleClass] p:link -> [styleClass] p:linkButton -> [styleClass] p:media -> [styleClass] p:megaMenu -> [styleClass] p:menu -> [styleClass] p:menuButton -> [styleClass, buttonStyleClass, menuStyleClass] p:menubar -> [styleClass] p:menuitem -> [containerStyleClass, styleClass] p:message -> [styleClass] p:messages -> [styleClass] p:mindmap -> [styleClass] p:multiSelectListbox -> [styleClass] p:notificationBar -> [styleClass] p:orderList -> [styleClass] p:organigram -> [styleClass] p:organigramNode -> [styleClass] p:outputLabel -> [styleClass] p:outputPanel -> [styleClass] p:overlayPanel -> [styleClass] p:panel -> [styleClass] p:panelGrid -> [styleClass, contentStyleClass, columnClasses] p:panelMenu -> [styleClass] p:password -> [styleClass] p:photoCam -> [styleClass] p:pickList -> [styleClass] p:progressBar -> [styleClass] p:radioButton -> [styleClass] p:rating -> [styleClass] p:row -> [styleClass] p:rowEditor -> [styleClass] p:rowExpansion -> [styleClass] p:schedule -> [styleClass] p:scrollPanel -> [styleClass] p:scrollTop -> [styleClass] p:selectBooleanButton -> [styleClass] p:selectBooleanCheckbox -> [styleClass] p:selectCheckboxMenu -> [styleClass, panelStyleClass] p:selectManyButton -> [styleClass] p:selectManyCheckbox -> [styleClass] p:selectManyMenu -> [styleClass] p:selectOneButton -> [styleClass] p:selectOneListbox -> [styleClass] p:selectOneMenu -> [styleClass, panelStyleClass] p:selectOneRadio -> [styleClass, columnClasses] p:separator -> [styleClass] p:sidebar -> [styleClass] p:signature -> [styleClass] p:skeleton -> [styleClass] p:slideMenu -> [styleClass] p:slider -> [styleClass] p:spacer -> [styleClass] p:speedDial -> [maskStyleClass, styleClass, buttonStyleClass] p:spinner -> [styleClass, downButtonStyleClass, upButtonStyleClass] p:splitButton -> [styleClass, menuStyleClass] p:splitter -> [styleClass] p:splitterPanel -> [styleClass] p:staticMessage -> [styleClass] p:steps -> [styleClass] p:submenu -> [styleClass] p:tab -> [titleStyleClass] p:tabMenu -> [styleClass] p:tabView -> [styleClass] p:tag -> [styleClass] p:tagCloud -> [styleClass] p:terminal -> [styleClass] p:textEditor -> [styleClass] p:tieredMenu -> [styleClass] p:timeline -> [styleClass, dropActiveStyleClass, dropHoverStyleClass] p:toggleSwitch -> [styleClass] p:toolbar -> [styleClass] p:toolbarGroup -> [styleClass] p:tooltip -> [styleClass] p:tree -> [styleClass] p:treeNode -> [styleClass] p:treeTable -> [styleClass, rowStyleClass, tableStyleClass] p:triStateCheckbox -> [styleClass] p:video -> [styleClass] p:wizard -> [styleClass] ``` </details> --- **^Add meaningful description above** <details open> <summary>Click to collapse/expand PR instructions</summary> By opening a pull request you confirm that, unless explicitly stated otherwise, the changes - - are all your own work, and you have the right to contribute them. - are contributed solely under the terms and conditions of the Apache License 2.0 (see section 5 of the license for more information). Please make sure (eg. `git log`) that all commits have a valid name and email address for you in the Author field. If you're a first time contributor, see the Contributing guidelines for more information. If you're a committer, please label the PR before pressing "Create pull request" so that the right test jobs can run. ### PR approval and merge checklist: 1. [ ] Was this PR [correctly labeled](https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=240884239#PRsandYouAreviewerGuide-PRtriggeredCIJobs(conditionalCIpipeline)), did the right tests run? When did they run? 2. [ ] Is this PR [squashed](https://cwiki.apache.org/confluence/display/NETBEANS/git%3A+squash+and+merge)? 3. [ ] Are author name / email address correct? Are [co-authors](https://docs.github.com/en/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/creating-a-commit-with-multiple-authors#creating-co-authored-commits-on-the-command-line) correctly listed? Do the commit messages need updates? 3. [ ] Does the PR title and description still fit after the Nth iteration? Is the description sufficient to appear in the release notes? If this PR targets the delivery branch: [don't merge](https://cwiki.apache.org/confluence/display/NETBEANS/Pull+requests+for+delivery). ([full wiki article](https://cwiki.apache.org/confluence/display/NETBEANS/PRs+and+You+-+A+reviewer+Guide)) </details> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: notifications-unsubscr...@netbeans.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: notifications-unsubscr...@netbeans.apache.org For additional commands, e-mail: notifications-h...@netbeans.apache.org For further information about the NetBeans mailing lists, visit: https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists