package husacct.analyse.presentation.reconstruct.parameter;
import java.awt.Dimension;
import java.awt.FlowLayout;
import javax.swing.JFormattedTextField;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.text.NumberFormatter;
import org.apache.log4j.Logger;
import husacct.analyse.task.reconstruct.dto.ReconstructArchitectureDTO;
import husacct.analyse.task.reconstruct.parameters.ReconstructArchitectureNumberFieldDTO;
import husacct.analyse.task.reconstruct.parameters.ReconstructArchitectureParameterDTO;
public class ReconstructArchitectureNumberFieldPanel extends ReconstructArchitectureParameterPanel{
private final Logger logger = Logger.getLogger(ReconstructArchitectureNumberFieldPanel.class);
private ReconstructArchitectureNumberFieldDTO numberFieldDTO;
private JFormattedTextField numberField;
private JLabel numberFieldLabel;
public int fieldColumns = 10;
public ReconstructArchitectureNumberFieldPanel(ReconstructArchitectureParameterDTO parameterDTO,
ReconstructArchitectureDTO dto) {
super(parameterDTO, dto);
// TODO Auto-generated constructor stub
}
@Override
public JPanel createPanel() {
JPanel numberFieldPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
if(parameterDTO instanceof ReconstructArchitectureNumberFieldDTO) {
numberFieldDTO = (ReconstructArchitectureNumberFieldDTO) parameterDTO;
numberFieldPanel.setPreferredSize(new Dimension(400, 30));
String translatedLabel = getTranslation(numberFieldDTO.label_TranslationKey);
numberFieldLabel = new JLabel(translatedLabel);
numberFieldLabel.setPreferredSize(new Dimension(120, 30));
NumberFormatter numberFormat = createFormatter();
numberField = new JFormattedTextField(numberFormat);
numberField.setColumns(fieldColumns);
numberFieldPanel.add(numberFieldLabel);
numberFieldPanel.add(numberField);
Object objectValue = getValueFromReconstructArchitectureDTO(numberFieldDTO.parameterConstant, dto);
try{
int defaultIntValue = 0;
defaultIntValue = objectValue == null ? 0 : (int) objectValue;
numberField.setValue(defaultIntValue);
}
catch(Exception e2){
logger.error("invalid cast for defaultValue ");
}
}
return numberFieldPanel;
}
private NumberFormatter createFormatter() {
NumberFormatter numberFormat = new NumberFormatter();
numberFormat.setMinimum(numberFieldDTO.minValue);
numberFormat.setMaximum(numberFieldDTO.maxValue);
return numberFormat;
}
@Override
public Object getValue() {
if(numberField != null){
return numberField.getValue();
}
logger.warn(numberFieldLabel + " panel has not been created yet");
return 0;
}
}