Changeset 74
- Timestamp:
- 01/06/07 17:35:04 (2 years ago)
- Files:
-
- lex/trunk/jsp/parse.jsp (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
lex/trunk/jsp/parse.jsp
r70 r74 125 125 var sel_right = -1; 126 126 var any_checked = false; 127 var checked_list = new Array(); 127 128 128 129 for (var i = 0; i < edges.length; i++) 129 130 { 130 131 var edge = edges[i]; 131 var checkbox = document.forms.rulecmd[edge [0]];132 133 if (checkbox .checked)134 { 135 any_checked = true;136 137 if (sel_left == -1 || sel_left > edge [1])138 { 139 sel_left = edge [1];140 } 141 if (sel_right == -1 || sel_right < edge [2])142 { 143 sel_right = edge [2];132 var checkbox = document.forms.rulecmd[edge.id]; 133 134 if (checkbox != null && checkbox.checked) 135 { 136 checked_list[checked_list.length] = edge; 137 138 if (sel_left == -1 || sel_left > edge.left) 139 { 140 sel_left = edge.left; 141 } 142 if (sel_right == -1 || sel_right < edge.right) 143 { 144 sel_right = edge.right; 144 145 } 145 146 } … … 150 151 var edge = edges[i]; 151 152 var enabled = false; 152 var checkbox = document.forms.rulecmd[edge[0]]; 153 154 if (!any_checked) 155 { 156 // allow the first checkbox to be checked 153 var checkbox = document.forms.rulecmd[edge.id]; 154 155 if (checkbox == null) 156 { 157 // fake edges don't have checkboxes 158 continue; 159 } 160 161 if (checked_list.length == 0) 162 { 163 // if none are checked yet, allow any to be checked 157 164 enabled = true; 158 165 } 159 else if (edge [1] == sel_right + 1 || edge[2]== sel_left - 1)166 else if (edge.left == sel_right + 1 || edge.right == sel_left - 1) 160 167 { 161 168 // allow expansion at the edges … … 166 173 enabled = false; 167 174 } 168 else if (edge [1] == sel_left || edge[2]== sel_right)175 else if (edge.left == sel_left || edge.right == sel_right) 169 176 { 170 177 // allow deselection at the left and right edges only … … 173 180 174 181 checkbox.disabled = !enabled; 182 } 183 184 var parts = document.forms.rulecmd.new_rule_parts; 185 parts.value = ""; 186 187 for (var i = 0; i < checked_list.length; i++) 188 { 189 var edge = checked_list[i]; 190 191 if (edge.terminal) 192 { 193 parts.value += "\"" + edge.symbol + "\""; 194 } 195 else 196 { 197 parts.value += "{" + edge.symbol + "}"; 198 } 199 200 if (i < checked_list.length - 1) 201 { 202 parts.value += " "; 203 } 204 } 205 206 return true; 207 } 208 209 function edge (id, left, right, symbol, terminal, fake) 210 { 211 this.id = id; 212 this.left = left; 213 this.right = right; 214 this.symbol = symbol; 215 this.terminal = terminal; 216 this.fake = fake; 217 } 218 219 function on_rule_add_click() 220 { 221 var form = document.forms.rulecmd; 222 223 if (form.new_rule_sym.value == "") 224 { 225 alert("You must enter a top symbol for the new rule!"); 226 return false; 227 } 228 229 if (form.new_rule_parts.value == "") 230 { 231 alert("You must select some edges for the new rule!"); 232 return false; 175 233 } 176 234 … … 483 541 %></span></p><% 484 542 } 543 544 if (request.getParameter("rule_add") != null) 545 { 546 String symbol = request.getParameter("new_rule_sym"); 547 String parts = request.getParameter("new_rule_parts"); 548 549 if (symbol == null || symbol.equals("") || 550 parts == null || parts.equals("")) 551 { 552 %> 553 <h2>Error: some required parameters were missing or empty</h2> 554 <% 555 } 556 else 557 { 558 Change ch = sql.createChange(SqlChange.INSERT, 559 "lexicon_entries", null); 560 ch.setString("Symbol", symbol); 561 ch.setString("Lexeme", parts); 562 ch.execute(); 563 } 564 } 485 565 486 566 { … … 495 575 <h3>Parse failed</h3> 496 576 <p>The edges found were:</p> 497 <form name="rulecmd" >577 <form name="rulecmd" method="post"> 498 578 <% 499 579 … … 501 581 Map idEdges = new Hashtable(); 502 582 Map fakeChild = new Hashtable(); 583 List fakeEdges = new ArrayList(); 503 584 List depths = new ArrayList(); 504 585 List edges = chart.getEdges(); … … 523 604 i.add(we); 524 605 fakeChild.put(me, we); 606 fakeEdges.add(we); 525 607 } 526 608 } … … 582 664 <% 583 665 584 class LeftComparator implements Comparator666 class EdgeComparator implements Comparator 585 667 { 586 668 public int compare(Object o1, Object o2) … … 588 670 Edge e1 = (Edge)o1; 589 671 Edge e2 = (Edge)o2; 590 return e1.getLeftPosition() - e2.getLeftPosition(); 591 } 592 } 593 594 Comparator comp = new LeftComparator(); 672 int diff = e1.getLeftPosition() - e2.getLeftPosition(); 673 if (diff != 0) return diff; 674 return e2.getRightPosition() - e1.getRightPosition(); 675 } 676 } 677 678 Comparator comp = new EdgeComparator(); 595 679 596 680 for (int i = maxDepth; i >= 0; i--) … … 656 740 onMouseOut=" return unhighlight_all();" 657 741 ><% /* 658 [<%= edgeIds.get(next) %>] <% */ %> 742 [<%= edgeIds.get(next) %>] <% */ 743 744 if (!fakeEdges.contains(next)) 745 { 746 %> 659 747 <span class="cb"> 660 748 <input name="<%= edgeIds.get(next) %>" … … 662 750 onClick="return on_checkbox_click(this);" /> 663 751 </span> 664 <%= next.getHtmlLabel() %> 752 <% 753 } 754 755 %><%= next.getHtmlLabel() %> 665 756 </td> 666 757 <% … … 753 844 String id = (String)( edgeIds.get(e) ); 754 845 %> 755 new Array("<%= id %>", <%=846 new edge("<%= id %>", <%= 756 847 e.getLeftPosition() %>, <%= 757 848 e.getRightPosition() %>, "<%= 758 849 e.symbol() %>", <%= 759 e.isTerminal() %>)<% 850 e.isTerminal() %>, <%= 851 fakeEdges.contains(e) %>)<% 760 852 if (i.hasNext()) 761 853 { … … 769 861 //--></script> 770 862 771 <p> Add a new rule:</p>863 <p></p> 772 864 773 865 <table> 774 866 <tr bgcolor="#ffcccc"> 775 <th>Top node name (symbol)</th> 776 <th>Component node names (parts)</th> 867 <th colspan="3">Create a new rule</th> 777 868 </tr> 778 869 <tr bgcolor="#ffeeee"> 870 <td>Top node name (symbol)</td> 871 <td>Component node names (parts)</td> 872 <td>Command</td> 873 </tr> 874 <tr bgcolor="#ffcccc"> 779 875 <td> 780 876 <input name="new_rule_sym" /> 781 877 </td> 782 878 <td> 783 <input name="new_rule_parts" /> 879 <input name="new_rule_parts" size="30"/> 880 </td> 881 <td> 882 <input name="rule_add" type="submit" value="Create" 883 onClick="return on_rule_add_click()" /> 784 884 </td> 785 885 </tr>
