6: Add Load/Save state functionality

Task-Url: https://github.com/eyck/txviewer/issues/issue/6
This commit is contained in:
Eyck Jentzsch 2015-11-30 22:55:03 +01:00
parent ff4cb91aed
commit 5c784af74f
3 changed files with 36 additions and 10 deletions

View File

@ -923,8 +923,8 @@ public class WaveformViewer implements IWaveformViewer {
* @see com.minres.scviewer.database.swt.IWaveformPanel#getActMarkerTime() * @see com.minres.scviewer.database.swt.IWaveformPanel#getActMarkerTime()
*/ */
@Override @Override
public long getSelectedMarkerTime(){ public int getSelectedMarkerId(){
return getMarkerTime(selectedMarker); return selectedMarker;
} }
@Override @Override
@ -1168,4 +1168,16 @@ public class WaveformViewer implements IWaveformViewer {
public void setColors(HashMap<WaveformColors, RGB> colourMap) { public void setColors(HashMap<WaveformColors, RGB> colourMap) {
waveformCanvas.initColors(colourMap); waveformCanvas.initColors(colourMap);
} }
@Override
public long getBaselineTime() {
return -waveformCanvas.getScaleFactorPow10()*waveformCanvas.getOrigin().x;
}
@Override
public void setBaselineTime(Long time) {
Point origin = waveformCanvas.getOrigin();
origin.x=(int) (-time/waveformCanvas.getScaleFactorPow10());
waveformCanvas.setOrigin(origin);
}
} }

View File

@ -77,7 +77,7 @@ public interface IWaveformViewer extends PropertyChangeListener, ISelectionProvi
public long getCursorTime(); public long getCursorTime();
public long getSelectedMarkerTime(); public int getSelectedMarkerId();
public long getMarkerTime(int index); public long getMarkerTime(int index);
@ -96,4 +96,8 @@ public interface IWaveformViewer extends PropertyChangeListener, ISelectionProvi
public List<ICursor> getCursorList(); public List<ICursor> getCursorList();
public void setColors(HashMap<WaveformColors, RGB> colourMap); public void setColors(HashMap<WaveformColors, RGB> colourMap);
public long getBaselineTime();
public void setBaselineTime(Long scale);
} }

View File

@ -105,6 +105,9 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
/** The Constant ZOOM_LEVEL. */ /** The Constant ZOOM_LEVEL. */
protected static final String ZOOM_LEVEL = "ZOOM_LEVEL"; protected static final String ZOOM_LEVEL = "ZOOM_LEVEL";
/** The Constant BASE_LINE_TIME. */
protected static final String BASE_LINE_TIME = "BASE_LINE_TIME";
/** The Constant FILE_CHECK_INTERVAL. */ /** The Constant FILE_CHECK_INTERVAL. */
protected static final long FILE_CHECK_INTERVAL = 60000; protected static final long FILE_CHECK_INTERVAL = 60000;
@ -209,7 +212,7 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
public void propertyChange(PropertyChangeEvent evt) { public void propertyChange(PropertyChangeEvent evt) {
Long time = (Long) evt.getNewValue(); Long time = (Long) evt.getNewValue();
eventBroker.post(WaveStatusBarControl.CURSOR_TIME, waveformPane.getScaledTime(time)); eventBroker.post(WaveStatusBarControl.CURSOR_TIME, waveformPane.getScaledTime(time));
long marker = waveformPane.getSelectedMarkerTime(); long marker = waveformPane.getMarkerTime(waveformPane.getSelectedMarkerId());
eventBroker.post(WaveStatusBarControl.MARKER_DIFF, waveformPane.getScaledTime(time - marker)); eventBroker.post(WaveStatusBarControl.MARKER_DIFF, waveformPane.getScaledTime(time - marker));
} }
@ -486,6 +489,7 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
index++; index++;
} }
persistedState.put(ZOOM_LEVEL, Integer.toString(waveformPane.getZoomLevel())); persistedState.put(ZOOM_LEVEL, Integer.toString(waveformPane.getZoomLevel()));
persistedState.put(BASE_LINE_TIME, Long.toString(waveformPane.getBaselineTime()));
} }
/** /**
@ -494,8 +498,7 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
* @param state the state * @param state the state
*/ */
protected void restoreWaveformViewerState(Map<String, String> state) { protected void restoreWaveformViewerState(Map<String, String> state) {
updateAll(); Integer waves = state.containsKey(SHOWN_WAVEFORM+"S") ? Integer.parseInt(state.get(SHOWN_WAVEFORM + "S")):0;
Integer waves = state.containsKey(SHOWN_WAVEFORM + "S") ? Integer.parseInt(state.get(SHOWN_WAVEFORM + "S")) : 0;
List<TrackEntry> res = new LinkedList<>(); List<TrackEntry> res = new LinkedList<>();
for (int i = 0; i < waves; i++) { for (int i = 0; i < waves; i++) {
IWaveform<? extends IWaveformEvent> waveform = database.getStreamByName(state.get(SHOWN_WAVEFORM + i)); IWaveform<? extends IWaveformEvent> waveform = database.getStreamByName(state.get(SHOWN_WAVEFORM + i));
@ -504,8 +507,7 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
} }
if (res.size() > 0) if (res.size() > 0)
waveformPane.getStreamList().addAll(res); waveformPane.getStreamList().addAll(res);
Integer cursorLength = state.containsKey(SHOWN_CURSOR + "S") ? Integer.parseInt(state.get(SHOWN_CURSOR + "S")) Integer cursorLength = state.containsKey(SHOWN_CURSOR+"S")?Integer.parseInt(state.get(SHOWN_CURSOR + "S")):0;
: 0;
List<ICursor> cursors = waveformPane.getCursorList(); List<ICursor> cursors = waveformPane.getCursorList();
if (cursorLength == cursors.size()) { if (cursorLength == cursors.size()) {
for (int i = 0; i < cursorLength; i++) { for (int i = 0; i < cursorLength; i++) {
@ -520,16 +522,24 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
} }
} }
if (state.containsKey(BASE_LINE_TIME)) {
try {
Long scale = Long.parseLong(state.get(BASE_LINE_TIME));
waveformPane.setBaselineTime(scale);
} catch (NumberFormatException e) {
}
}
updateAll();
} }
/** /**
* Update all. * Update all status elements by posting respective events.
*/ */
private void updateAll() { private void updateAll() {
eventBroker.post(ACTIVE_WAVEFORMVIEW, this); eventBroker.post(ACTIVE_WAVEFORMVIEW, this);
eventBroker.post(WaveStatusBarControl.ZOOM_LEVEL, zoomLevel[waveformPane.getZoomLevel()]); eventBroker.post(WaveStatusBarControl.ZOOM_LEVEL, zoomLevel[waveformPane.getZoomLevel()]);
long cursor = waveformPane.getCursorTime(); long cursor = waveformPane.getCursorTime();
long marker = waveformPane.getSelectedMarkerTime(); long marker = waveformPane.getMarkerTime(waveformPane.getSelectedMarkerId());
eventBroker.post(WaveStatusBarControl.CURSOR_TIME, waveformPane.getScaledTime(cursor)); eventBroker.post(WaveStatusBarControl.CURSOR_TIME, waveformPane.getScaledTime(cursor));
eventBroker.post(WaveStatusBarControl.MARKER_TIME, waveformPane.getScaledTime(marker)); eventBroker.post(WaveStatusBarControl.MARKER_TIME, waveformPane.getScaledTime(marker));
eventBroker.post(WaveStatusBarControl.MARKER_DIFF, waveformPane.getScaledTime(cursor - marker)); eventBroker.post(WaveStatusBarControl.MARKER_DIFF, waveformPane.getScaledTime(cursor - marker));