Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSamantha Chan2006-02-08 19:16:58 +0000
committerSamantha Chan2006-02-08 19:16:58 +0000
commit772d704e34124c76f8e67dbfe8dc834116847249 (patch)
treeb6c103300bfd0dbd2390cc9f8e2725f56cb62396 /org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AbstractAsyncTableRendering.java
parent88cbef2a0e28a761a5bc9d64061474219341814c (diff)
downloadeclipse.platform.debug-772d704e34124c76f8e67dbfe8dc834116847249.tar.gz
eclipse.platform.debug-772d704e34124c76f8e67dbfe8dc834116847249.tar.xz
eclipse.platform.debug-772d704e34124c76f8e67dbfe8dc834116847249.zip
Bug 106424 - Migrated renderings to async table rendering
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AbstractAsyncTableRendering.java')
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AbstractAsyncTableRendering.java125
1 files changed, 41 insertions, 84 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AbstractAsyncTableRendering.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AbstractAsyncTableRendering.java
index 5dbb3a185..4805a8bb1 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AbstractAsyncTableRendering.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AbstractAsyncTableRendering.java
@@ -189,7 +189,7 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
private boolean fIsDisposed = false;
private boolean fIsShowAddressColumn = true;
- private PendingSynchronizationProperties fPendingSyncProperties;
+ private PendingPropertyChanges fPendingSyncProperties;
private ISelectionChangedListener fViewerSelectionChangedListener = new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
@@ -369,13 +369,13 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
createToolTip();
+ // now the rendering is successfully created
+ fIsCreated = true;
+
return Status.OK_STATUS;
}};
uiJob.setSystem(true);
uiJob.schedule();
-
- // now the rendering is successfully created
- fIsCreated = true;
return Status.OK_STATUS;
@@ -581,16 +581,14 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
}
// do not handle event if the rendering is displaying an error
- if (isDisplayingError())
- return;
-
- // do not handle property change event if the rendering is not visible
- if (!isVisible())
+ // or if it's not visible
+ if (isDisplayingError() || !isVisible())
{
handlePropertiesChangeWhenHidden(event);
return;
}
+
if (event.getProperty().equals(IDebugUIConstants.PREF_PADDED_STR) ||
event.getProperty().equals(IDebugUIConstants.PREF_CHANGED_DEBUG_ELEMENT_COLOR))
{
@@ -609,8 +607,8 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
if (event.getProperty().equals(IDebugPreferenceConstants.PREF_TABLE_RENDERING_PAGE_SIZE)) {
if (!isDynamicLoad())
{
- // only refresh if in non-autoload mode
- refresh();
+ int pageSize = DebugUIPlugin.getDefault().getPreferenceStore().getInt(IDebugPreferenceConstants.PREF_TABLE_RENDERING_PAGE_SIZE);
+ handlePageSizeChanged(pageSize);
}
return;
}
@@ -651,6 +649,16 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
{
handlePageStartAddressChanged((BigInteger)value);
}
+ }
+
+ /**
+ *
+ */
+ private void handlePageSizeChanged(int pageSize) {
+ fPageSize = pageSize;
+ // only refresh if in non-autoload mode
+ fContentDescriptor.setNumLines(pageSize);
+ refresh();
}
private void handlePropertiesChangeWhenHidden(PropertyChangeEvent event)
@@ -691,6 +699,10 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
{
fPendingSyncProperties.setPageStartAddress((BigInteger)value);
}
+ else if (event.getProperty().equals(IDebugPreferenceConstants.PREF_TABLE_RENDERING_PAGE_SIZE)) {
+ int pageSize = DebugUIPlugin.getDefault().getPreferenceStore().getInt(IDebugPreferenceConstants.PREF_TABLE_RENDERING_PAGE_SIZE);
+ fPendingSyncProperties.setPageSize(pageSize);
+ }
}
private void topVisibleAddressChanged(final BigInteger address)
@@ -782,14 +794,10 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
public void run() {
// call this to make the table viewer to reload when needed
fTableViewer.setSelection(address);
-//
-// if (!isDynamicLoad())
-// {
- int idx = fTableViewer.indexOf(address);
- if (idx < 0) {
- doTopVisibleAddressChanged(address);
- }
-// }
+ int idx = fTableViewer.indexOf(address);
+ if (idx < 0) {
+ doTopVisibleAddressChanged(address);
+ }
}
};
@@ -1821,10 +1829,11 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
}
fContentDescriptor.setLoadAddress(address);
+ final BigInteger finaladdress = address;
Runnable runnable = new Runnable() {
public void run() {
+ fTableViewer.setTopIndex(finaladdress);
refresh();
- fTableViewer.getTable().setTopIndex(0);
}};
runOnUIThread(runnable);
@@ -1836,24 +1845,25 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
// if currently in dynamic load mode, update page
// start address
- updateSyncPageStartAddress(getTopVisibleAddress());
+ BigInteger pageStart = getTopVisibleAddress();
+ updateSyncPageStartAddress(pageStart);
updateDynamicLoadProperty();
if (isDynamicLoad())
{
refresh();
- fTableViewer.setTopIndex(getTopVisibleAddress());
+ fTableViewer.setTopIndex(pageStart);
}
else
{
- BigInteger pageStart = (BigInteger)getSynchronizedProperty(IInternalDebugUIConstants.PROPERTY_PAGE_START_ADDRESS);
- if (pageStart == null)
- pageStart = getTopVisibleAddress();
handlePageStartAddressChanged(pageStart);
}
}
public void becomesHidden() {
+
+ // creates new object for storing potential changes in sync properties
+ fPendingSyncProperties = new PendingPropertyChanges();
if (!fIsCreated)
{
@@ -1861,9 +1871,6 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
return;
}
- // creates new object for storing potential changes in sync properties
- fPendingSyncProperties = new PendingSynchronizationProperties();
-
if (isVisible() == false)
{
// super should always be called
@@ -1937,12 +1944,17 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
}
else
{
+ if (fPendingSyncProperties.getPageSize() > 0)
+ {
+ fPageSize = fPendingSyncProperties.getPageSize();
+ fContentDescriptor.setNumLines(fPageSize);
+ }
+
BigInteger pageStartAddress = fPendingSyncProperties.getPageStartAddress();
if (pageStartAddress != null)
fContentDescriptor.setLoadAddress(pageStartAddress);
fTableViewer.setTopIndex(pageStartAddress);
-
}
refresh();
}
@@ -2008,61 +2020,6 @@ public abstract class AbstractAsyncTableRendering extends AbstractBaseTableRende
}
/**
- * Get properties from synchronizer and synchronize settings
- */
- private void synchronize()
- {
- if (!isDynamicLoad())
- {
- BigInteger pageStart = (BigInteger)getSynchronizedProperty(IInternalDebugUIConstants.PROPERTY_PAGE_START_ADDRESS);
- if (pageStart != null && fContentDescriptor != null && fContentDescriptor.getLoadAddress() != null)
- {
- if (!fContentDescriptor.getLoadAddress().equals(pageStart))
- handlePageStartAddressChanged(pageStart);
- }
- else if (pageStart != null)
- {
- handlePageStartAddressChanged(pageStart);
- }
- }
-
- Integer rowSize = (Integer) getSynchronizedProperty(AbstractTableRendering.PROPERTY_ROW_SIZE);
- Integer columnSize = (Integer) getSynchronizedProperty(AbstractTableRendering.PROPERTY_COL_SIZE);
- BigInteger selectedAddress = (BigInteger)getSynchronizedProperty(AbstractTableRendering.PROPERTY_SELECTED_ADDRESS);
- BigInteger topAddress = (BigInteger)getSynchronizedProperty(AbstractTableRendering.PROPERTY_TOP_ADDRESS);
-
- if (rowSize != null)
- {
- int rSize = rowSize.intValue();
- if (rSize > 0 && rSize != fBytePerLine) {
- rowSizeChanged(rSize);
- }
- }
-
- if (columnSize != null) {
- int colSize = columnSize.intValue();
- if (colSize > 0 && colSize != fColumnSize) {
- columnSizeChanged(colSize);
- }
- }
- if (topAddress != null) {
- if (!topAddress.equals(getTopVisibleAddress())) {
- if (selectedAddress != null) {
- if (!getSelectedAddress().equals(selectedAddress)) {
- selectedAddressChanged(selectedAddress);
- }
- }
- topVisibleAddressChanged(topAddress);
- }
- }
- if (selectedAddress != null) {
- if (selectedAddress.compareTo(getSelectedAddress()) != 0) {
- selectedAddressChanged(selectedAddress);
- }
- }
- }
-
- /**
* update selected address in synchronizer if update is true.
*/
private void updateSyncSelectedAddress(BigInteger address) {

Back to the top