/******************************************************************************* * openDLX - A DLX/MIPS processor simulator. * Copyright (C) 2013 The openDLX project, University of Augsburg, Germany * Project URL: <https://sourceforge.net/projects/opendlx> * Development branch: <https://github.com/smetzlaff/openDLX> * * * 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 3 of the License, or * 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, see <LICENSE>. If not, see * <http://www.gnu.org/licenses/>. ******************************************************************************/ package openDLX.gui.internalframes.concreteframes; import java.awt.BorderLayout; import javax.swing.JScrollPane; import javax.swing.JTable; import openDLX.RegisterSet; import openDLX.datatypes.ArchCfg; import openDLX.datatypes.uint32; import openDLX.datatypes.uint8; import openDLX.gui.MainFrame; import openDLX.gui.Preference; import openDLX.gui.internalframes.OpenDLXSimInternalFrame; import openDLX.gui.internalframes.factories.tableFactories.RegisterTableFactory; import openDLX.gui.internalframes.util.TableSizeCalculator; @SuppressWarnings("serial") public final class RegisterFrame extends OpenDLXSimInternalFrame { private RegisterSet rs; private JTable registerTable; public RegisterFrame(String title) { super(title, false); this.rs = MainFrame.getInstance().getOpenDLXSim().getPipeline().getRegisterSet(); initialize(); } @Override public void update() { for (int i = 0; i < ArchCfg.getRegisterCount(); ++i) { final String value; final uint32 register_value = rs.read(new uint8(i)); if (Preference.displayRegistersAsHex()) value = register_value.getValueAsHexString(); else value = register_value.getValueAsDecimalString(); registerTable.getModel().setValueAt(value, i, 1); } } @Override protected void initialize() { super.initialize(); //make the scrollpane registerTable = new RegisterTableFactory(rs).createTable(); JScrollPane scrollpane = new JScrollPane(registerTable); scrollpane.setFocusable(false); registerTable.setFillsViewportHeight(true); TableSizeCalculator.setDefaultMaxTableSize(scrollpane, registerTable, TableSizeCalculator.SET_SIZE_BOTH); //config internal frame setLayout(new BorderLayout()); add(scrollpane, BorderLayout.CENTER); pack(); setVisible(true); } @Override public void clean() { setVisible(false); dispose(); } }