Package hexenschach.gui

Source Code of hexenschach.gui.DirectHelp

package hexenschach.gui;
import java.awt.Dimension;
import javax.swing.JPanel;
import javax.swing.JEditorPane;
import javax.swing.text.html.HTMLEditorKit;

/**
* Panel, welches die Direkthilfe-Box enthaelt.
* @author Tobias Marquardt
*/
public class DirectHelp extends JPanel implements GUIContainer {
  private static final long serialVersionUID = 3784838270016625250L;
  private GUI gui;
  // JEditorPane zur Anzeige der Direkthilfe
  private JEditorPane helpBox;
  static final int xSizeHelpBox = 315;
  static final int ySizeHelpBox = 137;
  static final int xPosHelpBox = 5;
  static final int yPosHelpBox = 7;
  // Größe des Panels
  static final int xSize = 328;
  static final int ySize = 150;
  // Maximale Anzahl Zeilen
  static final int maxLines = 7;
  // Der aktuelle Text in der Direkt-Hilfe
  private String text;
 
  DirectHelp(GUI gui) {
    this.gui = gui;
    initLayout();
    initComponents();
    initContainerProperties();
    gui.setDirectHelpReference(this);
    text = "";
  }
  public void initLayout() { 
    setLayout(null);
  }
  public void initComponents() {
    helpBox = new JEditorPane();
    // HTML-Formatierung im Pane benutzen
    helpBox.setEditorKit(new HTMLEditorKit());
    helpBox.setEditable(false);
    helpBox.setOpaque(false);
    helpBox.setBounds(xPosHelpBox, yPosHelpBox, xSizeHelpBox, ySizeHelpBox);
    add(helpBox);
  }
  public void initContainerProperties() {
    setOpaque(false); //Paneltransparenz
    setBorder(null);
    setPreferredSize(new Dimension(xSize, ySize));
  }
 
  public void setText(String newLine) {
    // Wenn der text leer ist (was normalerweise beim ersten Aufruf von setText
    // der Fall ist, fülle Textbox komplett mit Zeilenumbrüchen.
    if(text.equals("")) {
      for(int i = 0; i < maxLines; i++)
        text = text + "<br />";
    }
    // Nachsehn, ob in newLine Break-Tags enthalten sind. Wenn ja, wie viele?
    int breaksInNewLine = countBreaks(newLine);
    // Am Anfang des Textes so viele Zeilen entfernen,
    // wie Zeilenumbrüche in newLine vorhanden sind.
    int i = 0;
    do {
      removeFirstLine();
      i++;
    }
    while(i <= breaksInNewLine);
    // Füge die neue Zeile hinzu
    text = text + newLine + "<br />" ;
    // Textfeld aktualisieren
    helpBox.setText("<font face=\"\"color=\"ecb64a\">" + text + "</font>");
  }
  /**
   * Zählt wie oft "<br />" im übergebenen Text enthalten ist.
   * @param text String in dem nach HTML-Umbrüchen gesucht werden soll.
   * @return Anzahl der Umbrüche
   */
  private int countBreaks(String text) {
    if(text.indexOf("<br />") == -1)
      return 0;
    else
      return countBreaks(text.substring(text.indexOf("<br />") + 6)) + 1;
  }
  /**
   * Löscht die erste Zeile des Textfeldes.
   * Dabei wird einfach das erste Break-Tag gesucht
   * und mit allem was davor steht gelöscht.
   */
  private void removeFirstLine() {
    int firstBreak = text.indexOf("<br />");
    text = text.substring(firstBreak + 6);
  }
  /**
   * Lösch alle Text-Zeilen aus der Direkt-Hilfe.
   */
  public void deleteText() {
    text = "";
  }
}
TOP

Related Classes of hexenschach.gui.DirectHelp

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.