package com.maplesoft.maplenet.tutorial; import java.awt.*; import java.awt.event.*; import java.applet.*; import java.net.URL; import javax.swing.*; import com.maplesoft.client.mathmlEquation; import com.maplesoft.client.mathmlEditEquation; import com.maplesoft.client.MapleToMathML; public class StackTestApplet extends Applet { boolean isStandalone = false; String host; int port; String user; String password; MapleToMathML convertor; TextField expressionString = new TextField(); Button pushButton = new Button(); Button popButton = new Button(); mathmlEquation mathml = new mathmlEquation(); mathmlEquation stacksize = new mathmlEquation(); //Get a parameter value public String getParameter(String key, String def) { return isStandalone ? System.getProperty(key, def) : (getParameter(key) != null ? getParameter(key) : def); } //Construct the applet public StackTestApplet() { } //Initialize the applet public void init() { try { URL url = getDocumentBase(); String sDocHost = url.getHost(); host = this.getParameter( "host", sDocHost ); } catch(Exception e) { e.printStackTrace(); } try { port = Integer.parseInt(this.getParameter("port", "14444")); } catch(Exception e) { e.printStackTrace(); } try { port = Integer.parseInt(this.getParameter("port", "14444")); } catch (Exception e) { e.printStackTrace(); } try { user = this.getParameter("user", "client"); } catch(Exception e) { e.printStackTrace(); } try { password = this.getParameter("password", "demopass"); } catch(Exception e) { e.printStackTrace(); } try { jbInit(); myInit(); } catch(Exception e) { e.printStackTrace(); } convertor = new MapleToMathML( host, port, user, password ); } private void myInit() { this.setSize( 400, 400 ); mathml.setControls( true ); mathml.registerControls( true ); mathml.allow_cut = true; stacksize.setControls( true ); stacksize.registerControls( true ); stacksize.allow_cut = true; } //Component initialization private void jbInit() throws Exception { this.setLayout(null); expressionString.setBackground(Color.white); expressionString.setBounds(new Rectangle(112, 51, 137, 25)); expressionString.setFont(new java.awt.Font("Dialog", 0, 14)); expressionString.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(KeyEvent e) { expressionString_keyTyped(e); } }); pushButton.setBounds(new Rectangle(326, 50, 46, 30)); pushButton.setLabel("Push"); pushButton.addActionListener(new StackTestApplet_pushButton_actionAdapter(this)); popButton.setBounds(new Rectangle(271, 50, 46, 30)); popButton.setLabel("Pop"); popButton.addActionListener(new StackTestApplet_popButton_actionAdapter(this)); this.setBackground(SystemColor.info); this.addKeyListener(new java.awt.event.KeyAdapter() { public void keyTyped(KeyEvent e) { this_keyTyped(e); } }); this.addComponentListener(new java.awt.event.ComponentAdapter() { public void componentResized(ComponentEvent e) { this_componentResized(e); } }); mathml.initBG(SystemColor.info); mathml.setBackground(SystemColor.info); mathml.setBounds(new Rectangle(20, 190, 350, 100)); mathml.setPrefix(""); mathml.setLocation( 20, 190 ); mathml.setSize( 350, 100 ); mathml.setLinebreak( true ); mathml.setDrawBorder( true ); stacksize.initBG(SystemColor.info); stacksize.setBackground(SystemColor.info); stacksize.setBounds(new Rectangle(20, 140, 350, 40)); stacksize.setPrefix(""); stacksize.setLocation( 20, 140 ); stacksize.setSize( 350, 40 ); stacksize.setLinebreak( true ); stacksize.setDrawBorder( true ); this.add(expressionString, null); this.add(pushButton, null); this.add(popButton, null); this.add(mathml, null); this.add(stacksize, null); } //Start the applet public void start() { try { convertor.getLock(); convertor.execute("[assign(s,SimpleStack())]", 2); } catch(Exception e) { e.printStackTrace(); } } //Stop the applet public void stop() { try { convertor.releaseLock(); } catch(Exception e) { e.printStackTrace(); } } //Destroy the applet public void destroy() { } //Get Applet information public String getAppletInfo() { return "Applet Information"; } //Get parameter info public String[][] getParameterInfo() { String[][] pinfo = { {"host", "String", ""}, {"port", "int", ""}, {"user", "String", ""}, {"password", "String", ""}, }; return pinfo; } //Main method public static void main(String[] args) { StackTestApplet applet = new StackTestApplet(); applet.isStandalone = true; Frame frame; frame = new Frame(); frame.setTitle("Applet Frame"); frame.add(applet, BorderLayout.CENTER); applet.init(); applet.start(); frame.setSize(600,420); Dimension d = Toolkit.getDefaultToolkit().getScreenSize(); frame.setLocation((d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2); frame.setVisible(true); } void do_something( String sInput ) { String[] saInput = new String[2]; String[] saOutput = new String[2]; saInput[0] = sInput; saInput[1] = "sprintf(\"Number of items on stack: %d\",s:-depth())"; System.out.println("Try :"+host+":"+port+" user="+user); System.out.println("Input :"+saInput[0] + " " + saInput[1]); try { // sOutput = convertor.execute( sInput + " = " + tInput , 2 ); saOutput = convertor.execute( saInput , 2 ); System.out.println("Output :"+saOutput[0]+ " " + saOutput[1]); mathml.setEquation( saOutput[0] ); stacksize.setEquation( saOutput[1] ); } catch( Exception ex ) { System.out.println("Convert error :" + ex.toString() ); mathml.setEquation( "???" ); stacksize.setEquation( "???" ); } expressionString.requestFocus(); expressionString.selectAll(); expressionString.setText(""); repaint(); } void do_push_something() { do_something("s:-push(" +expressionString.getText() + ")"); } void do_pop_something() { do_something("`if`(s:-depth()>0,s:-pop(),\"Stack is empty\")"); } void resize_the_applet() { int w = getWidth(); int h = getHeight(); int x; int y; int xw; int yh; System.out.println( "Resizing "+w+","+h); y = 50; yh = 25; xw = 45; x = w - 15 - xw; pushButton.setBounds( new Rectangle( x, y, xw, yh)); popButton.setBounds( new Rectangle( x, y, xw, yh)); xw = x - 85 - 5; if(xw < 0) xw = 10; x = 85; expressionString.setBounds( new Rectangle( x, y, xw, yh)); mathml.setBounds( new Rectangle( 20, 150, w-40, h-150-10) ); } void pushButton_actionPerformed(ActionEvent e) { do_push_something(); } void popButton_actionPerformed(ActionEvent e) { do_pop_something(); } void this_componentResized(ComponentEvent e) { resize_the_applet(); } void this_keyTyped(KeyEvent e) { if( e.getKeyCode() == KeyEvent.VK_ENTER) { do_push_something(); } } void expressionString_keyTyped(KeyEvent e) { if( e.getKeyCode() == KeyEvent.VK_ENTER) { do_push_something(); } } } class StackTestApplet_pushButton_actionAdapter implements java.awt.event.ActionListener { StackTestApplet adaptee; StackTestApplet_pushButton_actionAdapter(StackTestApplet adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.pushButton_actionPerformed(e); } } class StackTestApplet_popButton_actionAdapter implements java.awt.event.ActionListener { StackTestApplet adaptee; StackTestApplet_popButton_actionAdapter(StackTestApplet adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.popButton_actionPerformed(e); } }