- added second marker

- added zoom levels 1->3->10->30->...
- added waveform identification icon
This commit is contained in:
2015-10-29 20:02:08 +01:00
parent 070c947ae6
commit 83fd7877f2
15 changed files with 239 additions and 141 deletions

View File

@ -41,17 +41,17 @@ public class DesignBrowser implements ISelectionChangedListener {
@Inject ESelectionService selectionService;
private TreeViewer contentOutlineViewer;
private TreeViewer treeViewer;
private PropertyChangeListener l = new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
if("CHILDS".equals(evt.getPropertyName())){
contentOutlineViewer.getTree().getDisplay().asyncExec(new Runnable() {
treeViewer.getTree().getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
contentOutlineViewer.refresh();
treeViewer.refresh();
}
});
}
@ -62,18 +62,19 @@ public class DesignBrowser implements ISelectionChangedListener {
@PostConstruct
public void createComposite(Composite parent) {
parent.setLayout(new GridLayout(1, false));
contentOutlineViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
contentOutlineViewer.addSelectionChangedListener(this);
contentOutlineViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
contentOutlineViewer.setContentProvider(new TxDbContentProvider());
contentOutlineViewer.setLabelProvider(new TxDbLabelProvider());
contentOutlineViewer.setUseHashlookup(true);
treeViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
treeViewer.addSelectionChangedListener(this);
treeViewer.getTree().setLayoutData(new GridData(GridData.FILL_BOTH));
treeViewer.setContentProvider(new TxDbContentProvider());
treeViewer.setLabelProvider(new TxDbLabelProvider());
treeViewer.setUseHashlookup(true);
treeViewer.setAutoExpandLevel(2);
}
@Focus
public void setFocus() {
contentOutlineViewer.getTree().setFocus();
selectionService.setSelection(contentOutlineViewer.getSelection());
treeViewer.getTree().setFocus();
selectionService.setSelection(treeViewer.getSelection());
}
@Override
@ -85,10 +86,10 @@ public class DesignBrowser implements ISelectionChangedListener {
@Inject @Optional
public void getStatusEvent(@UIEventTopic(WaveformViewerPart.ACTIVE_WAVEFORMVIEW) WaveformViewerPart waveformViewerPart) {
IWaveformDb database = waveformViewerPart.getDatabase();
Object input = contentOutlineViewer.getInput();
Object input = treeViewer.getInput();
if(input!=null && input instanceof List<?>)
((List<IWaveformDb>)input).get(0).removePropertyChangeListener(l);
contentOutlineViewer.setInput(database.isLoaded()?Arrays.asList(new IWaveformDb[]{database}):null);
treeViewer.setInput(database.isLoaded()?Arrays.asList(new IWaveformDb[]{database}):null);
// Set up the tree viewer
database.addPropertyChangeListener(l);
}

View File

@ -378,7 +378,7 @@ public class TransactionDetails {
res.add(new Object[]{
rel.getRelationType(),
rel.getSource().getGenerator().getName(),
txToString(rel.getSource())});
rel.getSource()});
}
return res.toArray();
} else if(propertyHolder.type == Type.OUT_REL){
@ -387,7 +387,7 @@ public class TransactionDetails {
res.add(new Object[]{
rel.getRelationType(),
rel.getTarget().getGenerator().getName(),
txToString(rel.getTarget())});
rel.getTarget()});
}
return res.toArray();
}
@ -447,6 +447,8 @@ public class TransactionDetails {
}else if(element instanceof Object[]){
Object[] elements = (Object[]) element;
return new StyledString(elements[field].toString());
} else if(element instanceof ITx){
return new StyledString(txToString((ITx) element));
}else
return new StyledString("");
}

View File

@ -54,7 +54,7 @@ import com.minres.scviewer.database.IWaveformDbFactory;
import com.minres.scviewer.database.IWaveformEvent;
import com.minres.scviewer.database.swt.GotoDirection;
import com.minres.scviewer.database.swt.TxDisplay;
import com.minres.scviewer.e4.application.internal.StatusBarControl;
import com.minres.scviewer.e4.application.internal.WaveStatusBarControl;
public class WaveformViewerPart {
@ -64,12 +64,7 @@ public class WaveformViewerPart {
protected static final String DATABASE_FILE = "DATABASE_FILE";
protected static final String SHOWN_WAVEFORM = "SHOWN_WAVEFORM";
private final static String[] zoomLevel={
"1fs", "10fs", "100fs",
"1ps", "10ps", "100ps",
"1ns", "10ns", "100ns",
"1µs", "10µs", "10µs",
"1ms", "10ms", "100ms", "1s"};
private String[] zoomLevel;
public static final String ID = "com.minres.scviewer.ui.TxEditorPart"; //$NON-NLS-1$
@ -115,10 +110,21 @@ public class WaveformViewerPart {
@Override
public void propertyChange(PropertyChangeEvent evt) {
Long time = (Long) evt.getNewValue();
eventBroker.post(StatusBarControl.CURSOR_TIME, ""+ time/1000000+"ns");
eventBroker.post(WaveStatusBarControl.CURSOR_TIME, txDisplay.getScaledTime(time));
long marker=txDisplay.getActMarkerTime();
eventBroker.post(WaveStatusBarControl.MARKER_DIFF, txDisplay.getScaledTime(time-marker));
}
});
txDisplay.addPropertyChangeListener(TxDisplay.MARKER_PROPERTY, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
Long time = (Long) evt.getNewValue();
eventBroker.post(WaveStatusBarControl.MARKER_TIME, txDisplay.getScaledTime(time));
long cursor=txDisplay.getCursorTime();
eventBroker.post(WaveStatusBarControl.MARKER_DIFF, txDisplay.getScaledTime(cursor-time));
}
});
txDisplay.addSelectionChangedListener(new ISelectionChangedListener() {
@Override
public void selectionChanged(SelectionChangedEvent event) {
@ -126,6 +132,7 @@ public class WaveformViewerPart {
selectionService.setSelection(event.getSelection());
}
});
zoomLevel=txDisplay.getZoomLevels();
filesToLoad=new ArrayList<File>();
persistedState = part.getPersistedState();
Integer files = persistedState.containsKey(DATABASE_FILE+"S")?Integer.parseInt(persistedState.get(DATABASE_FILE+"S")):0;
@ -134,7 +141,7 @@ public class WaveformViewerPart {
}
if(filesToLoad.size()>0)
loadDatabase();
eventBroker.post(StatusBarControl.ZOOM_LEVEL, zoomLevel[txDisplay.getZoomLevel()]);
eventBroker.post(WaveStatusBarControl.ZOOM_LEVEL, zoomLevel[txDisplay.getZoomLevel()]);
menuService.registerContextMenu(txDisplay.getNameControl(), "com.minres.scviewer.e4.application.popupmenu.namecontext");
menuService.registerContextMenu(txDisplay.getValueControl(), "com.minres.scviewer.e4.application.popupmenu.namecontext");
menuService.registerContextMenu(txDisplay.getWaveformControl(), "com.minres.scviewer.e4.application.popupmenu.wavecontext");
@ -248,8 +255,12 @@ public class WaveformViewerPart {
private void updateAll() {
eventBroker.post(ACTIVE_WAVEFORMVIEW, this);
eventBroker.post(StatusBarControl.ZOOM_LEVEL, zoomLevel[txDisplay.getZoomLevel()]);
eventBroker.post(StatusBarControl.CURSOR_TIME, Long.toString(txDisplay.getCursorTime()/1000000)+"ns");
eventBroker.post(WaveStatusBarControl.ZOOM_LEVEL, zoomLevel[txDisplay.getZoomLevel()]);
long cursor=txDisplay.getCursorTime();
long marker=txDisplay.getActMarkerTime();
eventBroker.post(WaveStatusBarControl.CURSOR_TIME, txDisplay.getScaledTime(cursor));
eventBroker.post(WaveStatusBarControl.MARKER_TIME, txDisplay.getScaledTime(marker));
eventBroker.post(WaveStatusBarControl.MARKER_DIFF, txDisplay.getScaledTime(cursor-marker));
}
@Inject @Optional
@ -356,13 +367,11 @@ public class WaveformViewerPart {
if(level<0) level=0;
if(level>zoomLevel.length-1) level=zoomLevel.length-1;
txDisplay.setZoomLevel(level);
eventBroker.post(StatusBarControl.ZOOM_LEVEL, zoomLevel[txDisplay.getZoomLevel()]);
}
updateAll(); }
public void setZoomFit() {
txDisplay.setZoomLevel(6);
eventBroker.post(StatusBarControl.ZOOM_LEVEL, zoomLevel[txDisplay.getZoomLevel()]);
}
updateAll(); }
public int getZoomLevel() {
return txDisplay.getZoomLevel();