1 /* 2 * Copyright (c) 2004, 2006, 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 sun.swing; 27 28 import java.awt.Color; 29 import javax.swing.plaf.ColorUIResource; 30 31 /** 32 * A subclass of ColorUIResource that wraps an alternate color 33 * for use during printing. Useful to replace color values that 34 * may look poor in printed output. 35 * 36 * @author Shannon Hickey 37 * 38 */ 39 public class PrintColorUIResource extends ColorUIResource { 40 41 /** The color to use during printing */ 42 private Color printColor; 43 44 /** 45 * Construct an instance for the given RGB value and 46 * alternate color to use during printing. 47 * 48 * @param rgb the color rgb value 49 * @param printColor the alternate color for printing 50 */ 51 public PrintColorUIResource(int rgb, Color printColor) { 52 super(rgb); 53 this.printColor = printColor; 54 } 55 56 /** 57 * Return the color to use during printing. If no alternate 58 * color was specified on construction, this method will 59 * return <code>this</code>. 60 * 61 * @return the color to use during printing 62 */ 63 public Color getPrintColor() { 64 return ((printColor != null) ? printColor : this); 65 } 66 67 /** 68 * Replaces this object with a plain {@code ColorUIResource} during 69 * serialization. Since {@code PrintColorUIResource} resides in the 70 * sun.swing package, access can be disallowed to it by a security 71 * manager. When access is disallowed, deserialization of any object 72 * with reference to a {@code PrintColorUIResource} fails. 73 * <p> 74 * Since {@code PrintColorUIResource) is used only by Swing's look 75 * and feels, and we know that UI supplied colors are replaced after 76 * deserialization when the UI is re-installed, the only important 77 * aspect of the {@code PrintColorUIResource} that needs to be 78 * persisted is the fact that it is a {@code ColorUIResource}. As 79 * such, we can avoid the problem outlined above by replacing 80 * the problematic {@code PrintColorUIResource} with a plain 81 * {@code ColorUIResource}. 82 * <p> 83 * Note: As a result of this method, it is not possible to write 84 * a {@code PrintColorUIResource} to a stream and then read 85 * back a {@code PrintColorUIResource}. This is acceptable since we 86 * don't have a requirement for that in Swing. 87 */ 88 private Object writeReplace() { 89 return new ColorUIResource(this); 90 } 91 }