Migration einer bestehenden Applikation nach e4

dzim

Top Contributor
Hallo zusammen,

ich hätte sicher tausend Sachen, die ich noch gern machen würde, wie z.B. EMF, xText, und neue Appkikationen auf Basis von e4 erstellen, aber zunächst einmal möchte ich mich daran versuchen eine bestehende Anwendung auf e4 Laufen zu bringen.

Ich habe mir einen älteren Blogeintrag (11.2010) herausgesucht, der das zum Thema hatte und es einmal ausprobiert:

1) Kopieren der Legacy.e4xmi in meine Anwendung.

2) Anpassen dieser Datei, so dass sie das Menü und die Toolbar enthält. Sowie den Perspective Stack natürlich.
Code:
<?xml version="1.0" encoding="ASCII"?>
<application:Application xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:advanced="http://www.eclipse.org/ui/2010/UIModel/application/ui/advanced" xmlns:application="http://www.eclipse.org/ui/2010/UIModel/application" xmlns:basic="http://www.eclipse.org/ui/2010/UIModel/application/ui/basic" xmlns:menu="http://www.eclipse.org/ui/2010/UIModel/application/ui/menu" xmi:id="org.eclipse.e4.legacy.ide.application" elementId="org.eclipse.e4.legacy.ide.application" bindingContexts="_SeXUHO8EEd6BC9cDb6iV7y">
  <children xsi:type="basic:TrimmedWindow" xmi:id="_xXmqQJ1-EeCU_Zqrapwoxg" elementId="PCPWindow" label="PFS Customer Platform" iconURI="platform:/plugin/com.ipoque.p2p.tracker.rcp.pfs.ssdtool/icons/ipqlogo_16.gif" width="1024" height="768">
    <children xsi:type="advanced:PerspectiveStack" xmi:id="_foJJcJ1_EeCU_Zqrapwoxg">
      <children xsi:type="advanced:Perspective" xmi:id="_wVcQYJ2DEeCU_Zqrapwoxg" elementId="com.ipoque.p2p.tracker.rcp.pfs.ssdtool.ui.reportConfigurationPerspective" label="PFS Customer Perspective" iconURI="platform:/plugin/com.ipoque.p2p.tracker.rcp.pfs.ssdtool/icons/ipqlogo_16.gif"/>
    </children>
    <mainMenu xmi:id="_3qoukJ1-EeCU_Zqrapwoxg" elementId="menu:org.eclipse.ui.main.menu"/>
    <trimBars xmi:id="_JqHy8J1_EeCU_Zqrapwoxg">
      <children xsi:type="menu:ToolBar" xmi:id="_OpDyIJ1_EeCU_Zqrapwoxg" elementId="toolbar:org.eclipse.ui.main.toolbar"/>
    </trimBars>
  </children>
  <handlers xmi:id="_UW9TY_r3Ed6gmo7caOxU9g" elementId="_UW9TY_r3Ed6gmo7caOxU9g" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.ExitHandler" command="e4.exit"/>
  <handlers xmi:id="_BESTZfr3Ed6gmo7caOxU04" elementId="_BESTZfr3Ed6gmo7caOxU04" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.internal.workbench.swt.handlers.ShowViewHandler" command="e4.show.view"/>
  <handlers xmi:id="_eTBRgAFSEd-Z8rQksLwRYw" elementId="org.eclipse.e4.ui.saveHandler" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.handlers.SaveHandler" command="_jR5mUAFSEd-Z8rQksLwRYw"/>
  <handlers xmi:id="_eTBRgAFSEd-Z8rQksLwRYx" elementId="org.eclipse.e4.ui.saveAllHandler" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.handlers.SaveAllHandler" command="_jR5mUAFSEd-Z8rQksLwRYx"/>
  <bindingTables xmi:id="_SeXUEO8EEd6FC9cDb6iV7x" bindingContext="_SeXUHO8EEd6BC9cDb6iV7y">
    <bindings xmi:id="_UW9TZfr3Ed6gmo7caOxU9g" elementId="_UW9TZfr3Ed6gmo7caOxU9g" keySequence="CTRL+Q" command="e4.exit"/>
    <bindings xmi:id="_oRr6EAFSEd-Z8rQksLwRYw" elementId="_oRr6EAFSEd-Z8rQksLwRYw" keySequence="CTRL+S" command="_jR5mUAFSEd-Z8rQksLwRYw"/>
    <bindings xmi:id="_oRr6EAFSEd-Z8rQksLwRYx" keySequence="CTRL+SHIFT+S" command="_jR5mUAFSEd-Z8rQksLwRYx"/>
  </bindingTables>
  <rootContext xmi:id="_SeXUHO8EEd6BC9cDb6iV7y" elementId="org.eclipse.ui.contexts.dialogAndWindow" name="In Dialog and Windows">
    <children xmi:id="_SeXUEO8EEd6FC9cDb6iV7w" elementId="org.eclipse.ui.contexts.window" name="In Windows">
      <children xmi:id="_SeXUEO8EEd6FC9cDb6yV7x" elementId="org.eclipse.e4.ui.contexts.views" name="In Binding View"/>
    </children>
    <children xmi:id="_SeXUEO8EEd6FC9cDb6iV7x" elementId="org.eclipse.ui.contexts.dialog" name="In Dialogs"/>
  </rootContext>
  <commands xmi:id="e4.exit" elementId="e4.exit" commandName="Exit" description=""/>
  <commands xmi:id="e4.show.view" elementId="e4.show.view" commandName="Show View">
    <parameters xmi:id="_oRr6EAFSEd-Z8rQksLwRYz" elementId="org.eclipse.ui.views.showView.viewId" name="View"/>
  </commands>
  <commands xmi:id="_jR5mUAFSEd-Z8rQksLwRYw" elementId="org.eclipse.e4.ui.saveCommands" commandName="Save"/>
  <commands xmi:id="_jR5mUAFSEd-Z8rQksLwRYx" elementId="org.eclipse.e4.ui.saveAllCommands" commandName="Save All"/>
  <addons xmi:id="_XGB3wPZlEd-XstlTZ6nTXg" elementId="org.eclipse.e4.core.commands.service" contributionURI="platform:/plugin/org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
  <addons xmi:id="_XGB3wPZlEd-XstlTZ6nTXh" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="platform:/plugin/org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
  <addons xmi:id="_XGB3wPZlEd-XstlTZ6nTXi" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="platform:/plugin/org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>
  <addons xmi:id="_LK0NgPZmEd-XstlTZ6nTXj" elementId="org.eclipse.e4.ui.workbench.commands.model" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.CommandProcessingAddon"/>
  <addons xmi:id="_LK0NgPZmEd-XstlTZ6nTXk" elementId="org.eclipse.e4.ui.workbench.contexts.model" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench/org.eclipse.e4.ui.internal.workbench.addons.ContextProcessingAddon"/>
  <addons xmi:id="_LK0NgPZmEd-XstlTZ6nTXl" elementId="org.eclipse.e4.ui.workbench.bindings.model" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench.swt/org.eclipse.e4.ui.workbench.swt.util.BindingProcessingAddon"/>
  <addons xmi:id="_XwQYkE2EEd-DfN2vYY4Lew" elementId="Cleanup Addon" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.cleanupaddon.CleanupAddon"/>
  <addons xmi:id="_bqcWME2EEd-DfN2vYY4Lew" elementId="DnD Addon" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.dndaddon.DnDAddon"/>
  <addons xmi:id="_7GC6sGp-Ed-QyNZjH9g15Q" elementId="MinMax Addon" contributionURI="platform:/plugin/org.eclipse.e4.ui.workbench.addons.swt/org.eclipse.e4.ui.workbench.addons.minmax.MinMaxAddon"/>
</application:Application>
3) CSS und images spassenshalber kopiert.

4) plugin.xml angepasst, um die CSS zu registrieren und das Produkt anzupassen
Code:
...
   <extension
         id="product"
         point="org.eclipse.core.runtime.products">
      <product
            application="myrcp.application"
            name="My RCP">
         <property
               name="windowImages"
               value="icons/ipqlogo_16.gif,icons/ipqlogo_32.gif,icons/ipqlogo_64.gif,icons/ipqlogo_128.gif">
         </property>
         <property
               name="appName"
               value="My RCP">
         </property>
         <property
               name="preferenceCustomization"
               value="plugin_customization.ini">
         </property>
         <property
               name="startupForegroundColor"
               value="000000">
         </property>
         <property
               name="startupMessageRect"
               value="100,20,350,20">
         </property>
         <property
               name="startupProgressRect"
               value="100,40,350,15">
         </property>
         <property
               name="aboutImage"
               value="icons/ipqlogo_128.gif">
         </property>
         <property
               name="applicationXMI"
               value="org.eclipse.platform/LegacyIDE.e4xmi">
         </property>
         <property
               name="cssTheme"
               value="org.eclipse.e4.ui.css.theme.e4_default">
         </property>
         <property
               name="applicationCSSResources"
               value="platform:/plugin/myrcp.pfs.ssdtool/images/">
         </property>
      </product>
   </extension>
...
   <extension
         point="org.eclipse.e4.ui.css.swt.theme">
      <theme
            basestylesheeturi="css/e4_default.css"
            id="org.eclipse.e4.ui.css.theme.e4_default.noos"
            label="Default Theme">
      </theme>
      <theme
            basestylesheeturi="css/e4_classic_winxp.css"
            id="org.eclipse.e4.ui.css.theme.e4_classic"
            label="Classic">
      </theme>
      <theme
            basestylesheeturi="css/e4_default_gtk.css"
            id="org.eclipse.e4.ui.css.theme.e4_default"
            label="GTK"
            os="linux">
      </theme>
      <theme
            basestylesheeturi="css/e4_default_mac.css"
            id="org.eclipse.e4.ui.css.theme.e4_default"
            label="Mac"
            os="macosx">
      </theme>
      <theme
            basestylesheeturi="css/e4_default_win7.css"
            id="org.eclipse.e4.ui.css.theme.e4_default"
            label="Win7"
            os="win32"
            os_version="6.1">
      </theme>
      <theme
            basestylesheeturi="css/e4_default_winxp_blu.css"
            id="org.eclipse.e4.ui.css.theme.e4_default"
            label="Win XP Blue"
            os="win32">
      </theme>
      <theme
            basestylesheeturi="css/e4_default_winxp_olv.css"
            id="org.eclipse.e4.ui.css.theme.e4_default.xpolive"
            label="Win XP Olive"
            os="win32">
      </theme>
      <theme
            basestylesheeturi="css/e4_classic_win7.css"
            id="org.eclipse.e4.ui.css.theme.e4_classic"
            label="Win 7 Classic"
            os="win32"
            os_version="6.1">
      </theme>
      <theme
            basestylesheeturi="css/e4_default_gtk.css"
            id="org.eclipse.e4.ui.css.theme.e4_default"
            label="Solaris"
            os="solaris">
      </theme>
      <theme
            basestylesheeturi="css/e4_default_gtk.css"
            id="org.eclipse.e4.ui.css.theme.e4_default"
            label="AIX"
            os="aix">
      </theme>
      <theme
            basestylesheeturi="css/e4_classic_winxp.css"
            id="org.eclipse.e4.ui.css.theme.e4_default"
            label="HPUX"
            os="hpux">
      </theme>
   </extension>
...
5) neues product angelegt und IMHO alle dependencies hinzugefügt (also wenn ich jetzt "add required plugins" drücke, kommt nichts neues mehr hinzu).

6) Programm gestartet............... CRASH!?

Das Programm zeigt kurz den Splash-Screen, ich sehe auch eine der Log-Meldungen des Activators, dann aber beendet sich das Programm ohne weitere Meldungen. Keine Exceptions. Nichts. Ich kann auch nicht verifizieren, ob die JVM abgestürzt ist, da keine der typischen Files im meinem Home-Verzeichnis liegen.

Das ist nicht sehr hilfreich. Weder für mich, noch für euch, aber vielleicht habt ihr das ja schon mal hin bekommen und könnt mir Tips geben. Ansonsten - mal sehen, vielleicht antwortet ja der Blogger noch mal - ich hab da auch schon einen Kommentar hinterlassen ;-)

Wie auch immer: Danke im voraus!
Daniel
 

dzim

Top Contributor
Hi krazun,

ich möchte nicht in 3.x die Möglichkeiten des e4 Modells benutzen.
Ich möchte umgekehrt meine bestehende 3.x Anwendung in 4.1 laufen lassen.
Den Artikel kannte ich schon.

Ich habe bislang herausgefunden, dass ich och diverse Abhängigkeiten erfüllen muss:
1) equinox.ds
2) equinox.event
und noch ein paar weitere.

Aber, nachdem meine Anwendung grob lief, nur die Toolbar/PerspectiveStack mehrfach vorhanden war, bekomme ich jetzt folgenden Fehler:

Code:
!ENTRY org.eclipse.e4.ui.workbench 4 0 2011-06-24 15:50:46.507
!MESSAGE Unable to create class 'org.eclipse.ui.internal.StandardTrim' from bundle '55'
!STACK 0
org.eclipse.e4.core.di.InjectionException: java.lang.NullPointerException
        at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:63)
        at org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:828)
        at org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:108)
        at org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:310)
        at org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:250)
        at org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:177)
        at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:93)
        at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:64)
        at org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:49)
        at org.eclipse.e4.ui.workbench.renderers.swt.ToolControlRenderer.createWidget(ToolControlRenderer.java:58)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:858)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:612)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:714)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$2(PartRenderingEngine.java:685)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:679)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:664)
        at org.eclipse.e4.ui.workbench.renderers.swt.SWTPartRenderer.processContents(SWTPartRenderer.java:59)
        at org.eclipse.e4.ui.workbench.renderers.swt.TrimBarRenderer.processContents(TrimBarRenderer.java:151)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:624)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$6.run(PartRenderingEngine.java:501)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:486)
        at org.eclipse.e4.ui.workbench.renderers.swt.WBWRenderer.processContents(WBWRenderer.java:572)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:624)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:714)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$2(PartRenderingEngine.java:685)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$7.run(PartRenderingEngine.java:679)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:664)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:930)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:885)
        at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:87)
        at org.eclipse.ui.internal.Workbench$3.run(Workbench.java:539)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:519)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at com.mycompany.rcp.pfs.ssdtool.SSDToolApplication.start(SSDToolApplication.java:123)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:344)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
        at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Caused by: java.lang.NullPointerException
        at org.eclipse.ui.internal.StandardTrim.createStatusLine(StandardTrim.java:81)
        at org.eclipse.ui.internal.StandardTrim.createWidget(StandardTrim.java:39)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
        ... 51 more

Ich davon mal abgesehen, dass ich den PerspectiveStack eigentlich nicht sehen will, sträubt sich die Legacy-Anwendung noch.
 

dzim

Top Contributor
Ich hab vorher den PerspectiveStack auf invisible gesetzt. Warum auch immer, aber dadurch werden die Toolbar-Items nicht ausgelöst. Der Perspective-Switcher bleibt aber.

Ich habe auch noch beispielhaft eines meiner Plugins hinzugefügt, dass ich in dem View, der dafür zuständig ist, ein paar Aktionen triggern kann. Jetzt öffnen sich aber keine Editoren. Woran das nun schon wieder liegt...
 
T

tomsontom

Gast
Es gibt bei Eclipse 4.x auch Dependencies welche NICHT über Requires aufgelöst werden können (z.b. equinox.ds, renderers.swt) welche durch das Design der Eclipse 4.x Application Platform zu stande kommen.

Bitte stell deine Frage auf der Eclipse Newsgroup (Eclipse Community Forums: Welcome to the forum), dann helfen wir dir gerne weiter deine Anwendung zum Laufen zu bringen!

Tom Schindl
 

dzim

Top Contributor
Etwas verspätet, aber ich möchte euch zweien danken!

Ich les' immer schön regelmäßig eure Blog-Einträge und freu mich immer wieder, wenn auch nur irgend eine Kleinigkeit bei mir Hängen bleibt!

@Tom: Ich bin gerade (wieder einmal) sehr versucht, mich mit deinem e(fx)clipse näher zu beschäftigen! Jedenfalls denke ich, dass man bei dem ein oder anderen ausgewählten Anwendungsfall mal JFX in die SWT-Anwendung integrieren könnte (ok, dann aber wahrscheinlich ohne e(fx)clipse - ich denke nicht, dass man die FXMLs einfach so an der Stelle, wo man sie im SWT brauchen könnte, nachladen kann - oder doch?)
Es freut mich jedenfalls, dass es das Ganze jetzt endlich auch für Linux gibt!
Mac hab (und will ;-) ) ich nicht und mein Windows Vista ist mir zu lahm und mir fehlen dann meine virtuellen Arbeitsflächen...

@Lars: Was mich hier interessieren würde ist, ob man beides vermischen kann - also Compatibility und neuen Ansatz?
Hintergrund der Frage ist, dass ich fast alleine die bisherige Anwendung und alle (Extension-Point-basierten) Plugins geschrieben habe - der Aufwand, um das alles nach e4 zu portieren - nicht abzuschätzen (ca. 100000 Zeilen möchte ich nicht durchgehen - zumal hier einige Teile sehr unorthodox/unsauber/etc. geschrieben sind...).
Ich würde nur gerne wissen, wenn ich jetzt ein Plugin in der neuen e4-Weise schreibe (über die Fragmente, oder wie die Beschreibung der UI dann heißt), ob ich die immer noch wie gewohnt über Extension-Points in meiner Anwendung integrieren kann, zumal die Anwendung ja eben noch Old-Fashion e3.x ist und nur über das default-Application-Model geladen wird.
 

vogella

Bekanntes Mitglied
Du kannst auf jeden Fall das Comp-Layer nutzen, dann geht aber DI nicht automatisch. Tom hat das das Forward Layer entwickelt, das müßtest Du Dir mal anschauen. Was im Comp-Layer standard mässig geht, ist das CSS Styling.

Ich persönlich würde nicht mischen, hoffentlich hast Du Core und UI sowieso in getrennten Plug-ins dann sollte der Grad der Wiederverwendung relativ hoch sein. Toll an Eclipse 4 ist, daß Du jetzt Funktionalität als OSGi Service injecten kannst, d.h. Du kannst Deine Applikaton noch besser modularisieren.
 

dzim

Top Contributor
Also ich wollte auf keinen Fall in alten Plugins jetzt anfangen, auch DI reinzubringen - entweder ganz, oder gar nicht.
Der Gedanke, den ich dabei schon einmal gesponnen hatte, war, dass ich die Kernanwendung (das Ding, das den Extension-Point bereit stellt), auf e4 portiere. die bestehenden Plugins bleiben dann erst einmal wie sie sind und laufen im Kompatibilitätsmodus, neue dagegen werden von Grund auf mit e4-Mitteln geschrieben.

Mit vermischen meinte ich hier also vielmehr, dass ich gleichzeitig Plugins verwende, die noch in e3.x geschrieben sind und aber auch daneben neue auf e4-Basis betreibe. (Etwas doppelt gemoppelt geschrieben, aber ich hoffe, du verstehst, worauf ich hinaus will.)

Daniel
 
G

Gast2

Gast
Du kannst auf jeden Fall das Comp-Layer nutzen, dann geht aber DI nicht automatisch. Tom hat das das Forward Layer entwickelt, das müßtest Du Dir mal anschauen. Was im Comp-Layer standard mässig geht, ist das CSS Styling.

Ich persönlich würde nicht mischen, hoffentlich hast Du Core und UI sowieso in getrennten Plug-ins dann sollte der Grad der Wiederverwendung relativ hoch sein. Toll an Eclipse 4 ist, daß Du jetzt Funktionalität als OSGi Service injecten kannst, d.h. Du kannst Deine Applikaton noch besser modularisieren.

Hi Lars,

ist das e4 überhaupt schon soweit ausgereift, dass es für Produktionsanwendungen eingesetzt werden kann?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Problem bei Einbinden einer DLL in Java-Projekt Plattformprogrammierung 4
D IPerspectiveFactory in einer e4 application Plattformprogrammierung 2
B Entwicklung einer Webplattform Plattformprogrammierung 1
maestr0 WorkingSets mit Komma getrennt in einer ComboBox anzeigen lassen Plattformprogrammierung 2
Mike90 Error beim Öffnen einer RCP-App Plattformprogrammierung 2
W SWTException beim Schließen einer ViewPart Plattformprogrammierung 13
dzim RCP Überführen einer RCP-Anwendung nach RAP Plattformprogrammierung 11
X Teile einer p2 UpdateSite mit b3 aggregator spiegeln Plattformprogrammierung 4
S RCP name einer view ändern Plattformprogrammierung 2
Mike90 RCP 2Views und einer davon als Placeholder Plattformprogrammierung 4
T Expression Definitions in einer RCP Plattformprogrammierung 3
L RCP Canvas in einer View? Plattformprogrammierung 4
M Eclipse RCP: überflüssige Icons in einer Toolbar Plattformprogrammierung 6
F Eclipse Plugin - Rückgabewert einer Methode Plattformprogrammierung 4
dzim Kontrolliertes Beenden einer Application Plattformprogrammierung 7
S In einem Plugin main einer anderen Klasse aufrufen Plattformprogrammierung 18
C RCP: Veraenderungen innerhalb einer View per Extension?! Plattformprogrammierung 7
K TextFeld in einer ToolBar Plattformprogrammierung 2
K Position einer Multiple View speichern Plattformprogrammierung 6
dzim Implementieren einer Help-Seite Plattformprogrammierung 18
S Literatur: Kennt einer ein gutes RCP Buch Plattformprogrammierung 13
R SWT: nur eine Instanz einer View erlauben Plattformprogrammierung 5
T Plugin eines bestehenden Editors hinzufügen Plattformprogrammierung 2

Ähnliche Java Themen


Oben