/** * */ package org.korsakow.ide.ui.components.code; import java.awt.Color; import java.awt.Component; import javax.swing.DefaultCellEditor; import javax.swing.JTable; import javax.swing.JTextField; import org.korsakow.ide.ui.components.NewMediaPanel; import org.korsakow.ide.util.UIUtil; public class TimeCellEditor extends DefaultCellEditor { public TimeCellEditor() { super(new JTextField()); } @Override public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { if (value == null) value = ""; else { value = NewMediaPanel.formatTime((Long)value); } UIUtil.runUITaskLater(new Runnable() { public void run() { editorComponent.requestFocus(); // set cursor to end, no selection UIUtil.runUITaskLater(new Runnable() { public void run() { ((JTextField)editorComponent).setSelectionStart(((JTextField)editorComponent).getText().length()); ((JTextField)editorComponent).setSelectionEnd(((JTextField)editorComponent).getText().length()); } }); } }); final Component editor = super.getTableCellEditorComponent(table, value, isSelected, row, column); ((JTextField)editor).setCaretColor(Color.black); if (isSelected && table.getSelectedColumn()==column) { editor.setBackground(CodeCellEditor.SELECTION_BACKGROUND); editor.setForeground(Color.white); ((JTextField)editor).setCaretColor(Color.white); } editor.setFont(TimeCellRenderer.font); return editor; } @Override public Object getCellEditorValue() { return NewMediaPanel.parseTime(super.getCellEditorValue().toString()); } }