/* This file is part of jpcsp. Jpcsp 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 (at your option) any later version. Jpcsp 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 Jpcsp. If not, see <http://www.gnu.org/licenses/>. */ package jpcsp.Debugger.DisassemblerModule; import java.awt.Dimension; import javax.swing.BorderFactory; import javax.swing.GroupLayout; import javax.swing.JFrame; import javax.swing.JPanel; import javax.swing.JTextField; import jpcsp.Emulator; import jpcsp.Allegrex.CpuState; import jpcsp.WindowPropSaver; public class VfpuFrame extends JFrame { private static final long serialVersionUID = -3354614570041807689L; JTextField registers[][][] = new JTextField[8][4][4]; JPanel panels[] = new JPanel[8]; static private VfpuFrame instance; static public VfpuFrame getInstance() { if (instance == null) { instance = new VfpuFrame(); } return instance; } private VfpuFrame() { setDefaultCloseOperation(DISPOSE_ON_CLOSE); setTitle(java.util.ResourceBundle.getBundle("jpcsp/languages/jpcsp").getString("VfpuFrame.title")); // NOI18N for (int i = 0; i < 8; ++i) { for (int j = 0; j < 4; ++j) { for (int k = 0; k < 4; ++k) { registers[i][j][k] = new JTextField(); } } } GroupLayout layout = new GroupLayout(getContentPane()); getContentPane().setLayout(layout); for (int i = 0; i < panels.length; ++i) { JPanel panel = new JPanel(); panels[i] = panel; GroupLayout l = new GroupLayout(panel); panel.setLayout(l); panel.setBorder(BorderFactory.createCompoundBorder( BorderFactory.createTitledBorder("Block " + i), null)); l.setHorizontalGroup(l.createSequentialGroup() .addGroup(l.createParallelGroup() .addComponent(registers[i][0][0]) .addComponent(registers[i][1][0]) .addComponent(registers[i][2][0]) .addComponent(registers[i][3][0])) .addGroup(l.createParallelGroup() .addComponent(registers[i][0][1]) .addComponent(registers[i][1][1]) .addComponent(registers[i][2][1]) .addComponent(registers[i][3][1])) .addGroup(l.createParallelGroup() .addComponent(registers[i][0][2]) .addComponent(registers[i][1][2]) .addComponent(registers[i][2][2]) .addComponent(registers[i][3][2])) .addGroup(l.createParallelGroup() .addComponent(registers[i][0][3]) .addComponent(registers[i][1][3]) .addComponent(registers[i][2][3]) .addComponent(registers[i][3][3]))); l.setVerticalGroup(l.createSequentialGroup() .addGroup(l.createParallelGroup() .addComponent(registers[i][0][0]) .addComponent(registers[i][0][1]) .addComponent(registers[i][0][2]) .addComponent(registers[i][0][3])) .addGroup(l.createParallelGroup() .addComponent(registers[i][1][0]) .addComponent(registers[i][1][1]) .addComponent(registers[i][1][2]) .addComponent(registers[i][1][3])) .addGroup(l.createParallelGroup() .addComponent(registers[i][2][0]) .addComponent(registers[i][2][1]) .addComponent(registers[i][2][2]) .addComponent(registers[i][2][3])) .addGroup(l.createParallelGroup() .addComponent(registers[i][3][0]) .addComponent(registers[i][3][1]) .addComponent(registers[i][3][2]) .addComponent(registers[i][3][3]))); } layout.setHorizontalGroup(layout.createParallelGroup() .addGroup(layout.createSequentialGroup() .addComponent(panels[0]) .addComponent(panels[1])) .addGroup(layout.createSequentialGroup() .addComponent(panels[2]) .addComponent(panels[3])) .addGroup(layout.createSequentialGroup() .addComponent(panels[4]) .addComponent(panels[5])) .addGroup(layout.createSequentialGroup() .addComponent(panels[6]) .addComponent(panels[7]))); layout.setVerticalGroup(layout.createParallelGroup() .addGroup(layout.createSequentialGroup() .addComponent(panels[0]) .addComponent(panels[2]) .addComponent(panels[4]) .addComponent(panels[6])) .addGroup(layout.createSequentialGroup() .addComponent(panels[1]) .addComponent(panels[3]) .addComponent(panels[5]) .addComponent(panels[7]))); setMinimumSize(new Dimension(450, 450)); WindowPropSaver.loadWindowProperties(this); } public void updateRegisters(CpuState cpu) { for (int i = 0; i < 8; ++i) { for (int j = 0; j < 4; ++j) { for (int k = 0; k < 4; ++k) { registers[i][k][j].setText((new Float(cpu.getVprFloat(i, j, k))).toString()); registers[i][k][j].setCaretPosition(0); } } } } @Override public void dispose() { Emulator.getMainGUI().endWindowDialog(); super.dispose(); } }