// $Id: PsoEditor.java,v 1.3 1999/06/22 05:33:08 greear Exp $
// $Revision: 1.3 $ $Author: greear $ $Date: 1999/06/22 05:33:08 $
//
//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.util.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
/** Player Shop Owner editor. This is used for player-run shop
* manipulation.
*/
class PsoEditor extends Frame {
LabeledTextField i_th;
LabeledTextField keeper;
TextField register;
LabeledTextField new_obj;
Button reload_b, new_b, update_reg_b, done_b;
GridBagLayout gridbag;
GridBagConstraints c;
Vector elements; // holds all of the individual value collections
HegemonManager hm;
public String getIth() { return i_th.getText(); }
public String getKeeperName() { return keeper.getText(); }
public PsoEditor(HegemonManager h) {
super("Player-run Shop Editor");
hm = h;
i_th = new LabeledTextField("i_th", "", 5);
keeper = new LabeledTextField("Keeper Name", "", 10);
register = new TextField("", 10);
new_obj = new LabeledTextField("New Obj Name", "", 15);
elements = new Vector();
reload_b = new Button("Re-list");
new_b = new Button("New Entry");
done_b = new Button("Done");
update_reg_b = new Button("Update Register");
Panel reg_p = new Panel();
reg_p.setLayout(new BorderLayout());
reg_p.add("North", update_reg_b);
reg_p.add("South", register);
reg_p.setBackground(new Color(50,255,50));
register.setBackground(new Color(255,255,255));
update_reg_b.setBackground(new Color(130,130,255)); //blue
Panel p = new Panel();
p.setLayout(new BorderLayout());
reload_b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_relist();
}});
new_b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_new();
}});
update_reg_b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_update_reg();
}});
done_b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
setVisible(false);
}});
int REM = GridBagConstraints.REMAINDER;
gridbag = new GridBagLayout();
c = new GridBagConstraints();
setLayout (gridbag);
c.fill = GridBagConstraints.HORIZONTAL;
c.gridwidth = 1;
gridbag.setConstraints(i_th, c);
add(i_th);
gridbag.setConstraints(keeper, c);
add(keeper);
gridbag.setConstraints(reg_p, c);
add(reg_p);
gridbag.setConstraints(new_obj, c);
add(new_obj);
c.gridwidth = REM;
Panel p_top = new Panel();
p_top.add(reload_b);
p_top.add(done_b);
p.add("North", new_b);
p.add("South", p_top);
gridbag.setConstraints(p, c);
add(p);
Panel label_p = new Panel();
label_p.setLayout(new FlowLayout());
Label l = new Label("Index");
label_p.add(l);
l = new Label("Object# ");
label_p.add(l);
l = new Label("Buy Value");
label_p.add(l);
l = new Label("Sell Value ");
label_p.add(l);
l = new Label(" Name Control Buttons ");
label_p.add(l);
gridbag.setConstraints(label_p, c);
add(label_p);
addWindowListener (new WindowAdapter () {
public void windowClosing (WindowEvent e) {
setVisible(false);
}});
pack();
}//constructor
void do_new() {
try {
hm.getSocketManager().write("value_add " + hm.getPsoEditor().getIth()
+ " " + hm.getPsoEditor().getKeeperName()
+ " " + new_obj.getText() + "\n");
}//try
catch (Exception e) {
MessageDialog md = new MessageDialog("Network Error",
"Could not add entry: "
+ e, "red", "black");
e.printStackTrace();
}//catch
do_relist();
}//do_new
void do_update_reg() {
try {
hm.getSocketManager().write("adjust_register " + hm.getPsoEditor().getIth()
+ " " + hm.getPsoEditor().getKeeperName()
+ " " + register.getText() + "\n");
}//try
catch (Exception e) {
MessageDialog md = new MessageDialog("Network Error",
"Could not update register: "
+ e, "red", "black");
e.printStackTrace();
}//catch
do_relist();
}//do_update_reg
public void do_relist() {
try {
hm.getSocketManager().write("value_list " + hm.getPsoEditor().getIth()
+ " " + hm.getPsoEditor().getKeeperName()
+ "\n");
}//try
catch (Exception e) {
MessageDialog md = new MessageDialog("Network Error",
"Could not refresh: "
+ e, "red", "black");
e.printStackTrace();
}//catch
}
// public void do_help() {
// if (!hm.IS_APPLET)
// hm.getHelpFrame().show("client" + System.getProperty("file.separator")
// + "oleditor");
// else {
// Log.instance().dbg("Trying to show: client/oleditor");
// hm.getHelpFrame().show("client/oleditor");
// }
// }//doHelp
public void setList(String _i_th, String nm, String reg) {
Log.instance().dbg("setList: " + _i_th + " " + nm);
clear();
i_th.setText(_i_th);
keeper.setText(nm);
register.setText(reg);
}//setNames
public void setItem(String idx, String obj_num, String sell_val,
String buy_val) {
ValueEntry ve = new ValueEntry(idx, obj_num, buy_val, sell_val, hm);
gridbag.setConstraints(ve, c);
add(ve);
elements.addElement(ve);
pack();
}
public void setName(String idx, String val) {
Log.instance().dbg("In PsoEditor.setName idx -:" + idx + ":- val -:"
+ val + ":-\n");
ValueEntry ve;
for (int i = 0; i<elements.size(); i++) {
ve = (ValueEntry)(elements.elementAt(i));
if (idx.equals(ve.getIndex())) {
ve.setObjName(val);
return;
}//if
}//for
Log.instance().err("Could not find index in setName.");
return;
}//setName
public void clear() {
i_th.clear();
keeper.clear();
for (int i = 0; i<elements.size(); i++) {
remove((ValueEntry)(elements.elementAt(i)));
}//for
elements = new Vector();
}//
}//PsoEditor
class ValueEntry extends Panel {
TextField idx;
TextField obj_num;
TextField buy_val;
TextField sell_val;
TextField name;
Button update_b;
Button delete_b;
HegemonManager hm;
public String getIndex() { return idx.getText(); }
public void setObjName(String str) {
name.setText(str);
}
public ValueEntry(String i, String o, String b, String s,
HegemonManager h) {
hm = h;
setLayout(new FlowLayout());
add(idx = new TextField(i, 3));
add(obj_num = new TextField(o, 7));
add(buy_val = new TextField(b, 7));
add(sell_val = new TextField(s, 7));
add(name = new TextField("", 24));
// idx.setEnabled(false);
// obj_num.setEnabled(false);
// name.setEnabled(false);
update_b = new Button("Update");
update_b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_update();
}});
add(update_b);
delete_b = new Button("Delete");
delete_b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
do_delete();
}});
add(delete_b);
}//constructor
public void do_update() {
try {
hm.getSocketManager().write("value_set " + hm.getPsoEditor().getIth()
+ " " + hm.getPsoEditor().getKeeperName()
+ " " + idx.getText()
+ " " + sell_val.getText()
+ " " + buy_val.getText() + "\n");
}//try
catch (Exception e) {
MessageDialog md = new MessageDialog("Network Error",
"Could not update entry: "
+ e, "red", "black");
e.printStackTrace();
}//catch
}//do_update
public void do_delete() {
try {
hm.getSocketManager().write("value_rem " + hm.getPsoEditor().getIth()
+ " " + hm.getPsoEditor().getKeeperName()
+ " " + idx.getText() + "\n");
// Update ourselves....
hm.getPsoEditor().do_relist();
}//try
catch (Exception e) {
MessageDialog md = new MessageDialog("Network Error",
"Could not delete entry: "
+ e, "red", "black");
e.printStackTrace();
}//catch
}//do_delete
}//ValueEntry