private void initTable(Grammar converted, UndoKeeper keeper) { final AutoProductionDataHelper helper = new AutoProductionDataHelper(converted, keeper); ProductionTableModel model = new ProductionTableModel(converted, keeper, helper) { public boolean isCellEditable(int row, int column) { return false; }; }; myTable = new ProductionTable(converted, keeper, true, model); myTable .getSelectionModel() .addListSelectionListener( new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { changeSelection(); } }); converted .getProductionSet() .addListener( new ChangeListener() { @Override public void stateChanged(ChangeEvent e) { if (e instanceof AddEvent) { for (Object o : ((AddEvent) e).getToAdd()) { Production p = (Production) o; helper.add(getMaxRow(), new Object[] {p.getLHS(), null, p.getRHS()}); } } } }); }
public boolean addRightmostStep(Production p) { SymbolString current = createResult(); for (int i = current.size() - 1; i >= 0; i--) { if (Grammar.isVariable(current.get(i))) { return this.addStep(p, i); } } return false; }