From: <rfr...@us...> - 2009-01-28 13:43:30
|
Revision: 14494 http://jedit.svn.sourceforge.net/jedit/?rev=14494&view=rev Author: rfrancois Date: 2009-01-28 13:43:28 +0000 (Wed, 28 Jan 2009) Log Message: ----------- code for new abstract implementation Added Paths: ----------- plugins/Code2HTML/trunk/code2html/generic/ plugins/Code2HTML/trunk/code2html/generic/Config.java plugins/Code2HTML/trunk/code2html/generic/GenericDocument.java plugins/Code2HTML/trunk/code2html/generic/GenericExporter.java plugins/Code2HTML/trunk/code2html/generic/GenericGutter.java plugins/Code2HTML/trunk/code2html/generic/GenericJeditConfig.java plugins/Code2HTML/trunk/code2html/generic/GenericPainter.java plugins/Code2HTML/trunk/code2html/generic/HyperLink.java plugins/Code2HTML/trunk/code2html/generic/Style.java plugins/Code2HTML/trunk/code2html/impl/ plugins/Code2HTML/trunk/code2html/impl/html/ plugins/Code2HTML/trunk/code2html/impl/htmlcss/ plugins/Code2HTML/trunk/code2html/impl/latex/ plugins/Code2HTML/trunk/code2html/services/ plugins/Code2HTML/trunk/code2html/services/ExporterProvider.java plugins/Code2HTML/trunk/code2html/services/HtmlCssExporterProvider.java plugins/Code2HTML/trunk/code2html/services/HtmlExporterProvider.java plugins/Code2HTML/trunk/code2html/services/LatexExporterProvider.java plugins/Code2HTML/trunk/code2html/services/LinkProvider.java Added: plugins/Code2HTML/trunk/code2html/generic/Config.java =================================================================== --- plugins/Code2HTML/trunk/code2html/generic/Config.java (rev 0) +++ plugins/Code2HTML/trunk/code2html/generic/Config.java 2009-01-28 13:43:28 UTC (rev 14494) @@ -0,0 +1,34 @@ +/* + * Config.java + * Copyright (c) 2002 Andre Kaplan + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +package code2html.generic ; + +import code2html.line.LineTabExpander; +import code2html.line.LineWrapper; + +public interface Config { + GenericGutter getGutter(); + Style getStyle(); + GenericPainter getPainter(); + + LineTabExpander getTabExpander(); + LineWrapper getWrapper(); +} + Added: plugins/Code2HTML/trunk/code2html/generic/GenericDocument.java =================================================================== --- plugins/Code2HTML/trunk/code2html/generic/GenericDocument.java (rev 0) +++ plugins/Code2HTML/trunk/code2html/generic/GenericDocument.java 2009-01-28 13:43:28 UTC (rev 14494) @@ -0,0 +1,91 @@ +/* + * GenericDocument.java + * Copyright (c) 2009 Romain Francois <fra...@fr...> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +package code2html.generic ; + +import java.io.IOException; +import java.io.Writer; + +import org.gjt.sp.jedit.syntax.SyntaxStyle; +import java.awt.Color ; + +public abstract class GenericDocument { + protected String viewBgColor; + protected String viewFgColor; + + protected Color bgColor ; + protected Color fgColor ; + + protected SyntaxStyle[] syntaxStyles; + + protected Style style; + protected GenericGutter gutter; + + protected String title; + protected String lineSeparator; + + public GenericDocument(){} + + public GenericDocument( + String viewBgColor, + String viewFgColor, + SyntaxStyle[] syntaxStyles, + Style style, + GenericGutter gutter, + String title, + String lineSeparator + ) { + this.viewBgColor = viewBgColor; + this.viewFgColor = viewFgColor; + this.bgColor = Color.decode( viewBgColor ) ; + this.fgColor = Color.decode( viewFgColor ) ; + + this.syntaxStyles = syntaxStyles; + this.style = style; + this.gutter = gutter; + this.title = title; + this.lineSeparator = lineSeparator; + } + + public void open(Writer out) throws IOException { + openBeforeStyle( out ) ; + openStyle( out ) ; + openAfterStyle( out ) ; + } + + public void openStyle( Writer out ) throws IOException{ + out.write(this.lineSeparator); + for (int i = 0; i < this.syntaxStyles.length; i++) { + out.write(this.style.style(i, this.syntaxStyles[i])); + } + out.write(this.lineSeparator); + out.write((this.gutter != null) ? this.gutter.style() : ""); + out.write(this.lineSeparator); + } + + public abstract void openBeforeStyle( Writer out) throws IOException ; + public abstract void openAfterStyle( Writer out) throws IOException ; + public abstract void beforeContent( Writer out ) throws IOException ; + public abstract void afterContent( Writer out ) throws IOException ; + + public abstract void close(Writer out) throws IOException ; + +} + Added: plugins/Code2HTML/trunk/code2html/generic/GenericExporter.java =================================================================== --- plugins/Code2HTML/trunk/code2html/generic/GenericExporter.java (rev 0) +++ plugins/Code2HTML/trunk/code2html/generic/GenericExporter.java 2009-01-28 13:43:28 UTC (rev 14494) @@ -0,0 +1,239 @@ +/* + * GenericExporter.java + * Copyright (c) 2009 Romain Francois <fra...@fr...> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package code2html.generic ; + +import java.io.IOException; +import java.io.BufferedWriter; +import java.io.StringWriter; +import java.io.Writer; +import java.util.Arrays; +import java.util.Comparator; + +import javax.swing.text.Segment; + +import org.gjt.sp.jedit.Buffer; +import org.gjt.sp.jedit.jEdit; +import org.gjt.sp.jedit.syntax.SyntaxStyle; +import org.gjt.sp.jedit.syntax.Token; +import org.gjt.sp.jedit.textarea.Selection; +import org.gjt.sp.util.Log; +import org.gjt.sp.jedit.Mode; +import org.gjt.sp.jedit.ServiceManager ; + +import code2html.* ; +import code2html.services.LinkProvider ; + +public abstract class GenericExporter { + + protected Selection[] selection = null; + protected Buffer buffer ; + + protected Style style = null; + protected GenericGutter gutter = null; + protected GenericPainter painter = null; + protected GenericDocument document = null; + protected LinkProvider linkProvider = null ; + + public GenericExporter( + Buffer buffer, SyntaxStyle[] syntaxStyle, Selection[] selection ){ + this.buffer = buffer ; + this.selection = selection ; + Object lp = ServiceManager.getService( + "code2html.services.LinkProvider", + buffer.getMode().toString() + ) ; + if( lp != null ){ + this.linkProvider = (LinkProvider)lp ; + } + + } + + public Buffer getDocumentBuffer() { + return makeBuffer( getDocumentString(), getMode() ); + } + + public Buffer getContentBuffer(){ + return makeBuffer( getContentString(), getMode() ); + } + + public Buffer getStyleBuffer(){ + return makeBuffer( this.getDocumentString(), style.getMode() ); + } + + private Buffer makeBuffer( String str, String mode ){ + if (str == null) { return null; } + Buffer newBuffer = jEdit.newFile(null); + newBuffer.insert(0, str); + if( mode != null ) newBuffer.setMode( mode ) ; + return newBuffer; + } + + + public GenericGutter getGutter() { + return gutter ; + } + public GenericPainter getPainter(){ + return painter ; + } + public GenericDocument getDocument(){ + return document ; + } + public Style getStyle(){ + return style ; + } + public void setStyle( Style style ){ + this.style = style ; + this.style.setLinkProvider( this.linkProvider ) ; + } + + public abstract String getMode() ; + + public String getContentString( ){ + StringWriter sw = new StringWriter(); + GenericDocument document = getDocument( ) ; + try { + BufferedWriter out = new BufferedWriter(sw); + + document.beforeContent( out ) ; + writeContent( out ) ; + document.afterContent( out ) ; + + out.flush(); + out.close(); + } catch (IOException ioe) { + Log.log(Log.ERROR, this, ioe); + return null; + } + + return sw.toString(); + } + + public String getStyleString( ){ + StringWriter sw = new StringWriter(); + GenericDocument document = getDocument( ) ; + try { + BufferedWriter out = new BufferedWriter(sw); + + document.openStyle(out); + + out.flush(); + out.close(); + } catch (IOException ioe) { + Log.log(Log.ERROR, this, ioe); + return null; + } + + return sw.toString(); + } + + public String getDocumentString() { + StringWriter sw = new StringWriter(); + GenericDocument document = getDocument( ) ; + try { + BufferedWriter out = new BufferedWriter(sw); + + document.open(out); + document.beforeContent( out ) ; + writeContent( out ) ; + document.afterContent( out ) ; + document.close(out); + + out.flush(); + out.close(); + } catch (IOException ioe) { + Log.log(Log.ERROR, this, ioe); + return null; + } + + return sw.toString(); + } + + private void writeContent( Writer out ) throws IOException{ + + int physicalFirst = 0; + int physicalLast = buffer.getLineCount() - 1; + + + if (this.selection == null) { + this.text(out, physicalFirst, physicalLast); + } else { + int last = 0; + for (int i = 0; i < selection.length; i++) { + if (selection[i].getEndLine() > last) { + last = selection[i].getEndLine(); + } + } + + // Sort selections by their start lines + Arrays.sort(selection, new SelectionStartLineComparator()); + + if (getGutter() != null) { + getGutter().setGutterSize(Integer.toString(last + 1).length()); + } + + int lastLine = -1; + for (int i = 0; i < selection.length; i++) { + physicalFirst = selection[i].getStartLine(); + physicalLast = selection[i].getEndLine(); + + if (physicalLast <= lastLine) { continue; } + + this.text(out, Math.max(physicalFirst, lastLine + 1) , physicalLast); + + lastLine = physicalLast; + } + } + } + + + protected void text(Writer out, int first, int last) throws IOException { + long start = System.currentTimeMillis(); + this.paintLines(out, buffer, first, last); + long end = System.currentTimeMillis(); + Log.log(Log.DEBUG, this, "Time: " + (end - start) + " ms"); + } + + + protected void paintLines( + Writer out, Buffer buffer, int first, int last + ) throws IOException + { + Segment line = new Segment(); + Token tokens = null; + for (int i = first; i <= last; i++) { + buffer.getLineText(i, line); + tokens = buffer.markTokens(i).getFirstToken(); + GenericPainter painter_ = getPainter() ; + painter_.setPos(0); + if (tokens == null) { + painter_.paintPlainLine(out, i + 1, line, null); + } else { + SyntaxToken syntaxTokens = SyntaxTokenUtilities.convertTokens( + tokens + ); + painter_.paintSyntaxLine(out, i + 1, line, syntaxTokens); + } + out.write( painter_.newLine() ); + } + } + + +} + Added: plugins/Code2HTML/trunk/code2html/generic/GenericGutter.java =================================================================== --- plugins/Code2HTML/trunk/code2html/generic/GenericGutter.java (rev 0) +++ plugins/Code2HTML/trunk/code2html/generic/GenericGutter.java 2009-01-28 13:43:28 UTC (rev 14494) @@ -0,0 +1,131 @@ +/* + * GenericGutter.java + * Copyright (c) 2009 Romain Francois <fra...@fr...> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +package code2html.generic; + +import java.awt.Color ; + +public abstract class GenericGutter{ + + protected int gutterSize ; + protected char gutterBorder = ':'; + protected int gutterBorderSize = 1; + + protected String bgColor ; + protected String fgColor ; + protected Color bg ; + protected Color fg ; + + protected String highlightColor; + protected int highlightInterval; + + protected String spacer ; + + protected GenericGutter() { + this( "#ffffff", "#000000", "#8080c0", 5 ); + } + + public GenericGutter( + String bgColor, String fgColor, + String highlightColor, int highlightInterval + ) { + this(4, bgColor, fgColor, highlightColor, highlightInterval); + } + + + public GenericGutter( + int gutterSize, + String bgColor, String fgColor, + String highlightColor, int highlightInterval + ) { + setGutterSize( gutterSize ) ; + + this.bgColor = bgColor; + this.fgColor = fgColor; + this.bg = Color.decode( bgColor ) ; + this.fg = Color.decode( fgColor ) ; + + this.highlightColor = highlightColor; + this.highlightInterval = highlightInterval; + + } + + + public boolean isHighlighted( int lineNumber ){ + return (this.highlightInterval > 0) && (lineNumber % this.highlightInterval == 0) ; + } + + public String gutterStyle( int lineNumber ){ + return isHighlighted( lineNumber ) ? "gutterH" : "gutter" ; + } + + public String getColorString( int lineNumber ){ + return isHighlighted( lineNumber ) ? highlightColor : fgColor ; + } + + public int getGutterBorderSize() { + return gutterBorderSize; + } + + public int getGutterSize( ){ + return gutterSize ; + } + + public int getSize() { + return getGutterSize( ) + getGutterBorderSize( ) ; + } + + public abstract String format(int lineNumber) ; + + public abstract String formatEmpty(int lineNumber) ; + + public abstract String style() ; + + public void setGutterSize(int gutterSize){ + this.gutterSize = gutterSize; + this.spacer = getSpacer( ) ; + } + + public abstract String getSpaceString() ; + + public String getSpacer( int size ){ + String space = getSpaceString() ; + + StringBuffer buf = new StringBuffer(); + for (int i = 0; i < size; i++) { + buf.append( space ); + } + return buf.toString() ; + } + + public String getSpacer( ){ + return getSpacer( gutterSize ) ; + } + + public String wrapText( int lineNumber ){ + StringBuffer buf = new StringBuffer(); + String s = Integer.toString(lineNumber); + String spaces = getSpacer( getGutterSize() - s.length() ) ; + buf.append(spaces).append(s) ; + return buf.toString() ; + } + +} + Added: plugins/Code2HTML/trunk/code2html/generic/GenericJeditConfig.java =================================================================== --- plugins/Code2HTML/trunk/code2html/generic/GenericJeditConfig.java (rev 0) +++ plugins/Code2HTML/trunk/code2html/generic/GenericJeditConfig.java 2009-01-28 13:43:28 UTC (rev 14494) @@ -0,0 +1,81 @@ +/* + * GenericJEditConfig.java + * Copyright (c) 2009 Romain Francois + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +package code2html.generic ; + +import org.gjt.sp.jedit.jEdit; +import org.gjt.sp.jedit.syntax.SyntaxStyle; + +import code2html.line.LineTabExpander; +import code2html.line.LineWrapper; + +public abstract class GenericJeditConfig implements Config { + protected LineTabExpander tabExpander = null; + protected LineWrapper wrapper = null; + + protected boolean showGutter ; + protected String highlightColor ; + protected int highlightInterval ; + protected String bgColor ; + protected String fgColor ; + + public GenericJeditConfig(SyntaxStyle[] styles, int tabSize) { + int wrap = jEdit.getIntegerProperty("code2html.wrap", 0); + if (wrap < 0) { + wrap = 0; + } + + showGutter = jEdit.getBooleanProperty("code2html.show-gutter", false); + + if (showGutter) { + bgColor = jEdit.getProperty( + "view.gutter.bgColor", "#ffffff" + ); + fgColor = jEdit.getProperty( + "view.gutter.fgColor", "#8080c0" + ); + highlightColor = jEdit.getProperty( + "view.gutter.highlightColor", "#000000" + ); + highlightInterval = jEdit.getIntegerProperty( + "view.gutter.highlightInterval", 5 + ); + } + + this.tabExpander = new LineTabExpander(tabSize); + + if (wrap > 0) { + this.wrapper = new LineWrapper(wrap); + } + + } + + @Override + public LineTabExpander getTabExpander() { + return this.tabExpander; + } + + @Override + public LineWrapper getWrapper() { + return this.wrapper; + } + +} + Added: plugins/Code2HTML/trunk/code2html/generic/GenericPainter.java =================================================================== --- plugins/Code2HTML/trunk/code2html/generic/GenericPainter.java (rev 0) +++ plugins/Code2HTML/trunk/code2html/generic/GenericPainter.java 2009-01-28 13:43:28 UTC (rev 14494) @@ -0,0 +1,204 @@ +/* + * GenericPainter.java + * Copyright (c) 2009 Romain Francois <fra...@fr...> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +package code2html.generic ; + +import java.io.IOException; +import java.io.Writer; + +import javax.swing.text.Segment; + +import org.gjt.sp.jedit.syntax.SyntaxStyle; +import org.gjt.sp.jedit.syntax.Token; + +import code2html.SyntaxToken; +import code2html.line.LinePosition; +import code2html.line.LineTabExpander; +import code2html.line.LineWrapper; + +import code2html.services.LinkProvider ; + +public abstract class GenericPainter { + + protected Style style; + protected GenericGutter gutter; + + protected LineTabExpander expander; + protected LineWrapper wrapper; + + protected SyntaxStyle[] syntaxStyles; + protected LinePosition position; + + protected boolean showGutter; + protected int wrap; + + public GenericPainter( ){ } + + public GenericPainter( + SyntaxStyle[] syntaxStyles, + Style style, + GenericGutter gutter, + LineTabExpander expander, + LineWrapper wrapper + ) { + this.syntaxStyles = syntaxStyles ; + this.position = new LinePosition( ) ; + + this.style = style; + this.gutter = gutter; + this.expander = expander; + this.wrapper = wrapper; + + this.showGutter = (gutter != null); + this.wrap = (wrapper == null) ? 0 : wrapper.getWrapSize(); + } + + + public SyntaxStyle[] getSyntaxStyles() { + return this.syntaxStyles; + } + + public void setPos(int pos) { + this.position.setPos(pos); + } + + + public void paintPlainLine(Writer out, int lineNumber, Segment line, SyntaxToken tokens) + { + try { + if (this.showGutter) { + out.write(this.gutter.format(lineNumber)); + } + + int pos = this.position.getPos(); + String expandedText = this.expander.expand(pos, line.array, line.offset, line.count); + this.position.incPos(expandedText.length()); + + int[] wraps = null; + + if (this.wrapper != null) { + wraps = this.wrapper.wrap(pos, expandedText.length()); + + if (pos > 0 && (pos % this.wrap) == 0) { + out.write( newLine() ); + if (this.showGutter) { + out.write(this.gutter.formatEmpty(lineNumber)); + } + } + } + + if (wraps == null) { + out.write( format(expandedText) ); + } else { + for (int i = 0; i < wraps.length - 1; i++) { + if (i >= 1) { + out.write("\n"); + if (this.showGutter) { + out.write(this.gutter.formatEmpty(lineNumber)); + } + } + + out.write( format( + expandedText.substring(wraps[i], wraps[i + 1]) + )); + } + } + } catch (IOException ioe) {} + } + + public void paintSyntaxLine( + Writer out, int lineNumber, Segment line, SyntaxToken tokens + ) { + + try { + if (this.showGutter) { + out.write(this.gutter.format(lineNumber)); + } + } catch (IOException ioe) {} + + for (;;) { + byte id = tokens.id; + if (id == Token.END) { + break; + } + + int length = tokens.length; + line.count = length; + + try { + int pos = this.position.getPos(); + String expandedText = this.expander.expand(pos, line.array, line.offset, length); + this.position.incPos(expandedText.length()); + + int[] wraps = null; + + if (this.wrapper != null) { + wraps = this.wrapper.wrap(pos, expandedText.length()); + + if (pos > 0 && (pos % this.wrap) == 0) { + out.write( newLine() ); + if (this.showGutter) { + out.write(this.gutter.formatEmpty(lineNumber)); + } + } + } + + if (wraps == null) { + String text = format(expandedText); + if (id == Token.NULL) { + out.write(text); + } else { + out.write(this.style.format(id, this.syntaxStyles[id], text)); + } + } else { + String text; + for (int i = 0; i < wraps.length - 1; i++) { + if (i >= 1) { + out.write( newLine( ) ); + if (this.showGutter) { + out.write(this.gutter.formatEmpty(lineNumber)); + } + } + + text = format( + expandedText.substring(wraps[i], wraps[i + 1]) + ); + + if (id == Token.NULL) { + out.write(text); + } else { + out.write(this.style.format(id, this.syntaxStyles[id], text)); + } + } + } + } catch (IOException ioe) {} + + line.offset += length; + + tokens = tokens.next; + } + } + + protected abstract String newLine( ) ; + + protected abstract String format( String text) ; + +} + Added: plugins/Code2HTML/trunk/code2html/generic/HyperLink.java =================================================================== --- plugins/Code2HTML/trunk/code2html/generic/HyperLink.java (rev 0) +++ plugins/Code2HTML/trunk/code2html/generic/HyperLink.java 2009-01-28 13:43:28 UTC (rev 14494) @@ -0,0 +1,27 @@ +/* + * HyperLink.java + * Copyright (c) 2009 Romain Francois <fra...@fr...> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package code2html.generic ; + +public abstract class HyperLink{ + + public abstract String getLinkText( String text, String url, String formattedText ) ; + +} + Added: plugins/Code2HTML/trunk/code2html/generic/Style.java =================================================================== --- plugins/Code2HTML/trunk/code2html/generic/Style.java (rev 0) +++ plugins/Code2HTML/trunk/code2html/generic/Style.java 2009-01-28 13:43:28 UTC (rev 14494) @@ -0,0 +1,68 @@ +/* + * Style.java + * Copyright (c) 2009 Romain Francois <fra...@fr...> + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + + +package code2html.generic ; + +import java.awt.Color; + +import org.gjt.sp.jedit.GUIUtilities; +import org.gjt.sp.jedit.syntax.SyntaxStyle; +import org.gjt.sp.jedit.syntax.Token; + +import code2html.services.LinkProvider ; + +public abstract class Style { + + protected HyperLink hyperlink ; + protected LinkProvider linkProvider ; + protected boolean doLinks; + + public Style( ){ + linkProvider = null ; + doLinks = false ; + } + + public void setLinkProvider(LinkProvider linkProvider){ + this.linkProvider = linkProvider; + this.doLinks = linkProvider != null ; + } + + public abstract String format(int styleId, SyntaxStyle style, String text) ; + + public abstract String style(int styleId, SyntaxStyle style) ; + + public static String getTokenString( int id ){ + return Token.tokenToString( (byte)id ) ; + } + + public String getLinkText( int styleId, String text, String formattedText ){ + if( !doLinks || linkProvider == null ) return formattedText ; + String url = linkProvider.getUrl( getTokenString(styleId), text ) ; + if( url == null ) { + return formattedText ; + } else{ + return hyperlink.getLinkText( text, url , formattedText ) ; + } + } + + public abstract String getMode() ; + +} + Added: plugins/Code2HTML/trunk/code2html/services/ExporterProvider.java =================================================================== --- plugins/Code2HTML/trunk/code2html/services/ExporterProvider.java (rev 0) +++ plugins/Code2HTML/trunk/code2html/services/ExporterProvider.java 2009-01-28 13:43:28 UTC (rev 14494) @@ -0,0 +1,32 @@ +/* + * ExporterProvider.java - part of the code2html jedit plugin + * Copyright (C) 2009 Romain Francois + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package code2html.services ; + +import code2html.generic.GenericExporter ; + +import org.gjt.sp.jedit.Buffer; +import org.gjt.sp.jedit.syntax.SyntaxStyle; +import org.gjt.sp.jedit.textarea.Selection; + +public abstract class ExporterProvider { + + public abstract GenericExporter getExporter( Buffer buffer, SyntaxStyle[] syntaxStyles, Selection[] selection ) ; + +} Added: plugins/Code2HTML/trunk/code2html/services/HtmlCssExporterProvider.java =================================================================== --- plugins/Code2HTML/trunk/code2html/services/HtmlCssExporterProvider.java (rev 0) +++ plugins/Code2HTML/trunk/code2html/services/HtmlCssExporterProvider.java 2009-01-28 13:43:28 UTC (rev 14494) @@ -0,0 +1,37 @@ +/* + * HtmlCssExporterProvider.java - part of the code2html jedit plugin + * Copyright (C) 2009 Romain Francois + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package code2html.services ; + +import code2html.generic.GenericExporter ; + +import org.gjt.sp.jedit.Buffer; +import org.gjt.sp.jedit.syntax.SyntaxStyle; +import org.gjt.sp.jedit.textarea.Selection; + +import code2html.impl.htmlcss.HtmlCssExporter ; + +public class HtmlCssExporterProvider extends ExporterProvider { + + @Override + public GenericExporter getExporter( Buffer buffer, SyntaxStyle[] syntaxStyles, Selection[] selection ){ + return new HtmlCssExporter( buffer, syntaxStyles, selection) ; + } + +} Added: plugins/Code2HTML/trunk/code2html/services/HtmlExporterProvider.java =================================================================== --- plugins/Code2HTML/trunk/code2html/services/HtmlExporterProvider.java (rev 0) +++ plugins/Code2HTML/trunk/code2html/services/HtmlExporterProvider.java 2009-01-28 13:43:28 UTC (rev 14494) @@ -0,0 +1,37 @@ +/* + * HtmlExporterProvider.java - part of the code2html jedit plugin + * Copyright (C) 2009 Romain Francois + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package code2html.services ; + +import code2html.generic.GenericExporter ; + +import org.gjt.sp.jedit.Buffer; +import org.gjt.sp.jedit.syntax.SyntaxStyle; +import org.gjt.sp.jedit.textarea.Selection; + +import code2html.impl.html.HtmlExporter ; + +public class HtmlExporterProvider extends ExporterProvider { + + @Override + public GenericExporter getExporter( Buffer buffer, SyntaxStyle[] syntaxStyles, Selection[] selection ){ + return new HtmlExporter( buffer, syntaxStyles, selection) ; + } + +} Added: plugins/Code2HTML/trunk/code2html/services/LatexExporterProvider.java =================================================================== --- plugins/Code2HTML/trunk/code2html/services/LatexExporterProvider.java (rev 0) +++ plugins/Code2HTML/trunk/code2html/services/LatexExporterProvider.java 2009-01-28 13:43:28 UTC (rev 14494) @@ -0,0 +1,37 @@ +/* + * LatexExporterProvider.java - part of the code2html jedit plugin + * Copyright (C) 2009 Romain Francois + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package code2html.services ; + +import code2html.generic.GenericExporter ; + +import org.gjt.sp.jedit.Buffer; +import org.gjt.sp.jedit.syntax.SyntaxStyle; +import org.gjt.sp.jedit.textarea.Selection; + +import code2html.impl.latex.LatexExporter ; + +public class LatexExporterProvider extends ExporterProvider { + + @Override + public GenericExporter getExporter( Buffer buffer, SyntaxStyle[] syntaxStyles, Selection[] selection ){ + return new LatexExporter( buffer, syntaxStyles, selection) ; + } + +} Added: plugins/Code2HTML/trunk/code2html/services/LinkProvider.java =================================================================== --- plugins/Code2HTML/trunk/code2html/services/LinkProvider.java (rev 0) +++ plugins/Code2HTML/trunk/code2html/services/LinkProvider.java 2009-01-28 13:43:28 UTC (rev 14494) @@ -0,0 +1,27 @@ +/* + * LinkProvider.java - part of the code2html jedit plugin + * Copyright (C) 2009 Romain Francois + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +package code2html.services ; + +public abstract class LinkProvider { + + public abstract String getUrl( String style, String text ) ; + +} + This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |