BaseView.java
/*
* Copyright © 2012 Nokia Corporation. All rights reserved.
* Nokia and Nokia Connecting People are registered trademarks of Nokia Corporation.
* Oracle and Java are trademarks or registered trademarks of Oracle and/or its
* affiliates. Other product and company names mentioned herein may be trademarks
* or trade names of their respective owners.
* See LICENSE.TXT for license information.
*/
package com.nokia.example.attractions.views;
import com.nokia.example.attractions.Visual;
import com.nokia.example.attractions.Main;
import com.nokia.example.attractions.DataModel;
import com.nokia.example.attractions.utils.UIUtils;
import javax.microedition.io.ConnectionNotFoundException;
import javax.microedition.lcdui.AlertType;
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.Sprite;
/**
* Base class for views.
*/
public abstract class BaseView {
private int x; // position of the view on screen, x-coordinate
private int y; // position of the view on screen, y-coordinate
private int width; // available width on screen to be used
private int height; // available height on screen to be used
protected final Main midlet = Main.getInstance();
protected final ViewMaster viewMaster = ViewMaster.getInstance();
protected final DataModel data = DataModel.getInstance();
private boolean active = false;
// common commands
protected final Command exitCmd = UIUtils.createCommand(UIUtils.EXIT);
protected final Command backCmd = UIUtils.createCommand(UIUtils.BACK);
protected final Command mapCmd = UIUtils.createCommand(UIUtils.MAP);
protected final Command guidesCmd = UIUtils.createCommand(UIUtils.GUIDES);
protected final Command buyGuidesCmd = UIUtils.createCommand(
UIUtils.BUY_GUIDES);
protected final Command aboutCmd = UIUtils.createCommand(UIUtils.ABOUT);
protected final Command helpCmd = UIUtils.createCommand(UIUtils.HELP);
public boolean isActive() {
return active;
}
public int getHeight() {
return height;
}
public int getWidth() {
return width;
}
public int getX() {
return x;
}
public int getY() {
return y;
}
/**
* Resize the view.
* @param x
* @param y
* @param width
* @param height
*/
public void resize(int x, int y, int width, int height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
/**
* After this call the view will be painted on screen by calling draw().
*/
public void activate() {
active = true;
logEvent("activated");
}
/**
* After this call the view should not do anything.
*/
public void deactivate() {
viewMaster.removeCommand(exitCmd);
viewMaster.removeCommand(backCmd);
viewMaster.removeCommand(mapCmd);
viewMaster.removeCommand(guidesCmd);
viewMaster.removeCommand(buyGuidesCmd);
viewMaster.removeCommand(aboutCmd);
viewMaster.removeCommand(helpCmd);
active = false;
}
/**
* Draw view.
*/
public void draw(final Graphics g) {
}
/**
* Draw loading indicator.
* @param g
*/
protected final void drawLoading(final Graphics g) {
ViewMaster.drawBackground(g, x, y, width, height, false);
g.setColor(Visual.LIST_PRIMARY_COLOR);
g.setFont(Visual.MEDIUM_FONT);
int x0 = x + width / 2;
int y0 = y + height / 2 - g.getFont().getHeight() / 2;
Sprite loader = viewMaster.getDefaultLoaderSprite();
if (loader != null) {
y0 += loader.getHeight() / 2;
loader.nextFrame();
loader.setPosition(x0 - loader.getWidth() / 2, y0
- loader.getHeight());
loader.paint(g);
viewMaster.draw();
}
g.drawString("loading...", x0, y0, Graphics.TOP | Graphics.HCENTER);
}
/**
* Empty implementation
* Key press event.
*/
public void keyPressed(int keyCode) {
}
/**
* Empty implementation
* Key repeated event.
*/
public void keyRepeated(int keyCode) {
}
/**
* Empty implementation.
* Key released event.
*/
public void keyReleased(int keyCode) {
}
/**
* Common command actions
* @param cmd
*/
public void commandAction(Command cmd) {
if (cmd == exitCmd) {
midlet.commandExit();
}
else if (cmd == backCmd) {
viewMaster.setPreviousView();
}
else if (cmd == guidesCmd) {
viewMaster.showGuidesView();
}
else if (cmd == buyGuidesCmd) {
viewMaster.showBuyGuidesView();
}
else if (cmd == mapCmd) {
viewMaster.showMapView();
}
else if (cmd == aboutCmd) {
viewMaster.showAboutView();
}
else if (cmd == helpCmd) {
viewMaster.showHelpView();
}
}
/**
* Log an event
* @param event
*/
protected void logEvent(final String event) {
}
/**
* Log an error event
* @param event
*/
protected void logErrorEvent(final String event) {
}
/**
* @return name of the view for logging
*/
protected String getScreenName() {
final String className = this.getClass().getName();
final int index = className.lastIndexOf('.');
return index > -1 && index < className.length() ? className.substring(index
+ 1) : className;
}
/**
* Show alert dialog and log an error event
* @param event
* @param title
* @param message
*/
protected void showAlert(final String event, final String title,
final String message) {
logErrorEvent(event);
midlet.showAlertMessage(title, message, AlertType.ERROR);
}
}