Package net.sourceforge.squirrel_sql.plugins.syntax.rsyntax

Source Code of net.sourceforge.squirrel_sql.plugins.syntax.rsyntax.SquirrelSyntaxScheme

package net.sourceforge.squirrel_sql.plugins.syntax.rsyntax;

import net.sourceforge.squirrel_sql.client.session.properties.SessionProperties;
import net.sourceforge.squirrel_sql.fw.gui.FontInfo;
import org.fife.ui.rsyntaxtextarea.RSyntaxTextArea;
import org.fife.ui.rsyntaxtextarea.Style;
import org.fife.ui.rsyntaxtextarea.SyntaxScheme;
import org.fife.ui.rsyntaxtextarea.Token;

import javax.swing.text.StyleContext;
import java.awt.*;

import net.sourceforge.squirrel_sql.plugins.syntax.SyntaxPreferences;
import net.sourceforge.squirrel_sql.plugins.syntax.SyntaxStyle;
import net.sourceforge.squirrel_sql.client.session.parser.IParserEventsProcessor;
import net.sourceforge.squirrel_sql.client.session.parser.ParserEventsListener;
import net.sourceforge.squirrel_sql.client.session.parser.kernel.TableAliasInfo;
import net.sourceforge.squirrel_sql.client.session.parser.kernel.ErrorInfo;

public class SquirrelSyntaxScheme extends SyntaxScheme
{
   public SquirrelSyntaxScheme()
   {
      super(true);
   }

   public void initSytles(SyntaxPreferences prefs, FontInfo fontInfo)
   {
      super.restoreDefaults(fontInfo.createFont());
      Style[] stylesBuf = new Style[SquirrelTokenMarker.getNumTokenTypes()];
      System.arraycopy(styles, 0, stylesBuf, 0, styles.length);

      StyleContext sc = StyleContext.getDefaultStyleContext();


      Font boldFont = sc.getFont(fontInfo.getFamily(), Font.BOLD, fontInfo.getSize());
      Font italicFont = sc.getFont(fontInfo.getFamily(), Font.ITALIC, fontInfo.getSize());


//      stylesBuf[SquirrelTokenMarker.TOKEN_IDENTIFIER_TABLE] = new Style(Color.green, null);
//      stylesBuf[SquirrelTokenMarker.TOKEN_IDENTIFIER_DATA_TYPE] = new Style(new Color(178,178,0), null, boldFont);
//      stylesBuf[SquirrelTokenMarker.TOKEN_IDENTIFIER_COLUMN] = new Style(new Color(102,102,0), null, boldFont);
//      stylesBuf[SquirrelTokenMarker.TOKEN_IDENTIFIER_FUNCTION] = new Style(Color.gray, null, italicFont);
//      stylesBuf[SquirrelTokenMarker.TOKEN_IDENTIFIER_STATEMENT_SEPARATOR] = new Style(new Color(0,0,128), null, italicFont);

      stylesBuf[Token.RESERVED_WORD] = createRSyntaxStyle(prefs.getReservedWordStyle(), boldFont, italicFont);
      stylesBuf[SquirrelTokenMarker.TOKEN_IDENTIFIER_TABLE] = createRSyntaxStyle(prefs.getTableStyle(), boldFont, italicFont);
      stylesBuf[SquirrelTokenMarker.TOKEN_IDENTIFIER_DATA_TYPE] = createRSyntaxStyle(prefs.getDataTypeStyle(), boldFont, italicFont);
      stylesBuf[SquirrelTokenMarker.TOKEN_IDENTIFIER_COLUMN] = createRSyntaxStyle(prefs.getColumnStyle(), boldFont, italicFont);
      stylesBuf[SquirrelTokenMarker.TOKEN_IDENTIFIER_FUNCTION] = createRSyntaxStyle(prefs.getFunctionStyle(), boldFont, italicFont);
      stylesBuf[SquirrelTokenMarker.TOKEN_IDENTIFIER_STATEMENT_SEPARATOR] = createRSyntaxStyle(prefs.getSeparatorStyle(), boldFont, italicFont);
      stylesBuf[Token.IDENTIFIER] = createRSyntaxStyle(prefs.getIdentifierStyle(), boldFont, italicFont);
      stylesBuf[Token.COMMENT_EOL] = createRSyntaxStyle(prefs.getCommentStyle(), boldFont, italicFont);
      stylesBuf[Token.COMMENT_MULTILINE] = createRSyntaxStyle(prefs.getCommentStyle(), boldFont, italicFont);
      stylesBuf[Token.COMMENT_DOCUMENTATION] = createRSyntaxStyle(prefs.getCommentStyle(), boldFont, italicFont);
      stylesBuf[Token.LITERAL_STRING_DOUBLE_QUOTE] = createRSyntaxStyle(prefs.getLiteralStyle(), boldFont, italicFont);
      stylesBuf[Token.OPERATOR] = createRSyntaxStyle(prefs.getOperatorStyle(), boldFont, italicFont);
      stylesBuf[Token.WHITESPACE] = createRSyntaxStyle(prefs.getWhiteSpaceStyle(), boldFont, italicFont);
//      stylesBuf[SquirrelTokenMarker.TOKEN_IDENTIFIER_ERROR] = createRSyntaxStyle(prefs.getErrorStyle(), boldFont, italicFont);
      stylesBuf[Token.ERROR_IDENTIFIER] = createRSyntaxStyle(prefs.getErrorStyle(), boldFont, italicFont);
      stylesBuf[Token.ERROR_NUMBER_FORMAT] = createRSyntaxStyle(prefs.getErrorStyle(), boldFont, italicFont);
      stylesBuf[Token.ERROR_STRING_DOUBLE] = createRSyntaxStyle(prefs.getErrorStyle(), boldFont, italicFont);

      styles = stylesBuf;
   }

   private Style createRSyntaxStyle(SyntaxStyle squirrelStyle, Font boldFont, Font italicFont)
   {
      Style style;

      if (squirrelStyle.isBold())
      {
         style = new Style(new Color(squirrelStyle.getTextRGB()), new Color(squirrelStyle.getBackgroundRGB()), boldFont);
      }
      else if (squirrelStyle.isItalic())
      {
         style = new Style(new Color(squirrelStyle.getTextRGB()), new Color(squirrelStyle.getBackgroundRGB()), italicFont);
      }
      else
      {
         style = new Style(new Color(squirrelStyle.getTextRGB()), new Color(squirrelStyle.getBackgroundRGB()), null);
      }

      return style;
   }




   public Object clone()
   {
      SyntaxScheme shcs = null;
      shcs = (SyntaxScheme) super.clone();

      shcs.styles = new Style[SquirrelTokenMarker.getNumTokenTypes()];
      for (int i = 0; i < SquirrelTokenMarker.getNumTokenTypes(); i++)
      {
         Style s = styles[i];
         if (s != null)
         {
            shcs.styles[i] = (Style) s.clone();
         }
      }
      return shcs;
   }

}
TOP

Related Classes of net.sourceforge.squirrel_sql.plugins.syntax.rsyntax.SquirrelSyntaxScheme

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.