Skip to content

Dansoftowner/MarkdownEditorControlFX

Repository files navigation

MarkdownEditorControlFX

GitHub release (latest by date) GitHub issues GitHub last commit GitHub

An advanced markdown-editor control for JavaFX.

Demo gif

Features

  • Three view modes : EDITOR_ONLY, PREVIEW_ONLY, BOTH
  • Formatting toolbar items: bold, italic, strikethrough, monospaced
  • Live preview
  • Styleable through JavaFX CSS
  • ...and more

TODO

  • Syntax highlighting in the editor-area
  • Internationalization support
  • Find dialog

Contributions are welcome!

Requirements

Java 11 or higher

Projects using MarkdownEditorControlFX

If you use this library in your project, let me know in the discussions!

  • Boomega - A modern book explorer & catalog application

Download

Maven example

<repositories>
		<repository>
		    <id>jitpack.io</id>
		    <url>https://jitpack.io</url>
		</repository>
</repositories>
<dependency>
	    <groupId>com.github.Dansoftowner</groupId>
	    <artifactId>MarkdownEditorControlFX</artifactId>
	    <version>0.6.3</version>
</dependency>

Gradle example

repositories {
	...
    // For MarkdownEditorControl
    maven { url 'https://jitpack.io' }
    
    // For some of it's dependencies
    maven { url "http://sandec.bintray.com/repo"}
    maven { url "https://dl.bintray.com/jerady/maven" }
}
dependencies {
	implementation 'com.github.Dansoftowner:MarkdownEditorControlFX:0.6.3'
}

View modes

As mentioned, the control supports multiple view modes.
Each view mode is represented by the enum: com.dansoftware.mdeditor.MarkdownEditorControl.ViewMode.
It can be set using the MarkdownEditorControl#setViewMode method.

1. Editor only (ViewMode.EDITOR_ONLY)

In this mode, only the editor-area is visible.

Screenshot

2. Preview only (ViewMode.PREVIEW_ONLY)

In this mode, only the preview-area is visible.

Screenshot

3. Editor and preview (ViewMode.BOTH)

Screenshot

Basic usage

MarkdownEditorControl control = new MarkdownEditorControl();
control.setToolbarVisible(true); // setting the toolbar visible on the top
control.setMarkdown("# Default "); // setting an initial text

// ...add it to your container or whatever
container.getChildren().add(control);

Demos

Used libraries

Used libraries for the demos:

License

Apache 2.0