package usda.weru.mcrew;

import com.klg.jclass.table.JCCellPosition;
import com.klg.jclass.table.JCTable;
import java.awt.event.MouseEvent;

/**
 *
 * @author jonathanhornbaker
 */
public class UserHelpTable extends JCTable {

    private static final long serialVersionUID = 1L;

    private Table parent;
    
    public UserHelpTable(Table tableIN)
    {
        parent = tableIN;
    }
    
    @Override
    public String getToolTipText(MouseEvent event) 
    {
        try 
        {
            JCCellPosition cp = XYToCell(event.getX(), event.getY());
            ManageData man = parent.getData();
            if((cp.column == -1) && (cp.row == parent.getPivot())) {
                return htmlIfy("Points to operation row indicating which operation to "
                        + "\ndisplay first in the \"WEPS Crop Rotation Mode\". Double "
                        + "\nclicking mouse on vertical \"crop rotation bar\" will move "
                        + "\nthe horizontal black arrow to the indicated row.");
            }
            if((cp.row < 0) || (cp.row >= man.getNumRows())) return null;
            if(cp.column == 1)
            {
                OperationObject op = (OperationObject) man.getDataObject(cp.row, XMLConstants.soperation);
                return htmlIfy(op.getNotes());
            }
            else if(cp.column == 2)
            {
                OperationObject op = (OperationObject) man.getDataObject(cp.row, XMLConstants.soperation);
                CropObject crop = op.getCrop();
                return htmlIfy(crop.getValue("crop_notes"));
            }
            else return null;
        }
        catch(ClassCastException | NullPointerException exc)
        {
            return null;
        }
    }
    
    public static String htmlIfy(String in)
    {
        String out = "<html>";
        String[] lines = in.split("\\r?\\n");
        for(String line : lines)
        {
            out += "<p>";
            out += line;
            out += "</p>";
        }
        out += "</html>";
        return out;
    }
}
