8ccd68789a
imports. It made two errors, but the compiler found them. I've cvs tagged the tree before doing this, just in case.
146 lines
4.6 KiB
Java
146 lines
4.6 KiB
Java
/*
|
|
The contents of this file are subject to the AMP Open Community License
|
|
Version 1.0 (the "License"); you may not use this file except in compliance
|
|
with the License. You may obtain a copy of the License on the AMP web site
|
|
(http://www.tibet.iteso.mx/Guatemala/).
|
|
|
|
Software distributed under the License is distributed on an "AS IS" basis,
|
|
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
|
|
License for the specific terms governing rights and limitations under the
|
|
License.
|
|
|
|
The Initial Developer of this software is Andres Montano Pellegrini. Portions
|
|
created by Andres Montano Pellegrini are Copyright 2001 Andres Montano
|
|
Pellegrini. All Rights Reserved.
|
|
|
|
Contributor(s): ______________________________________.
|
|
*/
|
|
package org.thdl.tib.scanner;
|
|
|
|
import java.awt.Color;
|
|
import java.awt.Component;
|
|
import java.io.Serializable;
|
|
|
|
import javax.swing.JComponent;
|
|
import javax.swing.JTable;
|
|
import javax.swing.UIManager;
|
|
import javax.swing.border.Border;
|
|
import javax.swing.border.EmptyBorder;
|
|
import javax.swing.table.TableCellRenderer;
|
|
|
|
import org.thdl.tib.input.DuffPane;
|
|
import org.thdl.tib.text.DuffData;
|
|
import org.thdl.tib.text.TibetanDocument;
|
|
import org.thdl.util.ThdlDebug;
|
|
|
|
/** Used by DictionaryTable to display a Tibetan word or phrase
|
|
(in either Roman or Tibetan script) in a single cell.
|
|
|
|
@author Andrés Montano Pellegrini
|
|
@see DictionaryTable
|
|
*/
|
|
public class DuffCellRenderer extends DuffPane implements TableCellRenderer, Serializable
|
|
{
|
|
|
|
protected static Border noFocusBorder = new EmptyBorder(1, 1, 1, 1);
|
|
|
|
// We need a place to store the color the DuffPane should be returned
|
|
// to after its foreground and background colors have been set
|
|
// to the selection background color.
|
|
// These ivars will be made protected when their names are finalized.
|
|
private Color unselectedForeground;
|
|
private Color unselectedBackground;
|
|
|
|
public DuffCellRenderer()
|
|
{
|
|
super();
|
|
setOpaque(true);
|
|
setBorder(noFocusBorder);
|
|
}
|
|
|
|
/**
|
|
* Overrides <code>JComponent.setForeground</code> to assign
|
|
* the unselected-foreground color to the specified color.
|
|
*
|
|
* @param c set the foreground color to this value
|
|
*/
|
|
public void setForeground(Color c) {
|
|
super.setForeground(c);
|
|
unselectedForeground = c;
|
|
}
|
|
|
|
/**
|
|
* Overrides <code>JComponent.setForeground</code> to assign
|
|
* the unselected-background color to the specified color.
|
|
*
|
|
* @param c set the background color to this value
|
|
*/
|
|
public void setBackground(Color c) {
|
|
super.setBackground(c);
|
|
unselectedBackground = c;
|
|
}
|
|
|
|
/**
|
|
* Notification from the <code>UIManager</code> that the look and feel
|
|
* [L&F] has changed.
|
|
* Replaces the current UI object with the latest version from the
|
|
* <code>UIManager</code>.
|
|
*
|
|
* @see JComponent#updateUI
|
|
*/
|
|
public void updateUI() {
|
|
super.updateUI();
|
|
setForeground(null);
|
|
setBackground(null);
|
|
}
|
|
|
|
public Component getTableCellRendererComponent(JTable table, Object value,
|
|
boolean isSelected, boolean hasFocus, int row, int column)
|
|
{
|
|
if (isSelected)
|
|
{
|
|
super.setForeground(table.getSelectionForeground());
|
|
super.setBackground(table.getSelectionBackground());
|
|
}
|
|
else
|
|
{
|
|
super.setForeground((unselectedForeground != null) ? unselectedForeground : table.getForeground());
|
|
super.setBackground((unselectedBackground != null) ? unselectedBackground : table.getBackground());
|
|
}
|
|
|
|
if (hasFocus) {
|
|
setBorder( UIManager.getBorder("Table.focusCellHighlightBorder") );
|
|
if (table.isCellEditable(row, column)) {
|
|
super.setForeground( UIManager.getColor("Table.focusCellForeground") );
|
|
super.setBackground( UIManager.getColor("Table.focusCellBackground") );
|
|
}
|
|
} else {
|
|
setBorder(noFocusBorder);
|
|
}
|
|
|
|
setValue(value);
|
|
|
|
// ---- begin optimization to avoid painting background ----
|
|
Color back = getBackground();
|
|
boolean colorMatch = (back != null) && ( back.equals(table.getBackground()) ) && table.isOpaque();
|
|
setOpaque(!colorMatch);
|
|
// ---- end optimization to aviod painting background ----
|
|
|
|
return this;
|
|
}
|
|
|
|
public void setValue(Object value)
|
|
{
|
|
TibetanDocument doc = (TibetanDocument) getDocument();
|
|
try
|
|
{
|
|
doc.remove(0, doc.getLength());
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
System.out.println(e);
|
|
ThdlDebug.noteIffyCode();
|
|
}
|
|
doc.insertDuff(0, (DuffData []) value);
|
|
}
|
|
}
|