|
| 1 | +/* |
| 2 | + * File: ColorTextXmlAdapter.java |
| 3 | + * Project: HelloJavaSE |
| 4 | + * Date: 5 дек. 2018 г. 21:20:21 |
| 5 | + * Author: Igor Morenko <morenko at lionsoft.ru> |
| 6 | + * |
| 7 | + * Copyright 2005-2018 LionSoft LLC. All rights reserved. |
| 8 | + */ |
| 9 | +package ru.lionsoft.javase.hello.xml.jaxb; |
| 10 | + |
| 11 | +import java.awt.Color; |
| 12 | +import javax.xml.bind.annotation.adapters.XmlAdapter; |
| 13 | + |
| 14 | +/** |
| 15 | + * |
| 16 | + * @author Igor Morenko <morenko at lionsoft.ru> |
| 17 | + */ |
| 18 | +public class ColorTextXmlAdapter extends XmlAdapter<String, Color> { |
| 19 | + |
| 20 | + private static final String BLACK = "black"; |
| 21 | + private static final String BLUE = "blue"; |
| 22 | + private static final String CYAN = "cyan"; |
| 23 | + private static final String DARK_GRAY = "darkGray"; |
| 24 | + private static final String GRAY = "gray"; |
| 25 | + private static final String GREEN = "green"; |
| 26 | + private static final String LIGHT_GRAY = "lightGray"; |
| 27 | + private static final String MAGENTA = "magenta"; |
| 28 | + private static final String ORANGE = "orange"; |
| 29 | + private static final String PINK = "pink"; |
| 30 | + private static final String RED = "red"; |
| 31 | + private static final String WHITE = "white"; |
| 32 | + private static final String YELLOW = "yellow"; |
| 33 | + |
| 34 | + @Override |
| 35 | + public Color unmarshal(String vt) throws Exception { |
| 36 | + if (vt.startsWith("#")) { |
| 37 | + // Decode Hex Color |
| 38 | + int rgb = Integer.parseUnsignedInt(vt.substring(1), 16); |
| 39 | + return new Color(rgb); |
| 40 | + } |
| 41 | + switch (vt) { |
| 42 | + case BLACK: return Color.BLACK; |
| 43 | + case BLUE: return Color.BLUE; |
| 44 | + case CYAN: return Color.CYAN; |
| 45 | + case DARK_GRAY: return Color.DARK_GRAY; |
| 46 | + case GRAY: return Color.GRAY; |
| 47 | + case GREEN: return Color.GREEN; |
| 48 | + case LIGHT_GRAY: return Color.LIGHT_GRAY; |
| 49 | + case MAGENTA: return Color.MAGENTA; |
| 50 | + case ORANGE: return Color.ORANGE; |
| 51 | + case PINK: return Color.PINK; |
| 52 | + case RED: return Color.RED; |
| 53 | + case WHITE: return Color.WHITE; |
| 54 | + case YELLOW: return Color.YELLOW; |
| 55 | + } |
| 56 | + |
| 57 | + return Color.BLACK; |
| 58 | + } |
| 59 | + |
| 60 | + @Override |
| 61 | + public String marshal(Color bt) throws Exception { |
| 62 | + if (bt.equals(Color.BLACK)) return BLACK; |
| 63 | + if (bt.equals(Color.BLUE)) return BLUE; |
| 64 | + if (bt.equals(Color.CYAN)) return CYAN; |
| 65 | + if (bt.equals(Color.DARK_GRAY)) return DARK_GRAY; |
| 66 | + if (bt.equals(Color.GRAY)) return GRAY; |
| 67 | + if (bt.equals(Color.GREEN)) return GREEN; |
| 68 | + if (bt.equals(Color.LIGHT_GRAY)) return LIGHT_GRAY; |
| 69 | + if (bt.equals(Color.MAGENTA)) return MAGENTA; |
| 70 | + if (bt.equals(Color.ORANGE)) return ORANGE; |
| 71 | + if (bt.equals(Color.PINK)) return PINK; |
| 72 | + if (bt.equals(Color.RED)) return RED; |
| 73 | + if (bt.equals(Color.WHITE)) return WHITE; |
| 74 | + if (bt.equals(Color.YELLOW)) return YELLOW; |
| 75 | + // Alpha, Red, Green, Blue |
| 76 | + return String.format("#%08X", bt.getRGB()); |
| 77 | + } |
| 78 | + |
| 79 | +} |
0 commit comments