Skip to content

Commit 08ff468

Browse files
Merge pull request #654 from Jugen/patch-1
Add support for FXML (again)
2 parents 8619544 + 812e43e commit 08ff468

3 files changed

Lines changed: 65 additions & 1 deletion

File tree

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package org.fxmisc.richtext.api;
2+
3+
import java.io.IOException;
4+
import javafx.stage.Stage;
5+
import javafx.fxml.FXMLLoader;
6+
import javafx.fxml.LoadException;
7+
import org.fxmisc.richtext.RichTextFXTestBase;
8+
import org.junit.Test;
9+
10+
public class FxmlTester extends RichTextFXTestBase {
11+
12+
@Override
13+
public void start(Stage stage) throws Exception {
14+
// Nothing needed here
15+
}
16+
17+
@Test
18+
public void test_fxml_construction_of_area() throws IOException, LoadException
19+
{
20+
// FxmlTest.fxml is located in resources folder:
21+
// src/integrationTest/resources/org/fxmisc/richtext/api/
22+
Object obj = FXMLLoader.load( getClass().getResource( "FxmlTest.fxml" ) );
23+
// FXMLLoader will throw a LoadException if any properties failed to be set,
24+
// so if obj is not null then all properties are guaranteed to have been set.
25+
org.junit.Assert.assertNotNull( obj );
26+
}
27+
28+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<?import javafx.scene.layout.VBox?>
4+
<?import org.fxmisc.richtext.StyleClassedTextArea?>
5+
<?import javafx.scene.control.ContextMenu?>
6+
<?import javafx.scene.control.MenuItem?>
7+
8+
<VBox xmlns:fx="http://javafx.com/fxml/1">
9+
<StyleClassedTextArea editable="true" wrapText="true" autoScrollOnDragDesired="true"
10+
contextMenuXOffset="12.0" contextMenuYOffset="34.0" >
11+
<contextMenu>
12+
<ContextMenu>
13+
<items><MenuItem text="Test Item" /></items>
14+
</ContextMenu>
15+
</contextMenu>
16+
</StyleClassedTextArea>
17+
</VBox>
18+

richtextfx/src/main/java/org/fxmisc/richtext/GenericStyledArea.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,11 +338,17 @@ protected void invalidated() {
338338
}
339339
};
340340
@Override public final BooleanProperty editableProperty() { return editable; }
341+
// Don't remove as FXMLLoader doesn't recognise default methods !
342+
@Override public void setEditable(boolean value) { editable.set(value); }
343+
@Override public boolean isEditable() { return editable.get(); }
341344

342345
// wrapText property
343346
private final BooleanProperty wrapText = new SimpleBooleanProperty(this, "wrapText");
344347
@Override public final BooleanProperty wrapTextProperty() { return wrapText; }
345-
348+
// Don't remove as FXMLLoader doesn't recognise default methods !
349+
@Override public void setWrapText(boolean value) { wrapText.set(value); }
350+
@Override public boolean isWrapText() { return wrapText.get(); }
351+
346352
// undo manager
347353
private UndoManager undoManager;
348354
@Override public UndoManager getUndoManager() { return undoManager; }
@@ -359,14 +365,23 @@ protected void invalidated() {
359365

360366
private ObjectProperty<ContextMenu> contextMenu = new SimpleObjectProperty<>(null);
361367
@Override public final ObjectProperty<ContextMenu> contextMenuObjectProperty() { return contextMenu; }
368+
// Don't remove as FXMLLoader doesn't recognise default methods !
369+
@Override public void setContextMenu(ContextMenu menu) { contextMenu.set(menu); }
370+
@Override public ContextMenu getContextMenu() { return contextMenu.get(); }
362371

363372
protected final boolean isContextMenuPresent() { return contextMenu.get() != null; }
364373

365374
private DoubleProperty contextMenuXOffset = new SimpleDoubleProperty(2);
366375
@Override public final DoubleProperty contextMenuXOffsetProperty() { return contextMenuXOffset; }
376+
// Don't remove as FXMLLoader doesn't recognise default methods !
377+
@Override public void setContextMenuXOffset(double offset) { contextMenuXOffset.set(offset); }
378+
@Override public double getContextMenuXOffset() { return contextMenuXOffset.get(); }
367379

368380
private DoubleProperty contextMenuYOffset = new SimpleDoubleProperty(2);
369381
@Override public final DoubleProperty contextMenuYOffsetProperty() { return contextMenuYOffset; }
382+
// Don't remove as FXMLLoader doesn't recognise default methods !
383+
@Override public void setContextMenuYOffset(double offset) { contextMenuYOffset.set(offset); }
384+
@Override public double getContextMenuYOffset() { return contextMenuYOffset.get(); }
370385

371386
private final BooleanProperty useInitialStyleForInsertion = new SimpleBooleanProperty();
372387
@Override public BooleanProperty useInitialStyleForInsertionProperty() { return useInitialStyleForInsertion; }
@@ -430,6 +445,9 @@ protected void invalidated() {
430445
// not a hook, but still plays a part in the default mouse behavior
431446
private final BooleanProperty autoScrollOnDragDesired = new SimpleBooleanProperty(true);
432447
@Override public final BooleanProperty autoScrollOnDragDesiredProperty() { return autoScrollOnDragDesired; }
448+
// Don't remove as FXMLLoader doesn't recognise default methods !
449+
@Override public void setAutoScrollOnDragDesired(boolean val) { autoScrollOnDragDesired.set(val); }
450+
@Override public boolean isAutoScrollOnDragDesired() { return autoScrollOnDragDesired.get(); }
433451

434452
/* ********************************************************************** *
435453
* *

0 commit comments

Comments
 (0)