/* * Copyright (c) 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions. */ /* * @test * @key headful * @bug 4242228 * @summary Tests that HTMLEditorKit.setText() doesn't throw exceptions * @author Peter Zhelezniakov */ import javax.swing.*; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import javax.swing.text.StyledEditorKit; import javax.swing.text.html.HTMLDocument; import javax.swing.text.html.HTMLEditorKit; import java.awt.*; public class bug4242228 { private static JTabbedPane tabPane; private static JFrame frame; public static void main(String[] argv) throws Exception { SwingUtilities.invokeAndWait(new Runnable() { @Override public void run() { frame = new JFrame("4242228 Test"); JScrollPane sourcePane = new JScrollPane(); final JTextPane htmlEditor = new JTextPane(); final JTextPane sourceEditor = new JTextPane(); final JScrollPane editorPane = new JScrollPane(); tabPane = new JTabbedPane(); htmlEditor.setText(" "); htmlEditor.setEditorKit(new HTMLEditorKit()); sourceEditor.setText(" "); sourceEditor.setEditorKit(new StyledEditorKit()); frame.setLayout(new BorderLayout()); editorPane.getViewport().add(htmlEditor); tabPane.addTab("Editor", editorPane); tabPane.addChangeListener(new ChangeListener() { public void stateChanged(ChangeEvent e) { if (tabPane.getSelectedComponent() == editorPane) { htmlEditor.setText(sourceEditor.getText()); } else { sourceEditor.setText(htmlEditor.getText()); } } }); sourcePane.getViewport().add(sourceEditor); tabPane.addTab("Source", sourcePane); tabPane.setTabPlacement(SwingConstants.BOTTOM); htmlEditor.setDocument(new HTMLDocument()); frame.add(tabPane); frame.setSize(400, 300); frame.setVisible(true); } }); Robot robot = new Robot(); robot.waitForIdle(); SwingUtilities.invokeAndWait(new Runnable() { @Override public void run() { for (int i = 0; i < 50; i++) { tabPane.setSelectedIndex(i % 2); } frame.dispose(); } }); } }