/
ScryMUD/mud/
ScryMUD/mud/grrmud/Boards/
ScryMUD/mud/grrmud/Help/
ScryMUD/mud/grrmud/Pfiles/
ScryMUD/mud/grrmud/PlayerSacks/
ScryMUD/mud/grrmud/PlayerShops/
ScryMUD/mud/grrmud/help_filter/
ScryMUD/mud/hegemon/
ScryMUD/mud/hegemon/data/
ScryMUD/mud/hegemon/data/help/battle/
ScryMUD/mud/hegemon/data/help/client/
ScryMUD/mud/hegemon/data/help/communications/
ScryMUD/mud/hegemon/data/help/skills/
ScryMUD/mud/hegemon/data/help/spells/
ScryMUD/mud/include/
ScryMUD/mud/lib/
ScryMUD/mud/lib/bitfield/
ScryMUD/mud/lib/log/
ScryMUD/mud/lib/string2/
// $Id: KeywordEditor.java,v 1.3 1999/06/05 23:29:12 greear Exp $
// $Revision: 1.3 $  $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.*;
import java.util.*;

/** This allows for some quick editing of already-created 
 * Keyword entries.
 * Or you can create your own if you know what you're doing!
 */
class KeywordEditor extends Frame {
   LabeledTextArea desc;
   LabeledTextField names;
   LabeledTextField cell_num;
   Checkbox is_frozen;

   HegemonManager hm;
   
   public KeywordEditor(HegemonManager h) {
      super("Keyword Editor");
      hm = h;

      desc = new LabeledTextArea("Keyword Description", "", 10, 80);
      cell_num = new LabeledTextField("Keyword Number", "", 10);
      names = new LabeledTextField("Keyword Name(s)", "", 60);
      is_frozen = new Checkbox("Is Frozen", false);

      int REM = GridBagConstraints.REMAINDER;
      GridBagLayout gridbag = new GridBagLayout();
      GridBagConstraints c = new GridBagConstraints();
      setLayout (gridbag);

      c.fill = GridBagConstraints.BOTH;

      c.gridwidth = 1;
      
      gridbag.setConstraints(cell_num, c);
      add(cell_num);

      gridbag.setConstraints(is_frozen, c);
      add(is_frozen);

      c.gridwidth = REM;

      gridbag.setConstraints(names, c);
      add(names);

      gridbag.setConstraints(desc, c);
      add(desc);

      KEButtons oeb = new KEButtons(this);
      gridbag.setConstraints(oeb, c);
      add(oeb);
      pack();
   }//constructor

   public boolean isFrozen() {
      return is_frozen.getState();
   }
   
   public void do_close() {
      setVisible(false);
   }

   public void do_help() {
      if (!hm.IS_APPLET)
        hm.getHelpFrame().show("client" + System.getProperty("file.separator")
                               + "keditor");
      else {
         Log.instance().dbg("Trying to show: client/keditor");
         hm.getHelpFrame().show("client/keditor");
      }
   }//doHelp
   
   public void do_toggle_freeze() {
      is_frozen.setState(!is_frozen.getState());
   }
   
   public void setCellNum(String num) {
      if (is_frozen.getState())
         return;
      cell_num.setText(num);
   }

   public void setNames(String str) {
      if (is_frozen.getState())
         return;
      names.setText(str);
   }

   public void appendDesc(String str) {
      if (is_frozen.getState())
         return;
      desc.append(str);
   }

   public void do_clear() {
      desc.clear();
      names.clear();
      cell_num.clear();
      is_frozen.setState(false);
   }//

   public void do_update() {
      is_frozen.setState(false);

      try {
         //first, clear what was there already...
         hm.getSocketManager().write("clear_keyword " + cell_num.getText()
                                     + "\n");

         // now, add names...
         StringTokenizer tok = new StringTokenizer(names.getText());
         while (tok.hasMoreElements()) {
            hm.getSocketManager().write("add_kname " + cell_num.getText()
                                        + " " + tok.nextToken() + "\n");
         }//while

         // now change the description
         hm.getSocketManager().write("ch_kdesc " + cell_num.getText() 
                                     + "\n");
         hm.getSocketManager().write(desc.getText() + "\n~\n");
         
      }//try
      catch (Exception e) {
         e.printStackTrace();
      }

      //do_clear();
   }//do_update
}//OlEditor


class KEButtons extends Panel {
   KeywordEditor parent;
   
   public KEButtons(KeywordEditor par) {
      super();
      parent = par;

      Button cancel_b = new Button("Cancel");
      Button update_b = new Button("Update");
      Button done_b = new Button("Done");
      Button help_b = new Button("Help");

      done_b.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            parent.do_close();
         }});

      cancel_b.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            parent.do_clear();
            parent.do_close();
         }});

      help_b.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            parent.do_help();
         }});

      update_b.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            parent.do_update();
         }});

      FlowLayout fl = new FlowLayout();
      setLayout(fl);

      add(update_b);
      add(cancel_b);
      add(done_b);
      add(help_b);
   }//OEButtons constructor
}//OEButtons