Dokumentation | 
Das Java Custom Class Interface
Arachnophilia © Copyright 2011, P. Lutus.
Arachnophilia ist CareWare (Englische Webseite)

Übersetzt ins Deutsche von Wolfram Strempfer

Mittels System-Makros kann Arachnophilia mit externen Java-Klassen interagieren, die der Anwender selbst geschrieben hat oder von jemandem anders zur Verfügung gestellt wurden. Das heißt genaugenommen, dass jedwede Funktion in Arachnophilia eingebaut werden könnte.

Und so geht das:

So sieht die grundsätzliche Idee dahinter aus, und die meisten Programmierer werden damit keinerlei Probleme haben. Nur als Beispiel rufen wir aber nun eine Beispiel-Klasse auf, die mit Arachnophilia zusammen installiert wird.

Hier ist das Listing der Testklasse (Kopieren Sie sich den Block unterhalb, wenn Sie etwas experimentieren wollen):

        
/*
 * Created on Oct 26, 2009 12:06:55 PM
 */

/* TestClass is meant to demonstrate the use
 * of Arachnophilia's custom class launcher feature.
 * Just compile this class in place, create
 * a macro that looks like this:
 * "[RunCustomClassDoc:CustomClasses/TestClass]",
 * load a suitable document, and activate the macro.
 */

package CustomClasses;

import java.util.*;

public class TestClass {
   
   // this is a generic, minimal global search & replace method
   
   private String searchReplace(String data,String find,String replace)
   {
      StringBuffer sb = new StringBuffer();
      int a = 0,b;
      int findLength = find.length();
      while((b = data.indexOf(find,a)) != -1) {
         sb.append(data.substring(a,b));
         sb.append(replace);
         a = b + findLength;
      }
      if(a < data.length()) {
         sb.append(data.substring(a));
      }
      return sb.toString();
   }
   
   // this is the default method that custom classes
   // must have to work with Arachnophilia's class
   // launcher feature unless a specific method name
   // is provided
   
   public String processString(String s)
   {
      String result = "Hello! This is an example of Java Custom Class Interfacing!\n\n"
      + "You sent over this:\n"
      + "\"" + s + "\"\n"
      + "Here it is all uppercase:\n"
      + "\"" + s.toUpperCase() + "\"\n"
      + "Here it is all lowercase:\n"
      + "\"" + s.toLowerCase() + "\"\n"
      + "Here it is with a global change:\n"
      + "\"" + searchReplace(s,"a","(A)") + "\"\n";
      return result;
   }
   
   // this is another method to show the ability to choose
   // any method by name
   
   public String reallyBoringMethod(String s)
   {
      return "On " + new Date() + ", you invoked this really boring Java method.";
   }
}

        
        
Diese Testklasse wurde schon erstellt und kompiliert, und sie sollte sich in Ihrem Benutzerverzeichnis in einem Unterverzeichnis mit dem Namen "CustomClasses" befinden. Schauen wir mal, ob das so ist. :-)

Erstellen Sie ein neues Textdokument und schreiben Sie irgendwas hinein. Hier ist unser Beispiel-Text:
Das ist ein Test-Satz.
Nun suchen Sie den Menüpunkt Programmierung ... Klassen-Demo und klicken darauf. Das Makro, welches sich inter diesem Menüpunkt verbirgt, hat standardmäßig diesen Inhalt:

[RunCustomClassDoc:CustomClasses/TestClass]
Dieses Makro bedeutet: "Suche eine Java-Klasse in einem Unterverzeichnis des Arachnophilia-Benutzerverzeichnisses, welches "CustomClasses" heißt, suche dort nach einer Klasse mit dem Namen "TestClass" und starte eine Methode namens 'ProcessString' mit dem Inhalt des aktuellen Dokuments als Argument."

Aus unserem Beispielsatz wird nun dieses:

Hello! This is an example of Java Custom Class Interfacing!

You sent over this:
"Da ist ein Testsatz."
Here it is all uppercase:
"DA IST EIN TESTSATZ."
Here it is all lowercase:
"da ist ein testsatz."
Here it is with a global change:
"D(A) ist ein Tests(A)tz."
          

Wenn das Makro wie oben angewandt wird, wird es annehmen, dass eine Public-Methode namens "ProcessString" existiert, und es wird Ihnen auch mitteilen, wenn es diese nicht findet. Wenn Sie einen anderen Methoden-Namen benutzen wollen, dann geben Sie ihn einfach mit an, wie zum Beispiel hier:

[RunCustomClassDoc:CustomClasses/TestClass.reallyBoringMethod]

Zufälligerweise haben wir eine Methode mit diesem Namen in unserer Test-Klasse, und wenn sie aufgerufen wird, gibt sie soetwas wie dieses hier zurück:
On Thu Apr 04 20:18:46 CEST 2002, you invoked this really boring Java method.
          

Die externen Java-Klassen können an jeder Stelle im Arachnophilia-Benutzerverzeichnis oder in einem Unterverzeichnis sein, und es dürfen beliebig viele Methoden mit beliebigen Namen in den Klassen enthalten sein. Das einzige, was vorausgesetzt wird, ist, dass die Methoden Public sein müssen und dass sie einen String empfangen und zurückgeben müssen.

 

Dokumentation |