diff options
author | Samantha Chan | 2006-02-08 19:16:58 +0000 |
---|---|---|
committer | Samantha Chan | 2006-02-08 19:16:58 +0000 |
commit | 772d704e34124c76f8e67dbfe8dc834116847249 (patch) | |
tree | b6c103300bfd0dbd2390cc9f8e2725f56cb62396 /org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/memory/renderings/AbstractAsyncTableRendering.java | |
parent | 88cbef2a0e28a761a5bc9d64061474219341814c (diff) | |
download | eclipse.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.java | 125 |
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) { |