Autor Thema: Composite Application: aus Notes Application 8.5 SWT-GUI aufrufen  (Gelesen 7985 mal)

Offline Ahuga

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
Hallo zusammen, ich beschäftige mich mit folgender Problemstellung :

Ziel:
In einer View (könnte auch ein anderes Element sein) einer Notes Anwendung werden alle Kunden aufgelistet. Wenn ich die Zeile eines Kunden antippe werden in einem anderen Fenster (SWT-GUI im Expeditor erstellt) die Daten zu diesem Kunden angezeigt. Diese Daten werden aufgrund eines SQL-Befehles aus einer Derby- oder DB2 Datenbank geladen.

Ausgangslage:
Ich habe im Expeditor zwei SWT-GUI’s erstellt, welche genau den oben geschilderten Vorgang abbilden: Selektion in SWT-GUI 1 -> Laden der Daten aus Derby DB -> Darstellung der Daten in SWT-GUI 2.
Wenn ich die im Expeditor erstellte Anwendung starte, dann werden im Notes Client die beiden SWT-GUI’s als Rich Client Application geöffnet und der Datenaustausch funktioniert.

Fragestellung:
Wie kann ich SWT-GUI 2 in eine bestehende Composite Applikation einbauen, damit die aus der Derby DB geladenen Daten im SWT-GUI 2 dargestellt werden.

Über Erfahrungsbericht, Tipps, Beispiele bin ich sehr dankbar.

Grüsse von Martin


Verwendete Software:
-   Expeditor 6.2 im Eclipse 3.4
-   Lotus Notes / Desiggner 8.5
-   Composite Application Editor
« Letzte Änderung: 09.02.10 - 13:48:49 von Ahuga »

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Hallo Martin!

Werde jetzt aus deiner Beschreibung nicht ganz schlau? Du hast ein Composite Anwendung die in Expeditor funktioniert und möchtest jetzt dass diese im Notes funktioniert, oder du hast noch gar keine Composite Applikation?

Was genau meinst du mit SWT-Gui einen ViewPart? Wenn ein ViewPart hast du in dem Plugin des Viewparts schon die entsprechenden Erweiterungspunkte für Composite Applikationen erweitert? Wenn ja dann musst du nur noch deine Plugins in eine Updatesite reinstellen. Eventuell noch einen Widgetkatalog erstellen und diese Plugins in dein Notes reininstallieren. Oder du rufst Notes einfach von deinem Eclipse Client auf und wählst bei der Run Config einfach deine Plugins an. Dann hast du im CAE Zugriff auf diese Plugins und musst nur noch die beiden Viewparts in die Anwendung reinziehen und dann das entsprechende Property von Viewpart1 mit der Aktion in Viewpart2 verbinden.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Ahuga

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
Hallo Ralf

Danke für Deine Infos.

Ja, bei den SWT-Guis handelt es sich um Klassen extends ViewPart.
Ich habe noch keine Composite Applikation. Die obigen Klassen habe ich im Expeditor erstellt, ausgeführt werden sie im Notes Client. Ich habe noch keine entsprechenden Erweiterungspunkte gesetzt.

Da es sich für mich bei der ganzen Thematik um Neuland handelt, ist Deine Beschribung sehr komprimiert:
  • ich erkenne bei Dir zwei Lösungsansätze: "... die beiden Viewparts in die Anwendung reinziehen" -> genau das ist mein Ziel. Daran zerbreche ich mir seit Stunden den Kopf :)
  • was wären also die nächsten Schritte um dieses Ziel zu erreichen ... in slow Motion?
  • gibt es irgendwo ein Tutorial oder Beschreibung für mein Anliegen?

Vielen Dank für Deine Geduld und Verständnis.

Offline Ahuga

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
Das mit den Extension Points ist mir noch nicht ganz klar. Da ich jedoch die Anwendung übernommen und an meine Anforderungen angepasst habe, nehme ich an, dass diese Extension Points bereits gesetzt sind. Bin mir jedoch nicht sicher.

Ich habe versucht, meine 3 Plugins mittels einer Updatesite dem CAE zur Verfügung zu stellen:
-   File -> New -> Feature Project: alle Plugins reinpacken
-   File - > New -> Update Site Project: obiges Feature reinpacken
-   CAE -> Add Components -> site.xml laden
Bekomme folgende Fehlermeldung:  „The updatesite contain any components that can be added to the palette“

Zur Veranschaulichung habe ich einen Screenshot angehängt:
- Die ViewPart sind übrigens im Package richapp drin
« Letzte Änderung: 29.01.10 - 17:04:46 von Ahuga »

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Dein Screenshot ist leider nicht sehr nützlich. Poste doch mal dein Plugin.xml. Daraus ersieht man welche Extension Points du erweiterst.

Prinzipiell zum Testen würde ich mir den Umweg über eine Updatesite vorerst ersparen. Wenn du das Expeditor Toolkit in Eclipse richtig konfiguriert hast, sollte es möglich sein Lotus Notes direkt aus Eclipse aufzurufen. Dabei kannst du über die Run Config angeben, welche Plugins mitgeschickt werden sollen. Hier gibst du deines an und klickst dann auf den Knopf das er alle Abhängigen zusätzlich hinzufügen soll. Dann kannst du im CAE dieses Plugin auch auswählen. Die Komponenten die über Eclipse kommen finden Sich unter lokal installierte Komponenten. Du solltest wenn die Erweiterungspunkte für Viewpart erfüllt sind die Komponenten auf jeden Fall auf die CAE ziehen können. Für das verbinden von Eigenschaften zu Aktionen brauchst du dann eigene Erweiterungspunkte. Aber zeig mal dein Plugin.xml dann wird klarer was du schon hast und was du noch brauchst.

Mir hat auf jeden Fall das Tutorial im Wiki sehr viel geholfen:

http://www-10.lotus.com/ldd/compappwiki.nsf/dx/developing-an-eclipse-component-for-lotus-notes-8-part-1

Dann auch auf jeden Fall Part2 lesen. Ich habe den mal im Wiki auch verlinkt.

Grüße

Ralf


Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Ahuga

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
Ich habe in meiner Anwendung zwei plugin.xml:

- im Packet ... .service --> Zugriff auf die lokale DB
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<!--
/************************************************************************
 * Licensed Materials - Property of IBM
 * @CUTLASS_PID@
 * © Copyright IBM Corp. 2004, 2009  All Rights Reserved.
 *************************************************************************/
-->
<?eclipse version="3.2"?>
<plugin>

   <!-- Define a class to provide the default preference values -->
   <extension
         point="org.eclipse.core.runtime.preferences">
      <initializer class="com.ibm.rcp.samples.orderentry.service.impl.PreferenceInitializer"/>
   </extension>

   <!-- Define a managed data source to be used by Order Entry.  This will be used
        presuming that the Derby database provider is enabled in the platform.  -->
   <extension
         id="OrderEntryBinding"
         point="com.ibm.pvc.jndi.provider.java.binding">
      <binding
            jndi-name="jdbc/OrderEntry"
            objectFactory-id="com.ibm.rcp.database.core.ManagedDSObjectFactory"/>
   </extension>

   <extension
         id="OrderEntryDerbyDatabase"
         point="com.ibm.rcp.database.core.datasource">
      <datasource
            databaseName="OEDB"
            databaseProviderId="org.apache.derby"
            jndiName="jdbc/OrderEntry"
            location="db">
         <action name="applySchema">
            <property name="schema" value="OrderEntry"/>
         </action>
      </datasource>
   </extension>

   <extension
         id="OrderEntrySchema"
         point="com.ibm.rcp.database.core.schema">
      <schema
            name="OrderEntry"
            version="6.1.2">
         <create>
            <script
                  id="create"
                  script="scripts/create.sql"/>
         </create>
         <populate>
            <script
                  id="populate"
                  script="scripts/populate.sql"/>
         </populate>
      </schema>
   </extension>

   <!-- Define a secondary (backup) datasource that will be used if the managed datasource
        is not available.  This will occur if the Derby database provider is not available,
        such as on the device runtime, where derby is not installed. -->
       
   <extension
         id="OrderEntryBindingBackup"
         point="com.ibm.pvc.jndi.provider.java.binding">
      <binding
            jndi-name="jdbc/OrderEntryBackup"
            objectFactory-id="com.ibm.pvc.jndi.provider.java.GenericObjectFactory"/>
   </extension>
   
   <extension
         id="OrderEntryBackupDB"
         point="com.ibm.pvc.jndi.provider.java.genericobject">
      <object
            class="com.ibm.db2e.jdbc.DB2eDataSource"
            jndi-name="jdbc/OrderEntryBackup">
         <method name="setUrl">
            <method-parameter
                  type="String"
                  value="jdbc:db2e:${_workspace}/OEDBDB2e"/>
         </method>
         <method name="setSharedDatabaseAccess">
            <method-parameter
                  type="boolean"
                  value="true"/>
         </method>
      </object>
   </extension>

   <extension
         point="com.ibm.msg.client.jmsqueue">
      <queue
            jndi-name="jms/OERequestQueue"
            provider-name="com.ibm.msg.client.mqtt.MQTTConstants.MQTT_PROVIDER_NAME"
            queue-name="OERequestQueue"/>
   </extension>
   
   <extension
         point="com.ibm.pvc.jndi.provider.java.binding">
      <binding
            jndi-name="jms/OERequestQueue"
            objectFactory-id="com.ibm.msg.client.JMSQueueFactory"/>
   </extension>

   <extension
         point="com.ibm.msg.client.jmsqueue">
      <queue
            jndi-name="jms/OEReplyQueue"
            provider-name="com.ibm.msg.client.mqtt.MQTTConstants.MQTT_PROVIDER_NAME"
            queue-name="OEReplyQueue"/>
   </extension>
   
   <extension
         point="com.ibm.pvc.jndi.provider.java.binding">
      <binding
            jndi-name="jms/OEReplyQueue"
            objectFactory-id="com.ibm.msg.client.JMSQueueFactory"/>
   </extension>

   <extension point="com.ibm.pvc.jndi.provider.java.binding">
      <binding
            jndi-name="services/OrderEntryService"
            objectFactory-id="com.ibm.pvc.jndi.provider.java.GenericObjectFactory"/>
   </extension>
   
   <extension point="com.ibm.pvc.jndi.provider.java.genericobject">
     <object jndi-name="services/OrderEntryService"
       class="com.ibm.rcp.samples.orderentry.service.impl.OrderEntryServiceImpl"/>
    </extension> 
 
</plugin>


- im Packet ... .richapp --> mit beiden ViewPart's

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.2"?>
<!--
/************************************************************************
 * Licensed Materials - Property of IBM
 * @CUTLASS_PID@
 * © Copyright IBM Corp. 2004, 2008  All Rights Reserved.
 *************************************************************************/
-->
<plugin>
   
   <extension
         point="org.eclipse.ui.perspectives">
      <perspective
            class="com.ibm.rcp.samples.orderentry.richapp.OrderEntryPerspective"
            name="%orderentry.perspective.name"
            id="com.ibm.rcp.samples.orderentry.richapp.OrderEntryPerspective"
            icon="icons/OEwctapp_16x16.gif"/>
   </extension> 

   <extension
         point="org.eclipse.ui.preferencePages">
      <page
            name="%orderentry.preferences.name"
            class="com.ibm.rcp.samples.orderentry.richapp.preferences.OrderEntryPreferencesPage"
            id="com.ibm.rcp.samples.orderentry.richapp.preferences.OrderEntryPreferencesPage">
      </page>
   </extension>
   
   <extension
         point="org.eclipse.ui.views">
      <category
            name="%orderentry.view.name"
            id="com.ibm.rcp.samples.orderentry.richapp.views">
      </category>
      <view
            name="%orderentry.view1.name"
            category="com.ibm.rcp.samples.orderentry.richapp.views"
            class="com.ibm.rcp.samples.orderentry.richapp.views.OrderStatusView"
            id="com.ibm.rcp.samples.orderentry.richapp.views.OrderStatusView">
      </view>
      <view
            name="%orderentry.view2.name"
            category="com.ibm.rcp.samples.orderentry.richapp.views"
            class="com.ibm.rcp.samples.orderentry.richapp.views.NewOrderView"
            id="com.ibm.rcp.samples.orderentry.richapp.views.NewOrderView">
      </view>
     
   </extension>   
   
   
   <!-- Define launcherSet to add this perspective to the launcher -->
   <extension
         id="OrderEntryLauncherSet"
         point="com.ibm.rcp.ui.launcherSet">
      <LauncherSet
            id="com.ibm.rcp.samples.orderentry.richapp.OrderEntry"
            label="%orderentry.application.name">
         <perspectiveLaunchItem
               autoStart="false"
               iconUrl="icons/OEwctapp_16x16.gif"
               iconUrlMedium="icons/OEwctapp_32x32.gif"
               id="com.ibm.rcp.samples.orderentry.richapp.OrderEntry"
               label="%orderentry.application.name"
               perspectiveId="com.ibm.rcp.samples.orderentry.richapp.OrderEntryPerspective"/>
      </LauncherSet>
   </extension>
   
</plugin>

Werde mich mal hinter das Tutorial im im Wiki machen.

Vielen Dank und Gruess

Martin

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Hm.

Du solltest es vielleicht eventuell zuerst mal mit einem einfacheren Beispiel probieren. Zwei Sachen die mir aber aufgefallen sind. Du musst bei ViewParts die in Comp Apps verwendet werden die Eigenschaft AllowMultipe beim Extension Point der View angeben. Sonst funktioniert das nicht.

Eine View sollte also so definiert sein:
Code
<extension
         point="org.eclipse.ui.views">
      <view
            allowMultiple="true"
            category="test"
            class="viewPartClass"
            id="viewId"
            name="Testview"
            restorable="true">
      </view>

Dann sollte sie auch in CA's funktionieren.
Zweitens wenn du Eigenschaften von einem Viewpart zum Anderen übertragen willst, brauchst du ein WSDL, dass du im Designer erstellen kannst und dann in Eclipse importieren musst. Dieses WSDL und deine Handler Klassen musst du dann im Extension Point com.ibm.rcp.propertybroker.PropertyBrokerDefinitions angeben. Das ist aber im Tutorial genau beschrieben.


Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Ahuga

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
Ich habe das Beispiel nachgebaut und in eine Composite Application integriert, siehe Screenshot. (Links eine Notes view (sample_plugin.nsf), rechts das Plugin mit ViewPart und Browser gemäss Beispiel)

Was ich nicht richtig verstanden habe: Ich definiere Property (Daten zum Konsumieren für andere Komponenten) und Action (Logik, wie mit den Daten verfahren wird) in der wsdl-Datei, aber wo ist definiert, was diese Property und Action bedeuten, was die genau machen sollen? Der Inhalt der WSDL-Datei gibt mir keinen Aufschluss darüber.
Wenn ich also eine Komponente habe, welche Daten in einer ViewPart darstellen will, dann definiere ich über die Action, wie die Daten konsumiert werden sollen? Ist das korrekt?

Ich nehme an, dass ich auch im sample_plugin.nsf (Notes view) ein SampleNsf.wsdl mit Propertiy und Action definieren muss, damit die Namensfelder in der ViewPart ausgefüllt werden, wenn ich einen Namen in der View selektiere? Ist das korrekt?

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Hm ich sehen keinen Screenshot?

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Ahuga

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
Ups ... vor lauter ...
« Letzte Änderung: 03.02.10 - 09:22:51 von Ahuga »

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Nein nur mit WSDL alleine geht noch gar nichts. Die Komponenten müssen auch dann die Aktionen implementieren. Du musst dazu den Erweiterungpunkt
com.ibm.rcp.propertybroker.PropertyBrokerDefinitions erweitern. Ist auch im Tutorial beschreiben.
Code
<extension
         point="com.ibm.rcp.propertybroker.PropertyBrokerDefinitions">
      <handler
            class="HandleAktionen"
            file="WSDL/wsdl.wsdl"
            owner="HandleAktionen"
            type="SWT_ACTION">
      </handler>
</extension>

public class HandleAktionen implements IHandler {

   public void addHandlerListener(IHandlerListener arg0) {
      // TODO Auto-generated method stub

   }

   public void dispose() {
      // TODO Auto-generated method stub

   }
Dann muss es natürlich die Klasse HandleAktionen geben. Die ca. so aussehen soll. Kann jetzt nicht sagen, ob die Klasse ganz richtig ist, da ich sie aus einem meiner Projekte rauskopiert habe und anonymisiert, bzw vereinfacht habe. Der ViewPart AktionenView muss natürlich dann die Methode showAktionen haben. In meinem Fall.

Code
	public Object execute(ExecutionEvent arg0) throws ExecutionException {
		final PropertyChangeEvent pce = (PropertyChangeEvent) arg0.getTrigger();
		Display.getDefault().asyncExec(new Runnable() {
			public void run(){
				String targetViewId = pce.getWireDefinition().getTargetEntityId();
				IViewPart part=SWTHelper.locateView(targetViewId);
				if (part instanceof AktionenView){
					if(pce.getPropertyValue().getProperty().getName().equals("Name1")){
						((AktionenView)part).showAktionen((String)pce.getPropertyValue().getValue());
					}
				}
				
						
			}
		});
		return null;
	}

	public boolean isEnabled() {
		// TODO Auto-generated method stub
		return true;
	}

	public boolean isHandled() {
		// TODO Auto-generated method stub
		return true;
	}

	public void removeHandlerListener(IHandlerListener arg0) {
		// TODO Auto-generated method stub

	}

}

Wenn du Noteskomponenten hast, dann musst du eine Notesaktion hinzufügen die mit dem WSDL verknüpft ist. Siehe Screenshot

Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Ahuga

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
Vielen Dank für Deine Infos.

Zitat
Wenn du Noteskomponenten hast, dann musst du eine Notesaktion hinzufügen die mit dem WSDL verknüpft ist.

Ich habe noch ein Durcheinander mit dem WSDL:

- Ist oben die WSDL des Plug-in’s mit der ViewPart gemeint?
- Was gebe ich bei „Action Input Parameter“ im WSDL des Plug-in’s an? Da müsste es sich genau um die obige Notesaktion handeln, oder?
- Diese „TestAction“ bei Deinem Screenshot, ist das die Action aus dem WSDL des Plug-in’s?

Offline Ahuga

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
Noch eine Frage ist aufgetaucht:

Das Action-Fenster bei Deinem Screenshot, stammt das von einem Actionbutton in der NotesView?
Wenn ja, kann ich dann direkt die rot markierte "TestAction" aufrufen und muss das nicht über LotuScript lösen?

Um was für eine Action handelt es sich bei dieser "TestAction"? Der Noteskomponente oder Action defiert in der wsdl-Datei meines ViewPart Plugins?

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Ah ich denke wir reden aneinander vorbei. Die Aktion in der View musst du definieren wenn die View das Ziel einer Aktion ist. Sprich irgendein Teil in deiner Comp App möchte, dass sich etwas in der View ändert. Wenn du auf Selektionsereignisse in der View reagieren willst brauchst du die Viewaktion gar nicht. Dann musst du bei den Spalteneinstellungen der View irgendwie das Property auswählen. Habe aber jetzt gerade keinen Designer bei der Hand um nachzusehen wie das heisst.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Eine Frage ist das was du machst eigentlich ein Projekt zu lernen, oder ein echtes Projekt. Kannst du eventuell mal die Datenbank hier reinstellen. Ich denke man könnte viel besser helfen, wenn man mal echt sieht das du machst.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Ahuga

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
Guten Morgen Ralf

Ich möchte an einem einfachen Beispiel die Grundlagen für spätere Applikationen erarbeiten.

Das ist eine gute Idee, meine Dateien reinzustellen, es handelt sich um folgende Dateien:
  • Composite Application „Sample_Plugin_AC“
  • NotesKomponente mit View „Sample_Plugin“
  • Plugin „DataView Plugin“

Ich glaube es fehlt dank Deiner Unterstützung nur noch wenig:

Im ACE kann ich das Wiring nicht machen, Ich sehe die Aktion von „DataView Plugin“ nicht (Screenshot Wiring). Da ist noch irgendwo ein Fehler.

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
So ich habe dass mal schnell durchgeschaut. 2 Probleme fallen einmal auf:

Erstens in deinem Plugin.xml ist der Eintrag owner falsch. Der Ownereintrag bewirkt, dass das hier beschriebene WSDL nur bei einem bestimmten ViewPart zieht. Stell dir vor, du hast in deinem Plugin mehrere ViewParts und mehrere WSDL, da ja jeder Viewpart andere Aktionen hat. MIt dem Owner steuerst du welches WSDL zu welchem Viewpart gehört.

Deine Plugin.xml sollte also so aussehen:

Code
<?xml version="1.0" encoding="UTF-8"?>

<?eclipse version="3.2"?>

<plugin>



<extension
	id="DataView"
	name="DataView"
	point="org.eclipse.ui.views">
	<view
		allowMultiple="true"
		class="sampleplugin.views.DataView"
		id="DataView Plug-in.view1"
		name="DataView"/>
</extension>
<extension
      point="com.ibm.rcp.propertybroker.PropertyBrokerDefinitions">
   <handler
         class="sampleplugin.actions.ActionHandle"
         file="WSDL/DataView.wsdl"
         owner="DataView Plug-in.view1"
         type="SWT_ACTION">
   </handler>
</extension>
</plugin>

Mit dieser Änderung sollten eigentlich dann die Aktion beim Viewpart angezeigt werden. Probier es am besten gleich aus.

Dann ist aber auf jeden Fall noch ein Fehler in der AktionenHandleKlasse.

Du hast das offensichtlich ein zu eines kopiert, aber natürlich gehört es an dein Beispiel angepasst.

Code
public Object execute(ExecutionEvent arg0) throws ExecutionException {

		final PropertyChangeEvent propertyChangeEvent = (PropertyChangeEvent) arg0.getTrigger();

		Display.getDefault().asyncExec(new Runnable() {

			public void run() {

				String targetViewId = propertyChangeEvent.getWireDefinition().getTargetEntityId();

				IViewPart dataView = SWTHelper.locateView(targetViewId);

				if (dataView instanceof DataView){

					if(propertyChangeEvent.getPropertyValue().getProperty().getName().equals("SampleNsfProperty")){

						((DataView)dataView).showAktionen((String)propertyChangeEvent.getPropertyValue().getValue());

					}

				}

			}

		});

		return null;

	}


Ich habe Name1 durch SampleNsfProperty ersetzt.

Ich hoffe, dass du damit einen Schritt weiter bist.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

Offline Ahuga

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
Seeeeeennnnnnssssaaaaatiiioooonneeeellll!!!!!! Es funktioniert! Gewaltig. Gerettet!  :love:

Herzlichen Dank für Deine Unterstützung.


Für alle, die eine Beispielanwendung brauchen füge ich die funktionierende Applikation als ZIP bei.

Offline Ralf_M_Petter

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.879
  • Geschlecht: Männlich
  • Jeder ist seines eigenen Glückes Schmied
    • Ralf's Blog
Freut mich, dass es funktioniert.

Grüße

Ralf
Jede Menge Tipps und Tricks zu IT Themen findet Ihr auf meinem Blog  Everything about IT  Eine wahre Schatzkiste sind aber sicher die Beiträge zu meinem Lieblingsthema Tipps und Tricks zu IBM Notes/Domino Schaut doch einfach mal rein.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz