package tmcsim.cadsimulator.viewer; import java.awt.Dimension; import javax.swing.BorderFactory; import javax.swing.Box; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextField; import tmcsim.cadsimulator.videocontrol.DVDStatusUpdate; import tmcsim.cadsimulator.videocontrol.DVDTitleUpdate; import tmcsim.cadsimulator.viewer.model.DVDStatusTableModel; import tmcsim.cadsimulator.viewer.model.DVDTitleTableModel; /** * DVDInfoPanel is a GUI component used in the CADSimulatorViewer. The panel * displays information regarding the DVD player's connection information. One * table on the panel shows all DVD title that have been played or repeated. A * second table shows all DVD status updates that have been received from the * controller. * * @author Matthew Cechini * @version */ @SuppressWarnings("serial") public class DVDInfoPanel extends JPanel { /** * DVD player connection info. */ public final String connInfo; /** * Table model for the title table. */ private DVDTitleTableModel titleTableModel; /** * Table to display DVD title plays and repeats. */ private JTable titleTable; /** * Table model for the Status table. */ private DVDStatusTableModel statusTableModel; /** * Table to display DVD status updates. */ private JTable statusTable; /** * Constructor. Initialize the panel GUI components. * * @param connectionInfo DVD player connection info. */ public DVDInfoPanel(String connectionInfo) { connInfo = connectionInfo; initComponents(); } /** * This method updates the DVD status table with the new update object. * * @param update Update DVD Status update. */ public void updateDVDStatus(DVDStatusUpdate update) { statusTableModel.addStatusUpdate(update); } /** * This method updates the DVD title table with the new update object. * * @param update Update DVD Status update. */ public void updateDVDTitle(DVDTitleUpdate update) { titleTableModel.addTitleUpdate(update); } /** * Initialize the GUI components. */ private void initComponents() { connInfoLbl = new JLabel("Connection Info:"); connInfoLbl.setAlignmentX(Box.LEFT_ALIGNMENT); connInfoTF = new JTextField(connInfo); connInfoTF.setColumns(30); connInfoTF.setAlignmentX(Box.LEFT_ALIGNMENT); connInfoTF.setEditable(false); Box connInfoBox = Box.createVerticalBox(); connInfoBox.add(connInfoLbl); connInfoBox.add(connInfoTF); connInfoBox.setAlignmentX(Box.CENTER_ALIGNMENT); titleTableModel = new DVDTitleTableModel(); titleTable = new JTable(titleTableModel); titleTable.getTableHeader().setReorderingAllowed(false); for (int c = 0; c < titleTable.getColumnCount(); c++) { titleTable.getColumnModel().getColumn(c).setMinWidth( titleTableModel.getColumnMinWidth(c)); titleTable.getColumnModel().getColumn(c).setMaxWidth( titleTableModel.getColumnMaxWidth(c)); titleTable.getColumnModel().getColumn(c).setPreferredWidth( titleTableModel.getColumnPrefWidth(c)); titleTable.getColumnModel().getColumn(c).setResizable(true); } titlePane = new JScrollPane(); titlePane.setAlignmentX(Box.CENTER_ALIGNMENT); //titlePane.setMinimumSize(new Dimension(,)); titlePane.setPreferredSize(new Dimension(425, 225)); titlePane.setViewportView(titleTable); titlePane.setBorder(BorderFactory.createTitledBorder( BorderFactory.createRaisedBevelBorder(), "Title Updates")); statusTableModel = new DVDStatusTableModel(); statusTable = new JTable(statusTableModel); statusTable.getTableHeader().setReorderingAllowed(false); for (int c = 0; c < statusTable.getColumnCount(); c++) { statusTable.getColumnModel().getColumn(c).setMinWidth( statusTableModel.getColumnMinWidth(c)); statusTable.getColumnModel().getColumn(c).setMaxWidth( statusTableModel.getColumnMaxWidth(c)); statusTable.getColumnModel().getColumn(c).setPreferredWidth( statusTableModel.getColumnPrefWidth(c)); statusTable.getColumnModel().getColumn(c).setResizable(true); } statusPane = new JScrollPane(); statusPane.setAlignmentX(Box.CENTER_ALIGNMENT); //statusPane.setMinimumSize(new Dimension(,)); statusPane.setPreferredSize(new Dimension(425, 150)); statusPane.setViewportView(statusTable); statusPane.setBorder(BorderFactory.createTitledBorder( BorderFactory.createRaisedBevelBorder(), "Status Updates")); Box panelBox = Box.createVerticalBox(); panelBox.add(connInfoBox); panelBox.add(Box.createVerticalStrut(10)); panelBox.add(titlePane); panelBox.add(Box.createVerticalStrut(10)); panelBox.add(statusPane); panelBox.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); add(panelBox); } private JScrollPane titlePane; private JScrollPane statusPane; private JLabel connInfoLbl; private JTextField connInfoTF; }