PostDrawer.java
/*
* Copyright © 2011 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.wordpress.components;
import com.nokia.example.wordpress.networking.Comment;
import com.nokia.example.wordpress.networking.Post;
import com.nokia.example.wordpress.views.ViewMaster;
import com.nokia.example.wordpress.views.Visual;
import java.util.Vector;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
/**
* A drawer class for rendering the rows in the posts list Visual.
*/
public class PostDrawer implements ListDrawer {
private final int ROW_HEIGHT = 2 * Visual.SMALL_FONT.getHeight() + 2;
private ViewMaster view;
private Image postIcon;
public PostDrawer(ViewMaster view, Image postIcon) {
this.view = view;
this.postIcon = postIcon;
}
public int itemHeight() {
return ROW_HEIGHT;
}
private Vector getCommentsForPost(Post post) {
Vector allComments = DataModel.getInstance().getComments();
Vector coms = new Vector();
for (int i = 0; i < allComments.size(); i++) {
Comment comment = (Comment) allComments.elementAt(i);
if (comment.postId.equals(post.postId)) {
coms.addElement(comment);
}
}
return coms;
}
public void drawItem(Vector data, Graphics g, int itemIndex, int x, int y, int width, int height, boolean focused) {
view.drawBackground(g, x, y, width, ROW_HEIGHT, focused);
g.drawImage(postIcon, x, y + ROW_HEIGHT / 2 - postIcon.getHeight() / 2, g.TOP | g.LEFT);
int textX = x + postIcon.getWidth() + 2;
g.setColor(Visual.LIST_PRIMARY_COLOR);
Post p = (Post) data.elementAt(itemIndex);
g.setFont(Visual.SMALL_BOLD_FONT);
g.drawString(p.title, textX, y, g.TOP | g.LEFT);
y += Visual.SMALL_FONT.getHeight();
g.setColor(Visual.LIST_SECONDARY_COLOR);
g.setFont(Visual.SMALL_FONT);
g.drawString(p.date, textX, y, g.TOP | g.LEFT);
g.setColor(Visual.LIST_TERTIARY_COLOR);
int numOfComments = getCommentsForPost(p).size();
if (numOfComments > 0) {
g.drawString("" + numOfComments, width, y, g.TOP | g.RIGHT);
}
}
}