Das Notes Forum

Lotus Notes / Domino Sonstiges => Java und .NET mit Notes/Domino => Thema gestartet von: CLI_Andreas_Schmidt am 16.06.04 - 16:14:42

Titel: Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 16.06.04 - 16:14:42
Hi @all,

ich hätte mal ne Frage zum Thema Java und Notes.

Ich möchte die Dokumente (Hauptdokumente und Antworten und Kommentare) einer Ansicht in einer dynamischen Gliederung (als Java Applet) anzeigen lassen. Das Java Applet sollte in der Lage sein die Dokumente als Link anzuzeigen und gleichzeitig aufklappen, wenn es Unterdokumente gibt.

Frage 1 ist: Sollte man das mit Java machen ?
Frage 2 ist: Wenn NEIN  ---> wie dann ?
Frage 3 ist: Wenn JA --> wie oder wo gibt es Lösungsansätze

Gruss

Andreas Schmidt
Titel: Re:Dynamisches Java Applet
Beitrag von: animate am 16.06.04 - 17:53:38
Welche Domino/Notes Version?
Web oder Client?
Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 16.06.04 - 18:19:57
Domino Version 6 und es braucht nur im Browser IE laufen.
Titel: Re:Dynamisches Java Applet
Beitrag von: animate am 16.06.04 - 19:07:29
ich weiß natürlich nicht, was du genau haben willst.
in einem Applet könntest du das mit Swing realisieren (JTree)

das ganze könntest du vielleicht auch mit Hilfe eines Agents lösen, der diese Gliederung automatisch erstellt. Die Funktionalität des Aufklappens kannst du bestimmt irgendwie mit DHTML oder Javascript lösen. Im Web gibts genügend Beispiele für dynamische Menüs, die in allen möglichen Arten auf- und zuklappen.
Titel: Re:Dynamisches Java Applet
Beitrag von: Marinero Atlántico am 18.06.04 - 17:30:54
ok, bei solchen Sachen kann ich noch meinen Senf dazugeben.

@Andreas: Als Externer würde ich niemals eine Technologie benutzen, die ich nicht wirklich beherrsche. Das Risiko ist einfach zu hoch.

Ich habe mich dieses Jahr Wochen mit
- Meetings
-  Status-Berichten
- coding von fixes, um am bug vorbei zu kommen  
- Analyse
rund um eine DWF Anwendung  auf OS/390 mit starker DB2-Integration vergnügt (zum Glück gerechterweise bezahlt), wo ich nach endlosen Spätabendsitzung (unbezahlt) am Ende hinreichend nachweisen konnte, das Abstürze des Agentenmanagers (!!) nicht auf der Anwendung beruhten.

IBM war zwischenzeitlich auch eingeschaltet, konnte aber weder Lösung noch Erklärung liefern.

Was machst du, wenn dein Applet abstürzt? Vielleicht liegt das gar nicht am Applet, sondern an irgendwelchen Konfigurationen der Clients. Vielleicht aber auch am Applet. Hast du dann die entsprechende Sicherheit, das Problem schnell zu fixen?  

Bei mir liegt es vermutlich an der DB2 Connection auf der OS/390. Ich untersuche das nächste Woche mit dem DBA.

... und da braucht man für neue Technologien immer erst eine Menge Theorie und Praxis. Als Interner kann man vielleicht einfach mal so ein Applet aus dem Netz einbinden. Schon weil man erreichbar ist, wenn es nicht läuft. Als Externer ist das Risiko einfach zu groß.  
 
Thomas hat Recht. Du kannst das gut mit html und JavaScript machen.

Btw. wird die relativ große Anwendung aus verschiedenen Gründen (neben der Stabilität) wahrscheinlich auf Bea Weblogic mit Webservices portiert und das ist gut so.

Gruß Axel

Keep it simple stupid.
... und Domino ist nicht für alles einfach, ihr Sackgesichter.  ;D
Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 19.06.04 - 17:06:06
Hi Marinero (Axel) : )

ich weiß jetzt nicht genau, was Du mit Deinem Beitrag sagen willst ?

Gerade als Externer sollte man sehr genau wissen, was man noch verantworten kann und was nicht. Das mal was nicht läuft, ist doch vollkommen normal. Schließlich arbeiten wir alle überwiegend mit Notes GRINS. Bei Notes gehen halt nicht alle Sachen. Und wenn ich nur an Domino 6 denke, da sind wo viele Fehler drin, wie noch nie. Das macht wirklich sehr viel Spass. Vorallem wird man ständig dazu gezwungen, sich für Standardfunktion ein neue Lösung auszudenken.

OK: Also Ergebnis ist jetzt: Lieber nicht Java, sondern DHTML ? Ach ja nur zur Info, ich benutze WK2000.

Oder ?

Gruss

Andreas
Titel: Re:Dynamisches Java Applet
Beitrag von: Marinero Atlántico am 21.06.04 - 08:10:18
Ich meine das, wie ich es gesagt habe:
Der Einsatz von Technologien, die du nicht beherrschst führt unweigerlich zu nicht zu kalkulierenden Risiken.
Ausserdem ist für den beschriebenen Anwendungsfall DHTML sowieso die bessere Lösung Ausser vielleicht, man heisst Ralf, kommt aus Österreich und hat sehr viel Erfahrung mit Java- Swing in Notes.

Java nutzbringend einzusetzen erfordert eine Menge an Wissen. Das geht nicht mal einfach so. Das erfordert kontinuierliches jahrelanges Arbeiten an der Sache. Das ist mir hier auch klargeworden. Deshalb hatte ich auch keine Lust mehr hier Administrator zu sein.
Wer diesen langen Atem nicht hat, sollte es sich aus dem Kopf schlagen.
 
Es sei denn es kommen für genau spezifizierte Aufgaben sehr intelligente IDEs raus.

Gruß Axel
Titel: Re:Dynamisches Java Applet
Beitrag von: qojote am 21.06.04 - 16:14:32
Hi,

ich hab mal versucht was ähnliches im Notes Client umusetzen.
Als Applet.
Weil ich in einer Art Ansicht daten aus unterschiedlichen Forms kombinieren wollte (klassiches Notes Problem )
Ging auch ganz gut mit wenigen Dokumenten.
Aber ab 50.000 einträgen war mein Rechner mit 1 GB Ram am ende.
Also für große Mengen an docs ist das nicht geeignet.

Gruß
Qojote
Titel: Re:Dynamisches Java Applet
Beitrag von: Marinero Atlántico am 22.06.04 - 13:44:41
Man könnte das sicher implementieren, indem man den Domino Client pro Request immer nur ca. 100 Einträge runterladen lässt (ein bischen wie Web-Views) und gegebenenfalls die Auswahl nach Buchstaben anbietet.

Für Domino Zugriff von Tomcat/Websphere/Weblogic/etc. gibt es das mit den Domino Taglibs auch.

Für Applets war auch ein MS-Com ähnliches Komponenten-Framework gedacht -> Javabeans. Das konnte sich aber aus Performance- und sonstigen Gründen nicht durchsetzen.
Nun wird die JavaBean Spezifikation in entschärfter Form für serverseitige Entwicklung eingesetzt.
Und ohne Komponenten-Framework muß man Spezialist sein, um etwas kontrolliert einsetzen zu können.
Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 30.06.04 - 13:06:17
Hat denn jemand mal ein kleines Beispiel, möglichst einfach, damit ich mir die Vorgehensweise mal ansehen kann ? Sowohl für Java als auch für DHTML. Ich wollte das Rad eigentlich nicht neu erfinden. Es seih denn, ich geht nicht anders.

Gruss

Andreas
Titel: Re:Dynamisches Java Applet
Beitrag von: Marinero Atlántico am 30.06.04 - 13:20:19
http://www.google.de/search?q=dynamic+tree+dhtml&ie=UTF-8&hl=de&btnG=Google-Suche&meta= (http://www.google.de/search?q=dynamic+tree+dhtml&ie=UTF-8&hl=de&btnG=Google-Suche&meta=)
Ich weiss nicht, wie das in Java geht.
Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 07.07.04 - 10:45:56
Danke Axel,

genau das kann ich gebrauchen. Super.

Mal sehen, ob ich jetzt diese Links dynamisch aus Notes Dokumenten generieren kann. Dann hätte ich eine Lösung. Schnell und stabil.

Gruss

Andreas
Titel: Re:Dynamisches Java Applet
Beitrag von: Marinero Atlántico am 07.07.04 - 18:27:41
Danke Axel,

genau das kann ich gebrauchen. Super.

Mal sehen, ob ich jetzt diese Links dynamisch aus Notes Dokumenten generieren kann. Dann hätte ich eine Lösung. Schnell und stabil.

Du kannst deine Erkenntnisse hier ins Forum posten.
Du solltest versuchen, den JavaScriptCode irgendwie in Notes zu integrieren.

Gruß Axel
Titel: Re:Dynamisches Java Applet
Beitrag von: animate am 07.07.04 - 19:29:30
Vermutrung:
du musst wahrscheinlich selbst gar nix generieren. Das macht alles eine eingebettete Ansicht für dich
Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 09.07.04 - 13:26:53
Naja die Ansicht wird schon aufgebaut nur funktioniert sie dann wie in Notes und genau das will ich verhindern. Ich brauche eine kleine Funktionalität, die mir, wenn ich auf ein Dokument klicke gleichzeit zum Öffnen des Dokuments auch die Kategorie aufklappt, wenn es Unterdokumente gibt.

Leider kann das Notes so gar nicht.

I need help. Die anderen Beispiele sind gut, nur so müsste ich komplett von Notes weggehen und mit einem Agenten eigenen HTML text printen und dann auslesen. Sollte das die Lösung sein ???

Für diese kleine Funktionalität so einen großen Aufwand ? Steht in keiner Relation.

Ich hoffe Ihr habt noch Anregungen.
Titel: Re:Dynamisches Java Applet
Beitrag von: animate am 09.07.04 - 14:26:33
Tipp: du kannst auch HTML/Javascript in Ansichten anzeigen
Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 09.07.04 - 15:07:03
Verstehe.  Ich weis was Du meinst.

Danke.
Titel: Re:Dynamisches Java Applet
Beitrag von: Marinero Atlántico am 09.07.04 - 15:42:07
Hilfe brauchen wir irgendwie alle. In den unterschiedlichsten Bereichen ;D::) ;D
Poste einfach Zwischenergebnisse.  
Vielleicht kann ich mich aufrappeln.
Aber ich nehme auch normal-Arbeit mit.
 
Gruß Axel
Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 10.07.04 - 13:38:02
Danke für das Angebot Axel,

ich kämpfe schon etwas länger an diesem Problem.

Dein Beispiel auf http://www.dynamicdrive.com/dynamicindex1/navigate1.htm

ist eine gute Lösung. Ich habe schon versucht meine Ansicht (funktioniert wie eine Diskussionsdatenbank) so zu modifizieren (cool jetzt höre ich mich schon an wie jemand von der Enterprise). Leider ist es mir noch nicht gelungen.

Ich kämpfe weiter. Schade das Ansichten keine JavaScript Events besitzen.

Gruss

Andreas
Titel: Re:Dynamisches Java Applet
Beitrag von: Marinero Atlántico am 10.07.04 - 17:21:25
Poste einfach deinen source code.
konkreter Ansatz.

Vorschlag:
Du tust das in den htmlHead:
Code
<style>
<!--
#foldheader{cursor:pointer;cursor:hand ; font-weight:bold ;
list-style-image:url(fold.gif)}
#foldinglist{list-style-image:url(list.gif)}
//-->
</style>
<script language="JavaScript1.2">
<!--

//Smart Folding Menu tree- By Dynamic Drive (rewritten 03/03/02)
//For full source code and more DHTML scripts, visit http://www.dynamicdrive.com
//This credit MUST stay intact for use

var head="display:''"
img1=new Image()
img1.src="fold.gif"
img2=new Image()
img2.src="open.gif"

var ns6=document.getElementById&&!document.all
var ie4=document.all&&navigator.userAgent.indexOf("Opera")==-1

function checkcontained(e){
var iscontained=0
cur=ns6? e.target : event.srcElement
i=0
if (cur.id=="foldheader")
iscontained=1
else
while (ns6&&cur.parentNode||(ie4&&cur.parentElement)){
if (cur.id=="foldheader"||cur.id=="foldinglist"){
iscontained=(cur.id=="foldheader")? 1 : 0
break
}
cur=ns6? cur.parentNode : cur.parentElement
}

if (iscontained){
var foldercontent=ns6? cur.nextSibling.nextSibling : cur.all.tags("UL")[0]
if (foldercontent.style.display=="none"){
foldercontent.style.display=""
cur.style.listStyleImage="url(open.gif)"
}
else{
foldercontent.style.display="none"
cur.style.listStyleImage="url(fold.gif)"
}
}
}

if (ie4||ns6)
document.onclick=checkcontained

//-->
</script>
Das bringst du in eine treatContentAsHtml Ansicht:
Code
<ul>
   <li id="foldheader">News</li>
   <ul id="foldinglist" style="display:none" style=&{head};>
      <li><a href="http://www.cnn.com">CNN</a></li>
      <li><a href="http://www.abcnews.com">ABC News</a></li>
      <li><a href="http://www.news.bbc.co.uk">BBC News</a></li>
   </ul>

   <li id="foldheader">Webmaster</li>
   <ul id="foldinglist" style="display:none" style=&{head};>
      <li><a href="http://www.dynamicdrive.com">Dynamic Drive</a></li>
      <li><a href="http://www.javascriptkit.com">JavaScript Kit</a></li>
      <li><a href="http://www.freewarejava.com">Freewarejava.com</a></li>
   </ul>

   <li id="foldheader">Nested Example</li>
   <ul id="foldinglist" style="display:none" style=&{head};>
      <li><a href="http://www.dynamicdrive.com">outer 1</a></li>
      <li><a href="http://www.dynamicdrive.com">outer 2</a></li>
      <li id="foldheader">Nested</li>
      <ul id="foldinglist" style="display:none" style=&{head};>
         <li><a href="http://www.dynamicdrive.com">nested 1</a></li>
         <li><a href="http://www.dynamicdrive.com">nested 2</a></li>
      </ul>
      <li><a href="http://www.dynamicdrive.com">outer 3</a></li>
      <li><a href="http://www.dynamicdrive.com">outer 4</a></li>
   </ul>
</ul>
 

Müsste gehen.

Gruß Axel
Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 10.07.04 - 20:58:24
Jupp. Das Beispiel habe ich jetzt in Notes zum laufen gebracht.

Jetzt muss ich nur noch meine Diskussions-Ansicht dazu bringen, mir die Hauptdokumente mit dem Tag --> folderheader anzuzeigen und die Anwortdokumente mit dem Tag Foldinglist.
Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 12.07.04 - 10:11:22
So hier mal einen Zwischenstand. ich habe meine Ansicht für die Hauptordner modifiziert und diese werden auch  wie im obigen Beispiel angezeigt. (s. Anhang).

Hier der Code:

database := @Subset(@DbName; -1);
var:=@Name([CN];@ServerName);
baseUrl := "http://" + var + "/" + database;

a_area:= "<li id=\"foldheader\"><a href=\"" + baseUrl + "/content/" + @Text(@DocumentUniqueID) +  "?opendocument\">" + a_area + "</li>";
a_area

Die Ansicht ist jetzt in eine Page eingebettet und wird eingeschlossen von den Attributen: <ul>Ansicht</ul> zeigt jetzt richtig an:

Problem:
Die Antworten werden jetzt auch in <li>-Attributen eingeschlossen, jedes für sich. Aber alle Antworten zusammen müssen wieder in ein <ul>Antwortdokumente</ul>

???

Ich hoffe ihr konntet mich soweit verstehen.

Gruss

Andreas

Wie kann ich jetzt die Antworten in
Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 12.07.04 - 12:54:42
Ich habe mal einen anderen Ansatz. Der Code ist bezogen auf den Link von Axel.

If doc.form(0)="area" Then
      
      stringvar = stringvar + {<li id="foldheader"><a href="http://spsrv1/igusIntranet80_b.nsf/content/}   & doc.uniqueid(0) & {?Opendocument"  target="content">} & doc.a_area(0)  & {</a></li>}
      Set response = v.getchild(doc)
      stringvar = stringvar + {<ul id="foldinglist"><li><a href="http://spsrv1/igusIntranet80_b.nsf/content/}   & response.uniqueid(0) & {?Opendocument"  target="content">} & response.CSubject(0) & {</a></li>}      
      Set responseCC = v.getchild(response)
      stringvar = stringvar + {<ul id="foldinglist"><li><a href="http://spsrv1/igusIntranet80_b.nsf/content/}   & responseCC.uniqueid(0) & {?Opendocument"  target="content">} & responseCC.CCSubject(0) & {</a></li></ul>}      
      
   End If


Dieses Beispiel ist noch nicht in einer Schleife. ??? Ich komme jetzt gerade bis zum ersten Antwortdokument des Hauptdokuments und im zweiten Schritt vom ersten Antwortdokument zum Antwort auf Antwort (Kommentar) Dokument.

Vielleicht könnte jemand meinen Code erweitern.

Gruss

Andreas
Titel: Re:Dynamisches Java Applet
Beitrag von: Marinero Atlántico am 12.07.04 - 17:59:02
kannst du vielleicht die .nsf ein bischen abspecken und die entscheidenden Teile da drin lassen und hier posten. So ist das ein bischen schwierig.
Es gibt noch relativ wilde Möglichkeiten mit so Dingen wie @DocNumber und @DocSiblings.

Aufgabe:
Finde das erste und letzte Dokument einer Kategorie: Dort muss es nämlich <ul><li>Wert</li> bzw.  <li>Wert</li></ul> statt <li>Wert</li> heissen.

Normalerweise kann man mit den Rückgaben von @DocNumber und @DocSiblings nicht soviel anfangen, da es nicht weiterverarbeitbarer "special text" ist. Mit JavaScript geht das aber.
Du musst dann die Spaltenformel irgendwie in der Art aufbauen:
Code
["<script>" +
"wertNachLetztemPunkt = someJavaScriptStringHandling(" + @DocNumber + ")" +
"if(wertNachLetztemPunkt== "1") {document.write(\"<ul>\")}" +
"documentWrite(<li>" + wert + "</li>)" +
"if(wertNamLetztemPunkt == " + @docSiblings + ") document.write(\"</ul>\") </script>"
Das könnte so gehen.
Vielleicht finde ich Zeit, dass noch an einem Mini-Beispiel durchzuziehen.

Gruß Axel
 
 
Titel: Re:Dynamisches Java Applet
Beitrag von: Marinero Atlántico am 12.07.04 - 19:27:55
Andreas,

probier das attachment mal aus. Ansicht docs dieser Datenbank im Web anzeigen lassen und wenn das so richtig ist in deine Datenbank das script rüberkopieren und ggbfls ein wenig anpassen.

Hier ist Spaltenformel:
Code
nl:= @NewLine;

"[<script>" + nl +
"// DocNumber as String " + nl +
"var val = \"" + @DocNumber + "\";" + nl +
"// find last number." + nl +
"var elemente = val.split(\".\");" + nl +
"// assign lastNumber to variable " + nl +
"var sLastNumber=elemente[elemente.length - 1];" + nl +
"// assign variable sCountSiblings " + nl +
"var sCountSiblings=\"" + @DocSiblings + "\";" + nl +
"// if its first document, open <ul> tag" + nl +
"if (sLastNumber == \"1\") document.write (\"<ul>\");" + nl +
"//write content of field inside <li>-tag" + nl +
"document.write(\"<li>" + name + "</li>\")" + nl +
"// if its last document in category, close </ul>-tag" + nl +
"if(sLastNumber == sCountSiblings) document.write(\"</ul>\");" + nl +
"</script>]"

Kommentare in Script verbessert.

Das ist mein alter Trick des Programmiersprachen-Chainings.
Du schreibst serverseitig mit Formelsprache in der Spaltenformel dynamisch JavaScript.
Dieses JavaScript schreibt clientseitig html.
Und so kann man specialText weiterverarbeiten.
 

Gruß Axel
Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 13.07.04 - 09:18:16
Dieses Script für die Ansichtsspalte ist grundsätzlich super. Es weist jedoch die gleichen Fehler auf wie mein Ansatz.

1. Sobald es ein Antwort auf Antwort Dokument gibt, wird dieses in der Navigation nicht mehr der zweiten Stufe untergliedert. Das Heißt es steht auch in der Höhe der Antwort und wird nicht eingeklappt. (wie bei meiner Lösung)  Ich konnte es mit <li> und </ul> erreichen, das beim Klick auf den Hauptpunkt alle gleichzeitig aufgehen. Finde ich jedoch schlecht, aber es läuft soso.

2. In dieser Spalten-Lösung, die ich eigentlich sehr genial finde, gibt es bei den leeren Einträgen (Also nur Hauptdokumente ohne Antworten) beim Klick eine Fehlermeldung. "Style ist NULL oder kein Objekt---> Das Style ist eigentlich da somit kann es nur das Objekt sein."

3. Die Verlinkung zu den Dokumenten ist noch nicht funktionsfähig. Die Antworten verweisen ebenfalls auf das Hauptdokument.

Ich kann nur hoffen, das Du es schaffst, ich blicke bei den ganzen möglichen Ansätzen kaum noch durch. Leider kann ich die Datenbank nicht posten.

Gruss

Andreas.

PS: HIIIIILFE
Titel: Mein zweiter Ansatz.
Beitrag von: CLI_Andreas_Schmidt am 13.07.04 - 09:30:55
Hi an alle. Als ich verzweifelte habe ich mir gedacht einen Agenten zu schreiben, der die Dokumente rausprintend. Der Code steht unten. Was kann der Code ? Auf Basis des Beispiels (Link von Axel) wird jetzt eine Navigation aufgebaut und die Dokumente werden verlinkt. Gut. Was geht noch nicht ?

1. Mein Beispiel kann bisher nur eine Antwort generieren und ein Kommentar erstellen. --- weil ---- getChild kann nur eine Antwort (die erste Antwort) holen. Ein Schleife durch die Antworten habe ich noch nicht gefunden.
----> Eine Lösung hierfür wäre schon mal super.

2. Bei meinem Beispiel sind alle Einträge aufgeklappt. (viel zu hoch) und nimmt sehr viel Platz weg. --> Komisch auch, das selbst die Einträge ohne Antworten (nur Hauptdokument) sich auch aufklappen lassen. ???
----> Ein Lösung hierfür wären sehr klasse

3. Ich glaube das Lösungssciript, welches in den JSHeader kopiert wird ist so nicht in der Lage einen reinen Baum anzuzeigen. Ab der zweiten Ebene wird eine leere Zwischenebene benutzt. Siehe Beispiel hier. http://www.dynamicdrive.com/dynamicindex1/navigate1.htm

Wenn Ihr genau hinsieht, dann ist der dritte Eintrag ein leerer Ordner und macht wiederholt wieder die Struktur.

Ich persönlich finde Axels Ansatz in der Ansichtspalte am besten nur wird vielleicht auch hier der JS-code nicht ausreichen.

Help-----


------------------------------------------

Sub Initialize
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim v As Notesview
   Dim doc As NotesDocument
   
   Dim stringvarend As String
   Dim navdoc As NotesDocument
   Dim response As NotesDocument
   Dim responseCC As NotesDocument
   Dim area As String
   Dim konfview As NotesView
   Dim konfdoc As NotesDocument
   Dim col As NotesDocumentCollection
   Dim i As Integer
   
   
   
   Set db = s.CurrentDatabase
   Set v = db.GetView("content")
   Set doc = v.GetFirstDocument
   
   Set konfview = db.GetView("konfnav")
   Set konfdoc = konfview.GetFirstDocument
   
   If Not (konfdoc Is Nothing) Then
      Call konfdoc.Remove(True)
   End If
   
   While Not (doc Is Nothing)
      
      If doc.form(0)="area" Then
         
         stringvar = stringvar + {<li id="foldheader"><a href="http://spsrv1/igusIntranet80_b.nsf/content/}   & doc.uniqueid(0) & {?Opendocument"  target="content">} & doc.a_area(0)  & {</a></li>}
         Set response = v.getchild(doc)
         If Not (response Is Nothing) Then
            
            stringvar = stringvar + {<ul id="foldinglist"><li><a href="http://spsrv1/igusIntranet80_b.nsf/content/}   & response.uniqueid(0) & {?Opendocument"  target="content">} & response.CSubject(0) & {</a></li>}      
         Else
            
            stringvar = stringvar + {</ul>}
            Goto weiter
         End If
         Set responseCC = v.getchild(response)
         If Not (responseCC Is Nothing) Then
            stringvar = stringvar + {<ul id="foldinglist"><li><a href="http://spsrv1/igusIntranet80_b.nsf/content/}   & responseCC.uniqueid(0) & {?Opendocument"  target="content">} & responseCC.CCSubject(0) & {</a></li></ul>}      
         End If
      Else
         stringvar = stringvar + {</ul>}
      End If
weiter:
      
      stringvarend = stringvarend + stringvar
      stringvar=""
      Set doc = v.GetNextDocument(doc)
      
   Wend   
   
   Set navdoc = db.CreateDocument
   navdoc.form = "konfnav"
   navdoc.label = stringvarend
   Call navdoc.save(True,True)
   
   
   
End Sub
Titel: Re:Dynamisches Java Applet
Beitrag von: Marinero Atlántico am 13.07.04 - 12:59:56
@Andreas: Kannst du nicht die relevanten Teile in eine lauffähige kleine Mini-Anwendung packen. So ist das einfach mission imposible.

Für Resonses gibt es in Script:
Code
NotesDocumentCollection col = doc.responses
Problem dabei ist, dass die Collection unsortiert ist.

Besser ist eigentlich eine dynamische View-Formelsprachenlösung. Das scheint hier aber nicht trivial zu sein.

Gruß Axel
Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 13.07.04 - 14:49:09
Ich versuche es.

Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 14.07.04 - 09:11:41
Hallo an Euch,

ich habe es jetzt soweit hinbekommen, dass alle Dokumente (bis zu 3. Ebenen) ausgedruckt werden und als Link in der Navigation angezeigt werden.

Guckt Ihr unten:

Jetzt muss ich nur noch die Navigation Ein- und Aufklappen drumlegen. Vielleicht geht ja auch der Ansatz. <SPAN></SPAN>

Was meint Ihr ? Kann jemand helfen ?





Sub Initialize
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim v As Notesview
   Dim doc As NotesDocument
   
   Dim stringvarend As String
   Dim navdoc As NotesDocument
   Dim response As NotesDocument
   Dim response2 As NotesDocument
   Dim area As String
   Dim konfview As NotesView
   Dim konfdoc As NotesDocument
   Dim col As NotesDocumentCollection
   Dim i As Integer
   i = 1
   
   
   
   Set db = s.CurrentDatabase
   Set v = db.GetView("content")
   Set doc = v.GetFirstDocument
   
   Set konfview = db.GetView("konfnav")
   Set konfdoc = konfview.GetFirstDocument
   
   If Not (konfdoc Is Nothing) Then
      Call konfdoc.Remove(True)
   End If
   
   While Not (doc Is Nothing)
      
      If doc.form(0)="area" Then
' Schreibt den ersten Link mit dem Subject aus dem Hauptdokument
         stringvar = stringvar + {<h3><a href="http://spsrv1/igusIntranet80_b.nsf/content/}   & doc.uniqueid(0) & {?Opendocument" target="content" onMouseOver="return toggleMenu('menu} & i & {')">} & doc.a_area(0)  & {</a></h3>}
         
' Das erste Antwortdokument zum Hauptdokument laden         
         Set response = v.getchild(doc)
         
         While Not ( response Is Nothing )
            
            stringvar = stringvar + {<a href="http://spsrv1/igusIntranet80_b.nsf/content/}   & response.uniqueid(0) & {?Opendocument"  target="content">} & response.CSubject(0) & {</a><br>}                                 
            
            Set response2 = v.getchild(response)
            
            While Not ( response2 Is Nothing )
               stringvar = stringvar + {<a href="http://spsrv1/igusIntranet80_b.nsf/content/}   & response2.uniqueid(0) & {?Opendocument"  target="content">} & response2.CCSubject(0) & {</a><br>}                                 
               Set response2 = v.GetNextSibling( response2 )
            Wend
            
            Set response = v.GetNextSibling( response )
         Wend
         
      End If
      
weiter:
      
      stringvarend = stringvarend + stringvar
      stringvar=""
      i = i + 1
      Set doc = v.GetNextDocument(doc)
      
   Wend   
   
   Set navdoc = db.CreateDocument
   navdoc.form = "konfnav"
   navdoc.label = stringvarend
   Call navdoc.save(True,True)
   
   
   
End Sub
Titel: Re:Dynamisches Java Applet
Beitrag von: animate am 14.07.04 - 09:25:32
ich weiß echt nicht genau, was du meinst und kann deshalb nicht helfen.

nur ein kleiner Klugscheißer-Tipp noch: es ist keine gute Idee, Server- und DB-Namen hart zu codieren...
Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 14.07.04 - 10:55:30
Also ich bin schon wieder etwas weiter: Ich bin jetzt anders vorgegangen: Vielleicht weißt Du jetzt was ich vor habe.

Guckst Du Code:


Was ich noch nicht hinbekommen habe ist jetzt die 3 Ebene. Also die Kommentare. Vielleicht könntest Du die Schleife für mich erweitern. Mir platz gleich der Kopf



---------------------------

Sub Initialize
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim v As Notesview
   Dim doc As NotesDocument
   
   Dim stringvarend As String
   Dim navdoc As NotesDocument
   Dim response As NotesDocument
   Dim response2 As NotesDocument
   Dim area As String
   Dim konfview As NotesView
   Dim konfdoc As NotesDocument
   Dim col As NotesDocumentCollection
   Dim i As Integer
   i = 0
   
   
   
   Set db = s.CurrentDatabase
   Set v = db.GetView("content")
   Set doc = v.GetFirstDocument
   
   Set konfview = db.GetView("konfnav")
   Set konfdoc = konfview.GetFirstDocument
   
   If Not (konfdoc Is Nothing) Then
      Call konfdoc.Remove(True)
   End If
   
   While Not (doc Is Nothing)
      
      If doc.form(0)="area" Then
         i = i + 1
' Schreibt den ersten Link mit dem Subject aus dem Hauptdokument
         stringvar = stringvar + {<h1><a href="http://spsrv1/igusIntranet80_b.nsf/content/}   & doc.uniqueid(0) & {?Opendocument" target="content" onMouseOver="return toggleMenu('menu} & i & {')">} & doc.a_area(0)  & {</a></h1>}
         
' Das erste Antwortdokument zum Hauptdokument laden   
         Set response = v.getchild(doc)
         
         If Not (response Is Nothing) Then
            stringvar = stringvar + {<SPAN id='menu} & i & {'>}
         End If
         
         While Not ( response Is Nothing )
            
            stringvar = stringvar + {<h1><a href="http://spsrv1/igusIntranet80_b.nsf/content/}   & response.uniqueid(0) & {?Opendocument"  target="content" onMouseOver="return toggleMenu('menu2')">} & response.CSubject(0) & {</a></h1>}                                 
            
            Set response = v.GetNextSibling( response )
            
            If (response Is Nothing) Then
               stringvar = stringvar + {</SPAN>}
            End If
            
         Wend
         Goto weiter
         Set response2 = v.getchild(response)
         While Not ( response2 Is Nothing )
            stringvar = stringvar + {<h1><a href="http://spsrv1/igusIntranet80_b.nsf/content/}   & response2.uniqueid(0) & {?Opendocument"  target="content">} & response2.CCSubject(0) & {</a></h1>}                                 
            Set response2 = v.GetNextSibling( response2 )
            If (response2 Is Nothing) Then
               stringvar = stringvar + {</SPAN>}
            End If               
         Wend
         
      End If
      
weiter:
      
      stringvarend = stringvarend + stringvar
      stringvar=""
      
      Set doc = v.GetNextDocument(doc)
      
   Wend   
   
   Set navdoc = db.CreateDocument
   navdoc.form = "konfnav"
   navdoc.label = stringvarend
   Call navdoc.save(True,True)
   
   
   
End Sub
Titel: Re:Dynamisches Java Applet
Beitrag von: Marinero Atlántico am 14.07.04 - 17:57:05
Ich glaub du musst das
Code
Set response2 = v.getchild(response)
         While Not ( response2 Is Nothing )
            stringvar = stringvar + {<h1><a href="http://spsrv1/igusIntranet80_b.nsf/content/}  & response2.uniqueid(0) & {?Opendocument"  target="content">} & response2.CCSubject(0) & {</a></h1>}                                 
            Set response2 = v.GetNextSibling( response2 )
            If (response2 Is Nothing) Then
               stringvar = stringvar + {</SPAN>}
            End If               
         Wend
vor das wend darüber packen. Und davor noch ein öffnendes Span legen.
Es ist wirklich nicht einfach ohne Daten.
... und ich mache ja gerade deshalb "ach-so-schwierige" Objekt Orientierung, um solche "einfachen" Schleifenkonstruktionen zu vermeiden.
Das ist wohl mehr was für "richtige Programmierer".  ;D
Vielleicht hilft es, wenn du das Resultat.
Also das ausgedruckte html postest:
Und zwar den Ist Zustand und den Sollzustand.

Ausserdem werde ich jetzt noch bis 21:00 Uhr im Büro sitzen und morgen auch.

Gruß Axel
Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 14.07.04 - 20:13:01
Das ist das jetzige Ergebnis-Code (s. auch Image)

<img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/FA6B9C07E756B113C1256EB4003D3185?Opendocument" target="content" onMouseOver="return toggleMenu('menu1')">Drawings BRG</a><br><SPAN id='menu1'><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/BA9AF6A4C4A6B498C1256ED1003FEE8A?Opendocument"  target="content" >Antwort 1</a><br><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/D8082EC5BCAECB7DC1256ED1003FF207?Opendocument"  target="content" >Antwort 2</a><br><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/3056D2F624438664C1256ED1004712E3?Opendocument"  target="content" >Antwort 3</a><br><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/E441C399C72F371DC1256ED1004B7A65?Opendocument"  target="content" >A 4</a><br></SPAN><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/FE6C427EF74FE38EC1256E640033B374?Opendocument" target="content" onMouseOver="return toggleMenu('menu2')">Drawings ECS</a><br><SPAN id='menu2'><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/836406AFAFD9030FC1256ED100400459?Opendocument"  target="content" >Antwort 1</a><br></SPAN><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/156E1321C7FAC46FC1256E6400319726?Opendocument" target="content" onMouseOver="return toggleMenu('menu3')">E-Learning Center</a><br><SPAN id='menu3'><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/7ADF7E4FCEA7FB97C1256ED10040091C?Opendocument"  target="content" >Antwort 1</a><br></SPAN><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/1ABDCF1F3B4FA448C1256E6F0036F114?Opendocument" target="content" onMouseOver="return toggleMenu('menu4')">Engineering Projects</a><br><SPAN id='menu4'><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/15C48FDFBAD11EA1C1256ED100400EF2?Opendocument"  target="content" >Antwort 1</a><br></SPAN><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/8502E4A764C5F144C1256E640031835D?Opendocument" target="content" onMouseOver="return toggleMenu('menu5')">Factory Services</a><br><SPAN id='menu5'><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/5F3C97EDB5D06F84C1256ED100401587?Opendocument"  target="content" >Antwort 1</a><br></SPAN><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/E11A948CEDC0B5E2C1256E64003376B8?Opendocument" target="content" onMouseOver="return toggleMenu('menu6')">Intranet Services</a><br><SPAN id='menu6'><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/3AA4FF89A61214C3C1256ED10041CAE4?Opendocument"  target="content" >Antwort 1</a><br><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/2DE29743B4DB610CC1256ED10041D014?Opendocument"  target="content" >Antwort 2</a><br></SPAN><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/16771DA7C80F7889C1256E640033D67E?Opendocument" target="content" onMouseOver="return toggleMenu('menu7')">Miscellaneous</a><br><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/C8487F6AB88F6776C1256E640033C352?Opendocument" target="content" onMouseOver="return toggleMenu('menu8')">Project Bluemilk</a><br><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/C6131B6D45203BEBC1256E77003419CF?Opendocument" target="content" onMouseOver="return toggleMenu('menu9')">Projekts</a><br><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/96AB2FF6FE8097B9C1256E640031A9B2?Opendocument" target="content" onMouseOver="return toggleMenu('menu10')">Sales Tools</a><br><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/FAD8BCD968FD94F6C1256E6400339EC9?Opendocument" target="content" onMouseOver="return toggleMenu('menu11')">Technical Data BRG</a><br><SPAN id='menu11'><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/BEF59A7FC7958B79C1256ED1003FFEB9?Opendocument"  target="content" >Antwort 1</a><br></SPAN><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/ECBF772126880149C1256E640033942F?Opendocument" target="content" onMouseOver="return toggleMenu('menu12')">Technical Data ECS</a><br><SPAN id='menu12'><img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/E49BCEDE010D2D4AC1256ED1003FF7A3?Opendocument"  target="content" >Antwort 1</a><br></SPAN>


Und das ist das Script, das dieses Ergebnis erzeugt.

Sub Initialize
   Dim s As New NotesSession
   Dim db As NotesDatabase
   Dim v As Notesview
   Dim doc As NotesDocument
   
   Dim stringvarend As String
   Dim navdoc As NotesDocument
   Dim response As NotesDocument
   Dim area As String
   Dim konfview As NotesView
   Dim konfdoc As NotesDocument
   Dim col As NotesDocumentCollection
   Dim i As Integer
   
   i = 0
   
   
   
   Set db = s.CurrentDatabase
   Set v = db.GetView("content")
   Set doc = v.GetFirstDocument
   
   Set konfview = db.GetView("konfnav")
   Set konfdoc = konfview.GetFirstDocument
   
   If Not (konfdoc Is Nothing) Then
      Call konfdoc.Remove(True)
   End If
   
   While Not (doc Is Nothing)
      
      If doc.form(0)="area" Then
         i = i + 1
         
' Schreibt den ersten Link mit dem Subject aus dem Hauptdokument
         stringvar = stringvar + {<img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/}   & doc.uniqueid(0) & {?Opendocument" target="content" onMouseOver="return toggleMenu('menu} & i & {')">} & doc.a_area(0)  & {</a><br>}
         
' Das erste Antwortdokument zum Hauptdokument laden   
         Set response = v.getchild(doc)
         
         If Not (response Is Nothing) Then
            stringvar = stringvar + {<SPAN id='menu} & i & {'>}
         End If
         
         While Not ( response Is Nothing )
            
            stringvar = stringvar + {<img src="pfeil.gif"><a href="http://spsrv1/igusIntranet80_b.nsf/content/}  & response.uniqueid(0) & {?Opendocument"  target="content" >}  & response.CSubject(0) & {</a><br>}                                 
            
            Set response = v.GetNextSibling( response )
            
            If (response Is Nothing) Then
               stringvar = stringvar + {</SPAN>}
            End If
            
         Wend
         
      End If
      
weiter:
      
      stringvarend = stringvarend + stringvar
      stringvar=""
      
      Set doc = v.GetNextDocument(doc)
      
   Wend   
   
   Set navdoc = db.CreateDocument
   navdoc.form = "konfnav"
   navdoc.label = stringvarend
   Call navdoc.save(True,True)
   
   
End Sub


Puh.... man ist das hartnäckig.



Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 15.07.04 - 12:45:32
Hi Axel,

ich bin jetzt selbst bis zur Kommentar-Ebene gekommen. Um 23.45 Uhr hatte ich die Lösung.

Ich denke ich komme jetzt für die weiteren Ebenen selbst klar.

Gruss

Andreas:

PS: Danke für die Hilfe ---- Leider warst Du einer der Einzigen, die sich zu meinem Problem geäußert hatten. Schade. Mein Problem sollte doch nicht so selten sein und Lösungen gibt es bestimmt schon.
Titel: Re:Dynamisches Java Applet
Beitrag von: Marinero Atlántico am 15.07.04 - 17:11:00
cool  8)
In der Zwischenzeit kannst du vielleicht mal das hier ausprobieren.  ;D
http://www.codestore.net/store.nsf/unid/EPSD-5W4M2G?OpenDocument (http://www.codestore.net/store.nsf/unid/EPSD-5W4M2G?OpenDocument)
Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 15.07.04 - 22:08:46
Diese Lösung sieht wirklich Klasse aus. Echt geil. Die Grafische Darstellung gefällt mir sehr gut. Ich werde mir diese Lösung unbedingt ansehen.

Meine Jetzige Lösung klappt bei einem Mouseover die Gliederung auf und mit OnClick wird dann das Dokument geöffnet.

Lieber hätte ich es, das beim KLICK beides passiert, aber die Methode Onlick scheint sofort beim Attribut <a> sofort belegt zu sein. Gibt es da eine Möglichkeit den OnClick für beides zu verwenden ?

Perfection is all.

gruss

Andreas
Titel: Re:Dynamisches Java Applet
Beitrag von: Marinero Atlántico am 16.07.04 - 17:52:39

Lieber hätte ich es, das beim KLICK beides passiert, aber die Methode Onlick scheint sofort beim Attribut <a> sofort belegt zu sein. Gibt es da eine Möglichkeit den OnClick für beides zu verwenden ?

Der moralinsaure Satz zum Freitagabend:
Ich find das keine Perfektion, sondern ziemlich normal. Schliesslich müssen die User länger mit der Anwendung arbeiten als du das da herausbekommt.

Ich glaube, das könnte funktionieren, wenn du im onClick des links return false zurückgibst. Warum ist da überhaupt ein Link?

Ich habe jetzt auch langsam begriffen, was du da für eine Ansicht hast. Da ist eine Spalte mit lauter response-to-response Dokumenten.

Die theoretisch besten Lösungen wären wohl gewesen:
1. xml aus Ansicht herausschreiben und daraus mit xslt die entsprechende Navigations-Html erzeugen.
2. wenn mit Lotusscript, dann rekursiv.

Aber du scheinst ja quasi fertig zu sein. Das sieht optisch gut aus.

Gruß Axel
Titel: Re:Dynamisches Java Applet
Beitrag von: CLI_Andreas_Schmidt am 20.07.04 - 08:45:13

Jetzt hast Du es. Genau das ist es. Eine Response to Response Ansicht, die in eine Navigation umgewandelt wird. Mit XML hätte ich es gerne gemacht, nur fehlte mir da der Ansatz und die Vorgehensweise mit dem XSLT. Ich habe es jetzt mit DHTML gemacht. Läuft auch super schnell.

Ich werde einmal das "return false" einbauen. Wenn es klappt, ist das auf jeden Fall eine schönere Lösung. Obwohl das mit dem MousOver ziemlich cool aussieht. Aber Klicken ist einfach besser.

Das mit dem XML könnten wir doch noch mal diskutieren ?

Gruss

Andreas
Titel: Re:Dynamisches Java Applet
Beitrag von: Marinero Atlántico am 20.07.04 - 09:03:59

Ich werde einmal das "return false" einbauen. Wenn es klappt, ist das auf jeden Fall eine schönere Lösung. Obwohl das mit dem MousOver ziemlich cool aussieht. Aber Klicken ist einfach besser.

Das mit dem XML könnten wir doch noch mal diskutieren ?

Ja, klar. Problem ist, dass ich z.Zt.:
a) dringend Urlaub brauche
b) viel zu tun habe (Widerspruch zu a)
c) irgendwie getrieben werde, mir ständig neue Technologien reinzuziehen (Widerspruch zu a) und b)).

Ich meinte das mit dem xml eigentlich so, dass per xslt dhtml erzeugt wird. Es soll also kein xml an den Browser geschickt werden. Das gilt heute - wenn ich das letzte Woche bei längeren Diskussionen auf der Ranch richtig verstanden habe - auch unter hardcore xml-freaks als im Sinne der Performance nicht praktikabel.
Man kann aber sehr wohl das, was du jetzt über LotusScript machst, mit xml/xslt aufgerufen über LotusScript oder Java machen. Und ich glaube das ergibt besseren code.

Gruß
Titel: Re:Dynamisches Java Applet
Beitrag von: Marinero Atlántico am 20.07.04 - 18:22:31

Ich werde einmal das "return false" einbauen. Wenn es klappt, ist das auf jeden Fall eine schönere Lösung. Obwohl das mit dem MousOver ziemlich cool aussieht. Aber Klicken ist einfach besser.
Glaub du musst einfach das erzeugte dhtml ein bischen umschreiben.
Die MouseOver Funktionalität gehört in den "Verzeichnis-Nodes" in das onClick. Vielleicht finde ich die Zeit, mir das nochmal anzuschauen.