- added second marker
- added zoom levels 1->3->10->30->... - added waveform identification icon
This commit is contained in:
@ -35,8 +35,6 @@ import org.osgi.service.prefs.PreferencesService;
|
||||
public class StatusBarControl {
|
||||
|
||||
public static final String STATUS_UPDATE="StatusUpdate";
|
||||
public static final String ZOOM_LEVEL="ZoomLevelUpdate";
|
||||
public static final String CURSOR_TIME="CursorPosUpdate";
|
||||
|
||||
@Inject EModelService modelService;
|
||||
|
||||
|
@ -29,9 +29,10 @@ import org.eclipse.swt.widgets.Composite;
|
||||
|
||||
public class WaveStatusBarControl extends StatusBarControl {
|
||||
|
||||
public static final String STATUS_UPDATE="StatusUpdate";
|
||||
public static final String ZOOM_LEVEL="ZoomLevelUpdate";
|
||||
public static final String CURSOR_TIME="CursorPosUpdate";
|
||||
public static final String MARKER_TIME="MarkerPosUpdate";
|
||||
public static final String MARKER_DIFF="MarlerDiffUpdate";
|
||||
|
||||
@Inject
|
||||
EModelService modelService;
|
||||
@ -74,14 +75,18 @@ public class WaveStatusBarControl extends StatusBarControl {
|
||||
|
||||
}
|
||||
|
||||
TextContributionItem zoomContribution, cursorContribution;
|
||||
TextContributionItem cursorContribution, markerContribution, markerDiffContribution, zoomContribution;
|
||||
|
||||
@Inject
|
||||
public WaveStatusBarControl(UISynchronize sync) {
|
||||
super(sync);
|
||||
zoomContribution = new TextContributionItem("Z:", 150);
|
||||
cursorContribution = new TextContributionItem("C:", 120);
|
||||
manager.prependToGroup(StatusLineManager.BEGIN_GROUP,cursorContribution);
|
||||
cursorContribution = new TextContributionItem("C:", 80);
|
||||
markerContribution = new TextContributionItem("M:", 80);
|
||||
markerDiffContribution = new TextContributionItem("C-M:", 80);
|
||||
zoomContribution = new TextContributionItem("Z:", 80);
|
||||
manager.appendToGroup(StatusLineManager.BEGIN_GROUP,cursorContribution);
|
||||
manager.appendToGroup(StatusLineManager.BEGIN_GROUP,markerContribution);
|
||||
manager.appendToGroup(StatusLineManager.BEGIN_GROUP,markerDiffContribution);
|
||||
manager.appendToGroup(StatusLineManager.BEGIN_GROUP, zoomContribution);
|
||||
}
|
||||
|
||||
@ -112,4 +117,14 @@ public class WaveStatusBarControl extends StatusBarControl {
|
||||
cursorContribution.setText(text);
|
||||
}
|
||||
|
||||
@Inject @Optional
|
||||
public void getMarkerEvent(@UIEventTopic(MARKER_TIME) String text) {
|
||||
markerContribution.setText(text);
|
||||
}
|
||||
|
||||
@Inject @Optional
|
||||
public void getDiffEvent(@UIEventTopic(MARKER_DIFF) String text) {
|
||||
markerDiffContribution.setText(text);
|
||||
}
|
||||
|
||||
}
|
@ -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);
|
||||
}
|
||||
|
@ -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("");
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -20,6 +20,7 @@ import org.eclipse.wb.swt.ResourceManager;
|
||||
|
||||
import com.minres.scviewer.database.IHierNode;
|
||||
import com.minres.scviewer.database.ISignal;
|
||||
import com.minres.scviewer.database.ISignalChangeMulti;
|
||||
import com.minres.scviewer.database.ITxStream;
|
||||
import com.minres.scviewer.database.IWaveformDb;
|
||||
|
||||
@ -27,10 +28,7 @@ public class TxDbLabelProvider implements ILabelProvider {
|
||||
|
||||
private List<ILabelProviderListener> listeners = new ArrayList<ILabelProviderListener>();
|
||||
|
||||
private Image database;
|
||||
private Image stream;
|
||||
private Image signal;
|
||||
private Image folder;
|
||||
private Image database, stream, signal, folder, wave;
|
||||
|
||||
|
||||
public TxDbLabelProvider() {
|
||||
@ -39,6 +37,7 @@ public class TxDbLabelProvider implements ILabelProvider {
|
||||
stream=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/stream.png");
|
||||
folder=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/folder.png");
|
||||
signal=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/signal.png");
|
||||
wave=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/wave.png");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -52,6 +51,7 @@ public class TxDbLabelProvider implements ILabelProvider {
|
||||
if(stream!=null) stream.dispose();
|
||||
if(folder!=null) folder.dispose();
|
||||
if(signal!=null) signal.dispose();
|
||||
if(wave!=null) wave.dispose();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -71,7 +71,11 @@ public class TxDbLabelProvider implements ILabelProvider {
|
||||
}else if(element instanceof ITxStream){
|
||||
return stream;
|
||||
}else if(element instanceof ISignal<?>){
|
||||
return signal;
|
||||
Object o = ((ISignal<?>)element).getEvents().firstEntry().getValue();
|
||||
if(o instanceof ISignalChangeMulti)
|
||||
return wave;
|
||||
else
|
||||
return signal;
|
||||
}else if(element instanceof IHierNode){
|
||||
return folder;
|
||||
} else
|
||||
|
Reference in New Issue
Block a user