109 lines
2.1 KiB
Java
109 lines
2.1 KiB
Java
package org.hwo.ui;
|
|
|
|
import java.awt.Container;
|
|
import java.awt.Rectangle;
|
|
import java.util.LinkedList;
|
|
import java.util.List;
|
|
|
|
import javax.swing.JTextField;
|
|
|
|
import org.hwo.ui.treetable.TreeTable;
|
|
|
|
public class DefaultCellEditor implements CellEditor {
|
|
|
|
private List<CellEditorListener> editorListeners;
|
|
|
|
private JTextField textField;
|
|
private TreeTable treeTable;
|
|
private Object value;
|
|
|
|
public DefaultCellEditor()
|
|
{
|
|
editorListeners = new LinkedList<CellEditorListener>();
|
|
}
|
|
|
|
@Override
|
|
public void addCellEditorListener(CellEditorListener listener) {
|
|
editorListeners.add(listener);
|
|
}
|
|
|
|
@Override
|
|
public void removeCellEditorListener(CellEditorListener listener) {
|
|
editorListeners.remove(listener);
|
|
}
|
|
|
|
private void fireEditBegin()
|
|
{
|
|
CellEditorArgs args = new CellEditorArgs(this, value, treeTable);
|
|
for (CellEditorListener listener: editorListeners)
|
|
listener.editBegin(args);
|
|
}
|
|
private void fireEditFinish()
|
|
{
|
|
CellEditorArgs args = new CellEditorArgs(this, value, treeTable);
|
|
for (CellEditorListener listener: editorListeners)
|
|
listener.editFinished(args);
|
|
}
|
|
private void fireEditCancel()
|
|
{
|
|
CellEditorArgs args = new CellEditorArgs(this, value, treeTable);
|
|
for (CellEditorListener listener: editorListeners)
|
|
listener.editCanceled(args);
|
|
}
|
|
|
|
private void destroyTextField()
|
|
{
|
|
textField.setVisible(false);
|
|
Container parent = textField.getParent();
|
|
|
|
parent.remove(textField);
|
|
|
|
textField = null;
|
|
}
|
|
|
|
@Override
|
|
public boolean editBegin(TreeTable treeTable, Rectangle rect, Object value) {
|
|
if (textField != null)
|
|
editCancel();
|
|
|
|
this.treeTable = treeTable;
|
|
this.value = value;
|
|
|
|
this.textField = new JTextField();
|
|
treeTable.add(textField);
|
|
|
|
textField.setBounds(rect);
|
|
textField.requestFocusInWindow();
|
|
textField.repaint();
|
|
|
|
fireEditBegin();
|
|
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public void editCancel() {
|
|
if (textField != null)
|
|
{
|
|
destroyTextField();
|
|
|
|
fireEditCancel();
|
|
}
|
|
|
|
}
|
|
|
|
@Override
|
|
public void editFinish() {
|
|
if (this.textField != null)
|
|
{
|
|
this.value = this.textField.getText();
|
|
destroyTextField();
|
|
|
|
fireEditFinish();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
}
|