Different screenfirstmenu in each tab items

4 messages - 1095 views

Hi All,

We created a tab folder containing 3 tabs.The problem here is when we navigate through each tabs it shows the same SCREENFIRSTMENU and SCREENSECONDMENU.We want to have seperate SCREENFIRSTMENU and SCREENSECONDMENU in each and every tab.

 

We posted so many questions but didnt get any reply.We are in the deadline to finish it within tommaro.

 

kindly help us!!!!!

 

This feature is not basicaly possible with Kuix. ScreenMenu are associated with the screen.

But you can from java code reload the menu content with those methods :

  • Kuix.loadMenuContent(Menu menu, String xmlFilePath, DataProvider dataProvider)
  • Kuix.loadMenuContent(Menu menu, InputStream inputStream, DataProvider dataProvider).

And you can intercept the tab change by using the onSelect and onUnselect of tabitem widget.

Something like :

 

...

<tabfolder>

<tabitem onSelect="selectTab(1)">

...

</tabitem>

<tabitem onSelect="selectTab(2)">

...

</tabitem>

</tabfolder>

...

 

After that just intercept selectTab into you current frame in the onMessage method and change there the menus. You can retrieve the screen menus by using the screen.getFirstMenu() function.

 

<tabfolder>

<tabitem onSelect="selectTab(1)">

...

</tabitem>

<tabitem onSelect="selectTab(2)">

...

</tabitem>

</tabfolder>

hi i have tried this one, but  it is showing error thet there is no onselect  options in tabitem...

 

 

And also i have attached the code..

based on this code i want seperate screenfirst menu for each tab ......

help me pls...

 

 

 

 

 

homescreen.xml
<screen cleanUpWhenRemoved="true">
   
    <_title>%TABS%</_title>
   
    <tabfolder  class="library" id="tabs">
       
        <tabitem style="layout:borderlayout" icon="call_img.PNG" label="Logs" id="tab1">
            <tabitembutton onselect="selectTab(tab1)" onaction="tab1">
                <_selected>@{selectedTab1}</_selected>
            </tabitembutton>
            <textfield style="layout:borderlayout;layout-data:bld(north);align:center;margin:2;border:0;bg-image:url(white_dialer.PNG);border-color:white;font-style:bold;font-size:large;min-size:20 10">
               
                09983866866
               
            </textfield>
           
            <container  style="layout:borderlayout;layout-data:bld(center)" >
                <scrollpane >
                    <list >
                        <_renderer >
                            <![CDATA[
            <listItem onfocus="contactfocus" style="layout:gridlayout(3,1)" onAction="show">
                <picture style="align:left">arrow-green.PNG</picture>
                <container style="layout:inlinelayout(false,fill)">
                    <text >@{name}</text>
                </container>
                               <picture >Mobimoovicon.PNG</picture>
            </listItem>
            ]]>
                        </_renderer>
                        <_items >@{calllogs}</_items>
                    </list>
                </scrollpane>
            </container>
           
            <!--  #inc(/xml/tab1.xml)-->
        </tabitem>
       
        <tabitem style="layout:borderlayout" icon="contact_img.PNG" label= "Contacts" id="tab2">
            <tabitembutton onselect="selectTab(tab2)" onaction="tab2">
                <_selected>@{selectedTab2}</_selected>
            </tabitembutton>
            <container  style="layout:borderlayout;layout-data:bld(center)" >
                <scrollpane >
                    <list >
                        <_renderer >
                            <![CDATA[
            <listItem onfocus="contactfocus" style="layout:borderlayout" onAction="show">
               
                <container style="layout:inlinelayout(false,fill)">
                    <text >@{name}</text>
                </container>
                             
            </listItem>
            ]]>
                        </_renderer>
                        <_items >@{contacts}</_items>
                    </list>
                </scrollpane>
            </container>
           
           
           
            <!--#inc(/xml/tab2.xml)-->
        </tabitem>
        <tabitem style="layout:borderlayout" icon="chat_img.PNG" label="M2MUI" id="tab2">
            <tabitembutton onselect="selectTab(tab3)">
                <_selected>@{selectedTab3}</_selected>
            </tabitembutton>
            <container  style="layout:borderlayout;layout-data:bld(center)" >
                <scrollpane >
                    <list >
                        <_renderer >
                            <![CDATA[
            <listItem onfocus="contactfocus" style="layout:gridlayout(2,1)" onAction="show">
                 <picture>M2MUI.PNG</picture>
                <container style="layout:inlinelayout(false,fill)">
                    <text >@{name}</text>
                </container>
                             
            </listItem>
            ]]>
                        </_renderer>
                        <_items >@{m2mcontacts}</_items>
                    </list>
                </scrollpane>
            </container>
           
           
           
            <!--#inc(/xml/tab2.xml)-->
        </tabitem>
       
    </tabfolder>
    <screenfirstmenu>Options
       
       
    </screenfirstmenu> 
    <screenSecondMenu onAction="hide">%HIDE%</screenSecondMenu>
   
</screen>

homescreen.frame

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dataproviders;

import co.uk.mobinoinnovation.Mobimoov.ui.mobimoovconstants.MobimoovConstants;
import java.util.Vector;
import org.kalmeo.kuix.core.Kuix;
import org.kalmeo.kuix.core.KuixConstants;
import org.kalmeo.kuix.core.model.DataProvider;
import org.kalmeo.kuix.widget.Menu;
import org.kalmeo.kuix.widget.Screen;
import org.kalmeo.kuix.widget.TabFolder;
import org.kalmeo.kuix.widget.TabItem;
import org.kalmeo.kuix.widget.Widget;
import org.kalmeo.util.frame.Frame;

/**
 *
 * @author Srivatsan
 */
public class TabScreen implements Frame {

    private Vector contactvec = new Vector();
    private Vector calllogvec = new Vector();
    private Vector m2mvec = new Vector();
    // Static frame instance
    public static final TabScreen instance = new TabScreen();
    TabProvider tabProvider = new TabProvider();
    private final Screen screen = Kuix.loadScreen("/xml/homescreen.xml", tabProvider);
    public boolean status = false;
    Menu menu=new Menu();

    private void showtab1Options(String askAction, DataProvider dataProvider) {

        Widget container = new Widget(KuixConstants.CONTAINER_WIDGET_TAG);
        Kuix.loadXml(container, getClass().getResourceAsStream(MobimoovConstants.TAB1_OPTIONS), dataProvider);
        Kuix.showPopupBox("askbox", -1, container, 0, null, null, null, null);
    }

   
    public void showScreen() {
        screen.setCurrent();
    }
    private static final String SELECT_TAB = "selectTab";
    TabFolder tabFolder = (TabFolder) screen.getWidget("tabs");
    TabItem tab;

    public boolean onMessage(Object identifier, Object[] arguments) {
        boolean devolver = false;
   
        if ("selectTab(1)".equals(identifier)) {
            System.out.println("selectTab(tab1).equals(identifier)11111111111111:::::::::::::;;");
            Kuix.loadMenuContent( menu, "/xml/homescreen.xml"tabProvider);
        }
       
        else if ("selectTab(2)".equals(identifier)) {

            System.out.println("selectTab(tab1).equals(identifier)11111112121212:::::::::::::;;");
        }

        else if ("selectTab3".equals(identifier)) {
            System.out.println("selectTab(tab1).equals(identifier)13334324234234:::::::::::::;;");
        }

       return true;
    }

    public void onAdded() {

        try {

            calllogvec.addElement("09986866605");
            calllogvec.addElement("09986818454");
            calllogvec.addElement("09949065658");
            calllogvec.addElement("09969696969");
            calllogvec.addElement("09009898989");
            calllogvec.addElement("09668686868");
            calllogvec.addElement("09449666565");
            calllogvec.addElement("09969696969");
            calllogvec.addElement("09009898989");
            for (int i = 0; i < calllogvec.size(); i++) {
                tabProvider.createCallLogList((String) calllogvec.elementAt(i));
            }


        } catch (Exception ex) {
            ex.printStackTrace();
        }

        try {

            contactvec.addElement("jay");
            contactvec.addElement("kiran");
            contactvec.addElement("easwar");
            contactvec.addElement("hari");
            contactvec.addElement("venky");
            contactvec.addElement("ravi");
            contactvec.addElement("raju");
            contactvec.addElement("hari");
            contactvec.addElement("venky");
            contactvec.addElement("ravi");
            contactvec.addElement("raju");
            for (int i = 0; i < contactvec.size(); i++) {
                tabProvider.createContactList((String) contactvec.elementAt(i));
            }


        } catch (Exception ex) {
            ex.printStackTrace();
        }

        try {

            m2mvec.addElement("jay");
            m2mvec.addElement("kiran");
            m2mvec.addElement("easwar");
            m2mvec.addElement("hari");
            m2mvec.addElement("venky");
            m2mvec.addElement("ravi");
            m2mvec.addElement("raju");
            m2mvec.addElement("hari");
            m2mvec.addElement("venky");
            m2mvec.addElement("ravi");
            m2mvec.addElement("raju");
            for (int i = 0; i < m2mvec.size(); i++) {
                tabProvider.createM2MList((String) m2mvec.elementAt(i));
            }


        } catch (Exception ex) {
            ex.printStackTrace();
        }


        showScreen();

    }

    public void onRemoved() {
    }
}

 

DATA PROVIDER:tabprovider

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package dataproviders;

import org.kalmeo.kuix.core.model.DataProvider;

public class TabProvider extends DataProvider {

    private boolean selectedTab1 = true; //By default, when initializing the frame.
    private boolean selectedTab2;
    private boolean selectedTab3;
    private String selectTab = TAB1;

    //Tabs that can be selected in the frame
    public static final String TAB1 = "tab1";
    public static final String TAB2 = "tab2";
    public static final String TAB3 = "tab3";
    private static final String SELECTED_TAB1 = "selectedTab1";
    private static final String SELECTED_TAB2 = "selectedTab2";
    private static final String SELECTED_TAB3 = "selectedTab3";
    public static final String CALLLOG_PROPERTY = "calllogs";
    public static final String CONTACT_PROPERTY = "contacts";
    public static final String M2M_PROPERTY = "m2mcontacts";
    private static final String NAME_PROPERTY = "name";

    // create a value variable
    public String contact = "unknown";
    // ContactList's name
    public String name;

    public void setSelectedTab2(boolean selectedTab2) {
        this.selectedTab2 = selectedTab2;
        dispatchUpdateEvent(SELECTED_TAB2);
    }

    public boolean isSelectedTab2() {
        return selectedTab2;
    }

    public void setSelectedTab3(boolean selectedTab3) {
        this.selectedTab3 = selectedTab3;
        dispatchUpdateEvent(SELECTED_TAB3);
    }

    public boolean isSelectedTab3() {
        return selectedTab3;
    }

    public boolean isSelectedTab1() {
        return selectedTab1;
    }

    public void setSelectedTab1(boolean selectedTab1) {
        this.selectedTab1 = selectedTab1;
        dispatchUpdateEvent(SELECTED_TAB1);
    }

    public void setName(String name) {
        this.name = name;
        dispatchUpdateEvent(NAME_PROPERTY);
    }

    protected Object getUserDefinedValue(String property) {
        Object devolver = null;

        if (SELECTED_TAB1.equals(property)) {
            devolver = "" + selectedTab1;
        } else if (SELECTED_TAB2.equals(property)) {
            devolver = "" + selectedTab2;
        } else if (SELECTED_TAB3.equals(property)) {
            devolver = "" + selectedTab3;
        }

        if (NAME_PROPERTY.equals(property)) {
            return this.name;
        }


        return devolver;
    }

    public String getSelectTab() {
        return selectTab;
    }
                                      
    public void setSelectTab(String selectTab) {
        this.selectTab = selectTab;
        updateSelectTab(selectTab);
    }

    private void updateSelectTab(String selectTab) {
        if (selectTab.equals(TAB1)) {
            selectedTab1 = true;
            selectedTab2 = false;
            selectedTab3 = false;
        } else if (selectTab.equals(TAB1)) {
            selectedTab2 = true;
            selectedTab1 = false;
            selectedTab3 = false;
        } else if (selectTab.equals(TAB2)) {
            selectedTab3 = true;
            selectedTab1 = false;
            selectedTab2 = false;
        }
        dispatchUpdateEvent(SELECTED_TAB1);
        dispatchUpdateEvent(SELECTED_TAB2);
        dispatchUpdateEvent(SELECTED_TAB3);
    }
    public boolean createCallLogList(String name) {
        if (name != null && name.length() > 0) {
            System.out.println("pad open create contactlist------");
            // Create the model
            TabProvider callLogList = new TabProvider();
            callLogList.setName(name);
            // Add shopList model
            addItem(CALLLOG_PROPERTY, callLogList);
            return true;
        }
        return false;
    }
    public boolean createContactList(String name) {
        if (name != null && name.length() > 0) {
            System.out.println("pad open create contactlist------");
            // Create the model
            TabProvider contactList = new TabProvider();
            contactList.setName(name);
            // Add shopList model
            addItem(CONTACT_PROPERTY, contactList);
            return true;
        }
        return false;
    }
    public boolean createM2MList(String name) {
        if (name != null && name.length() > 0) {

            System.out.println("pad open create contactlist------");

            // Create the model
            TabProvider m2mList = new TabProvider();
            m2mList.setName(name);
            // Add shopList model
            addItem(M2M_PROPERTY, m2mList);


            return true;
        }
        return false;
    }
}

 

 

 

If you want simply to change the text on a menu you can something like that:

First, enclose the text into a text widget:

 

<screenSecondMenu onAction="cancel">

    <text id="secondMenuText">%CANCEL%</text>

</screenSecondMenu>

Change the onAction called in onMessage():
this.screen.getSecondMenu().setOnAction("next");
Change the text displayed on second menu:
((Text) this.screen.getWidget("secondMenuText")).setText(Kuix.getMessage("NEXT"));