IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

OGSi Java Discussion :

[OSGI] Créer bundle avec Swing


Sujet :

OGSi Java

  1. #1
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 151
    Points : 133
    Points
    133
    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.
    Tout vient à point qui sait programmer.

  2. #2
    Membre éclairé Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Points : 773
    Points
    773
    Par défaut
    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

  3. #3
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 151
    Points : 133
    Points
    133
    Par défaut
    Un bundle est un composant fonctionnant sur une plate-forme logiciel telle que Felix et Equinox.
    Tout vient à point qui sait programmer.

  4. #4
    Membre éclairé Avatar de herch
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    655
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 655
    Points : 773
    Points
    773
    Par défaut
    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.

  5. #5
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    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.

  6. #6
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 151
    Points : 133
    Points
    133
    Par défaut
    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 ?
    Tout vient à point qui sait programmer.

  7. #7
    Expert éminent
    Avatar de djo.mos
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    4 666
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 666
    Points : 7 679
    Points
    7 679
    Par défaut
    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.

  8. #8
    Membre habitué
    Profil pro
    Étudiant
    Inscrit en
    Février 2007
    Messages
    151
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2007
    Messages : 151
    Points : 133
    Points
    133
    Par défaut
    J'ai réussi grâce à vos conseils !
    Voici le code source :

    Dans la classe principale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    Import-Package: org.osgi.framework, javax.swing
    Après on développe l'interface comme une application normale.

    Merci beaucoup djo.mos
    Tout vient à point qui sait programmer.

  9. #9
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    232
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 232
    Points : 47
    Points
    47
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/02/2015, 16h58
  2. Ajouter des composants à chaud avec Swing
    Par raj dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/12/2004, 10h34
  3. Comment afficher du texte avec swing ?
    Par meda dans le forum AWT/Swing
    Réponses: 8
    Dernier message: 27/10/2004, 14h35
  4. Afficher une image avec swing
    Par arnonote dans le forum AWT/Swing
    Réponses: 11
    Dernier message: 07/08/2004, 12h10
  5. Créer composant avec TQuery->pb suppression a la concepti
    Par marghett dans le forum Bases de données
    Réponses: 12
    Dernier message: 24/07/2004, 07h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo