Eclipse Plug-In Entwicklung mit Java und Progress 4GL Mike Fechner PUG JHV 2006 10. Mai 2006, Frankfurt a.M. Agenda • Shorthand Syntax dyn. Datenzugriff • • • • External Tools Eclipse Plug-Ins Progress 4GL Plug-Ins Java Plug-In Entwicklung Eclipse Plugin Entwicklung mit Java und Progress 4GL 2 Shorthand Syntax dyn. Datenzugriff • hProDataset::Tabelle::Feld • hBuffer::Feldname • z.B.: phRowObjUpd::RowMod in assignDBRow • alternativ: hProDataset:GET-BUFFERHANDLE(„Tabelle“):BUFFERFIELD(„Feldname):BUFFER-VALUE • hTempTable:DEFAULT-BUFFERHANDLE:BUFFER-FIELD(„FeldName“):BUFFERVALUE Eclipse Plugin Entwicklung mit Java und Progress 4GL 3 Shorthand Syntax dyn. Datenzugriff • hProDataset oder hBuffer müssen ein Handle sein • Tabelle, Buffer und Feld eine Konstante • Evaluierung erfolgt zur Laufzeit • BUFFER-VALUE kann ausgelesen werden und gesetzt werden • typisiert Eclipse Plugin Entwicklung mit Java und Progress 4GL 4 Agenda • Shorthand Syntax dyn. Datenzugriff • • • • External Tools Eclipse Plug-Ins Progress 4GL Plug-Ins Java Plug-In Entwicklung Eclipse Plugin Entwicklung mit Java und Progress 4GL 5 External Tools • einfache Möglichkeit Eclipse durch eigene Funktionalität zu erweitern (ohne Code) • • • • externe Compiler externe Editoren Systemtools (z.B. Dienste) Progress Tools (Progress Explorer, Promon) • Kontext zur aktuell bearbeiteten Resource möglich • selektiver Refresh der Workspaces nach Ausführung möglich • Eclipse Konsole kann verbunden werden Eclipse Plugin Entwicklung mit Java und Progress 4GL 6 External Tools • Umgebungsvariablen für Zugriff auf Tool, Arbeitsverzeichnis, Umgebungsvariablen • • • • • Workspace Root Projektroot Absoluter/relativer Pfad zur aktuellen Resource Dateiname ... • Resource: Aktuell ausgewählte Datei • abgelegt in Workspace oder .launch Datei (Team-fähigkeit) Eclipse Plugin Entwicklung mit Java und Progress 4GL 7 Demonstration • Erzeugen von .xsd (XML Schema Definition) aus ProDataset Definition • Erzeugen einer C# Klasse für .xsd File Eclipse Plugin Entwicklung mit Java und Progress 4GL 8 Agenda • Shorthand Syntax dyn. Datenzugriff • • • • External Tools Eclipse Plug-Ins Progress 4GL Plug-Ins Java Plug-In Entwicklung Eclipse Plugin Entwicklung mit Java und Progress 4GL 9 Eclipse Plug-Ins • Plug-Ins erweitern die Funktionalität von Eclipse • Plug-Ins erweitern die Funktionalität anderer Plug-Ins • Elementarer Bestandteil der Architektur Eclipse Plugin Entwicklung mit Java und Progress 4GL 10 Eclipse Architektur • Eclipse läuft in Java JRE (javaw.exe) Plug-In Development Environment (PDE) Java Development Tools (JDT) Eclipse Plattform Eclipse Plugin Entwicklung mit Java und Progress 4GL 11 Eclipse Plattform • Laufzeit Umgebung • Plug-In Infrastruktur (Erweiterungspunkte) • Laden der Plug-Ins beim Start • Workspace • Projekte • Konfiguration im Dateisystem, Preferences • Oberfläche • SWT, Standard Widget Toolkit • Workbench • Editoren, Views, Perspektiven Eclipse Plugin Entwicklung mit Java und Progress 4GL 12 Plug-Ins • Java Klasse(n), erweitern Funktionalität • Manifest plugin.xml definiert • Abhängigkeiten und Erweiterungspunkte • Runtime Konfiguration (.jar Files, exports) • Plug-In Klasse • Typischer Weise werden Views oder Action Erweiterungen definiert Eclipse Plugin Entwicklung mit Java und Progress 4GL 13 Erweitertungspunkte • Plug-Ins definieren Erweitertungspunkte (Extension Points) • bereitstellen • nutzen = erweitern • API und Interfaces für Extension Points • z.B. Aktionen (Action contributions) • Buttons oder Kontext-Menüeinträge in Standardelementen (Resource View, Toolbar, Menüs, …) • z.B. Dateierweitertungen für Dateiauswahldialoge Eclipse Plugin Entwicklung mit Java und Progress 4GL 14 Features • „Verpacken“ einer Menge an Plug-Ins • Branding • About Box • Primäres Feature (z.B. OpenEdge Architect) • Schlüssel zum Update-Manager • Abhängigkeiten zu anderen Features • Bietet, Benötigt • Versionsangaben • mindestens • genau • gleichwertig Eclipse Plugin Entwicklung mit Java und Progress 4GL 15 Agenda • Shorthand Syntax dyn. Datenzugriff • • • • External Tools Eclipse Plug-Ins Progress 4GL Plug-Ins Java Plug-In Entwicklung Eclipse Plugin Entwicklung mit Java und Progress 4GL 16 Progress 4GL Plug-Ins • OpenEdge Architect nutzt eine 4GL Sitzung im Hintergrund, die beim Öffnen eines 4GL Projektes automatisch gestartet wird • Einbindung der 4GL Tools in Eclipse basiert auf • Socket-Kommunikation zwischen OpenEdge Runtime • Einem OpenEdge Runtime View, dass 4GL Windows hostet oder einbindet • oeideservice.p • Basis für eigene Komponenten im OpenEdge Architect Eclipse Plugin Entwicklung mit Java und Progress 4GL 17 Progress 4GL Plug-Ins • • • • einfache Implementierung reine 4GL Lösung beliebige Anzahl von eigenen Views _idestartup.p wird beim Start der OE Architect aufgerufen • Laden eigener Windows als persistent Procedures, z.B. beim Start • PROCEDURE ADEPersistent Eclipse Plugin Entwicklung mit Java und Progress 4GL 18 Progress 4GL Plug-Ins • • • • einfache Implementierung reine 4GL Lösung beliebige Anzahl von eigenen Views _idestartup.p wird beim Start der OE Architect aufgerufen • Laden eigener Windows als persistent Procedures, z.B. beim Start • PROCEDURE ADEPersistent Eclipse Plugin Entwicklung mit Java und Progress 4GL 19 Progress 4GL Plug-Ins, Anwendung • • • • Session Information (z.B. Persistent Procedures) Application Compiler, Build Tools Code-Generatoren Einbindung bestehender Tools, z.B. Administration • Progress Dynamics... Eclipse Plugin Entwicklung mit Java und Progress 4GL 20 Progress 4GL Plug-Ins, Nachteile • Message-Statements, lange Schleifen, etc. blockieren Kommunikation zwischen Eclipse und OE Runtime • Öffnen von Views geschieht aus 4GL und nicht der eigentlichen Oberfläche • begrenzter Zugriff auf das Eclipse Framework • Resizing unbefriedigend • inkonsistente Optik zu SWT basierenden Controls Eclipse Plugin Entwicklung mit Java und Progress 4GL 21 Progress 4GL Plug-Ins, Demonstration • Persistent Procedure Viewer • Internal Procedures • Progress API zum Einbetten von Fenstern Eclipse Plugin Entwicklung mit Java und Progress 4GL 22 Agenda • Shorthand Syntax dyn. Datenzugriff • • • • External Tools Eclipse Plug-Ins Progress 4GL Plug-Ins Java Plug-In Entwicklung Eclipse Plugin Entwicklung mit Java und Progress 4GL 23 Java Plug-Ins • Basis für die Plug-In Entwicklung sind die JDT: Java Development Tools • PDE, Plug-In Development Environment • • • • • • Wizzards für Plugins Templates (Views, Listen, Trees, Editoren) Templates, Wizzards für Actions Abhängigkeiten zu Plug-Ins definieren Dialog für Build Konfiguration und Manifest File Wizzards zum Exportieren (Build) • Oberflächendesign mit open source SWT (Standard Widget Toolkit) Eclipse Plugin Entwicklung mit Java und Progress 4GL 24 Java Plug-Ins • 1 Projekt pro Plugin • Testumgebung für Plug-Ins • Start einer Eclipse Umgebung zum Test • Java Debugger für Plug-Ins • Debuggen in Eclipse Umgebung • Weitere Wizzards, Templates • Features • Download Sites Eclipse Plugin Entwicklung mit Java und Progress 4GL 25 Java Plug-Ins für OE Architect • Kommunikation mit OpenEdge Runtime • Netzwerk Socket (text, xml, soap) • SonicMQ • bestehende Runtime oder separate für Multi-Threading • Kommunikation mit OpenEdge AppServer • • • • AppServer Proxy Web Services Sonic ESB WebSpeed Eclipse Plugin Entwicklung mit Java und Progress 4GL 26 Java Plug-Ins, Demonstration • Session Properties View • Netzwerk-Kommunikation zwischen Eclipse View und OpenEdge Runtime Eclipse Plugin Entwicklung mit Java und Progress 4GL 27