/* ErrorDialog.java * * This class provides a window for errors and warnings messages. * (c) 2006 EduMIPS64 project - Rizzo Vanni G. * * This file is part of the EduMIPS64 project, and is released under the GNU * General Public License. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.edumips64.ui.swing; import org.edumips64.core.*; import org.edumips64.utils.*; import javax.swing.table.DefaultTableModel; import java.util.*; import java.awt.*; import javax.swing.*; import java.awt.event.*; /** * This class provides a window for configuration options. */ public class ErrorDialog extends JDialog { private static boolean[] lineIsError; int numError = 0, width = 710, height = 350; public ErrorDialog(final JFrame owner, LinkedList<ParserException> peList, String title, Boolean showWarning) { super(owner, title, true); lineIsError = new boolean[peList.size() * 10]; JPanel buttonPanel = new JPanel(); JButton okButton = new JButton("OK"); buttonPanel.add(okButton); okButton.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { setVisible(false); //dispose(); } }); buttonPanel.add(okButton); String[] columnNames = { CurrentLocale.getString("ErrorDialog.ROW"), CurrentLocale.getString("ErrorDialog.COLUMN"), CurrentLocale.getString("ErrorDialog.LINE"), CurrentLocale.getString("ErrorDialog.DESCRIPTION") }; DefaultTableModel dft = new DefaultTableModel(columnNames, 0); // peList.size()); //DefaultTableModel(Object[][] data, Object[] columnNames) //DefaultTableModel(Object[] columnNames, int rowCount) MultiLineTable table = new MultiLineTable(dft); MultiLineCellRenderer renderer = new MultiLineCellRenderer(lineIsError); //DefaultTableCellRenderer dftcr =new DefaultTableCellRenderer(); table.setCellSelectionEnabled(false); table.setFocusable(false); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); table.setShowGrid(false); table.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); table.getTableHeader().setResizingAllowed(false); table.getTableHeader().setReorderingAllowed(false); table.getColumnModel().getColumn(0).setPreferredWidth(40); table.getColumnModel().getColumn(1).setPreferredWidth(50); table.getColumnModel().getColumn(2).setPreferredWidth(205); table.getColumnModel().getColumn(3).setPreferredWidth(400); table.getColumnModel().getColumn(0).setCellRenderer(renderer); table.getColumnModel().getColumn(1).setCellRenderer(renderer); table.getColumnModel().getColumn(2).setCellRenderer(renderer); table.getColumnModel().getColumn(3).setCellRenderer(renderer); int i = 0; for (ParserException e : peList) { lineIsError[i] = e.isError(); if (lineIsError[i]) { numError++; } if (lineIsError[i] || showWarning) { dft.addRow(e.getStringArray()); i++; } } JScrollPane scrollTable = new JScrollPane(table); String msg = CurrentLocale.getString("ErrorDialog.MSG0") + " " + numError + " " + CurrentLocale.getString("ErrorDialog.MSG1") + " " + (peList.size() - numError) + " " + CurrentLocale.getString("ErrorDialog.MSG2"); JLabel label = new JLabel(msg); try { label = new JLabel(msg, new ImageIcon( org.edumips64.img.IMGLoader.getImage( ((numError > 0) ? "error.png" : "warning.png") )), SwingConstants.LEFT); label.setIconTextGap(50); label.setFont(new Font("Verdana", 0, 20)); label.setForeground(new Color(0, 0, 85)); } catch (java.io.IOException e) {} getRootPane().setDefaultButton(okButton); getContentPane().setLayout(new BorderLayout()); getContentPane().add("North", label); getContentPane().add("Center", scrollTable); getContentPane().add("South", buttonPanel); setSize(width, height); setLocation((getScreenWidth() - getWidth()) / 2, (getScreenHeight() - getHeight()) / 2); if (!showWarning && numError == 0) { setVisible(false); dispose(); } else { setVisible(true); } } public boolean fileWithError() { return (numError > 0); } public static int getScreenWidth() { return (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth(); } public static int getScreenHeight() { return (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight(); } }