/** * 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.attractions.views; import com.nokia.example.attractions.Visual; import com.nokia.example.attractions.utils.ImageLoader; import com.nokia.example.attractions.utils.TextWrapper; import com.nokia.example.attractions.models.Attraction; import java.io.IOException; import java.util.Hashtable; import java.util.Vector; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image; /** * View to display a single attraction. * Used when the user selects an attraction from the attraction view */ public final class DetailsView extends AbstractScrollableView { private Image image; private String imageUrl; private Attraction attraction; private Vector lines; private final Hashtable cache = new Hashtable(); DetailsView() { super(); } public final void activate() { if (attraction != data.getCurrentAttraction()) { resetScrollBar(); attraction = data.getCurrentAttraction(); } loadImage(); super.activate(); viewMaster.addCommand(backCmd); viewMaster.addCommand(mapCmd); } public final void deactivate() { super.deactivate(); image = null; cache.clear(); } protected final String getTitle() { return data.getCurrentAttraction().getName(); } /** * @see BaseView#getScreenName() */ protected String getScreenName() { return super.getScreenName() + " - " + data.getCurrentAttraction(). getName(); } private void loadImage() { imageUrl = attraction.getImageUrl(); final String url = imageUrl; if (!url.equals("")) { try { image = ImageLoader.getInstance().loadImage(url, cache); } catch (IOException ex) { ex.printStackTrace(); } } } protected final int getContentHeight() { lines = TextWrapper.wrapTextToWidth(attraction.getDescription(), getContentWidth(), Visual.SMALL_FONT); int h = 0; if (image != null) { h += image.getHeight() + 4; } h += Visual.SMALL_BOLD_FONT.getHeight() + 4; h += lines.size() * Visual.SMALL_FONT.getHeight() + 4; return h; } protected int getBufferHeight() { return super.getBufferHeight() - (image == null ? 0 : image.getHeight() + 4); } protected void drawContent(Graphics g, int x, int y, int width, int height) { int x0 = x; int y0 = y; if (image != null) { g.drawImage(image, x0 + width / 2, y0, Graphics.TOP | Graphics.HCENTER); y0 += image.getHeight() + 4; } super.drawContent(g, x0, y0, width, height); } protected final void drawBuffer(Graphics g) { int w = getContentWidth(); int h = getContentHeight(); int x0 = 0; int y0 = 0; ViewMaster.drawBackground(g, x0, y0, w, h, false); g.setFont(Visual.SMALL_BOLD_FONT); g.setColor(Visual.LIST_SECONDARY_COLOR); g.drawString(attraction.getStreet(), x0, y0, Graphics.TOP | Graphics.LEFT); if (attraction.getDistance() != null) { g.drawString(attraction.getDistance(), w, y0, Graphics.TOP | Graphics.RIGHT); } y0 += Visual.SMALL_BOLD_FONT.getHeight() + 4; g.setFont(Visual.SMALL_FONT); g.setColor(Visual.LIST_PRIMARY_COLOR); for (int i = 0; i < lines.size(); i++) { g.drawString((String) lines.elementAt(i), x0, y0, Graphics.TOP | Graphics.LEFT); y0 += Visual.SMALL_FONT.getHeight(); } } }