MarkdownEditorControlFX icon indicating copy to clipboard operation
MarkdownEditorControlFX copied to clipboard

Markdown editor control for JavaFX

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

  • LightDemo - Light-style example
  • DarkDemo - Dark-style example

Used libraries

Used libraries for the demos:

License

Apache 2.0