package net.sf.f3270.ide;
import java.awt.Color;
import java.awt.FlowLayout;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.SwingConstants;
import javax.swing.border.LineBorder;
import net.sf.f3270.Parameter;
class Command {
protected String command;
protected Parameter[] parameters;
Command(String command, Parameter... parameters) {
this.command = command;
this.parameters = parameters;
}
final JPanel toPanel(JList list, boolean isSelected) {
FlowLayout layout = new FlowLayout(FlowLayout.LEFT);
layout.setHgap(0);
layout.setVgap(3);
JPanel panel = new JPanel(layout);
panel.setBackground(list.getBackground());
if (isSelected) {
panel.setBorder(new LineBorder(Color.gray));
} else {
panel.setBorder(new LineBorder(list.getBackground()));
}
panel.setOpaque(true);
addLabel(panel, " ", Color.white);
addLabel(panel, command, Color.black);
addLabel(panel, "(", Color.gray);
for (int i = 0; i < parameters.length; i++) {
Parameter parameter = parameters[i];
addLabel(panel, parameter.getName(), new Color(128, 0, 0));
addLabel(panel, "=", Color.gray);
addLabel(panel, parameter.getValue(), Color.blue);
if (i != parameters.length - 1) {
addLabel(panel, ", ", Color.gray);
}
}
addLabel(panel, ")", Color.gray);
return panel;
}
private void addLabel(JPanel panel, String text, Color color) {
JLabel label = new JLabel();
label.setText(text);
label.setForeground(color);
label.setHorizontalAlignment(SwingConstants.LEFT);
label.setVerticalAlignment(SwingConstants.CENTER);
panel.add(label);
}
}