<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jmini Dev &#187; Mcqs</title>
	<atom:link href="https://blog.developpez.com/jmini/pcategory/demo/mcqs/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/jmini</link>
	<description></description>
	<lastBuildDate>Wed, 05 Nov 2014 05:00:21 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Eclipse Scout: obtenir une version web mobile de son application</title>
		<link>https://blog.developpez.com/jmini/p12150/eclipse/eclipse-scout/eclipse-scout-mobile</link>
		<comments>https://blog.developpez.com/jmini/p12150/eclipse/eclipse-scout/eclipse-scout-mobile#comments</comments>
		<pubDate>Fri, 26 Jul 2013 05:27:05 +0000</pubDate>
		<dc:creator><![CDATA[jmini]]></dc:creator>
				<category><![CDATA[Eclipse Scout]]></category>
		<category><![CDATA[Mcqs]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://blog.developpez.com/jmini/?p=133</guid>
		<description><![CDATA[La version 3.9 d’Eclipse Scout livrée avec Kepler (nom du release train Eclipse 2013) permet d’obtenir une version mobile de son application. Je viens de porter ma petite application de QCM (série d’articles sur mcqs, site du projet, tutoriel – premiers pas avec Eclipse Scout) sur cette nouvelle version me permettant ainsi d’obtenir une déclinaison [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>La version 3.9 d’<a href="http://eclipse.org/scout/">Eclipse Scout</a> livrée avec Kepler (nom du release train Eclipse 2013) permet d’obtenir une version mobile de son application. Je viens de porter ma petite application de QCM (<a href="http://blog.developpez.com/jmini/pcategory/demo/mcqs">série d’articles sur mcqs</a>, <a href="http://code.google.com/a/eclipselabs.org/p/mcqs/">site du projet</a>, <a href="http://jmini.developpez.com/eclipse_scout/articles/premiers_pas/">tutoriel – premiers pas avec Eclipse Scout</a>) sur cette nouvelle version me permettant ainsi d’obtenir une déclinaison mobile de mon application. </p>
<p><img src="http://blog.developpez.com/jmini/files/2013/07/mcqs_mobile.png" alt="Version mobile de MCQS dans un iPhone" width="388" height="809" class="size-full wp-image-134" /></p>
<p>C’est une possibilité de plus qui confirme la stratégie multi front-end d’Eclipse Scout. En effet la même application peut-être rendue sous différente forme : application desktop, application web et maintenant application web mobile.<br />
<span id="more-133"></span></p>
<p>Depuis toujours, une idée principale d’Eclipse Scout consiste en une surcouche pour définir l’application qui soit indépendante de toute librairie graphique (SWT ou Swing). Les formulaires ainsi que les champs qu’ils contiennent sont définis dans un modèle d’application qui sera rendu sous forme d’interface graphique à l’exécution. Cette technique permet d’obtenir plusieurs déclinaisons de la même application :</p>
<p>Version SWT :</p>
<p><img src="http://blog.developpez.com/jmini/files/2013/07/mcqs_swt.png" alt="Version SWT de MCQS" width="583" height="590" class="aligncenter size-full wp-image-136" /></p>
<p>Version Swing :</p>
<p><img src="http://blog.developpez.com/jmini/files/2013/07/mcqs_swing_rayo.png" alt="Version Swing de MCQS" width="571" height="572" class="aligncenter size-full wp-image-137" /></p>
<p>Version web :</p>
<p><img src="http://blog.developpez.com/jmini/files/2013/07/mcqs_web.png" alt="Version Web de MCQS" width="574" height="575" class="aligncenter size-full wp-image-138" /></p>
<p>Le mobile étant une plateforme différente, il a fallu ajouter une étape supplémentaire lors du rendu. Les composants sont adaptés pour tenir compte des spécifiés de la plateforme. Voici quelques exemples :</p>
<p><strong>Smartfield :</strong></p>
<p>Le smartfield est un champ assez puissant : à la manière d’un combo-box, il permet de choisir parmi plusieurs choix. Il est également possible de saisir du texte dans le champ pour réduire les choix proposés. En version mobile, pour reproduire toutes ces possibilités, il a fallu ajouter une vue annexe sur la droite.</p>
<p><img src="http://blog.developpez.com/jmini/files/2013/07/scout_smartfield_desktop.png" alt="SmartField Desktop" width="382" height="247" class="aligncenter size-full wp-image-140" /></p>
<p><img src="http://blog.developpez.com/jmini/files/2013/07/scout_smartfield_mobile.png" alt="SmartField Mobile" width="643" height="444" class="aligncenter size-full wp-image-141" /></p>
<p><strong>Absence de menu contextuel :</strong></p>
<p>L’action proposée dans le menu contextuel apparait sous forme de bouton sous la table.</p>
<p><img src="http://blog.developpez.com/jmini/files/2013/07/scout_contextmenu_desktop.png" alt="Menu contextuel Desktop" width="477" height="495" class="aligncenter size-full wp-image-142" /></p>
<p><img src="http://blog.developpez.com/jmini/files/2013/07/scout_contextmenu_mobile.png" alt="Menu contextuel mobile" width="320" height="444" class="aligncenter size-full wp-image-143" /></p>
<p><strong>Représentation des tableaux :</strong></p>
<p>La largeur offerte par le téléphone est limitée. La hauteur des lignes d’un tableau doit être suffisante pour permettre une sélection avec le doigt « sélection touch ». Du coup, les colonnes d’un tableau sont rassemblées sous forme de lignes dans une cellule plus haute. Les colonnes d’une ligne du tableau vont être représentées dans un formulaire annexe accessible en sélectionnant une cellule dans la liste mobile.</p>
<p><img src="http://blog.developpez.com/jmini/files/2013/07/scout_table_desktop.png" alt="Table Desktop" width="521" height="506" class="aligncenter size-full wp-image-144" /></p>
<p><img src="http://blog.developpez.com/jmini/files/2013/07/scout_table_mobile.png" alt="Table Mobile" width="644" height="444" class="aligncenter size-full wp-image-145" /></p>
<p>L’action principale du menu contextuel (celle qui aurait été proposée en double cliquant sur la ligne du tableau) et qui correspond souvent à l’opération d’édition se retrouve déportée en haut à droite. Les opérations restantes sont disponibles dans un menu supplémentaire.</p>
<p><img src="http://blog.developpez.com/jmini/files/2013/07/scout_table_action_desktop.png" alt="Menu dans table Desktop" width="479" height="495" class="aligncenter size-full wp-image-146" /></p>
<p><img src="http://blog.developpez.com/jmini/files/2013/07/scout_table_action_mobile.png" alt="Menu dans table Mobile" width="320" height="444" class="aligncenter size-full wp-image-147" /></p>
<p><strong>Masquer certaines fonctionnalités :</strong></p>
<p>Toutes les fonctionnalités ne font pas forcément sens sur mobile. Pour mon application, j’ai décidé de masquer la représentation sous forme graphique (déjà rudimentaire dans la version desktop) en supprimant l’onglet correspondant.</p>
<p><img src="http://blog.developpez.com/jmini/files/2013/07/scout_tabs_desktop.png" alt="Onglets Desktop" width="625" height="463" class="aligncenter size-full wp-image-150" /></p>
<p><img src="http://blog.developpez.com/jmini/files/2013/07/scout_tabs_mobile.png" alt="Onglets Mobile" width="320" height="444" class="aligncenter size-full wp-image-151" /></p>
<p><strong>En conclusion</strong></p>
<p>Cette transformation du modèle applicatif permet d’adapter le rendu web aux spécificités du mobile. Évidement l’application obtenue n’est pas aussi efficace qu’un développement dédié, mais le résultat est plus que convainquant par rapport au temps investi.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Un fragment NoDB pour le serveur de mon application Eclipse Scout</title>
		<link>https://blog.developpez.com/jmini/p10851/eclipse/eclipse-scout/fragment_nodb_serveur_eclipse_scout</link>
		<comments>https://blog.developpez.com/jmini/p10851/eclipse/eclipse-scout/fragment_nodb_serveur_eclipse_scout#comments</comments>
		<pubDate>Sat, 17 Mar 2012 12:23:07 +0000</pubDate>
		<dc:creator><![CDATA[jmini]]></dc:creator>
				<category><![CDATA[Eclipse Scout]]></category>
		<category><![CDATA[Mcqs]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Les applications Eclipse Scout reposent sur un registre de service. Ces services sont définis par une interface, placé dans le plug-in shared accessible côté client comme côté serveur. L’appel à l’un de ces services s’effectue toujours de la même manière: IQuestionsListProcessService service = SERVICES.getService(IQuestionsListProcessService.class); Côté client, deux cas se présentent: * une implémentation est disponible [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Les applications Eclipse Scout reposent sur un registre de service. Ces services sont définis par une interface, placé dans le plug-in shared accessible côté client comme côté serveur. L’appel à l’un de ces services s’effectue toujours de la même manière:</p>
<p><code class="codecolorer text default"><span class="text">IQuestionsListProcessService service = SERVICES.getService(IQuestionsListProcessService.class);</span></code></p>
<p>Côté client, deux cas se présentent:<br />
* une implémentation est disponible côté client. Dans ce cas elle est retournée par cet appel.<br />
* l’implémentation se trouve côté serveur. Dans ce cas, un proxy est retourné, et l’appel à la fonction est transmis au serveur par Eclipse Scout. </p>
<p>Ce registre de services gère plusieurs implémentations pour une même interface. Il est possible de définir une priorité pour donner un ordre entre les implémentations.</p>
<p>D’où <a href="http://blog.developpez.com/jmini/p10257/demo/sakilapp/sans-base-de-donnees-utilisation-priorit/">mon idée de septembre dernier</a> de proposer pour chaque service une implémentation se passant de la base de données. Dans ce cas il n’y a plus de persistance des informations, mais dans le cas de démonstration ou de tests cela peut être suffisant.</p>
<p>Je l’ai mis en oeuvre pour mon <a href="http://code.google.com/a/eclipselabs.org/p/mcqs/">application MCQS</a>.</p>
<p>Depuis <a href="http://code.google.com/a/eclipselabs.org/p/mcqs/source/detail?r=730a1a58a314586eb416ca663fba129faadc3574">ce commit</a>, je dispose maintenant d’un fragment <a href="http://code.google.com/a/eclipselabs.org/p/mcqs/source/browse/#git%2Forg.eclipselabs.mcqs.server.nodb.frament">org.eclipselabs.mcqs.server.nodb.frament</a> qui propose une implémentation des services avec une priorité plus haute. Lorsque le fragment est chargé avec le serveur (ce qui est le cas avec le produit <a href="http://code.google.com/a/eclipselabs.org/p/mcqs/source/browse/#git%2Forg.eclipselabs.mcqs.server%2Fproducts%2Fnodb">server/products/nodb</a>), ce sont ses implémentations qui ont la priorité.</p>
<p>Ce n’est pas encore tout à fait parfait, car pour faire les choses proprement il ne faudrait pas avoir de dépendance à la base de données dans le plug-in serveur principal, mais dans un deuxième fragment (et utiliser l’un ou l’autre).</p>
<p>Mon fragment NoDB est rudimentaire. Il ne garde rien en mémoire, ce qui devrait être possible.</p>
<p>Dans tous les cas, c’est un bon cas d’exemple de l’annotation <strong>@Priority</strong> que l’on peut ajouter sur chacun des services.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Personnaliser son application Eclipse Scout</title>
		<link>https://blog.developpez.com/jmini/p10717/eclipse/eclipse-scout/personnaliser_application_eclipse_scout</link>
		<comments>https://blog.developpez.com/jmini/p10717/eclipse/eclipse-scout/personnaliser_application_eclipse_scout#comments</comments>
		<pubDate>Sat, 18 Feb 2012 08:20:38 +0000</pubDate>
		<dc:creator><![CDATA[jmini]]></dc:creator>
				<category><![CDATA[Eclipse Scout]]></category>
		<category><![CDATA[Mcqs]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Donner une apparence finie à son application est une étape importante. Certains petits détails témoignent du soin apporté à l’application (ou de son bâclage dans le cas contraire). Par défaut, une application Eclipse Scout contient un certain nombre d’images qui sont des «place-holders» pour l’application finale. Il s’agit de tous les remplacer pour avoir une [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Donner une apparence finie à son application est une étape importante. Certains petits détails témoignent du soin apporté à l’application (ou de son bâclage dans le cas contraire).</p>
<p><img src="http://blog.developpez.com/media/splash-scout.png" width="452" height="282" alt="Splash screen - Eclipse Scout" /></p>
<p>Par défaut, une application Eclipse Scout contient un certain nombre d’images qui sont des «place-holders» pour l’application finale. Il s’agit de tous les remplacer pour avoir une application à l’apparence correcte.</p>
<p><img src="http://blog.developpez.com/media/splash-mcqs.png" width="452" height="282" alt="Splash screen - Mcqs" /></p>
<p><span id="more-19"></span><br />
<strong>Splash Screen</strong><br />
Affiché lors du chargement de l’application, il permet à l’utilisateur de savoir qu’il doit patienter et qu’il se passe quelque chose.</p>
<p>Il suffit d’ajouter un fichier splash.xxx à la racine du plug-in de lancement (Swing ou SWT en fonction du moteur de rendu choisi. Pour SWT sans changer les réglages par défaut de l’application RPC, il faudra utiliser un fichier bmp). Ne pas oublier de l’inclure dans le ficher build.properties (dans la catégorie binary build).</p>
<p><strong>Logo</strong><br />
Ce logo (grand) est notamment affiché dans la fenêtre «à propos de cette application».</p>
<p><img src="http://blog.developpez.com/media/about_dialog.png" width="400" height="318" alt="About dialog - Mcqs" /></p>
<p>Voir <a href="http://wiki.eclipse.org/Scout/HowTo/Exchange_Default_Images">ce tutoriel</a>.</p>
<p><strong>Icône</strong><br />
L’icône est également un élément important.</p>
<p><img src="http://blog.developpez.com/media/icon-mcqs.png" width="148" height="129" alt="Icone - Mcqs" /></p>
<p>Voir ce <a href="http://www.eclipse.org/forums/index.php/t/263221/" title=" Specific Application Icon">sujet de forum</a>. </p>
<p><strong>Page de téléchargement sur le serveur</strong><br />
Lorsque l’on se connecte en HTTP sur le serveur où est déployée l’application, on obtient une page de téléchargement. Il est important de personnaliser cette page.</p>
<p>La page en question se trouve dans le plug-in de l’application server sous /resources/html. </p>
<p><img src="http://blog.developpez.com/media/download_page-mcqs.png" width="400" height="391" alt="Page de téléchargement - Mcqs" /></p>
<p>Je n’ai pas fait beaucoup de modifications sur cette page, mais mon idée est de toute façon de proposer un installateur (voir ci après). J’ai donc laissé le texte en anglais et la description correspondant à une application windows.</p>
<p><strong>Installation</strong><br />
La prochaine étape va consister à se préoccuper de l’installation d’un produit fini. Il doit être possible:<br />
* d’installer ou de choisir une base de données Derby.<br />
* de configurer l’adresse à laquelle les clients devront se connecter.<br />
&#8230;</p>
<p>Encore un peu de travail en perspective&#8230;</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>config.ini et setter dans Eclipse Scout</title>
		<link>https://blog.developpez.com/jmini/p10494/demo/eclipse_scout_config_ini_et_setter</link>
		<comments>https://blog.developpez.com/jmini/p10494/demo/eclipse_scout_config_ini_et_setter#comments</comments>
		<pubDate>Mon, 14 Nov 2011 16:39:09 +0000</pubDate>
		<dc:creator><![CDATA[jmini]]></dc:creator>
				<category><![CDATA[Demo]]></category>
		<category><![CDATA[Eclipse Scout]]></category>
		<category><![CDATA[Mcqs]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Les applications Eclipse Scout sont opérationnelles dès leur création à l’aide du template initial, mais pour bien comprendre leur fonctionnement, il y a pas mal de petits détails. Je voulais obtenir un code indépendant de la configuration de la base de données, c&#8217;est-à-dire utiliser le fichier config.ini (qui doit de toute façon être mis à [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Les applications Eclipse Scout sont opérationnelles dès leur création à l’aide du template initial, mais pour bien comprendre leur fonctionnement, il y a pas mal de petits détails.</p>
<p>Je voulais obtenir un code indépendant de la configuration de la base de données, c&rsquo;est-à-dire utiliser le fichier <code class="codecolorer text default"><span class="text">config.ini</span></code> (qui doit de toute façon être mis à jour leur d’un changement d’environnement).<br />
<span id="more-13"></span></p>
<p>Fidèle à sa logique, Eclipse Scout propose d’étendre la classe <code class="codecolorer text default"><span class="text">AbstractSqlService</span></code> pour définir la configuration d’accès à la base de données.</p>
<p>Il existe une propriété privée <code class="codecolorer text default"><span class="text">m_jdbcMappingName</span></code> qui est accessible par des getters et des setters publics. Dans la classe fille, il est d’usage d’indiquer une constante dans la fonction <code class="codecolorer text default"><span class="text">getConfigured*()</span></code> correspondante (<code class="codecolorer text default"><span class="text">getConfiguredJdbcMappingName()</span></code> dans ce cas). C’est ce que la perspective Eclipse fait si l’on utilise la «Scout Properties View».</p>
<p><img src="http://blog.developpez.com/media/object_properties_view_db.png" width="485" height="251" alt="Object Properties View - Sql Service" /></p>
<p>Le code correspondant:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">@Override <br />
protected String getConfiguredJdbcMappingName() { <br />
&nbsp; return &quot;jdbc:derby:/Users/jebr/code/mcq/mcq_db.derby&quot;; <br />
}</div></div>
<p>À l’initialisation, cette valeur va être lue et devenir la valeur courante (accessible ensuite par le getter traditionnel).</p>
<p>Pourtant il existe une autre manière d’initialiser cette valeur. Il est possible d’utiliser dans le fichier config.ini une ligne respectant ce pattern:</p>
<p><code class="codecolorer text default"><span class="text">&lt;Qualified Name&gt;#&lt;Setter name without set prefix&gt;=&lt;value&gt;</span></code></p>
<p>Ainsi dans notre cas:<br />
<code class="codecolorer text default"><span class="text">org.eclipselabs.mcqs.server.services.common.sql.McqDerbySqlService#JdbcMappingName=jdbc:derby:/Users/jebr/code/mcq/mcq_db.derby</span></code></p>
<p>C’est magique&#8230;</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
