Subversion Repositories general

Rev

Rev 521 | Blame | Last modification | View Log | RSS feed

PK
šð. META-INF/þÊPK
šð.~ƒkk66META-INF/MANIFEST.MFManifest-Version: 1.0
Comment: view everything as text, best as default plugin
Transform-To-File: src/plugins/textEditorPlugin/TextEditorPluginTransf
 orm.xsl
Created-By: 1.4.0 (Sun Microsystems Inc.)
Description: ...(todo)
XMLEditor-Plugin-Name: TextEditor
Class-Path: 
Transform-Fro-File: src/plugins/textEditorPlugin/TextEditorPluginTrans
 formBack.xsl
Main-Class: src.plugins.textEditorPlugin.TextEditorPlugin

Name: src/plugins/textEditorPlugin
Specification-Version: 0.4 (05/07/03)
Specification-Title: plugin for XMLEditor
Implementation-Version: 0.1 (05/07/03)
Implementation-Title: src.plugins.textEditorPlugin
Implementation-Vendor: group5, software practice SS_2003, University B
 ielefeld, Germany
Specification-Vendor: group5, software practice SS_2003, University Bi
 elefeld, Germany

PK
&ƒð.9˜>?Ï%Ï%3src/plugins/textEditorPlugin/TextEditorPlugin.classÊþº¾-Þ-src/plugins/textEditorPlugin/TextEditorPluginjavax/swing/JPanelsrc/plugins/PluginInterfacejava/awt/event/ActionListenerjavax/swing/event/CaretListener     "javax/swing/event/DocumentListener
pluginNameLjava/lang/String;
ConstantValue
TextEditorguiInterfaceLsrc/gui/GuiInterface;ourEventListenerLsrc/control/OurEventListener;textAreaLjavax/swing/JTextArea;
scrollPaneLjavax/swing/JScrollPane;
syncButtonLjavax/swing/JButton;logInterfaceLsrc/gui/LogInterface;statusInterfaceLsrc/gui/StatusInterface;transformer!Ljavax/xml/transform/Transformer;changedNodeLorg/w3c/dom/Node;oldNode
oldContentmodifiedZ<init>()VCode()
+
       -javax/swing/JTextArea/
0+       2javax/swing/JScrollPane4(Ljava/awt/Component;)V(6
57       9javax/swing/JButton;synchronize=(Ljava/lang/String;)V(?
<@       B&'       Djava/lang/SystemFoutLjava/io/PrintStream;HI   GJ+I'm a new instance of the TextEditorPlugin!Ljava/io/PrintStreamNprintlnP?
OQLineNumberTableLocalVariableTablethis/Lsrc/plugins/textEditorPlugin/TextEditorPlugin;init(Lsrc/gui/GuiInterface;)V    Ysrc/gui/GuiInterface[getLogInterface()Lsrc/gui/LogInterface;]^\_      agetStatusInterface()Lsrc/gui/StatusInterface;cd\e  gjavax/swing/JComponenti
setVisible(Z)Vkl
jmjava/awt/BorderLayouto
p+java/awt/Containerr  setLayout(Ljava/awt/LayoutManager;)Vtu
svCenterxadd)(Ljava/awt/Component;Ljava/lang/Object;)Vz{
s|North~javax/swing/AbstractButton€addActionListener"(Ljava/awt/event/ActionListener;)V‚ƒ
„javax/swing/text/JTextComponent†addCaretListener$(Ljavax/swing/event/CaretListener;)Vˆ‰
‡ŠTextEditorPlugin initializedŒstart+(Lorg/w3c/dom/Node;Lorg/w3c/dom/Document;)V$#    org/w3c/dom/Node’getNodeType()S”•“–!javax/xml/transform/dom/DOMSource˜(Lorg/w3c/dom/Node;)V(š
™›java/io/StringWriter
ž+'javax/xml/transform/stream/StreamResult (Ljava/io/Writer;)V(¢
¡£&javax/xml/transform/TransformerFactory¥newInstance*()Ljavax/xml/transform/TransformerFactory;§¨
¦©newTransformer#()Ljavax/xml/transform/Transformer;«¬
¦­ !     ¯java/lang/StringBuffer±TransformerFactory error: ³
²@java/lang/Throwable¶
getMessage()Ljava/lang/String;¸¹
·ºappend,(Ljava/lang/String;)Ljava/lang/StringBuffer;¼½
²¾toStringÀ¹
²Ásrc/gui/LogInterfaceÃlog(ILjava/lang/String;)VÅÆÄÇomit-xml-declarationÉyesËjavax/xml/transform/TransformerÍsetOutputProperty'(Ljava/lang/String;Ljava/lang/String;)VÏÐ
ÎÑindentÓ){http://xml.apache.org/xslt}indent-amountÕ4×methodÙxmlÛ    transform;(Ljavax/xml/transform/Source;Ljavax/xml/transform/Result;)VÝÞ
ÎßTransformer error: á      getBuffer()Ljava/lang/StringBuffer;ãä
žå%     çsetTexté?
‡êgetNodeValue칓ísetPluginPanel(Ljavax/swing/JPanel;)Vïð\ñgetDocument()Ljavax/swing/text/Document;óô
‡õjavax/swing/text/Document÷addDocumentListener'(Ljavax/swing/event/DocumentListener;)Vùúøû5javax/xml/transform/TransformerConfigurationExceptioný(javax/xml/transform/TransformerExceptionÿnodeenvironmentLorg/w3c/dom/Document;source#Ljavax/xml/transform/dom/DOMSource;stringWriterLjava/io/StringWriter;stream)Ljavax/xml/transform/stream/StreamResult;transformerFactory(Ljavax/xml/transform/TransformerFactory;tce7Ljavax/xml/transform/TransformerConfigurationException;te*Ljavax/xml/transform/TransformerException;stringstopsetOurEventListener!(Lsrc/control/OurEventListener;)V     newListenerforceStatusReportgetText¹
‡!src/parser/ValidationErrorHandler
+setLogInterface(Lsrc/gui/LogInterface;)V
 setStatusInterface(Lsrc/gui/StatusInterface;)V"#
$(javax/xml/parsers/DocumentBuilderFactory&,()Ljavax/xml/parsers/DocumentBuilderFactory;§(
')newDocumentBuilder%()Ljavax/xml/parsers/DocumentBuilder;+,
'-!javax/xml/parsers/DocumentBuilder/setErrorHandler(Lorg/xml/sax/ErrorHandler;)V12
03java/io/StringReader5
6@org/xml/sax/InputSource8(Ljava/io/Reader;)V(:
9;parse1(Lorg/xml/sax/InputSource;)Lorg/w3c/dom/Document;=>
0?
getFirstChild()Lorg/w3c/dom/Node;AB“C"#    EchangedNode = G,(Ljava/lang/Object;)Ljava/lang/StringBuffer;¼I
²J"org/apache/xerces/dom/DocumentImplL
M+NOTVALIDO&org/apache/xerces/dom/CoreDocumentImplQcreateProcessingInstructionI(Ljava/lang/String;Ljava/lang/String;)Lorg/w3c/dom/ProcessingInstruction;ST
RUNode Type = W(I)Ljava/lang/StringBuffer;¼Y
²Z cloneNode(Z)Lorg/w3c/dom/Node;\]“^setNodeValue`?“aParser configuration error: c
IO error: eIllegal argument error: gSAX parser error: iorg/xml/sax/SAXExceptionk
lºReturn this node:nfirePluginChangedElement'(Lorg/w3c/dom/Node;Lorg/w3c/dom/Node;)Vpq
r.javax/xml/parsers/ParserConfigurationExceptiontjava/io/IOExceptionv"java/lang/IllegalArgumentExceptionxvalidcontenterrorHandler#Lsrc/parser/ValidationErrorHandler;documentBuilderFactory*Ljavax/xml/parsers/DocumentBuilderFactory;documentBuilder#Ljavax/xml/parsers/DocumentBuilder;stringReaderLjava/io/StringReader;inputSourceLorg/xml/sax/InputSource;doc$Lorg/apache/xerces/dom/DocumentImpl;pce0Ljavax/xml/parsers/ParserConfigurationException;ioeLjava/io/IOException;iae$Ljava/lang/IllegalArgumentException;saxeLorg/xml/sax/SAXException;src/control/OurEventjava/lang/Object’([Ljava/lang/Object;)V(”
‘•src/control/OurEventListener—
firedOurEvent(Lsrc/control/OurEvent;)V™š˜›eLsrc/control/OurEvent;actionPerformed(Ljava/awt/event/ActionEvent;)Vjava/util/EventObject¡ getSource()Ljava/lang/Object;£¤
¢¥)
§aeLjava/awt/event/ActionEvent;caretUpdate!(Ljavax/swing/event/CaretEvent;)Vjavax/swing/event/CaretEvent­getDot()I¯°
®±getLineOfOffset(I)I³´
0µgetLineStartOffset·´
0¸java/awt/Pointº(II)V(¼
»½src/gui/StatusInterface¿setPoint(Ljava/awt/Point;)VÁÂÀÃBad cursor location: Å%javax/swing/text/BadLocationExceptionÇceLjavax/swing/event/CaretEvent;dotIlinecolumnbadLEx'Ljavax/swing/text/BadLocationException;
changedUpdate$(Ljavax/swing/event/DocumentEvent;)Vde!Ljavax/swing/event/DocumentEvent;insertUpdatesetModifiedÖlÀ×removeUpdate
isModified()Z
SourceFileTextEditorPlugin.java!


 !"#$#%&'
()*…?*·,*µ.*»0Y·1µ3*»5Y*´3·8µ:*»<Y>·AµC*µE²KM¶R±S"M>
BC$D1K6N>OT?UVWX*²V*+µZ*+¹`µb*+¹fµh*¶n*»pY·q¶w**´:y¶}**´C¶}*´C*¶…*´3*¶‹²K¶R±S.YZ[\])^3_=`EaMbUcTVUVVŽ*ü*+µ‘+¹— Æ»™Y+·œN»žY·Ÿ:»¡Y·¤:¸ª:*¶®µ°§#:*´b»²Y´·µ¶»¶¿¶Â¹È*´°Ê̶Ò*´°Ô̶Ò*´°ÖضÒ*´°ÚܶÒ*´°-¶à§#:*´b»²Yâ·µ¶»¶¿¶Â¹È¶æ¶Â:*µè*´3¶ë§*´3+¹î¶ë*´Z*¹ò*´3¶ö*¹ü*¶n±,==þ‰––Szoqrs!t,w1x=|?}D}M~U}]€hs‚~ƒ‰…–‡˜ˆˆ¦‰®ˆ¶‹ÀŒÆ¶Òºß¿éÀöÁûÂTf
üUVü#üº!±,¦ 1
?
˜À)*4*¶n±S
ËÌTUV*>*+µ±S
ÔÕTUV)*2´<*´3¶M»Y·N-*´b¶!-*´h¶%¸*:¶.:-¶4™E»6Y,·7:»9Y·<:*¶@¹DµF²K»²YH·µ*´F¶K¶Â¶R§*´‘¹—Ÿ*´‘¹— &*´3¶M»MY·N:*P,¶VµF<§Ô²K»²YX·µ*´‘¹—¶[¶Â¶R**´‘¹_µF*´F*´3¶¹b<§’:*´b»²Yd·µ¶»¶¿¶Â¹È§n:*´b»²Yf·µ¶»¶¿¶Â¹È§J:*´b»²Yh·µ¶»¶¿¶Â¹È§&:*´b»²Yj·µ¶m¶¿¶Â¹È<™þ˜²K»²Yo·µ*´F¶K¶Â¶R**´‘*´F·s±"úúu"úw"úBy"úflSÂ0àá
âãä"ç'è.é4ë8ìBíMï]ðzô•õö¦÷³ø¸û×üåýõþúü
 %/7BDIS[fhmw‡‰Šå§³ T„
´UV²z'
ª{¢|}'Ó~.Ì€B8‚ƒM-„…¦†‡üˆ‰ Š‹DŒh!Žpq*t$»‘Y½“Y+SY,SYS·–N*´-¹œ±S$%#&T*$UV$$#$"#žŸ *L+¶¦*´C¦*¶¨±S*+-TUV©ª«¬*ÜT+¶²=*´3¶¶>*´3¶¹d6*´h»»Y``·¾¹Ä§"N*´b»²YÆ·µ-¶»¶¿¶Â¹È±44ÈS*
02344657:7D8K7S:T>TUVTÉÊOËÌ&ÍÌÎÌ5ÏÐÑÒ*5±S@TUVÓÔÕÒ*L*µE*´h¹Ø±SFGHTUVÓÔÙÒ*L*µE*´h¹Ø±SNOPTUVÓÔÚÛ*/*´E¬SSTUVÜÝPK
ìzð.×vÓoe+e+2src/plugins/textEditorPlugin/TextEditorPlugin.java/* 
 * This file contains the TextEditorPlugin class.
 * 
 * Coded by: Group 5, software practice summer 2003
 * University of Bielefeld, Germany
 * 
 * @version $Revision: 1.29 $
 *
 * Last modification: $Date: 2003/07/16 13:23:24 $
 * $Id: TextEditorPlugin.java,v 1.29 2003/07/16 13:23:24 cstollen Exp $
 */

package src.plugins.textEditorPlugin;

import java.awt.BorderLayout;
import java.awt.event.*;

import java.io.StringReader;

import javax.swing.JButton;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.event.*;
import javax.swing.text.BadLocationException;

/*import javax.swing.text.Style;
import javax.swing.text.StyleContext;
import javax.swing.text.StyleConstants;
import javax.swing.text.BadLocationException;*/

import org.w3c.dom.Document;
import org.w3c.dom.Node;

import org.xml.sax.InputSource;

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import src.control.OurEvent;
import src.control.OurEventListener;
import src.gui.*;
import src.plugins.PluginInterface;

/** 
 * The Text Editor Plugin is used for textual XML node editing
 * 
 * @author Christian Stollenwerk
 */
public class TextEditorPlugin extends JPanel
                                                          implements PluginInterface, ActionListener, CaretListener, DocumentListener {
                                                                
        //added 16.07.03 Sascha W. cause method "firedOurEvent" has changed
        /** Name of the plugin, used in method <code>firePluginChangedElement</code> */
        final private String pluginName = "TextEditor";
        
        private GuiInterface guiInterface;
        private OurEventListener ourEventListener;
        private JTextArea textArea = new JTextArea();
        private JScrollPane scrollPane = new JScrollPane(textArea);
        private JButton syncButton = new JButton("synchronize");
        private LogInterface logInterface;
        private StatusInterface statusInterface;
        private Transformer transformer;
        private Node changedNode;
        private Node oldNode;
        private String oldContent;
        private boolean modified = false;

        public TextEditorPlugin() {
                System.out.println("I'm a new instance of the TextEditorPlugin!");
        }
        

        /** 
         * Initializes the Text Editor Plugin, but does not show it
         * 
         * @see src.gui.PluginInterface#init(src.gui.GuiInterface)
         */
        public void init(GuiInterface guiInterface) {
                // connects the Plugin to the GUI
                this.guiInterface = guiInterface;
                logInterface = guiInterface.getLogInterface();
                statusInterface = guiInterface.getStatusInterface();
                setVisible(false);
                setLayout(new BorderLayout());
                add(scrollPane, BorderLayout.CENTER);
                add(syncButton, BorderLayout.NORTH);
                syncButton.addActionListener(this);
                textArea.addCaretListener(this);
                System.out.println("TextEditorPlugin initialized");
        }


        /** 
         * Starts the Text Editor Plugin if a registered node is choosen
         * 
         * @param element: The selected node from the XML document, read-only.
         * @param environment: The whole XML document, read-only.
         * 
         * @see src.gui.PluginInterface#start(org.w3c.dom.Element, org.w3c.dom.Document)
         */
        public void start(final Node node, final Document environment) {
                oldNode = node;
                // casts the node into a DOMSource for transforming
                if(node.getNodeType() == org.w3c.dom.Node.ELEMENT_NODE) {
                        DOMSource source = new DOMSource(node);
                        java.io.StringWriter stringWriter = new java.io.StringWriter();
                        StreamResult stream = new StreamResult(stringWriter);
                        try {
                                /* Create a TransformerFactory and a new Transformer. */
                                TransformerFactory transformerFactory = TransformerFactory.newInstance();
                                transformer = transformerFactory.newTransformer();
                        }
                
                        /* Catch and log exceptions thrown by the TransformerFactory.*/
                        catch (TransformerConfigurationException tce) {
                                logInterface.log(LogInterface.TYPE_ERROR, "TransformerFactory error: "
                                + tce.getMessage());
                        }
                        transformer.setOutputProperty(javax.xml.transform.OutputKeys.OMIT_XML_DECLARATION, "yes");
                        transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes");
                        transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
                        transformer.setOutputProperty(javax.xml.transform.OutputKeys.METHOD, "xml");
                        try {
                                transformer.transform(source, stream);
                        }
                        catch (TransformerException te){
                                logInterface.log(LogInterface.TYPE_ERROR, "Transformer error: "
                                + te.getMessage());
                        }
                        String string = stringWriter.getBuffer().toString();
                        oldContent = string;
                        
                        // try syntax highlighting
                        /*javax.swing.text.Document textDocument = textArea.getDocument();
                        StyleContext styleContext = StyleContext.getDefaultStyleContext();
                        Style defaultStyle = styleContext.getStyle(StyleContext.DEFAULT_STYLE);
                
                        Style tagStyle = styleContext.addStyle(null, defaultStyle);
                        StyleConstants.setForeground(tagStyle, java.awt.Color.BLUE);
                        //StyleConstants.setFontFamily(tagStyle, "Arial");
                        System.out.println("tagStyle = " +tagStyle);
                        Style style = defaultStyle;
                        char c;
                        boolean newLine = false;
                        for(int i = 0; i < string.length(); i++) {
                                c = string.charAt(i);
                                try {
                                        if(newLine && c == ' ') {
                                                textDocument.insertString(textDocument.getLength(), 
                                                                                                        "   ", style);
                                        }
                                        if(c != ' ')
                                                newLine = false;
                                        if(c == '\n') {
                                                newLine = true;
                                        }
                                        if(c == '<') {
                                                style = tagStyle;
                                                //textArea.setDisabledTextColor(java.awt.Color.BLUE);
                                        }
                                        if(c == '>') {
                                                style = defaultStyle;
                                                //textArea.setDisabledTextColor(java.awt.Color.BLACK);
                                        }
                                        textDocument.insertString(textDocument.getLength(), 
                                                                                                String.valueOf(c), style);
                                }
                                catch(BadLocationException ble) {
                                        logInterface.log(LogInterface.TYPE_ERROR, ble.getMessage());
                                }
                                //textArea.setText(String.valueOf(c));
                        }*/
                        textArea.setText(string);
                }
                // if the node ist a text node or similar, only get the value
                else {
                        textArea.setText(node.getNodeValue());
                }
                
                //added 14.07.03 Sascha W. -> fixed problem of not visible plugins
                // (deleted this line in method "init"!)
                guiInterface.setPluginPanel(this);
                textArea.getDocument().addDocumentListener(this);
                setVisible(true);
        }


        /** 
         * Stop showing the Text Editor Plugin
         * 
         * @see src.gui.PluginInterface#stop()
         */
        public void stop() {
                setVisible(false);
        }


        //added 11/07/03 Sascha W.; own events are available now
        /* (non-Javadoc)
         * @see src.gui.PluginInterface#setOurEventListener(src.control.OurEventListener)
         */
        public void setOurEventListener(OurEventListener newListener) {
                ourEventListener = newListener;
        }


        /**
         *  Forces the Text Editor Plugin to return the actual status as a node
         *  not well-formed parts have to be capsuled into a prosessing instruction.
         * 
         *  @see src.gui.PluginInterface#forceStatusReport()
         */
        public void forceStatusReport() {
                // parse the content of the JTextArea
                boolean valid = true;
                String content = textArea.getText();
                src.parser.ValidationErrorHandler errorHandler = new src.parser.ValidationErrorHandler();
                errorHandler.setLogInterface(logInterface);
                errorHandler.setStatusInterface(statusInterface);
                do {
                        try {
                                DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
                                DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
                                documentBuilder.setErrorHandler(errorHandler);
                                // if the content of the edior is well-formed, parse only
                                if(valid == true) {
                                        StringReader stringReader = new StringReader(content);
                                        InputSource inputSource = new InputSource(stringReader);
                                        //doc.appendChild(documentBuilder.parse(inputSource));
                                        changedNode = documentBuilder.parse(inputSource).getFirstChild();
                                        System.out.println("changedNode = " + changedNode);
                                }
                                // if the content is not well-formed, capsule it into a processing instruction
                                else {
                                        if(oldNode.getNodeType() == Node.ELEMENT_NODE || oldNode.getNodeType() == Node.ENTITY_NODE) {
                                                content = textArea.getText();
                                                org.apache.xerces.dom.DocumentImpl doc = new org.apache.xerces.dom.DocumentImpl(); 
                                                changedNode = doc.createProcessingInstruction("NOTVALID", content);
                                                valid = true;
                                        }
                                        else {
                                                System.out.println("Node Type = " + oldNode.getNodeType());
                                                changedNode = oldNode.cloneNode(true);
                                                changedNode.setNodeValue(textArea.getText());
                                                valid = true;
                                        }
                                }
                        }
                        
                        /* Catch and log configuration errors. */
                        catch(ParserConfigurationException pce) {
                                logInterface.log(LogInterface.TYPE_ERROR, "Parser configuration error: "
                                + pce.getMessage());
                        }
                        
                        /* Catch and log I/O-errors during parsing. */
                        catch(java.io.IOException ioe) {
                                logInterface.log(LogInterface.TYPE_ERROR, "IO error: "
                                + ioe.getMessage());
                        }
                        
                        catch(IllegalArgumentException iae) {
                                logInterface.log(LogInterface.TYPE_ERROR, "Illegal argument error: "
                                + iae.getMessage());
                        }
                        
                        /* Catch and log parsing errors. */
                        catch(org.xml.sax.SAXException saxe) {
                                logInterface.log(LogInterface.TYPE_ERROR, "SAX parser error: "
                                + saxe.getMessage());
                                valid = false;
                        }
                }
                while(valid == false);

                // return the old and the changed node
                System.out.println("Return this node:" + changedNode);
                firePluginChangedElement(oldNode, changedNode);
        }
        
        //added 11/07/03 Sascha W.; own events are available now
        private void firePluginChangedElement(Node oldNode, Node changedNode) {
                OurEvent e = new OurEvent(new Object[] {oldNode, changedNode, pluginName});
                ourEventListener.firedOurEvent(e);
        }
        
        // TODO JavaDoc-comments
        public void actionPerformed(ActionEvent ae) {
                if(ae.getSource() == syncButton) {
                        forceStatusReport();
                }
        }
        
        public void caretUpdate(CaretEvent ce) {
                int dot = ce.getDot();
                try {
                        int line = textArea.getLineOfOffset(dot);
                        int column = dot - textArea.getLineStartOffset(line);
                        statusInterface.setPoint(new java.awt.Point(line + 1, column + 1));
                }
                catch(BadLocationException badLEx) {
                        logInterface.log(LogInterface.TYPE_ERROR, "Bad cursor location: "
                        + badLEx.getMessage());
                }
        }
        
        /* (non-Javadoc)
         * @see javax.swing.event.DocumentListener#changedUpdate(javax.swing.event.DocumentEvent)
         */
        public void changedUpdate(DocumentEvent de) {
        }

        /* (non-Javadoc)
         * @see javax.swing.event.DocumentListener#insertUpdate(javax.swing.event.DocumentEvent)
         */
        public void insertUpdate(DocumentEvent de) {
                modified = true;
                statusInterface.setModified(true);
        }

        /* (non-Javadoc)
         * @see javax.swing.event.DocumentListener#removeUpdate(javax.swing.event.DocumentEvent)
         */
        public void removeUpdate(DocumentEvent de) {
                modified = true;
                statusInterface.setModified(true);
        }
        
        public boolean isModified() {
                return modified;
        }
}PK
ið.skµXX:src/plugins/textEditorPlugin/TextEditorPluginTransform.xsl<!-- for TextEditor plugin: simply copy the whole document -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />

<xsl:template match="/">
        <xsl:apply-templates />
</xsl:template>

<xsl:template match="node()">
        <xsl:copy-of select="." />
</xsl:template>

</xsl:stylesheet>PK
f‘ð.íØNºbb>src/plugins/textEditorPlugin/TextEditorPluginTransformBack.xsl<!-- backwards for TextEditor plugin: simply copy the whole document -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />

<xsl:template match="/">
        <xsl:apply-templates />
</xsl:template>

<xsl:template match="node()">
        <xsl:copy-of select="." />
</xsl:template>

</xsl:stylesheet>PK

šð. META-INF/þÊPK

šð.~ƒkk66+META-INF/MANIFEST.MFPK

&ƒð.9˜>?Ï%Ï%3“src/plugins/textEditorPlugin/TextEditorPlugin.classPK

ìzð.×vÓoe+e+2³)src/plugins/textEditorPlugin/TextEditorPlugin.javaPK

ið.skµXX:hUsrc/plugins/textEditorPlugin/TextEditorPluginTransform.xslPK

f‘ð.íØNºbb>Wsrc/plugins/textEditorPlugin/TextEditorPluginTransformBack.xslPKÖX