From 732bd82034ecef8ddca1b52f985677c317e2d2ba Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Fri, 13 Mar 2020 16:01:16 +0100 Subject: [PATCH] fix #29 cannot delete VCD signals comparison of objects were done by idendity not .equals() --- .../scviewer/database/sqlite/TxStream.java | 2 +- .../scviewer/database/vcd/VCDSignal.java | 2 +- .../database/internal/WaveformDb.java | 2 +- .../e4/application/parts/WaveformViewer.java | 26 +++++++++---------- 4 files changed, 15 insertions(+), 17 deletions(-) diff --git a/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxStream.java b/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxStream.java index 51082e9..dd605ba 100644 --- a/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxStream.java +++ b/com.minres.scviewer.database.sqlite/src/com/minres/scviewer/database/sqlite/TxStream.java @@ -193,7 +193,7 @@ public class TxStream extends HierNode implements ITxStream { @Override public Boolean equals(IWaveform other) { - return(other instanceof TxStream && this.getId()==other.getId()); + return(other instanceof TxStream && this.getId().equals(other.getId())); } } diff --git a/com.minres.scviewer.database.vcd/src/com/minres/scviewer/database/vcd/VCDSignal.java b/com.minres.scviewer.database.vcd/src/com/minres/scviewer/database/vcd/VCDSignal.java index c6ac191..1e50ce2 100644 --- a/com.minres.scviewer.database.vcd/src/com/minres/scviewer/database/vcd/VCDSignal.java +++ b/com.minres.scviewer.database.vcd/src/com/minres/scviewer/database/vcd/VCDSignal.java @@ -117,7 +117,7 @@ public class VCDSignal extends HierNode implements ISignal { @Override public Boolean equals(IWaveform other) { - return(other instanceof VCDSignal && this.getId()==other.getId()); + return( other instanceof VCDSignal && this.getId().equals(other.getId())); } @Override diff --git a/com.minres.scviewer.database/src/com/minres/scviewer/database/internal/WaveformDb.java b/com.minres.scviewer.database/src/com/minres/scviewer/database/internal/WaveformDb.java index c734827..eec0871 100644 --- a/com.minres.scviewer.database/src/com/minres/scviewer/database/internal/WaveformDb.java +++ b/com.minres.scviewer.database/src/com/minres/scviewer/database/internal/WaveformDb.java @@ -140,7 +140,7 @@ public class WaveformDb extends HierNode implements IWaveformDb { break; } } - if(name == hier[hier.length-1]){ //leaf + if(name.equals(hier[hier.length-1])){ //leaf if(n1!=null) { if(n1 instanceof HierNode){ node.getChildNodes().remove(n1); diff --git a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java index 27bd372..3b60004 100644 --- a/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java +++ b/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java @@ -669,12 +669,9 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis * @param persistedState the persisted state */ protected void saveWaveformViewerState(Map persistedState) { - Integer index; - boolean isStream = false; persistedState.put(SHOWN_WAVEFORM + "S", Integer.toString(waveformPane.getStreamList().size())); //$NON-NLS-1$ - index = 0; + Integer index = 0; for (TrackEntry trackEntry : waveformPane.getStreamList()) { - if(trackEntry.isStream()) { isStream=true; } persistedState.put(SHOWN_WAVEFORM + index, trackEntry.waveform.getFullName()); persistedState.put(SHOWN_WAVEFORM + index + VALUE_DISPLAY, trackEntry.valueDisplay.toString()); persistedState.put(SHOWN_WAVEFORM + index + WAVE_DISPLAY, trackEntry.waveDisplay.toString()); @@ -693,23 +690,24 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis // get selected transaction of a stream ISelection selection = waveformPane.getSelection(); - if (!selection.isEmpty() && isStream) { + if (!selection.isEmpty()) { List t = getISelection(selection); - ITx tx = (ITx) t.get(0); - TrackEntry te = (TrackEntry) t.get(1); - // get transaction id - persistedState.put(SELECTED_TX_ID, Long.toString(tx.getId())); - //get TrackEntry name - String name = te.getStream().getFullName(); - persistedState.put(SELECTED_TRACKENTRY_NAME, name); + if(t.get(0) instanceof ITx) { + ITx tx = (ITx) t.get(0); + TrackEntry te = (TrackEntry) t.get(1); + // get transaction id + persistedState.put(SELECTED_TX_ID, Long.toString(tx.getId())); + //get TrackEntry name + String name = te.getStream().getFullName(); + persistedState.put(SELECTED_TRACKENTRY_NAME, name); + } } } protected List getISelection(ISelection selection){ List result = new LinkedList (); - if ( selection instanceof IStructuredSelection ) - { + if ( selection instanceof IStructuredSelection ) { Iterator i = ((IStructuredSelection)selection).iterator(); while (i.hasNext()){ Object o = i.next ();