home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xa;
-
- import com.extensibility.app.UI;
- import com.extensibility.util.Debug;
- import com.extensibility.util.StringUtilities;
- import com.extensibility.xml.BaseDeclaration;
- import com.extensibility.xml.DTDParser;
- import com.extensibility.xml.DeclarationChangeEvent;
- import com.extensibility.xml.ParserException;
- import com.extensibility.xml.URI;
- import java.awt.datatransfer.DataFlavor;
- import java.awt.datatransfer.Transferable;
- import java.util.Enumeration;
- import java.util.EventObject;
- import java.util.Vector;
- import javax.swing.ListSelectionModel;
- import javax.swing.table.AbstractTableModel;
-
- public abstract class DeclTableModel extends AbstractTableModel implements SchemaDocListener {
- static final int COL_ERRORS = 0;
- static final int COL_URI_ICON = 1;
- static final int COL_NAME = 2;
- SchemaDoc doc;
- Vector declarations;
- Class declClass;
- Class declBaseClass;
- DataFlavor rowDataFlavor;
-
- public DeclTableModel(SchemaDoc var1, Class var2) {
- this(var1, var2, var2);
- }
-
- public DeclTableModel(SchemaDoc var1, Class var2, Class var3) {
- this.declarations = new Vector();
- this.declClass = var2;
- this.declBaseClass = var3;
- this.rowDataFlavor = new DataFlavor(this.declClass, this.declClass.getName());
- this.doc = var1;
- this.doc.addDocumentListener(this);
- this.updateFromSchema((BaseDeclaration)null);
- }
-
- public static int getNameColumn() {
- return 2;
- }
-
- public void declarationListChanged(SchemaDocEvent var1) {
- this.updateFromSchema((BaseDeclaration)null);
- ((AbstractTableModel)this).fireTableDataChanged();
- }
-
- public void declarationListReordered(SchemaDocEvent var1) {
- }
-
- public void declarationChanged(SchemaDocEvent var1, DeclarationChangeEvent var2) {
- if (((EventObject)var2).getSource() instanceof BaseDeclaration) {
- this.updateRow((BaseDeclaration)((EventObject)var2).getSource());
- }
-
- }
-
- public final SchemaDoc getSchemaDoc() {
- return this.doc;
- }
-
- public void flavorChanged(SchemaDocEvent var1) {
- }
-
- public void declarationRemoved(SchemaDocEvent var1) {
- BaseDeclaration var2 = var1.getDeclaration();
- if (this.declBaseClass.isInstance(var2) || this.declClass.isInstance(var2)) {
- int var3 = this.getRowForDecl(var2);
- Debug.assert(var3 >= 0, "row not found in declarationRemoved");
- this.declarations.removeElementAt(var3);
- ((AbstractTableModel)this).fireTableRowsDeleted(var3, var3);
- }
- }
-
- public void declarationInserted(SchemaDocEvent var1) {
- BaseDeclaration var2 = var1.getPosition();
- BaseDeclaration var3 = var1.getDeclaration();
- if (this.declBaseClass.isInstance(var3) || this.declClass.isInstance(var3)) {
- int var4 = this.getNewRow();
- if (var2 != null) {
- var4 = this.getRowForDecl(var2);
- if (var4 < 0) {
- var4 = this.getNewRow();
- }
- }
-
- this.declarations.insertElementAt(var3, var4);
- ((AbstractTableModel)this).fireTableRowsInserted(var4, var4);
- }
- }
-
- public void updateFromSchema(BaseDeclaration var1) {
- this.declarations.removeAllElements();
- Enumeration var2 = this.getDeclarations();
-
- while(var2.hasMoreElements()) {
- this.declarations.addElement(var2.nextElement());
- }
-
- }
-
- protected Enumeration getDeclarations() {
- return this.doc.getDeclarations(this.declClass);
- }
-
- public void sort(int var1, boolean var2) {
- 1 var3 = new 1(var1, this);
- StringUtilities.sortStrings(this.declarations, var3, var2);
- ((AbstractTableModel)this).fireTableDataChanged();
- }
-
- public void updateRow(BaseDeclaration var1) {
- if (this.declBaseClass.isInstance(var1) || this.declClass.isInstance(var1)) {
- int var2 = this.getRowForDecl(var1);
- if (var2 >= 0) {
- ((AbstractTableModel)this).fireTableRowsUpdated(var2, var2);
- }
-
- }
- }
-
- public int getRowForDecl(BaseDeclaration var1) throws IllegalArgumentException {
- for(int var2 = 0; var2 < this.declarations.size(); ++var2) {
- if (this.getDeclaration(var2) == var1) {
- return var2;
- }
- }
-
- return -1;
- }
-
- public int getRowByDeclName(String var1) throws IllegalArgumentException {
- for(int var2 = 0; var2 < this.declarations.size(); ++var2) {
- if (this.getDeclaration(var2).getName().equals(var1)) {
- return var2;
- }
- }
-
- return -1;
- }
-
- public final boolean isNewRow(int var1) {
- return var1 >= this.getNewRow();
- }
-
- public final BaseDeclaration getDeclaration(int var1) {
- return !this.isNewRow(var1) && var1 >= 0 ? (BaseDeclaration)this.declarations.elementAt(var1) : null;
- }
-
- public final int getRowCount() {
- return this.declarations.size() + 1;
- }
-
- public final int getNewRow() {
- return this.declarations.size();
- }
-
- protected BaseDeclaration getDeclaration(int var1, int var2, String var3) {
- return null;
- }
-
- public boolean isCellEditable(int var1, int var2) {
- if (var2 >= 0 && var1 >= 0 && var2 != 0 && var2 != 1) {
- if (this.isNewRow(var1)) {
- return var2 == 2;
- } else {
- return this.getSchemaDoc().isEditable(this.getDeclaration(var1));
- }
- } else {
- return false;
- }
- }
-
- ParserException validateName(String var1, Class var2, BaseDeclaration var3, boolean var4) {
- if (var1.length() == 0) {
- return new ParserException(202, " ");
- } else if (var4 && this.getSchemaDoc().getSchema().getFlavor().isSupported(Class.forName("com.extensibility.xml.NamespaceDeclaration")) && var1.indexOf(":") != -1) {
- return new ParserException(999, "Qualified names are not allowed here.");
- } else if (!DTDParser.isNameStartChar(var1.charAt(0))) {
- return new ParserException(203, var1.charAt(0));
- } else {
- for(int var5 = 1; var5 < var1.length(); ++var5) {
- var1.charAt(var5);
- if (!DTDParser.isNameChar(var1.charAt(var5))) {
- return new ParserException(DTDParser.isWhiteChar(var1.charAt(var5)) ? 205 : 204, var1.charAt(var5));
- }
- }
-
- if (var2 != null) {
- BaseDeclaration var6 = this.getNamedDeclaration(var1);
- if (var6 != null && var6 != var3) {
- return new ParserException(206, var1);
- }
- }
-
- return null;
- }
- }
-
- ParserException validateCell(String var1, int var2, int var3) {
- return null;
- }
-
- public BaseDeclaration getNamedDeclaration(String var1) {
- return this.doc.getNamedDeclaration(var1, this.declClass);
- }
-
- Class getDeclBaseClass() {
- return this.declBaseClass;
- }
-
- public String getUniqueDeclName(String var1) {
- if (var1 == null) {
- var1 = UI.getString("decl.unnamed");
- }
-
- if (this.getNamedDeclaration(var1) == null) {
- return var1;
- } else {
- int var2 = 1;
-
- String var3;
- do {
- var3 = String.valueOf(String.valueOf(var1).concat(String.valueOf("."))).concat(String.valueOf(var2++));
- } while(this.getNamedDeclaration(var3) != null);
-
- return var3;
- }
- }
-
- String getIndExternalURI(int var1) {
- URI var2 = this.getDeclaration(var1).getURI();
- return var2.equals(this.getSchemaDoc().getURI()) ? "" : var2.getShortName();
- }
-
- public void removeDeclaration(BaseDeclaration var1) {
- this.doc.removeDeclaration(var1);
- }
-
- public BaseDeclaration createDeclaration(String var1) {
- Debug.assertAbstract();
- return null;
- }
-
- protected Transferable getTransferableData(ListSelectionModel var1) {
- return new ClipData(this, var1);
- }
-
- protected DataFlavor getRowFlavor() {
- return this.rowDataFlavor;
- }
-
- public void setValueAt(Object var1, int var2, int var3) {
- Debug.assertAbstract();
- }
-
- public int getColumnCount() {
- Debug.assertAbstract();
- return 0;
- }
-
- public String getColumnName(int var1) {
- switch (var1) {
- case 0:
- case 1:
- return "";
- default:
- Debug.assert(false, String.valueOf("unknown column: ").concat(String.valueOf(var1)));
- return null;
- }
- }
-
- public Class getColumnClass(int var1) {
- switch (var1) {
- case 0:
- case 1:
- return Class.forName("java.lang.String");
- default:
- Debug.assert(false, String.valueOf("unknown column: ").concat(String.valueOf(var1)));
- return null;
- }
- }
-
- public Object getValueAt(int var1, int var2) {
- switch (var2) {
- case 0:
- return this.isNewRow(var1) ? "" : this.getDeclaration(var1).getFirstError();
- case 1:
- return this.isNewRow(var1) ? "" : this.getIndExternalURI(var1);
- default:
- return null;
- }
- }
-
- public String getToolTipText(int var1, int var2) {
- String var3 = null;
- switch (var2) {
- case 0:
- if (!this.isNewRow(var1)) {
- var3 = this.getDeclaration(var1).getFirstError();
- }
- break;
- case 1:
- if (!this.isNewRow(var1)) {
- var3 = this.getIndExternalURI(var1);
- }
- }
-
- return var3 == null ? "" : var3;
- }
- }
-