Précédent   Forum du club des développeurs et IT Pro > Java > Serveurs, conteneurs, et Java EE > Modularisation (OSGi, SCA...)
Modularisation (OSGi, SCA...) Forum d'entraide sur les architectures modulaires à base de composants et services (OSGi, SCA...). Avant de poster -> Les cours OSGi
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 28/01/2009, 18h52   #1
bibilolo2
Membre habitué
 
Étudiant
Inscription : février 2007
Messages : 151
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 151
Points : 102
Points : 102
Envoyer un message via MSN à bibilolo2
Par défaut [OSGI] Créer bundle avec Swing

Bonsoir à tous,
dans le cadre d'un projet de synthèse, j'ai une application graphique a développée avec Swing et j'aimerais la mettre sous forme de bundle(s), sous Felix, si possible sans utiliser SWT avec Eclipse.

Cela est-il possible ?
Sinon, comment créer une interface graphique simplement ?

Je vous remercie pour vos réponses.
bibilolo2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2009, 19h38   #2
herch
Membre chevronné
 
Avatar de herch
 
Inscription : mai 2006
Messages : 654
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2006
Messages : 654
Points : 750
Points : 750
Salut,
tu veux dire quoi par bundle?? ResourceBundle??
sinon, le moyen le plus simple de créer des interfaces graphiques swing c'est d'utiliset Netbeans
herch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2009, 19h43   #3
bibilolo2
Membre habitué
 
Étudiant
Inscription : février 2007
Messages : 151
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 151
Points : 102
Points : 102
Envoyer un message via MSN à bibilolo2
Un bundle est un composant fonctionnant sur une plate-forme logiciel telle que Felix et Equinox.
bibilolo2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2009, 19h46   #4
herch
Membre chevronné
 
Avatar de herch
 
Inscription : mai 2006
Messages : 654
Détails du profil
Informations personnelles :
Âge : 27

Informations forums :
Inscription : mai 2006
Messages : 654
Points : 750
Points : 750
salut,
je sais que c'est bizarre de te poser une question alors que tu t'attends à une réponse, mais à quoi sert Felix et l'OSGi Alliance, j'ai visité leurs site web, mais j'avoue n'avoir rien compris.
herch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2009, 19h50   #5
djo.mos
Expert Confirmé Sénior
 
Avatar de djo.mos
 
Inscription : octobre 2004
Messages : 4 678
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 4 678
Points : 7 003
Points : 7 003
Salut,
C'est faisable, Kau Tödter en a fait la preuve
http://toedter.com/blog/?p=33
De là, tu peux récupérer le code source de la chose et t'en inspirer.
__________________
Mon Blog | Mes Cours | Moi sur twitter
djo.mos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2009, 20h01   #6
bibilolo2
Membre habitué
 
Étudiant
Inscription : février 2007
Messages : 151
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 151
Points : 102
Points : 102
Envoyer un message via MSN à bibilolo2
Citation:
Envoyé par herch Voir le message
salut,
je sais que c'est bizarre de te poser une question alors que tu t'attends à une réponse, mais à quoi sert Felix et l'OSGi Alliance, j'ai visité leurs site web, mais j'avoue n'avoir rien compris.
La programmation par composant est présentée à cette adresse par un développeur confirmé :
http://t-templier.developpez.com/tutoriel/java/osgi/osgi1/

Citation:
Envoyé par djo.mos
Salut,
C'est faisable, Kau Tödter en a fait la preuve
http://toedter.com/blog/?p=33
De là, tu peux récupérer le code source de la chose et t'en inspirer.
Merci Djo.mos. J'avais vu cette application mais elle m'a fait un peu peur (8Mo de source).
Je généralise la question à toutes les bibliothèques d'interface et repose ma question. Connaissez-vous un moyen d'implanter une interface graphique dans un bundle ?
bibilolo2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2009, 20h06   #7
djo.mos
Expert Confirmé Sénior
 
Avatar de djo.mos
 
Inscription : octobre 2004
Messages : 4 678
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 4 678
Points : 7 003
Points : 7 003
Citation:
Envoyé par bibilolo2 Voir le message
Merci Djo.mos. J'avais vu cette application mais elle m'a fait un peu peur (8Mo de source).
Connaissez-vous un moyen d'implanter une interface graphique dans un bundle ?
Bah j'avais jamais fait ça personnellement, mais à priori, je dirais qu'il suffit que tu crées ta fenêtre principale dans la méthode start de ton Activator (de l'un de tes activators en fait), ça ressemble au main ordinaire de Java.
Penses juste à le faire dans un thread séparé, sinon tu vas bloquer le démarrage de ton bundle voire le conteneur entier.
__________________
Mon Blog | Mes Cours | Moi sur twitter
djo.mos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2009, 18h26   #8
bibilolo2
Membre habitué
 
Étudiant
Inscription : février 2007
Messages : 151
Détails du profil
Informations personnelles :
Âge : 25

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2007
Messages : 151
Points : 102
Points : 102
Envoyer un message via MSN à bibilolo2
J'ai réussi grâce à vos conseils !
Voici le code source :

Dans la classe principale :
Code :
1
2
3
Runnable r = new ClasseImplementantLInterfaceRunnable();
Thread t = new Thread(r);
t.start();
Puis dans le manifest du bundle rajouter un import de javax.swing :
Code :
import-Package: org.osgi.framework, javax.swing
Après on développe l'interface comme une application normale.

Merci beaucoup djo.mos
bibilolo2 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/01/2012, 16h56   #9
alen22
Candidat au titre de Membre du Club
 
franco
Inscription : mars 2011
Messages : 231
Détails du profil
Informations personnelles :
Nom : franco

Informations forums :
Inscription : mars 2011
Messages : 231
Points : 13
Points : 13
dans ce même contexte j'ai une petite application à faire avec swing sous forme de bundle

le but de cette application est d'afficher une map avec une programmation par composant en utilisant OSGI et la notion de bundle

les outils de cette application eclipse,apache karaf

pour commencer j'arrive à afficher une map avec la notion de bundle

le code de cette application est le suivant :

pour la class :JGoogleMapEditorPan.java

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
 
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.text.html.HTMLDocument;
import javax.swing.text.html.HTMLEditorKit;
 
/**
 * Afficher une carte GoogleMap dans un JEditorPane
 * @author fobec 2010
 */
public class JGoogleMapEditorPan extends JEditorPane {
 
    private int zoomFactor = 7;
    private String ApiKey = "";
    private String roadmap = "roadmap";
    public final String viewTerrain = "terrain";
    public final String viewSatellite = "satellite";
    public final String viewHybrid = "hybrid";
    public final String viewRoadmap = "roadmap";
 
    /**
     * Constructeur: initialisation du EditorKit
     */
    public JGoogleMapEditorPan() {
        HTMLEditorKit kit = new HTMLEditorKit();
        HTMLDocument htmlDoc = (HTMLDocument) kit.createDefaultDocument();
        this.setEditable(false);
        this.setContentType("text/html");
        this.setEditorKit(kit);
        this.setDocument(htmlDoc);
    }
 
    /**
     * Fixer le zoom
     * @param zoom valeur de 0 à 21
     */
    public void setZoom(int zoom) {
        this.zoomFactor = zoom;
    }
 
    /**
     * Fixer la clé de developpeur
     * @param key APIKey fourni par Google
     */
    public void setApiKey(String key) {
        this.ApiKey = key;
    }
 
    /**
     * Fixer le type de vue
     * @param roadMap
     */
    public void setRoadmap(String roadMap) {
        this.roadmap = roadMap;
    }
 
    /**
     * Afficher la carte d'après des coordonnées GPS
     * @param latitude
     * @param longitude
     * @param width
     * @param height
     * @throws Exception erreur si la APIKey est non renseignée
     */
    public void showCoordinate(String latitude, String longitude, int width, int height) throws Exception {
        this.setMap(latitude, longitude, width, height);
    }
 
    /**
     * Afficher la carte d'après une ville et son pays
     * @param city
     * @param country
     * @param width
     * @param height
     * @throws Exception erreur si la APIKey est non renseignée
     */
    public void showLocation(String city, String country, int width, int height) throws Exception {
        this.setMap(city, country, width, height);
    }
 
    /**
     * Assembler l'url et Générer le code HTML
     * @param x
     * @param y
     * @param width
     * @param height
     * @throws Exception
     */
    private void setMap(String x, String y, Integer width, Integer height) throws Exception {
        if (this.ApiKey.isEmpty()) {
            throw new Exception("Developper API Key not set !!!!");
        }
 
        String url = "http://maps.google.com/maps/api/staticmap?";
        url += "center=" + x + "," + y;
        url += "&zoom=" + this.zoomFactor;
        url += "&size=" + width.toString() + "x" + height.toString();
        url += "&maptype=" + this.roadmap;
        url += "&markers=color:blue" + x + "," + y;
        url += "&sensor=false";
        url += "&key=" + this.ApiKey;
 
        String html = "<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.01 Transitional//EN'>";
        html += "<html><head></head><body>";
        html += "<img src='" + url + "'>";
        html += "</body></html>";
        this.setText(html);
    }
 
 
 
}

et pour la class Activator.java


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import java.util.logging.Level;
import java.util.logging.Logger;
 
import javax.swing.JFrame;
 
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
 
public class Activator implements BundleActivator {
 
 
 
	public void start(BundleContext context) throws Exception {
 
 
		 JGoogleMapEditorPan googleMap = new JGoogleMapEditorPan();
 
 
 
		 try {
	            googleMap.setApiKey("maCleGoogleMap");
	            //  googleMap.setRoadmap(googleMap.viewHybrid);
 
	            /**
	            Afficher la ville de Strabourg
	             */
	            googleMap.showLocation("strasbourg", "france", 390, 400);
	            /**
	             * Afficher Paris en fonction ses coordonnées GPS
	             */
	            //  googleMap.showCoordinate("48.8667", "2.3333",390, 400);
	        } catch (Exception ex) {
	            Logger.getLogger(JGoogleMapEditorPan.class.getName()).log(Level.SEVERE, null, ex);
	        }
 
	        JFrame frame = new JFrame();
	        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	        frame.add(googleMap);
	        frame.setSize(400, 420);
	        frame.setLocation(200, 200);
	        frame.setVisible(true);
 
 
 
 
 
 
 
 
	}
 
 
	public void stop(BundleContext context) throws Exception {
 
	}
}

et pour MANIFEST.MF

Code :
1
2
3
4
5
6
7
8
9
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Mybundle
Bundle-SymbolicName: com.test.mybundle
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: com.test.mybundle.Activator
Bundle-Vendor: TEST
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
import-Package: org.osgi.framework;version="1.3.0"

mais le problème est si je fait l’exécution de cette application :
RUN AS-->OSGI framwork la map est afficher

mais le but est d'afficher la map si je tape "START" dans le console

et de fermer cette map si je tappe "STOP"

pour le moment si je tape "START " la reponse est :

osgi> start
No bundle(s) specified!

aussi il me manque cette ligne dans le fichier manifest.Mf
Code :
import-Package: org.osgi.framework, javax.swing
aussi il me manque des code à faire dans la méthode "STOP " de la class "ACTIVATOR"
aussi je pense que je dois faire l’exécution finale avec apache karaf avec des commandes (start et stop)
merci d'avance
alen22 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h26.


 
 
 
 
Partenaires

Hébergement Web