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

Interfaces Graphiques en Java Discussion :

Concevoir sa propre console en java.


Sujet :

Interfaces Graphiques en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut Concevoir sa propre console en java.
    Bonjour tout le monde,
    Tous les conseils et les avis, si possible les plus divisés, sont les bienvenus. Je suis en panne d'inspiration, et ça aide d'entendre des avis divers et contradictoires et faire le tri (un peu à la Dr. House). Donc je vous remercie d'avance pour toute participation.

    Voilà le sujet : Je permets à des "clients" d'effectuer des requêtes sur une base de données, plutôt classique : transactions, sélection, projection. En gros, ce que vous pouvez faire sur une console d'un SGBD type MySQL ou ORACLE.
    Jusqu'à présent le seul moyen de communiquer avec la base est graphique, i.e : vous cliquez un bouton pour faire la sélection, et un autre pour commencer une transaction.
    C'est très bien pour limiter les erreurs de saisie, tester les bugs, tester les fonctionnalités de votre programme, mais je voudrais à présent augmenter les possibilités en y ajoutant une console avec un certain jeu d'instructions.
    PS : Je tiens à préciser que le SGBD est nouveau, n'a rien à voir avec ce qui existe déjà. Vous pouvez imaginer que c'est une boite noire, que je connais ses "réactions" à mes commandes, et que j'ai seulement besoin de communiquer avec elle en console, c'est tout. C'est un système conçu indépendamment de ce qui existe déjà (j'espère que je suis clair)

    Question : Comment vas tu t'y prendre pour reconnaitre ce qui vient d'être tapé?
    J'utilise pour ça une grammaire écrite en JavaCC qui contient mon jeu d'instructions, et les fonctions à lancer après reconnaissance de la requête. Le principe est simple : vous tapez ce que vous voulez, la grammaire "décompose" votre entrée, et lance les fonctions adéquats. Un peu comme une expression régulière pour les JFormatted TextField, mais une grammaire c'est plus général, et plus fonctionnel.

    Mon problème : Comme annoncé plus haut, je voudrais intégrer une console à mon programme.
    Comment je là vois ? Une sorte de textArea, qui reste à l'écoute (tout comme un terminal, avec le curseur) et qui lorsque je tape "entrée", me donne le résultat de ce qui vient d'être tapé. Je voudrais bien un truc du genre : ( SGBD>_ ) vous voyez un peu le genre, j'espère .
    J'y ajouterez par la suite une coloration syntaxique si j'ai le temps, mais juste la console ça serait beaucoup.

    Donc, toute aide est la bienvenue, tout avis, lien, conseil. Bref je prends tout, je suis en panne d'inspiration, même googler ne marche pas, c'est dire ma chance du moment.
    Merci d'avance. Cordialement.

  2. #2
    Membre confirmé Avatar de samaury
    Homme Profil pro
    Chevalier Jedi
    Inscrit en
    Mars 2008
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Chevalier Jedi
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2008
    Messages : 114
    Par défaut
    En gros ce qu'il te faut c'est un interpréteur de commandes.
    Pour ça, il te faut définir
    1 - Les commandes supportées
    2 - La syntaxe pour chaque commandes
    3 - implémenter un analyseur syntaxique/lexical pour vérifier les entrées de l'utilisateur.
    Tu trouveras un tutos ici : http://ftp.traduc.org/doc-vf/gazette...1/lg111-G.html
    Une autre alternative (plus simple): tu te contentes d'envoyer à ton sgbd les requettes saisies par les utilisateurs en faisant un minimum de traitement. En retour, tu renvoies des réponses de ton sgbd (messages d'erreur/ou de succès et liste des réponses)

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut
    Merci samaury, c'est une bonne indication. Bien que mon problème soit en java, il y a de quoi s'inspirer.
    Je vais probablement faire quelque chose de simple en console et ajouter un éditeur ou quelque chose. Mes sources d'inspirations (en toute modestie bien sur) sont : SQLFont, SQLDevelopper (pour oracle) et MySQL Browser. C'est des interfaces graphiques simples, avec des fonctionnalités basiques pour un SGBD, reste juste à les implémenter.
    J'essaierai de poster quand j'aurais du concret.
    Encore merci samaury.
    Je suis toujours ouvert à d'autres propositions, dont remercie les auteurs à l'avance.
    Sayyounara!!

  4. #4
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pour la partie présentation tu peux te diriger vers le JSyntaxPane.

    Ensuite pour la gestion d'erreurs pourquoi ne pas simplement te baser sur les messages de retour du SGBD. En effet celui ci est sensé analyser les requêtes et le valider ou invalider selon leur syntaxe. De fait pas trop besoin de reproduire ça au niveau du client.

    Ensuite tu as juste à gérer la récupération du code surligné ou de l'ensemble du code si rien n'est surligné à base de getSelectionStart/getSelectionEnd. Tu pourras faire relativement quelque chose de similaire à la partie code de SQLDeveloper (la complétion en moins).

  5. #5
    Futur Membre du Club
    Inscrit en
    Mars 2010
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 3
    Par défaut
    Un énorme merci pour ta réponse sinok;
    Effectivement, avec l'exemple disponible sur le site que tu as proposé : http://code.google.com/p/jsyntaxpane/, c'est un jeu d'enfant de créer son propre éditeur avec coloration syntaxique. J'adorais les projets open source pour leur Doc, l'esprit des auteurs, et la clarté du code, ce genre de projets confirme mon impression.
    Un exemple est disponible sur le site, mais ne "marche" pas directement. Une correction rapide, pour tous les futurs intéressés :
    1)il faut télécharger la librairie, et l'ajouter à votre projet créé
    2) Voici le code (pour les newbies : il faut créer une classe "SyntaxTester " dans votre nouveau projet) :
    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
     
    import java.awt.BorderLayout;
    import java.awt.Container;
     
    import javax.swing.JEditorPane;
    import javax.swing.JFrame;
    import javax.swing.JScrollPane;
    import javax.swing.WindowConstants;
     
    import jsyntaxpane.DefaultSyntaxKit;
     
    public class SyntaxTester extends JFrame{
     
        public static void main(String[] args) {
            java.awt.EventQueue.invokeLater(new Runnable() {
     
                @Override
                public void run() {
                    new SyntaxTester();
                }
            });
        }
     
        public SyntaxTester() {
            JFrame f = new JFrame("Editeur de texte");
            final Container c = f.getContentPane();
            c.setLayout(new BorderLayout());
     
            DefaultSyntaxKit.initKit();
     
            final JEditorPane codeEditor = new JEditorPane();
            JScrollPane scrPane = new JScrollPane(codeEditor);
            c.add(scrPane, BorderLayout.CENTER);
            c.doLayout();
            codeEditor.setContentType("text/sql");
            codeEditor.setText("SELECT * from TABLE1;\n--Commentaire\n");
     
            f.setSize(800, 600);
            f.setVisible(true);
            f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
     
        }
    }
    Comme vous le remarquerez, j'ai mis par défaut la coloration pour SQL.
    Pour mes besoins, je dois ajouter de nouveaux mots clés pour cet éditeur, la procédure est expliquée dans le site en haut, mais voici une explication rapide pour les non initiés :
    1)Télécharger JFlex, et Dézipper le package
    2)Prendre le fichier sql.flex du projet jsyntaxpane, il faudra le télécharger. Il est disponible au côté d'un paquet d'autres langages : java, ruby, bash et j'en passe.
    3)repérer la section des mots clés, et y ajouter les nouveaux comme : "transaction" ou autre.
    4)Exécuter le : JFlex.jre du dossier lib\ de votre paquet JFlex. Cette application graphique prends un fichier de spécifications lexicales, et vous choisissez le dossier de sortie. Rien de plus simple.
    En suivant ces étapes vous aurez votre fichier lexical. Vous pouvez ainsi le mettre dans un .jar (générer avec maven) ou autre .zip (si quelqu'un est intéressé je lui explique cette méthode parce que c'est du bricolage lol) et vous l'ajouter comme bibliothèque à l'exemple en haut.
    De cette manière j'ai pu rajouter le mot clé "TRANSACTION" à ce syntaxe pane, et ainsi atteindre mon objectif d'en haut.

    Un énorme merci pour sinok pour ce judicieux conseil, tu m'as vraiment aidé à débloquer cette situation. Une aide inestimable, pour moi et je sais que ça servira à d'autres (surtout pour ceux qui cherche un éditeur avec coloration personnalisé).
    Sayyounara tout le monde, en ce qui me concerne ce sujet est résolu, mais d'autres conseils inspirés sont toujours les bienvenus .

  6. #6
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut
    Bonjour,
    D'abord Je vous remercie pour ton tuto. je fais presque la meme chose que vous, pour l'instant j'utilise JTexArea comme console. j'ai suivi votre tuto sauf que je ne retrouve pas le fichier sql.flex du projet jsyntaxpane dans le jar que j'ai telechargé. dans paquet de jsyntaxpane, je ne vois que des fichier .properties.

    pouvez-vous me dire où je vous recuperer le sql.flex (dans le package flex je n'ai rien trouvé)

    merci

  7. #7
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 19
    Par défaut
    C'est bon j'ai réussi à récupérer la source et j'ai claquer de nouveau avec maven. je n'ai plus besoin de coder tout seul les écouteurs de JTextArea pour la reconnaissance des commande sql et autres.

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

Discussions similaires

  1. Propre console java pour serveur
    Par rXpCH dans le forum Interfaces Graphiques en Java
    Réponses: 4
    Dernier message: 12/10/2010, 14h43
  2. Créer son propre framework MVC Java
    Par zangets dans le forum Frameworks Web
    Réponses: 2
    Dernier message: 03/05/2010, 16h24
  3. Un très bon livre sur comment bien concevoir son interface graphique en Java ?
    Par mlle lain dans le forum Interfaces Graphiques en Java
    Réponses: 3
    Dernier message: 09/04/2010, 17h23
  4. Creér ma propre console pour manipuler JBPM?
    Par Simply Smart dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 19/03/2008, 18h12

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