2013-02-28 2 views
2

У меня есть MenuBar в моем приложении и вам нужно отключить его на основе некоторого состояния. Метод setEnabled (boolean) недоступен в GWT MenuBar, поэтому нет прямого способа выполнить это требование.Как отключить MenuBar в GWT

Для примера: если вы смотрите на NestedAnchor.setEnabled(boolean enabled), он отключает события на этом виджета и добавляет стиль. Я хотел бы сделать то же самое поведение на MenuBar, где события click не запускаются, чтобы показать всплывающее окно.

Также попытался с JQuery добавить disabled Attr, до сих пор нет успеха

ответ

1

Это будет служить цели: menuBar.unsinkEvents(Event.MOUSEEVENTS | Event.ONCLICK | Event.FOCUSEVENTS | Event.KEYEVENTS);

+0

Это отключает запуск событий в строке меню. Ну интересно, но как насчет стилей ???? Я думаю, вы можете достичь своей цели более простым способом ... взгляните на предоставленный мной ответ. – Adarsha

+0

Ya styling нужно обрабатывать отдельно :) – Satya

1

Вы можете сделать невидимым MenuBar

menuBar.setVisible(false); 

Если когда-нибудь вы хотите включить строку меню, то menuBar.setVisible (истина);

или

если вы хотите отключить стиль затем добавить styleDisable в .css файла и установить стиль для

menuBar.setStyleName(styleDisable); 

then check style

if(menuBar.getStyleName().equals("styleDisable")){ 

// write code here 
} 
+0

@Satya отключить всплывающее меню в строке меню добавить проверки состояния, как и выше, я thnk это Wrk, сделал и попробовал? – Parvathy

+0

+ 1, Первый довольно плохо, чтобы скрыть панель меню, когда вам нужно отключить. Но второе - лучшее решение. :) –

+0

@ TheSureshAtta Я просто сказал, что оба bcz Satya могут выбрать любую вещь – Parvathy

0

Вы можете использовать следующую Апи

DOM.setElementPropertyBoolean(menubar.getElement(), "disabled", !enabled); 
+0

это просто добавит отключенное свойство в menuBar, вот что делает даже jquery, но не отключает всплывающее меню MenuBar – Satya

+0

, обертывая панель меню в focusPanel и использую вышеуказанный оператор на обертке , Это определенно сработает. –

2

Строка меню представляет собой контейнер для пунктов меню. Контейнеры не поддерживают отключенное свойство. Поэтому yohu придется вручную перебирать список элементов меню, чтобы отключить каждый из них. Ниже фрагмент кода делает это путем добавления setEnable метода в строке меню -

MenuBar menuBar = new MenuBar() 
{ 
     public void setEnable(boolean enableFl) 
     { 
       for(MenuItem item : getItems()) 
       { 
        item.setEnable(enableFl); 
       } 
     } 
}; 
+1

Это самый простой и безопасный способ отключения панели меню. – Adarsha

+0

, но это все равно вызовет щелчок на MenuBar, чтобы пользователь мог видеть всплывающее окно ... но я тоже этого не хочу. Как использовать всплывающее окно, когда все функции MenuItems отключены? – Satya

+0

Отключенные пункты меню запускают события щелчка ?????????? странный !!! – Adarsha