/******************************************************************************* * Copyright (c) 2011-2012 Nokia Corporation * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Comarch team - initial API and implementation *******************************************************************************/ package org.ned.client.view.renderer; import com.sun.lwuit.*; import com.sun.lwuit.layouts.BoxLayout; import com.sun.lwuit.plaf.Style; import java.util.Vector; import org.ned.client.Content; import org.ned.client.NedMidlet; import org.ned.client.library.advanced.LibraryElement; import org.ned.client.transfer.IMediaItemListUpdater; import org.ned.client.utils.MediaTypeResolver; import org.ned.client.utils.NedIOUtils; import org.ned.client.view.style.NEDStyleToolbox; public class MediaItemsListCellRenderer extends ListCellRendererBase implements IMediaItemListUpdater { private static final int ICON_FIT_SIZE = 36; private static final int ICON_WIDTH = 32; private static Image local; private static Image remote; private static Image inProgress; private Label mFlag; private Label mMediaType; private int displayW; private Vector mFileLists; public MediaItemsListCellRenderer() { super(); NedMidlet.getInstance().getDownloadManager().setMediaListUpdater( this ); if ( com.sun.lwuit.Display.getInstance().isTouchScreenDevice() ) { getStyle().setPadding( 10, 10, 2, 2 ); getSelectedStyle().setPadding( 10, 10, 2, 2 ); } if ( getPreferredH() < ICON_FIT_SIZE ) { setPreferredH( ICON_FIT_SIZE ); } displayW = Display.getInstance().getDisplayWidth(); setLayout( new BoxLayout( BoxLayout.X_AXIS ) ); setWidth( displayW ); setFocusable( true ); mMediaType = new Label( " " );//must set some text to render properly final Style mediaTypeStyle = mMediaType.getStyle(); final Style mediaTypeStyleSelected = mMediaType.getSelectedStyle(); mediaTypeStyle.setPadding( 0, 0, 0, 0 ); mediaTypeStyle.setMargin( 0, 0, 0, 0 ); mediaTypeStyle.setAlignment( Label.LEFT ); mediaTypeStyle.setBgTransparency( 0 ); mediaTypeStyleSelected.setPadding( 0, 0, 0, 0 ); mediaTypeStyleSelected.setMargin( 0, 0, 0, 0 ); mediaTypeStyleSelected.setAlignment( Label.LEFT ); mMediaType.setPreferredW( ICON_WIDTH ); mMediaType.setCellRenderer( true ); mTitle.setPreferredW( displayW - 3 * ICON_WIDTH ); removeComponent( mTitle ); mFlag = new Label(); final Style flagStyle = mFlag.getStyle(); final Style flagSelectedStyle = mFlag.getSelectedStyle(); flagStyle.setPadding( 0, 0, 0, 0 ); flagStyle.setMargin( 0, 0, 0, 0 ); flagStyle.setAlignment( Label.RIGHT ); flagStyle.setBgTransparency( 0 ); flagSelectedStyle.setPadding( 0, 0, 0, 0 ); flagSelectedStyle.setMargin( 0, 0, 0, 0 ); mFlag.setPreferredW( ICON_WIDTH ); mFlag.setCellRenderer( true ); addComponent( mMediaType ); addComponent( mTitle ); addComponent( mFlag ); final Image downloadStage = NedMidlet.getRes().getImage( "DownloadProgressSteps" ); local = downloadStage.subImage( 0, 0, 32, 32, true ); remote = downloadStage.subImage( 64, 0, 32, 32, true ); inProgress = downloadStage.subImage( 32, 0, 32, 32, true ); } public Component getListCellRendererComponent( List list, Object value, int index, boolean isSelected ) { if ( value == null ) { return this; } boolean isNew = ((LibraryElement)value).isNew(); Content content = ((LibraryElement)value).getDetails(); mMediaType.setText( "" ); mMediaType.setIcon( null ); mMediaType.setIcon( MediaTypeResolver.getTypeIcon( content.getType() ) ); mTitle.setText( content.getText() ); if ( content instanceof Content ) { if ( mFileLists == null ) { mFileLists = NedIOUtils.directoryListing( ((Content)content).getMediaFilePath() ); } if ( mFileLists != null && ((Content)content).isDownloaded( mFileLists ) ) { mFlag.setIcon( local ); } else if ( NedMidlet.getInstance().getDownloadManager().isTransferExist( content.getMediaFile() ) ) { mFlag.setIcon( inProgress ); } else { mFlag.setIcon( remote ); } } if ( isSelected ) { setFocus( true ); mTitle.getStyle().setFgColor( isNew ? NEDStyleToolbox.BLUE : NEDStyleToolbox.WHITE ); getStyle().setBgPainter( mSelectedPainter ); } else { setFocus( false ); mTitle.getStyle().setFgColor( isNew ? NEDStyleToolbox.BLUE : NEDStyleToolbox.MAIN_FONT_COLOR ); getStyle().setBgPainter( mUnselectedPainter ); } return this; } public void updateMediaList() { mFileLists = null; } }