=================================================================== RCS file: /home/cvs/OpenXM/src/OpenMath/PolyCalc.java,v retrieving revision 1.2 retrieving revision 1.6 diff -u -p -r1.2 -r1.6 --- OpenXM/src/OpenMath/PolyCalc.java 1999/11/02 14:54:37 1.2 +++ OpenXM/src/OpenMath/PolyCalc.java 1999/11/10 21:25:48 1.6 @@ -1,19 +1,22 @@ /** - * PolyCalc.java $OpenXM$ + * $OpenXM: OpenXM/src/OpenMath/PolyCalc.java,v 1.5 1999/11/02 15:58:11 tam Exp $ */ import JP.ac.kobe_u.math.tam.OpenXM.*; import java.applet.*; +import java.awt.event.*; import java.awt.*; -class PolyCalc extends Applet{ - private String host; - int ControlPort,DataPort; +class PolyCalc extends Applet implements ActionListener,Runnable{ + private String host = "localhost"; + private int ControlPort = 1200,DataPort = 1300; private OpenXM oxm; - private Button random1_button,random2_button; - private Button mul_button,remainder_button,swap_button,set_button; + //private Button random1_button,random2_button; + //private Button mul_button,remainder_button,swap_button,set_button; private TextField poly1,poly2; private TextArea textarea; + private Thread thread = null; + private boolean debug = false; //private Text PolyCalc(String host,int ControlPort,int DataPort){ @@ -25,6 +28,7 @@ class PolyCalc extends Applet{ public void init(){ GridBagLayout gridbag = new GridBagLayout(); GridBagConstraints c = new GridBagConstraints(); + Button button; //setFont(); setLayout(gridbag); @@ -39,86 +43,180 @@ class PolyCalc extends Applet{ add(textarea); { - Label label = new Label("poly 1:"); + Label label = new Label("poly A:"); gridbag.setConstraints(label,c); add(label); } - random1_button = new Button("generate random polynomial"); - gridbag.setConstraints(random1_button,c); - add(random1_button); + button = new Button("generate random polynomial A"); + button.addActionListener(this); + gridbag.setConstraints(button,c); + add(button); - mul_button = new Button("poly1 * poly2"); + button = new Button("A * B"); + button.addActionListener(this); c.gridwidth = GridBagConstraints.REMAINDER; - gridbag.setConstraints(mul_button,c); + gridbag.setConstraints(button,c); c.gridwidth = 1; - add(mul_button); + add(button); poly1 = new TextField(20); + poly1.addActionListener(this); c.gridwidth = 2; gridbag.setConstraints(poly1,c); c.gridwidth = 1; add(poly1); - remainder_button = new Button("poly1 % poly2"); + button = new Button("A % B"); + button.addActionListener(this); //c.gridx = 2; //c.weightx = 0.0; - gridbag.setConstraints(remainder_button,c); - add(remainder_button); + gridbag.setConstraints(button,c); + add(button); - swap_button = new Button("swap poly1 & poly2"); + button = new Button("swap A & B"); + button.addActionListener(this); c.gridwidth = GridBagConstraints.REMAINDER; - gridbag.setConstraints(swap_button,c); + gridbag.setConstraints(button,c); c.gridwidth = 1; - add(swap_button); + add(button); { - Label label = new Label("poly 2:"); + Label label = new Label("poly B:"); gridbag.setConstraints(label,c); add(label); } - random2_button = new Button("generate random polynomial"); - gridbag.setConstraints(random2_button,c); - add(random2_button); + button = new Button("generate random polynomial B"); + button.addActionListener(this); + gridbag.setConstraints(button,c); + add(button); - set_button = new Button("poly1 <= poly2"); + button = new Button("poly1 <= poly2"); + button.addActionListener(this); c.gridwidth = GridBagConstraints.REMAINDER; - gridbag.setConstraints(set_button,c); + gridbag.setConstraints(button,c); c.gridwidth = 1; - add(set_button); + add(button); poly2 = new TextField(); c.gridwidth = 2; gridbag.setConstraints(poly2,c); c.gridwidth = 1; add(poly2); + + button = new Button("grobner base"); + button.addActionListener(this); + gridbag.setConstraints(button,c); + add(button); + + button = new Button("quit"); + button.addActionListener(this); + gridbag.setConstraints(button,c); + add(button); } + public void run(){ // for debug + try{ + while(true){ + CMO tmp; + + Thread.yield(); + + switch(oxm.receiveOXtag()){ + case OpenXM.OX_COMMAND: + oxm.receiveSM(); + break; + + case OpenXM.OX_DATA: + tmp = oxm.receiveCMO(); + textarea.append("=> "+ tmp +"\n"); + break; + } + } + }catch(java.io.IOException e){} + } + + public void actionPerformed(ActionEvent evt) { + String arg = evt.getActionCommand(); + + debug("press \""+ arg +"\" button."); + + if(arg.equals("quit")){ + }else if(arg.equals("grobner base")){ + try{ + debug("poly A: "+ poly1.getText()); + oxm.sendCMO(new CMO_STRING("[[("+ poly1.getText() +") ("+ poly2.getText() +")] (x,y)] gb")); + oxm.sendSM(new SM(SM.SM_executeStringByLocalParser)); + oxm.sendSM(new SM(SM.SM_popString)); + }catch(java.io.IOException e){} + } + /* + if ("first".equals(arg)) { + ((CardLayout)cards.getLayout()).first(cards); + } else if ("next".equals(arg)) { + ((CardLayout)cards.getLayout()).next(cards); + } else if ("previous".equals(arg)) { + ((CardLayout)cards.getLayout()).previous(cards); + } else if ("last".equals(arg)) { + ((CardLayout)cards.getLayout()).last(cards); + } else { + ((CardLayout)cards.getLayout()).show(cards,(String)arg); + } + */ + } + public void start(){ textarea.append("Connecting to "+ host +"("+ ControlPort +","+ DataPort +")\n"); try{ oxm = new OpenXM(host,ControlPort,DataPort); + textarea.append("Connected.\n"); + oxm.sendCMO(new CMO_STRING("(cohom.sm1) run ;\n")); + oxm.sendSM(new SM(SM.SM_executeStringByLocalParser)); + + thread = new Thread(this); + thread.start(); }catch(java.io.IOException e){ textarea.append("failed.\n"); stop(); - return; } - textarea.append("Connected.\n"); } + private void debug(String str){ + if(debug){ + System.out.println(str); + } + } + + private static String usage(){ + String ret = ""; + + ret += "usage\t: java PolyCalc [options]\n"; + ret += "options\t:\n"; + ret += "\t -h \t show this message\n"; + ret += "\t -host hostname \t (default localhost)\n"; + ret += "\t -data port \t (default 1300)\n"; + ret += "\t -control port \t (default 1200)\n"; + ret += "\t -debug \t display debug message\n"; + + return ret; + } + public static void main(String argv[]){ Frame frame = new Frame("Polynomial Calculator"); - Applet applet; + //Applet applet; + PolyCalc applet; String host = "localhost"; int DataPort = 1300, ControlPort = 1200; for(int i=0;i