/**
* Copyright (c) 2012-2013 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.rlinks.view.item;
import com.nokia.example.rlinks.SessionManager;
import com.nokia.example.rlinks.VisualStyles;
import java.io.IOException;
import javax.microedition.lcdui.Font;
import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
/**
* A custom view item for displaying login status.
*/
public class LoginStatusItem
extends AbstractCustomItem {
private static final int H_SPACE = VisualStyles.LINK_H_SPACE;
private static final int V_SPACE = VisualStyles.LINK_V_SPACE;
private static final Font FONT_TEXT = VisualStyles.SMALL_BOLD_FONT;
private final SessionManager session = SessionManager.getInstance();
private final int height;
private final SelectionListener listener;
private static Image separatorImage = Image.createImage(1, 1);
public interface SelectionListener {
public void itemSelected();
}
static {
try {
separatorImage = Image.createImage("/midlets/rlinks/images/separator.png");
}
catch (IOException ex) {
System.err.println("Can not load image " + ex);
}
}
public LoginStatusItem(int preferredWidth, SelectionListener listener,
Form form) {
super(form, preferredWidth, null);
this.height = getPrefContentHeight(width);
this.listener = listener;
}
protected int getMinContentWidth() {
return width;
}
protected int getMinContentHeight() {
return height;
}
protected int getPrefContentWidth(int height) {
return width;
}
protected int getPrefContentHeight(int width) {
return V_SPACE + FONT_TEXT.getHeight() + V_SPACE * 2;
}
public void pointerReleased(int x, int y) {
if (!dragging && listener != null) {
listener.itemSelected();
}
super.pointerReleased(x, y);
}
/**
* Draw the item.
*/
protected void paint(final Graphics g, final int w, final int h) {
int y = 0;
String loginStatus = "";
if (session.isLoggedIn()) {
loginStatus = "Logged in as " + session.getUsername();
}
else {
loginStatus = "Not logged in";
}
g.setColor(VisualStyles.COLOR_FOREGROUND);
g.setFont(FONT_TEXT);
g.drawString(loginStatus, w - H_SPACE * 2, y, Graphics.TOP
| Graphics.RIGHT);
g.setColor(VisualStyles.COLOR_FOREGROUND_DIM);
if (separatorImage != null) {
y = height - separatorImage.getHeight() - V_SPACE;
g.drawImage(separatorImage, 0, y, Graphics.TOP | Graphics.LEFT);
}
}
protected boolean traverse(int dir, int viewportWidth, int viewportHeight,
int[] visRect_inout) {
return false;
}
}