Principales fonctionnalités du composant :

  • Contrôle du document via les contrôles inclus dans les documents FlashPaper ou via la barre de menu du composant
  • Playlist des documents disponibles et / ou chargés
  • Possibilité de parcourir le serveur ( mode online ) pour charger un autre document ( optionnel )
  • Support du Drag'n Drop entre le lecteur et sa playlist
  • Gestion des raccourcis claviers
  • Le composant est bien entendu connecté à la Localisation API pour le support multilangues.

En terme d'utilisation on reste simple; basé sur un composant JFrame, on créé une instance et on appelle la méthode open() pour ouvrir notre lecteur.
On en profite pour déterminer si l'utilisateur pourra ( ou non ) parcourir le serveur à la recherche de document non inclus dans la playlist.

var reader : FvPaperReader = new FvPaperReader();
reader.enableExternalFile( true );
On peut remplir la playlist en utilisant la méthode FvPaperReader#addDocument()

reader.addDocument( new FvPaperItem( "assets/paperdoc.swf", "monTitre" ) );
reader.addDocument( new FvPaperItem( "assets/code.swf") );
reader.addDocument( new FvPaperItem( "assets/WineCellar.swf", "Test erreur" ) );

Le composant émet quelques évènements, question de pouvoir suivre tout ce qui se passe depuis d'extérieur du lecteur :

  • onLoadInit
  • onLoadProgress
  • onTimeOut
  • onError

  • onPageChanged
  • onZoomChanged
  • onSelection
  • onToolChanged
  • onEnableScrolling
  • onVisibleAreaChanged

Vous pouvez vous amuser avec une petite démo ici : http://fever.customactions.net/demos/fvpaper/

Et pour les curieux, si il y en a :( , voici le code source de la démo

import org.aswing.AttachIcon;
import org.aswing.BorderLayout;
import org.aswing.EmptyLayout;
import org.aswing.fever.components.filechooser.FvFileChooserResources;
import org.aswing.fever.components.FvFileChooser;
import org.aswing.fever.components.FvPaperReader;
import org.aswing.fever.components.paper.FvPaperDocument;
import org.aswing.fever.components.paper.FvPaperItem;
import org.aswing.fever.components.paper.FvPaperReaderEvent;
import org.aswing.fever.events.FvAsWingController;
import org.aswing.fever.events.FvAsWingEventList;
import org.aswing.fever.visual.FvAsWingStage;
import org.aswing.JButton;
 
import com.bourre.events.StringEvent;
 
import fever.app.local.Localisation;
import fever.FeverApplication;
import fever.log.FeverDebug;
 
/**
 * {@code Test } class.
 *
 * @author Romain Ecarnot
 */
class net.customactions.cellar.Test implements FeverApplication
{
	//-------------------------------------------------------------------------
	// Private properties
	//-------------------------------------------------------------------------
	
	private var _reader : FvPaperReader;
	
		
	//-------------------------------------------------------------------------
	// Public API
	//-------------------------------------------------------------------------
		
	/**
	 * Constructor.
	 */
	public function Test()
	{
		
	}
	
	public function run() : Void
	{
		Localisation.lang = "en";
		
		// inits FileChooser paths.
		FvFileChooser.BASE_PATH = "repository";
		
		var resource : FvFileChooserResources = FvFileChooserResources.getInstance();
		resource.folderIcon = new AttachIcon( "FvFileChooser_folder", 18, 18, false );
		resource.fileIcon = new AttachIcon( "FvFileChooser_file", 18, 18, false );
		resource.parentIcon = new AttachIcon( "FvFileChooser_parent", 18, 18, false );
		resource.homeIcon = new AttachIcon( "FvFileChooser_home", 18, 18, false );
		
		_reader = new FvPaperReader();
		_reader.enableExternalFile( true );
		
		_reader.addDocument( new FvPaperItem( "assets/paperdoc.swf", "monTitre" ) );
		_reader.addDocument( new FvPaperItem( "assets/code.swf") );
		_reader.addDocument( new FvPaperItem( "assets/WineCellar.swf", "Test erreur" ) );
		
		_reader.addEventListener( FvPaperDocument.onLoadInitEVENT, this, _onLoaded );
		_reader.open();
		
		var button : JButton = new JButton( "document" );
		button.setSize( 100, 25 );
		button.addActionListener( _openReader, this );
		button.setLocation( 10, 10 );
		
		FvAsWingStage.container.setLayout( new EmptyLayout() );
		FvAsWingStage.container.append( button );
		
		FvAsWingController.getInstance().broadcastEvent( new StringEvent( FvAsWingEventList.OPEN_LANG_CHOOSER ) );
	}
	
	
	//-------------------------------------------------------------------------
	// Private implementation
	//-------------------------------------------------------------------------
	
	private function _openReader( source : JButton ) : Void
	{
		_reader.open();	
	}
	
	private function _onLoaded( event : FvPaperReaderEvent ) : Void
	{
		FeverDebug.INFO( "Version " + event.getDocument().getViewerVersion() );
		FeverDebug.INFO( "Number of pages " + event.getDocument().getNumberOfPages() );
	}
	
}

A bientôt ;)