diff --git a/README.md b/README.md index 0733877..924b76d 100644 --- a/README.md +++ b/README.md @@ -22,10 +22,35 @@ To build the plugins the Eclipse SDK or PDE can be used. In both cases the Groov eclipse plugin (http://groovy.codehaus.org/Eclipse+Plugin or Market) has to be installed. -TODO -==== -- add more tests -- move to feature based product to allow automatic updates -- improve graphics -- catch-up e3 plugin to functionality of e4 product -- add calculated traces +Key Shortcuts +============= + +Legend: + +* Left Mouse Button: LMB +* Middle Mouse Button: MMB +* Mouse Scroll wheel: MScrl +* Context any means Name List, Value List or Waveform + +| Input | Modifier | Context | Action | +|-----------|----------|----------|-----------------------------------| +| LMB klick | | any | select | +| LMB klick | Shift | Waveform | move selected marker to position | +| LMB klick | Control | Waveform | move cursor to position | +| LMB drag | | Waveform | zoom to range | +| MMB klick | | Waveform | move selected marker to position | +| MScrl | | any | scroll window up/down | +| MScrl | Shift | any | scroll window left/right | +| Key left | | Waveform | scroll window to the left (slow) | +| Key right | | Waveform | scroll window to the right (slow) | +| Key left | Shift | Waveform | scroll window to the left (fast) | +| Key right | Shift | Waveform | scroll window to the right (fast) | +| Key up | | Waveform | move selection up | +| Key down | | Waveform | move selection down | +| Key up | Control | Waveform | move selected track up | +| Key down | Control | Waveform | move selected track down | +| Key + | Control | Waveform | zoom in | +| Key - | Control | Waveform | zoom out | +| Key Pos1 | | Waveform | jump to selected marker | +| Key End | | Waveform | jump to cursor | +| Key Del | | any | delete selected entries | diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/IWaveformView.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/IWaveformView.java index 0e71ecf..2677577 100644 --- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/IWaveformView.java +++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/IWaveformView.java @@ -27,10 +27,14 @@ import com.minres.scviewer.database.tx.ITx; public interface IWaveformView extends PropertyChangeListener, ISelectionProvider{ - String CURSOR_PROPERTY = "cursor_time"; + static final String CURSOR_PROPERTY = "cursor_time"; - String MARKER_PROPERTY = "marker_time"; + static final String MARKER_PROPERTY = "marker_time"; + static final int CURSOR_POS = 0; + + static final int MARKER_POS = 1; + public static final RelationType NEXT_PREV_IN_STREAM = RelationTypeFactory.create("Prev/Next in stream"); public void addSelectionChangedListener(ISelectionChangedListener listener); @@ -113,6 +117,8 @@ public interface IWaveformView extends PropertyChangeListener, ISelectionProvide public void scrollHorizontal(int percent); + public void scrollTo(int pos); + public void addDisposeListener( DisposeListener listener ); public void deleteSelectedTracks(); diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformCanvas.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformCanvas.java index fe50833..c3839c6 100644 --- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformCanvas.java +++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformCanvas.java @@ -496,6 +496,12 @@ public class WaveformCanvas extends Canvas { } } + public void centerAt(long time) { + int scaledTime = (int) (time / scaleFactor); + int newX = -scaledTime+getWidth()/2; + setOrigin(newX>0?0:newX, origin.y); + } + public int getRulerHeight() { return rulerHeight; } diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformView.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformView.java index 23360c2..e1984fd 100644 --- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformView.java +++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformView.java @@ -292,8 +292,8 @@ public class WaveformView implements IWaveformView { @Override public void handleEvent(Event e) { switch (e.type) { -// case SWT.MouseWheel: -// break; + // case SWT.MouseWheel: + // break; case SWT.MouseDown: start = new Point(e.x, e.y); end = new Point(e.x, e.y); @@ -1509,6 +1509,22 @@ public class WaveformView implements IWaveformView { waveformCanvas.redraw(); } + @Override + public void scrollTo(int pos) { + long time = 0; + switch(pos) { + case IWaveformView.CURSOR_POS: + time = getCursorTime(); + break; + case IWaveformView.MARKER_POS: + time = getMarkerTime(selectedMarker); + break; + default: + break; + } + waveformCanvas.centerAt(time); + } + public void asyncUpdate(Widget widget) { widget.getDisplay().asyncExec(() -> { waveformCanvas.redraw(); @@ -1539,4 +1555,13 @@ public class WaveformView implements IWaveformView { return e; } + + + + + + + + + } diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java index 7db79ef..387dae6 100644 --- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java +++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java @@ -357,9 +357,13 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis waveformPane.moveSelection(GotoDirection.DOWN); return; case SWT.HOME: + waveformPane.scrollTo(IWaveformView.MARKER_POS); return; case SWT.END: + waveformPane.scrollTo(IWaveformView.CURSOR_POS); return; + case SWT.DEL: + waveformPane.deleteSelectedTracks(); default: break; }