Benutzer-Werkzeuge

Webseiten-Werkzeuge


develop:faq

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
develop:faq [d.m.Y H:i] willuhndevelop:faq [d.m.Y H:i] (aktuell) – Kleiner Bug bei Einrichtung unter Windows. eickler
Zeile 2: Zeile 2:
  
 Diese FAQ hat Reinhold (Autor von [[http://www.jollina.de|Jollina]]) aus einer Reihe von ausgetauschten Mails zusammengestellt.  Diese FAQ hat Reinhold (Autor von [[http://www.jollina.de|Jollina]]) aus einer Reihe von ausgetauschten Mails zusammengestellt. 
 +
 +
 +
 +
 +===== CVS / Eclipse =====
  
 ==== Kann ich jameica via CVS aktuell halten ? ==== ==== Kann ich jameica via CVS aktuell halten ? ====
Zeile 13: Zeile 18:
 | Connection type | pserver | | Connection type | pserver |
  
-Einrichtung wie gewohnt in Eclipse ueber die View "CVS Repositories" und dort Rechtsklick und "New->Repository Location" im Contextmenu waehlen.+Einrichtung wie gewohnt in Eclipse über die View "CVS Repositories" und dort Rechtsklick"New->Repository Location" im Contextmenu wählen.
  
 +
 +
 +==== Wie richte ich mir das Beispiel-Plugin in Eclipse ein? ====
 +  * Lade dir den Source des Nightly-Build von Jameica sowie den Source Beispiel-Plugins von [[http://www.willuhn.de/projects/jameica/?page=download_ext]]
 +  * Die ZIP-Dateien enthalten "betriebsbereite" Eclipse-Projekte. Sie müssen also nur entpackt werden und können anschliessend über den "Navigator" oder "Project Explorer" in Eclipse mittels "import existing project into workspace" importiert werden. 
 +  * Falls unter Windows entwickelt wird, muß die Windows-Version von swt.jar verwendet werden. Im Java Build Path des Projekts "jameica" also "swt.jar" editieren und auf die Version im "win32"-Verzeichnis ändern.
 +  * Nun sollten sich in Eclipse beide Projekte befinden. Der Classpath sollte jeweils schon richtig konfiguriert sein. "jameica_exampleplugin" referenziert hierbei den Classpath des Projekts "jameica". Damit sollte sich jetzt alles fehlerfrei kompilieren lassen.
 +  * Leg eine Launch-Konfiguration mit folgenden Eigenschaften an:
 +  
 +^ Name ^ Wert ^
 +|Project |jameica |
 +|Main-Class | de.willuhn.jameica.Main |
 +| Program-Arguments | "-f /home/<username>/.jameica.test -p test". Der Parameter "-f" gibt ein vom Standard abweichendes Plugin-Verzeichnis vor, "-p" übergibt das Master-Passwort direkt, sodass es beim Starten im Eclipse-Degbugger nicht immer manuell eingegeben werden muss|
 +| VM-Arguments | "-Djava.library.path=lib/swt/linux" bzw. "-Djava.library.path=lib/swt/win32" (abhängig vom verwendeten Betriebssystem)|
 +| Classpath | Default-Classpath des Projekts "jameica" |
 +
 +  * Starte nun Jameica. Hierbei wird die Anwendung ohne Plugins geladen, das Benutzerverzeichnis wurde jedoch samt Config-Dateien angelegt.
 +  * Beende Jameica wieder.
 +  * Öffne die Datei .jameica.test/cfg/de.willuhn.jameica.system.Config.properties in einem Text-Editor und füge mit relativen Pfaden das Plugin-Verzeichnisse für das Beispiel-Plugin hinzu:
 +
 +<code>
 +  [...]
 +  jameica.plugin.dir.0=plugins
 +  jameica.plugin.dir.1=../jameica_exampleplugin
 +  [...]
 +</code>
 +
 +  * Starte Jameica in Eclipse erneut. Der PluginLoader sucht nun im Verzeichnis "jameica_exampleplugin" ebenfalls nach Plugins und wird im "bin"-Verzeichnis fündig (dort hat Eclipse ja hinkompiliert).
 +  * Die Auto-Install-Routine des Plugins sollte anspringen und die Datenbank in ".jameica.test/jameica_exampleplugin/db" anlegen.
 +  * Sollten Exceptions des Typs "StubNotFoundException" auftreten, dann fehlen RMI-Stubs. Wähle in Eclipse "Project->Clean", damit das Projekt neu kompiliert wird. Hierbei wird u.a. "build/rmic.xml" aufgerufen, welches die RMI-Stubs erzeugt.
 +
 +
 +==== Eclipse-Fehlermeldung: A cycle was detected in the build path of project ====
 +Dieser Fehlercode tritt auf, wenn zwei Plugin's gegenseitig auf die Daten des jeweils anderen Plugin zugreifen.
 +Folgende Einstellungen in den Project/Properties von eclipse sind zu treffen:
 +  * In der Navigation //java Compiler/Building// auswaehlen
 +  * Im Abschnitt "Build path problems" den Auswahlpunkt //Circular dependies// auf **Warning** umstellen
 +
 +Eclipse compiliert nun alle Projekte neu - fertig .
 +
 +
 +===== SWT =====
  
 ==== Wenn ich aus einem separaten Thread auf die GUI zugreifen will, erhalte ich eine SWTException ==== ==== Wenn ich aus einem separaten Thread auf die GUI zugreifen will, erhalte ich eine SWTException ====
-SWT ist single-threaded. Greift man nicht aus dem GUI-Thread heraus auf SWT-Komponenten zu, erscheint eine "SWTException: Invalid Thread Access" kriegen. Das kannst man umgehen, indem man die Aktion über die Job-Queue von SWT abwickelt.+SWT ist single-threaded. Greift man nicht aus dem GUI-Thread heraus auf SWT-Komponenten zu, erscheint eine "SWTException: Invalid Thread Access". Das kannst man umgehen, indem die Aktion über die SWT-Job-Queue ausgeführt wird.
  
 <code java> <code java>
Zeile 31: Zeile 78:
 </code> </code>
  
-==== Kann ich einzelne Elemente der Navigation oder des Menues zur Laufzeit aktivieren/deaktivieren? ==== 
-Ja, wie folgt: 
- 
-<code java> 
-  PluginContainer pc = Application.getPluginLoader().getPluginContainer(<Pluginklasse>.class); 
-   
-  // Entweder: Ermitteln des Navigationsbaumes (links in Jameica) 
-  Item item = pc.getManifest().getNavigation(); 
-   
-  // Oder: Menu (oben in Jameica) 
-  Item item = pc.getManifest().getMenu(); 
-   
-  // Der erste Parameter legt fest, ob das Element aktiv oder inaktiv sein soll. 
-  // Mit dem zweiten Parameter kann die Einstellung rekursiv für alle ggf. vorhandenen Kind-Elemente übernommen werden 
-  item.setEnabled(false,true); 
-</code> 
  
 ==== Kann ich ausser den GUI-Elementen von jameica auch normale SWT-Widgets verwenden? ==== ==== Kann ich ausser den GUI-Elementen von jameica auch normale SWT-Widgets verwenden? ====
Zeile 95: Zeile 126:
  
 ** Hinweis**: Das Composite, welches man von AbstractView via getParent() erhaelt, besitzt bereits ein 1-spaltiges GridLayout. ** Hinweis**: Das Composite, welches man von AbstractView via getParent() erhaelt, besitzt bereits ein 1-spaltiges GridLayout.
 +
 +
 +==== Wann muss ich SWT-Komponenten disposen ====
 +Wenn sie als Bestandteil einer View angelegt wurden, müssen sie nicht manuell disposed werden. Das übernimmt Jameica automatisch rekursiv, sobald eine View verlassen wird.
 +
 +
 +
 +
 +
 +===== Jameica-API =====
 +
 +==== Kann ich einzelne Elemente der Navigation oder des Menues zur Laufzeit aktivieren/deaktivieren? ====
 +Ja, wie folgt:
 +
 +<code java>
 +  Manifest mf = Application.getPluginLoader().getManifest(<Pluginklasse>.class);
 +  
 +  // Entweder: Ermitteln des Navigationsbaumes (links in Jameica)
 +  NavigationItem item = mf.getNavigation();
 +  
 +  // Oder: Menu (oben in Jameica)
 +  MenuItem item = mf.getMenu();
 +  
 +  // Der erste Parameter legt fest, ob das Element aktiv oder inaktiv sein soll.
 +  // Mit dem zweiten Parameter kann die Einstellung rekursiv für alle ggf. vorhandenen Kind-Elemente übernommen werden
 +  item.setEnabled(false,true);
 +</code>
  
  
Zeile 134: Zeile 192:
   }   }
 </code> </code>
 +
  
 ==== Kann ich die relevanten Verzeichnisse (Programm-, Config-, Datenverzeichnis) irgendwie ermitteln? ==== ==== Kann ich die relevanten Verzeichnisse (Programm-, Config-, Datenverzeichnis) irgendwie ermitteln? ====
Zeile 156: Zeile 215:
   String dir = Application.getPluginLoader().getPlugin(<PluginClass>.class).getResources().getWorkPath();   String dir = Application.getPluginLoader().getPlugin(<PluginClass>.class).getResources().getWorkPath();
 </code> </code>
 +
  
 ==== Ich möchte in meinem Plugin Einstellungen speichern. Welche Jameica-Bordmittel sind hierfür vorhanden? ==== ==== Ich möchte in meinem Plugin Einstellungen speichern. Welche Jameica-Bordmittel sind hierfür vorhanden? ====
Zeile 244: Zeile 304:
   // Das Senden und Zustellen der Nachrichten erfolgt plugin-übergreifend   // Das Senden und Zustellen der Nachrichten erfolgt plugin-übergreifend
 </code> </code>
 +
  
 ==== Kann man an eine Tabelle einen Listener anhaengen, der aufgerufen wird, wenn eine Zeile der Tabelle mit einfachem Klick markiert wird? ==== ==== Kann man an eine Tabelle einen Listener anhaengen, der aufgerufen wird, wenn eine Zeile der Tabelle mit einfachem Klick markiert wird? ====
Zeile 258: Zeile 319:
 </code> </code>
  
-==== Ich moechte einen Listener an einen TextInput anhaengen. Wie geht das? ====+ 
 +==== Ich möchte einen Listener an einen TextInput anhaengen. Wie geht das? ====
  
 <code java> <code java>
Zeile 273: Zeile 335:
   });   });
 </code> </code>
 +
  
 ==== Kann ich Formulareingaben gliedern, zum Beispiel mit Tab-Reitern? ==== ==== Kann ich Formulareingaben gliedern, zum Beispiel mit Tab-Reitern? ====
Zeile 309: Zeile 372:
 </code> </code>
  
-==== Wie definiere ich in dem SQL-Create-Script für die embedded McKoi-Datenbank einen Primär-Schlüssel mit Autoincrement-Funktion? ==== 
-<code sql> 
-  CREATE TABLE foo ( 
-    id NUMERIC default UNIQUEKEY('foo'), 
-    name varchar(20) NOT NULL, 
-    [...] 
-    PRIMARY KEY (id) 
-  ); 
-</code> 
  
 ==== Wie definiere ich einzelne Menü- oder Navigationselemente in der plugin.xml? ==== ==== Wie definiere ich einzelne Menü- oder Navigationselemente in der plugin.xml? ====
Zeile 341: Zeile 395:
   }   }
 </code> </code>
 +
 +
 +==== Wie definiere ich in dem SQL-Create-Script für die embedded McKoi-Datenbank einen Primär-Schlüssel mit Autoincrement-Funktion? ====
 +<code sql>
 +  CREATE TABLE foo (
 +    id NUMERIC default UNIQUEKEY('foo'),
 +    name varchar(20) NOT NULL,
 +    [...]
 +    PRIMARY KEY (id)
 +  );
 +</code>
 +
  
 ==== Wie kann ich die SQL-Datenbank beim ersten Start des Plugins automatisch anlegen? ==== ==== Wie kann ich die SQL-Datenbank beim ersten Start des Plugins automatisch anlegen? ====
Zeile 393: Zeile 459:
   );   );
 </code> </code>
 +
  
 ==== Wie sieht die Package-Gliederung des Codes im Beispiel-Plugin aus? ==== ==== Wie sieht die Package-Gliederung des Codes im Beispiel-Plugin aus? ====
Zeile 406: Zeile 473:
 | .gui.menus | Context-Menus | | .gui.menus | Context-Menus |
 |.gui.action | Klassen, die das Interface de.willuhn.jameica.gui.Action implementieren und die Aufgaben kapseln, die bei Benutzer-Interaktivität ausgelöst werden können | |.gui.action | Klassen, die das Interface de.willuhn.jameica.gui.Action implementieren und die Aufgaben kapseln, die bei Benutzer-Interaktivität ausgelöst werden können |
- 
-==== Wann muss ich SWT-Komponenten disposen ==== 
-Wenn sie als Bestandteil einer View angelegt wurden, müssen sie nicht manuell disposed werden. Das übernimmt Jameica automatisch rekursiv, sobald eine View verlassen wird. 
- 
-==== Wie richte ich mir das Beispiel-Plugin in Eclipse ein? ==== 
-  * Lade dir den Source des Nightly-Build von Jameica sowie den Source Beispiel-Plugins von [[http://www.willuhn.de/projects/jameica/?page=download_ext]] 
-  * Die ZIP-Dateien enthalten "betriebsbereite" Eclipse-Projekte. Sie müssen also nur entpackt werden und können anschliessend über den "Navigator" oder "Project Explorer" in Eclipse mittels "import existing project into workspace" importiert werden. 
-  * Nun sollten sich in Eclipse beide Projekte befinden. Der Classpath sollte jeweils schon richtig konfiguriert sein. "jameica_exampleplugin" referenziert hierbei den Classpath des Projekts "jameica". Damit sollte sich jetzt alles fehlerfrei kompilieren lassen. 
-  * Leg eine Launch-Konfiguration mit folgenden Eigenschaften an: 
-   
-^ Name ^ Wert ^ 
-|Project |jameica | 
-|Main-Class | de.willuhn.jameica.Main | 
-| Program-Arguments | "-f /home/<username>/.jameica.test -p test". Der Parameter "-f" gibt ein vom Standard abweichendes Plugin-Verzeichnis vor, "-p" übergibt das Master-Passwort direkt, sodass es beim Starten im Eclipse-Degbugger nicht immer manuell eingegeben werden muss| 
-| VM-Arguments | "-Djava.library.path=lib/swt/linux" bzw. "-Djava.library.path=lib/swt/win32" (abhängig vom verwendeten Betriebssystem)| 
-| Classpath | Default-Classpath des Projekts "jameica" | 
- 
-  * Starte nun Jameica. Hierbei wird die Anwendung ohne Plugins geladen, das Benutzerverzeichnis wurde jedoch samt Config-Dateien angelegt. 
-  * Beende Jameica wieder. 
-  * Öffne die Datei .jameica.test/cfg/de.willuhn.jameica.system.Config.properties in einem Text-Editor und füge mit relativen Pfaden das Plugin-Verzeichnisse für das Beispiel-Plugin hinzu: 
- 
-<code> 
-  [...] 
-  jameica.plugin.dir.0=plugins 
-  jameica.plugin.dir.1=../jameica_exampleplugin 
-  [...] 
-</code> 
- 
-  * Starte Jameica in Eclipse erneut. Der PluginLoader sucht nun im Verzeichnis "jameica_exampleplugin" ebenfalls nach Plugins und wird im "bin"-Verzeichnis fündig (dort hat Eclipse ja hinkompiliert). 
-  * Die Auto-Install-Routine des Plugins sollte anspringen und die Datenbank in ".jameica.test/jameica_exampleplugin/db" anlegen. 
-  * Sollten Exceptions des Typs "StubNotFoundException" auftreten, dann fehlen RMI-Stubs. Wähle in Eclipse "Project->Clean", damit das Projekt neu kompiliert wird. Hierbei wird u.a. "build/rmic.xml" aufgerufen, welches die RMI-Stubs erzeugt. 
- 


Impressum | Datenschutz
develop/faq.1175093865.txt.gz · Zuletzt geändert: d.m.Y H:i von willuhn