/* Copyright (C) 2000, Geert Vernaeve */ package gve.calc.formula; import java.awt.*; import gve.calc.formula.*; import gve.calc.formula.Part; public class RewriteRuleView extends TabularView { public RewriteRuleView(RewriteRule model,FormulaView view) { super(model,view); TabularLayout layout = (TabularLayout)getLayout(); layout.setHgap(2); } public void paint(Graphics g) { super.paint(g); Dimension siz = getSize(); FormulaView view = FormulaView.get(this); RewriteRule model = (RewriteRule)getModel(); if (model.getHeight() > 1) { // Lines beside match identifier Component match = view.getView(model.rules[1]); int y = match.getLocation().y + match.getSize().height/2; int w = match.getSize().width; g.drawLine(0,y,(siz.width-w)/2-2,y); g.drawLine((siz.width+w)/2+2,y,siz.width,y); } g.drawRect(0,0,siz.width-1,siz.height-1); } public boolean keydn(int key) { FormulaView view = FormulaView.get(this); RewriteRule model = (RewriteRule)getModel(); if (key == Key_BS) { Point p = model.whichOffspring(view.getCursorPart()); if (p == null) return super.keydn(key); if (p.y>0 && Part.isEmpty(model.rules[p.y])) { model.removeRow(p.y); view.setCursorPart(model.rules[p.y-1]); return true; } } if (key != '\n') return super.keydn(key); int child; { Point p = model.whichOffspring(view.getCursorPart()); if (p == null) return super.keydn(key); child = p.y; } if (child == model.rules.length) return super.keydn(key); model.insertRow(child+1); view.setCursorPart(model.rules[child+1]); return true; } }