- Built with Maven
- Source and runtime upped to Java 7
- Packaged as both zip archives and Windows setup program
- First attempt at visually repositioning a city if it goes out of view
Showing posts with label Worldclock. Show all posts
Showing posts with label Worldclock. Show all posts
Sunday, 21 April 2013
Worldclock 0.7, Worldclock Saver 0.8, Worldclock editor 1.0
Changes:
Labels:
Java7,
Worldclock
Sunday, 25 November 2012
Worldclock on Jigsaw and HK2
In the previous post I 'ported' HK2 to work on Jigsaw, in this post I adapt Worldclock to use it.
gedit ~/dev/worldclock-hk2/panel/src/main/java/lh.worldclock.panel/lh/worldclock/core/WorldClockBoard.java & )
Overwrite the existing pom and module info for the application:
Adjust WorldClockPanel:
replace constructor start with:
add import
remove the initialisation of pane
replace constructor start with:
add imports
replace class declaration
make the frame non static
make void showWindow() non static and change
to add the board
make private PopupMenu createPopup() non static
add the following new methods
Time to run:
Retrieving the existing code:
svn checkout https://svn.java.net/svn/worldclock-application~svn/tags/application6-jigsaw-maven ~/dev/worldclock-hk2
And the new pom and module-info:
svn checkout https://svn.kenai.com/svn/lh-playground~svn/jigsaw/worldclock-hk2 ~/dev/worldclock-hk2-downloads
Panel
Overwrite the existing pom and module info for the panel:cp ~/dev/worldclock-hk2-downloads/panel/pom.xml ~/dev/worldclock-hk2/panel/(update the libraryDirectory path for your set up / username, gedit ~/dev/worldclock-hk2/panel/pom.xml & )
cp ~/dev/worldclock-hk2-downloads/panel/src/main/java/lh.worldclock.panel/module-info.java ~/dev/worldclock-hk2/panel/src/main/java/lh.worldclock.panel/Add the sample HK2 dependency injection contract:
mkdir -p ~/dev/worldclock-hk2/panel/src/main/java/lh.worldclock.panel/lh/worldclock/hk2/
gedit ~/dev/worldclock-hk2/panel/src/main/java/lh.worldclock.panel/lh/worldclock/hk2/PanelProvider.java &then add the content
package lh.worldclock.hk2;Add the sample HK2 dependency injection service:
import lh.worldclock.core.WorldClockBoard;
import org.jvnet.hk2.annotations.Contract;
@Contract
public interface PanelProvider
{
WorldClockBoard getPanel();
}
gedit ~/dev/worldclock-hk2/panel/src/main/java/lh.worldclock.panel/lh/worldclock/hk2/PanelProviderImpl.java &then add the content
package lh.worldclock.hk2;build
import lh.worldclock.core.WorldClockBoard;
import org.jvnet.hk2.annotations.Service;
@Service
public class PanelProviderImpl implements PanelProvider
{
@Override
public WorldClockBoard getPanel()
{
return new WorldClockBoard();
}
}
cd ~/dev/worldclock-hk2/panel/(if the build fail due to invalid characters, edit the file and remove the comments
mvn -Dmaven.test.skip=true clean install
gedit ~/dev/worldclock-hk2/panel/src/main/java/lh.worldclock.panel/lh/worldclock/core/WorldClockBoard.java & )
Application
Overwrite the existing pom and module info for the application:
cp ~/dev/worldclock-hk2-downloads/application/pom.xml ~/dev/worldclock-hk2/application/(update the libraryDirectory path for your set up / username, gedit ~/dev/worldclock-hk2/application/pom.xml & )
cp ~/dev/worldclock-hk2-downloads/application/src/main/java/lh.worldclock.application/module-info.java ~/dev/worldclock-hk2/application/src/main/java/lh.worlclock.application/
Adjust WorldClockPanel:
gedit ~/dev/worldclock-hk2/application/src/main/java/lh.worlclock.application/lh/worldclock/WorldClockPanel.java &
replace constructor start with:
public WorldClockPanel(final WorldClockBoard board)Adjust WorldClockFrame:
{
// board = new WorldClockBoard();
this.board = board;
gedit ~/dev/worldclock-hk2/application/src/main/java/lh.worlclock.application/lh/worldclock/WorldClockFrame.java &
add import
import lh.worldclock.core.WorldClockBoard;
remove the initialisation of pane
WorldClockPanel pane;
replace constructor start with:
public WorldClockFrame(ImageIcon icon, final WorldClockBoard board)Adjust WorldClock
{
pane = new WorldClockPanel(board);
gedit ~/dev/worldclock-hk2/application/src/main/java/lh.worlclock.application/lh/worldclock/WorldClock.java &
add imports
import com.sun.enterprise.module.bootstrap.ModuleStartup;
import com.sun.enterprise.module.bootstrap.StartupContext;
import org.jvnet.hk2.annotations.Inject;
import org.jvnet.hk2.annotations.Service;
import lh.worldclock.core.WorldClockBoard;
replace class declaration
@Service
public class WorldClock implements ModuleStartup
make the frame non static
/*static*/ WorldClockFrame frame = null;add the injection
@Injectmake main method non static
WorldClockBoard board;
make void showWindow() non static and change
frame = new WorldClockFrame(icon, board);
to add the board
make private PopupMenu createPopup() non static
add the following new methods
public void setStartupContext(StartupContext context)build
{
}
public void start()
{
main(new String[]{});
}
public void stop()
{
}
cd ~/dev/worldclock-hk2/application/
mvn -Dmaven.test.skip=true clean install
Time to run:
cd ~/dev/hk2-jigsaw/jigsaw-adapter/
mvn lh.jigsaw:jigsaw-maven-plugin:run
Labels:
HK2,
Jigsaw,
Worldclock
Wednesday, 18 January 2012
Jigsaw: Worldclock with the Maven plugin
Last updated: 2012-02-02
In the previous post I created a Maven plugin for Jigsaw, now I'll adapt Worldclock to use it.
The transformed source code is also available at: https://svn.java.net/svn/worldclock-application~svn/tags/application6-jigsaw-maven
1. Create the directory
3. Cleanup
Remove the files that are not needed.
4. Code adjustment
The current combinaison of Jigsaw/JDK8/Ubuntu does not support the sytem tray properly, so adjust the Worldclock.java to bypass it
5. Move the source
Move the files to create the java sources for the application:
7. Add module-info for Application
8. Add the pom for Panel
9. Add the pom for Application
10. Install Panel
11. Install Application
12. Run
In the previous post I created a Maven plugin for Jigsaw, now I'll adapt Worldclock to use it.
The transformed source code is also available at: https://svn.java.net/svn/worldclock-application~svn/tags/application6-jigsaw-maven
1. Create the directory
mkdir -p ~/dev/worldclock2. Get the source
cd ~/dev/worldclock
svn checkout https://svn.java.net/svn/worldclock-application~svn/tags/application6-jigsaw ~/dev/worldclock/application
3. Cleanup
Remove the files that are not needed.
rm -rf ~/dev/worldclock/application/*.*
rm -rf ~/dev/worldclock/application/src/META-INF
4. Code adjustment
The current combinaison of Jigsaw/JDK8/Ubuntu does not support the sytem tray properly, so adjust the Worldclock.java to bypass it
gedit ~/dev/worldclock/application/src/lh/worldclock/WorldClock.java &
on line 106 replace:
if (SystemTray.isSupported())
with:
if (false)
on line 135 replace:
if (showWindowOnStart)
with:
if (true)
5. Move the source
Move the files to create the java sources for the application:
mkdir -p ~/dev/worldclock/application/src/main/java/lh.worlclock.application/lh/worldclockMove the application resources:
mv ~/dev/worldclock/application/src/lh/worldclock/*.java ~/dev/worldclock/application/src/main/java/lh.worlclock.application/lh/worldclock
mkdir -p ~/dev/worldclock/application/src/main/resources/lh/worldclockMove the panel source:
mv ~/dev/worldclock/application/src/lh/worldclock/*.* ~/dev/worldclock/application/src/main/resources/lh/worldclock
mkdir -p ~/dev/worldclock/panel/src/main/java/lh.worldclock.panel/lh/worldclock/coreMove the panel resources:
mv ~/dev/worldclock/application/src/lh/worldclock/core/*.java ~/dev/worldclock/panel/src/main/java/lh.worldclock.panel/lh/worldclock/core
mkdir -p ~/dev/worldclock/panel/src/main/resources/lh/worldclock/coreMore cleanup:
mv ~/dev/worldclock/application/src/lh/worldclock/core/*.jpg ~/dev/worldclock/panel/src/main/resources/lh/worldclock/core
rm -rf ~/dev/worldclock/application/src/lh/worldclock/core6. Add module-info for Panel
gedit ~/dev/worldclock/panel/src/main/java/lh.worldclock.panel/module-info.java &
module lh.worldclock.panel @ 0.7
{
requires jdk.base;
requires jdk.desktop;
exports lh.worldclock.core.*;
}
7. Add module-info for Application
gedit ~/dev/worldclock/application/src/main/java/lh.worlclock.application/module-info.java &
module lh.worldclock.application @ 0.7
{
requires jdk.base;
requires jdk.desktop;
requires lh.worldclock.panel @ 0.7;
class lh.worldclock.WorldClock;
}
8. Add the pom for Panel
gedit ~/dev/worldclock/panel/pom.xml &
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>lh.worldclock</groupId>
<artifactId>panel</artifactId>
<packaging>jmod</packaging>
<version>0.7-SNAPSHOT</version>
<name>Worldclock Panel</name>
<url>http://worldclock-application.java.net/</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>lh.jigsaw</groupId>
<artifactId>jigsaw-maven-plugin</artifactId>
<version>0.1-SNAPSHOT</version>
<extensions>true</extensions>
<configuration>
<libraryDirectory>../modules</libraryDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>
9. Add the pom for Application
gedit ~/dev/worldclock/application/pom.xml &
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>lh.worldclock</groupId>
<artifactId>application</artifactId>
<packaging>jmod</packaging>
<version>0.7-SNAPSHOT</version>
<name>Worldclock Application</name>
<url>http://worldclock-application.java.net/</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>lh.jigsaw</groupId>
<artifactId>jigsaw-maven-plugin</artifactId>
<version>0.1-SNAPSHOT</version>
<extensions>true</extensions>
<configuration>
<libraryDirectory>../modules</libraryDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>
10. Install Panel
cd ~/dev/worldclock/panel/
mvn install
11. Install Application
cd ~/dev/worldclock/application/
mvn install
12. Run
cd ~/dev/worldclock/application/
mvn lh.jigsaw:jigsaw-maven-plugin:run
(use ctrl+c on the console to exit)
Labels:
Java8,
Jigsaw,
Maven,
Worldclock
Monday, 30 August 2010
Jigsaw: WorldClock with Maven
In the previous post I built WorldClock using just the command line, this time I'll use Maven for compiling.
1. Get Maven
2. Adjusting the paths for Maven
Create new directories:
Move the files:
3. Add the poms
Panel ( gedit ~/dev/worldclock/panel/pom.xml & ):
4. Recreate the library
Panel:
1. Get Maven
sudo apt-get install maven2Set JAVA_HOME to Jigsaw, so that Maven uses Jigsaw:
export JAVA_HOME=~/dev/jigsaw/build/linux-i586/jdk-module-image
2. Adjusting the paths for Maven
Create new directories:
mkdir -p ~/dev/worldclock/panel/src/main/java
mkdir -p ~/dev/worldclock/application/src/main/java
Move the files:
mv /home/ludovic/dev/worldclock/panel/src/lh.worldclock.panel ~/dev/worldclock/panel/src/main/java
mv /home/ludovic/dev/worldclock/panel/resources ~/dev/worldclock/panel/src/main/
mv /home/ludovic/dev/worldclock/application/src/lh.worldclock.panel ~/dev/worldclock/application/src/main/java
mv /home/ludovic/dev/worldclock/application/resources ~/dev/worldclock/application/src/main/
3. Add the poms
Panel ( gedit ~/dev/worldclock/panel/pom.xml & ):
Application ( gedit ~/dev/worldclock/application/pom.xml & ):<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>lh.worldclock</groupId>
<artifactId>panel</artifactId>
<packaging>jar</packaging>
<version>0.7-SNAPSHOT</version>
<name>Worldclock Panel</name>
<url>https://worldclock-application.dev.java.net/</url>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"(somehow using <compilerArgument> -L ../modules</compilerArgument> does not work)
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>lh.worldclock</groupId>
<artifactId>application</artifactId>
<packaging>jar</packaging>
<version>0.7-SNAPSHOT</version>
<name>Worldclock Application</name>
<url>https://worldclock-application.dev.java.net/</url>
<dependencies>
<dependency>
<groupId>lh.worldclock</groupId>
<artifactId>panel</artifactId>
<version>0.7-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArguments>
<version />
<L>../modules</L>
</compilerArguments>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
4. Recreate the library
rm -rf ~/dev/worldclock/modules5. Compile and add to the library
$JIG/bin/jmod create -L ~/dev/worldclock/modules
Panel:
cd ~/dev/worldclock/panelApplication:
mvn install
$JIG/bin/jmod -L ~/dev/worldclock/modules install ~/dev/worldclock/panel/build -r ~/dev/worldclock/panel/src/main/resources lh.worldclock.panel
cd ~/dev/worldclock/application6. Run
mvn install
$JIG/bin/jmod -L ~/dev/worldclock/modules install ~/dev/worldclock/application/build -r ~/dev/worldclock/application/resources lh.worldclock.application
$JIG/bin/java -L ~/dev/worldclock/modules -m lh.worldclock.application
Labels:
Java,
JDK7,
Jigsaw,
module,
Worldclock
Sunday, 2 May 2010
Jigsaw: From Hello World to WorldClock
(last updated 2010-06-20)
Moving on from Hello World to WorldClock, a simple multimodules application.
1. Get the source
Install Subversion:
2. Move the source files arround
Create the additional directories:
Then move the files:
So we now have 2 subprojects: application and panel
Each composed of 3 areas: build, src and resources
3. Add the Jigsaw layer
The first part is already there, the first level of subdirectories in the src directories represents the modules roots.
Next add the module-info file for lh.worldclock.panel:
( gedit ~/dev/worldclock/panel/src/lh.worldclock.panel/module-info.java & )
( gedit ~/dev/worldclock/application/src/lh.worldclock.application/module-info.java & )
Panel:
Moving on from Hello World to WorldClock, a simple multimodules application.
1. Get the source
Install Subversion:
sudo apt-get install subversionCreate the directories:
mkdir -p ~/dev/worldclockGet the source:
cd ~/dev/worldclockWhen prompted for guest password just press enter, Gnome keyring application then pops up, just cancel and say yes to store the password unencrypted.
svn checkout https://worldclock-application.dev.java.net/svn/worldclock-application/tags/application6-jigsaw ~/dev/worldclock/application --username guest
2. Move the source files arround
Create the additional directories:
mkdir -p ~/dev/worldclock/application/attic(attic is only used to store existing files that won't be needed)
mkdir -p ~/dev/worldclock/application/build
mkdir -p ~/dev/worldclock/application/resources/lh/worldclock
mkdir -p ~/dev/worldclock/application/src/lh.worldclock.application
mkdir -p ~/dev/worldclock/panel/build
mkdir -p ~/dev/worldclock/panel/resources/lh/worldclock/core
mkdir -p ~/dev/worldclock/panel/src/lh.worldclock.panel/lh/worldclock
Then move the files:
mv ~/dev/worldclock/application/*.* ~/dev/worldclock/application/atticThe tree should look like this:
mv ~/dev/worldclock/application/src/META-INF ~/dev/worldclock/application/attic
mv ~/dev/worldclock/application/src/lh ~/dev/worldclock/application/src/lh.worldclock.application
mv ~/dev/worldclock/application/src/lh.worldclock.application/lh/worldclock/core ~/dev/worldclock/panel/src/lh.worldclock.panel/lh/worldclock
mv ~/dev/worldclock/application/src/lh.worldclock.application/lh/worldclock/*.properties ~/dev/worldclock/application/resources/lh/worldclock
mv ~/dev/worldclock/application/src/lh.worldclock.application/lh/worldclock/*.png ~/dev/worldclock/application/resources/lh/worldclock
mv ~/dev/worldclock/panel/src/lh.worldclock.panel/lh/worldclock/core/*.jpg ~/dev/worldclock/panel/resources/lh/worldclock/core
So we now have 2 subprojects: application and panel
Each composed of 3 areas: build, src and resources
3. Add the Jigsaw layer
The first part is already there, the first level of subdirectories in the src directories represents the modules roots.
Next add the module-info file for lh.worldclock.panel:
( gedit ~/dev/worldclock/panel/src/lh.worldclock.panel/module-info.java & )
module lh.worldclock.panel @ 0.7And the module-info file for lh.worldclock.application:
{
requires jdk.desktop;
}
( gedit ~/dev/worldclock/application/src/lh.worldclock.application/module-info.java & )
module lh.worldclock.application @ 0.74. Create the library
{
requires jdk.desktop;
requires lh.worldclock.panel @ 0.7;
class lh.worldclock.WorldClock;
}
$JIG/bin/jmod create -L ~/dev/worldclock/modules5. Compile and add to the library
Panel:
cd ~/dev/worldclock/panelApplication:
$JIG/bin/javac -encoding UTF-8 -source 7 -d build src/lh.worldclock.panel/module-info.java src/lh.worldclock.panel/lh/worldclock/core/WorldClockBoard.java
$JIG/bin/jmod -L ~/dev/worldclock/modules install ~/dev/worldclock/panel/build -r ~/dev/worldclock/panel/resources lh.worldclock.panel
cd ~/dev/worldclock/application6. Run
$JIG/bin/javac -L ../modules -source 7 -d build src/lh.worldclock.application/module-info.java src/lh.worldclock.application/lh/*/*.java
$JIG/bin/jmod -L ~/dev/worldclock/modules install ~/dev/worldclock/application/build -r ~/dev/worldclock/application/resources lh.worldclock.application
$JIG/bin/java -L ~/dev/worldclock/modules -m lh.worldclock.application
Labels:
Java,
JDK7,
Jigsaw,
module,
Worldclock
Sunday, 11 January 2009
Worldclock 0.3 widget for WidgetFX 1.0
After a few issues upgrading to JavaFX 1.0 / WidgetFX 1.0 (the SwingComponent.wrap() does not quite do exactly the same thing as the old Component.fromJComponent(), at least for me the resize does not work exactly the same), I've released version 0.3 of the Worldclock widget.
Also in this release the possibility to enforce the aspect ratio of the world image(s).
Web page: https://worldclock-application.dev.java.net/#Widget
Direct launch: http://widgetfx.org/dock/launch.jnlp?arg=https://worldclock-application.dev.java.net/widget-webstart/launch.jnlp
Enjoy,
Also in this release the possibility to enforce the aspect ratio of the world image(s).
Web page: https://worldclock-application.dev.java.net/#Widget
Direct launch: http://widgetfx.org/dock/launch.jnlp?arg=https://worldclock-application.dev.java.net/widget-webstart/launch.jnlp
Enjoy,
Labels:
JavaFX,
WidgetFX,
Worldclock
Subscribe to:
Posts (Atom)
