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

  1. package com.extensibility.xa;
  2.  
  3. import com.extensibility.app.BaseAction;
  4. import com.extensibility.app.UI;
  5. import com.extensibility.rock.Platform;
  6. import com.extensibility.rock.RBevelBorder;
  7. import com.extensibility.rock.RButton;
  8. import com.extensibility.rock.RTabbedPane;
  9. import com.extensibility.rock.ScrollPop;
  10. import com.extensibility.util.Debug;
  11. import com.extensibility.util.StringUtilities;
  12. import com.extensibility.xml.AttributeDeclaration;
  13. import com.extensibility.xml.BaseDeclaration;
  14. import com.extensibility.xml.ExportInterface;
  15. import com.extensibility.xml.ExternalSubset;
  16. import com.extensibility.xml.ProcessingInstruction;
  17. import com.extensibility.xml.SchemaFlavorIntf;
  18. import com.extensibility.xml.SchemaIntf;
  19. import com.extensibility.xml.SchemaUtilities;
  20. import com.extensibility.xml.URI;
  21. import java.awt.Cursor;
  22. import java.awt.Font;
  23. import java.awt.event.ActionEvent;
  24. import java.awt.event.MouseEvent;
  25. import java.util.Vector;
  26. import javax.swing.AbstractButton;
  27. import javax.swing.JCheckBox;
  28. import javax.swing.JCheckBoxMenuItem;
  29. import javax.swing.JComponent;
  30. import javax.swing.JLabel;
  31. import javax.swing.JPopupMenu;
  32. import javax.swing.JScrollPane;
  33. import javax.swing.JTabbedPane;
  34. import javax.swing.JTextArea;
  35. import javax.swing.text.DefaultEditorKit;
  36.  
  37. public class CommentPane extends CompositePane {
  38.    boolean semaphoreDontUpdate = false;
  39.    static final String TWIXT_LINE = "--";
  40.    static final String TWIXT = String.valueOf(String.valueOf(System.getProperty("line.separator")).concat(String.valueOf("--"))).concat(String.valueOf(System.getProperty("line.separator")));
  41.    public static final int SHOW_DECL = 1;
  42.    public static final int SHOW_DOC = 2;
  43.    static final int TAB_ALL = 0;
  44.    static final int TAB_UNKIND = 1;
  45.    static final int TAB_USAGE = 2;
  46.    static final int TAB_CHANGES = 3;
  47.    static final int TAB_PREVIEW = 4;
  48.    CommentText unkindText;
  49.    JScrollPane unkindScroll;
  50.    JLabel unkindTitle;
  51.    CommentText changesText;
  52.    JScrollPane changesScroll;
  53.    JLabel changesTitle;
  54.    CommentText usageText;
  55.    JScrollPane usageScroll;
  56.    JLabel usageTitle;
  57.    CommentText allText;
  58.    JScrollPane allScroll;
  59.    JLabel allTitle;
  60.    CommentText previewText;
  61.    JScrollPane previewScroll;
  62.    JLabel previewTitle;
  63.    JCheckBox changesBox;
  64.    JTabbedPane tabPane;
  65.    int previousTab = 0;
  66.    int showMode = 1;
  67.    ExportInterface previewer;
  68.    String previewFlavor;
  69.    DocBridge activeDoc;
  70.    DeclBridge activeDecl;
  71.    Displayable activeItem;
  72.    PreviewButton previewBtn;
  73.    BaseAction toggleDeclDoc;
  74.    BaseAction showDeclAction;
  75.    BaseAction showDocAction;
  76.    SchemaDocListener docListener;
  77.  
  78.    public CommentPane(SchemaDoc var1) {
  79.       super(var1);
  80.       this.previewFlavor = SchemaIntf.DTD_FLAVOR_NAME;
  81.       this.activeDoc = new DocBridge(this);
  82.       this.activeDecl = new DeclBridge(this);
  83.       this.activeItem = this.activeDecl;
  84.       this.toggleDeclDoc = new 7(this, "comment.show.doc");
  85.       this.showDeclAction = new 8(this, "comment.show.decl");
  86.       this.showDocAction = new 9(this, "comment.show.doc");
  87.       this.docListener = new 10(this);
  88.       this.allText = new CommentText(false);
  89.       this.allScroll = new JScrollPane(this.allText);
  90.       this.allText.setEditable(false);
  91.       this.allTitle = new JLabel();
  92.       CompositePane.setHeader(this.allScroll, this.allTitle, new RButton(this.toggleDeclDoc));
  93.       this.unkindText = new CommentText(((CompositePane)this).getSchemaDoc().isReadOnly());
  94.       this.unkindScroll = new JScrollPane(this.unkindText);
  95.       this.unkindTitle = new JLabel();
  96.       CompositePane.setHeader(this.unkindScroll, this.unkindTitle, new RButton(this.toggleDeclDoc));
  97.       this.unkindText.getDocument().addDocumentListener(new 1(this));
  98.       this.changesText = new CommentText(((CompositePane)this).getSchemaDoc().isReadOnly());
  99.       this.changesScroll = new JScrollPane(this.changesText);
  100.       this.changesText.setEditable(false);
  101.       this.changesBox = new JCheckBox(UI.getString("comment.log.changes"));
  102.       this.changesBox.addActionListener(new 2(this));
  103.       this.changesBox.setSelected(((CompositePane)this).getSchemaDoc().getChangeLogging());
  104.       this.changesTitle = new JLabel();
  105.       CompositePane.setHeader(this.changesScroll, this.changesTitle, this.changesBox);
  106.       this.usageText = new CommentText(((CompositePane)this).getSchemaDoc().isReadOnly());
  107.       this.usageScroll = new JScrollPane(this.usageText);
  108.       this.usageText.getDocument().addDocumentListener(new 3(this));
  109.       this.usageTitle = new JLabel();
  110.       CompositePane.setHeader(this.usageScroll, this.usageTitle, new RButton(this.toggleDeclDoc));
  111.       this.previewText = new CommentText(false);
  112.       this.previewScroll = new JScrollPane(this.previewText);
  113.       this.previewText.setEditable(false);
  114.       this.previewText.addMouseListener(new 4(this));
  115.       this.previewTitle = new JLabel();
  116.       CompositePane.setHeader(this.previewScroll, this.previewTitle, this.getPreviewBtn());
  117.       this.tabPane = new RTabbedPane();
  118.       Font var2 = UI.getAppFont();
  119.       if (var2 != null) {
  120.          this.tabPane.setFont(var2);
  121.       }
  122.  
  123.       this.tabPane.setBorder(new RBevelBorder(1));
  124.       this.tabPane.addTab(UI.getString("tab.all.label"), this.allScroll);
  125.       if (super.doc.getSchema().getFlavorName().equals(SchemaIntf.SOX2_FLAVOR_NAME)) {
  126.          this.tabPane.addTab(UI.getString("tab.author.label.sox"), this.unkindScroll);
  127.          this.tabPane.addTab(UI.getString("tab.usage.label.sox"), this.usageScroll);
  128.       } else {
  129.          this.tabPane.addTab(UI.getString("tab.author.label"), this.unkindScroll);
  130.          this.tabPane.addTab(UI.getString("tab.usage.label"), this.usageScroll);
  131.       }
  132.  
  133.       this.tabPane.addTab(UI.getString("tab.changes.label"), this.changesScroll);
  134.       this.tabPane.addTab(UI.getString("tab.preview.label"), this.previewScroll);
  135.       this.tabPane.setTabPlacement(3);
  136.       this.tabPane.addChangeListener(new 5(this));
  137.       this.enableTabs();
  138.       String var3 = this.getSchema().getFlavorName();
  139.       this.setPreviewer(var3, SchemaUtilities.getWriter(this.getSchema(), var3));
  140.       ((CompositePane)this).getSchemaDoc().addDocumentListener(this.docListener);
  141.    }
  142.  
  143.    public void uriUpdateNotify(URI var1, URI var2) {
  144.       if (var1.equals(this.activeDoc.getURI())) {
  145.          this.activeDoc.setURI(var2);
  146.          this.setTitle();
  147.       }
  148.  
  149.    }
  150.  
  151.    public boolean addRequest() {
  152.       ((CompositePane)this).declarationFocused(((CompositePane)this).getSchemaDoc().getFocusedDecl());
  153.       return true;
  154.    }
  155.  
  156.    PreviewButton getPreviewBtn() {
  157.       if (this.previewBtn == null) {
  158.          this.previewBtn = new PreviewButton(this);
  159.       }
  160.  
  161.       return this.previewBtn;
  162.    }
  163.  
  164.    void setPreviewer(String var1, ExportInterface var2) {
  165.       this.previewer = var2;
  166.       this.previewFlavor = var1;
  167.       BaseDeclaration var3 = ((CompositePane)this).getSchemaDoc().getFocusedDecl();
  168.       ((CompositePane)this).declarationFocused((BaseDeclaration)null);
  169.       ((CompositePane)this).declarationFocused(var3);
  170.       ((CompositePane)this).getSchemaDoc().setFocusedDecl(var3);
  171.       this.previewBtn.updateText();
  172.    }
  173.  
  174.    protected boolean hasDeclTable() {
  175.       return false;
  176.    }
  177.  
  178.    protected ScrollPop createPreviewPop() {
  179.       ScrollPop var1 = new ScrollPop();
  180.       JCheckBoxMenuItem var2 = var1.addAsCheckBox(new PreviewChoiceAction(this, SchemaIntf.DTD_FLAVOR_NAME));
  181.       ((AbstractButton)var2).setSelected(SchemaIntf.DTD_FLAVOR_NAME.equals(this.previewFlavor));
  182.       var2 = var1.addAsCheckBox(new PreviewChoiceAction(this, SchemaIntf.XDR_FLAVOR_NAME));
  183.       ((AbstractButton)var2).setSelected(SchemaIntf.XDR_FLAVOR_NAME.equals(this.previewFlavor));
  184.       var2 = var1.addAsCheckBox(new PreviewChoiceAction(this, SchemaIntf.BIZ_FLAVOR_NAME));
  185.       ((AbstractButton)var2).setSelected(SchemaIntf.BIZ_FLAVOR_NAME.equals(this.previewFlavor));
  186.       var2 = var1.addAsCheckBox(new PreviewChoiceAction(this, SchemaIntf.SOX2_FLAVOR_NAME));
  187.       ((AbstractButton)var2).setSelected(SchemaIntf.SOX2_FLAVOR_NAME.equals(this.previewFlavor));
  188.       var2 = var1.addAsCheckBox(new PreviewChoiceAction(this, "xsd"));
  189.       ((AbstractButton)var2).setSelected("xsd".equals(this.previewFlavor));
  190.       var2 = var1.addAsCheckBox(new PreviewChoiceAction(this, SchemaIntf.OSC_FLAVOR_NAME));
  191.       ((AbstractButton)var2).setSelected(SchemaIntf.OSC_FLAVOR_NAME.equals(this.previewFlavor));
  192.       var1.addSeparator();
  193.       var2 = var1.addAsCheckBox(new PreviewChoiceAction(this, "xml"));
  194.       ((AbstractButton)var2).setSelected((new String("xml")).equals(this.previewFlavor));
  195.       var1.addSeparator();
  196.       var2 = var1.addAsCheckBox(new PreviewChoiceAction(this, SchemaIntf.DCD_FLAVOR_NAME));
  197.       ((AbstractButton)var2).setSelected(SchemaIntf.DCD_FLAVOR_NAME.equals(this.previewFlavor));
  198.       var2 = var1.addAsCheckBox(new PreviewChoiceAction(this, SchemaIntf.DDML_FLAVOR_NAME));
  199.       ((AbstractButton)var2).setSelected(SchemaIntf.DDML_FLAVOR_NAME.equals(this.previewFlavor));
  200.       var2 = var1.addAsCheckBox(new PreviewChoiceAction(this, SchemaIntf.RELAX_FLAVOR_NAME));
  201.       ((AbstractButton)var2).setSelected(SchemaIntf.RELAX_FLAVOR_NAME.equals(this.previewFlavor));
  202.       return var1;
  203.    }
  204.  
  205.    public void setTitle() {
  206.       String var1 = this.activeItem.getName();
  207.       this.allTitle.setText(var1);
  208.       this.unkindTitle.setText(var1);
  209.       this.usageTitle.setText(var1);
  210.       this.changesTitle.setText(var1);
  211.       this.previewTitle.setText(var1);
  212.    }
  213.  
  214.    public void setShowMode(int var1) {
  215.       this.checkShowMode(var1);
  216.       if (this.showMode != var1) {
  217.          this.showMode = var1;
  218.          if (var1 == 1) {
  219.             this.activeItem = this.activeDecl;
  220.             this.tabPane.setTitleAt(3, UI.getString("tab.changes.label"));
  221.             this.changesBox.setText(UI.getString("comment.log.changes"));
  222.             this.changesBox.setSelected(((CompositePane)this).getSchemaDoc().getChangeLogging());
  223.             this.tabPane.addTab(UI.getString("tab.preview.label"), this.previewScroll);
  224.             this.toggleDeclDoc.setName(UI.getString("comment.show.doc"));
  225.          } else {
  226.             this.activeItem = this.activeDoc;
  227.             if (this.tabPane.getSelectedIndex() == 4) {
  228.                this.tabPane.setSelectedIndex(0);
  229.             }
  230.  
  231.             this.tabPane.setTitleAt(3, UI.getString("tab.history.label"));
  232.             this.changesBox.setText(UI.getString("comment.prompt.for.version"));
  233.             this.changesBox.setSelected(((CompositePane)this).getSchemaDoc().getPromptForVersionInfo());
  234.             this.tabPane.removeTabAt(4);
  235.             this.toggleDeclDoc.setName(UI.getString("comment.show.decl"));
  236.          }
  237.  
  238.          this.enableTabs();
  239.          this.updateTexts(true);
  240.       }
  241.    }
  242.  
  243.    protected void checkShowMode(int var1) {
  244.       Debug.assert(var1 == 1 || var1 == 2);
  245.    }
  246.  
  247.    protected int getShowMode() {
  248.       return this.showMode;
  249.    }
  250.  
  251.    SchemaIntf getSchema() {
  252.       return ((CompositePane)this).getSchemaDoc().getSchema();
  253.    }
  254.  
  255.    protected void previewPop(MouseEvent var1) {
  256.       if (var1.isPopupTrigger()) {
  257.          ScrollPop var2 = this.createPreviewPop();
  258.          ((JPopupMenu)var2).show(this.getComponent(), var1.getX(), var1.getY());
  259.       }
  260.  
  261.    }
  262.  
  263.    public void cut() {
  264.       this.activeItem.touch(this.getActiveDecl());
  265.       (new DefaultEditorKit.CutAction()).actionPerformed((ActionEvent)null);
  266.    }
  267.  
  268.    public void copy() {
  269.       (new DefaultEditorKit.CopyAction()).actionPerformed((ActionEvent)null);
  270.    }
  271.  
  272.    public void paste() {
  273.       this.activeItem.touch(this.getActiveDecl());
  274.       (new DefaultEditorKit.PasteAction()).actionPerformed((ActionEvent)null);
  275.    }
  276.  
  277.    public void clear() {
  278.       this.activeItem.touch(this.getActiveDecl());
  279.       this.getActiveTextArea().replaceSelection("");
  280.    }
  281.  
  282.    protected void clearAllText() {
  283.       this.allText.setText("");
  284.       this.unkindText.setText("");
  285.       this.usageText.setText("");
  286.       this.changesText.setText("");
  287.       this.previewText.setText("");
  288.    }
  289.  
  290.    protected void updateOneText(int var1) {
  291.       switch (var1) {
  292.          case 0:
  293.             String var2 = Platform.mapNewlinesForTextArea(this.activeItem.getAll());
  294.             this.allText.setText(var2);
  295.             this.allText.select(0, 0);
  296.             break;
  297.          case 1:
  298.             this.unkindText.setText(Platform.mapNewlinesForTextArea(this.activeItem.getUnkind()));
  299.             this.unkindText.select(0, 0);
  300.             this.unkindText.setEditable(this.activeItem.isEditable());
  301.             this.unkindText.setCursor(this.activeItem.isEditable() ? Cursor.getPredefinedCursor(2) : Cursor.getPredefinedCursor(0));
  302.             break;
  303.          case 2:
  304.             this.usageText.setText(Platform.mapNewlinesForTextArea(this.activeItem.getUsage()));
  305.             this.usageText.select(0, 0);
  306.             this.usageText.setEditable(this.activeItem.isEditable());
  307.             this.usageText.setCursor(this.activeItem.isEditable() ? Cursor.getPredefinedCursor(2) : Cursor.getPredefinedCursor(0));
  308.             break;
  309.          case 3:
  310.             this.changesText.setText(Platform.mapNewlinesForTextArea(this.activeItem.getChanges()));
  311.             this.changesText.select(0, 0);
  312.             break;
  313.          case 4:
  314.             this.previewText.setText(Platform.mapNewlinesForTextArea(this.activeItem.getPreview()));
  315.             this.previewText.select(0, 0);
  316.       }
  317.  
  318.    }
  319.  
  320.    public void updateTexts(boolean var1) {
  321.       if (!this.semaphoreDontUpdate) {
  322.          this.semaphoreDontUpdate = true;
  323.          this.setTitle();
  324.          if (var1) {
  325.             this.clearAllText();
  326.          }
  327.  
  328.          this.updateOneText(this.tabPane.getSelectedIndex());
  329.          this.semaphoreDontUpdate = false;
  330.       }
  331.    }
  332.  
  333.    public BaseDeclaration getActiveDecl() {
  334.       return this.getShowMode() == 1 ? this.activeDecl.getDecl() : null;
  335.    }
  336.  
  337.    protected void enableTabs() {
  338.       SchemaFlavorIntf var1 = ((CompositePane)this).getSchemaDoc().getSchema().getFlavor();
  339.       if (this.getShowMode() == 2) {
  340.          for(int var2 = 0; var2 < this.tabPane.getTabCount(); ++var2) {
  341.             this.tabPane.setEnabledAt(var2, true);
  342.          }
  343.  
  344.          if (var1.getFlavorName().equals("sox")) {
  345.             this.tabPane.setEnabledAt(2, false);
  346.          }
  347.       } else {
  348.          BaseDeclaration var4 = this.getActiveDecl();
  349.          if (var4 == null) {
  350.             this.previousTab = this.tabPane.getSelectedIndex();
  351.  
  352.             for(int var3 = 0; var3 < this.tabPane.getTabCount(); ++var3) {
  353.                this.tabPane.setEnabledAt(var3, false);
  354.             }
  355.          } else {
  356.             this.tabPane.setSelectedIndex(this.previousTab);
  357.  
  358.             for(int var5 = 0; var5 < this.tabPane.getTabCount(); ++var5) {
  359.                this.tabPane.setEnabledAt(var5, true);
  360.             }
  361.  
  362.             if (var1.getFlavorName().equals("sox")) {
  363.                if (var4 instanceof AttributeDeclaration) {
  364.                   this.tabPane.setEnabledAt(1, false);
  365.                } else if (var4 instanceof ProcessingInstruction) {
  366.                   this.tabPane.setEnabledAt(1, false);
  367.                   this.tabPane.setEnabledAt(2, false);
  368.                }
  369.             }
  370.          }
  371.       }
  372.  
  373.    }
  374.  
  375.    public void setActiveDecl(BaseDeclaration var1) {
  376.       if (var1 instanceof AggregateAttributeDecl) {
  377.          var1 = ((AggregateAttributeDecl)var1).getFirst();
  378.       }
  379.  
  380.       if (this.activeDecl.decl != var1) {
  381.          this.activeDecl.setDecl((BaseDeclaration)var1);
  382.          this.enableTabs();
  383.          URI var2 = null;
  384.          if (var1 instanceof ExternalSubset) {
  385.             var2 = ((ExternalSubset)var1).getSystemURI();
  386.          } else if (var1 != null) {
  387.             var2 = ((BaseDeclaration)var1).getURI();
  388.          }
  389.  
  390.          if (var2 == null) {
  391.             var2 = ((CompositePane)this).getSchemaDoc().getURI();
  392.          }
  393.  
  394.          boolean var3 = this.activeDoc.setURI(var2);
  395.          if (this.getShowMode() == 1) {
  396.             this.updateTexts(true);
  397.          } else if (this.getShowMode() == 2 && var3) {
  398.             this.updateTexts(true);
  399.          }
  400.  
  401.       }
  402.    }
  403.  
  404.    public void focusDeclaration(BaseDeclaration var1) {
  405.       this.setActiveDecl(var1);
  406.    }
  407.  
  408.    public JTextArea getActiveTextArea() {
  409.       JScrollPane var1 = (JScrollPane)this.tabPane.getSelectedComponent();
  410.       return (JTextArea)var1.getViewport().getView();
  411.    }
  412.  
  413.    public void updateComments(String var1, String var2) {
  414.       if (!this.semaphoreDontUpdate) {
  415.          this.activeItem.touch(this.getActiveDecl());
  416.          Vector var3 = StringUtilities.extractLine(var1, "--");
  417.          this.activeItem.setComments(var3, var2);
  418.       }
  419.    }
  420.  
  421.    public boolean find(String var1, boolean var2) {
  422.       String var3 = this.getActiveTextArea().getText();
  423.       int var4 = var3.indexOf(var1, var2 ? 0 : this.getActiveTextArea().getSelectionStart() + 1);
  424.       if (var4 >= 0) {
  425.          this.getActiveTextArea().select(var4, var4 + var1.length());
  426.          return true;
  427.       } else {
  428.          return var2 ? false : this.find(var1, true);
  429.       }
  430.    }
  431.  
  432.    public String getClassName() {
  433.       return "com.extensibility.xa.CommentPane";
  434.    }
  435.  
  436.    public JComponent getComponent() {
  437.       return this.tabPane;
  438.    }
  439.  
  440.    public String getSelectedText() {
  441.       return this.getActiveTextArea().getSelectedText();
  442.    }
  443.  
  444.    public boolean setSelectedText(String var1) {
  445.       if (!this.getActiveTextArea().isEditable()) {
  446.          return false;
  447.       } else {
  448.          this.getActiveTextArea().replaceSelection(var1);
  449.          return true;
  450.       }
  451.    }
  452. }
  453.