6.27.2009

Dinamik Olarak Menu Oluşturma

Aşağıdaki fonksiyon menubar eklendiğinde sayfaya init kısmında çağrılmalıdır. DB den kayıtlar okuyarak menü oluşturmak için fikir verir umarım.


public void createMenus(PhaseEvent phaseEvent) {


boolean addMenu = true;
for (Iterator iterator = initMenu.getChildren().iterator(); iterator.hasNext();) {
UIComponent component = (UIComponent) iterator.next();
if ( component.getId().startsWith("menuId")){
addMenu = false;
}
}
if (addMenu) {

AppModuleCrmImpl am = getAm();
ViewObject vo = am.getViewLoggedInUser();
Row rowUser = vo.first();
kullaniciID = rowUser.getAttribute("KullaniciId").toString();


// Kullanıcı ana menulerinin alınması için kullanıcıId ile VO execute ediliyor.

KullaniciAnaMenuleriImpl menuView = (KullaniciAnaMenuleriImpl)am.getKullaniciAnaMenuleri();
menuView.setNamedWhereClauseParam("TheKullaniciId", kullaniciID);
menuView.executeQuery();

RichMenu menu = new RichMenu(); ;
RichMenu newMenu;
RichCommandMenuItem menuItem = new RichCommandMenuItem();


while (menuView.hasNext()) {

KullaniciAnaMenuleriRowImpl menuItemRow = (KullaniciAnaMenuleriRowImpl)menuView.next();

if ((int)getCountSubMenu(kullaniciID, Integer.parseInt(menuItemRow.getMenuId().toString())) > 0){

newMenu = new RichMenu();
newMenu.setId("menuId" + menuItemRow.getMenuId().toString());
newMenu.setText(menuItemRow.getMenuLabel());
newMenu.setIcon(menuItemRow.getIcons());

newMenu = addSubMenu(kullaniciID, Integer.parseInt(menuItemRow.getMenuId().toString()),newMenu);

initMenu.getChildren().add(newMenu);

}else {

menuItem.setId("menuId" + menuItemRow.getMenuId().toString());
menuItem.setText(menuItemRow.getMenuLabel());
menuItem.setIcon(menuItemRow.getIcons());

// if (!menuItemRow.getActionAdi().equals(null))
menuItem.setActionExpression(getMethodExpression(menuItemRow.getActionAdi()));

initMenu.getChildren().add(menuItem);

}




}
menuView.remove();
}
}