/*******************************************************************************
* 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;
import com.sun.lwuit.Display;
import com.sun.lwuit.List;
import com.sun.lwuit.events.ActionEvent;
import com.sun.lwuit.events.ActionListener;
import com.sun.lwuit.events.SelectionListener;
import java.util.Vector;
import org.ned.client.Content;
import org.ned.client.NedMidlet;
import org.ned.client.command.*;
import org.ned.client.library.advanced.LibraryElement;
import org.ned.client.library.advanced.LibraryHelpers;
import org.ned.client.view.renderer.MediaItemsListCellRenderer;
public class MediaItemsScreen extends NedFormBase implements ActionListener, SelectionListener {
private List mMediaList;
public MediaItemsScreen( String id ) {
super( id );
setNedTitle( mNewLibModel != null ? mNewLibModel.getName() : " " );
mMediaList = new List( mNewLibModel != null
? LibraryHelpers.sortBy( mNewLibModel.getChildern(), NedMidlet.getSettingsManager().
getSortBy() ) : new Vector( 0 ) );
mMediaList.setFixedSelection( List.FIXED_NONE );
mMediaList.setSelectedIndex( 0 );
mMediaList.setRenderer( new MediaItemsListCellRenderer() );
mMediaList.setPreferredW( Display.getInstance().getDisplayWidth() );
mMediaList.addSelectionListener( this );
addComponent( mMediaList );
addGameKeyListener( Display.GAME_LEFT, this );
addGameKeyListener( Display.GAME_FIRE, this );
mMediaList.addActionListener( this );
addCommandListener( this );
}
public MediaItemsScreen( LibraryElement mediaElement ) {
this( mediaElement.getParent().getId() );
mMediaList.setSelectedItem( mediaElement );
}
public void actionPerformed( ActionEvent evt ) {
Object src = evt.getSource();
if ( src == BackMediaItemsCommand.getInstance().getCommand()
|| evt.getKeyEvent() == Display.GAME_LEFT ) {
BackMediaItemsCommand.getInstance().execute( mNewLibModel.getParent().
getId() );
} else if ( src == ShowDetailsCommand.getInstance().getCommand() ) {
ShowDetailsCommand.getInstance().execute( ((LibraryElement)mMediaList.getSelectedItem()).getDetails() );
} else if ( src == DeleteContentCommand.getInstance().getCommand() ) {
DeleteContentCommand.getInstance().execute( mMediaList );
} else if ( src == InstantDownloadCommand.getInstance().getCommand() ) {
InstantDownloadCommand.getInstance().execute( ((LibraryElement)mMediaList.getSelectedItem()).getDetails() );
new DownloadQueueScreen( mMediaList.getSelectedItem() ).show();
} else if ( src == GoToStartCommand.getInstance().getCommand() ) {
GoToStartCommand.getInstance().execute( null );
} else if ( src == AddToDownloadQueueCommand.getInstance().getCommand() ) {
Content content = ((LibraryElement)mMediaList.getSelectedItem()).getDetails();
AddToDownloadQueueCommand.getInstance().execute( content );
new DownloadQueueScreen( (LibraryElement)mMediaList.getSelectedItem() ).show();
} else if ( src == PlayMediaCommand.getInstance().getCommand() ) {
LibraryElement content = (LibraryElement)mMediaList.getSelectedItem();
if ( content.isNew() ) {
content.setNew( false );
mNewModel.removeFromUpdated( content.getId() );
}
PlayMediaCommand.getInstance().execute( content.getDetails() );
} else if ( src == DownloadAllMediaItemsScreenCommand.getInstance().
getCommand() ) {
DownloadAllMediaItemsScreenCommand.getInstance().execute( mMediaList );
} else if ( src == SearchDialogCommand.getInstance().getCommand() ) {
LibraryElement content = ((LibraryElement)mMediaList.getSelectedItem());
SearchDialogCommand.getInstance().execute( content.getParent().getId() );
} else if ( src instanceof List ) {
MediaItemContextMenu menu;
if ( mMediaList.getSelectedItem() != null ) {
if ( ((LibraryElement)mMediaList.getSelectedItem()).getDetails().
isDownloaded() ) {
menu = new MediaItemContextMenu( mMediaList, MediaItemContextMenu.PLAY );
menu.setModel( mNewModel );
} else {
menu = new MediaItemContextMenu( mMediaList, MediaItemContextMenu.DOWNLOAD );
}
menu.show();
}
} else if ( src == ShowLinksCommand.getInstance().getCommand() ) {
Content content = ((LibraryElement)mMediaList.getSelectedItem()).getDetails();
ShowLinksCommand.getInstance().execute( content );
} else if ( src == showFreeMem ) {
GeneralAlert.show( String.valueOf( Runtime.getRuntime().freeMemory() ), GeneralAlert.INFO );
} else if ( src == HelpCommand.getInstance().getCommand() ) {
Object[] params = {this.getClass(), mNewLibModel.getId()};
HelpCommand.getInstance().execute( params );
} else if ( src == DownloadsQueueViewCommand.getInstance().getCommand() ) {
DownloadsQueueViewCommand.getInstance().execute( mNewLibModel );
}
}
public void selectionChanged( int oldSel, int newSel ) {
LibraryElement libElem = (LibraryElement)mMediaList.getModel().getItemAt( newSel );
removeAllCommands();
addCommand( BackMediaItemsCommand.getInstance().getCommand() );
addCommand( DownloadsQueueViewCommand.getInstance().getCommand() );
addCommand( HelpCommand.getInstance().getCommand() );
if ( libElem != null ) {
Content content = libElem.getDetails();
addCommand( DownloadAllMediaItemsScreenCommand.getInstance().
getCommand() );
addCommand( SearchDialogCommand.getInstance().getCommand() );
if ( content != null && content.isDownloaded() ) {
addCommand( DeleteContentCommand.getInstance().getCommand() );
addCommand( ShowLinksCommand.getInstance().getCommand() );
addCommand( ShowDetailsCommand.getInstance().getCommand() );
addCommand( PlayMediaCommand.getInstance().getCommand() );
} else {
addCommand( DeleteContentCommand.getInstance().getCommand() );
addCommand( AddToDownloadQueueCommand.getInstance().getCommand() );
addCommand( InstantDownloadCommand.getInstance().getCommand() );
addCommand( ShowLinksCommand.getInstance().getCommand() );
addCommand( ShowDetailsCommand.getInstance().getCommand() );
}
}
addCommand( GoToStartCommand.getInstance().getCommand() );
}
protected void sizeChanged( int w, int h ) {
mMediaList.setPreferredW( w );
mMediaList.setRenderer( new MediaItemsListCellRenderer() );
}
}