/*
* Freeplane - mind map editor
* Copyright (C) 2011 dimitry
*
* This file author is dimitry
*
* This program 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 2 of the License, or
* (at your option) any later version.
*
* This program 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 this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.freeplane.plugin.script;
import java.awt.Component;
import java.awt.Dimension;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComponent;
import javax.swing.JList;
import org.freeplane.core.util.HtmlUtils;
/**
* @author Dimitry Polivaev
* Jul 23, 2011
*/
public class ScriptRenderer extends DefaultListCellRenderer{
private static final long serialVersionUID = 1L;
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected,
boolean cellHasFocus) {
final JComponent renderer = (JComponent) super.getListCellRendererComponent(list, firstLine(value), index, isSelected, cellHasFocus);
final String script = value.toString();
if(script.contains("\n")) {
renderer.setToolTipText(HtmlUtils.plainToHTML(script));
}
return renderer;
}
private Object firstLine(Object value) {
if(! (value instanceof String) )
return value;
String script = ((String) value).trim();
return script.substring(0, Math.min(40, script.length())).trim().replaceAll("\\s+", " ");
}
@Override
public Dimension getPreferredSize() {
final Dimension preferredSize = super.getPreferredSize();
if(! isPreferredSizeSet())
preferredSize.width = 100;
return preferredSize;
}
}