Saturday 6 April 2013

Create CUSTOM MENU in Blackberry Example

Here CustomMenu is a class which we create any number of menu and according to the tag value

=================StartUp.java================

package com.alishaik.custommenu;

public class StartUp extends UiApplication
{
    public static void main(String[] ali)
    {
        StartUp theApp = new StartUp();      
        theApp.enterEventDispatcher();
    }
   
    public StartUp()
    {       
        pushScreen(new FirstScreen());
    }   
   
    public static void showAlertMessage(final String message)
    {
        UiApplication.getUiApplication().invokeLater(new Runnable()
        {
            public void run()
            {
                Dialog.alert(message);
            }
        });
    }
}
=================FirstScreen.java================

package com.alishaik.custommenu;

public class FirstScreen extends MainScreen implements MenuInterface
{
    private ButtonField clickButton;
    private CustomMenu firstMenu1,firstMenu2;
   
    public FirstScreen()
    {
        createGUI();
    }

    private void createGUI()
    {
        firstMenu1=new CustomMenu("First1", 100, 101, 1);
        firstMenu1.setMenuListener(this);
        addMenuItem(firstMenu1);
       
        firstMenu2=new CustomMenu("First2", 100, 101, 2);
        firstMenu2.setMenuListener(this);
        addMenuItem(firstMenu2);
       
       
        add(new LabelField("First Screen", Field.FOCUSABLE));
        //ButtonField.CONSUME_CLICK if you are not writing this every screen menu shows.
        clickButton=new ButtonField("Clik to go Next", Field.FOCUSABLE|ButtonField.CONSUME_CLICK);
        clickButton.setChangeListener(new FieldChangeListener()
        {
            public void fieldChanged(Field field, int context)
            {
                UiApplication.getUiApplication().pushScreen(new SecondScreen());
            }
        });
        add(clickButton);
    }
   
    public void onMenuPressed(String menuText, int tag)
    {
        StartUp.showAlertMessage("You Selected "+menuText);
        if(tag==1)
        {
            //FirstMenu1 Selected;
        }
        else
        {
            //FirstMenu2 Selected;
        }
    }   
   
    protected boolean onSavePrompt()
    {
        return true;
    }
}

=================SecondScreen.java================

package com.alishaik.custommenu;

public final class SecondScreen extends MainScreen implements MenuInterface
{
    private ButtonField clickButton;
    private CustomMenu secondMenu1,secondMenu2;
   
    public SecondScreen()
    {
        createGUI();
    }

    private void createGUI()
    {
        secondMenu1=new CustomMenu("Second1", 100, 101, 1);
        secondMenu1.setMenuListener(this);
        addMenuItem(secondMenu1);
       
        secondMenu2=new CustomMenu("Second2", 100, 101, 2);
        secondMenu2.setMenuListener(this);
        addMenuItem(secondMenu2);
       
        add(new LabelField("Second Screen", Field.FOCUSABLE));
        //ButtonField.CONSUME_CLICK if you are not writing this every screen menu shows.
        clickButton=new ButtonField("Back button", Field.FOCUSABLE|ButtonField.CONSUME_CLICK);       
        clickButton.setChangeListener(new FieldChangeListener()
        {
            public void fieldChanged(Field field, int context)
            {
                UiApplication.getUiApplication().popScreen(SecondScreen.this);
                return;   
            }
        });
        add(clickButton);
    }

    public void onMenuPressed(String menuText, int tag)
    {
        StartUp.showAlertMessage("You Selected "+menuText);
        if(tag==1)
        {
            //SecondMenu1 Selected;
        }
        else
        {
            //SecondMenu2 Selected;
        }
    }
   
    protected boolean onSavePrompt()
    {
        return true;
    }
}


=================MenuInterface.java================

package com.alishaik.custommenu;

public interface MenuInterface
{
    public void onMenuPressed(String menuText,int tag);
}


=================CustomMenu.java================

package com.alishaik.custommenu;

public class CustomMenu extends MenuItem
{
    private MenuInterface menuInterface;
    private String menuText;
    private int tag;
   
    public CustomMenu(String text, int ordinal, int priority, int tag)
    {
        super(text, ordinal, priority);
        this.menuText=text;
        this.tag=tag;
    }

    public void run()
    {
        menuInterface.onMenuPressed(menuText, tag);
    }
   
    public void setMenuListener(MenuInterface listener)
    {
        this.menuInterface=listener;
    }       
}
 

any doubts feel free to mail on alishaik001@gmail.com 


No comments:

Post a Comment