/* * HortFrEnd - Tim Tyler 2000. * * A front end for the Fast Walsh Transform in Java. * This code has been placed in the public domain. * You can do what you like with it. * Note that this code comes with no warranty. * */ /* * ToDo: * * Abort button. * */ import java.awt.*; import java.applet.*; import java.awt.event.*; public class HortFrEnd extends java.applet.Applet implements ActionListener, ItemListener { static Panel input, output, input1, input2, input3, output1, output2; static TextArea input_area, output_area; static int data[] = new int[256]; static int data1[]; static int data2[]; static int i=0, j=0, k=0, n=0; static String text_area_contents; static int leng; static int size; static int non_linearity; static int total; static int total_number; static int reversiblity = 0; static int aborted = 0; Button FWT_button, clear_button, abort_button; Checkbox reversible_checkbox; static TextField input_number; final static String FWTSTRING = "Report"; final static String CLEARSTRING = "Clear"; final static String ABORTSTRING = "Abort"; final static String REVERSIBLESTRING = "Reversible?"; Executor executor; // constructor public HortFrEnd() { setLayout(new BorderLayout()); output = new Panel(); output.setLayout(new BorderLayout()); output1=new Panel(); output1.setLayout(new GridLayout(1,5,4,4)); // output1.setLayout(new FlowLayout()); output1.add(new Label("Automaton size:",Label.CENTER)); input_number = new TextField("XXXXXX"); output1.add("Center",input_number); FWT_button = new Button(FWTSTRING); output1.add(FWT_button); FWT_button.addActionListener(this); clear_button = new Button(CLEARSTRING); clear_button.addActionListener(this); output1.add(clear_button); // abort_button = new Button(ABORTSTRING); // abort_button.addActionListener(this); // output1.add(abort_button); reversible_checkbox = new Checkbox(REVERSIBLESTRING); reversible_checkbox.addItemListener(this); output1.add(reversible_checkbox); output.add("North",output1); output2=new Panel(); output2.setLayout(new BorderLayout()); output_area = new TextArea(); output_area.setEditable(false); output2.add("Center",output_area); add("North",output); add("Center",output2); input_number.setText(""); } public void itemStateChanged(ItemEvent e) { if ((String)(e.getItem()) == REVERSIBLESTRING) { reversiblity ^= 1; } } public void actionPerformed(ActionEvent ev) { String label = ev.getActionCommand(); n=0; if (label.equals(CLEARSTRING)) { input_number.setText(""); output_area.setText(""); } else { if (label.equals(FWTSTRING)) { if (!input_number.getText().equals("")) { output_area.setText(""); text_area_contents = input_number.getText(); total_number = Integer.parseInt(text_area_contents); size = total_number + 2; output_area.append("Size: " + total_number + ". Max period: " + ((1L << total_number) - 1) + ".\n\n"); executor = new Executor() { public void execute() { HortFrEnd.output_area.append(Hortensius.output_string); } }; Hortensius.executor = executor; if (reversiblity == 0) { Hortensius.test(total_number + 2); } else { Hortensius.testReversibility(total_number + 2); } } else { output_area.setText("Error: no size specified.\n"); } } } } }