All Downloads are FREE. Search and download functionalities are using the official Maven repository.

syntaxhighlight.Style Maven / Gradle / Ivy

There is a newer version: 1.9
Show newest version
// Copyright (c) 2012 Chan Wai Shing
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package syntaxhighlight;

import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import java.awt.*;

/**
 * The style used by {@link syntaxhiglight.Theme} as those of CSS styles.
 * 
 * @author Chan Wai Shing 
 */
public class Style implements Cloneable {

  /**
   * It indicate whether the {@link #attributeSet} has updated after any style 
   * changes.
   */
  protected boolean changed;
  /**
   * The {@link AttributeSet} representation of this style.
   */
  protected SimpleAttributeSet attributeSet;
  /**
   * Font bold.
   */
  protected boolean bold;
  /**
   * Font color.
   */
  protected Color color;
  /**
   * The background color, null means no background color is set.
   */
  protected Color background;
  /**
   * Font underline.
   */
  protected boolean underline;
  /**
   * Font italic.
   */
  protected boolean italic;

  /**
   * Constructor.
   * 

* Default values:
*

    *
  • bold: false;
  • *
  • color: black;
  • *
  • background: null;
  • *
  • underline: false;
  • *
  • italic: false;
  • *
*

*/ public Style() { changed = true; attributeSet = null; bold = false; color = Color.black; background = null; underline = false; italic = false; } /** * Get the {@link AttributeSet} of this style. * @return the {@link AttributeSet} */ public SimpleAttributeSet getAttributeSet() { if (changed) { attributeSet = new SimpleAttributeSet(); StyleConstants.setBold(attributeSet, bold); StyleConstants.setForeground(attributeSet, color); if (background != null) { StyleConstants.setBackground(attributeSet, background); } StyleConstants.setUnderline(attributeSet, underline); StyleConstants.setItalic(attributeSet, italic); changed = false; } return attributeSet; } /** * Get the background color. * @return the background color or null if no color is set */ public Color getBackground() { return background; } /** * Set the background color. * @param background null means do not set the background */ public void setBackground(Color background) { changed = true; this.background = background; } public boolean isBold() { return bold; } public void setBold(boolean bold) { changed = true; this.bold = bold; } public Color getColor() { return color; } public void setColor(Color color) { if (color == null) { throw new NullPointerException("argument 'color' cannot be null"); } changed = true; this.color = color; } public boolean isItalic() { return italic; } public void setItalic(boolean italic) { changed = true; this.italic = italic; } public boolean isUnderline() { return underline; } public void setUnderline(boolean underline) { changed = true; this.underline = underline; } /** * {@inheritDoc} */ @Override public int hashCode() { int hash = 7; hash = 97 * hash + (this.bold ? 1 : 0); hash = 97 * hash + (this.color != null ? this.color.hashCode() : 0); hash = 97 * hash + (this.background != null ? this.background.hashCode() : 0); hash = 97 * hash + (this.underline ? 1 : 0); hash = 97 * hash + (this.italic ? 1 : 0); return hash; } /** * {@inheritDoc} */ @Override public boolean equals(Object obj) { if (obj == null || !(obj instanceof Style)) { return false; } if (obj == this) { return true; } Style _object = (Style) obj; return _object.bold == bold && _object.color.equals(color) && _object.background.equals(background) && _object.underline == underline && _object.italic == italic; } /** * {@inheritDoc} */ @Override public Style clone() { Style object = null; try { object = (Style) super.clone(); } catch (CloneNotSupportedException ex) { } return object; } /** * {@inheritDoc} */ @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append("["); sb.append(getClass().getName()); sb.append(": "); sb.append("bold: ").append(bold); sb.append(", "); sb.append("color: ").append(color); sb.append(", "); sb.append("background: ").append(background); sb.append(", "); sb.append("underline: ").append(underline); sb.append(", "); sb.append("italic: ").append(italic); sb.append("]"); return sb.toString(); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy