mirror of
				https://github.com/DanilaFe/abacus
				synced 2025-10-31 01:43:41 -07:00 
			
		
		
		
	Delete old, unused code.
This commit is contained in:
		
							parent
							
								
									eac2a9ed6b
								
							
						
					
					
						commit
						d861444d13
					
				| @ -1,106 +0,0 @@ | |||||||
| package org.nwapw.abacus.window; |  | ||||||
| 
 |  | ||||||
| import org.nwapw.abacus.tree.TreeNode; |  | ||||||
| 
 |  | ||||||
| import javax.swing.table.AbstractTableModel; |  | ||||||
| import java.util.ArrayList; |  | ||||||
| import java.util.List; |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * A table model to store data about the history of inputs |  | ||||||
|  * in the calculator. |  | ||||||
|  */ |  | ||||||
| public class HistoryTableModel extends AbstractTableModel { |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Static array used to get the column names. |  | ||||||
|      */ |  | ||||||
|     public static final String[] COLUMN_NAMES = { |  | ||||||
|             "Input", |  | ||||||
|             "Parsed Input", |  | ||||||
|             "Output" |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Static array used to get the class of each column. |  | ||||||
|      */ |  | ||||||
|     public static final Class[] CLASS_TYPES = { |  | ||||||
|             String.class, |  | ||||||
|             TreeNode.class, |  | ||||||
|             String.class |  | ||||||
|     }; |  | ||||||
|     /** |  | ||||||
|      * The list of entries. |  | ||||||
|      */ |  | ||||||
|     List<HistoryEntry> entries; |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Creates a new empty history table model |  | ||||||
|      */ |  | ||||||
|     public HistoryTableModel() { |  | ||||||
|         entries = new ArrayList<>(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Adds an entry to the model. |  | ||||||
|      * |  | ||||||
|      * @param entry the entry to add. |  | ||||||
|      */ |  | ||||||
|     public void addEntry(HistoryEntry entry) { |  | ||||||
|         entries.add(entry); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     @Override |  | ||||||
|     public int getRowCount() { |  | ||||||
|         return entries.size(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     @Override |  | ||||||
|     public int getColumnCount() { |  | ||||||
|         return 3; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     @Override |  | ||||||
|     public String getColumnName(int columnIndex) { |  | ||||||
|         return COLUMN_NAMES[columnIndex]; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     @Override |  | ||||||
|     public Class<?> getColumnClass(int columnIndex) { |  | ||||||
|         return CLASS_TYPES[columnIndex]; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     @Override |  | ||||||
|     public boolean isCellEditable(int rowIndex, int columnIndex) { |  | ||||||
|         return false; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     @Override |  | ||||||
|     public Object getValueAt(int rowIndex, int columnIndex) { |  | ||||||
|         return entries.get(rowIndex).nthValue(columnIndex); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Class used specifically to hold data about |  | ||||||
|      * the previous entries into the calculator. |  | ||||||
|      */ |  | ||||||
|     public static class HistoryEntry { |  | ||||||
|         public String input; |  | ||||||
|         public TreeNode parsedInput; |  | ||||||
|         public String output; |  | ||||||
| 
 |  | ||||||
|         public HistoryEntry(String input, TreeNode parsedInput, String output) { |  | ||||||
|             this.input = input; |  | ||||||
|             this.parsedInput = parsedInput; |  | ||||||
|             this.output = output; |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         Object nthValue(int n) { |  | ||||||
|             if (n == 0) return input; |  | ||||||
|             if (n == 1) return parsedInput; |  | ||||||
|             if (n == 2) return output; |  | ||||||
|             return null; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
| } |  | ||||||
| @ -1,255 +0,0 @@ | |||||||
| package org.nwapw.abacus.window; |  | ||||||
| 
 |  | ||||||
| import org.nwapw.abacus.Abacus; |  | ||||||
| import org.nwapw.abacus.number.NumberInterface; |  | ||||||
| import org.nwapw.abacus.tree.TreeNode; |  | ||||||
| 
 |  | ||||||
| import javax.swing.*; |  | ||||||
| import java.awt.*; |  | ||||||
| import java.awt.datatransfer.StringSelection; |  | ||||||
| import java.awt.event.ActionListener; |  | ||||||
| import java.awt.event.MouseAdapter; |  | ||||||
| import java.awt.event.MouseEvent; |  | ||||||
| 
 |  | ||||||
| /** |  | ||||||
|  * The main UI window for the calculator. |  | ||||||
|  */ |  | ||||||
| public class Window extends JFrame { |  | ||||||
| 
 |  | ||||||
|     private static final String CALC_STRING = "Calculate"; |  | ||||||
|     private static final String SYNTAX_ERR_STRING = "Syntax Error"; |  | ||||||
|     private static final String EVAL_ERR_STRING = "Evaluation Error"; |  | ||||||
|     private static final String NUMBER_SYSTEM_LABEL = "Number Type:"; |  | ||||||
|     private static final String FUNCTION_LABEL = "Functions:"; |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Array of Strings to which the "calculate" button's text |  | ||||||
|      * changes. For instance, in the graph tab, the name will |  | ||||||
|      * be "Graph" and not "Calculate". |  | ||||||
|      */ |  | ||||||
|     private static final String[] BUTTON_NAMES = { |  | ||||||
|             CALC_STRING, |  | ||||||
|             CALC_STRING |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Array of booleans that determine whether the input |  | ||||||
|      * field and the input button are enabled at a particular |  | ||||||
|      * index. |  | ||||||
|      */ |  | ||||||
|     private static boolean[] INPUT_ENABLED = { |  | ||||||
|             true, |  | ||||||
|             false |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * The instance of the Abacus class, used |  | ||||||
|      * for interaction with plugins and configuration. |  | ||||||
|      */ |  | ||||||
|     private Abacus abacus; |  | ||||||
|     /** |  | ||||||
|      * The last output by the calculator. |  | ||||||
|      */ |  | ||||||
|     private String lastOutput; |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * The tabbed pane that separates calculator contexts. |  | ||||||
|      */ |  | ||||||
|     private JTabbedPane pane; |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * The panel where the output occurs. |  | ||||||
|      */ |  | ||||||
|     private JPanel calculationPanel; |  | ||||||
|     /** |  | ||||||
|      * The text area reserved for the last output. |  | ||||||
|      */ |  | ||||||
|     private JTextArea lastOutputArea; |  | ||||||
|     /** |  | ||||||
|      * The table used for storing history results. |  | ||||||
|      */ |  | ||||||
|     private JTable historyTable; |  | ||||||
|     /** |  | ||||||
|      * The table model used for managing history. |  | ||||||
|      */ |  | ||||||
|     private HistoryTableModel historyModel; |  | ||||||
|     /** |  | ||||||
|      * The scroll pane for the history area. |  | ||||||
|      */ |  | ||||||
|     private JScrollPane historyScroll; |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * The panel where the input occurs. |  | ||||||
|      */ |  | ||||||
|     private JPanel inputPanel; |  | ||||||
|     /** |  | ||||||
|      * The input text field. |  | ||||||
|      */ |  | ||||||
|     private JTextField inputField; |  | ||||||
|     /** |  | ||||||
|      * The "submit" button. |  | ||||||
|      */ |  | ||||||
|     private JButton inputEnterButton; |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * The side panel for separate configuration. |  | ||||||
|      */ |  | ||||||
|     private JPanel settingsPanel; |  | ||||||
|     /** |  | ||||||
|      * Panel for elements relating to number |  | ||||||
|      * system selection. |  | ||||||
|      */ |  | ||||||
|     private JPanel numberSystemPanel; |  | ||||||
|     /** |  | ||||||
|      * The possible list of number systems. |  | ||||||
|      */ |  | ||||||
|     private JComboBox<String> numberSystemList; |  | ||||||
|     /** |  | ||||||
|      * The panel for elements relating to |  | ||||||
|      * function selection. |  | ||||||
|      */ |  | ||||||
|     private JPanel functionSelectPanel; |  | ||||||
|     /** |  | ||||||
|      * The list of functions available to the user. |  | ||||||
|      */ |  | ||||||
|     private JComboBox<String> functionList; |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Action listener that causes the input to be evaluated. |  | ||||||
|      */ |  | ||||||
|     private ActionListener evaluateListener = (event) -> { |  | ||||||
|         TreeNode parsedExpression = abacus.parseString(inputField.getText()); |  | ||||||
|         if (parsedExpression == null) { |  | ||||||
|             lastOutputArea.setText(SYNTAX_ERR_STRING); |  | ||||||
|             return; |  | ||||||
|         } |  | ||||||
|         NumberInterface numberInterface = abacus.evaluateTree(parsedExpression); |  | ||||||
|         if (numberInterface == null) { |  | ||||||
|             lastOutputArea.setText(EVAL_ERR_STRING); |  | ||||||
|             return; |  | ||||||
|         } |  | ||||||
|         lastOutput = numberInterface.toString(); |  | ||||||
|         historyModel.addEntry(new HistoryTableModel.HistoryEntry(inputField.getText(), parsedExpression, lastOutput)); |  | ||||||
|         historyTable.invalidate(); |  | ||||||
|         lastOutputArea.setText(lastOutput); |  | ||||||
|         inputField.setText(""); |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Array of listeners that tell the input button how to behave |  | ||||||
|      * at a given input tab. |  | ||||||
|      */ |  | ||||||
|     private ActionListener[] listeners = { |  | ||||||
|             evaluateListener, |  | ||||||
|             null |  | ||||||
|     }; |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Creates a new window with the given manager. |  | ||||||
|      * |  | ||||||
|      * @param abacus the calculator instance to interact with other components. |  | ||||||
|      */ |  | ||||||
|     public Window(Abacus abacus) { |  | ||||||
|         this(); |  | ||||||
|         this.abacus = abacus; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     /** |  | ||||||
|      * Creates a new window. |  | ||||||
|      */ |  | ||||||
|     private Window() { |  | ||||||
|         super(); |  | ||||||
| 
 |  | ||||||
|         lastOutput = ""; |  | ||||||
| 
 |  | ||||||
|         setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); |  | ||||||
|         setSize(320, 480); |  | ||||||
| 
 |  | ||||||
|         inputField = new JTextField(); |  | ||||||
|         inputEnterButton = new JButton(CALC_STRING); |  | ||||||
| 
 |  | ||||||
|         inputPanel = new JPanel(); |  | ||||||
|         inputPanel.setLayout(new BorderLayout()); |  | ||||||
|         inputPanel.add(inputField, BorderLayout.CENTER); |  | ||||||
|         inputPanel.add(inputEnterButton, BorderLayout.SOUTH); |  | ||||||
| 
 |  | ||||||
|         historyModel = new HistoryTableModel(); |  | ||||||
|         historyTable = new JTable(historyModel); |  | ||||||
|         historyScroll = new JScrollPane(historyTable); |  | ||||||
|         lastOutputArea = new JTextArea(lastOutput); |  | ||||||
|         lastOutputArea.setEditable(false); |  | ||||||
| 
 |  | ||||||
|         calculationPanel = new JPanel(); |  | ||||||
|         calculationPanel.setLayout(new BorderLayout()); |  | ||||||
|         calculationPanel.add(historyScroll, BorderLayout.CENTER); |  | ||||||
|         calculationPanel.add(lastOutputArea, BorderLayout.SOUTH); |  | ||||||
| 
 |  | ||||||
|         numberSystemList = new JComboBox<>(); |  | ||||||
| 
 |  | ||||||
|         numberSystemPanel = new JPanel(); |  | ||||||
|         numberSystemPanel.setAlignmentX(Component.LEFT_ALIGNMENT); |  | ||||||
|         numberSystemPanel.setLayout(new FlowLayout()); |  | ||||||
|         numberSystemPanel.add(new JLabel(NUMBER_SYSTEM_LABEL)); |  | ||||||
|         numberSystemPanel.add(numberSystemList); |  | ||||||
|         numberSystemPanel.setMaximumSize(numberSystemPanel.getPreferredSize()); |  | ||||||
| 
 |  | ||||||
|         functionList = new JComboBox<>(); |  | ||||||
| 
 |  | ||||||
|         functionSelectPanel = new JPanel(); |  | ||||||
|         functionSelectPanel.setAlignmentX(Component.LEFT_ALIGNMENT); |  | ||||||
|         functionSelectPanel.setLayout(new FlowLayout()); |  | ||||||
|         functionSelectPanel.add(new JLabel(FUNCTION_LABEL)); |  | ||||||
|         functionSelectPanel.add(functionList); |  | ||||||
|         functionSelectPanel.setMaximumSize(functionSelectPanel.getPreferredSize()); |  | ||||||
| 
 |  | ||||||
|         settingsPanel = new JPanel(); |  | ||||||
|         settingsPanel.setAlignmentX(Component.LEFT_ALIGNMENT); |  | ||||||
|         settingsPanel.setLayout(new BoxLayout(settingsPanel, BoxLayout.PAGE_AXIS)); |  | ||||||
|         settingsPanel.add(numberSystemPanel); |  | ||||||
|         settingsPanel.add(functionSelectPanel); |  | ||||||
| 
 |  | ||||||
|         pane = new JTabbedPane(); |  | ||||||
|         pane.add("Calculator", calculationPanel); |  | ||||||
|         pane.add("Settings", settingsPanel); |  | ||||||
|         pane.addChangeListener(e -> { |  | ||||||
|             int selectionIndex = pane.getSelectedIndex(); |  | ||||||
|             boolean enabled = INPUT_ENABLED[selectionIndex]; |  | ||||||
|             ActionListener listener = listeners[selectionIndex]; |  | ||||||
|             inputEnterButton.setText(BUTTON_NAMES[selectionIndex]); |  | ||||||
|             inputField.setEnabled(enabled); |  | ||||||
|             inputEnterButton.setEnabled(enabled); |  | ||||||
| 
 |  | ||||||
|             for (ActionListener removingListener : inputEnterButton.getActionListeners()) { |  | ||||||
|                 inputEnterButton.removeActionListener(removingListener); |  | ||||||
|                 inputField.removeActionListener(removingListener); |  | ||||||
|             } |  | ||||||
|             if (listener != null) { |  | ||||||
|                 inputEnterButton.addActionListener(listener); |  | ||||||
|                 inputField.addActionListener(listener); |  | ||||||
|             } |  | ||||||
|         }); |  | ||||||
|         add(pane, BorderLayout.CENTER); |  | ||||||
|         add(inputPanel, BorderLayout.SOUTH); |  | ||||||
| 
 |  | ||||||
|         inputEnterButton.addActionListener(evaluateListener); |  | ||||||
|         inputField.addActionListener(evaluateListener); |  | ||||||
|         historyTable.addMouseListener(new MouseAdapter() { |  | ||||||
|             @Override |  | ||||||
|             public void mouseClicked(MouseEvent e) { |  | ||||||
|                 Point clickPoint = e.getPoint(); |  | ||||||
|                 if (e.getClickCount() == 2) { |  | ||||||
|                     int row = historyTable.rowAtPoint(clickPoint); |  | ||||||
|                     int column = historyTable.columnAtPoint(clickPoint); |  | ||||||
|                     String toCopy = historyTable.getValueAt(row, column).toString(); |  | ||||||
|                     Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(toCopy), null); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         }); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     @Override |  | ||||||
|     public void setVisible(boolean b) { |  | ||||||
|         super.setVisible(b); |  | ||||||
|         if (b) inputField.requestFocusInWindow(); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user