001 /* 002 * Copyright 2002-2004 the original author or authors. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not 005 * use this file except in compliance with the License. You may obtain a copy of 006 * the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 012 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the 013 * License for the specific language governing permissions and limitations under 014 * the License. 015 */ 016 package org.springframework.richclient.text; 017 018 import javax.swing.text.Document; 019 import javax.swing.text.Element; 020 import javax.swing.text.View; 021 import javax.swing.text.ViewFactory; 022 import javax.swing.text.html.HTMLDocument; 023 import javax.swing.text.html.HTMLEditorKit; 024 import javax.swing.text.html.ImageView; 025 026 /** 027 * A HTMLEditorKit that loads all images and HTML synchronously. This is useful 028 * when you want to be sure that the entire document including images has been 029 * loaded before you display it. 030 * 031 * @author Oliver Hutchison 032 */ 033 public class SynchronousHTMLEditorKit extends HTMLEditorKit { 034 035 public Document createDefaultDocument() { 036 HTMLDocument doc = (HTMLDocument)super.createDefaultDocument(); 037 doc.setAsynchronousLoadPriority(-1); 038 return doc; 039 } 040 041 public ViewFactory getViewFactory() { 042 return new HTMLFactory() { 043 044 public View create(Element elem) { 045 View view = super.create(elem); 046 if (view instanceof ImageView) { 047 ((ImageView)view).setLoadsSynchronously(true); 048 } 049 return view; 050 } 051 }; 052 } 053 }