/*
 * This file is part of the Poliqarp suite.
 * 
 * Copyright (C) 2004-2009 by Instytut Podstaw Informatyki Polskiej
 * Akademii Nauk (IPI PAN; Institute of Computer Science, Polish
 * Academy of Sciences; cf. www.ipipan.waw.pl).  All rights reserved.
 * 
 * This file may be distributed and/or modified under the terms of the
 * GNU General Public License version 2 as published by the Free Software
 * Foundation and appearing in the file gpl.txt included in the packaging
 * of this file.  (See http://www.gnu.org/licenses/translations.html for
 * unofficial translations.)
 * 
 * A commercial license is available from IPI PAN (contact
 * Michal.Ciesiolka@ipipan.waw.pl or ipi@ipipan.waw.pl for more
 * information).  Licensees holding a valid commercial license from IPI
 * PAN may use this file in accordance with that license.
 * 
 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING
 * THE WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE.
 */

package ipipan.poliqarp.gui;

import javax.swing.*;

import ipipan.poliqarp.logic.MatchList;
import ipipan.poliqarp.logic.WideContext;

/**
 * This derivate of a <code>JEditorPane</code> is a text area displaying
 * the wide context of a result.
 */
public final class ContextArea extends JEditorPane
{
   private int size;
   private WideContext wc;
   
   /**
    * Constructs a context area.
    */
   public ContextArea()
   {
      super();
      setEditable(false);
      setContentType("text/html");
      size = 11;
      wc = null;
   }

   public void setSize(float size)
   {
      this.size = (int) size;
      updateText();
   }

   private void updateText()
   {
      if (wc != null) {
         setText("<html><span style=\"font: " + size + "pt Georgia, Times New Roman, Times\">" + wc.toHTML() + "</span></html>");
      }
   }

   /**
    * Sets the contents of this area to wide context of a given
    * result of the query.
    * 
    * @param matches list of results of a query
    * @param index index of the match
    */
   public void setContent(MatchList matches, int index)
   {
      wc = matches.getWideContext(index);
      updateText();
   }

   /**
    * Cleans this context area.
    */
   public void wipe()
   {
      setText("");
   }
}
