1313import com .intellij .remoterobot .RemoteRobot ;
1414import com .intellij .remoterobot .fixtures .ActionButtonFixture ;
1515import com .intellij .remoterobot .fixtures .CommonContainerFixture ;
16+ import com .intellij .remoterobot .fixtures .ComponentFixture ;
1617import com .intellij .remoterobot .fixtures .JButtonFixture ;
1718import com .intellij .remoterobot .fixtures .JPopupMenuFixture ;
19+ import com .intellij .remoterobot .fixtures .dataExtractor .RemoteText ;
20+ import com .intellij .remoterobot .utils .WaitForConditionTimeoutException ;
1821import com .redhat .devtools .intellij .commonuitest .UITestRunner ;
22+ import com .redhat .devtools .intellij .commonuitest .fixtures .mainidewindow .MainIdeWindow ;
1923import com .redhat .devtools .intellij .commonuitest .utils .constants .XPathDefinitions ;
24+ import org .jetbrains .annotations .NotNull ;
2025
2126import java .time .Duration ;
2227import java .util .List ;
@@ -83,7 +88,11 @@ private JButtonFixture mainMenuItem(String label) {
8388 if (remoteRobot .isMac ()) {
8489 return null ;
8590 }
91+ return getMainMenu ().button (byXpath (XPathDefinitions .label (label )), Duration .ofSeconds (10 ));
92+ }
8693
94+ @ NotNull
95+ public CommonContainerFixture getMainMenu () {
8796 CommonContainerFixture cf ;
8897 if (remoteRobot .isLinux () && ideaVersionInt <= 20242 ) {
8998 cf = remoteRobot .find (CommonContainerFixture .class , byXpath (XPathDefinitions .LINUX_MAIN_MENU ), Duration .ofSeconds (10 ));
@@ -96,7 +105,20 @@ private JButtonFixture mainMenuItem(String label) {
96105 } else {
97106 cf = remoteRobot .find (CommonContainerFixture .class , byXpath (XPathDefinitions .WINDOWS_MAIN_MENU_2020_2_AND_OLDER ), Duration .ofSeconds (10 ));
98107 }
108+ return cf ;
109+ }
99110
100- return cf .button (byXpath (XPathDefinitions .label (label )), Duration .ofSeconds (10 ));
111+ public void setVisible (){
112+ // check menu already visible
113+ try {
114+ getMainMenu ();
115+ } catch (WaitForConditionTimeoutException e ) {
116+ // not visible
117+ MainIdeWindow mainIdeWindow = remoteRobot .find (MainIdeWindow .class , Duration .ofSeconds (5 ));
118+ mainIdeWindow .invokeCmdUsingSearchEverywherePopup ("Appearance" );
119+ ComponentFixture appearanceDialog = remoteRobot .find (ComponentFixture .class , byXpath ("//div[@class='JBViewport'][.//div[@class='MyList']]" ));
120+ List <RemoteText > items = appearanceDialog .findAllText ();
121+ items .stream ().filter (remoteText -> remoteText .getText ().equals ("Main Menu" )).findFirst ().ifPresent (RemoteText ::click );
122+ }
101123 }
102124}
0 commit comments