Announcement

Collapse
No announcement yet.

Edlipse Plugin mit einem Texteditor

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Edlipse Plugin mit einem Texteditor

    Ich bin Anfänger, was das Erstellen von Eclipse Plugins angeht, und habe ein problem, das ich bisher nciht lösen konnte.

    Und zwar hadere ich damit, was ich tun muss, um einen eigenen (Text)Editor zu erstellen und in das Plugin einzubinden.

    Ich habe zwar eine editorklasse geschrieben (diese erbt von org.eclipse.ui.editors.text.TextEditor), und noch ein paar mehr Sachen gemacht, aber es funktioniert noch nicht.

    Was ich also brauche wäre ein wenig Hilfe bei folgenden Punkten: Was genau brauche ich, um einen Texteditor zu bekommen, der erst einmal nichts kann ausser das, was der Eclipse Standardtexteditor kann, den ich aber noch erweitern kann (SourceCode highlighting einfügen z.b.). Wie muss ich die einzelnen Bausteine für diesen Editor verzahnen? Wie bekomme ich es hin, dass ich nach dem starten des Plugin auch unter "New" die Möglichkeit bekomme ein neues Dokument mit diesem Editor zu öffnen?

    Das Plugion hat übrigens, falls das wichtig ist eine eigene Perspektive mit nur 3 Bestandteilen: Dem Editorbereich, und 2 Views.

    Ich suche mittlerweile seit über 1 Woche diverse Foren, Wikis und FAQs durch, aber beantworten konnte meine Fragen keines davon, daher bin ich für jede Art von Hilfe dankbar.

  • #2
    http://www.eclipsepluginsite.com/editors.html

    schon gesehen?
    Christian

    Comment


    • #3
      Hi kempman,
      vor kurzem hatte ich ziemlich genau die gleiche Frage. Was mir geholfen hat war "The Java Developer`s guide to eclipse" (http://www.jdg2e.com/).
      Ansonsten würd ich dir gern weiterhelfen, aber dein Input ist ein wenig dürftig. Folgendes würd ich gern wissen:
      * Was möchtest du mit dem Texteditor machen?
      * Was für Resourcen möchtest du bearbeiten? Eclipse Workspace Resourcen oder beliebig auf dem Rechner vorhandene (IFile vs. FileStore)
      * Kann eclipse schon was mit dem FileFormat anfangen? (Wichtig für: SyntaxHighlighting, Partitioning, Outline etc)

      * Benötigst du einen eigenen EditorInput oder kannst du mit gegebenem Input arbeiten? (Ist ungefähr das gleiche wie "Kennt eclipse dein FileFormat)

      Und, sagen dir die Stichworte IEditorInput, IFile, FileStore, FileEditorInput etc. überhaupt was?

      Grüße,

      lukode

      Comment


      • #4
        Danmke erstmal für die schnelle Antwort, war leider heute Abend ausser Haus, sonst hätte ich eher antworten können.
        Den Guide werde ich mir morgen mal genauer anschauen.

        Dann zu deinen Fragen. Sry erstmal für den dürftigen input, ich wollte die Frage so allgemein halten, wie möglich eben weil ich nicht unterscheiden kann, was wichtig ist, was nicht.

        * Was möchtest du mit dem Texteditor machen?
        Der Editor soll simplen Text bearbeiten. Dasselbe könnte mana uch mit Wordpad z.b. machen, oder VI oder jedem beliebigen Minimaltexteditor.

        * Was für Resourcen möchtest du bearbeiten?
        Die beliebigen auf dem Rechner vorhandenen Files. Das soll Input für ein Analyseverfahren sein, dessen Ergebnisse das Plugin darstellen soll.

        * Kann eclipse schon was mit dem FileFormat anfangen?
        Hier weiss ich leider nicht worauf du hinaus willst. Ich vermute daher mal nur grob.
        Der Input für das ganze soll so ähnlich sein, wie Java Quellcode, aber vereinfacht. Für das Syntaxhighlighting könnte man 1:1 das von Java nehmen, aber ich wollte auch noch einen Teil der Ergebnispräsentation mit in den Editor einbinden (ähnlihc wenn man beim java-Code die Maus über eine Klasse hält, und dann dieses Fenster aufpoppt mit ein paar Informationen über die Klasse).
        Sollte deine Frage nicht darauf abgezielt haben: sry ^^

        * Benötigst du einen eigenen EditorInput oder kannst du mit gegebenem Input arbeiten?
        Ich brauche als Ergebnis aus dem Inhalt des Editorfensters einen puren String, der nichts enthält ausser dem Text und den Zeilenumbrüchen. Ich nehme an, dass Eclipse dieses Format kennt, aber sicher weiss ich das nicht...


        Und, sagen dir die Stichworte IEditorInput, IFile, FileStore, FileEditorInput etc. überhaupt was?
        Mancha ja, ohne im Detail verstanden zu haben was sie bedeuten, manche nein.

        IEditorInput - ja, sagt mir was., bin aber nicht sicher, ob ich wirklich verstanden habe was es bedeutet.

        IFile - sagt mir auch was, aber auch hier bin ich unsicher, ob ich es wirklich verstanden habe.

        FileStore und FileEditorInput hingegen sagen mir noch nichts.

        Comment


        • #5
          Originally posted by Christian Marquardt View Post
          Ja, gesehen, durchgearbeitet, aber die Fragen, die ich habe konnte das Beispiel auch nicht lösen.

          Comment


          • #6
            Hi kempman,
            so ähnlich stand ich auch da (und stehs vielleicht noch).
            Die fast wichtigste Frage, die ich noch vergessen habe:
            * Bindest du das Plugin in eine vollständige IDE ein oder schreibst du eine eigene RCP Anwendung?

            Darauf zielte die Frage ab, ob eclipse deinen Resourcentyp kennt. Eclipse kann z.B. eine .txt-Datei öffnen, wird dir dafür aber kein Syntax-Highlighting anbieten.
            Eclipse kann auch unbekannte Textdateiformate mit dem Standard Editor öffnen, aber auch dazu bekommst du kein Syntaxhighlighting oder eine Outline etc.

            Wenn es irgendwie geht, versuch das Buch, was ich dir empfohlen habe, zu bekommen. Da steht so einiges drin, was du wissen solltest. Habe es beim namhaften Internetauktionshaus für 2€ bekommen.

            Und des weiteren, wenn auf Basis der Textdatei zur Laufzeit ein Modell dafür aufbauen möchtest, schau dir vielleicht XText an.
            Aber erstmal sag mir, ob du eine eigene RCP Anwendung schreibst oder dein Plugin in eclipse einbinden möchtest, sonst schreib ich mir hier vielleicht die Finger Wund, ohne auf die richtigen Proleme einzugehen.
            Grüße, lukode

            Comment


            • #7
              Ich werde auf jeden Fall versuchen das Buch zu bekommen, und bis dahin das online-Angebot zu dem Buch mal durchforsten.

              Und zu deiner Frage: Das ganze soll ein Plugin für Eclipse werden, und keine RCP-Anwendung.

              Comment


              • #8
                Hi,
                okay. Dann könnte es für dich einfacher werden, als für mich.
                Dein Editor sollte mit deiner Dateiendung verknüpft werden. Den Kram mit IFileStore erledigt vermutlich eclipse für dich.
                Ich habe einen Extension von "org.eclipse.ui.editors" angelegt. Ich denke, das gleiche wirst du auch tun.
                Dein Editor leitet von TextEditor ab. Den verknüpfst du wie folgt:
                plugin.xml --> Reiter extensions --> org.eclipse.ui.editors --> dein editor --> rechte Seite: "extensions" --> deine Dateieindungen eintragen.

                Ich habe irgendwo mal gelesen, dass man das anders machen sollte, kann mich aber grad nicht dran erinnern, wo und wie. Sorry.Versuch das erstmal so. Ich hoffe, dass es klappt.

                Ansonsten kann ich dir nur nochmal xtext ans Herz legen, gerade weil du ja anscheindend noch mehr vor hast: Syntax Highlighting, Text Partitioning, etc.
                Für diese Dinge benötigtst du dann noch einige Verzahnungen: DocumentProvider, TextPartitioner etc.

                Viel Erfolg,
                lukode

                Comment


                • #9
                  So, das Buch habe ich jetzt hier und werde es mal durcharbeiten. Gross genug ist es ja ^^

                  XText funktioniert bei mir leider nicht. Benötigt das vielleicht Eclipse Helios? Ich arbeite nämlich noch mit Galileo, und da bekomme ich immer, wenn ich es installieren will eine Fehlermeldung.

                  plugin.xml --> Reiter extensions --> org.eclipse.ui.editors --> dein editor --> rechte Seite: "extensions" --> deine Dateieindungen eintragen.
                  Habe ich bereits gemacht.
                  Aber ein neues Dokument anlegen kann ich trotzdem nicht, manchmal wirft er mit beim öffnen von Dokumenten des genannten Typs (simples .txt) Fehler usw.


                  Achja, und noch 1 Frage, die du mir vielleicht beantworten kannst:
                  Was muss ich tun, um das Editorfenster auszulesen, und den Inhalt in einen String zu verwandeln?

                  Comment


                  • #10
                    Originally posted by kempman View Post
                    Was muss ich tun, um das Editorfenster auszulesen, und den Inhalt in einen String zu verwandeln?
                    Hmm, okay, du möchtest also doch schon tiefer rein. Dafür musste ich mich mit dem IDocument auseinandersetzen. Der AbstractTexteditor arbeitet letztendlich auf einem Object von IDocument. Der TextEditor wiederum arbeitet auf Workspace-Resourcen und erwartet einen IFileEditorInput (S.497 in dem Buch).
                    Ich habe keinen anderen Weg gefunden als über das IDocument eigenständig zu arbeiten, sprich dieses auslesen.
                    Das kriegst du aus dem Editor:
                    editor.getDocumentProvider().getDocument(editor.ge tEditorInput()).
                    Über get() kriegst du aus dem Document den gesamten Inhalt als String.
                    Viel Spaß beim parsen.

                    Ich selbst hab Xtext grad erst aufgesetzt, um das eigenständige parsen und aufbauen eines Modells sein zu lassen. Wenn ich damit erfolg hatte, kann ich dir weiterhelfen. Aber Vorteile, die es bringt, um die du dich bestimmt irgendwann kümmern möchtest, weil du über XText Editor für deine "Sprache" bekommen kannst:
                    * Syntax Highlighting
                    * Document Partitioning
                    * Content Assist
                    * Content Outline
                    Arbeite selbst mit Helios und würds dir auch empfehlen .

                    cya, lukode.
                    P.S. hast das buch ja ganz schön schnell bekommen

                    Comment


                    • #11
                      Danke für die Erläuterung. So komme ich wenigstens schonmal an der Stelle ein Stückchen weiter. Das parsen etc. des Strings ist das geringste problem, das hab ich alles schon fertig programmiert ^^

                      Ja, das mit dem Buch ging schnell... ULB sei dank, die hatten 1 Exemplar zum Ausleihen vorrätig.

                      Xtext würde ich ja gerne benutzen, aber mir wird langsam die Zeit knapp mit meinem Projekt, daher will ich nciht das Risiko eingehen, dass das was derzeit funktioniert unter Helios auf mal nicht mehr tut.

                      Comment


                      • #12
                        Nochmal nachgefragt:

                        Originally posted by luko.de.be View Post
                        Das kriegst du aus dem Editor:
                        editor.getDocumentProvider().getDocument(editor.ge tEditorInput()).
                        Über get() kriegst du aus dem Document den gesamten Inhalt als String.
                        Viel Spaß beim parsen.
                        So weit, so gut. Aber wie bekomme ich das gerade aktive Editorfenster?
                        Bzw. was genau ist editor in der Befehlskette da oben?

                        Comment


                        • #13
                          ich habe den "editor" als platzhalter für dein editor-objekt eingesetzt. Da du selbst einen editor ableitest, könntest du innerhalb der klasse eine methode getDocumentAsString() schreiben. In der machst du dann das obige.
                          Ich versteh aber nicht ganz, was du außerhalb des Editors mit dem String machen möchtest. Ich würd eher einen EditorInput schreiben, der mit dem String arbeitet. Und/Oder einen eigenen DocumentProvider. Das wär dann innerhalb des Kontexts für sich abgeschlossen und würde vor allem dazu führen, dass der geparste String und alles, was du damit machst beim schließen des Editors durch das Verwerfen des Inputs ebenfalls verworfen wird.

                          Aber, von außen an das aktuelle Editorfenster kommst du z.B mit:
                          Code:
                              IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
                              IWorkbenchPage page = window.getActivePage();
                              IEditorPart editor = page.getActiveEditor();
                          Viel Erfolg

                          Comment


                          • #14
                            Danke erstmal für die vielen Hilfestellungen.
                            Es ist zwar noch nciht alles fertig, was mit dem Editor zusammenhängt, aber mittlerweile funktioniert das wesentlichste: Das Auslesen des Editorinhalts, die Analyse und die RÜckgabe der Ergebnisse.

                            Achja, und warum ich den String ausserhalb des Editors brauche?
                            Ganz einfach: Der Inhalt des editors, also der String ist die Eingabe für meine Analyse. Sprich wenn der Button gedrückt wird,d er die Analyse startet muss ich den Editorinhalt auslesen, und den String der analysierenden Methode übergeben.

                            Comment


                            • #15
                              Hey, immer wieder gern. Hab mich mit dem Thema auch sehr lange beschäftigen müssen und bin noch immer nicht auf dem sichersten Stand.
                              Die Frage zu deinen Dingen außerhalb ist doch, ob du das Analysemodell noch immer vorrätig haben möchtest, nachdem dein Editor geschlossen wurde.
                              Aber weiterhin viel Erfolg.

                              Comment

                              Working...
                              X