private void makePCStrings(KinTermDef ktd, String eqcSig) throws KSInternalErrorException { ArrayList<Object> pcList = ktd.decodeString(eqcSig); if (ktd.expandedDefs.size() != pcList.size()) { String msg = "PropDef ktd with " + pcList.size() + " symbols in EQC SigString\n"; msg += "had " + ktd.definitions.size() + " clauses in its definition."; throw new KSInternalErrorException(msg); } for (int i = 0; i < pcList.size(); i++) { ClauseBody cb = (ClauseBody) ktd.expandedDefs.get(i); String s = (String) pcList.get(i); if (cb.pcString == null || cb.pcString.isEmpty()) { cb.pcString = s; } } }
private void doneButtonActionPerformed( java.awt.event.ActionEvent evt) { // GEN-FIRST:event_doneButtonActionPerformed Context currCtxt = Context.current; if (accepted) { try { String sourceContextName = propDef.ktd.domTh.languageName; Context sourceCtxt = Library.findOrCreateContext(sourceContextName); if (propDef.ktd.domTh.addressTerms) { sourceCtxt.updateDomTheoryAdr(); // loads it on sourceCtxt } else { sourceCtxt.updateDomTheoryRef(); } KinTermDef newDef = new KinTermDef(propDef.kinTerm); newDef.comments = FamilyPanel.convertBannedCharacters(notesText.getText()); newDef.definitions = propDef.ktd.definitions; newDef.expandClauses(sourceCtxt); makePCStrings(newDef, propDef.eqc.sigString); updateCBPtrs(newDef); newDef.makeSigStrings(); dt.addTerm(newDef); Context.AcceptedDefPtr ptr; ptr = new Context.AcceptedDefPtr(propDef.kinTerm, UDate.today(), "false", newDef.comments); ptr.postToHistory(learningHistory); // Move all dyads for this kinTerm to "Defined" category. TreeMap<String, ArrayList<Object>> dyads; dyads = (TreeMap<String, ArrayList<Object>>) dt.dyadsUndefined.remove(newDef.kinTerm); dt.dyadsDefined.put(newDef.kinTerm, dyads); SIL_Edit.edWin.chart.dirty = true; // Set up auto-def for this KTD TreeMap<String, ArrayList<Context.CB_Ptr>> autoDef = // autoDef: kinType => AList of Context.CB_Ptrs (dt.addressTerms ? currCtxt.autoDefAdr : currCtxt.autoDefRef); for (Object o : newDef.expandedDefs) { ClauseBody cb = (ClauseBody) o; String kinType = cb.pcString; if (autoDef.get(kinType) == null) { autoDef.put(kinType, new ArrayList<Context.CB_Ptr>()); } ArrayList<Context.CB_Ptr> defList = autoDef.get(kinType); defList.add(new Context.CB_Ptr(newDef.kinTerm, cb.seqNmbr)); } // Context.current = currCtxt; // It was reset by updates to SourceCtxt String msg = "Would you like to apply this new definition to all\n" + "Ego/Alter pairs that it fits?"; int decision = JOptionPane.showConfirmDialog( this, msg, "Apply Definition?", JOptionPane.YES_NO_OPTION); if (decision == JOptionPane.YES_OPTION) { SIL_Edit.edWin.applyDef(newDef, dt); } // Mark this suggestion as processed and update menu papa.markProcessed(suggNmbr); papa.reset(); } catch (Exception exc) { String msg = "While fleshing out a KTD for " + propDef.kinTerm; msg += "\nhit internal error: " + exc; MainPane.displayError(msg, "Internal Error", JOptionPane.ERROR_MESSAGE); } } else if (rejected) { Context.RejectedPropDefPtr reject = new Context.RejectedPropDefPtr( propDef.kinTerm, UDate.today(), "false", FamilyPanel.convertBannedCharacters(notesText.getText()), propDef.eqc.sigString, propDef.eqc.prototype.languageName, propDef.eqc.prototype.kinTerm); reject.postToHistory(learningHistory); papa.markProcessed(suggNmbr); papa.reset(); } reset(); } // GEN-LAST:event_doneButtonActionPerformed