ETOILE
BLOG
Inscrire son Blog  
Annuaire Blog   
Les Etoiles    
Menu
Accueil
Réferencer son Blog
Modifier sa fiche EB
Créer son Blog
Flux RSS pour Blog
Blog Chat gratuit
Déco pour Blogs
Blog Critique
Video
Puzzle Fun
Bac academie 2008
Bac Pro 2008

Les blogs videos les plus vus ce mois-ci
Top 100 blog video

Derniers blogs inscrits
 Bac illkirch graffenst...
 Bac la garde résu...
 Bac henin beaumont r&#...
 Bac herblay résul...
 Esc chambery
 Esc clermont
 L'expansion sur dailym...
 Bac gonesse résul...
 Bac villeneuve resulta...
 Bac romainville ré...
 Marguerittes autrement...
 Esc rennes
 Bac saint sebastien su...
 Concours passerelle esc
 Immobilier reunion : l...
 Bac decines charpieu r...
 Bac la possession r...
 Bac vichy résulta...
 Property for sale - re...
 Armand feldmann - gale...
 Le scrap dans tous ses...
 C.m.p. de ferney-volta...
 Bac les ulis resultats...
 Bac rambouillet ré...
 Esc grenoble
 Esc bretagne brest
 Bac tournefeuille r...
 Vendita casa plan de l...
 Bac le kremlin bicetre...
 Pernes avenir solidaire
 Esc amiens picardie
 Bac epernay résul...
 Bac oullins résul...
 I'm not emo i'm just m...
 Iecs strasbourg
 Int management le blog
 Japan expo
 Esc la rochelle
 Bac champs sur marne r...
 Pcf avion
 Blog esc grenoble
 Inseec france
 Bac armentieres ré...
 Esc troyes
 Esc montpellier - aux ...
 Bac brunoy résult...
 Le blog de ol tichit
 Em normandie
 Agir ensemble pour l'a...
 Http://moiijustemoiiet...

Annuaire Blog par région


Partenaires
Blog.Lisabuzz.com
Un robot critique élogieusement votre Blog.

Lisabuzz.com
Un robot critique tous vos disques préférés... Attention, il est fou...
Paris Casting
Recevez tous les jours de nouvelles annonces de casting sur votre email
Maths-Fi
Emploi et formation en finance de marché, IT Finance et maths
Master Emploi
Le site de la formation et de l'emploi pour Ingénieur et Bac+5.
Webcam Paris Marais
Une bien belle webcam rafraichie toutes les 120 secondes en direct du Centre de danse du marais.

créer un Blog



Silverlight et Java

Cliquer ici pour visiter
Silverlight et Java


Présentation du site Silverlight et Java :

Suivi de mes travaux concernant Silverlight et l'interopérabilité avec le monde Java. Découverte de Silverlight
 Recommander ce blog à vos ami(e)s.

Les sites partenaires de ce blog :

Aucun site ami pour ce blog.

Site/blog proposé par : Ronny KWON - Ville : MONTPELLIER

Location : 34000 - HERAULT

Signaler une violation à propos du Blog Silverlight et Java
   Derniers posts : Silverlight et Java
 New Silverlight Project Plugin
Wed, 11 Jun 2008 15:16:00 +0000

Je découvre la puissance d?Eclipse et l?incroyable modularité qu?il propose. Tout est basé autour de plugins. Ces plugins permettent notamment d?exploiter d?autres langages autre que Java? Alors pourquoi pas Silverlight?.

Première étape : Structure de projet.

Créer un ?New Silverlight Project Wizard?. La structure de projet se calquera entièrement sur celle proposée par Visual Studio 2008. Ce choix n?est en rien anodin puisque pour la partie compilation, j?utiliserai tout simplement l?outil de compilation MSBuild. Nous avons donc l?arborescence de fichier minimaliste suivante pour un projet ?SilverlightApplication1? :

clip_image001    image

La première tâche effective est : Développer un plugin permettant de créer un nouveau projet Silverlight à travers un Wizard simple (spécification du nom de projet). De cette manière, lorsqu?un nouveau projet Silverlight sera créé, l?arborescence entière des fichiers sera automatiquement fabriquée.

Ce site vous expliquera très bien comment y arriver. Les docs sont très pauvres alors je vous conseille de le noter quelquepart. http://www.ibm.com/developerworks/opensource/library/os-eclipse-custwiz/index.html

 

Fonctionnement du plugin : Après avoir suivi le tutoriel ci-dessus, il fallait créer l?arborescence des fichiers avec les références vers le nom de projet.

image image image

Avantage : la structure de projet conservée, on peut éditer le projet sous Visual Studio 2008. Résultat : Basiquement, rien de plus qu?un editeur de texte, mais le plugin débute, et à fortiori, je proposerai un Build et unRun afin de compiler et exécuter un projet Silverlight dans une application Web (jsp?)?

(J?ai parlé d?interopérabilité Silverlight+Java???)

Prochaine étape le build.


 Silverlight 2 Beta 2 fait son coming out!
Wed, 11 Jun 2008 07:42:00 +0000

 

Attention, toutes les applications développées sous la Beta 1 doivent être recompilées avec le SDK V2 beta2.

On en profite également pour annoncer aux développeurs que le Silverlight tool beta 2 est disponible avec la nouvelle preview de Expression Blend (June Preview).

Pour télécharger la bête : http://silverlight.net


 Lien entre page.xaml et page.xaml.cs
Wed, 04 Jun 2008 15:40:00 +0000

Dans Visual Studio 2008, lorsque vous créez un nouveau projet Silverlight, une structure de projet est mis en place avec notamment la présence des fichiers Page.xaml qui permet de décrire la partie présentation en format xaml et page.xaml.cs qui est le static code associé au fichier xaml. C?est du ?Code Behind? vous noterez dans VS2008 la présentation en cascade de l?élément Page.xaml (idem pour App.xaml)

VS2008 Silverlight project screenshot

Une question que je m?étais posé est la suivante :

Comment dans la partie C#, l?éditeur peut-il ?établir le lien entre la partie xaml et C#?

Exemple :

Dans Page.xaml on déclare un textblock

<TextBlock x:Name=?_text? Text=?Hello World?/>

et comme par ?magie? dans le fichier Page.xaml.cs on a accès à l?objet _text!

on se doute bien que la fonction InitializeComponent(); y est pour quelquechose, un rapide coup d?oeil sur sa définition nous emmène vers le fichier Page.g.cs (g pour generated)! Il s?avère que ce fichier est en fait auto-généré par VS2008. De plus, elle est de type partial, ce qui signifie que c?est un bout de code complémentaire qui viendra s?ajouter lors de la compilation à la classe Page.

Que contient Page.g.cs?

Toute la représentation XAML!

A quel moment est-il généré?

Vous remarquerez que lorsque vous créez de nouveaux objets dans la partie XAML, ils ne sont pas tout de suite accessibles dans votre code C# ou VB.NET. Il faut au préalable sauvegarder les modifications. VS2008 semble donc effectuer une opération de build lors de la sauvegarde qui permet entre autre de générer ce fameux fichier qui permet de faire le lien entre Page.xaml et Page.xaml.cs.


 Silverlight 1.0 sur Linux : Moonlight en test
Fri, 16 May 2008 19:42:00 +0000

Le projet portage de Silverlight vers des plateformes Linux nommé "Moonlight" est actuellement en phase de test, la release date du 13 mai 2008. L'équipe annonce cependant que les éléments multimedia ne sont pas supportés. Le support de la version Silverlight 1.1 va être abandonnée, les développeurs désirant désormais se consacrer à l'adaptation de Silverlight 2.0. Mono est dédié au portage des technologies .NET sur l'environnement Linux, le projet Moonlight a pu être mis en place avec la collaboration de Microsoft. (Oui Silverlight est jeune il faut pouvoir toucher un maximum de public!). Enfin espérons que ce projet pourra faire profiter pleinement le monde des pingouins de la technologie .NET si familière à l'environnement Windows.

Plus d'information sur le blog de Miguel de Izaca

 

Mots clés Technorati : ,,

 Silverlight 2 en poster! Linq est là! Linq c'est quoi??
Tue, 13 May 2008 12:16:00 +0000

Enfin trouvé, le poster du développeur ultime de Silverlight 2!

Silverlight2PosterMIX08

Vous pourrez comparer les nouveautés par rapport à Silverlight V1 disponible sur ce billet.

On notera notamment Linq qui est un nouveau concept de programmation, concrètement, il permet d'effectuer des requêtes façon SQL sur des objets, voire de l'XML au sein d'un code C# ou VB. C'est d'ailleurs cette technique qui a été employée dans un Hands-on-Labs qui consiste en récupérer les 15 posts les plus récents à partir de 3 flux RSS (consulter ce blog). Pour avoir un tour d'horizon de Linq je vous suggère de lire cet article très intéressant : Présentation de Linq avec C#.

 

Un avantage que je note : le filtrage des données et le tri en un minimum de code

var mashedItems =
    from feed in feeds
    from item in feed.Items
    where item.PublishDate > minDate // filtrage
    orderby item.PublishDate descending // tri
    select item;

Un exemple d'utilisation de Linq avec iTunes.


 Consommation d'un service Web Amazon avec Silverlight
Sun, 11 May 2008 16:18:00 +0000

Amazon propose ses Services Web librement exploitables à partir de son site http://docs.amazonwebservices.com/AWSECommerceService/2008-04-07/GSG/ .

Je me suis laissé tenter par l'exploitation de ce service Web. A l'aide de ce blog, j'ai ainsi développer une application Silverlight consommant un WSDL.

  • S'inscrire sur http://aws.amazon.com/ afin d'obtenir un AWS Access Key ID
  • Créer un nouveau projet Silverlight sous Visual Studio 2008, appelez le par exemple "MyAmazon"
  • Dans le projet "MyAmazon", faites un clic droit sur References et Add Service Reference


right click add service reference

  • Dans le champ "Address" tapper

'http://webservices.amazon.com/AWSECommerceService/FR/AWSECommerceService.wsdl'

(sans les '') et appuyer sur Go.

add service reference 


Nommer cette référence "Amazon". (Namespace)

  • Si tout se passe bien vous devriez obtenir la fenêtre ci-dessous :

    property panel Amazon 

 

  • Dans Page.xaml, nous aurons besoin de 3 objets (modifier les balises initiales <Grid ...> </Grid> par <Canvas ...></Canvas>:
    • Un TextBox nommer le _keyword

<TextBox x:Name="_keyword" Height="26" Width="460" Canvas.Left="29" Canvas.Top="24" FontStyle="Italic" Text="Muse" />

    • Un bouton, affectez lui un évènement "Click"

<Button x:Name="_search" Width="100" Height="30" Click="search_Click" Content="Search" Canvas.Top="20" Canvas.Left="520"/>

    • Une ListBox pour afficher le résultat, nommer le _listbox

<ListBox x:Name="_listbox" Width="500" Height="400" Canvas.Top="100" Canvas.Left="20" HorizontalAlignment="Stretch" Margin="0,0,0,0" VerticalAlignment="Stretch" >
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="100"/>
                            <ColumnDefinition Width="400"/>
                        </Grid.ColumnDefinitions>
                        <Image Grid.Column="0" Source="{Binding SmallImage.URL}"/>
                        <TextBlock Grid.Column="1" Text="{Binding ItemAttributes.Title}"/>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

  • Passons au code dans Page.xaml.cs, il faut gérer l'évènement du clic sur le bouton "_search", soit la méthode "search_Click"
    Vérifier que vous avez bien inclus une référence vers le service Amazon importé (voir étape 4) : using MyAmazon.Amazon;
    • Créons le client Amazon (à l'image d'un WebClient version Amazon) :

AWSECommerceServicePortTypeClient client = new AWSECommerceServicePortTypeClient();

    • Il faut paramétrer la requête à envoyer :

ItemSearchRequest request = new ItemSearchRequest(); request.SearchIndex = "Music";
request.ResponseGroup = new string[] { "Small", "Images" };
request.Keywords = _keyword.Text; ItemSearchRequest[] requests = new ItemSearchRequest[] { request };

    • Ainsi que l'authentification pour pouvoir consommer le service web, pour celà munissez vous de votre AWS Access Key ID ainsi que de votre identifiant (le email utilisé lors de l'inscription) :

ItemSearch itemSearch = new ItemSearch();
itemSearch.SubscriptionId = "monemail@dauthentification.com";
itemSearch.AWSAccessKeyId = "MONACCESSKEYID";
itemSearch.Request = requests;

    • Il ne reste plus qu'à demander au client d'effectuer la recherche et actualiser notre listbox avec le résultat renvoyé. On ajoute d'abord un écouteur d'évènement qui se déclenchera lorsque la recherche aura été effectuée :

client.ItemSearchCompleted += new EventHandler<ItemSearchCompletedEventArgs>(client_ItemSearchCompleted);

    • Puis il faut lancer la requête :

client.ItemSearchAsync(itemSearch);

    • Finalement lorsque la recherche aura été effectuée, on actualise la listbox via la méthode client_ItemSearchCompleted :

public void client_ItemSearchCompleted(object sender, ItemSearchCompletedEventArgs e)
{
    _listbox.ItemsSource = e.Result.Items[0].Item;
}

L'ensemble du code est :



using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Animation;
using System.Windows.Shapes;
using MyAmazon.Amazon;
using System;

namespace MyAmazon
{
    public partial class Page : UserControl
    {
        public Page()
        {
            InitializeComponent();
        }
        private void search_Click(object sender, RoutedEventArgs e)
        {            AWSECommerceServicePortTypeClient client = new AWSECommerceServicePortTypeClient();

            // parametrage de la requete
            ItemSearchRequest request = new ItemSearchRequest();
            request.SearchIndex = "Music";
            request.ResponseGroup = new string[] { "Small", "Images" };
            request.Keywords = _keyword.Text;

            ItemSearchRequest[] requests = new ItemSearchRequest[] { request };

            ItemSearch itemSearch = new ItemSearch();
            itemSearch.SubscriptionId = "monemail@dauthentification.com";
itemSearch.AWSAccessKeyId = "MONACCESSKEYID";
            itemSearch.Request = requests;

            client.ItemSearchCompleted += new EventHandler<ItemSearchCompletedEventArgs>(client_ItemSearchCompleted);
            client.ItemSearchAsync(itemSearch);
        }

        public void client_ItemSearchCompleted(object sender, ItemSearchCompletedEventArgs e)
        {
            _listbox.ItemsSource = e.Result.Items[0].Item;
        }
    }
}


Un aperçu en image de l'application :

myAmazon blank

myAmazon Result


La démo ici et les sources là

 Schéma de présentation du framework Silverlight
Sat, 10 May 2008 21:24:00 +0000

Au cours de quelques recherches sur le net, j'ai trouvé un schéma fort intéressant concernant la programmation autour de Silverlight.

Silverlight-Developer.Reference

Cela pourra vous aider à vous positionner dans les multiples librairies en faisant par exemple les hands-on-labs de Silverlight.


 Demo de JavaFx!
Fri, 09 May 2008 11:32:00 +0000

Je vous parlais lors d'un précédent billet de JavaFX, une RIA version JAVA, visant à concurrencer AIR/Flex d'Adobe et Silverlight de Microsoft. Le site de JavaFX présente quelques tutoriels intéressants.

Une application JavaFX peut être exécutée sur toutes plateformes où une JRE munie de Java SE ou Java ME est installée. Autant dire que son champ d'action est important.

javaFx

Peut être un inconvénient pour ceux qui n'ont jamais mis les pieds dans Java : toujours la difficulté d'approche.

Cependant, pour avoir tenté de développer des applications Swing avec des effets de transitions (un simple SplashScreen avec effet de transparence et apparition fade-in), je pense que JavaFX simplifie énormément la réalisation des effets et c'est tant mieux!


 Gestion d'évènements sur les vecteurs
Tue, 06 May 2008 19:11:00 +0000

Lors de la réalisation d'un projet Java, nous devions développer un logiciel se rapprochant le mieux possible de la philosophie Modèle-Vue-Contrôleur Pour la gestion d'un ChatRoom et de diverses listes, il m'est venu à l'idée de créer des Vecteurs qui étaient capable de propager un évènement lors de l'ajout ou du retrait d'un objet d'un vecteur.

C'est pourquoi j'ai développé en premier lieu l'interface des écouteurs

public interface VectorListener extends EventListener {
    /**
     * dispatch an event whenever an object is added to the vector
     */
    void vectorAddObjectListener();
    /**
     * dispatch an event wehenever an object is removed from the vector
     */
    void vectorRemoveObjectListener();
}

ensuite un adaptateur, dans le cas où la gestion des évènements devient plus complexe :

public abstract class VectorAdapter implements VectorListener, Serializable{
 
 
    public void vectorAddObjectListener() {}
    public void vectorRemoveObjectListener() {}
}

et finalement, surcharger la classe Vector<E> en propageant les évènements correspondants quelques exemples de ma classe VectorEventListener<E>:

@Override
    public void add(int index, E e){
        super.add(index, e);
        fireAddObject();  
    }
 
    @Override
    public boolean remove(Object o){
        if(super.remove(o)){
            fireRemoveObject();
            return true;
        }
        return false;
    }
 
 
    /**
     * dispatch an event whenever an object is added to the vector
     */
    protected void fireAddObject(){
        for(VectorListener listener : getVectorListener()){
            listener.vectorAddObjectListener();
        }
    }
 
    /**
     * dispatch an event wehenever an object is removed from the vector
     */
    protected void fireRemoveObject(){
        for(VectorListener listener : getVectorListener()){
            listener.vectorRemoveObjectListener();
        }
    }
 
 
    /**
     * add a listener event
     * @param listener to add
     */
    public void addVectorListener(VectorListener listener) {
        listeners.add(VectorListener.class, listener);
    }
    /**
     *  remove a listener event
     * @param listener to be removed
     */
    public void removeVectorListener(VectorListener listener) {
        listeners.remove(VectorListener.class, listener);
    }

les sources sont disponibles ici. La librairie ici.

L'exemple d'utilisation en pratique est lors de la réception d'un message, au niveau IHM :

  • un String s'ajoute au vecteur,
  • un évènement est délenché,
  • une fenêtre s'ouvre et affiche les messages
ClientSocket.getClient().addMessageListener(new VectorAdapter() {
 
            // chose a faire lorsque le client recoit un nouveau message
            @override
            public void vectorAddObjectListener() {
                MessageChatVector mcv = ClientSocket.getClient().getMesMessages();
 
                for (Iterator<Message> it = mcv.iterator(); it.hasNext();) {
                    Message message = it.next();
 
                    chatWindow.addConversation(message);
 
                }
 
                mcv.clear();
 
            }
 
 });

 WebClient - Consommation d'un service web simple
Tue, 06 May 2008 07:46:00 +0000

Suite du Hands-On-Labs Silverlight, intitulé "Networking and Data". Ce premier exercice consiste en effectuer une simple requête auprès du serveur pour afficher l'heure du serveur. Concretement on va consommer un service web à travers une application Silverlight

1. Je commence par créer un nouveau projet Silverlight avec un TextBlock "_serverTimeText" qui se contentera d'afficher l'heure.

  1. <TextBlock x:Name="_serverTimeText"
  2. Canvas.Top="60" Canvas.Left="10"
  3. Width="400" Height="300" Text="HELLO"
  4. FontSize="52" TextAlignment="Center"
  5. VerticalAlignment="Center" />

Pour la suite, il faut ajouter ce qu'on appelle un "Handler" au projet que nous appelerons ServerTime.ashx. Typiquement, ce fichier s'apparente aux Servlets en Java. On y retrouve une unique méthode qui sera exécutée lors de l'invocation de ce Handler.

Petite comparaison entre une servlet et un Handler

La servlet de JAVA

  1. public class NewServlet extends HttpServlet {
  2.  
  3. protected void processRequest(HttpServletRequest request, HttpServletResponse response)
  4. throws ServletException, IOException {
  5. response.setContentType("text/html;charset=UTF-8");
  6. PrintWriter out = response.getWriter();
  7. try {
  8. /* TODO output your page here
  9.   out.println("<html>");
  10.   out.println("<head>");
  11.   out.println("<title>Servlet NewServlet</title>");
  12.   out.println("</head>");
  13.   out.println("<body>");
  14.   out.println("<h1>Servlet NewServlet at " + request.getContextPath () + "</h1>");
  15.   out.println("</body>");
  16.   out.println("</html>");
  17.   */
  18. } finally {
  19. out.close();
  20. }
  21. }
  22.  
  23. protected void doGet(HttpServletRequest request, HttpServletResponse response)
  24. throws ServletException, IOException {
  25. processRequest(request, response);
  26. }
  27.  
  28. protected void doPost(HttpServletRequest request, HttpServletResponse response)
  29. throws ServletException, IOException {
  30. processRequest(request, response);
  31. }
  32.  
  33. /**
  34.   * Returns a short description of the servlet.
  35.   */
  36. public String getServletInfo() {
  37. return "Short description";
  38. }
  39. }

Le Handler de C#

  1. public class Handler : IHttpHandler {
  2.  
  3. public void ProcessRequest (HttpContext context) {
  4. context.Response.ContentType = "text/plain";
  5. context.Response.Write("Hello World");
  6. }
  7.  
  8. public bool IsReusable {
  9. get {
  10. return false;
  11. }
  12. }
  13.  
  14. }

Là où Java manipule séparément le request et response, C# nous propose le contexte accessible de HTML.

vous pourrez trouver une liste de comparaison entre les 2 langages sur ce site : C# versus JAVA

2. On veut afficher l'heure du serveur, il faut rajouter une simple fonction

  1. context.Response.Write(DateTime.Now.ToLongTimeString());

le code devient alors

  1. using System;
  2. using System.Web;
  3.  
  4. public class ServerTime : IHttpHandler {
  5.  
  6. public void ProcessRequest (HttpContext context) {
  7. context.Response.Write(DateTime.Now.ToLongTimeString());
  8. }
  9.  
  10. public bool IsReusable {
  11. get {
  12. return false;
  13. }
  14. }
  15.  
  16. }

A partir de ce moment, on vient de créer un premier service web qui a pour fonction de donner l'heure du serveur. Il faut maintenant que notre application Silverlight puisse appeler ce service web pour afficher l'heure du serveur.

3. On va consommer le service en simulant dans notre application un WebClient :

d'où le code à fournir dans Page.xaml.cs

  1. WebClient client = new WebClient();
  2.  
  3. //on récupère notre service web
  4. Uri endpoint = new Uri("http://localhost:8080/BasicCommunication_Web/ServerTime.ashx");
  5.  
  6. //on gère l'évenement lorsque une page a été complètement chargée
  7.  
  8. client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(client_DownloadStringCompleted);
  9.  
  10. // on consomme notre service web
  11. client.DownloadStringAsync(endpoint);

finalement il ne reste plus qu'à gérer l'évenement lorsque le service web a été complètement consommé à savoir, il faut changer notre TextBlock avec l'heure envoyée par le service web

  1. void client_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e){
  2. _serverTimeText.Text = e.Result;
  3. }

 Technologie d'auto-complétion : IntelliSense
Fri, 25 Apr 2008 16:09:00 +0000

Comme tout bon IDE, Microsoft nous propose sa technologie d'auto-complétion IntelliSense


Beaucoup d'éditeurs proposent à ce jour une technologie d'auto-complétion, c'est l'occasion de tester celle de Microsoft : IntelliSense. Dans mes précédant billets je vous parlais des possibilités interessantes d'Expression Blend et de ses StoryBoard, mais aussi de la possibilité de couplage entre VS2008 et Expression Blend. Je me suis donc amusé à coupler le projet du TP Fundamentals avec un Storyboard créé sous Expression Blend. L'idée est que lorsque la souris entre dans mon ellipse il change de couleur, sous VS2008 je commence à tapper "Mouse" et là IntelliSense me propose tout un choix d'attribut :



Remarquez l'icône en forme d'éclair, il correspond à un évènement supporté par l'objet! Ma connaissance en Anglais porte mon choix sur l'évènement MouseEnter. Ensuite IntelliSense me propose de sélectionner une action correspondante ou, s'il n'y en a aucune d'en créer une nouvelle :



le code XAML de notre ellipse est désormais de la forme :
<Ellipse Canvas.Left="60" Canvas.Top="20"
Width="220" Height="220" MouseEnter="ellipse_MouseEnter"
Fill="#FF3685BB" Stroke="#FF0F588A"
StrokeThickness="10" x:Name="ellipse" />
Il ne reste plus qu'à éditer le code C# correspondant à la fonction ellipse_MouseEnter :
Tout en abusant des possibilités IntelliSense, je recherche mon StoryBoard nommé "newcolor".



Et également les méthodes proposées :



Pour finalement obtenir le code suivant qui sera appliqué à l'évènement "MouseEnter" de l'objet ellipse :

        private void ellipse_MouseEnter(object sender, MouseEventArgs e)
{
newcolor.Begin();
}

Avec une étonnante facilité, on vient de réaliser une gestion d'évènement sur un objet en y ajoutant un effet de transition (créé sous Expression Blend).

Le résultat est visible ici.

En conclusion, sans réelle connaissance du formalisme XAML et C#, IntelliSense guide comme il se doit les développeurs que nous sommes, l'avantage étant la rapidité d'accès aux attributs, fonctions etc. sans se perdre dans la recherche de documentation.

 Layout : première utilisation des Canvas
Fri, 25 Apr 2008 15:07:00 +0000

Avez vous déjà un jour été confronté au problème de positionnement de vos objets graphiques sous Java (IDE NetBeans 5.X et +) ? Des replacements à tout va, parfois même on s'arrache les cheveux... Et on se dit alors, modifier le code en dur il n'y a que ça de vrai, à ce moment à quoi nous servent ces IDE façon WYSIWYG?

quant à Microsoft, il nous propose des outils dédiés, c'est ainsi qu'on a la possibilité de créer un projet Silverlight 2 sous Visual Studio 2008 :

projet sous VS2008

et de l'éditer dans un environnement dédié tel qu'Expression Blend

editer avec Expression Blend

Pour ainsi avoir accès à toutes les fonctionnalités d'Expression Blend

projet sous Expression Blend

encore une fois on remarquera l'avantage du format XAML qui est très lisible, ainsi, un minimum de compréhension en anglais et on peut éditer facilement les objets

<Rectangle Canvas.Left="60" Canvas.Top="60"
Width="280" Height="180"
Fill="#FFBB8536" Stroke="#FF8A580F"
StrokeThickness="10" RadiusX="70" RadiusY="76.5" />


En Java on aurait alors fait par exemple rectangle.setPosition(new Position(60,60)); et encore, pour dessiner de simples formes, bonjour le calvaire

 Premier Hands-On-Labs avec Silverlight
Fri, 18 Apr 2008 16:04:00 +0000

Je fais mes premiers pas dans Silverlight en m'appuyant sur ce TP. Ma première opinion est que Expression dispose d'une interface très moderne. En suivant précisément le TP, je m'aperçois que fondamentalement, il n'y a rien de bien compliqué. Tout est clair, Silverlight s'appuie sur de l'XAML (eXtensible Application Markup Language). On génère aisément des "StoryBoard" ou effets de transition qu'on applique aussi facilement à un évènement :

voici le code XAML de la transition générée par Expression Blend :

<Storyboard x:Name="fadeOutPlayButton">
<DoubleAnimationUsingKeyFrames
BeginTime="00:00:00"
Storyboard.TargetName="playButton"
Storyboard.TargetProperty="(UIElement.Opacity)">
<SplineDoubleKeyFrame KeyTime="00:00:00" Value="0.9"/>
<SplineDoubleKeyFrame KeyTime="00:00:01" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>

Ce StoryBoard va être inclus dans une fonction JavaScript qui est complètement personnalisable.

function  mediaelement_play(sender, args) {    
sender.findName("mediaElt").play();
sender.findName("fadeOutPlayButton").begin();
sender.findName("pauseButton").Opacity = 0.85;
}

et lorsqu'on reçoit l'évènement clic de souris il suffit alors de spécifier l'action voulue, pour celà il faut rajouter l'attribut MouseLeftButtonDown

retour à l'XAML :

<Canvas x:Name="playButton"  Width="66.955" Height="36.271" Canvas.Top="251.729" Canvas.Left="313.045" 
MouseLeftButtonDown="mediaelement_play" >
<Rectangle Width="60" Height="30" Fill="#FF9B2C2C" RadiusY="10.5" RadiusX="10.5" Opacity="0.43"
Canvas.Top="2.361" Canvas.Left="3.148"/>
<Polygon Points="0,0 0,24 24,12" Opacity="0.70" Fill="#FF000000" Canvas.Top="5.509" Canvas.Left="23.61" />
<Rectangle Width="66.334" Height="34.668" Opacity="0.68" RadiusX="10.5" RadiusY="10.5">
<Rectangle.Fill>
<LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
<GradientStop Color="#FF000000" Offset="0"/>
<GradientStop Color="#FFD82020" Offset="1"/>
</LinearGradientBrush>
</Rectangle.Fill>
</Rectangle>
</Canvas>

Ainsi lorsque le "playButton" recevra un clic gauche de la souris, la fonction "mediaelement_play" sera exécutée et la suite d'évènements spécifiés sera déclenchée :

sender.findName("mediaElt").play();

l'objet "mediaElt" reçoit l'ordre de mise en lecture (ici notre video au format wmv)

sender.findName("fadeOutPlayButton").begin();

l'objet "fadeOutPlayButton" (notre storyboard) reçoit l'ordre de s'exécuter.

sender.findName("pauseButton").Opacity = 0.85;

puis on change l'opacité de l'objet "pauseButton" à 0.85

aussi simple que celà. => le résultat

Aussi, Silverlight se dit multi-plateforme, j'ai testé et effectivement ma page se lance sur Firefox et sur Safari en ayant préalablement installé le plugin Silverlight.

Ce format est tant ouvert, on peut alors se demander si il est possible de faire communiquer des applications Java avec des interfaces Silverlight.

Reprenons, Expression Blend m'a généré plusieurs fichiers, parmi eux, de l'XAML et du JavaScript,

une petite recherche permet d'affirmer qu'il est possible de faire communiquer du Java et du JavaScript.

Imaginez les possibilités : exploitez votre modèle métier avec une interface Silverlight, vous aurez l'avantage de disposer de la richesse graphique de Silverlight tout en conservant vos Frameworks Java.

Des travaux d'intégration ont déjà débuté, je vous invite à visiter ce site.

Une peau neuve pour Java ?

(En attendant JavaFx...)


 Java et Swing
Fri, 18 Apr 2008 15:47:00 +0000

Etant étudiant en école d'ingénieur Informatique, j'ai été amené à développer différents programmes sous différents langages (C,C++,Pascal,Lisp, Maple, Shell, etc.). S'il y en a bien un qui m'a séduit (lors d'un stage durant l'été 2007) c'est Java. Accompagné d'un bon IDE, Java se révèle performant et plus malléable que bien d'autres langages. C'est aussi avec Java que j'expérimente pour la première fois le développement d'IHM.

C'est pourtant au fil de mes expériences en développement Swing que je constate certaines complexités voire certaines limites de développement, je fais mon premier bilan :

  1. Difficulté à prendre en main : pour créer une JTable, il faut paramétrer son model avec des tableaux d'objets. Pour ajouter un évènement, il faut ajouter un écouteur d'évènement qu'il faut paramétrer avec un adapter ou une interface d'évènements pour ensuite pouvoir manipuler le bon évènement... Enfin, pour arriver à quelque chose que l'on pensait simple au départ il faut parcourir les tuto de Sun, rien n'est intuitif.
  2. Le design : Sans doute vous l'aurez remarqué, Swing utilise par défaut le skin (LookAndFeel) de l'OS sur lequel on lance l'application. Bien évidemment, on se lasse très vite de l'apparence finale. Bien vite on se lance dans l'installation de nouveaux LookAndFeel et si l'on veut entièrement redéfinir l'interface, on va se mettre à surcharger de nombreux composants Swing à ne plus compter les heures (voir : le projet Aerith )
  3. La portabilité : Ouf! S'il y a bien un maître mot de Java c'est la portabilité, encore faut-il que la bonne JRE soit disponible pour l'OS concerné et qu'une JVM supporte cette JRE... Un maître mot qui perd tout son sens dès lors qu'une plateforme ne dispose pas de la version mise à jour (Merci LaPomme d'avoir dispensé et freiné les utilisateurs Mac de JAVA 6).


Derniers Blogs

RSS : http://www.etoileblog.com/prss.php?rss=


Derniers Blogs 34000

RSS : http://www.etoileblog.com/prss.php?rss=34000
 Bac Academie Montpellier résultats 2008
 Bac Montpellier résultats 2008
 Architecte d'intérieur sur montpellier
 Veille Technologique IT
  LOTRO Blog Le Seigneur des Anneaux On-Line
 architecte d'interieur sur montpellier
 Les news de cassanthik
 Silverlight et Java
 Du haut de mon cannelier
 architecte d'intérieur
 Marc-henry Debidour
 Esperto (capoeira)
 SilverLight et Java
 PesteNoire et BloodyMary
 On s'fait une bouffe !
 Concours Elite Model Look Montpellier 2008
 Les Jeunes Radicaux de l'Hérault
 Les Jeunes Populaires de l'Hérault
 Expresscom Annuaire
 http://injustices.unblog.fr/
 BROTHER-RECORDS&KT LOOPS PARTY
 Plume!, Vulgarisation Scientifique et Apero
 Poisson de reve
 Bordel Secret
 Wruth On Fire!

Signaler un abus à propos du Blog Silverlight et Java


RECHERCHES :



Annuaire Blog département Annuaire Blog ville Annuaire Blog région



Signaler une violation

Un service Cogitel-Forum - Nous contacter - mentions légales - mise à jour : dimanche 6 juillet 2008

Crédits expertise blogo-technologique : Speculos
Crédits expertise blogo-multimediatique : Ida - leo
Crédits expertise en expertise : Fab
Liens
Blog Search