/*
* JaamSim Discrete Event Simulation
* Copyright (C) 2012 Ausenco Engineering Canada Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.jaamsim.ui;
import java.awt.Color;
import java.awt.Component;
import javax.swing.BorderFactory;
import javax.swing.JTable;
import javax.swing.border.Border;
import javax.swing.table.DefaultTableCellRenderer;
import com.jaamsim.input.Input;
public class EditBoxColumnRenderer extends DefaultTableCellRenderer {
private final Border border;
private final Border focusBorder;
public EditBoxColumnRenderer() {
border = BorderFactory.createEmptyBorder(0, 10, 0, 0);
// single pixel outline for the focused cell, require an inset with one fewer
// pixel due to the outline
Border lineBorder = BorderFactory.createLineBorder(Color.BLUE);
Border insetBorder = BorderFactory.createEmptyBorder(0, 9, 0, 0);
focusBorder = BorderFactory.createCompoundBorder(lineBorder, insetBorder);
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus,
int row, int column) {
Input<?> in = (Input<?>)value;
String str;
if (column == 0)
str = in.getKeyword();
else if (column == 1) {
if (in.getDefaultText() != null)
str = EditBox.formatEditorText(in.getDefaultText());
else {
str = in.getDefaultString();
if (str.isEmpty())
str = EditBox.NONE;
}
}
else {
str = in.getValueString();
if (!in.isValid())
str = EditBox.formatErrorText(str);
if (str.isEmpty() && in.isRequired())
str = EditBox.REQD;
}
// Pass along the keyword string, not the input itself
Component cell = super.getTableCellRendererComponent(table, str, isSelected, hasFocus, row, column);
if (row == table.getSelectedRow())
cell.setBackground(FrameBox.TABLE_SELECT);
else
cell.setBackground(null);
if (hasFocus)
this.setBorder(focusBorder);
else
this.setBorder(border);
return cell;
}
}