001package org.vishia.gral.awt; 002 003import java.awt.Color; 004import java.awt.Font; 005import java.util.Map; 006import java.util.TreeMap; 007 008import org.vishia.gral.base.GralGridProperties; 009import org.vishia.gral.ifc.GralColor; 010import org.vishia.gral.ifc.GralFont; 011 012public class AwtProperties extends GralGridProperties 013{ 014 015 public final Font smallPromptFont; 016 017 public final Font[] textFontAwt = new Font[10]; 018 019 public final Font stdInputFont; 020 021 public final Font stdButtonFont; 022 023 Map<Integer, Color> colorsSwt = new TreeMap<Integer, Color>(); 024 025 private final Color colorBlack; 026 027 public final Color colorGrid, colorGridStrong; 028 029 /**A common background color for all widgets which are paint at the background. */ 030 public Color colorBackground; 031 032 033 034 035 public AwtProperties(char sizeC) 036 { 037 super(sizeC); 038 this.colorBlack = new Color(0,0,0); 039 this.colorGrid = new Color(0xe0e0e0); 040 this.colorGridStrong = new Color(0xc0c0c0); 041 this.colorBackground = new Color(0xffffff); 042 this.smallPromptFont = new Font("Arial", 0, smallPromptFontSize[size]); 043 this.stdInputFont = new Font("Arial", 0, stdInputFontSize[size]); 044 this.stdButtonFont = new Font("Arial", 0, stdButtonFontSize[size]); 045 this.textFontAwt[0] = new Font("Arial", 0, stdTextFontSize[0][size]); 046 this.textFontAwt[1] = new Font("Arial", 0, stdTextFontSize[1][size]); 047 this.textFontAwt[2] = new Font("Arial", 0, stdTextFontSize[2][size]); 048 this.textFontAwt[3] = new Font("Arial", 0, stdTextFontSize[3][size]); 049 this.textFontAwt[4] = new Font("Arial", 0, stdTextFontSize[4][size]); 050 this.textFontAwt[5] = new Font("Arial", 0, stdTextFontSize[5][size]); 051 this.textFontAwt[6] = new Font("Arial", 0, stdTextFontSize[6][size]); 052 this.textFontAwt[7] = new Font("Arial", 0, stdTextFontSize[7][size]); 053 this.textFontAwt[8] = new Font("Arial", 0, stdTextFontSize[8][size]); 054 this.textFontAwt[9] = new Font("Arial", 0, stdTextFontSize[9][size]); 055 } 056 057 058 /**Returns a color with given Gui-independent color. 059 * The SWT-Color instance is taken from a pool if the color is used already. 060 * Elsewhere it is created newly and put into the pool. 061 * @param color The given color in system-indpending form. 062 * @return An instance of SWT-color 063 */ 064 public Color colorAwt(GralColor color) 065 { 066 if(color.colorGuimpl == null){ 067 int colorValue = color.getColorValue(); 068 color.colorGuimpl = new Color(colorValue); 069 } else if(!(color.colorGuimpl instanceof Color)){ 070 throw new IllegalArgumentException("unauthorized color setting"); 071 } 072 return (Color)color.colorGuimpl; 073 } 074 075 076 077 078 /**Returns a implementation font with given Gui-independent font. 079 * The SWT-Font instance is taken from a pool if the font is used already. 080 * Elsewhere it is created newly and put into the pool. 081 * @param forn The given Gral font in system-independent form. 082 * @return An instance of SWT-Font 083 */ 084 public Font fontAwt(GralFont font) 085 { 086 if(font.fontImpl == null){ 087 int styleSwt = 0; 088 switch(font.style){ 089 case 'b': styleSwt |= Font.BOLD; break; 090 case 'B': styleSwt |= Font.BOLD; break; 091 case 'i': styleSwt |= Font.ITALIC; break; 092 case 'I': styleSwt |= Font.BOLD | Font.ITALIC; break; 093 default: styleSwt = Font.PLAIN; 094 } 095 String fontName; 096 //NOTE: on SWT there are not Java standardfonts, there are platform-depending. 097 if(font.fontName.equals(GralFont.fontMonospacedSansSerif)){ fontName = "Courier"; } 098 else if(font.fontName.equals(GralFont.fontMonospacedSmall)){ fontName = "Courier"; } 099 else if(font.fontName.equals(GralFont.fontMonospacedSerif)){ fontName = "Courier"; } 100 else if(font.fontName.equals(GralFont.fontSansSerif)){ fontName = "Arial"; } 101 else if(font.fontName.equals(GralFont.fontSerif)){ fontName = "Serif"; } 102 else {fontName = font.fontName; } 103 font.fontImpl = new Font(fontName, font.size, styleSwt); 104 } else if(!(font.fontImpl instanceof Font)){ 105 throw new IllegalArgumentException("unauthorized font setting"); 106 } 107 return (Font)font.fontImpl; 108 } 109 110 111 112}