This project is a simple ZK addon based on ZK CE (community edition) that wraps various browser built-in JavaScript API in Java.
Require Maven installed.
- Run
mvn jetty:run
- Navigate to
http://localhost:8080/browser-kit/
see *.java and *.zul under src/test/
Both ClipboardHelper and GeolocationHelper implement a unified, stateless design pattern that provides seamless integration with ZK applications.
Both helpers implement a consistent stateless architecture with auto-initialization and singleton AuService pattern for optimal resource management and developer experience.
- All public methods are static for simplified usage
- No instance management required - just call the methods directly
- Single AuService instance shared across all desktops
- Desktop-level initialization tracking prevents duplicate setup
- Efficient resource utilization with proper cleanup support
Browser API → JavaScript Helper → zAu.send(desktop event) → AuService → Desktop Event → Component Listeners
The ClipboardHelper provides static access to the browser's Clipboard API for reading and writing clipboard content.
// Writing to clipboard
ClipboardHelper.writeText("Hello World");
// Reading from clipboard (results via events)
ClipboardHelper.readText();
// Listening for results
@Listen(ClipboardEvent.EVENT_NAME + " = #root")
public void handleClipboard(ClipboardEvent event) {
ClipboardResult result = event.getClipboardResult();
if (result.isSuccess()) {
processClipboardContent(result.getText());
}
}
The GeolocationHelper provides static access to the browser's Geolocation API for requesting user location.
// Request current position
GeolocationHelper.getCurrentPosition();
// Listen for results
@Listen(GeolocationEvent.EVENT_NAME + " = #root")
public void handleGeolocation(GeolocationEvent event) {
if (event.isSuccess()) {
GeoLocationPosition position = event.getGeoLocationPosition();
processLocation(position);
} else {
handleLocationError(event.getGeoLocationPositionError());
}
}
- Simplified API: No instance management - direct static method calls
- Desktop-level Events: Multiple composers can listen independently
- Resource Efficiency: Singleton AuService pattern minimizes overhead
- Clean Lifecycle: Optional
dispose()
method for explicit cleanup
sequenceDiagram
participant Java as Static Helper Method
participant Init as Auto-initialization
participant AU as Singleton AuService
participant JS as JavaScript Helper
participant Browser as Browser API
Java->>Init: Call static method
Init->>Init: Check desktop initialization
Init->>AU: Add singleton AuService to desktop
Init->>JS: Load JavaScript helper
Java->>Browser: Execute API call via JS
Browser->>JS: Return result/error
JS->>AU: Send desktop event
AU->>Java: Post GeolocationEvent/ClipboardEvent
- ClipboardHelper: see ClipboardComposer.java
- GeolocationHelper: see LocationComposer.java
Note: Both helpers require user permissions and are subject to browser support and security restrictions.
- change version in
pom.xml
to official version - run release
- set tag in GitHub as version (e.g.
v1.0.0
) - Publish to ZK Maven CE repository with jekins3/PBFUM
-
freshly
./release.sh
-
Official
./release.sh official
- Source Code - Apache License 2.0