+++ /dev/null
-/*
- VARNA is a tool for the automated drawing, visualization and annotation of the secondary structure of RNA, designed as a companion software for web servers and databases.
- Copyright (C) 2008 Kevin Darty, Alain Denise and Yann Ponty.
- electronic mail : Yann.Ponty@lri.fr
- paper mail : LRI, bat 490 Université Paris-Sud 91405 Orsay Cedex France
-
- This file is part of VARNA version 3.1.
- VARNA version 3.1 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 3 of the License, or (at your option) any later version.
-
- VARNA version 3.1 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 VARNA version 3.1.
- If not, see http://www.gnu.org/licenses.
- */
-package fr.orsay.lri.varna.models;
-
-import java.awt.Color;
-import java.awt.Font;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-
-import javax.xml.transform.sax.TransformerHandler;
-
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.AttributesImpl;
-
-import fr.orsay.lri.varna.models.annotations.HighlightRegionAnnotation;
-import fr.orsay.lri.varna.models.annotations.TextAnnotation;
-import fr.orsay.lri.varna.models.rna.ModeleBP;
-import fr.orsay.lri.varna.models.rna.ModeleBPStyle;
-import fr.orsay.lri.varna.models.rna.ModeleBase;
-import fr.orsay.lri.varna.models.rna.ModeleColorMap;
-import fr.orsay.lri.varna.utils.XMLUtils;
-
-public class VARNAConfig implements Serializable, Cloneable {
-
- /**
- *
- */
- private static final long serialVersionUID = 2853916694420964233L;
- /**
- *
- */
- public static final int MAJOR_VERSION = 3;
- public static final int MINOR_VERSION = 9;
-
- public static String getFullName()
- {
- return "VARNA "+MAJOR_VERSION+"."+MINOR_VERSION;
- }
-
- /**
- * Enum types and internal classes
- */
-
- public enum BP_STYLE implements Serializable {
- NONE, SIMPLE, RNAVIZ, LW, LW_ALT;
- public String toString()
- {
- switch(this)
- {
- case LW: return "Leontis/Westhof (Centered)";
- case SIMPLE: return "Line";
- case RNAVIZ: return "Circles";
- case NONE: return "None";
- case LW_ALT: return "Leontis/Westhof (End)";
- }
- return "Unspecified";
- }
- public String getOpt()
- {
- switch(this)
- {
- case NONE: return "none";
- case SIMPLE: return "simple";
- case LW: return "lw";
- case RNAVIZ: return "rnaviz";
- case LW_ALT: return "lwalt";
- }
- return "x";
- }
- public static BP_STYLE getStyle(String opt)
- {
- for(BP_STYLE b: BP_STYLE.values())
- {
- if (opt.toLowerCase().equals(b.getOpt().toLowerCase()))
- return b;
- }
- return null;
- }
- };
-
- /**
- * Default values for config options
- */
-
- public static final double MAX_ZOOM = 60;
- public static final double MIN_ZOOM = 0.5;
- public static final double DEFAULT_ZOOM = 1;
- public static final double MAX_AMOUNT = 2;
- public static final double MIN_AMOUNT = 1.01;
- public static final double DEFAULT_AMOUNT = 1.2;
- public static final double DEFAULT_BP_THICKNESS = 1.0;
- public static final double DEFAULT_DIST_NUMBERS = 3.0;
-
- public static final int DEFAULT_PERIOD = 10;
-
- public static final Color DEFAULT_TITLE_COLOR = Color.black;
- public static final Color DEFAULT_BACKBONE_COLOR = Color.DARK_GRAY.brighter();
- public static final Color DEFAULT_BOND_COLOR = Color.blue;
- public static final Color DEFAULT_SPECIAL_BASE_COLOR = Color.green.brighter();
- public static final Color DEFAULT_DASH_BASE_COLOR = Color.yellow.brighter();
- public static final double DEFAULT_BASE_OUTLINE_THICKNESS = 1.5;
- public static final Color BASE_OUTLINE_COLOR_DEFAULT = Color.DARK_GRAY.brighter();
- public static final Color BASE_INNER_COLOR_DEFAULT = new Color(242, 242,242);
- public static final Color BASE_NUMBER_COLOR_DEFAULT = Color.DARK_GRAY;
- public static final Color BASE_NAME_COLOR_DEFAULT = Color.black;
-
- public static final Color DEFAULT_HOVER_COLOR = new Color(230, 230,230);
-
- public static final Color DEFAULT_BACKGROUND_COLOR = Color.WHITE;
- public static final Font DEFAULT_TITLE_FONT = new Font("SansSerif", Font.BOLD,18);
- public static final Font DEFAULT_BASE_FONT = new Font("SansSerif", Font.PLAIN, 18);
- public static final Font DEFAULT_NUMBERS_FONT = new Font("SansSerif",
- Font.BOLD, 18);
- public static final Font DEFAULT_MESSAGE_FONT = Font.decode("dialog-PLAIN-25");
- public static final Color DEFAULT_MESSAGE_COLOR = new Color(230, 230,230);
-
-
- public static final BP_STYLE DEFAULT_BP_STYLE = BP_STYLE.LW;
-
- public static final ModeleColorMap DEFAULT_COLOR_MAP = ModeleColorMap.defaultColorMap();
- public static final Color DEFAULT_COLOR_MAP_OUTLINE = Color.gray;
- public static final double DEFAULT_BP_INCREMENT = 0.65;
-
- public static double DEFAULT_COLOR_MAP_WIDTH = 120;
- public static double DEFAULT_COLOR_MAP_HEIGHT = 30;
- public static double DEFAULT_COLOR_MAP_X_OFFSET = 40;
- public static double DEFAULT_COLOR_MAP_Y_OFFSET = 0;
- public static int DEFAULT_COLOR_MAP_STRIPE_WIDTH = 2;
- public static int DEFAULT_COLOR_MAP_FONT_SIZE = 20;
- public static Color DEFAULT_COLOR_MAP_FONT_COLOR = Color.gray.darker();
-
- public static double DEFAULT_SPACE_BETWEEN_BASES = 1.0;
-
- /**
- * Various options.
- */
-
- public static String XML_VAR_DRAW_OUTLINE = "drawoutline";
- public static String XML_VAR_FILL_BASE = "fillbase";
- public static String XML_VAR_AUTO_FIT = "autofit";
- public static String XML_VAR_AUTO_CENTER = "autocenter";
- public static String XML_VAR_MODIFIABLE = "modifiable";
- public static String XML_VAR_ERRORS = "errors";
- public static String XML_VAR_SPECIAL_BASES = "specialbases";
- public static String XML_VAR_DASH_BASES = "dashbases";
- public static String XML_VAR_USE_BASE_BPS = "usebasebps";
- public static String XML_VAR_DRAW_NC = "drawnc";
- public static String XML_VAR_DRAW_NON_PLANAR = "drawnonplanar";
- public static String XML_VAR_SHOW_WARNINGS = "warnings";
- public static String XML_VAR_COMPARISON_MODE = "comparison";
- public static String XML_VAR_FLAT = "flat";
- public static String XML_VAR_DRAW_BACKGROUND = "drawbackground";
- public static String XML_VAR_COLOR_MAP = "drawcm";
- public static String XML_VAR_DRAW_BACKBONE = "drawbackbone";
-
- public static String XML_VAR_CM_HEIGHT = "cmh";
- public static String XML_VAR_CM_WIDTH = "cmw";
- public static String XML_VAR_CM_X_OFFSET = "cmx";
- public static String XML_VAR_CM_Y_OFFSET = "cmy";
- public static String XML_VAR_DEFAULT_ZOOM = "defaultzoom";
- public static String XML_VAR_ZOOM_AMOUNT = "zoominc";
- public static String XML_VAR_BP_THICKNESS = "bpthick";
- public static String XML_VAR_BASE_THICKNESS = "basethick";
- public static String XML_VAR_DIST_NUMBERS = "distnumbers";
-
- public static String XML_VAR_NUM_PERIOD = "numperiod";
-
- public static String XML_VAR_MAIN_BP_STYLE = "bpstyle";
-
- public static String XML_VAR_CM = "cm";
-
- public static String XML_VAR_BACKBONE_COLOR = "backbonecol";
- public static String XML_VAR_HOVER_COLOR = "hovercol";
- public static String XML_VAR_BACKGROUND_COLOR = "backgroundcol";
- public static String XML_VAR_BOND_COLOR = "bondcol";
- public static String XML_VAR_TITLE_COLOR = "titlecol";
- public static String XML_VAR_SPECIAL_BASES_COLOR = "specialco";
- public static String XML_VAR_DASH_BASES_COLOR = "dashcol";
- public static String XML_VAR_SPACE_BETWEEN_BASES = "spacebetweenbases";
-
- public static String XML_VAR_TITLE_FONT = "titlefont";
- public static String XML_VAR_NUMBERS_FONT = "numbersfont";
- public static String XML_VAR_FONT_BASES = "basefont";
-
- public static String XML_VAR_CM_CAPTION = "cmcaption";
- public static String XML_VAR_TITLE = "title";
-
-
- public boolean _drawOutlineBases = true;
- public boolean _fillBases = true;
- public boolean _autoFit = true;
- public boolean _autoCenter = true;
- public boolean _modifiable = true;
- public boolean _errorsOn = false;
- public boolean _colorSpecialBases = false;
- public boolean _colorDashBases = false;
- public boolean _useBaseColorsForBPs = false;
- public boolean _drawnNonCanonicalBP = true;
- public boolean _drawnNonPlanarBP = true;
- public boolean _showWarnings = false;
- public boolean _comparisonMode = false;
- public boolean _flatExteriorLoop = true;
- public boolean _drawBackground = false;
- public boolean _drawColorMap = false;
- public boolean _drawBackbone = true;
-
- public double _colorMapHeight = DEFAULT_COLOR_MAP_HEIGHT;
- public double _colorMapWidth = DEFAULT_COLOR_MAP_WIDTH;
- public double _colorMapXOffset = DEFAULT_COLOR_MAP_X_OFFSET;
- public double _colorMapYOffset = DEFAULT_COLOR_MAP_Y_OFFSET;
- public double _zoom = DEFAULT_ZOOM;
- public double _zoomAmount = DEFAULT_AMOUNT;
- public double _bpThickness = 1.0;
- public double _baseThickness = DEFAULT_BASE_OUTLINE_THICKNESS;
- public double _distNumbers = DEFAULT_DIST_NUMBERS;
- public double _spaceBetweenBases = DEFAULT_SPACE_BETWEEN_BASES;
-
- public int _numPeriod = DEFAULT_PERIOD;
- public BP_STYLE _mainBPStyle = DEFAULT_BP_STYLE;
-
- public ModeleColorMap _cm = DEFAULT_COLOR_MAP;
-
- public Color _backboneColor = DEFAULT_BACKBONE_COLOR;
- public Color _hoverColor = DEFAULT_HOVER_COLOR;
- public Color _backgroundColor = DEFAULT_BACKGROUND_COLOR;
- public Color _bondColor = DEFAULT_BOND_COLOR;
- public Color _titleColor = DEFAULT_TITLE_COLOR;
- public Color _specialBasesColor = DEFAULT_SPECIAL_BASE_COLOR;
- public Color _dashBasesColor = DEFAULT_DASH_BASE_COLOR;
-
- public Font _titleFont = DEFAULT_TITLE_FONT;
- public Font _numbersFont = DEFAULT_NUMBERS_FONT;
- public Font _fontBasesGeneral = DEFAULT_BASE_FONT;
-
- public String _colorMapCaption = "";
- //public String _title = "";
-
-
- public static String XML_ELEMENT_NAME = "config";
-
- public void toXML(TransformerHandler hd) throws SAXException
- {
- AttributesImpl atts = new AttributesImpl();
- atts.addAttribute("","",XML_VAR_DRAW_OUTLINE,"CDATA", ""+_drawOutlineBases);
- atts.addAttribute("","",XML_VAR_FILL_BASE,"CDATA", ""+_fillBases);
- atts.addAttribute("","",XML_VAR_AUTO_FIT,"CDATA", ""+_autoFit);
- atts.addAttribute("","",XML_VAR_AUTO_CENTER,"CDATA", ""+_autoCenter);
- atts.addAttribute("","",XML_VAR_MODIFIABLE,"CDATA", ""+_modifiable);
- atts.addAttribute("","",XML_VAR_ERRORS,"CDATA", ""+_errorsOn);
- atts.addAttribute("","",XML_VAR_SPECIAL_BASES,"CDATA", ""+_colorSpecialBases);
- atts.addAttribute("","",XML_VAR_DASH_BASES,"CDATA", ""+_colorDashBases);
- atts.addAttribute("","",XML_VAR_USE_BASE_BPS,"CDATA", ""+_useBaseColorsForBPs);
- atts.addAttribute("","",XML_VAR_DRAW_NC,"CDATA", ""+_drawnNonCanonicalBP);
- atts.addAttribute("","",XML_VAR_DRAW_NON_PLANAR,"CDATA",""+_drawnNonPlanarBP);
- atts.addAttribute("","",XML_VAR_SHOW_WARNINGS,"CDATA", ""+_showWarnings);
- atts.addAttribute("","",XML_VAR_COMPARISON_MODE,"CDATA",""+_comparisonMode);
- atts.addAttribute("","",XML_VAR_FLAT,"CDATA", ""+_flatExteriorLoop);
- atts.addAttribute("","",XML_VAR_DRAW_BACKGROUND,"CDATA",""+_drawBackground);
- atts.addAttribute("","",XML_VAR_COLOR_MAP,"CDATA", ""+_drawColorMap);
- atts.addAttribute("","",XML_VAR_DRAW_BACKBONE,"CDATA", ""+_drawBackbone);
-
- atts.addAttribute("","",XML_VAR_CM_HEIGHT,"CDATA", ""+_colorMapHeight);
- atts.addAttribute("","",XML_VAR_CM_WIDTH,"CDATA", ""+_colorMapWidth);
- atts.addAttribute("","",XML_VAR_CM_X_OFFSET,"CDATA", ""+_colorMapXOffset);
- atts.addAttribute("","",XML_VAR_CM_Y_OFFSET,"CDATA", ""+_colorMapYOffset);
- atts.addAttribute("","",XML_VAR_DEFAULT_ZOOM,"CDATA", ""+_zoom);
- atts.addAttribute("","",XML_VAR_ZOOM_AMOUNT,"CDATA", ""+_zoomAmount);
- atts.addAttribute("","",XML_VAR_BP_THICKNESS,"CDATA", ""+_bpThickness);
- atts.addAttribute("","",XML_VAR_BASE_THICKNESS,"CDATA", ""+_baseThickness);
- atts.addAttribute("","",XML_VAR_DIST_NUMBERS,"CDATA", ""+_distNumbers);
- atts.addAttribute("","",XML_VAR_SPACE_BETWEEN_BASES,"CDATA", ""+_spaceBetweenBases);
-
-
- atts.addAttribute("","",XML_VAR_NUM_PERIOD,"CDATA", ""+_numPeriod);
-
- atts.addAttribute("","",XML_VAR_MAIN_BP_STYLE,"CDATA", ""+_mainBPStyle.getOpt());
-
- atts.addAttribute("","",XML_VAR_BACKBONE_COLOR,"CDATA", XMLUtils.toHTMLNotation(_backboneColor));
- atts.addAttribute("","",XML_VAR_HOVER_COLOR,"CDATA", XMLUtils.toHTMLNotation(_hoverColor));
- atts.addAttribute("","",XML_VAR_BACKGROUND_COLOR,"CDATA", XMLUtils.toHTMLNotation(_backgroundColor));
- atts.addAttribute("","",XML_VAR_BOND_COLOR,"CDATA", XMLUtils.toHTMLNotation(_bondColor));
- atts.addAttribute("","",XML_VAR_TITLE_COLOR,"CDATA", XMLUtils.toHTMLNotation(_titleColor));
- atts.addAttribute("","",XML_VAR_SPECIAL_BASES_COLOR,"CDATA",XMLUtils.toHTMLNotation(_specialBasesColor));
- atts.addAttribute("","",XML_VAR_DASH_BASES_COLOR,"CDATA", XMLUtils.toHTMLNotation(_dashBasesColor));
-
- atts.addAttribute("","",XML_VAR_CM,"CDATA", _cm.getParamEncoding());
-
-
- hd.startElement("","",XML_ELEMENT_NAME,atts);
- XMLUtils.toXML(hd, _titleFont,XML_VAR_TITLE_FONT);
- XMLUtils.toXML(hd, _numbersFont,XML_VAR_NUMBERS_FONT);
- XMLUtils.toXML(hd, _fontBasesGeneral,XML_VAR_FONT_BASES);
-
- XMLUtils.exportCDATAElem(hd,XML_VAR_CM_CAPTION, _colorMapCaption);
- hd.endElement("","",XML_ELEMENT_NAME);
- }
-
-
-
-
- public void loadFromXMLAttributes(Attributes attributes)
- {
- _drawOutlineBases = Boolean.parseBoolean(attributes.getValue(XML_VAR_DRAW_OUTLINE));
- _fillBases = Boolean.parseBoolean(attributes.getValue(XML_VAR_FILL_BASE));
- _autoFit = Boolean.parseBoolean(attributes.getValue(XML_VAR_AUTO_FIT));
- _autoCenter = Boolean.parseBoolean(attributes.getValue(XML_VAR_AUTO_CENTER));
- _modifiable = Boolean.parseBoolean(attributes.getValue(XML_VAR_MODIFIABLE));
- _errorsOn = Boolean.parseBoolean(attributes.getValue(XML_VAR_ERRORS));
- _colorSpecialBases = Boolean.parseBoolean(attributes.getValue(XML_VAR_SPECIAL_BASES));
- _colorDashBases = Boolean.parseBoolean(attributes.getValue(XML_VAR_DASH_BASES));
- _useBaseColorsForBPs = Boolean.parseBoolean(attributes.getValue(XML_VAR_USE_BASE_BPS));
- _drawnNonCanonicalBP = Boolean.parseBoolean(attributes.getValue(XML_VAR_DRAW_NC));
- _drawnNonPlanarBP = Boolean.parseBoolean(attributes.getValue(XML_VAR_DRAW_NON_PLANAR));
- _showWarnings = Boolean.parseBoolean(attributes.getValue(XML_VAR_SHOW_WARNINGS));
- _comparisonMode = Boolean.parseBoolean(attributes.getValue(XML_VAR_COMPARISON_MODE));
- _flatExteriorLoop = Boolean.parseBoolean(attributes.getValue(XML_VAR_FLAT));
- _drawBackground = Boolean.parseBoolean(attributes.getValue(XML_VAR_DRAW_BACKGROUND));
- _drawColorMap = Boolean.parseBoolean(attributes.getValue(XML_VAR_COLOR_MAP));
- _drawBackbone = Boolean.parseBoolean(attributes.getValue(XML_VAR_DRAW_BACKBONE));
-
- _colorMapHeight = Double.parseDouble(attributes.getValue(XML_VAR_CM_HEIGHT));
- _colorMapWidth = Double.parseDouble(attributes.getValue(XML_VAR_CM_WIDTH));
- _colorMapXOffset = Double.parseDouble(attributes.getValue(XML_VAR_CM_X_OFFSET));
- _colorMapYOffset = Double.parseDouble(attributes.getValue(XML_VAR_CM_Y_OFFSET));
- _zoom = Double.parseDouble(attributes.getValue(XML_VAR_DEFAULT_ZOOM));
- _zoomAmount = Double.parseDouble(attributes.getValue(XML_VAR_ZOOM_AMOUNT));
- _bpThickness = Double.parseDouble(attributes.getValue(XML_VAR_BP_THICKNESS));
- _baseThickness = Double.parseDouble(attributes.getValue(XML_VAR_BASE_THICKNESS));
- _distNumbers = Double.parseDouble(attributes.getValue(XML_VAR_DIST_NUMBERS));
- _spaceBetweenBases = XMLUtils.getDouble(attributes, XML_VAR_SPACE_BETWEEN_BASES, DEFAULT_SPACE_BETWEEN_BASES);
-
- _numPeriod = Integer.parseInt(attributes.getValue(XML_VAR_NUM_PERIOD));
-
- _mainBPStyle = BP_STYLE.getStyle(attributes.getValue(XML_VAR_MAIN_BP_STYLE));
-
- _backboneColor = Color.decode(attributes.getValue(XML_VAR_BACKBONE_COLOR));
- _hoverColor = Color.decode(attributes.getValue(XML_VAR_HOVER_COLOR));
- _backgroundColor = Color.decode(attributes.getValue(XML_VAR_BACKGROUND_COLOR));
- _bondColor = Color.decode(attributes.getValue(XML_VAR_BOND_COLOR));
- _titleColor = Color.decode(attributes.getValue(XML_VAR_TITLE_COLOR));
- _specialBasesColor = Color.decode(attributes.getValue(XML_VAR_SPECIAL_BASES_COLOR));
- _dashBasesColor = Color.decode(attributes.getValue(XML_VAR_DASH_BASES_COLOR));
-
- _cm = ModeleColorMap.parseColorMap(attributes.getValue(XML_VAR_CM));
- }
-
-
-
- public VARNAConfig clone ()
- {
-
- /**
- * @j2sNative
- *
- * return this;
- *
- */
- try
- {
- ByteArrayOutputStream out = new ByteArrayOutputStream ();
- ObjectOutputStream oout = new ObjectOutputStream (out);
- oout.writeObject (this);
-
- ObjectInputStream in = new ObjectInputStream (
- new ByteArrayInputStream (out.toByteArray ()));
- return (VARNAConfig)in.readObject ();
- }
- catch (Exception e)
- {
- throw new RuntimeException ("cannot clone class [" +
- this.getClass ().getName () + "] via serialization: " +
- e.toString ());
- }
- }
-
-}