diff --git a/grammars/health/HealthEng.gf b/grammars/health/HealthEng.gf index 537c7af88..0ee489f18 100644 --- a/grammars/health/HealthEng.gf +++ b/grammars/health/HealthEng.gf @@ -1,6 +1,6 @@ -- use this path to read the grammar from the same directory --# -path=.:../newresource/abstract:../prelude:../newresource/english -concrete HealthEng of Health = open PredicationEng, ResourceEng, ResourceExtEng, Prelude, SyntaxEng, ExtraEng, ParadigmsEng in { +concrete HealthEng of Health = open PredicationEng, ResourceEng, ResourceExtEng, Prelude, Predef, SyntaxEng, ExtraEng, ParadigmsEng in { flags startcat=Phr ; lexer=text ; parser=chart ; unlexer=text ; diff --git a/src/JavaGUI/GFEditor2.java b/src/JavaGUI/GFEditor2.java index 2751c1c18..91fe1fcdc 100644 --- a/src/JavaGUI/GFEditor2.java +++ b/src/JavaGUI/GFEditor2.java @@ -16,8 +16,9 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener, private int[] sizes = {10,12,16,20,25,30,36}; private String[] envfonts; - private Font[] fontObjs; - private static int DEFAULT_FONT_SIZE = 12; + private Font font; + Font[] fontObjs; + private static int DEFAULT_FONT_SIZE = 18; private JComboBox fontList; private JLabel fontLabel = new JLabel(" Font: "); private JComboBox sizeList; @@ -150,6 +151,7 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener, private JRadioButtonMenuItem rbMenuItemUnTyped; private static JMenuItem fileMenuItem; private static JCheckBoxMenuItem cbMenuItem; + private static JCheckBoxMenuItem treeCbMenuItem; private static RadioListener myListener ; private static ButtonGroup group = new ButtonGroup(); private static ButtonGroup languageGroup = new ButtonGroup(); @@ -178,12 +180,12 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener, menuBar.add(viewMenu); menuBar.add(modeMenu); - cbMenuItem = new JCheckBoxMenuItem("Tree"); - cbMenuItem.setActionCommand("showTree"); + treeCbMenuItem = new JCheckBoxMenuItem("Tree"); + treeCbMenuItem.setActionCommand("showTree"); myListener = new RadioListener(); - cbMenuItem.addActionListener(myListener); - cbMenuItem.setSelected(true); - viewMenu.add(cbMenuItem); + treeCbMenuItem.addActionListener(myListener); + treeCbMenuItem.setSelected(true); + viewMenu.add(treeCbMenuItem); viewMenu.addSeparator(); fileMenuItem = new JMenuItem("Open..."); @@ -275,8 +277,9 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener, output.setSelectionColor(Color.green); // output.setSelectionColor(Color.white); // output.setFont(new Font("Arial Unicode MS", Font.PLAIN, 17)); - output.setFont(new Font(null, Font.PLAIN, 17)); - field.setFont(new Font(null, Font.PLAIN, 17)); + font = new Font(null, Font.PLAIN, 20); + output.setFont(font); + field.setFont(font); field.setFocusable(true); field.addKeyListener(this); field.addFocusListener(this); @@ -343,10 +346,16 @@ public class GFEditor2 extends JFrame implements ActionListener, CaretListener, } sizeList.addActionListener(this); - upPanel.add(fontLabel); - upPanel.add(fontList); + sizeList.setFont(font); + fontList.setFont(font); + menu.setFont(font); + filter.setFont(font); + modify.setFont(font); + upPanel.add(sizeLabel); upPanel.add(sizeList); + upPanel.add(fontLabel); + upPanel.add(fontList); tree.setToolTipText("The abstract syntax tree representation of the current editing object"); populateTree(tree); @@ -959,7 +968,6 @@ System.out.println("encoding "+defaultEncoding); { boolean abs = true; Object obj = ae.getSource(); - Font font; if ( obj == fontList ) { font = new Font((String)fontList.getSelectedItem(), Font.PLAIN, ((Integer)sizeList.getSelectedItem()).intValue()); @@ -973,6 +981,7 @@ System.out.println("encoding "+defaultEncoding); tree.tree.setFont(font); list.setFont(font); sizeList.setFont(font); + popup2.setFont(font); sizeLabel.setFont(font); save.setFont(font); fontList.setFont(font); @@ -1140,8 +1149,8 @@ System.out.println("encoding "+defaultEncoding); treeChanged = true; newObject = true; - menu.removeAllItems(); - menu.addItem("New"); + while (1< menu.getItemCount()) + menu.removeItemAt(1); langMenu.removeAll(); AbstractButton ab = null; @@ -1201,8 +1210,6 @@ System.out.println("encoding "+defaultEncoding); } submenu.removeAll(); - //menu.removeAllItems(); - //menu.addItem("New"); while (1< menu.getItemCount()) menu.removeItemAt(1); System.out.println("importing: "+ file.getPath().replace('\\','/')); @@ -1228,8 +1235,8 @@ System.out.println("encoding "+defaultEncoding); listModel.clear(); tree.clear(); populateTree(tree); - menu.removeAllItems(); - menu.addItem("New"); + while (1< menu.getItemCount()) + menu.removeItemAt(1); langMenu.removeAll(); AbstractButton ab = null; @@ -1276,8 +1283,8 @@ System.out.println("encoding "+defaultEncoding); listModel.clear(); tree.clear(); populateTree(tree); - menu.removeAllItems(); - menu.addItem("New"); + while (1< menu.getItemCount()) + menu.removeItemAt(1); langMenu.removeAll(); AbstractButton ab = null; @@ -1507,7 +1514,7 @@ System.out.println("encoding "+defaultEncoding); if (action.equals("showTree") ) { if (!((JCheckBoxMenuItem)e.getSource()).isSelected()){ if (debug) System.out.println("was selected"); - cbMenuItem.setSelected(false); + treeCbMenuItem.setSelected(false); if (((JRadioButtonMenuItem)viewMenu.getItem(2)).isSelected()) { centerPanel.remove(treePanel); centerPanel.setLeftComponent(outputPanelUp); @@ -1519,7 +1526,7 @@ System.out.println("encoding "+defaultEncoding); } else { if (debug) System.out.println("was not selected"); - cbMenuItem.setSelected(true); + treeCbMenuItem.setSelected(true); if (((JRadioButtonMenuItem)viewMenu.getItem(2)).isSelected()) { centerPanel.remove(outputPanelUp); treePanel.setRightComponent(outputPanelUp); @@ -1569,10 +1576,11 @@ System.out.println("encoding "+defaultEncoding); send("ml Abs"); } else - { + if (!action.equals("split")&&!action.equals("combine")&&!action.equals("showTree")) + { System.out.println("sending "+action); send("ml " + action); - } + } } } } @@ -2077,9 +2085,15 @@ System.out.println("encoding "+defaultEncoding); { if (debug3) System.out.println(e.getX() + " " + e.getY()); if (selectedText.length()<5) - field.setBounds(e.getX()+(int)Math.round(tree.getBounds().getWidth()), e.getY()+80, 400, 40); + if (treeCbMenuItem.isSelected()) + field.setBounds(e.getX()+(int)Math.round(tree.getBounds().getWidth()), e.getY()+80, 400, 40); + else + field.setBounds(e.getX(), e.getY()+80, 400, 40); else - field.setBounds(e.getX()+(int)Math.round(tree.getBounds().getWidth()), e.getY()+80, selectedText.length()*20, 40); + if (treeCbMenuItem.isSelected()) + field.setBounds(e.getX()+(int)Math.round(tree.getBounds().getWidth()), e.getY()+80, selectedText.length()*20, 40); + else + field.setBounds(e.getX(), e.getY()+80, selectedText.length()*20, 40); getLayeredPane().add(field, new Integer(1), 0); field.setText(selectedText); field.requestFocusInWindow(); @@ -2088,6 +2102,7 @@ System.out.println("encoding "+defaultEncoding); } void addMenuItem(String name){ menuItem2 = new JMenuItem(name); + menuItem2.setFont(font); menuItem2.setActionCommand("popupMenuItem"); menuItem2.addActionListener(this); popup2.add(menuItem2); diff --git a/src/JavaGUI/Numerals.java b/src/JavaGUI/Numerals.java new file mode 100644 index 000000000..752cf232c --- /dev/null +++ b/src/JavaGUI/Numerals.java @@ -0,0 +1,1552 @@ +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import javax.swing.text.*; +import javax.swing.event.*; +import javax.swing.tree.*; +import java.io.*; +import java.util.*; + +public class Numerals extends JFrame implements ActionListener, KeyListener { + private JComboBox fontList; + private JLabel fontLabel = new JLabel(" Font: "); + private JPanel up = new JPanel(); + public static boolean debug = true; + public static boolean newObject = false; + public static boolean finished = false; + private String parseInput = ""; + private String alphaInput = ""; + private static String status = "status"; + private static String selectedMenuLanguage = "Abstract"; + private static String linearization = ""; + private String termInput = ""; + private static String outputString = ""; + private static String treeString = ""; + private static String fileString = ""; + public static Vector commands = new Vector(); + public static Hashtable nodeTable = new Hashtable(); + JFileChooser fc1 = new JFileChooser("./"); + JFileChooser fc = new JFileChooser("./"); + private String [] filterMenu = {"Filter", "identity", + "erase", "take100", "text", "code", "latexfile", + "structured", "unstructured" }; + private String [] modifyMenu = {"Modify", "identity", + "compute", "paraphrase", "typecheck", "solve", "context" }; +// private String [] modeMenu = {"Menus", "printname", +// "plain", "short", "long", "typed", "untyped" }; + private static String [] newMenu = {"New"}; + + private static boolean firstLin = true; + private static boolean waiting = false; + public static boolean treeChanged = true; + private static String result; + private static int selectionStart; + private static int selectionEnd; + private static BufferedReader fromProc; + private static BufferedWriter toProc; + private static String commandPath = new String("GF"); + private static JTextArea output = new JTextArea(); + public static DefaultListModel listModel= new DefaultListModel(); + private JList list = new JList(listModel); + private static DynamicTree tree = new DynamicTree(); + + private JLabel grammar = new JLabel("No topic "); + private JButton save = new JButton("Save"); + private JButton open = new JButton("Open"); + private JButton newTopic = new JButton("New Topic"); + private JButton gfCommand = new JButton("GF command"); + private JButton send = new JButton("Show"); + private JTextField input = new JTextField(25); + + private JButton leftMeta = new JButton("?<"); + private JButton left = new JButton("<"); + private JButton top = new JButton("Top"); + private JButton right = new JButton(">"); + private JButton rightMeta = new JButton(">?"); + private JButton read = new JButton("Read"); + // private JButton parse = new JButton("Parse"); + // private JButton term = new JButton("Term"); + private JButton alpha = new JButton("Alpha"); + private JButton random = new JButton("Random"); + private JButton undo = new JButton("Undo"); + + private JPanel inputPanel = new JPanel(); + private JPanel inputPanel2 = new JPanel(); + private JPanel inputPanel3 = new JPanel(); + private JButton ok = new JButton("OK"); + private JButton cancel = new JButton("Cancel"); + private JTextField inputField = new JTextField(); + private JLabel inputLabel = new JLabel("Read: "); + private JButton browse = new JButton("Browse..."); + private ButtonGroup readGroup = new ButtonGroup(); + private JRadioButton termReadButton = new JRadioButton("Term"); + private JRadioButton stringReadButton = new JRadioButton("String"); + + private JDialog dialog; + + private static JComboBox menu = new JComboBox(newMenu); + private JComboBox filter = new JComboBox(filterMenu); + private JComboBox modify = new JComboBox(modifyMenu); + // private JComboBox mode = new JComboBox(modeMenu); + + private JPanel downPanel = new JPanel(); + private JSplitPane treePanel; + private JPanel upPanel = new JPanel(); + private JPanel middlePanel = new JPanel(); + private JPanel middlePanelUp = new JPanel(); + private JPanel middlePanelDown = new JPanel(); + private JSplitPane centerPanel; + private static JFrame gui2 = new JFrame(); + private JPanel centerPanel2= new JPanel(); + private JPanel centerPanelDown = new JPanel(); + private JScrollPane outputPanelDown = new JScrollPane(list); + private JScrollPane outputPanelCenter = new JScrollPane(output); + private JPanel outputPanelUp = new JPanel(); + private JPanel statusPanel = new JPanel(); + private static JLabel statusLabel = new JLabel(status); + private Container cp; + + private static JMenuBar menuBar= new JMenuBar();; + private static ButtonGroup menuGroup = new ButtonGroup(); + private JMenu viewMenu= new JMenu("View"); + private JMenu submenu= new JMenu("Language"); + private JMenu submenuFont= new JMenu("TextSize"); + private JMenu modeMenu= new JMenu("Menus"); + private static JMenu langMenu= new JMenu("Languages"); + private static JMenu fileMenu= new JMenu("File"); + private JRadioButtonMenuItem rbMenuItem; + private JRadioButtonMenuItem rbMenuItemLong; + // private JRadioButtonMenuItem rbMenuItemAbs; + private JRadioButtonMenuItem rbMenuItemUnTyped; + private static JMenuItem fileMenuItem; + private static JCheckBoxMenuItem cbMenuItem; + private static RadioListener myListener ; + private static ButtonGroup group = new ButtonGroup(); + private static ButtonGroup languageGroup = new ButtonGroup(); + private static ButtonGroup fontGroup = new ButtonGroup(); + + public Numerals() + { + this.addWindowListener(new WindowAdapter() { + public void windowClosing(WindowEvent e) { + endProgram(); + } + }); + setJMenuBar(menuBar); + setTitle("Numerals"); + + GraphicsEnvironment gEnv = GraphicsEnvironment.getLocalGraphicsEnvironment(); + String envfonts[] = gEnv.getAvailableFontFamilyNames(); + fontList = new JComboBox(envfonts); + fontList.addActionListener(this); + //fontList.setFont(font); + //fontLabel.setFont(font); + up.add(fontLabel); + up.add(fontList); + + viewMenu.setToolTipText("View settings"); + fileMenu.setToolTipText("File operations"); + langMenu.setToolTipText("Language settings"); + menuBar.add(fileMenu); + menuBar.add(langMenu); + menuBar.add(viewMenu); + //menuBar.add(modeMenu); + + //cbMenuItem = new JCheckBoxMenuItem("Tree"); + //cbMenuItem.setActionCommand("showTree"); + myListener = new RadioListener(); + //cbMenuItem.addActionListener(myListener); + //cbMenuItem.setSelected(true); + //viewMenu.add(cbMenuItem); + //viewMenu.addSeparator(); + rbMenuItem = new JRadioButtonMenuItem("large"); + rbMenuItem.setActionCommand("large"); + rbMenuItem.addActionListener(myListener); + fontGroup.add(rbMenuItem); + rbMenuItem.setSelected(false); + submenuFont.add(rbMenuItem); + rbMenuItem = new JRadioButtonMenuItem("medium"); + rbMenuItem.setActionCommand("medium"); + rbMenuItem.addActionListener(myListener); + fontGroup.add(rbMenuItem); + rbMenuItem.setSelected(true); + submenuFont.add(rbMenuItem); + rbMenuItem = new JRadioButtonMenuItem("small"); + rbMenuItem.setActionCommand("small"); + rbMenuItem.addActionListener(myListener); + fontGroup.add(rbMenuItem); + rbMenuItem.setSelected(false); + submenuFont.add(rbMenuItem); + + viewMenu.add(submenuFont); + //viewMenu.addSeparator(); + + /* fileMenuItem = new JMenuItem("Open..."); + fileMenuItem.setActionCommand("open"); + fileMenuItem.addActionListener(this); + fileMenu.add(fileMenuItem); + fileMenuItem = new JMenuItem("New Topic..."); + fileMenuItem.setActionCommand("newTopic"); + fileMenuItem.addActionListener(this); + fileMenu.add(fileMenuItem); + fileMenuItem = new JMenuItem("Reset"); + fileMenuItem.setActionCommand("reset"); + fileMenuItem.addActionListener(this); + fileMenu.add(fileMenuItem); + */ + fileMenuItem = new JMenuItem("Save As..."); + fileMenuItem.setActionCommand("save"); + fileMenuItem.addActionListener(this); + fileMenu.add(fileMenuItem); + fileMenu.addSeparator(); + fileMenuItem = new JMenuItem("Exit"); + fileMenuItem.setActionCommand("quit"); + fileMenuItem.addActionListener(this); + fileMenu.add(fileMenuItem); + + // rbMenuItem = new JRadioButtonMenuItem("One window"); + // rbMenuItem.setActionCommand("combine"); + // rbMenuItem.addActionListener(myListener); + // rbMenuItem.setSelected(true); +/* rbMenuItem.setMnemonic(KeyEvent.VK_R); + rbMenuItem.setAccelerator(KeyStroke.getKeyStroke( + KeyEvent.VK_1, ActionEvent.ALT_MASK)); + rbMenuItem.getAccessibleContext().setAccessibleDescription( + "This doesn't really do anything"); +*/ + /* menuGroup.add(rbMenuItem); + viewMenu.add(rbMenuItem); + + rbMenuItem = new JRadioButtonMenuItem("Split windows"); + rbMenuItem.setMnemonic(KeyEvent.VK_O); + rbMenuItem.setActionCommand("split"); + rbMenuItem.addActionListener(myListener); + menuGroup.add(rbMenuItem); + viewMenu.add(rbMenuItem); + + modeMenu.add(submenu); + */ + + /* rbMenuItemAbs = new JRadioButtonMenuItem("Abstract"); + rbMenuItemAbs.setActionCommand("Abstract"); + rbMenuItemAbs.addActionListener(myListener); + languageGroup.add(rbMenuItemAbs); + */ + + /* modeMenu.addSeparator(); + menuGroup = new ButtonGroup(); + rbMenuItemLong = new JRadioButtonMenuItem("long"); + rbMenuItemLong.setActionCommand("long"); + rbMenuItemLong.setSelected(true); + rbMenuItemLong.addActionListener(myListener); + menuGroup.add(rbMenuItemLong); + modeMenu.add(rbMenuItemLong); + rbMenuItem = new JRadioButtonMenuItem("short"); + rbMenuItem.setActionCommand("short"); + rbMenuItem.addActionListener(myListener); + menuGroup.add(rbMenuItem); + modeMenu.add(rbMenuItem); + modeMenu.addSeparator(); + + menuGroup = new ButtonGroup(); + rbMenuItem = new JRadioButtonMenuItem("typed"); + rbMenuItem.setActionCommand("typed"); + rbMenuItem.addActionListener(myListener); + rbMenuItem.setSelected(false); + menuGroup.add(rbMenuItem); + modeMenu.add(rbMenuItem); + rbMenuItemUnTyped = new JRadioButtonMenuItem("untyped"); + rbMenuItemUnTyped.setSelected(true); + rbMenuItemUnTyped.setActionCommand("untyped"); + rbMenuItemUnTyped.addActionListener(myListener); + menuGroup.add(rbMenuItemUnTyped); + modeMenu.add(rbMenuItemUnTyped); + */ + cp = getContentPane(); + cp.setLayout(new BorderLayout()); + cp.add(outputPanelCenter, BorderLayout.CENTER); + cp.add(downPanel, BorderLayout.SOUTH); + cp.add(up, BorderLayout.NORTH); + downPanel.add(random); + downPanel.add(input); + input.addKeyListener(this); + downPanel.add(send); + + // output.setToolTipText("Linearizations' display area"); + output.setEditable(false); + output.setLineWrap(true); + output.setWrapStyleWord(true); +// output.setSelectionColor(Color.green); + output.setSelectionColor(Color.white); +// output.setFont(new Font("Arial Unicode MS", Font.PLAIN, 17)); + output.setFont(new Font(null, Font.PLAIN, 17)); +// System.out.println(output.getFont().getFontName()); + send.setToolTipText("Showing the translation of a numeral"); + random.setToolTipText("Generating a random numeral"); +/* gfCommand.setToolTipText("Sending a command to GF"); + read.setToolTipText("Refining with term or linearization from typed string or file"); + modify.setToolTipText("Choosing a linearization method"); + alpha.setToolTipText("Performing alpha-conversion"); + random.setToolTipText("Generating random refinement"); + undo.setToolTipText("Going back to the previous state"); + downPanel.add(gfCommand); + //downPanel.add(parse); + //downPanel.add(term); + downPanel.add(read); + downPanel.add(modify); + downPanel.add(alpha); + downPanel.add(random); + downPanel.add(undo); + + leftMeta.setToolTipText("Moving the focus to the previous metavariable"); + rightMeta.setToolTipText("Moving the focus to the next metavariable"); + left.setToolTipText("Moving the focus to the previous term"); + right.setToolTipText("Moving the focus to the next term"); + top.setToolTipText("Moving the focus to the top term"); + middlePanelUp.add(leftMeta); + middlePanelUp.add(left); + middlePanelUp.add(top); + middlePanelUp.add(right); + middlePanelUp.add(rightMeta); + middlePanelDown.add(new JLabel("Select Action on Subterm")); + middlePanel.setLayout(new BorderLayout()); + middlePanel.add(middlePanelUp, BorderLayout.NORTH); + middlePanel.add(middlePanelDown, BorderLayout.CENTER); + + menu.setToolTipText("The list of available categories to start editing"); + open.setToolTipText("Reading both a new environment and an editing object from file. Current editing will be discarded"); + save.setToolTipText("Writing the current editing object to file in the term or text format"); + grammar.setToolTipText("Current Topic"); + newTopic.setToolTipText("Reading a new environment from file. Current editing will be discarded."); + upPanel.add(grammar); + upPanel.add(menu); + upPanel.add(open); + upPanel.add(save); + upPanel.add(newTopic); + + filter.setToolTipText("Choosing the linearization representation format"); + modeMenu.setToolTipText("Choosing the refinement options' representation"); + statusLabel.setToolTipText("The current focus type"); + list.setToolTipText("The list of current refinment options"); + tree.setToolTipText("The abstract syntax tree representation of the current editing object"); + upPanel.add(filter); + //upPanel.add(mode); + populateTree(tree); + outputPanelUp.setLayout(new BorderLayout()); + outputPanelUp.add(outputPanelCenter, BorderLayout.CENTER); + outputPanelUp.add(statusPanel, BorderLayout.SOUTH); + statusPanel.setLayout(new GridLayout(1,1)); + statusPanel.add(statusLabel); + treePanel = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, + tree, outputPanelUp); + treePanel.setDividerSize(5); + treePanel.setDividerLocation(100); + centerPanel2.setLayout(new BorderLayout()); + gui2.setSize(500,150); + gui2.setTitle("Select Action on Subterm"); + gui2.setLocationRelativeTo(treePanel); + centerPanelDown.setLayout(new BorderLayout()); + centerPanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT, + treePanel, centerPanelDown); + centerPanel.addKeyListener(tree); + centerPanel.setOneTouchExpandable(true); + centerPanelDown.add(middlePanel, BorderLayout.NORTH); + centerPanelDown.add(outputPanelDown, BorderLayout.CENTER); + cp.add(centerPanel, BorderLayout.CENTER); + cp.add(upPanel, BorderLayout.NORTH); + cp.add(downPanel, BorderLayout.SOUTH); + + list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); + + MouseListener mouseListener = new MouseAdapter() { + public void mouseClicked(MouseEvent e) { + if (e.getClickCount() == 2) { + listAction(list.locationToIndex(e.getPoint())); + } + } + }; + list.addMouseListener(mouseListener); + list.addKeyListener(this); + menu.addActionListener(this); + save.addActionListener(this); + open.addActionListener(this); + newTopic.addActionListener(this); + gfCommand.addActionListener(this); + + filter.addActionListener(this); + filter.setMaximumRowCount(9); + leftMeta.addActionListener(this); + left.addActionListener(this); + + menu.setFocusable(false); + save.setFocusable(false); + save.setActionCommand("save"); + open.setFocusable(false); + open.setActionCommand("open"); + newTopic.setFocusable(false); + newTopic.setActionCommand("newTopic"); + gfCommand.setFocusable(false); + + filter.setFocusable(false); + leftMeta.setFocusable(false); + left.setFocusable(false); + + top.addActionListener(this); + right.addActionListener(this); + rightMeta.addActionListener(this); + //parse.addActionListener(this); + //term.addActionListener(this); + read.addActionListener(this); + modify.addActionListener(this); + //mode.addActionListener(this); + alpha.addActionListener(this); + random.addActionListener(this); + undo.addActionListener(this); + + top.setFocusable(false); + right.setFocusable(false); + rightMeta.setFocusable(false); + //parse.setFocusable(false); + //term.setFocusable(false); + read.setFocusable(false); + modify.setFocusable(false); + //mode.setFocusable(false); + alpha.setFocusable(false); + random.setFocusable(false); + undo.setFocusable(false); + + output.addKeyListener(tree); + + outputPanelUp.setPreferredSize(new Dimension(500,300)); + treePanel.setDividerLocation(0.3); + nodeTable.put(new TreePath(DynamicTree.rootNode.getPath()), new Integer(0)); + + JRadioButton termButton = new JRadioButton("Term"); + termButton.setActionCommand("term"); + termButton.setSelected(true); + JRadioButton linButton = new JRadioButton("Text"); + linButton.setActionCommand("lin"); + // Group the radio buttons. + group.add(linButton); + group.add(termButton); + JPanel buttonPanel = new JPanel(); + buttonPanel.setPreferredSize(new Dimension(70, 70)); + buttonPanel.add(new JLabel("Format:")); + buttonPanel.add(linButton); + buttonPanel.add(termButton); + fc1.setAccessory(buttonPanel); + + termReadButton.setActionCommand("term"); + stringReadButton.setSelected(true); + stringReadButton.setActionCommand("lin"); + // Group the radio buttons. + readGroup.add(stringReadButton); + readGroup.add(termReadButton); + JPanel readButtonPanel = new JPanel(); + readButtonPanel.setLayout(new GridLayout(3,1)); + readButtonPanel.setPreferredSize(new Dimension(70, 70)); + readButtonPanel.add(new JLabel("Format:")); + readButtonPanel.add(stringReadButton); + readButtonPanel.add(termReadButton); + dialog= new JDialog(this, "Input"); + dialog.setLocationRelativeTo(this); + dialog.getContentPane().add(inputPanel); + inputPanel.setLayout(new BorderLayout(10,10)); + inputPanel3.setLayout(new GridLayout(2,1,5,5)); + inputPanel3.add(inputLabel); + inputPanel3.add(inputField); + ok.addActionListener(this); + browse.addActionListener(this); + cancel.addActionListener(this); + inputField.setPreferredSize(new Dimension(300,23)); + inputPanel.add(inputPanel3, BorderLayout.CENTER); + inputPanel.add(new JLabel(" "), BorderLayout.WEST); + inputPanel.add(readButtonPanel, BorderLayout.EAST); + inputPanel.add(inputPanel2, BorderLayout.SOUTH); + inputPanel2.add(ok); + inputPanel2.add(cancel); + inputPanel2.add(browse); + dialog.setSize(350,135); + */ + send.addActionListener(this); + random.addActionListener(this); + setSize(400,700); + setVisible(true); + + try { + result = fromProc.readLine(); + boolean firstCall = true; + while(result != null) { + boolean newCommand = true; + finished = false; + if (debug) System.out.println("01 "+result); + while (result.indexOf("gf")==-1){ + outputString +=result+"\n"; + result = fromProc.readLine(); + if (debug) System.out.println("001 "+result); + } + output.append(outputString); + if (newCommand) + { + if (firstCall) + { + output.setText("Welcome to Numerals! \n Print a number in the text field below and \n press Enter or use the Random button."); + firstCall = false; + } + else + output.setText(""); + System.out.println("!!!!!!! output cleared !"); + newCommand = false; + } + + while ((result.indexOf("newcat")==-1)&&(result.indexOf("8) + s+=result.trim(); + else + s+=result; + } + } +// if (s.charAt(0)!='d') +// listModel.addElement("Refine " + s); +// else + listModel.addElement(s); + s=""; + //read /show + //read send + result = fromProc.readLine(); + if (debug) System.out.println("8 "+result); + result = fromProc.readLine(); + if (debug) System.out.println("8 "+result); + saveCommand(); + // read /item + result = fromProc.readLine(); + if (debug) System.out.println("8 "+result); + result = fromProc.readLine(); + if (debug) System.out.println("8 "+result); + } + } catch(IOException e){ } + } + + public static void saveCommand(){ + if (newObject) commands.add(result); + try { + result = fromProc.readLine(); + if (debug) System.out.println("9 "+result); + } catch(IOException e){ } + } + + public void readLin(){ + try { + linearization=""; + linearization += result+"\n"; + result = fromProc.readLine(); + if (debug) System.out.println("6 "+result); + while (result.indexOf("/linearization")==-1){ + linearization += result+"\n"; + result = fromProc.readLine(); + if (debug) System.out.println("6 "+result); + } + if (newObject) formLin(); + result = fromProc.readLine(); + if (debug) System.out.println("6 "+result); + } catch(IOException e){ } + } + + public static void readTree(){ + try { + result = fromProc.readLine(); + if (debug) System.out.println("6 "+result); + while (result.indexOf("/tree")==-1){ + treeString += result+"\n"; + result = fromProc.readLine(); + if (debug) System.out.println("6 "+result); + } + if (treeChanged && (newObject)) { + formTree(tree); + treeChanged = false; + } + treeString=""; + result = fromProc.readLine(); + if (debug) System.out.println("6 "+result); + } catch(IOException e){ } + } + + public static void readMessage(){ + String s =""; + try { + result = fromProc.readLine(); + if (debug) System.out.println("7 "+result); + while (result.indexOf("/message")==-1){ + s += result+"\n"; + result = fromProc.readLine(); + if (debug) System.out.println("7 "+result); + } + if ((s.length()>1)&&(s.indexOf("to start")==-1)) + output.append("-------------"+'\n'+s); + result = fromProc.readLine(); + if (debug) System.out.println("7 "+result); + } catch(IOException e){ } + } + + public void formNewMenu () { + boolean more = true; + try { + result = fromProc.readLine(); + if (debug) System.out.println("2 "+result); + + while (more){ + if (result.indexOf("language")==-1) { + menu.addItem(result.substring(6)); + } + else + more = false; + result = fromProc.readLine(); + if (debug) System.out.println("2 "+result); + result = fromProc.readLine(); + if (debug) System.out.println("3 "+result); + if (result.indexOf("language")!=-1) + more = false; + result = fromProc.readLine(); + if (debug) System.out.println("4 "+result); + } + + more = true; + while (more){ + if ((result.indexOf("/gf")==-1)&&(result.indexOf("lin")==-1)) { + //form lang and Menu menu: + cbMenuItem = new JCheckBoxMenuItem(result.substring(4)); + System.out.println ("menu item: "+result.substring(4)); + if (!(result.substring(4).equals("Abstract"))) + cbMenuItem.setSelected(true); + cbMenuItem.setActionCommand("lang"); + cbMenuItem.addActionListener(myListener); + langMenu.add(cbMenuItem); +/* if ((result.substring(4)).equals("Abstract")) + { + submenu.add(rbMenuItemAbs); + if (selectedMenuLanguage.equals("Abstract")) + rbMenuItemAbs.setSelected(true); + languageGroup.add(rbMenuItemAbs); + } + else + { +*/ + rbMenuItem = new JRadioButtonMenuItem(result.substring(4)); + rbMenuItem.setActionCommand("language"+result.substring(4)); + rbMenuItem.addActionListener(myListener); + languageGroup.add(rbMenuItem); + if ((result.substring(4)).equals(selectedMenuLanguage)) + { + if (debug) System.out.println("Selecting "+selectedMenuLanguage); + rbMenuItem.setSelected(true); + } + + submenu.add(rbMenuItem); +// } + } + else + more = false; + // read + result = fromProc.readLine(); + if (debug) System.out.println("2 "+result); + // read or + result = fromProc.readLine(); + if (debug) System.out.println("3 "+result); + if ((result.indexOf("/gf")!=-1)||(result.indexOf("lin")!=-1)) + more = false; + if (result.indexOf("/gf")!=-1) + finished = true; + // registering the file name: + if (result.indexOf("language")!=-1) { + String path = result.substring(result.indexOf('=')+1, + result.indexOf('>')); + path =path.substring(path.lastIndexOf('/')+1); + if (debug) System.out.println("name: "+path); + fileString +="--" + path +"\n"; + if (path.lastIndexOf('.')!=path.indexOf('.')) + grammar.setText(path.substring(0, + path.indexOf('.')).toUpperCase()+" "); + } + result = fromProc.readLine(); + if (debug) System.out.println("4 "+result); + } + if (debug) System.out.println("languageGroupElement formed"+ + languageGroup.getButtonCount()); + langMenu.addSeparator(); + fileMenuItem = new JMenuItem("Add..."); + fileMenuItem.setActionCommand("import"); + fileMenuItem.addActionListener(this); + langMenu.add(fileMenuItem); + // in order to get back in main in the beggining of while: + result = fromProc.readLine(); + } catch(IOException e){ } + } + + public void outputAppend(){ + int i, j, k, l, l2, m; + i=result.indexOf("type="); + j=result.indexOf('>',i); + l = result.indexOf(" + result= result.substring(0,l)+result.substring(j+1); + i=result.indexOf("/f",l); + if (debug) System.out.println("/ is at the position"+i); + j=result.indexOf('>',i); + k=result.length()-j; + if (debug) System.out.println("form Lin2: "+result); + m = output.getText().length(); + + //cutting + // in case focus tag is cut into two lines: + if (debug) + System.out.println("char at the previous position"+result.charAt(i-1)); + if (result.charAt(i-1)!='<') + result= result.substring(0,i-8)+result.substring(j+1); + else + result= result.substring(0,i-1)+result.substring(j+1); + j= result.indexOf("'); + String s = result.substring(ind+1,ind2); + result = lin.substring(0,lin.indexOf("")); + lin = lin.substring(lin.indexOf("")); + while (lin.length()>1) { + //check if the language is on + if (!visible) visible = true; + // in the list? + for (int i=0; i + lin = lin.substring(lin.indexOf('\n')+1); + // read lin or 'end' + if (lin.length()<1) break; + + result = lin.substring(0,lin.indexOf('\n')); + lin = lin.substring(lin.indexOf('\n')+1); + if (result.indexOf("'); + s = result.substring(ind+1,ind2); + result = lin.substring(0,lin.indexOf("")); + lin = lin.substring(lin.indexOf("")); + } + } + } + + public void showAction(){ + treeChanged = true; + send("n Numeral"); + newObject = true; + System.out.println("!!!!!!!sending newNumeral"); + treeChanged = true; + send("p "+ input.getText()); + System.out.println("!!!!!!!sending parse string: "+input.getText()); + } + + public void actionPerformed(ActionEvent ae) + { + boolean abs = true; + Object obj = ae.getSource(); + + if ( obj == fontList ) { + Font font = new Font((String)fontList.getSelectedItem(), Font.PLAIN, 13); + output.setFont(font); + } + + if ( obj == send ) { + showAction(); + } + + if ( obj == menu ) { + if (menu.getItemCount()>0) + if (!menu.getSelectedItem().equals("New")) + { + treeChanged = true; + send("n " + menu.getSelectedItem()); + newObject = true; + menu.setSelectedIndex(0); + } + } + + if ( obj == filter ) { + if (!filter.getSelectedItem().equals("Filter")) + { + send("f " + filter.getSelectedItem()); + filter.setSelectedIndex(0); + } + } + if ( obj == modify ) { + if (!modify.getSelectedItem().equals("Modify")) + { + treeChanged = true; + send("c " + modify.getSelectedItem()); + modify.setSelectedIndex(0); + } + } +/* if ( obj == mode ) { + if (!mode.getSelectedItem().equals("Menus")) + { + send("o " + mode.getSelectedItem()); + mode.setSelectedIndex(0); + } + } +*/ + // buttons and menu items: + boolean objectInstance = false; + try { + objectInstance = + Class.forName("javax.swing.AbstractButton").isInstance(obj); + } catch (Exception e) {System.out.println("Class not found!");} + + if (objectInstance) { + String name =((AbstractButton)obj).getActionCommand(); + + if ( name.equals("quit")) { + endProgram(); + } + + if ( name.equals("save") ) { + + if (fc1.getChoosableFileFilters().length<2) + fc1.addChoosableFileFilter(new GrammarFilter()); + fc1.setFileFilter(fc1.getAcceptAllFileFilter()); + int returnVal = fc1.showSaveDialog(Numerals.this); + if (returnVal == JFileChooser.APPROVE_OPTION) { + File file = fc1.getSelectedFile(); + if (debug) System.out.println("saving ... "); + + /* // checking if the abstract syntax is on: + for (int i=0; i0) + { + for (Enumeration e = languageGroup.getElements(); + e.hasMoreElements() ;) + { + ab = (AbstractButton)e.nextElement(); + if (debug) System.out.println("more to remove ! "+ab.getText()); + languageGroup.remove(ab); + } + if (debug) System.out.println("languageGroupElement after import removal "+ + languageGroup.getButtonCount()); + } + submenu.removeAll(); + + File file = fc1.getSelectedFile(); + // opening the file for editing : + if (debug) System.out.println("opening: "+ file.getPath().replace('\\','/')); + if (group.getSelection().getActionCommand().equals("term")) { + if (debug) System.out.println(" opening as a term "); + send("open "+ file.getPath().replace('\\','/')); + } + else { + if (debug) System.out.println(" opening as a linearization "); + send("openstring "+ file.getPath().replace('\\','/')); + } + + fileString =""; + grammar.setText("No Topic "); + } + } + } + + if ( name.equals("import") ) { + if (fc.getChoosableFileFilters().length<2) + fc.addChoosableFileFilter(new GrammarFilter()); + fc.setFileFilter(fc.getAcceptAllFileFilter()); + int returnVal = fc.showOpenDialog(Numerals.this); + if (returnVal == JFileChooser.APPROVE_OPTION) { + File file = fc.getSelectedFile(); + // importing a new language : + if (debug) System.out.println("importing: "+ file.getPath()); + + langMenu.removeAll(); + + AbstractButton ab = null; + + while (languageGroup.getButtonCount()>0) + { + for (Enumeration e = languageGroup.getElements(); + e.hasMoreElements() ;) + { + ab = (AbstractButton)e.nextElement(); + if (debug) System.out.println("more to remove ! "+ab.getText()); + languageGroup.remove(ab); + } + if (debug) System.out.println("languageGroupElement after import removal "+ + languageGroup.getButtonCount()); + } + + submenu.removeAll(); + + menu.removeAllItems(); + menu.addItem("New"); + fileString =""; + send("i "+ file.getPath().replace('\\','/')); + + } + } + if ( name.equals("newTopic") ) { + if (fc.getChoosableFileFilters().length<2) + fc.addChoosableFileFilter(new GrammarFilter()); + fc.setFileFilter(fc.getAcceptAllFileFilter()); + int returnVal = fc.showOpenDialog(Numerals.this); + if (returnVal == JFileChooser.APPROVE_OPTION) { + int n = JOptionPane.showConfirmDialog(this, + "This will dismiss the previous editing. Would you like to continue?", + "Starting a new topic", JOptionPane.YES_NO_OPTION); + if (n == JOptionPane.YES_OPTION){ + File file = fc.getSelectedFile(); + // importing a new grammar : + newObject = false; + statusLabel.setText(status); + listModel.clear(); + tree.clear(); + populateTree(tree); + System.out.println("tree populated!"); + menu.removeAllItems(); + System.out.println("removed all from menu!"+menu); + menu.addItem("New"); + System.out.println("added new!"); + langMenu.removeAll(); + + AbstractButton ab = null; + + while (languageGroup.getButtonCount()>0) + { + for (Enumeration e = languageGroup.getElements(); + e.hasMoreElements() ;) + { + ab = (AbstractButton)e.nextElement(); + if (debug) System.out.println("more to remove ! "+ab.getText()); + languageGroup.remove(ab); + } + if (debug) System.out.println("languageGroupElement after import removal "+ + languageGroup.getButtonCount()); + } + + selectedMenuLanguage = "Abstract"; + rbMenuItemLong.setSelected(true); + rbMenuItemUnTyped.setSelected(true); + submenu.removeAll(); + + fileString=""; + grammar.setText("No Topic "); + System.out.println("e "+ file.getPath().replace('\\','/')); + //send("e \""+ file.getPath().replace('\\','/')+"\""); + send("e "+ file.getPath().replace('\\','/')); + } + } + } + + if ( obj == gfCommand ){ + String s = JOptionPane.showInputDialog("Command:", parseInput); + if (s!=null) { + parseInput = s; + s = "gf "+s; + //treeChanged = true; + send(s); + } + } + + if ( name.equals("reset") ) { + newObject = false; + statusLabel.setText(status); + listModel.clear(); + tree.clear(); + populateTree(tree); + menu.removeAllItems(); + menu.addItem("New"); + langMenu.removeAll(); + + AbstractButton ab = null; + + while (languageGroup.getButtonCount()>0) + { + for (Enumeration e = languageGroup.getElements(); + e.hasMoreElements() ;) + { + ab = (AbstractButton)e.nextElement(); + if (debug) System.out.println("more to remove ! "+ab.getText()); + languageGroup.remove(ab); + } + if (debug) System.out.println("languageGroupElement after import removal "+ + languageGroup.getButtonCount()); + } + + selectedMenuLanguage = "Abstract"; + + submenu.removeAll(); + rbMenuItemLong.setSelected(true); + rbMenuItemUnTyped.setSelected(true); + + fileString=""; + grammar.setText("No Topic "); + send("e"); + } + + if ( obj == leftMeta ) { + treeChanged = true; + send("<<"); + } + if ( obj == left ) { + treeChanged = true; + send("<"); + } + if ( obj == top ) { + treeChanged = true; + send("'"); + } + if ( obj == right ) { + treeChanged = true; + send(">"); + } + if ( obj == rightMeta ) { + treeChanged = true; + send(">>"); + } + + if ( obj == cancel ) { + dialog.hide(); + } + + if ( obj == browse ) { + if (fc.getChoosableFileFilters().length<2) + fc.addChoosableFileFilter(new GrammarFilter()); + fc.setFileFilter(fc.getAcceptAllFileFilter()); + int returnVal = fc.showOpenDialog(Numerals.this); + if (returnVal == JFileChooser.APPROVE_OPTION) { + File file = fc.getSelectedFile(); + inputField.setText(file.getPath().replace('\\','/')); + } + } + + if ( obj == ok ) { + treeChanged = true; + if (termReadButton.isSelected()) { + termInput = inputField.getText(); + if (termInput.indexOf('/')==-1){ + send("g "+termInput); + if (debug) System.out.println("sending term string"); + } + else { + send("tfile "+termInput); + if (debug) System.out.println("sending file term: "+termInput); + } + } + else { + parseInput = inputField.getText(); + if (parseInput.indexOf('/')==-1){ + send("p "+parseInput); + if (debug) System.out.println("sending parse string"+parseInput); + } + else { + send("pfile "+parseInput); + if (debug) System.out.println("sending file parse string: "+parseInput); + } + } + dialog.hide(); + } + + if ( obj == read ) { + if (stringReadButton.isSelected()) + inputField.setText(parseInput); + else + inputField.setText(termInput); + dialog.show(); + } + +/* if ( obj == term ) { + inputLabel.setText("Term:"); + inputField.setText(termInput); + dialog.show(); + } + if ( obj == parse ) { + inputLabel.setText("Parse:"); + inputField.setText(parseInput); + dialog.show(); + } +*/ + if ( obj == alpha){ + String s = JOptionPane.showInputDialog("Type string:", alphaInput); + if (s!=null) { + alphaInput = s; + treeChanged = true; + send("x "+s); + } + } + if ( obj == random){ + treeChanged = true; + send("n Numeral"); + newObject = true; + System.out.println("!!!!!!!sending newNumeral"); + treeChanged = true; + send("a"); + } + if ( obj == undo){ + treeChanged = true; + send("u"); + } + } + //} catch (Exception e) { System.out.println("exception!!!"); } + } + static void writeOutput(String str, String fileName) { + + try { + FileOutputStream fos = new FileOutputStream(fileName); + Writer out = new OutputStreamWriter(fos, "UTF8"); + out.write(str); + out.close(); + } catch (IOException e) { + JOptionPane.showMessageDialog(null, + "Document is empty!","Error", JOptionPane.ERROR_MESSAGE); + } + } + public static void populateTree(DynamicTree treePanel) { + String p1Name = new String("Root"); + DefaultMutableTreeNode p1; + p1 = treePanel.addObject(null, p1Name); + } + + public static void formTree(DynamicTree treePanel) { + Hashtable table = new Hashtable(); + TreePath path=null; + boolean treeStarted = false, selected = false; + String s = treeString; + String name =""; + treePanel.clear(); + int j, shift=0, star=0, index = 0; + DefaultMutableTreeNode p2=null, p1=null; + if (debug) System.out.print("treeString: "+ s); + if (s.indexOf('*')!=-1) star = 1; + while (s.length()>0) { + while ((s.length()>0) && ((s.charAt(0)=='*')||(s.charAt(0)==' '))){ + if (s.charAt(0) == '*') selected = true; + s = s.substring(1); + shift++; + } + if (s.length()>0) { + j = s.indexOf("\n"); + name = s.substring(0, j); + index++; + s = s.substring(j+1); + shift = (shift - star)/2; + + p1 = (DefaultMutableTreeNode)table.get(new Integer(shift)); + p2 = treePanel.addObject(p1, name); + table.put(new Integer(shift+1), p2); + path = new TreePath(p2.getPath()); + nodeTable.put(path, new Integer(index)); + if (selected) { + treePanel.tree.setSelectionPath(path); + treePanel.oldSelection = index; + if (debug) System.out.println("new selected index "+ index); + selected = false; + } + treeStarted=true; + } + shift = 0; + } + if ((p2!=null)) { + treePanel.tree.makeVisible(path); + gui2.toFront(); + index = 0; + } + } + + /** Listens to the radio buttons. */ + class RadioListener implements ActionListener { + public void actionPerformed(ActionEvent e) { + String action = e.getActionCommand(); + if (action.equals("large") ) + { + output.setFont(new Font((String)fontList.getSelectedItem(), Font.PLAIN, 26)); + } + if (action.equals("medium") ) + { + output.setFont(new Font((String)fontList.getSelectedItem(), Font.PLAIN, 17)); + } + if (action.equals("small") ) + { + output.setFont(new Font((String)fontList.getSelectedItem(), Font.PLAIN, 12)); + } + + if (action.equals("split") ) { + cp.remove(centerPanel); + centerPanel2.add(middlePanelUp, BorderLayout.SOUTH); + if (((JCheckBoxMenuItem)viewMenu.getItem(0)).isSelected()) { + centerPanel2.add(treePanel, BorderLayout.CENTER); + } + else { + centerPanel2.add(outputPanelUp, BorderLayout.CENTER); + } + cp.add(centerPanel2, BorderLayout.CENTER); + gui2.getContentPane().add(outputPanelDown); + gui2.setVisible(true); + pack(); + repaint(); + } + + if (action.equals("combine") ) { + cp.remove(centerPanel2); + middlePanel.add(middlePanelUp, BorderLayout.NORTH); + if (((JCheckBoxMenuItem)viewMenu.getItem(0)).isSelected()) { gui2.setVisible(false); + centerPanel.setLeftComponent(treePanel); + } + else { + centerPanel.setLeftComponent(outputPanelUp); + gui2.setVisible(false); + } + cp.add(centerPanel, BorderLayout.CENTER); + centerPanelDown.add(outputPanelDown, BorderLayout.CENTER); + pack(); + repaint(); + } + + if (action.equals("showTree") ) { + if (!((JCheckBoxMenuItem)e.getSource()).isSelected()){ + if (debug) System.out.println("was selected"); + cbMenuItem.setSelected(false); + if (((JRadioButtonMenuItem)viewMenu.getItem(2)).isSelected()) { + centerPanel.remove(treePanel); + centerPanel.setLeftComponent(outputPanelUp); + } + else { + centerPanel2.remove(treePanel); + centerPanel2.add(outputPanelUp, BorderLayout.CENTER); + } + } + else { + if (debug) System.out.println("was not selected"); + cbMenuItem.setSelected(true); + if (((JRadioButtonMenuItem)viewMenu.getItem(2)).isSelected()) { + centerPanel.remove(outputPanelUp); + treePanel.setRightComponent(outputPanelUp); + centerPanel.setLeftComponent(treePanel); + } + else { + centerPanel2.remove(outputPanelUp); + treePanel.setRightComponent(outputPanelUp); + centerPanel2.add(treePanel, BorderLayout.CENTER); + } + } + pack(); + repaint(); + } + + if (action.equals("lang")) { + if (newObject) { + output.setText(""); + formLin(); + } + if (debug) + System.out.println("language option has changed "+((JCheckBoxMenuItem)e.getSource()).getText()); + if (((JCheckBoxMenuItem)e.getSource()).isSelected()){ + if (debug) System.out.println("turning on"); + send("on "+((JCheckBoxMenuItem)e.getSource()).getText()); + } + else{ + if (debug) System.out.println("turning off"); + send("off "+((JCheckBoxMenuItem)e.getSource()).getText()); + } + } + + //modeMenus actions: + + if ((action.equals("long")) || (action.equals("short"))) + { + send("ms " + action); + } + + if ((action.equals("typed")) || (action.equals("untyped"))) + { + send("mt " + action); + } + if (action.equals("languageAbstract")) + { + send("ml Abs"); + } + else if (action.length()>7) + if (action.substring(0,8).equals("language")) + { + selectedMenuLanguage = action.substring(8); + if (debug) System.out.println("sending ml "+selectedMenuLanguage); + send("ml " + selectedMenuLanguage); + } + } + } + + /** Handle the key pressed event. */ + public void keyPressed(KeyEvent e) { + int keyCode = e.getKeyCode(); + if (keyCode == 10) { + //listAction(list.getSelectedIndex()); + showAction(); + } + } + /** Handle the key typed event. */ + public void keyTyped(KeyEvent e) { + } + /** Handle the key released event. */ + public void keyReleased(KeyEvent e) { + } + + public void listAction(int index) { + if (index == -1) + {if (debug) System.out.println("no selection");} + else { + treeChanged = true; + send((String)commands.elementAt(list.getSelectedIndex())); + } + } +} diff --git a/src/JavaGUI/runNumerals b/src/JavaGUI/runNumerals new file mode 100644 index 000000000..3445220cc --- /dev/null +++ b/src/JavaGUI/runNumerals @@ -0,0 +1 @@ +java -cp ./ Numerals "GF +java ../../grammars/numerals/old/numerals.Ita.gf ../../grammars/numerals/old/numerals.Mag.gf ../../grammars/numerals/old/numerals.Tam.gf ../../grammars/numerals/old/numerals.Suo.gf ../../grammars/numerals/old/numerals.NorB.gf ../../grammars/numerals/old/numerals.Slo.gf ../../grammars/numerals/old/numerals.Spa.gf ../../grammars/numerals/old/numerals.Swe.gf ../../grammars/numerals/old/numerals.Deu.gf ../../grammars/numerals/old/numerals.Fra.gf ../../grammars/numerals/old/numerals.Malay.gf ../../grammars/numerals/old/numerals.Ned.gf ../../grammars/numerals/old/numerals.Pol.gf ../../grammars/numerals/old/numerals.ChiU.gf ../../grammars/numerals/old/numerals.Dec.gf "