/
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: OLCDoor.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.*;


class OLCDoor extends Frame {
   ClientDisplay parent;
   
   LabeledCheckBoxGlob boxes;
   LabeledTextField names;
   LabeledTextArea desc;
   LabeledTextField token_num;
   LabeledTextField key_num;
   LabeledTextField vis_bit;
   HegemonManager hm;

   public OLCDoor(ClientDisplay par, HegemonManager h) {
      
      super("Create a Door.");
      hm = h;
      
      addWindowListener (new WindowAdapter () {
         public void windowClosing (WindowEvent e) {
            dispose();
         }});

      int REM = GridBagConstraints.REMAINDER;
      parent = par;
      boxes = new LabeledCheckBoxGlob("Door Flags", 3, 4);
      
      boxes.addBox(new NumCheckbox("Mag. Lockable", false, 1));
      boxes.addBox(new NumCheckbox("Closed", true, 2));
      boxes.addBox(new NumCheckbox("Locked", false, 3));
      boxes.addBox(new NumCheckbox("Pickable", false, 4));
      boxes.addBox(new NumCheckbox("Lockable", false, 5));
      boxes.addBox(new NumCheckbox("Mag. Locked", false, 6));
      boxes.addBox(new NumCheckbox("Destructable", false, 7));
      boxes.addBox(new NumCheckbox("Closeable", true, 8));
      boxes.addBox(new NumCheckbox("!open", false, 11));
      boxes.addBox(new NumCheckbox("Exit From Vehicle", false, 12));
      boxes.addBox(new NumCheckbox("Secret", false, 13));
      boxes.addBox(new NumCheckbox("Secret When Open", false, 16));
      boxes.addBox(new NumCheckbox("Consumes Key", false, 17));
      boxes.addBox(new NumCheckbox("!passdoor", false, 18));
      
      GridBagLayout gridbag = new GridBagLayout();
      GridBagConstraints c = new GridBagConstraints();
      setLayout(gridbag);
      
      c.fill = GridBagConstraints.BOTH;
      c.weightx = c.weighty = 0.0;
      
      c.gridwidth = REM;
      names =
        new LabeledTextField("Names: <dir name1 .. # .. name1 opp_dir>",
                             "", 50);
      gridbag.setConstraints(names, c);
      add(names);
      
      desc = new LabeledTextArea("Door Description", "", 5, 80);
      gridbag.setConstraints(desc, c);
      add(desc);
      
      gridbag.setConstraints(boxes, c);
      add(boxes);
      
      c.gridwidth = 50;
      vis_bit = new LabeledTextField("Visibility Bits:", "0", 15);
      gridbag.setConstraints(vis_bit, c);
      add(vis_bit);
      
      token_num = new LabeledTextField("Token Number:", "0", 15);
      gridbag.setConstraints(token_num, c);
      add(token_num);
      
      c.gridwidth = REM;
      key_num = new LabeledTextField("Key Number:", "0", 15);
      gridbag.setConstraints(key_num, c);
      add(key_num);
      
      DoorButtonPanel bp = new DoorButtonPanel(this);
      gridbag.setConstraints(bp, c);
      add(bp);
      
      this.pack();
   }//constructor
   
   void do_cancel() {
      dispose();
   }

   void do_help() {
      hm.getHelpFrame().show("olc_door.bml");
   }
   
   void do_submit() {

      MessageDialog md =
        new MessageDialog("Door Creation",
                          "The info is being sent to the server.  An error"
                          + " or confirmation notice should pop up soon..",
                          "green", "black");
      parent.submitDoor(this);
   }

   public final String getNames() {
      return names.getText() + " ~";
   }

   public final String getDesc() {
      return desc.getText() + "\n~";
   }

   public final String getFlags() {
      return boxes.getText() + " -1";
   }

  public final String getVisBit() {
     return vis_bit.getText();
  }

  public final String getKeyNum() {
     return key_num.getText();
  }

  public final String getTokenNum() {
     return token_num.getText();
  }
   
}//OLCDoor



class DoorButtonPanel extends Panel {
  OLCDoor parent;

  public DoorButtonPanel(OLCDoor par) {
    super();
    parent = par;

    Button cancel = new Button("Cancel");
    Button submit = new Button("Submit");
    Button help = new Button("Help");
    
    FlowLayout fl = new FlowLayout();
    setLayout(fl);

    cancel.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
	parent.do_cancel();
      }});

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

    submit.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent e) {
	parent.do_submit();
      }});

    add(submit);
    add(cancel);
    add(help);

  }//constructor
}//HDButtonPanel