
jive.MultiLineCellRenderer Maven / Gradle / Ivy
The newest version!
package jive;
/**
* Copyright: Copyright (c) 2002
* @author Guillaume Barreau ([email protected])
* @version 1.0
*
* Distributable under GPL license.
* See terms of license at gnu.org.
*/
import fr.esrf.tangoatk.widget.util.ATKGraphicsUtils;
import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.border.Border;
import javax.swing.plaf.basic.BasicTextFieldUI;
import javax.swing.table.TableCellRenderer;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Vector;
import java.util.regex.Pattern;
class DevItem {
String str;
int x;
int y;
int h;
boolean isDevice;
}
public class MultiLineCellRenderer extends JTextArea implements TableCellRenderer {
private final static Font TABLE_FONT = new Font("Dialog",Font.PLAIN,12);
private final static Font TABLE_FONT_BOLD = new Font("Dialog",Font.BOLD,12);
private static BufferedImage arrowButton = null;
Color selColor = new Color(200,200,255);
Border selBorder = BorderFactory.createLineBorder(selColor);
private boolean doBold = false;
private boolean doSelection = false;
private Vector items;
private boolean hasDevice = false;
private boolean doDevice = true;
public MultiLineCellRenderer() {
setLayout(null);
setEditable(false);
setLineWrap(false);
setWrapStyleWord(false);
items = new Vector();
if( arrowButton==null ) {
try {
arrowButton = ImageIO.read(MultiLineCellRenderer.class.getResource("/jive/arrow_btn.gif"));
} catch(IOException e) {
System.out.println("Warning, /jive/arrow_btn.gif is missing");
}
}
}
public MultiLineCellRenderer(boolean doBold,boolean doSelection,boolean doDevice) {
this();
this.doBold = doBold;
this.doSelection = doSelection;
this.doDevice = doDevice;
}
public Component getTableCellRendererComponent(JTable table,Object value,
boolean isSelected, boolean hasFocus, int row, int column) {
boolean selectable = true;
if (value instanceof String) {
if( doBold ) {
String str = (String)value;
if( str.startsWith("/B") ) {
setFont(TABLE_FONT_BOLD);
setText(str.substring(2));
selectable = false;
} else {
setFont(TABLE_FONT);
setText(str);
}
} else {
setText((String)value);
}
// set the table's row height, if necessary
//updateRowHeight(row,getPreferredSize().height);
}
else
setText("");
if (doSelection && selectable) {
int[] selRows = table.getSelectedRows();
if (JiveUtils.contains(selRows, row) && column == 0)
setBackground(selColor);
else
setBackground(Color.WHITE);
if (isSelected && column >= 1) {
setBorder(selBorder);
} else {
setBorder(null);
}
} else {
setBackground(Color.WHITE);
setBorder(null);
}
return this;
}
public void setText(String text) {
super.setText(text);
if(!doDevice) return;
items.clear();
if(text.length()==0) {
hasDevice = false;
return;
}
String[] lines = JiveUtils.makeStringArray(text);
int y = 0;
boolean hasDev = false;
for(int i=0;i2) && (y>di.y+2) && (y
© 2015 - 2025 Weber Informatics LLC | Privacy Policy