home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML ConsoleMax.sea / XML ConsoleMax / Required / esc.jar / com / extensibility / xa / ElementTableModel.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  9.7 KB  |  360 lines

  1. package com.extensibility.xa;
  2.  
  3. import com.extensibility.app.BaseEdit;
  4. import com.extensibility.app.UI;
  5. import com.extensibility.rock.table.QlickerDataSource;
  6. import com.extensibility.util.Debug;
  7. import com.extensibility.xa.undo.AttrsUndoable;
  8. import com.extensibility.xa.undo.CMAnyEmptyUndoable;
  9. import com.extensibility.xa.undo.CMDataUndoable;
  10. import com.extensibility.xa.undo.CMTextUndoable;
  11. import com.extensibility.xa.undo.ElemNameUndoable;
  12. import com.extensibility.xa.undo.ElementNewRowUndoable;
  13. import com.extensibility.xa.undo.ExtendsUndoable;
  14. import com.extensibility.xa.undo.TagsCkBoxUndoable;
  15. import com.extensibility.xa.undo.TextCkBoxUndoable;
  16. import com.extensibility.xml.AttributeDeclaration;
  17. import com.extensibility.xml.BaseDeclaration;
  18. import com.extensibility.xml.ContentModelTerm;
  19. import com.extensibility.xml.DTDUtilities;
  20. import com.extensibility.xml.DataTypeDeclaration;
  21. import com.extensibility.xml.ElementDeclaration;
  22. import com.extensibility.xml.ParserException;
  23. import com.extensibility.xml.dt.DataTypeFactory;
  24. import com.extensibility.xml.dt.DataTypeIntf;
  25. import java.awt.Component;
  26. import java.awt.Toolkit;
  27.  
  28. public class ElementTableModel extends DeclModelExtra implements QlickerDataSource {
  29.    public static final int COL_ELEMENT = 2;
  30.    public static final int COL_SUPER = 3;
  31.    public static final int COL_CM_TEXT = 4;
  32.    public static final int COL_CM_TAGS = 5;
  33.    public static final int COL_CM_SOURCE = 6;
  34.    public static final int COL_ATTRS = 7;
  35.    static final int COL_COUNT = 8;
  36.  
  37.    public ElementTableModel(SchemaDoc var1) {
  38.       super(var1, Class.forName("com.extensibility.xml.ElementDeclaration"));
  39.    }
  40.  
  41.    public int getColumnCount() {
  42.       return this.getBaseColumnCount() + ((DeclModelExtra)this).getExtraColumnCount();
  43.    }
  44.  
  45.    protected final int getBaseColumnCount() {
  46.       return 8;
  47.    }
  48.  
  49.    char getHeaderMnemonic(int var1) {
  50.       return var1 < 8 ? UI.getMnemonic(String.valueOf(String.valueOf("taglist.column").concat(String.valueOf(var1))).concat(String.valueOf(".header"))) : '\u0000';
  51.    }
  52.  
  53.    public String getColumnName(int var1) {
  54.       return var1 < 8 ? String.valueOf(String.valueOf("taglist.column").concat(String.valueOf(var1))).concat(String.valueOf(".header")) : super.getColumnName(var1);
  55.    }
  56.  
  57.    public Class getColumnClass(int var1) {
  58.       switch (var1) {
  59.          case 2:
  60.             return Class.forName("java.lang.String");
  61.          case 3:
  62.             return Class.forName("java.lang.String");
  63.          case 4:
  64.             return Class.forName("java.lang.Boolean");
  65.          case 5:
  66.             return Class.forName("java.lang.Boolean");
  67.          case 6:
  68.             return Class.forName("java.lang.String");
  69.          case 7:
  70.             return Class.forName("java.lang.String");
  71.          default:
  72.             return super.getColumnClass(var1);
  73.       }
  74.    }
  75.  
  76.    public boolean isCellEditable(int var1, int var2) {
  77.       boolean var3 = super.isCellEditable(var1, var2);
  78.       return var3;
  79.    }
  80.  
  81.    public Object getValueAt(int var1, int var2) {
  82.       if (((DeclTableModel)this).isNewRow(var1)) {
  83.          switch (var2) {
  84.             case 2:
  85.             case 3:
  86.             case 6:
  87.             case 7:
  88.                return "";
  89.             case 4:
  90.             case 5:
  91.                return Boolean.FALSE;
  92.             default:
  93.                return super.getValueAt(var1, var2);
  94.          }
  95.       } else {
  96.          ElementDeclaration var3 = this.getElement(var1);
  97.          switch (var2) {
  98.             case 2:
  99.                return ((BaseDeclaration)var3).getName();
  100.             case 3:
  101.                return var3.getSuperTypeName();
  102.             case 4:
  103.                return var3.getAllowsText() ? Boolean.TRUE : Boolean.FALSE;
  104.             case 5:
  105.                return var3.getAllowsTags() ? Boolean.TRUE : Boolean.FALSE;
  106.             case 6:
  107.                if (var3.isTextOnly()) {
  108.                   return var3.getDataTypeDisplay(((DeclTableModel)this).getSchemaDoc().getSchema());
  109.                }
  110.  
  111.                String var4 = ((DeclTableModel)this).getSchemaDoc().getContentModelAsString(var3);
  112.                return var4;
  113.             case 7:
  114.                return var3.getAttributesAsString(false);
  115.             default:
  116.                return super.getValueAt(var1, var2);
  117.          }
  118.       }
  119.    }
  120.  
  121.    protected final ElementDeclaration getElement(int var1) {
  122.       return (ElementDeclaration)((DeclTableModel)this).getDeclaration(var1);
  123.    }
  124.  
  125.    public int getMetaSelector() {
  126.       return 1;
  127.    }
  128.  
  129.    ParserException validateCell(String var1, int var2, int var3) {
  130.       if (var1.equals(this.getValueAt(var2, var3))) {
  131.          return null;
  132.       } else {
  133.          switch (var3) {
  134.             case 2:
  135.                return ((DeclTableModel)this).validateName(var1, Class.forName("com.extensibility.xml.ElementDeclaration"), this.getElement(var2), true);
  136.             case 3:
  137.                if (var1.trim().length() == 0) {
  138.                   return null;
  139.                }
  140.  
  141.                ParserException var10 = ((DeclTableModel)this).validateName(var1, (Class)null, (BaseDeclaration)null, false);
  142.                if (var10 == null && var1.indexOf(58) == -1) {
  143.                   ElementDeclaration var6 = ((DeclTableModel)this).getSchemaDoc().getNamedElement(var1);
  144.                   if (var6 == null) {
  145.                      var10 = new ParserException(210, var1);
  146.                   } else if (var6 == this.getElement(var2)) {
  147.                      var10 = new ParserException(267, var1);
  148.                   } else if (var6.isSubTypeOf(this.getElement(var2))) {
  149.                      var10 = new ParserException(268, var1);
  150.                   }
  151.                }
  152.  
  153.                return var10;
  154.             case 4:
  155.             case 5:
  156.             default:
  157.                return super.validateCell(var1, var2, var3);
  158.             case 6:
  159.                if (((DeclTableModel)this).isNewRow(var2)) {
  160.                   try {
  161.                      super.doc.checkContentModel(((DeclTableModel)this).getUniqueDeclName((String)null), var1);
  162.                   } catch (ParserException var9) {
  163.                      return var9;
  164.                   }
  165.                } else {
  166.                   ElementDeclaration var4 = this.getElement(var2);
  167.                   if (var4.isTextOnly()) {
  168.                      if (var1.trim().length() == 0) {
  169.                         return null;
  170.                      }
  171.  
  172.                      if (super.doc.getNamedDeclaration(var1, Class.forName("com.extensibility.xml.NotationDeclaration")) != null) {
  173.                         AttributeDeclaration var5 = var4.getNotationAttr();
  174.                         if (var5 != null && var5.getOwner() != var4) {
  175.                            return new ParserException(89, ((BaseDeclaration)var5).getName());
  176.                         }
  177.  
  178.                         return null;
  179.                      }
  180.  
  181.                      if (((DeclTableModel)this).getSchemaDoc().getNamedDataTypeIntf(var1) == null) {
  182.                         if (var1.indexOf(":") != -1) {
  183.                            return null;
  184.                         }
  185.  
  186.                         if (!((DeclTableModel)this).getSchemaDoc().isSupported(Class.forName("com.extensibility.xml.DataTypeDeclaration"))) {
  187.                            return new ParserException(87, var1);
  188.                         }
  189.  
  190.                         if (!XADialogFactory.askAutoCreateDataType((Component)null, var1)) {
  191.                            return new ParserException(87, var1);
  192.                         }
  193.                      }
  194.                   } else {
  195.                      if (var1.equals("ANY") || var1.equals("EMPTY")) {
  196.                         return null;
  197.                      }
  198.  
  199.                      try {
  200.                         if (CMTextUndoable.autoParen(var4, var1)) {
  201.                            var1 = String.valueOf(String.valueOf("(").concat(String.valueOf(var1))).concat(String.valueOf(")"));
  202.                         }
  203.  
  204.                         super.doc.checkContentModel(((BaseDeclaration)var4).getName(), var1);
  205.                      } catch (ParserException var8) {
  206.                         return var8;
  207.                      }
  208.                   }
  209.                }
  210.                break;
  211.             case 7:
  212.                try {
  213.                   super.doc.checkAttrList(var1);
  214.                } catch (ParserException var7) {
  215.                   return var7;
  216.                }
  217.          }
  218.  
  219.          return null;
  220.       }
  221.    }
  222.  
  223.    public void setValueAt(Object var1, int var2, int var3) {
  224.       if (!var1.equals(this.getValueAt(var2, var3))) {
  225.          ElementDeclaration var4 = this.getElement(var2);
  226.          if (((DeclTableModel)this).isNewRow(var2)) {
  227.             String var5 = var3 == 2 ? (String)var1 : ((DeclTableModel)this).getUniqueDeclName((String)null);
  228.             ElementNewRowUndoable var6 = new ElementNewRowUndoable(this, var2, var5);
  229.             ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var6);
  230.             ((BaseEdit)var6).doCommand();
  231.             super.doc.touch(super.doc.getFocusedURI(true));
  232.             if (var3 == 2) {
  233.                return;
  234.             }
  235.          } else {
  236.             super.doc.touch(var4);
  237.          }
  238.  
  239.          switch (var3) {
  240.             case 2:
  241.                ElemNameUndoable var10 = new ElemNameUndoable(this, var4, var1);
  242.                ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var10);
  243.                ((BaseEdit)var10).doCommand();
  244.                break;
  245.             case 3:
  246.                if (var1.toString().length() == 0) {
  247.                   if (this.getElement(var2).getSuperType() == null) {
  248.                      return;
  249.                   }
  250.  
  251.                   var1 = null;
  252.                }
  253.  
  254.                ExtendsUndoable var12 = new ExtendsUndoable(this, var4, var1);
  255.                ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var12);
  256.                ((BaseEdit)var12).doCommand();
  257.                break;
  258.             case 4:
  259.                if (var4.getSuperType() != null) {
  260.                   Toolkit.getDefaultToolkit().beep();
  261.                } else {
  262.                   TextCkBoxUndoable var11 = new TextCkBoxUndoable(this, var4, var1);
  263.                   ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var11);
  264.                   ((BaseEdit)var11).doCommand();
  265.                }
  266.                break;
  267.             case 5:
  268.                if (var4.getSuperType() != null) {
  269.                   Toolkit.getDefaultToolkit().beep();
  270.                } else {
  271.                   TagsCkBoxUndoable var7 = new TagsCkBoxUndoable(this, var4, var1);
  272.                   ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var7);
  273.                   ((BaseEdit)var7).doCommand();
  274.                }
  275.                break;
  276.             case 6:
  277.                if (var1.equals("ANY")) {
  278.                   CMAnyEmptyUndoable var13 = new CMAnyEmptyUndoable(this, var4, true);
  279.                   ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var13);
  280.                   ((BaseEdit)var13).doCommand();
  281.                } else if (var1.equals("EMPTY")) {
  282.                   CMAnyEmptyUndoable var14 = new CMAnyEmptyUndoable(this, var4, false);
  283.                   ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var14);
  284.                   ((BaseEdit)var14).doCommand();
  285.                } else if (var4.isTextOnly()) {
  286.                   if (var1.toString().trim().length() == 0) {
  287.                      var1 = ((DeclTableModel)this).getSchemaDoc().getSchema().getDataTypeDisplay(DataTypeFactory.createDataType(DataTypeIntf.STRING));
  288.                   }
  289.  
  290.                   if (((DeclTableModel)this).getSchemaDoc().getNamedDataTypeIntf((String)var1) == null && ((String)var1).indexOf(":") == -1) {
  291.                      DataTypeDeclaration var15 = new DataTypeDeclaration(var1.toString(), DataTypeFactory.createDataType(DataTypeIntf.STRING));
  292.                      ((DeclTableModel)this).getSchemaDoc().insertDeclaration(var15, (BaseDeclaration)null);
  293.                   }
  294.  
  295.                   CMDataUndoable var16 = new CMDataUndoable(this, var4, var1);
  296.                   ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var16);
  297.                   ((BaseEdit)var16).doCommand();
  298.                } else {
  299.                   String var17 = var1.toString();
  300.                   CMTextUndoable var9 = new CMTextUndoable(this, var4, var1);
  301.                   ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var9);
  302.                   ((BaseEdit)var9).doCommand();
  303.                }
  304.                break;
  305.             case 7:
  306.                AttrsUndoable var8 = new AttrsUndoable(this, var4, var1);
  307.                if (((String)var1).length() != 0 || this.getValueAt(var2, var3) != null) {
  308.                   ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var8);
  309.                }
  310.  
  311.                ((BaseEdit)var8).doCommand();
  312.                break;
  313.             default:
  314.                super.setValueAt(var1, var2, var3);
  315.          }
  316.  
  317.       }
  318.    }
  319.  
  320.    public BaseDeclaration createDeclaration(String var1) {
  321.       return ((DeclTableModel)this).getSchemaDoc().isSupported("GESTALT_FORBID_ANY_AND_MIXED") ? new ElementDeclaration(var1, 5) : new ElementDeclaration(var1, 2);
  322.    }
  323.  
  324.    protected BaseDeclaration getDeclaration(int var1, int var2, String var3) {
  325.       Object var4 = null;
  326.       if (var2 == 6) {
  327.          if (DTDUtilities.isPEName(var3)) {
  328.             var3 = DTDUtilities.convertPEName(var3, false);
  329.             var4 = ((DeclTableModel)this).getSchemaDoc().getNamedDeclaration(var3, Class.forName("com.extensibility.xml.InternalPEDeclaration"));
  330.          } else {
  331.             var3 = ContentModelTerm.getTypeName(var3);
  332.             var4 = ((DeclTableModel)this).getSchemaDoc().getNamedElement(var3);
  333.             if (var4 == null) {
  334.                var4 = ((DeclTableModel)this).getSchemaDoc().getNamedDeclaration(var3, Class.forName("com.extensibility.xml.DataTypeDeclaration"));
  335.             }
  336.          }
  337.       } else if (var2 == 7) {
  338.          if (DTDUtilities.isPEName(var3)) {
  339.             var3 = DTDUtilities.convertPEName(var3, false);
  340.             var4 = ((DeclTableModel)this).getSchemaDoc().getNamedDeclaration(var3, Class.forName("com.extensibility.xml.InternalPEDeclaration"));
  341.          } else {
  342.             var4 = ((DeclTableModel)this).getSchemaDoc().getNamedDeclaration(var3, Class.forName("com.extensibility.xml.AttributeDeclaration"));
  343.          }
  344.       }
  345.  
  346.       return (BaseDeclaration)var4;
  347.    }
  348.  
  349.    public Object getQlickerData(String var1, Object var2) {
  350.       if (var1 == "ATTRIBUTES") {
  351.          return super.doc.getAttributeNames();
  352.       } else if (var1 == "ATTRGROUPS") {
  353.          return super.doc.getAttrGroupPENames();
  354.       } else {
  355.          Debug.assert(false, String.valueOf("Unknown getData key: ").concat(String.valueOf(var1)));
  356.          return "";
  357.       }
  358.    }
  359. }
  360.