/*
* TableComponent.java -- GUI Table class
* Filemake to SQL Converter
* Copyright (C) 2004 Robert Gordesch (rogo@mpiwg-berlin.mpg.de)
* 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. Please read license.txt for the full details. A copy of
* the GPL may be found at http://www.gnu.org/copyleft/lgpl.html You should
* have received a copy of the GNU General Public License along with this
* program; if not, write to the Free Software Foundation, Inc., 59 Temple
* Place, Suite 330, Boston, MA 02111-1307 USA Created on 15.09.2003 by
* rogo
*/
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.awt.*;
import javax.swing.table.*;
import javax.swing.event.*;
/**
Table component
*/
public class TableComponent extends JPanel implements TableModelListener
{
JScrollPane tableScroller;
JTable table;
DefaultTableModel tableModel;
JPanel content;
int row, col;
int realCount = 0;
String columnNames[] = { "no database", "connection" };
String[][] rowData = { { "", "" }
};
boolean callState = false;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
static JLabel label;
int selIndex = 0;
Icon trueIcon = null, falseIcon = null, empty = null;
TableComponent tableComp = this;
BooleanRenderer booleanRenderer = new BooleanRenderer();
/**
* Constructs an empty table with default header and dummy data
*/
public TableComponent()
{
try
{
trueIcon = new ImageIcon(getClass().getResource("icons/ok.gif"));
falseIcon = new Icon()
{
public int getIconHeight()
{
return 23;
}
public int getIconWidth()
{
return 27;
}
public void paintIcon(Component c, Graphics g, int x, int y)
{
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.blue);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setStroke(new BasicStroke(2.0f));
int xr = x + 20, yr = y + 15;
int xl = x + 5, yl = y + 5;
g2.drawLine(xl, yl, xr, yr);
g2.drawLine(xl, yr, xr, yl);
}
};
empty = new Icon()
{
public int getIconHeight()
{
return 23;
}
public int getIconWidth()
{
return 27;
}
public void paintIcon(Component c, Graphics g, int x, int y)
{
}
};
} catch (Exception e)
{
System.out.println("Error while loading ok.gif");
}
content = this;
tableModel = new DefaultTableModel(rowData, columnNames)
{
boolean firstCall = true;
public Class getColumnClass(int column)
{
if (row > dataVector.size())
row = dataVector.size() - 1;
Vector rowVector = (Vector) dataVector.elementAt(row);
if (rowVector.isEmpty())
return Object.class;
if (rowVector.elementAt(column) == null)
return Object.class;
else
return rowVector.elementAt(column).getClass();
}
public Object getValueAt(int i, int j)
{
if (((Vector) dataVector.elementAt(i)).isEmpty())
return null;
else
return super.getValueAt(i, j);
}
public void setDataVector(Vector rows, Vector columnNames)
{
// System.out.println(firstCall);
if (firstCall)
{
realCount = rows.size();
//System.out.println(realCount);
} else
firstCall = true;
super.setDataVector(rows, columnNames);
//realCount =(rows==null) ? 0:rows.size();
}
};
table = new JTable(tableModel)
{
public TableCellRenderer getCellRenderer(int row, int column)
{
tableComp.row = row;
TableCellRenderer renderer = null;
if (renderer == null)
{
renderer = getDefaultRenderer(getColumnClass(column));
}
return renderer;
}
public TableCellEditor getCellEditor(int row, int column)
{
tableComp.row = row;
TableCellEditor editor = null;
if (editor == null)
{
editor = getDefaultEditor(getColumnClass(column));
}
return editor;
}
public boolean isCellEditable(int row, int column)
{
tableComp.row = row;
boolean value = false;
if (getColumnClass(column) == ArrayList.class || getColumnClass(column) == JComboBox.class || getColumnClass(column) == SQLCommand.class || getColumnClass(column) == IDComboBox.class|| getColumnClass(column) == Boolean.class)
value = true;
//System.out.println("tried to edit at row "+row+" column "+column+" "+value);
return value;
}
/* public boolean editCellAt(int row, int column, EventObject e){
System.out.println(getCellEditor());
if(isEditing()) editingStopped(null);
return super.editCellAt(row,col,e);
}*/
};
table.getColumnModel().getColumn(0).setPreferredWidth(200);
table.getColumnModel().getColumn(1).setPreferredWidth(50);
row = tableModel.getRowCount();
col = tableModel.getColumnCount();
((DefaultTableModel) table.getModel()).setRowCount(10);
tableScroller = new JScrollPane(table);
Dimension d = table.getPreferredSize();
tableScroller.setPreferredSize(new Dimension(d.width, d.height + 9));
content.add(tableScroller);
((DefaultTableModel) table.getModel()).setRowCount(74);
tableModel.addTableModelListener(this);
setLayout(new FlowLayout(FlowLayout.LEFT));
//this.add(content);
table.setDefaultEditor(JComboBox.class, new VectorEditor());
table.setDefaultRenderer(JComboBox.class, new VectorCellRenderer());
table.setDefaultEditor(ArrayList.class, new ArrayListEditor());
table.setDefaultRenderer(ArrayList.class, new ArrayListCellRenderer());
/* table.setDefaultEditor(SQLCommand.class,new DefaultCellEditor(new JTextField()) {
public Object getCellEditorValue()
{
return new SQLCommand(super.getCellEditorValue().toString());
}
});*/
table.setDefaultEditor(SQLCommand.class, new SQLCommandEditor());
table.setDefaultRenderer(Boolean.class, booleanRenderer);
table.setRowHeight(20);
}
/**
* Fills the table with the array of Objects
*@param array of Objects
*
*/
public void setData(Object[][] data)
{
callState = true;
clear();
for (int i = 0; i < tableModel.getColumnCount(); ++i)
{
for (int j = 0; j < data[0].length; ++j)
{
tableModel.setValueAt(data[i][j], j, i);
}
}
callState = false;
//tableModel.setDataVector(data,columnNames);
//tableModel.setRowCount(100);
} // to method
public void clear()
{
callState = true;
for (int i = 0; i < tableModel.getColumnCount(); ++i)
{
for (int j = 0; j < tableModel.getRowCount(); ++j)
{
tableModel.setValueAt("", j, i);
}
}
//tableModel.setDataVector(rowData,columnNames);
//tableModel.setRowCount(100);
}
public void disable(boolean state)
{
if (state)
{
table.setEnabled(state);
} else
{
clear();
table.setEnabled(state);
}
}
public void setEnabled(boolean state)
{
table.setEnabled(state);
}
public void tableChanged(TableModelEvent e)
{
}
public int getMaxHeaderWidth()
{
TableColumnModel model = table.getColumnModel();
int maxWidth = -10000000;
for (int i = 0; i < model.getColumnCount(); ++i)
{
label = new JLabel(model.getColumn(i).getHeaderValue().toString());
int width = label.getPreferredSize().width + 20;
if (width > maxWidth)
maxWidth = width;
}
return maxWidth;
}
public void enlarge(int windowWidth, int windowHeight)
{
// Class tre=table.getColumnModel().getColumn(1).getHeaderValue().getClass();
//Graphics2D g2=((Graphics2D)getGraphics());
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
TableColumnModel model = table.getColumnModel();
for (int i = 0; i < model.getColumnCount(); ++i)
{
label = new JLabel(model.getColumn(i).getHeaderValue().toString());
//System.out.println("labelWith "+label.getPreferredSize().width);
if(label.getText().equals(" "))
model.getColumn(i).setPreferredWidth(20);
else
model.getColumn(i).setPreferredWidth(label.getPreferredSize().width + 50);
}
Dimension d = table.getPreferredSize();
Dimension d2 = tableScroller.getPreferredSize();
tableScroller.setPreferredSize(new Dimension((d.width >= screenSize.width) ? (screenSize.width - 50) : (d.width), d2.height));
// tableModel.setRowCount(80);
if (d.width < windowWidth)
model.getColumn(model.getColumnCount() - 1).setPreferredWidth((windowWidth - d.width) + model.getColumn(model.getColumnCount() - 1).getPreferredWidth());
table.setGridColor(Color.red);
d2 = tableScroller.getPreferredSize();
table.validate();
content.setPreferredSize(new Dimension(d2.width, d2.height + 10));
content.validate();
}
public void sizeToFit(int windowWidth, int windowHeight)
{
//table.setAutoResizeMode(table.AUTO_RESIZE_LAST_COLUMN);
TableColumnModel model = table.getColumnModel();
Dimension d2 = getPreferredSize();
int columnWidth = (windowWidth) / model.getColumnCount();
for (int i = 0; i < model.getColumnCount(); ++i)
{
model.getColumn(i).setPreferredWidth(columnWidth);
//model.getColumn (i).setWidth(columnWidth);
}
// System.out.println(table.getPreferredSize()+" "+model.getTotalColumnWidth()+" "+columnWidth);
/* Dimension d = table.getPreferredSize();
d2=getPreferredSize();
System.out.println("window width"+windowWidth+" width "+d2.width+" "+model.getTotalColumnWidth());
// d2=getPreferredSize();
tableScroller.setPreferredSize(new Dimension( windowWidth, d.height));
// System.out.println("window width"+windowWidth+" "+windowHeight+" "+getWidth()+" "+getHeight());
table.setAutoResizeMode(table.AUTO_RESIZE_OFF);
*/
Dimension d = table.getPreferredSize();
if (columnWidth < getMaxHeaderWidth() || d.width > screenSize.width)
enlarge(windowWidth, windowHeight);
table.validate();
table.setGridColor(Color.red);
}
class VectorEditor implements TableCellEditor, ActionListener
{
JComboBox box = new JComboBox();
DefaultComboBoxModel model = new DefaultComboBoxModel();
JComboBox boxValue;
CellEditorListener listener = table;
int row, column;
public VectorEditor()
{
// super(new JCheckBox());
box.addActionListener(this);
/* box.addFocusListener(new FocusAdapter() {
public void focusLost(FocusEvent e)
{
VectorEditor.this.listener.editingStopped(new ChangeEvent(VectorEditor.this));
System.out.println("lost focus");
}
});*/
}
public Object getCellEditorValue()
{
//selIndex = box.getSelectedIndex();
System.out.println("Called " + selIndex);
//tableModel.fireTableCellUpdated(row,column);
if (box.getModel().getSize() > 0)
return boxValue;
else
return null;
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
{
boxValue = (value != null) ? (JComboBox) value : null;
this.row = row;
this.column = column;
if (boxValue != null)
box.setModel(boxValue.getModel());
else
return null;
return box;
}
public boolean isCellEditable(EventObject anEvent)
{
if (table.isEditing())
{
// System.out.println(getCellEditorValue());
if (listener != null)
listener.editingStopped(new ChangeEvent(this));
// listener = null;
// Object local =getCellEditorValue();
//table.getModel().setValueAt(local, table.getEditingRow(), table.getEditingColumn());
// table.remove(label);
// table.validate();
//System.out.println("before "+table.getComponentCount());
// if(table.getEditor)
// table.editCellAt(row,column);
// table.removeAll();
//return null;
}
//System.out.println(anEvent);
return true;
}
public boolean shouldSelectCell(EventObject anEvent)
{
//System.out.println(anEvent);
return true;
}
public boolean stopCellEditing()
{
return true;
}
public void cancelCellEditing()
{
listener.editingStopped(new ChangeEvent(this));
}
public void addCellEditorListener(CellEditorListener l)
{
listener = l;
//System.out.println(l);
}
public void removeCellEditorListener(CellEditorListener l)
{
//System.out.println("removed listener");
}
/* (non-Javadoc)
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent e)
{
// System.out.println(e.getActionCommand());
if (table.isEditing())
if (listener != null)
listener.editingStopped(new ChangeEvent(this));
}
}
class SQLCommandEditor implements TableCellEditor
{
JTextArea editor = new JTextArea();
JScrollPane pane = new JScrollPane(editor);
JDialog window;
CellEditorListener listener = table;
JLabel label = new JLabel();
int x = 0, y = 0;
String copy = "";
boolean removeCalled = true;
public SQLCommandEditor()
{
// super(new JCheckBox());
//this.list = list;
editor.getDocument().addDocumentListener(new DocumentListener()
{
public void insertUpdate(DocumentEvent e)
{
//System.out.println(editor.getText().charAt( e.getOffset()));
copy = editor.getText();
if (copy.charAt(e.getOffset()) == '\n')
{
window.setSize(window.getWidth(), window.getHeight() + 20);
window.validate();
}
}
public void removeUpdate(DocumentEvent e)
{
if (copy.charAt(e.getOffset()) == '\n')
{
window.setSize(window.getWidth(), window.getHeight() - 20);
window.validate();
copy = editor.getText();
}
}
public void changedUpdate(DocumentEvent e)
{
}
});
table.addMouseListener(new MouseAdapter()
{
public void mouseEntered(MouseEvent e)
{
if (true)
return;
//System.out.println(e);
x = e.getX();
y = e.getY();
int row = table.rowAtPoint(new Point(e.getX(), e.getY()));
int col = table.columnAtPoint(new Point(e.getX(), e.getY()));
if (window != null)
{
if (!window.isVisible())
return;
} else
return;
if (row != table.getEditingRow() || col != table.getEditingColumn())
if (listener != null)
{
listener.editingStopped(new ChangeEvent(this));
listener = null;
}
}
public void mousePressed(MouseEvent e)
{
// System.out.println(e);
x = e.getX();
y = e.getY();
if (window != null)
if (!window.isVisible())
return;
int row = table.rowAtPoint(new Point(x, y));
int col = table.columnAtPoint(new Point(x, y));
if (row != table.getEditingRow() || col != table.getEditingColumn())
if (listener != null)
{
listener.editingStopped(new ChangeEvent(this));
listener = null;
}
}
public void mouseExited(MouseEvent e)
{
// System.out.println(e);
}
});
}
public Object getCellEditorValue()
{
window.setVisible(false);
window.dispose();
//table.repaint();
return new SQLCommand(editor.getText());
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
{
// checks if editor was finished if not remove old editor
//this.row=row;
SQLCommand command = (value != null) ? (SQLCommand) value : null;
editor.setText(command.toString());
System.out.println("editor size " + editor.getPreferredSize());
pane.setBorder(new javax.swing.border.LineBorder(Color.red));
if (window == null)
{
window = new JDialog(FM2SQL.fmInstance);
window.getContentPane().add(pane);
window.addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
if (listener != null)
{
listener.editingStopped(new ChangeEvent(this));
listener = null;
}
}
});
}
Point p = table.getLocationOnScreen();
// if(label.isShowing())
// System.out.println( label.getLocationOnScreen());
Dimension dimEditor = editor.getPreferredSize();
if (dimEditor.width < 260)
dimEditor.width = 260;
window.setSize((dimEditor.width < 280) ? dimEditor.width + 20 : 280, (dimEditor.height > 50) ? 200 : 70);
TableColumnModel model = table.getColumnModel();
int offset_x = 0, offset_y = 0;
for (int i = 0; i <= column; ++i)
{
if (i == column)
offset_x -= (window.getWidth() - model.getColumn(i).getWidth()) / 2;
else
offset_x += model.getColumn(i).getWidth();
}
for (int i = 0; i < row; ++i)
{
offset_y += table.getRowHeight(row);
}
// System.out.println(table.getCellRect(row, column, false));
window.setTitle("Editing row " + row + " column " + column);
window.setLocation(p.x + offset_x, p.y + offset_y);
window.setVisible(true);
System.out.println("row " + row + " col " + column + " location" + window.getLocation());
// window.setVisible(true);
//label=new JLabel(command.toString());
label.setText(command.toString());
label.setForeground(Color.red);
return label;
}
public boolean isCellEditable(EventObject anEvent)
{
if (table.isEditing())
{
if (listener == null)
listener = table;
if (listener != null)
listener.editingStopped(new ChangeEvent(this));
}
return true;
}
public boolean shouldSelectCell(EventObject anEvent)
{
return true;
}
public boolean stopCellEditing()
{
return true;
}
public void cancelCellEditing()
{
System.out.println("cancel was called");
}
public void addCellEditorListener(CellEditorListener l)
{
removeCalled = false;
listener = l;
}
public void removeCellEditorListener(CellEditorListener l)
{
//if(listener!=null)
removeCalled = true;
//table.removeAll();
System.out.println("remove was called");
}
}
class ArrayListEditor implements TableCellEditor
{
JList list = new JList();
ArrayList vec = new ArrayList();
DefaultListModel model = new DefaultListModel();
JScrollPane pane = new JScrollPane(list);
JWindow window;
CellEditorListener listener = table;
int row, x, y;
public ArrayListEditor()
{
// super(new JCheckBox());
//this.list = list;
table.addMouseListener(new MouseAdapter()
{
public void mouseEntered(MouseEvent e)
{
// if(true) return;
//System.out.println(e);
x = e.getX();
y = e.getY();
int row = table.rowAtPoint(new Point(e.getX(), e.getY()));
int col = table.columnAtPoint(new Point(e.getX(), e.getY()));
if (window != null)
{
if (!window.isVisible())
return;
} else
return;
if (row != table.getEditingRow() || col != table.getEditingColumn())
if (listener != null)
{
listener.editingStopped(new ChangeEvent(this));
//listener = null;
}
}
public void mousePressed(MouseEvent e)
{
// System.out.println(e);
x = e.getX();
y = e.getY();
if (window != null)
if (!window.isVisible())
return;
int row = table.rowAtPoint(new Point(x, y));
int col = table.columnAtPoint(new Point(x, y));
if (row != table.getEditingRow() || col != table.getEditingColumn())
if (listener != null)
{
listener.editingStopped(new ChangeEvent(this));
//listener = null;
}
}
public void mouseExited(MouseEvent e)
{
// System.out.println(e);
}
});
pane.addFocusListener(new FocusAdapter()
{
public void focusLost(FocusEvent e)
{
listener.editingStopped(new ChangeEvent(this));
// table.setRowHeight(row,20);
System.out.println("lost focus");
}
});
pane.addMouseListener(new MouseAdapter()
{
public void mouseExited(MouseEvent e)
{
// System.out.println(e);
listener.editingStopped(new ChangeEvent(this));
}
});
}
public Object getCellEditorValue()
{
selIndex = list.getSelectedIndex();
window.setVisible(false);
window.dispose();
// table.setRowHeight(row,20);
return vec;
}
public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column)
{
this.row = row;
vec = (value != null) ? (ArrayList) value : new ArrayList();
model.clear();
for (int i = 0; i < vec.size(); ++i)
model.addElement(vec.get(i));
list.setModel(model);
list.setModel(model);
pane.setBorder(new javax.swing.border.LineBorder(Color.red));
//if(!isSelected)
//table.setRowHeight(row,80);
if (window == null)
{
window = new JWindow(FM2SQL.fmInstance);
window.getContentPane().add(pane);
}
Point p = table.getLocationOnScreen();
// if(label.isShowing())
// System.out.println( label.getLocationOnScreen());
Dimension dimEditor = pane.getPreferredSize();
window.setSize((dimEditor.width < 250) ? dimEditor.width + 20 : 250, (dimEditor.height > 50) ? 200 : 50);
TableColumnModel model = table.getColumnModel();
int offset_x = 0, offset_y = 0;
for (int i = 0; i <= column; ++i)
{
if (i == column)
offset_x -= (window.getWidth() - model.getColumn(i).getWidth()) / 2;
else
offset_x += model.getColumn(i).getWidth();
}
for (int i = 0; i < row; ++i)
{
offset_y += table.getRowHeight(row);
}
window.setVisible(true);
// System.out.println(table.getCellRect(row, column, false));
window.setLocation(p.x + offset_x, p.y + offset_y);
// System.out.println("row "+row+" col "+column+" location"+ window.getBounds());
// window.setVisible(true);
//label=new JLabel(command.toString());
label.setText("editing");
label.setForeground(Color.red);
return label;
// return pane;
}
public boolean isCellEditable(EventObject anEvent)
{
if (table.isEditing())
{
System.out.println("Editing is in progress");
// if (listener == null)
// listener = table;
if (listener != null)
listener.editingStopped(new ChangeEvent(this));
}
return true;
}
public boolean shouldSelectCell(EventObject anEvent)
{
return true;
}
public boolean stopCellEditing()
{
return true;
}
public void cancelCellEditing()
{
}
public void addCellEditorListener(CellEditorListener l)
{
listener = l;
}
public void removeCellEditorListener(CellEditorListener l)
{
System.out.println(l);
}
}
class VectorCellRenderer implements TableCellRenderer
{
JList list = new JList();
JComboBox box;
JLabel label = new JLabel();
DefaultListModel model = new DefaultListModel();
JScrollPane listScroller = new JScrollPane(list);
Color noIDColor=new Color(50,50,200);
public VectorCellRenderer()
{
//list = new JList();
// vec = new Vector();
label.setForeground(Color.blue);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
box = (JComboBox) value;
if (box == null)
return null; //label.setText("");
else if (box.getSelectedItem() != null)
{
String text = box.getSelectedItem().toString();
if (text == "")
{
if (box instanceof IDComboBox)
{
text = "\"no ID\"";
label.setForeground(noIDColor);
} else
{
text = "\"no Layout\"";
label.setForeground(Color.red);
}
} else
{
if (box instanceof IDComboBox)
label.setForeground(Color.darkGray);
else
label.setForeground(Color.blue);
}
label.setText(text);
} else
label.setText("");
return label;
}
}
class ArrayListCellRenderer implements TableCellRenderer
{
JList list = new JList();
ArrayList vec;
JLabel label = new JLabel();
DefaultListModel model = new DefaultListModel();
JScrollPane listScroller = new JScrollPane(list);
public ArrayListCellRenderer()
{
//list = new JList();
vec = new ArrayList();
label.setForeground(Color.blue);
}
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
vec = (value != null) ? (ArrayList) value : new ArrayList();
model.clear();
for (int i = 0; i < vec.size(); ++i)
model.addElement(vec.get(i));
list.setModel(model);
// if (selIndex < vec.size() && selIndex >= 0)
// list.setSelectedIndex(selIndex);
/* if (hasFocus) {
label.setBorder( UIManager.getBorder("Table.focusCellHighlightBorder") );
if (table.isCellEditable(row, column)) {
label.setForeground( UIManager.getColor("Table.focusCellForeground") );
label.setBackground( UIManager.getColor("Table.focusCellBackground") );
}
} else {
label.setBorder(BorderFactory.createEmptyBorder());
}*/
/*
if (vec.size() >0)
{
label.setText(vec.get(0).toString());
return label;
} else if (vec.isEmpty())
{
label.setText("null");
return label;
} else
return list;
}*/
label.setText((vec.isEmpty()) ? "" : vec.get(0).toString());
return label;
}
}
/**
* exports the current data in this tablecomponent to HTML
*
* @return StringBuffer containing the HTML code
*/
public StringBuffer exportToHTML()
{
StringBuffer buff = new StringBuffer();
buff.append(" <table border cellspacing=0 width=\"50%\">");
// table Header
buff.append("<tr>");
for (int i = 0; i < tableModel.getColumnCount(); ++i)
{
buff.append("<th>");
buff.append(tableModel.getColumnName(i));
buff.append("</th>");
}
buff.append("</tr>");
for (int i = 0; i < realCount; ++i)
{
for (int j = 0; j < tableModel.getColumnCount(); ++j)
{
buff.append("<td>");
String val = (tableModel.getValueAt(i, j) == null) ? " " : tableModel.getValueAt(i, j).toString();
buff.append(val);
buff.append("</td>");
}
buff.append("<tr>");
buff.append("</tr>\n");
}
buff.append("</table>");
return convertUml(buff);
}
/**
* MacOs and Windows Version of the Method
* converts german umlaute to html ¨aute;
*/
public static StringBuffer convertUml(StringBuffer newName)
{
StringBuffer alterMe = newName; //new StringBuffer(newName.trim());
int length = alterMe.length();
int j = 0;
while (j < length)
{
//if(Character.isSpaceChar(alterMe.charAt(j)))
// alterMe.setCharAt(j,'_');
if (alterMe.charAt(j) == 'š' || alterMe.charAt(j) == 'ö')
{
alterMe.setCharAt(j, '&');
alterMe.insert(j + 1, "ouml;");
length = length + 5;
}
if (alterMe.charAt(j) == '…' || alterMe.charAt(j) == 'Ö')
{
alterMe.setCharAt(j, '&');
alterMe.insert(j + 1, "Ouml;");
length = length + 5;
}
if (alterMe.charAt(j) == 'Š' || alterMe.charAt(j) == 'ä')
{
alterMe.setCharAt(j, '&');
alterMe.insert(j + 1, "auml;");
length = length + 5;
}
if (alterMe.charAt(j) == '€' || alterMe.charAt(j) == 'Ä')
{
alterMe.setCharAt(j, '&');
alterMe.insert(j + 1, "Auml;");
length = length + 5;
}
if (alterMe.charAt(j) == 'Ÿ' || alterMe.charAt(j) == 'ü')
{
alterMe.setCharAt(j, '&');
alterMe.insert(j + 1, "uuml;");
length = length + 5;
}
if (alterMe.charAt(j) == '†' || alterMe.charAt(j) == 'Ü')
{
alterMe.setCharAt(j, '&');
alterMe.insert(j + 1, "Ü");
length = length + 5;
}
if (alterMe.charAt(j) == '§' || alterMe.charAt(j) == 'ß')
{
alterMe.setCharAt(j, '&');
alterMe.insert(j + 1, "szlig;");
length = length + 6;
}
/*
if(Character.isSpaceChar(alterMe.charAt(j))
alterMe.setCharAt(j,'_');
*/
++j;
}
return alterMe;
}
public static class BooleanRenderer implements TableCellRenderer
{
Icon trueIcon,falseIcon,empty;
// renders false state with empty icon
boolean renderFalseEmpty=false;
public BooleanRenderer(){
try
{
trueIcon = new ImageIcon(getClass().getResource("icons/ok.gif"));
falseIcon = new Icon()
{
public int getIconHeight()
{
return 23;
}
public int getIconWidth()
{
return 27;
}
public void paintIcon(Component c, Graphics g, int x, int y)
{
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.blue);
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setStroke(new BasicStroke(2.0f));
int xr = x + 20, yr = y + 15;
int xl = x + 5, yl = y + 5;
g2.drawLine(xl, yl, xr, yr);
g2.drawLine(xl, yr, xr, yl);
}
};
empty = new Icon()
{
public int getIconHeight()
{
return 23;
}
public int getIconWidth()
{
return 27;
}
public void paintIcon(Component c, Graphics g, int x, int y)
{
}
};
} catch (Exception e)
{
System.out.println("Error while loading ok.gif");
}
}
JCheckBox checkBox = new JCheckBox();
JLabel label = new JLabel();
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
{
if (value instanceof Integer)
{
label.setText(value.toString());
label.setHorizontalAlignment(JLabel.RIGHT);
return label;
} else if (value instanceof String)
{
label.setText(value.toString());
label.setHorizontalAlignment(JLabel.CENTER);
return label;
}
checkBox.setHorizontalAlignment(JLabel.CENTER);
checkBox.setVerticalAlignment(JLabel.CENTER);
checkBox.setSelectedIcon(trueIcon);
if(renderFalseEmpty|| value==null)
checkBox.setIcon(empty);
else checkBox.setIcon(falseIcon);
checkBox.setForeground(table.getForeground());
checkBox.setBackground(table.getBackground());
checkBox.setSelected((value != null && ((Boolean) value).booleanValue()));
return checkBox;
}
}
public static class SQLCommand
{
String command = "";
public SQLCommand()
{
}
public SQLCommand(String command)
{
this.command = command;
}
public String toString()
{
return command;
}
}
public static class IDComboBox extends JComboBox
{
public IDComboBox(Vector vec)
{
super(vec);
}
}
}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>