diff options
Diffstat (limited to 'jpl/JPL_Rolo')
-rwxr-xr-x | jpl/JPL_Rolo/JPL_Rolo.jpl | 557 | ||||
-rw-r--r-- | jpl/JPL_Rolo/Makefile.PL | 84 | ||||
-rw-r--r-- | jpl/JPL_Rolo/README | 27 | ||||
-rwxr-xr-x | jpl/JPL_Rolo/cardfile | 7 |
4 files changed, 0 insertions, 675 deletions
diff --git a/jpl/JPL_Rolo/JPL_Rolo.jpl b/jpl/JPL_Rolo/JPL_Rolo.jpl deleted file mode 100755 index 9c019c84fa..0000000000 --- a/jpl/JPL_Rolo/JPL_Rolo.jpl +++ /dev/null @@ -1,557 +0,0 @@ -import java.awt.*; -import java.awt.event.*; -import java.lang.*; -import java.util.*; - -public class JPL_Rolo extends Frame { - - // The primary key of the row that is current onscreen. - // - int current_row = 0; - - // TextField objects for each column. - // - TextField fld_name, fld_address, fld_city, fld_state, fld_zip, fld_id; - - // Add or Edit mode. - // - String edit_status; - - // a layout manager for the Frame - // - GridBagLayout gb = new GridBagLayout(); - - // Action buttons. - // - Button next, previous, quit, save, newrow, edit, cancel, delete; - - // A Panel for the action buttons. - // - Panel actionbuttons; - - /** - * Construct a new instance of JPL_Rolo. - */ - public JPL_Rolo(String[] argv) { - CreateForm(); - addWindowListener(new WinEventHandler() ); - } - - public void CreateForm() { - - // set the layout for the frame - // - this.setLayout(gb); - - // this is the offset within the GridBagLayout. If - // I want the next object on a different line, I - // postincrement. If not, I don't. - // - int i = 0; - - // Add a text field for the name. - // - AddToFrame(new Label("Name:"), 0, i); - fld_name = new TextField(20); - fld_name.setEditable(false); - AddToFrame(fld_name, 1, i++); - - // The address. - // - AddToFrame(new Label("Address:"), 0, i); - fld_address = new TextField(35); - fld_address.setEditable(false); - AddToFrame(fld_address, 1, i++); - - // The City. I'm not going to increment i, so the - // next field will show up on the same line. - // - AddToFrame(new Label("City:"), 0, i); - fld_city = new TextField(20); - fld_city.setEditable(false); - AddToFrame(fld_city, 1, i); - - // The State. - // - AddToFrame(new Label("State:"), 2, i); - fld_state = new TextField(2); - fld_state.setEditable(false); - AddToFrame(fld_state, 3, i++); - - // The Zip Code. - // - AddToFrame(new Label("Zip:"), 0, i); - fld_zip = new TextField(11); - fld_zip.setEditable(false); - AddToFrame(fld_zip, 1, i++); - - // The id - this is always read-only. - // - AddToFrame(new Label("Id:"), 0, i); - fld_id = new TextField(4); - fld_id.setEditable(false); - AddToFrame(fld_id, 1, i++); - - // create the button panel and give it a FlowLayout - // - actionbuttons = new Panel(); - actionbuttons.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); - - // Add the button panel to the Frame. The AddToFrame - // method isn't really set up to handle this sort of - // panel, so we will go through the tedious process - // of managing the GridBagConstraints... - // - GridBagConstraints c = new GridBagConstraints(); - c.gridwidth = 3; c.gridheight = 1; - c.fill = GridBagConstraints.NONE; - c.anchor = GridBagConstraints.CENTER; - c.weightx = 0.0; c.weighty = 0.0; - c.gridx = 0; c.gridy = i; - ((GridBagLayout)this.getLayout()).setConstraints(actionbuttons, c); - this.add(actionbuttons); - - // instantiate and add each of the buttons - // - previous = new Button("Previous"); - actionbuttons.add(previous); - previous.addActionListener( new PrevRowHandler() ); - - next = new Button("Next"); - actionbuttons.add(next); - next.addActionListener( new NextRowHandler() ); - - quit = new Button("Quit"); - actionbuttons.add(quit); - quit.addActionListener( new QuitHandler() ); - - newrow = new Button("New"); - actionbuttons.add(newrow); - newrow.addActionListener( new NewRowHandler() ); - - edit = new Button("Edit"); - actionbuttons.add(edit); - edit.addActionListener( new EditRowHandler() ); - - delete = new Button("Delete"); - actionbuttons.add(delete); - delete.addActionListener( new DeleteRowHandler() ); - - // save and cancel are disabled until the user - // is adding or editing. - // - save = new Button("Save"); - actionbuttons.add(save); - save.setEnabled(false); - save.addActionListener( new SaveHandler() ); - - cancel = new Button("Cancel"); - actionbuttons.add(cancel); - cancel.setEnabled(false); - cancel.addActionListener( new CancelHandler() ); - - // Invoke getRow() to display the first row in the table. - // - getRow(0); - - } - - /** - * Return the id of the current row. - */ - public int getCurrentRowVal() { - return current_row; - } - - public void setCols(String name, String address, String city, String state, String zip, String id) { - - clearForm(); - - fld_name.setText(name); - fld_address.setText(address); - fld_city.setText(city); - fld_state.setText(state); - fld_zip.setText(zip); - fld_id.setText(id); - current_row = Integer.parseInt(id); - - } - - - public void setCurrentRow(int r) { - current_row = r; - } - - public String getName() { return fld_name.getText(); } - public String getAddress() { return fld_address.getText(); } - public String getCity() { return fld_city.getText(); } - public String getState() { return fld_state.getText(); } - public String getZip() { return fld_zip.getText(); } - public String getId() { return fld_id.getText(); } - - /** - * This eventhandler will move to the previous row. - */ - class PrevRowHandler implements ActionListener { - public void actionPerformed( ActionEvent e) { - getRow(-1); - } - } - - /** - * This eventhandler will move to the next row. - */ - class NextRowHandler implements ActionListener { - public void actionPerformed( ActionEvent e) { - getRow(1); - } - } - - /** - * This eventhandler will terminate the application. - */ - class QuitHandler implements ActionListener { - public void actionPerformed( ActionEvent e) { - System.exit(0); - } - } - - /** - * This eventhandler will display a blank record and put - * this application in new record mode. - */ - class NewRowHandler implements ActionListener { - public void actionPerformed( ActionEvent e) { - clearForm(); - edit_status = "new"; - setEdit(); - } - } - - /** - * This eventhandler will put the application in edit - * mode (for the current row). - */ - class EditRowHandler implements ActionListener { - public void actionPerformed( ActionEvent e) { - edit_status = "edit"; - setEdit(); - } - } - /** - * This eventhandler will delete the current row. - */ - class DeleteRowHandler implements ActionListener { - public void actionPerformed( ActionEvent e) { - delRow(); - } - } - - /** - * This eventhandler will save (update or insert) the - * current record. - */ - class SaveHandler implements ActionListener { - public void actionPerformed( ActionEvent e) { - - if (edit_status.equals("new")) { - saveIt(); - } - if (edit_status.equals("edit")) { - updateRow(); - } - - // set the edit_status to "browse", and call setBrowse() - // - edit_status = "browse"; - setBrowse(); - } - } - - /** - * This eventhandler cancels any pending edit. - */ - class CancelHandler implements ActionListener { - public void actionPerformed( ActionEvent e) { - // if it was new, make sure that they can't edit the - // id field... - - if (edit_status.equals("new")) { - fld_id.setEditable(false); - } - - // return the edit_status to browse, call getRow() - // to retrieve the row they were looking at - // before editing or adding, and call setBrowse() - // - edit_status = "browse"; - getRow(0); - setBrowse(); - } - } - - // This is the event handler to deal with cases where - // the user closes the window with a window control. - // - class WinEventHandler extends WindowAdapter { - public void windowClosing(WindowEvent e) { - System.exit(0); - } - } - - /** - * clearForm() - */ - protected void clearForm () { - fld_name.setText(""); - fld_address.setText(""); - fld_city.setText(""); - fld_state.setText(""); - fld_zip.setText(""); - fld_id.setText(""); - } - - /** - * AddToFrame() - * A convenience method to wrap the living hell - * that is GridBagConstraints() - */ - protected void AddToFrame (Component item, int x, int y) { - - // some sane layout defaults. - // - GridBagConstraints c = new GridBagConstraints(); - c.gridwidth = 1; c.gridheight = 1; - c.fill = GridBagConstraints.NONE; - c.anchor = GridBagConstraints.NORTHWEST; - c.weightx = 0.0; c.weighty = 0.0; - - // set the grid coordinates - // - c.gridx = x; c.gridy = y; - - // set the constraints, and add the item to the layout - // - - ((GridBagLayout)this.getLayout()).setConstraints(item, c); - this.add(item); - } - - /** - * setEdit() - * - * prepare the form for editing/adding - */ - protected void setEdit () { - - // disable all these buttons - // - next.setEnabled(false); - previous.setEnabled(false); - newrow.setEnabled(false); - edit.setEnabled(false); - delete.setEnabled(false); - - // set everything except the id to be editable - // - fld_name.setEditable(true); - fld_address.setEditable(true); - fld_city.setEditable(true); - fld_state.setEditable(true); - fld_zip.setEditable(true); - - // enable these two buttons - // - save.setEnabled(true); - cancel.setEnabled(true); - } - - /** - * setBrowse() - * - * prepare the form for viewing - * - */ - protected void setBrowse() { - - // enable all these buttons - // - next.setEnabled(true); - previous.setEnabled(true); - newrow.setEnabled(true); - edit.setEnabled(true); - delete.setEnabled(true); - - // disable the fields - // - fld_name.setEditable(false); - fld_address.setEditable(false); - fld_city.setEditable(false); - fld_state.setEditable(false); - fld_zip.setEditable(false); - fld_id.setEditable(false); - - // disable these two buttons - // - save.setEnabled(false); - cancel.setEnabled(false); - } - - perl void delRow() {{ - - my $id = $self->getId____s(); - - $sql = qq[delete from cardfile ] . - qq[where (id = $id)]; - - use Sprite; - my $rdb = new Sprite(); - my @data = $rdb->sql($sql); - $rdb->close("cardfile"); - my $status = shift @data; - if (!$status) { - print STDERR "Bummer - couldn't execute query!\n"; - die; - } - $self->setCurrentRow__I(0); - $self->getRow__I(0); - - }} - - perl void updateRow() {{ - - my $name = $self->getName____s(); - my $address = $self->getAddress____s(); - my $city = $self->getCity____s(); - my $state = $self->getState____s(); - my $zip = $self->getZip____s(); - my $id = $self->getId____s(); - - $sql = qq[update cardfile ] . - qq[set name = ('$name'), ] . - qq[set address = ('$address'), ] . - qq[set city = ('$city'), ] . - qq[set state = ('$state'), ] . - qq[set zip = ('$zip') ] . - qq[where (id = $id)]; - - use Sprite; - my $rdb = new Sprite(); - my @data = $rdb->sql($sql); - $rdb->close("cardfile"); - my $status = shift @data; - if (!$status) { - print STDERR "Bummer - couldn't execute query!\n"; - die; - } - - }} - - - /** - * getRow() - * - * This method is used to either fetch this current row, - * in which case it is given an argument of zero, or it - * can be used to move relative to the current row, in - * which case it must be given an argument of 1 or -1. - * - */ - - - perl void getRow(int direction) {{ - - use Sprite; - my $rdb = new Sprite(); - - my $nextid = $self->getCurrentRowVal____I() + $direction; - my $op; - if ($direction == -1) { - $op = "<="; - } else { - $op = ">="; - } - my $sql = "select name, address, city, " . - "state, zip, id from cardfile " . - "where id $op $nextid"; - - my @data = $rdb->sql($sql); - $rdb->close("cardfile"); - - my $status = shift @data; - if (!$status) { - print STDERR "Bummer - couldn't execute query!\n"; - die; - } - - my $numrows = scalar(@data); - - if (!$numrows) { - print STDERR "End of file reached.\n"; - return; - } - - my $index; - if ($direction == -1) { - $index = $#data; - } else { - $index = 0; - } - my($name, $address, $city, $state, $zip, $id) = @{$data[$index]}; - $self->setCols__ssssss($name, $address, $city, $state, $zip, $id); - - }} - - perl void saveIt() {{ - - use Sprite; - my $rdb = new Sprite(); - - my @data = $rdb->sql("select id, name from cardfile"); - - my $status = shift @data; - if (!$status) { - print STDERR "Bummer - couldn't execute query!\n"; - die; - } - - my @ids; - foreach $record (@data) { - my ($id, $name) = split (/\0/, $record, 2); - push @ids, $id; - } - @ids = sort @ids; - my $newid = $ids[$#ids] + 1; - - my $name = $self->getName____s(); - my $address = $self->getAddress____s(); - my $city = $self->getCity____s(); - my $state = $self->getState____s(); - my $zip = $self->getZip____s(); - - my $sql = "insert into cardfile (name, address, city, state, zip, id) values ('$name', '$address', '$city', '$state', '$zip', $newid)"; - @data = $rdb->sql($sql); - $rdb->close("cardfile"); - - $status = shift @data; - if (!$status) { - print STDERR "Bummer - couldn't execute insert!\n"; - die; - } - - $self->setCurrentRow__I($newid); - - }} - - public static void main(String[] args) { - - // make a new JPL_Rolo, pack() it and show() it. - JPL_Rolo cardfile = new JPL_Rolo(args); - cardfile.pack(); - cardfile.show(); - - } - -} - - diff --git a/jpl/JPL_Rolo/Makefile.PL b/jpl/JPL_Rolo/Makefile.PL deleted file mode 100644 index 3dd1f84411..0000000000 --- a/jpl/JPL_Rolo/Makefile.PL +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/perl - -$JPL_HOME = $ENV{JPL_HOME} - or die "You have not run setvars to set your environment variables.\n" . - "See the JPL README file for more information.\n"; - -use Config; - -eval `$JPL_HOME/setvars -perl`; - -chop($WHAT = `pwd`); -$WHAT =~ s#.*/##; - -if ($^O eq 'linux') { - $flags = "-Dbool=char"; # avoid builtin bool altogether - $libs = "-lc -lm -ldl"; -} -else { - $flags = ""; - $libs = "-lc -lm -ldl"; -} -chop($cwd = `pwd`); -($jpldir = $cwd) =~ s#/[^/]*$##; - -open(MAKEFILE, ">Makefile"); - -print MAKEFILE <<"SUBS"; -CC = $Config{cc} -WHAT = $WHAT -PERL = perl$] -ARCHNAME = $Config{archname} -JAVA_HOME = $ENV{JAVA_HOME} -JPL_HOME = $ENV{JPL_HOME} -PERLARCHDIR = $Config{archlib} -FLAGS = $Config{cccdlflags} $Config{ccdlflags} $Config{lddlflags} $flags -INCL = -I\$(PERLARCHDIR)/CORE \\ - -I\$(JAVA_HOME)/include \\ - -I\$(JAVA_HOME)/include/$^O \\ - -I\$(JAVA_HOME)/include/genunix -LIBS = $libs - -SUBS - -print MAKEFILE <<'NOSUBS'; -.SUFFIXES: .jpl .class - -.jpl.class: - $(PERL) -MJPL::Compile -e "file('$*.jpl')" - -all: $(WHAT).class lib$(WHAT).so - -debug: $(WHAT)_g.class lib$(WHAT)_g.so - -lib$(WHAT).so: $(WHAT).c $(JPL_HOME)/lib/$(ARCHNAME)/libPerlInterpreter.so - $(CC) $(FLAGS) $(INCL) $(WHAT).c \ - $(PERLARCHDIR)/CORE/libperl.so \ - $(JPL_HOME)/lib/$(ARCHNAME)/libPerlInterpreter.so \ - $(LIBS) \ - -o lib$(WHAT).so - -lib$(WHAT)_g.so: $(WHAT).c $(JPL_HOME)/lib/$(ARCHNAME)/libPerlInterpreter_g.so - $(CC) -g $(FLAGS) $(INCL) $(WHAT).c \ - $(PERLARCHDIR)/CORE/libperl.so \ - $(JPL_HOME)/lib/$(ARCHNAME)/libPerlInterpreter_g.so \ - $(LIBS) \ - -o lib$(WHAT)_g.so - -test: - -install: all - cp $(WHAT).class $(JPL_HOME)/lib - cp lib$(WHAT).so $(JPL_HOME)/lib/$(ARCHNAME) - cp $(WHAT).pl $(JPL_HOME)/perl - -clean: - rm -f $(WHAT).c $(WHAT).h \ - $(WHAT)*.class $(WHAT)*.pl lib$(WHAT).so $(WHAT)*.java - -distclean: clean - rm -f Makefile - -NOSUBS - -close MAKEFILE; diff --git a/jpl/JPL_Rolo/README b/jpl/JPL_Rolo/README deleted file mode 100644 index 6d4b14b3fe..0000000000 --- a/jpl/JPL_Rolo/README +++ /dev/null @@ -1,27 +0,0 @@ -Welcome to the Sprite sample application for Larry Wall's JPL. This -application showcases a merging of Java and Perl in which Java is employed -to generate a user interface, and Perl is used for data access. -Specifically, Perl is used with Shishir Gundavaram's Sprite module to offer -permanent storage through SQL manipulation of text files. This application -is a Rolodex(tm)-style address file, offering the ability to add, edit or -delete names and addresses. You may also navigate through the address list. - -To use this example, you will need to install the Sprite module from CPAN. - -To install the sample, you must first have JPL installed and working. -Please ensure that you have set environment variables as directed in the -JPL README and that the JPL Sample program works. Once this has been -accomplished, you can build the files in this directory with the following -commmands: - - perl Makefile.PL - make - make install - -You can run this by typing: - - java JPL_Rolo - -The application should appear with some sample data, and you can mess -around with it and put all your friends in the address book. Far out! - diff --git a/jpl/JPL_Rolo/cardfile b/jpl/JPL_Rolo/cardfile deleted file mode 100755 index eecc8067ba..0000000000 --- a/jpl/JPL_Rolo/cardfile +++ /dev/null @@ -1,7 +0,0 @@ -name,address,city,state,zip,id -Brian Jepson,50 Hudson Street,Providence,RI,02909,100 -Elvis Presley,50 Hudson Street,Providence,RI,02909,101 -AS220,115 Empire Street,Providence,RI,02909,600 -Mr. Jones,100 Loudermilk Drive,Springfield,??,,602 -George Maciunas,Canal Street,New York,NY,????,603 -Emmett Williams,Broome Street,New York,NY,?????,605 |