Added logic to keep the same element revealed in transaction details

view
This commit is contained in:
Eyck Jentzsch 2019-03-14 19:28:38 +01:00
parent dbe5d603ed
commit a49842a119
1 changed files with 32 additions and 6 deletions

View File

@ -29,9 +29,11 @@ import org.eclipse.jface.viewers.IDoubleClickListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.ITreeViewerListener;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.StyledString;
import org.eclipse.jface.viewers.TreeExpansionEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.TreeViewerColumn;
import org.eclipse.jface.viewers.Viewer;
@ -51,6 +53,7 @@ import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import com.minres.scviewer.database.ITx;
import com.minres.scviewer.database.ITxAttribute;
@ -129,6 +132,19 @@ public class TransactionDetails {
treeViewer.addFilter(attributeFilter);
treeViewer.setComparator(viewSorter);
treeViewer.setAutoExpandLevel(2);
treeViewer.addTreeListener(new ITreeViewerListener() {
@Override
public void treeCollapsed(TreeExpansionEvent event) {
treeViewer.getSelection();
}
@Override
public void treeExpanded(TreeExpansionEvent event) {
treeViewer.getSelection();
}
});
// Set up the table
Tree tree = treeViewer.getTree();
@ -247,6 +263,21 @@ public class TransactionDetails {
this.waveformViewerPart=part;
}
public void setInput(Object object) {
if(object instanceof ITx){
TreeItem obj = treeViewer.getTree().getTopItem();
Rectangle bounds = null;
if(obj!=null) bounds=obj.getBounds();
treeViewer.setInput(object);
if(bounds!=null) {
TreeItem ti = treeViewer.getTree().getItem (new Point(bounds.x, bounds.y));
treeViewer.getTree().setTopItem(ti);
}
} else {
treeViewer.setInput(null);
}
}
/**
* Sets the selection.
*
@ -256,12 +287,7 @@ public class TransactionDetails {
public void setSelection(@Named(IServiceConstants.ACTIVE_SELECTION) @Optional IStructuredSelection selection){
if(treeViewer!=null && selection!=null && !treeViewer.getTree().isDisposed()){
if( selection instanceof IStructuredSelection) {
Object object= ((IStructuredSelection)selection).getFirstElement();
if(object instanceof ITx){
treeViewer.setInput(object);
} else {
treeViewer.setInput(null);
}
setInput(((IStructuredSelection)selection).getFirstElement());
}
}
}