<?xml version="1.0" encoding="UTF-8"?>
<chapter id="rw_itself" xreflabel="rw_itself">
    <?dbhtml filename="requirements.html"?>
    <chapterinfo>
        <keywordset>
            <keyword>RichFaces</keyword>
            
        </keywordset>
    </chapterinfo>
    
    <title>The Real World main features</title>
    <para>The &quot;Photo Album&quot; is a desktop-like online photo manager that provides social service with pictures uploading, preview, storage, management and sharing features. 
It allows to create own albums, upload photos there, share the albums with other users, search albums. 
For newcomers the system allows &quot;Anonymous regime&quot; that may be used to search and view others albums, but no personal albums, no possibility to mark favorite photos and friends albums are available.  	
	</para>
	
	<section>
	<title>Used components</title>
	
	<para>Below there is a list of components used in &quot;Photo album&quot;.</para>
		<table>
			<title>Components used in &quot;Photo album&quot;</title>
				<tgroup cols="2">
					<thead>
						<row>
							<entry>Name</entry>
							<entry>Value</entry>
                        </row>
					</thead>
					<tbody>
						<row>
							<entry>a4j:commandLink</entry>
							<entry>The component is very similar to the &lt;h:commandLink&gt; component, the only difference is that an Ajax form submit is generated on a click and it allows dynamic rerendering after a response comes back. It's not necessary to plug any support into the component, as Ajax support is already built in.</entry>
                        </row>
						<row>
							<entry>a4j:commandButton</entry>
							<entry>The component is very similar to the &lt;h:commandButton&gt; component, the only difference is that an Ajax form submit is generated on a click and it allows dynamic rerendering after a response comes back. It's not necessary to plug any support into the component, as Ajax support is already built in.</entry>
                        </row>
						<row>
							<entry>a4j:push</entry>
							<entry>The component periodically perform Ajax request to server, to simulate 'push' data.</entry>
                        </row>
						<row>
							<entry>a4J:poll</entry>
							<entry>The component allows periodical sending of Ajax requests to a server and is used for a page updating according to a specified time interval.</entry>
                        </row>
						<row>
							<entry>rich:calendar</entry>
							<entry>The component is used for creating monthly calendar elements on a page.</entry>
                        </row>
						<row>
							<entry>rich:contextMenu</entry>
							<entry>The component is used for creation multileveled context menus that are activated after a user defines an event ("onmouseover", "onclick", etc.) on any element on the page.</entry>
                        </row>
						<row>
							<entry>rich:dataGrid</entry>
							<entry>The component to render data as a grid that allows choosing data from a model and obtains built-in support of Ajax updates.</entry>
                        </row>
						<row>
							<entry>rich:datascroller</entry>
							<entry>The component designed for providing the functionality of tables scrolling using Ajax requests.</entry>
                        </row>
						<row>
							<entry>rich:fileUpload</entry>
							<entry>The component designed to perform Ajax-ed files upload to server.</entry>
                        </row>
						<row>
							<entry>rich:inplaceInput</entry>
							<entry>The component is an input component used for displaying and editing data inputted. </entry>
                        </row>
						<row>
							<entry>rich:inplaceSelect</entry>
							<entry>The component is used for creation select based inputs: it shows the value as text in one state and enables editing the value, providing a list of options in another state.</entry>
                        </row>
						<row>
							<entry>rich:mediaOutput</entry>
							<entry>The component implements one of the basic features specified in the framework. The component is a facility for generating images, video, sounds and other binary resources defined by you on-the-fly.</entry>
                        </row>
						<row>
							<entry>rich:modalPanel</entry>
							<entry>The component implements a modal dialog window. All operations in the main application window are locked out while this window is active. Opening and closing the window is done through client JavaScript code.</entry>
                        </row>
						<row>
							<entry>rich:progressBar</entry>
							<entry>The component is designed for displaying a progress bar which shows the current status of the process. </entry>
                        </row>
						<row>
							<entry>rich:tree</entry>
							<entry>The component is designed for hierarchical data presentation and is applied for building a tree structure with a drag-and-drop capability. The component also uses built-in drag and drop.</entry>
                        </row>
						
                        
                    </tbody>
                </tgroup>
        </table>
	</section>
	
	<section>
		<title>Main views</title>
		<para>The following section contains some most importants screenshots provided with additional comments. 
		</para>
		<para>Starting page of the &quot;Photo album&quot; contains some basic information about RichFaces an log-in fields:
		</para>
		<figure>
			<title>&quot;Photo album&quot; start page</title>
			<mediaobject>
				<imageobject>
					<imagedata fileref="images/rw_its_start.png"/>
				</imageobject>
			</mediaobject>
		</figure>
		<para>Three users where created for test purposes. Their names, passes and albums are listed in the table below:</para>
		<table>
			<title>Components used in &quot;Photo album&quot;</title>
				<tgroup cols="2">
					<thead>
						<row>
							<entry>Name</entry>
							<entry>Pass</entry>
							<entry>Albums</entry>
                        </row>
					</thead>
					<tbody>
						<row>
							<entry>amarkhel</entry>
							<entry>12345</entry>
							<entry>Cars, Tetki</entry>
                        </row>
						<row>
							<entry>root</entry>
							<entry>12345</entry>
							<entry>Football</entry>
                        </row>
						<row>
							<entry>qqqq</entry>
							<entry>12345</entry>
							<entry>Japan, Music</entry>
                        </row>
					</tbody>
                </tgroup>
        </table>
		<para>Not registered users should proceed with registration. The registration requires following fields:
		<itemizedlist>
                <listitem><para>First name</para></listitem>
				<listitem><para>Second name</para></listitem>
				<listitem><para>Login</para></listitem>
				<listitem><para>Password</para></listitem>
				<listitem><para>Confirm</para></listitem>
				<listitem><para>Email</para></listitem>
				<listitem><para>Birth Date</para></listitem>
				<listitem><para>Avatar</para></listitem>
				
                
          </itemizedlist>
		  
		  </para>
		
		<para>After loging in the user gets to his personal page. It interface consists of menu bar, albums panels and working area.
		</para>
		<figure>
			<title>Personal page</title>
			<mediaobject>
				<imageobject>
					<imagedata fileref="images/rw_its_pers.png"/>
				</imageobject>
			</mediaobject>
		</figure>
		
		<para>The system &quot;Message&quot; service:
		</para>
		<figure>
			<title>Personal page</title>
			<mediaobject>
				<imageobject>
					<imagedata fileref="images/rw_its_mess.png"/>
				</imageobject>
			</mediaobject>
		</figure>
		
		<note>
			<title>Note:</title>
				<para>The work on &quot;Photo Album is in progress&quot;. The guide will be augumented with inforamtion.</para>
        </note>
	</section>
	
	
	
	

    
</chapter>

