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 / DeclTableModel.class (.txt) < prev    next >
Encoding:
Java Class File  |  2000-06-30  |  8.5 KB  |  316 lines

  1. package com.extensibility.xa;
  2.  
  3. import com.extensibility.app.UI;
  4. import com.extensibility.util.Debug;
  5. import com.extensibility.util.StringUtilities;
  6. import com.extensibility.xml.BaseDeclaration;
  7. import com.extensibility.xml.DTDParser;
  8. import com.extensibility.xml.DeclarationChangeEvent;
  9. import com.extensibility.xml.ParserException;
  10. import com.extensibility.xml.URI;
  11. import java.awt.datatransfer.DataFlavor;
  12. import java.awt.datatransfer.Transferable;
  13. import java.util.Enumeration;
  14. import java.util.EventObject;
  15. import java.util.Vector;
  16. import javax.swing.ListSelectionModel;
  17. import javax.swing.table.AbstractTableModel;
  18.  
  19. public abstract class DeclTableModel extends AbstractTableModel implements SchemaDocListener {
  20.    static final int COL_ERRORS = 0;
  21.    static final int COL_URI_ICON = 1;
  22.    static final int COL_NAME = 2;
  23.    SchemaDoc doc;
  24.    Vector declarations;
  25.    Class declClass;
  26.    Class declBaseClass;
  27.    DataFlavor rowDataFlavor;
  28.  
  29.    public DeclTableModel(SchemaDoc var1, Class var2) {
  30.       this(var1, var2, var2);
  31.    }
  32.  
  33.    public DeclTableModel(SchemaDoc var1, Class var2, Class var3) {
  34.       this.declarations = new Vector();
  35.       this.declClass = var2;
  36.       this.declBaseClass = var3;
  37.       this.rowDataFlavor = new DataFlavor(this.declClass, this.declClass.getName());
  38.       this.doc = var1;
  39.       this.doc.addDocumentListener(this);
  40.       this.updateFromSchema((BaseDeclaration)null);
  41.    }
  42.  
  43.    public static int getNameColumn() {
  44.       return 2;
  45.    }
  46.  
  47.    public void declarationListChanged(SchemaDocEvent var1) {
  48.       this.updateFromSchema((BaseDeclaration)null);
  49.       ((AbstractTableModel)this).fireTableDataChanged();
  50.    }
  51.  
  52.    public void declarationListReordered(SchemaDocEvent var1) {
  53.    }
  54.  
  55.    public void declarationChanged(SchemaDocEvent var1, DeclarationChangeEvent var2) {
  56.       if (((EventObject)var2).getSource() instanceof BaseDeclaration) {
  57.          this.updateRow((BaseDeclaration)((EventObject)var2).getSource());
  58.       }
  59.  
  60.    }
  61.  
  62.    public final SchemaDoc getSchemaDoc() {
  63.       return this.doc;
  64.    }
  65.  
  66.    public void flavorChanged(SchemaDocEvent var1) {
  67.    }
  68.  
  69.    public void declarationRemoved(SchemaDocEvent var1) {
  70.       BaseDeclaration var2 = var1.getDeclaration();
  71.       if (this.declBaseClass.isInstance(var2) || this.declClass.isInstance(var2)) {
  72.          int var3 = this.getRowForDecl(var2);
  73.          Debug.assert(var3 >= 0, "row not found in declarationRemoved");
  74.          this.declarations.removeElementAt(var3);
  75.          ((AbstractTableModel)this).fireTableRowsDeleted(var3, var3);
  76.       }
  77.    }
  78.  
  79.    public void declarationInserted(SchemaDocEvent var1) {
  80.       BaseDeclaration var2 = var1.getPosition();
  81.       BaseDeclaration var3 = var1.getDeclaration();
  82.       if (this.declBaseClass.isInstance(var3) || this.declClass.isInstance(var3)) {
  83.          int var4 = this.getNewRow();
  84.          if (var2 != null) {
  85.             var4 = this.getRowForDecl(var2);
  86.             if (var4 < 0) {
  87.                var4 = this.getNewRow();
  88.             }
  89.          }
  90.  
  91.          this.declarations.insertElementAt(var3, var4);
  92.          ((AbstractTableModel)this).fireTableRowsInserted(var4, var4);
  93.       }
  94.    }
  95.  
  96.    public void updateFromSchema(BaseDeclaration var1) {
  97.       this.declarations.removeAllElements();
  98.       Enumeration var2 = this.getDeclarations();
  99.  
  100.       while(var2.hasMoreElements()) {
  101.          this.declarations.addElement(var2.nextElement());
  102.       }
  103.  
  104.    }
  105.  
  106.    protected Enumeration getDeclarations() {
  107.       return this.doc.getDeclarations(this.declClass);
  108.    }
  109.  
  110.    public void sort(int var1, boolean var2) {
  111.       1 var3 = new 1(var1, this);
  112.       StringUtilities.sortStrings(this.declarations, var3, var2);
  113.       ((AbstractTableModel)this).fireTableDataChanged();
  114.    }
  115.  
  116.    public void updateRow(BaseDeclaration var1) {
  117.       if (this.declBaseClass.isInstance(var1) || this.declClass.isInstance(var1)) {
  118.          int var2 = this.getRowForDecl(var1);
  119.          if (var2 >= 0) {
  120.             ((AbstractTableModel)this).fireTableRowsUpdated(var2, var2);
  121.          }
  122.  
  123.       }
  124.    }
  125.  
  126.    public int getRowForDecl(BaseDeclaration var1) throws IllegalArgumentException {
  127.       for(int var2 = 0; var2 < this.declarations.size(); ++var2) {
  128.          if (this.getDeclaration(var2) == var1) {
  129.             return var2;
  130.          }
  131.       }
  132.  
  133.       return -1;
  134.    }
  135.  
  136.    public int getRowByDeclName(String var1) throws IllegalArgumentException {
  137.       for(int var2 = 0; var2 < this.declarations.size(); ++var2) {
  138.          if (this.getDeclaration(var2).getName().equals(var1)) {
  139.             return var2;
  140.          }
  141.       }
  142.  
  143.       return -1;
  144.    }
  145.  
  146.    public final boolean isNewRow(int var1) {
  147.       return var1 >= this.getNewRow();
  148.    }
  149.  
  150.    public final BaseDeclaration getDeclaration(int var1) {
  151.       return !this.isNewRow(var1) && var1 >= 0 ? (BaseDeclaration)this.declarations.elementAt(var1) : null;
  152.    }
  153.  
  154.    public final int getRowCount() {
  155.       return this.declarations.size() + 1;
  156.    }
  157.  
  158.    public final int getNewRow() {
  159.       return this.declarations.size();
  160.    }
  161.  
  162.    protected BaseDeclaration getDeclaration(int var1, int var2, String var3) {
  163.       return null;
  164.    }
  165.  
  166.    public boolean isCellEditable(int var1, int var2) {
  167.       if (var2 >= 0 && var1 >= 0 && var2 != 0 && var2 != 1) {
  168.          if (this.isNewRow(var1)) {
  169.             return var2 == 2;
  170.          } else {
  171.             return this.getSchemaDoc().isEditable(this.getDeclaration(var1));
  172.          }
  173.       } else {
  174.          return false;
  175.       }
  176.    }
  177.  
  178.    ParserException validateName(String var1, Class var2, BaseDeclaration var3, boolean var4) {
  179.       if (var1.length() == 0) {
  180.          return new ParserException(202, " ");
  181.       } else if (var4 && this.getSchemaDoc().getSchema().getFlavor().isSupported(Class.forName("com.extensibility.xml.NamespaceDeclaration")) && var1.indexOf(":") != -1) {
  182.          return new ParserException(999, "Qualified names are not allowed here.");
  183.       } else if (!DTDParser.isNameStartChar(var1.charAt(0))) {
  184.          return new ParserException(203, var1.charAt(0));
  185.       } else {
  186.          for(int var5 = 1; var5 < var1.length(); ++var5) {
  187.             var1.charAt(var5);
  188.             if (!DTDParser.isNameChar(var1.charAt(var5))) {
  189.                return new ParserException(DTDParser.isWhiteChar(var1.charAt(var5)) ? 205 : 204, var1.charAt(var5));
  190.             }
  191.          }
  192.  
  193.          if (var2 != null) {
  194.             BaseDeclaration var6 = this.getNamedDeclaration(var1);
  195.             if (var6 != null && var6 != var3) {
  196.                return new ParserException(206, var1);
  197.             }
  198.          }
  199.  
  200.          return null;
  201.       }
  202.    }
  203.  
  204.    ParserException validateCell(String var1, int var2, int var3) {
  205.       return null;
  206.    }
  207.  
  208.    public BaseDeclaration getNamedDeclaration(String var1) {
  209.       return this.doc.getNamedDeclaration(var1, this.declClass);
  210.    }
  211.  
  212.    Class getDeclBaseClass() {
  213.       return this.declBaseClass;
  214.    }
  215.  
  216.    public String getUniqueDeclName(String var1) {
  217.       if (var1 == null) {
  218.          var1 = UI.getString("decl.unnamed");
  219.       }
  220.  
  221.       if (this.getNamedDeclaration(var1) == null) {
  222.          return var1;
  223.       } else {
  224.          int var2 = 1;
  225.  
  226.          String var3;
  227.          do {
  228.             var3 = String.valueOf(String.valueOf(var1).concat(String.valueOf("."))).concat(String.valueOf(var2++));
  229.          } while(this.getNamedDeclaration(var3) != null);
  230.  
  231.          return var3;
  232.       }
  233.    }
  234.  
  235.    String getIndExternalURI(int var1) {
  236.       URI var2 = this.getDeclaration(var1).getURI();
  237.       return var2.equals(this.getSchemaDoc().getURI()) ? "" : var2.getShortName();
  238.    }
  239.  
  240.    public void removeDeclaration(BaseDeclaration var1) {
  241.       this.doc.removeDeclaration(var1);
  242.    }
  243.  
  244.    public BaseDeclaration createDeclaration(String var1) {
  245.       Debug.assertAbstract();
  246.       return null;
  247.    }
  248.  
  249.    protected Transferable getTransferableData(ListSelectionModel var1) {
  250.       return new ClipData(this, var1);
  251.    }
  252.  
  253.    protected DataFlavor getRowFlavor() {
  254.       return this.rowDataFlavor;
  255.    }
  256.  
  257.    public void setValueAt(Object var1, int var2, int var3) {
  258.       Debug.assertAbstract();
  259.    }
  260.  
  261.    public int getColumnCount() {
  262.       Debug.assertAbstract();
  263.       return 0;
  264.    }
  265.  
  266.    public String getColumnName(int var1) {
  267.       switch (var1) {
  268.          case 0:
  269.          case 1:
  270.             return "";
  271.          default:
  272.             Debug.assert(false, String.valueOf("unknown column: ").concat(String.valueOf(var1)));
  273.             return null;
  274.       }
  275.    }
  276.  
  277.    public Class getColumnClass(int var1) {
  278.       switch (var1) {
  279.          case 0:
  280.          case 1:
  281.             return Class.forName("java.lang.String");
  282.          default:
  283.             Debug.assert(false, String.valueOf("unknown column: ").concat(String.valueOf(var1)));
  284.             return null;
  285.       }
  286.    }
  287.  
  288.    public Object getValueAt(int var1, int var2) {
  289.       switch (var2) {
  290.          case 0:
  291.             return this.isNewRow(var1) ? "" : this.getDeclaration(var1).getFirstError();
  292.          case 1:
  293.             return this.isNewRow(var1) ? "" : this.getIndExternalURI(var1);
  294.          default:
  295.             return null;
  296.       }
  297.    }
  298.  
  299.    public String getToolTipText(int var1, int var2) {
  300.       String var3 = null;
  301.       switch (var2) {
  302.          case 0:
  303.             if (!this.isNewRow(var1)) {
  304.                var3 = this.getDeclaration(var1).getFirstError();
  305.             }
  306.             break;
  307.          case 1:
  308.             if (!this.isNewRow(var1)) {
  309.                var3 = this.getIndExternalURI(var1);
  310.             }
  311.       }
  312.  
  313.       return var3 == null ? "" : var3;
  314.    }
  315. }
  316.