diff --git a/src/sic/sim/MainView.java b/src/sic/sim/MainView.java index fae2aa1..f20086f 100644 --- a/src/sic/sim/MainView.java +++ b/src/sic/sim/MainView.java @@ -63,13 +63,13 @@ public MainView(final Executor executor, Disassembler disassembler, Args arg) { westPanel.add(cpuView.mainPanel, BorderLayout.NORTH); westPanel.add(disassemblyView.mainPanel, BorderLayout.CENTER); - JPanel eastPanel = new JPanel(new BorderLayout()); - eastPanel.add(watchView.mainPanel, BorderLayout.NORTH); - eastPanel.add(memoryView.mainPanel, BorderLayout.CENTER); + JSplitPane eastPanel = new JSplitPane(JSplitPane.VERTICAL_SPLIT); + eastPanel.setTopComponent(watchView.mainPanel); + eastPanel.setBottomComponent(memoryView.mainPanel); - JPanel mainPanel = new JPanel(new BorderLayout()); - mainPanel.add(westPanel, BorderLayout.WEST); - mainPanel.add(eastPanel, BorderLayout.CENTER); + JSplitPane mainPanel = new JSplitPane(); + mainPanel.setLeftComponent(westPanel); + mainPanel.setRightComponent(eastPanel); mainFrame = new JFrame("SicTools"); mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); diff --git a/src/sic/sim/views/DisassemblyView.java b/src/sic/sim/views/DisassemblyView.java index 25412dd..43da0a2 100644 --- a/src/sic/sim/views/DisassemblyView.java +++ b/src/sic/sim/views/DisassemblyView.java @@ -68,7 +68,6 @@ public Component getTableCellRendererComponent(JTable table, Object value, public class DisassemblyView { public static final int MOVE_SMALL = 1; - private static final int ROW_AMOUNT = 19; private Executor executor; private Machine machine; @@ -96,7 +95,7 @@ public DisassemblyView(final Executor executor, final Disassembler disassembler) $$$setupUI$$$(); // disassembly table modelDis = (DefaultTableModel) tabDis.getModel(); - modelDis.setRowCount(DisassemblyView.ROW_AMOUNT); + fitRowCountToCurrentHeight(); modelDis.setColumnCount(7); tabDis.setBackground(Colors.bg); tabDis.setForeground(Colors.fg); @@ -160,6 +159,20 @@ public void mouseClicked(MouseEvent evt) { super.mouseClicked(evt); } }); + tabDis.addComponentListener(new ComponentListener() { + @Override + public void componentResized(ComponentEvent evt) { + fitRowCountToCurrentHeight(); + updateDis(false, false); + } + + @Override + public void componentMoved(ComponentEvent e) {} + @Override + public void componentShown(ComponentEvent e) {} + @Override + public void componentHidden(ComponentEvent e) {} + }); tabDis.addMouseWheelListener(new MouseAdapter() { @Override public void mouseWheelMoved(MouseWheelEvent evt){ @@ -217,6 +230,13 @@ public boolean isCellEditable(int row, int column) { }; } + private void fitRowCountToCurrentHeight() { + final var inset = tabDis.getInsets(); + final var totalHeight = tabDis.getHeight() - inset.top - inset.bottom; + final int rowCount = totalHeight / tabDis.getRowHeight(); + modelDis.setRowCount(rowCount); + } + private void updateBreakpoint(int row, boolean active) { modelDis.setValueAt(active ? "1" : "", row, 0); }