1 /* 2 * Copyright (c) 2010, 2016, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 26 package javafx.scene.web; 27 28 29 import com.sun.javafx.scene.control.ControlHelper; 30 import javafx.css.StyleableProperty; 31 32 import javafx.scene.control.Control; 33 34 import javafx.print.PrinterJob; 35 import javafx.scene.control.Skin; 36 37 38 /** 39 * A control that allows for users to edit text, and apply styling to this text. 40 * The underlying data model is HTML, although this is not shown visually to the 41 * end-user. 42 * @since JavaFX 2.0 43 */ 44 public class HTMLEditor extends Control { 45 46 /** 47 * Creates a new instance of the HTMLEditor control. 48 */ 49 public HTMLEditor() { 50 ((StyleableProperty) ControlHelper.skinClassNameProperty(this)).applyStyle( 51 null, 52 "javafx.scene.web.HTMLEditorSkin" 53 ); 54 getStyleClass().add("html-editor"); 55 } 56 57 @Override protected Skin<?> createDefaultSkin() { 58 return new HTMLEditorSkin(this); 59 } 60 61 /** 62 * Returns the HTML content of the editor. 63 */ 64 public String getHtmlText() { 65 return ((HTMLEditorSkin)getSkin()).getHTMLText(); 66 } 67 68 /** 69 * Sets the HTML content of the editor. Note that if the contentEditable 70 * property on the <body> tag of the provided HTML is not set to true, the 71 * HTMLEditor will become read-only. You can ensure that the text remains 72 * editable by ensuring the body appears as such: 73 * <code> 74 * <body contentEditable="true"> 75 * </code> 76 * 77 * @param htmlText The full HTML markup to put into the editor. This should 78 * include all normal HTML elements, starting with 79 * <code><html></code>, and including a <code><body></code>. 80 */ 81 public void setHtmlText(String htmlText) { 82 ((HTMLEditorSkin)getSkin()).setHTMLText(htmlText); 83 } 84 85 /** 86 * Prints the content of the editor using the given printer job. 87 * <p>This method does not modify the state of the job, nor does it call 88 * {@link PrinterJob#endJob}, so the job may be safely reused afterwards. 89 * 90 * @param job printer job used for printing 91 * @since JavaFX 8.0 92 */ 93 public void print(PrinterJob job) { 94 ((HTMLEditorSkin)getSkin()).print(job); 95 } 96 }