This is needed to properly register UnscrambleAction in Java plugin in other IDEs (IDEA-195719) because all of them have AnalyzeStacktraceAction registered by the same ID.
Declarations of These actions would clash with the same actions registered in other IDEs, so we need to register it in IntelliJ IDEA only, not in a separate Java plugin (IDEA-195719).
Other IDEs usually have their own 'New Project' action so we should use different text for Java-specific action differently when Java support is installed via plugin (IDEA-195719). Also in some IDEs these actions aren't shown under 'New' submenu so we need to add prefix 'New ' to their texts in such cases.
Previously it was checked via 'PlatformOpenProjectGroup' action group, but this group may not be added in all IDEs, so the check didn't work properly e.g. for Rider. Now it's checked in a more straightforward and reliable way by inspecting 'New' group.
NewActionGroup.isActionInNewPopupMenu method is needed to do a similar thing for other actions which are located in 'New' submenu in IDEA but will be shown directly in 'File' menu for other IDEs with Java plugin (IDEA-195719).
This is needed to allow plugins contribute their own variants of 'New Project' action (e.g. in Java plugin, IDEA-195719) which should be shown under the main one.
Reason — no easy way to implement tabs (required component) in Vanilla JS. It is possible but time consuming and reinventing the wheel. It tool only 20 minutes to implement tab js, but what about style? What about routing (ability to navigate and persist selected tab via URL query). So, it is time to move to some framework and do not resist.
1. https://github.com/JetBrains/ring-ui is not chosen because React is required.
2. Vue.js is used instead of React because two years ago I selected Vue.js and now main goal was to implement new functionality but not spend time choosing between frameworks again.
3. Not confident that ring-ui quality is better than ElementUI - amount of time to get good looking UI without touching any line of CSS (main problem here not CSS itself, but design — designer skills).
4. Vuetify is not used because MD and Google. Feeling is not great.
5. iView looks like ElementUI and two years ago I selected iView, but now ElementUI has more stars (35,427 vs 19,984), doesn't have silly critical blocking issue in TS support (time.ts 'VNode' is declared but its value is never read.)
Main reason to not choose ElementUI was fact that ElementUI is not so contrast and readable. But now... it looks decent, especially on Retina screen. Also, for this app such a little bit gray text is good because doesn't distract from charts.
(no doubt - it is easy to change font color, but point here is that UI framework should be good looking without any tweaks, otherwise it is strong indicator that other aspects will require tuning also)