Site Hacked

Hi there,
My site has been hacked or lost by my host… Something oubviously happened, And the only thing I could get back is a version of 2012… So, I think I’ll have to post again my stuffs in the next few days, searching, digging into my computer to try to get the original post content…
Here is a little list of what is missing and that I will post again:
– Back to HMI code – JavaFX 2 Radial Menu
– HMI’s on my mind – JavaFX Radial Menu Update
– JavaFx Radial Menu – Sub-Menu available
– JavaFx radial menu based on a game
– JavaFx radial menu, another one
– JavaFx & LeapMotion : LeapDrawKidFx
– JavaFX Custom control – Nest duplicate
– JavaFx radial menu, futurist one

 

To get more information on the lost things or see them in action, try my twitter account @MrLoNee or my youtube video channel mrloneeblog or go to check the RadialFx Github page

Cheers,

LoNee

JavaFX 2.0 – NodeCodeEditor

As I previously said I am working on a Software Component Editor. Transforming my inkscape visual prototype to my FX Application was quiet easy thanks to JavaFX SVGPath. At least for the shape contour, but I had another problem to solve to manage gradient.

So I started groping around JavaFx Gradient paint (RadialGradient and LinearGradient). Modifying and launching again and again to adjust my gradient attributes change. And then I get bored… I mean, It was about to take me a whole life making theses adjustments !

Thinking about it I remembered the way prototypes are built in my company, using SmallTalk language and performing changes on code on the editor that is taken into account as soon as they are “accepted”. Well I can do that too ! Thanks to Eclipse IDE debug mode. The only constraint was to have no structural change in my code and finding a way to have a loop that will take into account all changes on my JavaFX graphical Application.

Please welcome my little NodeEditionVisualizer ! It is simply a JavaFX Application that loop on a method call that draw a user created Node continuously. It has to be launched in debug mode so that changes are taken into account when you save. It is composed of an X/Y axis and a user created Node that can be changed dynamically.

protected ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1);
 
public static void main(String[] args) {
	NodeEditionVisualizer.launch(args);
}
@Override
	public void start(final Stage primaryStage) throws Exception {
		final Group pane = new Group();
		pane.translateXProperty().set(50);
		pane.translateYProperty().set(50);
 
		Scene scene = new Scene(pane);
		scene.setFill(Color.BLACK);
 
		primaryStage.setScene(scene);
		primaryStage.setWidth(550);
		primaryStage.setHeight(550);
		primaryStage.setX(0);
		primaryStage.setY(0);
		primaryStage.setTitle("C3 Shape Editor");
		primaryStage.show();
 
		final Path axis = PathBuilder.create().elements(
			new MoveTo(0, 0),
			new LineTo(0, 100),
			new LineTo(-10, 90),
			new MoveTo(0, 100),
			new LineTo(10,90),
			new MoveTo(0, 100),
			new LineTo(0, 3000),
 
			new MoveTo(0, 0),
			new LineTo(100, 0),
			new LineTo(90, -10),
			new MoveTo(100, 0),
			new LineTo(90, 10),
			new MoveTo(100, 0),
			new LineTo(3000, 0)).stroke(Color.WHITE).build();
 
		final Text origin = TextBuilder.create()
		.text("(0,0)").fill(Color.WHITE).x(-10).y(-5)
		.build();
 
		final Text x = TextBuilder.create()
		.text("X Axis").fill(Color.WHITE).x(50).y(-5)
		.build();
 
		final Text y = TextBuilder.create()
		.text("Y Axis").fill(Color.WHITE).x(-25).y(70).rotate(-90)
		.build();
 
		this.executor.scheduleAtFixedRate(new Runnable(){
			@Override
			public void run() {
				Platform.runLater(new Runnable(){
					@Override
					public void run() {
						pane.getChildren().clear();
 
						Node dut = createShape();
 
						pane.getChildren().addAll(dut, axis, origin, x, y);
					}
				});
			}
		}, 200, 200, TimeUnit.MILLISECONDS);
 
		primaryStage.setOnCloseRequest(new EventHandler() {
 
			@Override
			public void handle(WindowEvent paramT) {
				executor.shutdownNow();
			}
		});
	}
 
	public Node createShape(){
		Rectangle rectangle = RectangleBuilder.create()
                .x(50).y(100).width(250).height(100).fill(Color.RED).stroke(Color.BLACK)
                .build();
 
                Circle circle = CircleBuilder.create()
                .centerX(150).centerY(100).fill(Color.BLUE).radius(200)
                .build();
 
                return new Group(circle, rectangle);
	}
}

As usual, code is available in a jar on download page.

Feel free to reuse this code ! If you have some suggestions, I would be glad to take them into account !

LoNee

JavaFx 2.0 – SVGPath

I start developing a new application for a software components editor (more informations soon). So I built my visual using Inkscape (as usual). Then I asked myself how to import my svg objects into JavaFx. I saw Inkscape does offer to export your svg into JavaFx code, but for now only JavaFx1.3 script is supported, so unable to do it for  my JavaFX2.0 business application… Well I was only half tempted by writing a JavaFX1.3 to JavaFX2.0 code converter…

What a good suprise to discover the SVGPath object in JavaFx ! It made my import work quite easy (not easier than if Inkscape generated it for me but….). I just use the Inkscape objects xml editor to copy the path informations as shown :

Then juste create a JavaFx SVGPath Object and fill the content attribute with what you’ve copied

And Here you are with your SVG interface work into your business JavaFx code ! Take care that positions of the SVG Object path points from Inkscape are relative to the top/left corner of your page.

I did not find out how to easily transform your SVG object fill information as available in the Inkscape xml editor into JavaFx. I might think of writing a small parser program that compute such information into code… For now I translated myself the fill information using JavaFx Painter.

If some of you have interesting informations about SVGPath in JavaFx, raise your hand !

Java Code Geeks Program

I’ve just been invited to join the Java Code Geek program. The aim of Java Code Geek is to aggregate Java related content and allow creation of a big Java centric community !

So be aware now that Mr LoNee contributes to JCG’s Program ! You might read my posts through this site, as well as other interesting content.

JavaFX 2.0 – Presenter II

Many projects in progress in my stack ! Today I’d like to share an upgrade of my Presenter project that aims to offer a simple API in JavaFX to create a “Prezi” like items navigation. This upgrade does manage Node rotation and Node scaling so that the Node does take most of the screen ! It also include a drag’n’drop on the view to move the camera where you want. No zoom In & out available for now since I did not had time to implement it !

Here is the result in a new Video.

[local /wp-content/uploads/2011/08/presenter2.avi Download Video]

Note that managing Node does allow to do more than just navigating through slides… As you will see in a future post :)

As usual, example code and test available in the download page !

LoNee