Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: DaHias am 27.05.10 - 07:16:58

Titel: Notesdocument vorhanden - daraus das NotesUIDocument erhalten
Beitrag von: DaHias am 27.05.10 - 07:16:58
Hi zusammen,

Weiß einer wie das geht? Habe eine DcoumentCollection mit meinen Notesdocuments, brauche aber die NotesUIDocuments. Wie komm ich an die ran?

Grüße,
Mathias
Titel: Re: Notesdocument vorhanden - daraus das NotesUIDocument erhalten
Beitrag von: eknori (retired) am 27.05.10 - 07:22:43
NotesUIDocument ist das Dokument, welches dir gerade ANGEZEIGT wird. Ein NotesDocument kann man nur zu einem NotesUIDocument machen, wenn man es öffnet.
Wie das geht steht in der Designer Hilfe.
Titel: Re: Notesdocument vorhanden - daraus das NotesUIDocument erhalten
Beitrag von: DaHias am 27.05.10 - 07:56:48
Und genau daran scheitere ich:

Code
		    while (doc != null) 
			{
		    	
		    	NotesDocumentData docData = new NotesDocumentData(doc);		    	
		    	ws.openDocument(true, docData);
		    	
		    	NotesUIDocument uidoc = ws.getCurrentDocument();		    	
		    	uidoc.print();
		    	
		    			    	
		    	doc = dc.getNextDocument(doc);
			}

In der Zeile ws.openDocument(true, docData); stößt er bei mir auf einen Fehler den ich aber nicht verstehe.

In der expliziten Fehlermeldung heißt es java.lang.NoClassDefFoundError: com.ibm.workplace.notes.ipc.commin.requests.ExecuteCommandRequest

Und die Fehlermeldung sagt mir hald einfach gar nix... so eine Klasse gibt es auch nicht, zumindest konnte ich nichts finden...
Titel: Re: Notesdocument vorhanden - daraus das NotesUIDocument erhalten
Beitrag von: Driri am 27.05.10 - 08:21:06
Versuchs mal mit EditDocument. Zumindest in Script gibt es kein OpenDocument.
Titel: Re: Notesdocument vorhanden - daraus das NotesUIDocument erhalten
Beitrag von: pram am 27.05.10 - 08:28:20
außerdem fehlt ein 'call' (und vermutlich ein 'Option Declare' sonst wär dem Compiler der Fehler schon aufgefallen)

Gruß
Roland
Titel: Re: Notesdocument vorhanden - daraus das NotesUIDocument erhalten
Beitrag von: eknori (retired) am 27.05.10 - 08:34:10
Zitat
außerdem fehlt ein 'call' (und vermutlich ein 'Option Declare' sonst wär dem Compiler der Fehler schon aufgefallen)

Gruß

äh, der Kollege werkelt mit JAVA ...
Titel: Re: Notesdocument vorhanden - daraus das NotesUIDocument erhalten
Beitrag von: DaHias am 27.05.10 - 08:56:38
Also EditDocument gibt's in Java ned, da gibts eben nur das openDocument, wobei das im Grunde die gleiche Funktionalität hat.

@Roland: Wie eknori sagt tu ich hier mit Java rum. Mit Lotusscript würd ichs ja hinkriegen...
Titel: Re: Notesdocument vorhanden - daraus das NotesUIDocument erhalten
Beitrag von: pram am 27.05.10 - 10:55:08
Sorry, mit Brille wär das nicht passiert  8)
Titel: Re: Notesdocument vorhanden - daraus das NotesUIDocument erhalten
Beitrag von: Ralf_M_Petter am 27.05.10 - 13:08:47
Nur sicherheitsFrage. Wir reden hier schon vom Standardclient und nicht BasicClient oder?

Grüße

Ralf
Titel: Re: Notesdocument vorhanden - daraus das NotesUIDocument erhalten
Beitrag von: DaHias am 27.05.10 - 14:37:13
Hi Ralf,

Jap Standard-Client :)
Titel: Re: Notesdocument vorhanden - daraus das NotesUIDocument erhalten
Beitrag von: Ralf_M_Petter am 27.05.10 - 14:48:33
Ok, nächste Frage wo steht dieser Code. Ist er in einer Eclipse Aktion, oder ? Sind in dem Plugin die Abhängikeiten richtig gesetzt?

Grüße

Ralf
Titel: Re: Notesdocument vorhanden - daraus das NotesUIDocument erhalten
Beitrag von: DaHias am 27.05.10 - 15:00:29
Ich hab den Code in einem Java Agenten im Notes Designer erstellt und starte den Agenten dann manuell über die Aktionsleiste im Lotus Client.

Der Code wäre der folgende:

Code
package com.esg.print.pdf;

import lotus.domino.*;

import java.io.*;

import com.ibm.notes.java.ui.NotesUIWorkspace;
import com.ibm.notes.java.ui.documents.NotesUIDocument;
import com.ibm.notes.java.api.*;
import com.ibm.notes.java.api.data.NotesDocumentData;
import com.ibm.notes.java.api.data.NotesDocumentKeyData;

import org.eclipse.ui.IWindowListener;
import org.osgi.*;

public class PDFPrinter extends AgentBase {

	public void NotesMain() {

		try {
			Session session = getSession();
			AgentContext agentContext = session.getAgentContext();
			NotesUIWorkspace ws = new NotesUIWorkspace();			
		    lotus.domino.Document doc = null;
			
			try {
			    Thread.sleep(1000);
			}
			catch (InterruptedException e) {
			    System.out.println(e);
			}
			
		    System.out.println(ws.toString());

			//Holt sich alle markierten Dokumente
			DocumentCollection dc = agentContext.getUnprocessedDocuments();			
		    System.out.println("Count = " + dc.getCount());
		    doc = dc.getFirstDocument();
		    
		    while (doc != null) 
			{
		    	
		    	NotesDocumentData docData = new NotesDocumentData(doc);		    	
		    	ws.openDocument(true, docData);
		    	
		    	NotesUIDocument uidoc = ws.getCurrentDocument();		    	
		    	uidoc.print();
		    	
		    			    	
		    	doc = dc.getNextDocument(doc);
			}

		} catch (Exception e) {
			//e.printStackTrace();
			System.err.println(e.getClass().getName() + ": " + e.getMessage());
		}
	}
	
}

Was genau meinst du mit Abhängigkeiten?
Titel: Re: Notesdocument vorhanden - daraus das NotesUIDocument erhalten
Beitrag von: Ralf_M_Petter am 27.05.10 - 15:10:11
Schurke, gib zu, dass du das JAR File der UI Classes in deinen Agent reingetrickst hast ;-)

Die Java UI Classes sind in Agents meines Wissens nach nicht supported und wenn du nichts an dem Agent rumgedreht hättest würde er Sie dir gar nicht zur Auswahl geben.

Zum Hintergrund. Java in Notes Agenten und auch Applets läuft in einer ganz anderen JVM Instanz, als das ganze Eclipse drumherum. Deshalb hast du von einem Agenten prinzipiell keinen Zugriff auf die ganzen tollen Eclipsefunktionen. Das einzige was man machen kann ist in Eclipse einen Hintergrundthread zu programmieren, der über IP Kommunikation von deinem Agent angesprochen wird. Das ermöglicht es von Notesagenten aus Eclipse Aktionen durchzuführen.

Grüße

Ralf
Titel: Re: Notesdocument vorhanden - daraus das NotesUIDocument erhalten
Beitrag von: DaHias am 28.05.10 - 06:41:38
Moin Moin,

Hm... ok ich glaub da hast du nicht ganz unrecht. Hab tatsächlich die UI Classes da eingebunden  ::)

Eigentlich soll das ganze am Ende gar nicht in einem Agenten laufen, sondern in einem Sidebar Plugin, das ich über Eclipse dann stricken wollte. Ich wollte nur die Funktionen erst einmal ein einem Agenten testen.
Aber demnach sollte ich in diesem Sidebar Plugin keine Probleme haben oder?

Danke!  :)
Titel: Re: Notesdocument vorhanden - daraus das NotesUIDocument erhalten
Beitrag von: Ralf_M_Petter am 29.05.10 - 09:30:17
In einem Sidebar plugin sollte es problemlos funktionieren. Wie ich schon gesagt habe, sind die Umgebung von Java Agents komplett etwas anderes als Eclipse Plugins. Ein Mustersidebarview zum testen von Code ist aber in Eclipse eine Sache von unter 2 Minuten.

Grüsse Ralf