/*
* Copyright 2010 Red Hat, Inc. and/or its affiliates.
*
* 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 org.drools.examples.broker.ui;
import java.awt.Color;
import java.text.NumberFormat;
import javax.swing.GroupLayout;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import org.drools.examples.broker.model.Company;
/**
* A class that manages a company UI panel
*/
public class CompanyPanel extends JPanel {
private static final int FIELD_COLUMN_SIZE = 8;
private final Company model;
private final JTextField currentField;
private final JTextField previousField;
private NumberFormat format = NumberFormat.getCurrencyInstance();
public CompanyPanel(Company model) {
this.model = model;
GroupLayout formLayout = new GroupLayout(this);
setLayout(formLayout);
formLayout.setAutoCreateGaps(true);
formLayout.setAutoCreateContainerGaps(true);
JLabel companyNameField = new JLabel(model.getName());
companyNameField.setFont(companyNameField.getFont().deriveFont(companyNameField.getFont().getSize() + 2.0F));
JLabel currentLabel = new JLabel("Current: ");
currentField = new JTextField(format.format( model.getCurrentPrice() ), FIELD_COLUMN_SIZE);
currentField.setEditable(false);
JLabel previousLabel = new JLabel("Previous:");
previousField = new JTextField(format.format( model.getPreviousPrice() ), FIELD_COLUMN_SIZE);
previousField.setEditable(false);
formLayout.setHorizontalGroup(
formLayout.createParallelGroup()
.addComponent(companyNameField)
.addGroup(formLayout.createSequentialGroup()
.addGap(10)
.addComponent(currentLabel)
.addGap(10)
.addComponent(currentField))
.addGroup(formLayout.createSequentialGroup()
.addGap(10)
.addComponent(previousLabel)
.addGap(10)
.addComponent(previousField))
);
formLayout.setVerticalGroup(
formLayout.createSequentialGroup()
.addComponent(companyNameField)
.addGroup(formLayout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addGap(10)
.addGroup(formLayout.createSequentialGroup()
.addComponent(currentLabel)
.addComponent(previousLabel))
.addGap(10)
.addGroup(formLayout.createSequentialGroup()
.addComponent(currentField)
.addComponent(previousField))
));
}
public void updateCompany() {
SwingUtilities.invokeLater( new Runnable() {
public void run() {
currentField.setText( format.format( model.getCurrentPrice() ) );
previousField.setText( format.format( model.getPreviousPrice() ) );
if ( model.getCurrentPrice() > model.getPreviousPrice() ) {
currentField.setForeground( Color.BLUE );
} else {
currentField.setForeground( Color.RED );
}
}
} );
}
}