Package nfc.sample.Ndef.Write.ui

Source Code of nfc.sample.Ndef.Write.ui.TypeSelectionScreen

package nfc.sample.Ndef.Write.ui;
/*
* Copyright (c) 2012 Research In Motion Limited.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

import net.rim.device.api.system.Bitmap;
import net.rim.device.api.system.Display;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FocusChangeListener;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.LabelField;
import net.rim.device.api.ui.container.AbsoluteFieldManager;
import net.rim.device.api.ui.container.MainScreen;
import nfc.sample.Ndef.Write.Constants;
import nfc.sample.Ndef.Write.buttons.MsbConfig;
import nfc.sample.Ndef.Write.buttons.MsbState;
import nfc.sample.Ndef.Write.buttons.MultiStateButtonField;
import nfc.sample.Ndef.Write.commands.CreateCustomTagCommand;
import nfc.sample.Ndef.Write.commands.CreateSpTagCommand;
import nfc.sample.Ndef.Write.commands.CreateTextTagCommand;
import nfc.sample.Ndef.Write.commands.CreateUriTagCommand;

public class TypeSelectionScreen extends MainScreen {
   
    private Bitmap uri_focused = Bitmap.getBitmapResource("uri_type_focus.png");
    private Bitmap uri_unfocused = Bitmap.getBitmapResource("uri_type_no_focus.png");
    private Bitmap uri_clicked = Bitmap.getBitmapResource("uri_type_clicked.png");

    private Bitmap sp_focused = Bitmap.getBitmapResource("sp_type_focus.png");
    private Bitmap sp_unfocused = Bitmap.getBitmapResource("sp_type_no_focus.png");
    private Bitmap sp_clicked = Bitmap.getBitmapResource("sp_type_clicked.png");

    private Bitmap text_focused = Bitmap.getBitmapResource("text_type_focus.png");
    private Bitmap text_unfocused = Bitmap.getBitmapResource("text_type_no_focus.png");
    private Bitmap text_clicked = Bitmap.getBitmapResource("text_type_clicked.png");

    private Bitmap custom_focused = Bitmap.getBitmapResource("custom_type_focus.png");
    private Bitmap custom_unfocused = Bitmap.getBitmapResource("custom_type_no_focus.png");
    private Bitmap custom_clicked = Bitmap.getBitmapResource("custom_type_clicked.png");

    private MultiStateButtonField msbf_uri;
    private MultiStateButtonField msbf_sp;
    private MultiStateButtonField msbf_text;
    private MultiStateButtonField msbf_custom;
   
    private LabelField ui_msg=new LabelField("Ready",Field.FIELD_HCENTER);
   
    private int focused_button = 0;

    private FocusChangeListener focus_listener = new FocusChangeListener() {

        public void focusChanged(Field field, int eventType) {
            if (field == msbf_uri) {
                focused_button = 0;
                setMessage("Create URI type tag");
            }
            if (field == msbf_sp) {
                focused_button = 1;
                setMessage("Create Smart Poster type tag");
            }
            if (field == msbf_text) {
                focused_button = 2;
                setMessage("Create Text type tag");
            }
            if (field == msbf_custom) {
                focused_button = 3;
                setMessage("Create custom type tag");
            }
        }

    };

    public TypeSelectionScreen() {
        super(USE_ALL_HEIGHT | USE_ALL_WIDTH | FIELD_HCENTER | FIELD_VCENTER | NO_VERTICAL_SCROLL);
        setTitle("NfcWriteNdefSmartTag V" + Constants.MYAPP_VERSION);

        AbsoluteFieldManager mgr = new AbsoluteFieldManager();
        // bitmaps are 120 x 120
        int hgap = (int) ((Display.getWidth() - 240) / 3);
        int vgap = (int) (Display.getHeight() - 240) / 3;
        int x1= hgap;
        int x2= x1 + 120 + hgap;
        int y1 = vgap;
        int y2 = y1 + 120 + vgap;

        MsbConfig uri_btn_config = new MsbConfig();
        MsbState uri_btn_state = new MsbState(Constants.BTN_STATE, "Create URI type tag", "Create URI type tag");
        uri_btn_state.setbmp_focused(uri_focused);
        uri_btn_state.setbmp_unfocused(uri_unfocused);
        uri_btn_state.setbmp_clicked(uri_clicked);
        uri_btn_state.setbmp_unclicked(uri_focused);
        uri_btn_config.addState(uri_btn_state);
        msbf_uri = new MultiStateButtonField(uri_btn_config, new CreateUriTagCommand(), 0, Field.FIELD_HCENTER);
        mgr.add(msbf_uri,x1,y1);
        msbf_uri.setFocusListener(focus_listener);

        MsbConfig sp_btn_config = new MsbConfig();
        MsbState sp_btn_state = new MsbState(Constants.BTN_STATE, "Create Smart Poster type tag", "Create Smart Poster type tag");
        sp_btn_state.setbmp_focused(sp_focused);
        sp_btn_state.setbmp_unfocused(sp_unfocused);
        sp_btn_state.setbmp_clicked(sp_clicked);
        sp_btn_state.setbmp_unclicked(sp_focused);
        sp_btn_config.addState(sp_btn_state);
        msbf_sp = new MultiStateButtonField(sp_btn_config, new CreateSpTagCommand(), 0, Field.FIELD_HCENTER);
        mgr.add(msbf_sp,x2,y1);
        msbf_sp.setFocusListener(focus_listener);

        MsbConfig text_btn_config = new MsbConfig();
        MsbState text_btn_state = new MsbState(Constants.BTN_STATE, "Create Text type tag", "Create Text type tag");
        text_btn_state.setbmp_focused(text_focused);
        text_btn_state.setbmp_unfocused(text_unfocused);
        text_btn_state.setbmp_clicked(text_clicked);
        text_btn_state.setbmp_unclicked(text_focused);
        text_btn_config.addState(text_btn_state);
        msbf_text = new MultiStateButtonField(text_btn_config, new CreateTextTagCommand(), 0, Field.FIELD_HCENTER);
        mgr.add(msbf_text,x1,y2);
        msbf_text.setFocusListener(focus_listener);

        MsbConfig custom_btn_config = new MsbConfig();
        MsbState custom_btn_state = new MsbState(Constants.BTN_STATE, "Create custom type tag", "Create custom type tag");
        custom_btn_state.setbmp_focused(custom_focused);
        custom_btn_state.setbmp_unfocused(custom_unfocused);
        custom_btn_state.setbmp_clicked(custom_clicked);
        custom_btn_state.setbmp_unclicked(custom_focused);
        custom_btn_config.addState(custom_btn_state);
        msbf_custom = new MultiStateButtonField(custom_btn_config, new CreateCustomTagCommand(), 0, Field.FIELD_HCENTER);
        mgr.add(msbf_custom,x2,y2);
        msbf_custom.setFocusListener(focus_listener);

//        mgr.add(ui_msg,x1,10);

        add(mgr);
    }

    private void setMessage(String message) {
        synchronized (UiApplication.getEventLock()) {
            ui_msg.setText(message);
        }
       
    }
   
    protected boolean navigationMovement(int dx, int dy, int status, int time) {

        int x_dir = 0;
        int y_dir = 0;

        if (dx > 0) {
            x_dir = 1;
        }
        if (dx < 0) {
            x_dir = -1;
        }

        if (dy > 0) {
            y_dir = 1;
        }
        if (dy < 0) {
            y_dir = -1;
        }
        setFocusedButton(x_dir, y_dir);
        return true;
    }

    // uri  : sp
    // text : custom
    private void setFocusedButton(int x_dir, int y_dir) {
        switch (focused_button) {
        case 0:
            if (x_dir == 1 && y_dir == 0) {
                focused_button = 1;
                msbf_sp.setFocus();
                return;
            }
            if (x_dir == 0 && y_dir == 1) {
                focused_button = 2;
                msbf_text.setFocus();
                return;
            }
            if (x_dir == 1 && y_dir == 1) {
                focused_button = 3;
                msbf_custom.setFocus();
                return;
            }
            break;
        case 1:
            if (x_dir == -1 && y_dir == 0) {
                focused_button = 0;
                msbf_uri.setFocus();
                return;
            }
            if (x_dir == 0 && y_dir == 1) {
                focused_button = 3;
                msbf_custom.setFocus();
                return;
            }
            if (x_dir == -1 && y_dir == 1) {
                focused_button = 2;
                msbf_uri.setFocus();
                return;
            }
            break;
        case 2:
            if (x_dir == 1 && y_dir == 0) {
                focused_button = 3;
                msbf_custom.setFocus();
                return;
            }
            if (x_dir == 0 && y_dir == -1) {
                focused_button = 0;
                msbf_uri.setFocus();
                return;
            }
            if (x_dir == 1 && y_dir == -1) {
                focused_button = 1;
                msbf_sp.setFocus();
                return;
            }
            break;
        case 3:
            if (x_dir == -1 && y_dir == 0) {
                focused_button = 2;
                msbf_text.setFocus();
                return;
            }
            if (x_dir == 0 && y_dir == -1) {
                focused_button = 1;
                msbf_sp.setFocus();
                return;
            }
            if (x_dir == -1 && y_dir == -1) {
                focused_button = 0;
                msbf_uri.setFocus();
                return;
            }
            break;
        }
    }


}
TOP

Related Classes of nfc.sample.Ndef.Write.ui.TypeSelectionScreen

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.