projects
/
Mograsim.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
ad98b3b
)
Switched MemoryView Content Provider to allow for a bigger table
author
Fabian Stemmler
<stemmler@in.tum.de>
Mon, 26 Aug 2019 11:10:53 +0000
(13:10 +0200)
committer
Fabian Stemmler
<stemmler@in.tum.de>
Mon, 26 Aug 2019 11:10:53 +0000
(13:10 +0200)
net.mograsim.plugin.core/src/net/mograsim/plugin/memory/MemoryTableContentProvider.java
patch
|
blob
|
history
net.mograsim.plugin.core/src/net/mograsim/plugin/memory/MemoryView.java
patch
|
blob
|
history
diff --git
a/net.mograsim.plugin.core/src/net/mograsim/plugin/memory/MemoryTableContentProvider.java
b/net.mograsim.plugin.core/src/net/mograsim/plugin/memory/MemoryTableContentProvider.java
index
1d553e2
..
3ddb32f
100644
(file)
--- a/
net.mograsim.plugin.core/src/net/mograsim/plugin/memory/MemoryTableContentProvider.java
+++ b/
net.mograsim.plugin.core/src/net/mograsim/plugin/memory/MemoryTableContentProvider.java
@@
-1,57
+1,67
@@
package net.mograsim.plugin.memory;
package net.mograsim.plugin.memory;
-import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.ILazyContentProvider;
+import org.eclipse.jface.viewers.TableViewer;
+import org.eclipse.jface.viewers.Viewer;
import net.mograsim.machine.MainMemory;
import net.mograsim.machine.MainMemory;
-public class MemoryTableContentProvider implements I
Structured
ContentProvider
+public class MemoryTableContentProvider implements I
Lazy
ContentProvider
{
private long lower;
{
private long lower;
- private int amount;
- public final static int limit = 128;
+ private TableViewer viewer;
+ private final static int limit = 10_000;
+ private int amount = 0;
+ private MainMemory memory;
- @Override
- public Object[] getElements(Object arg0)
+ public void setLowerBound(long lower)
{
{
- if (arg0 == null)
- return new Object[0];
- MainMemory memory = (MainMemory) arg0;
- lower = Long.max(lower, memory.getDefinition().getMinimalAddress());
- Object[] rows = new Object[amount];
- for (int i = 0; i < amount; i++)
- rows[i] = new MemoryTableRow(lower + i, memory);
- return rows;
+ if (memory != null)
+ this.lower = Long.min(memory.getDefinition().getMaximalAddress(), Long.max(memory.getDefinition().getMinimalAddress(), lower));
+ else
+ this.lower = lower;
+ updateItemCount();
}
}
- /**
- * Sets the bounds for the addresses in memory to be provided to the table.
- *
- * @param lower lower bound for address (inclusive)
- * @param amount amount of cells to show; limited to {@link MemoryTableContentProvider#limit}
- */
- public void setAddressRange(long lower, int amount)
+ public void updateItemCount()
{
{
- this.lower = lower;
- this.amount = Integer.min(Integer.max(amount, 0), limit);
+ if (memory != null)
+ {
+ long size = memory.getDefinition().getMaximalAddress() - lower;
+ viewer.setItemCount(size > amount ? amount : (int) size);
+ } else
+ viewer.setItemCount(0);
}
}
- public
void setLowerBound(long lower
)
+ public
long getLowerBound(
)
{
{
-
setAddressRange(lower, amount)
;
+
return lower
;
}
public void setAmount(int amount)
{
}
public void setAmount(int amount)
{
- setAddressRange(lower, amount);
+ this.amount = Integer.min(amount, limit);
+ updateItemCount();
}
}
- public
long getLowerBound
()
+ public
int getAmount
()
{
{
- return
lower
;
+ return
amount
;
}
}
- public int getAmount()
+ @Override
+ public void updateElement(int index)
{
{
- return amount;
+ long address = lower + index;
+ if (address <= memory.getDefinition().getMaximalAddress())
+ viewer.replace(new MemoryTableRow(address, memory), index);
+ }
+
+ @Override
+ public void inputChanged(Viewer viewer, Object oldInput, Object newInput)
+ {
+ this.viewer = (TableViewer) viewer;
+ this.memory = (MainMemory) newInput;
+ setLowerBound(0L);
}
}
}
}
diff --git
a/net.mograsim.plugin.core/src/net/mograsim/plugin/memory/MemoryView.java
b/net.mograsim.plugin.core/src/net/mograsim/plugin/memory/MemoryView.java
index
dc03e45
..
f00f1c9
100644
(file)
--- a/
net.mograsim.plugin.core/src/net/mograsim/plugin/memory/MemoryView.java
+++ b/
net.mograsim.plugin.core/src/net/mograsim/plugin/memory/MemoryView.java
@@
-33,7
+33,6
@@
public class MemoryView extends ViewPart
@Override
public void createPartControl(Composite parent)
{
@Override
public void createPartControl(Composite parent)
{
- // TODO: externalize Strings!
provider = new MemoryTableContentProvider();
displaySettings = new DisplaySettings();
displaySettings.setDataNumberType(NumberType.HEXADECIMAL);
provider = new MemoryTableContentProvider();
displaySettings = new DisplaySettings();
displaySettings.setDataNumberType(NumberType.HEXADECIMAL);
@@
-120,13
+119,14
@@
public class MemoryView extends ViewPart
private void createViewer(Composite parent)
{
private void createViewer(Composite parent)
{
- viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER);
+ viewer = new TableViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.BORDER
| SWT.VIRTUAL
);
createColumns();
Table table = viewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
createColumns();
Table table = viewer.getTable();
table.setHeaderVisible(true);
table.setLinesVisible(true);
+ viewer.setUseHashlookup(true);
viewer.setContentProvider(provider);
viewer.setContentProvider(provider);
- setMemoryBinding(new WordAddressableMemory(new DefaultMainMemoryDefinition(8, 8, 8L,
256L
)));
+ setMemoryBinding(new WordAddressableMemory(new DefaultMainMemoryDefinition(8, 8, 8L,
Long.MAX_VALUE
)));
getSite().setSelectionProvider(viewer);
GridData gd = new GridData();
getSite().setSelectionProvider(viewer);
GridData gd = new GridData();