// $Id: ContextColorPair.java,v 1.4 1999/06/05 23:29:12 greear Exp $ // $Revision: 1.4 $ $Author: greear $ $Date: 1999/06/05 23:29:12 $ // //Hegemon Client Code: Java Client for ScryMUD Server Code //Copyright (C) 1998 Ben Greear // //This program is free software; you can redistribute it and/or //modify it under the terms of the GNU General Public License //as published by the Free Software Foundation; either version 2 //of the License, or (at your option) any later version. // //This program 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 for more details. // //You should have received a copy of the GNU General Public License //along with this program; if not, write to the Free Software //Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // // To contact the Author, Ben Greear: greear@cyberhighway.net, (preferred) // greearb@agcs.com // import java.awt.*; import java.awt.event.*; import java.io.*; class ContextColorPair extends Panel { private Context context; private Color color; private Font font; LabeledTextField red, green, blue, context_field, font_sz; LabeledChoice font_choice; LabeledChoice font_style; HegemonManager h; public ContextColorPair(Context ctx, HegemonManager hm) { super(); h = hm; color = new Color(0, 0, 0); context = ctx; setLayout(new FlowLayout()); red = new LabeledTextField("Red", "0", 3); green = new LabeledTextField("Green", "0", 3); blue = new LabeledTextField("Blue", "0", 3); context_field = new LabeledTextField("Context", getContextName(), 10); font_choice = new LabeledChoice("Font"); font_sz = new LabeledTextField("Size", "10", 3); font_style = new LabeledChoice("Type"); font_style.c.addItem("PLAIN"); font_style.c.addItem("BOLD"); font_style.c.addItem("ITALIC"); Button modify = new Button("Modify"); modify.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { modifyCallback(); }}); context_field.setEditable(false); setForeground(color); String[] fonts = getToolkit().getFontList(); for (int i = 0; i<fonts.length; i++) { font_choice.c.addItem(fonts[i]); } add(red); add(green); add(blue); add(context_field); add(font_choice); add(font_sz); add(font_style); add(modify); }//constructor public Choice getFontChoice() { return font_choice.c; } private String getContextName() { return context.getName(); } public final Color getColor() { return color; } public final Font getFont() { return font; } public final Context getContext() { return context; } /** This will capture color data from LabeledTextFields and update the color object accordingly. It always assumes changes have been made, but it won't matter if they haven't.... */ public void modifyCallback() { int r,g,b; try { r = Integer.parseInt(red.getText()); g = Integer.parseInt(green.getText()); b = Integer.parseInt(blue.getText()); } catch (Exception e) { Log.instance().err("In ModifyCallback: " + e); return; } if (r < 0) r = 0; else if (r > 255) r = 255; if (g < 0) g = 0; else if (g > 255) g = 255; if (b < 0) b = 0; else if (b > 255) b = 255; color = new Color(r,g,b); setForeground(color); if ((r + g + b) > 350) setBackground(new Color(0, 0, 0)); else setBackground(new Color(255, 255, 255)); if (context == Context.BACKGROUND) { if (h == null) { Log.instance().err("ERROR: h is null in ContextColorPair."); } else { if (h.getScroll() == null) { Log.instance().err("ERROR: h.getScroll() is null"); } else { h.getScroll().setBackground(color); } } }//if modifyFontCallback(); repaint(1000); }//modifyCallback public void modifyFontCallback() { // Now, deal with the font. try { String s = font_style.c.getSelectedItem(); int style = Font.PLAIN; if (s.equals("BOLD")) { style = Font.BOLD; } else if (s.equals("ITALIC")) { style = Font.ITALIC; } Font f = new Font(font_choice.c.getSelectedItem(), style, Integer.parseInt(font_sz.getText())); if (f != null) { font = f; red.setFont(f); green.setFont(f); blue.setFont(f); context_field.setFont(f); font_choice.setFont(f); font_style.setFont(f); font_sz.setFont(f); } } catch (Exception e) { new MessageDialog("ERROR Getting Font", e.toString(), "black", "red"); } }// modifyFontCallback /** context will now change */ public void readObject(BIStream istream) throws IOException { int r,g,b; color = null; int version = 0; r = istream.readInt(); if ((r & 1024) > 0) { version = 1024; r = istream.readInt(); } g = istream.readInt(); b = istream.readInt(); red.setText(String.valueOf(r)); green.setText(String.valueOf(g)); blue.setText(String.valueOf(b)); color = new Color(r,g,b); setForeground(color); if ((r + g + b) > 350) setBackground(new Color(0, 0, 0)); else setBackground(new Color(255, 255, 255)); istream.readToken(); //context, it's set at construction currently if ((version & 1024) > 0) { // read the font stuff too String s = istream.readToken(); font_choice.c.select(s); font_sz.setText(istream.readToken()); font_style.c.select(istream.readToken()); modifyFontCallback(); } //istream.readLine(); }//read public void writeObject(BOStream ostream) throws IOException { StringBuffer sb = new StringBuffer(100); sb.append("1024 "); //version number if (color != null) { sb.append(color.getRed() + " "); sb.append(color.getGreen() + " "); sb.append(color.getBlue() + " "); } else { sb.append("0 0 0 "); } sb.append(context.getNum() + " "); sb.append(font_choice.c.getSelectedItem() + " "); sb.append(font_sz.getText() + " "); sb.append(font_style.getText() + "\n"); ostream.write(sb.toString()); }//writeObject }//ContextColorPair