X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.plugin.core%2Fsrc%2Fnet%2Fmograsim%2Fplugin%2Ftables%2Fmemory%2FMemoryView.java;h=09368807e2d086b140ce65fff8d750e63b81d44d;hb=4294019fb99a78ffa6802c0765e4efb7f96bd880;hp=ef685f4c8a57370c245bd39df7940ea058b6518a;hpb=259c5b8d38b6ed641fd9b5d78fe20969c67015dc;p=Mograsim.git diff --git a/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/memory/MemoryView.java b/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/memory/MemoryView.java index ef685f4c..09368807 100644 --- a/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/memory/MemoryView.java +++ b/net.mograsim.plugin.core/src/net/mograsim/plugin/tables/memory/MemoryView.java @@ -3,8 +3,6 @@ package net.mograsim.plugin.tables.memory; import java.math.BigInteger; import java.util.Optional; -import org.eclipse.jface.viewers.ColumnLabelProvider; -import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.swt.SWT; import org.eclipse.swt.events.VerifyListener; @@ -24,16 +22,17 @@ import net.mograsim.machine.standard.memory.WordAddressableMemory; import net.mograsim.plugin.MachineContext; import net.mograsim.plugin.MachineContext.ContextObserver; import net.mograsim.plugin.asm.AsmNumberUtil; +import net.mograsim.plugin.tables.AddressLabelProvider; import net.mograsim.plugin.tables.DisplaySettings; +import net.mograsim.plugin.tables.LazyTableViewer; import net.mograsim.plugin.tables.NumberColumnLabelProvider; import net.mograsim.plugin.tables.RadixSelector; public class MemoryView extends ViewPart implements ContextObserver { - private TableViewer viewer; + private LazyTableViewer viewer; private MemoryTableContentProvider provider; private DisplaySettings displaySettings; - private String addressFormat; @Override public void createPartControl(Composite parent) @@ -98,7 +97,7 @@ public class MemoryView extends ViewPart implements ContextObserver private void createViewer(Composite parent) { - viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.VIRTUAL); + viewer = new LazyTableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER | SWT.VIRTUAL); createColumns(); Table table = viewer.getTable(); table.setHeaderVisible(true); @@ -123,15 +122,7 @@ public class MemoryView extends ViewPart implements ContextObserver int[] bounds = { 100, 100 }; TableViewerColumn col = createTableViewerColumn(titles[0], bounds[0]); - col.setLabelProvider(new ColumnLabelProvider() - { - @Override - public String getText(Object element) - { - MemoryTableRow row = (MemoryTableRow) element; - return String.format(addressFormat, row.address); - } - }); + col.setLabelProvider(new AddressLabelProvider()); col = createTableViewerColumn(titles[1], bounds[1]); col.setLabelProvider(new NumberColumnLabelProvider(displaySettings) @@ -166,14 +157,13 @@ public class MemoryView extends ViewPart implements ContextObserver private void bindMainMemory(MainMemory m) { - int hexAddressLength = Long.toUnsignedString(m.getDefinition().getMaximalAddress(), 16).length(); - addressFormat = "0x%0" + hexAddressLength + "X"; viewer.setInput(m); } private void setupContextBinding() { MachineContext.getInstance().registerObserver(this); + setMachine(Optional.ofNullable(MachineContext.getInstance().getMachine())); } @Override