import java.awt.*; import java.awt.event.*; import java.util.Random; import java.util.Date; import java.text.*; import java.net.URL; import java.net.MalformedURLException; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.SimpleAttributeSet; import javax.swing.text.StyleConstants; import com.zfqjava.swing.*; import com.zfqjava.swing.cell.*; import com.zfqjava.swing.event.*; public class AccountModelDemo extends JDataGridBean { public AccountModelDemo() { super(); configure(); } private void configure() { final JDataGrid dataGrid = getDataGrid(); final JButton a = new JButton("Restore Model..."); a.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { dataGrid.setModel(createModel()); } }); getToolBar(JDataGridBean.MAIN_TOOLBAR).add(a); } protected DataGridModel createModel() { DataGridModel model = new DefaultDataGridModel(14, 5); // column header model.setColumnName("Part Number", 0); model.setColumnName("Data Type", 1); model.setColumnName("Q2", 2); model.setColumnName("Q3", 3); model.setColumnName("Q4", 4); model.setColumnClass(Double.class, 2); model.setColumnClass(Double.class, 3); model.setColumnClass(Double.class, 4); // ABC part // first row model.setValueAt("ABC", 0, 0); model.setValueAt("Bookings", 0, 1); model.setValueAt(new Integer(200), 0, 2); model.setValueAt(new Integer(150), 0, 3); model.setValueAt(new Integer(50), 0, 4); SimpleAttributeSet attr = new SimpleAttributeSet(); StyleConstants.setForeground(attr, Color.red); model.setCellAttributes(attr, 0, 0); // second row model.setValueAt("Shipments", 1, 1); model.setValueAt(new Integer(150), 1, 2); model.setValueAt(new Integer(20), 1, 3); model.setValueAt(new Integer(0), 1, 4); // asp row model.setValueAt("ASP", 2, 1); model.setValueAt(new Double(0.5), 2, 2); model.setValueAt(new Double(1.0), 2, 3); model.setValueAt(new Double(0.5), 2, 4); for(int i=0; i< 5; i++) { attr = new SimpleAttributeSet(); StyleConstants.setBackground(attr, Color.lightGray); StyleConstants.setForeground(attr, Color.white); model.setCellAttributes(attr, 2, i); } // dollars row model.setValueAt("Dollars", 3, 1); for(int i=0; i< 5; i++) { model.setCellEditable(false, 3, i); attr = new SimpleAttributeSet(); StyleConstants.setBackground(attr, Color.gray); StyleConstants.setForeground(attr, Color.white); model.setCellAttributes(attr, 3, i); } model.merge(new Cell(0, 3, 0, 0)); // DEF // first row model.setValueAt("DEF", 4, 0); model.setValueAt("Bookings", 4, 1); model.setValueAt(new Integer(200), 4, 2); model.setValueAt(new Integer(150), 4, 3); model.setValueAt(new Integer(50), 4, 4); attr = new SimpleAttributeSet(); StyleConstants.setForeground(attr, Color.red); model.setCellAttributes(attr, 4, 0); // second row model.setValueAt("Shipments", 5, 1); model.setValueAt(new Integer(150), 5, 2); model.setValueAt(new Integer(20), 5, 3); model.setValueAt(new Integer(0), 5, 4); // asp row model.setValueAt("ASP", 6, 1); model.setValueAt(new Double(0.5), 6, 2); model.setValueAt(new Double(1.0), 6, 3); model.setValueAt(new Double(0.5), 6, 4); for(int i=0; i< 5; i++) { attr = new SimpleAttributeSet(); StyleConstants.setBackground(attr, Color.lightGray); StyleConstants.setForeground(attr, Color.white); model.setCellAttributes(attr, 6, i); } // dollars row model.setValueAt("Dollars", 7, 1); for(int i=0; i< 5; i++) { model.setCellEditable(false, 7, i); attr = new SimpleAttributeSet(); StyleConstants.setBackground(attr, Color.gray); StyleConstants.setForeground(attr, Color.white); model.setCellAttributes(attr, 7, i); } model.merge(new Cell(4, 7, 0, 0)); // XYZ // first row model.setValueAt("XYZ", 8, 0); model.setValueAt("Bookings", 8, 1); model.setValueAt(new Integer(200), 8, 2); model.setValueAt(new Integer(150), 8, 3); model.setValueAt(new Integer(50), 8, 4); attr = new SimpleAttributeSet(); StyleConstants.setForeground(attr, Color.red); model.setCellAttributes(attr, 8, 0); // second row model.setValueAt("Shipments", 9, 1); model.setValueAt(new Integer(150), 9, 2); model.setValueAt(new Integer(20), 9, 3); model.setValueAt(new Integer(0), 9, 4); // asp row model.setValueAt("ASP", 10, 1); model.setValueAt(new Double(0.5), 10, 2); model.setValueAt(new Double(1.0), 10, 3); model.setValueAt(new Double(0.5), 10, 4); for(int i=0; i< 5; i++) { attr = new SimpleAttributeSet(); StyleConstants.setBackground(attr, Color.lightGray); StyleConstants.setForeground(attr, Color.white); model.setCellAttributes(attr, 10, i); } // dollars row model.setValueAt("Dollars", 11, 1); for(int i=0; i< 5; i++) { model.setCellEditable(false, 11, i); attr = new SimpleAttributeSet(); StyleConstants.setBackground(attr, Color.gray); StyleConstants.setForeground(attr, Color.white); model.setCellAttributes(attr, 11, i); } model.merge(new Cell(8, 11, 0, 0)); // total units model.setValueAt("Total Units", 12, 1); for(int i=0; i< 5; i++) { model.setCellEditable(false, 12, i); attr = new SimpleAttributeSet(); StyleConstants.setBackground(attr, Color.darkGray); StyleConstants.setForeground(attr, Color.white); model.setCellAttributes(attr, 12, i); } // total dollars model.setValueAt("Total Dollars", 13, 1); for(int i=0; i< 5; i++) { model.setCellEditable(false, 13, i); attr = new SimpleAttributeSet(); StyleConstants.setBackground(attr, Color.darkGray); StyleConstants.setForeground(attr, Color.white); model.setCellAttributes(attr, 13, i); } calculateValues(model); Handler3 handler = new Handler3(); model.addTableModelListener(handler); model.addDataGridModelListener(handler); // return model return model; } private void calculateValues(DataGridModel model) { for(int j=2,c=model.getColumnCount(); j