Changed track entry from Waveform to TrackEntry allowing multiple use of

the same waveform
This commit is contained in:
2015-11-06 19:29:36 +01:00
parent 7d3c37e989
commit c1d84ceb01
22 changed files with 526 additions and 291 deletions

View File

@ -48,21 +48,26 @@ import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.swt.widgets.Composite;
import com.minres.scviewer.database.ITx;
import com.minres.scviewer.database.ITxEvent;
import com.minres.scviewer.database.ITxStream;
import com.minres.scviewer.database.IWaveform;
import com.minres.scviewer.database.IWaveformDb;
import com.minres.scviewer.database.IWaveformDbFactory;
import com.minres.scviewer.database.IWaveformEvent;
import com.minres.scviewer.database.swt.TxDisplay;
import com.minres.scviewer.database.swt.WaveformViewerFactory;
import com.minres.scviewer.database.ui.GotoDirection;
import com.minres.scviewer.database.ui.IWaveformPanel;
import com.minres.scviewer.database.ui.IWaveformViewer;
import com.minres.scviewer.database.ui.TrackEntry;
import com.minres.scviewer.e4.application.internal.WaveStatusBarControl;
public class WaveformViewerPart {
public static final String ACTIVE_WAVEFORMVIEW="Active_Waveform_View";
public static final String ADD_WAVEFORM="AddWaveform";
protected static final String DATABASE_FILE = "DATABASE_FILE";
protected static final String SHOWN_WAVEFORM = "SHOWN_WAVEFORM";
private String[] zoomLevel;
@ -71,7 +76,9 @@ public class WaveformViewerPart {
public static final String WAVE_ACTION_ID = "com.minres.scviewer.ui.action.AddToWave";
private IWaveformPanel waveformPane;
WaveformViewerFactory factory = new WaveformViewerFactory();
private IWaveformViewer waveformPane;
@Inject private IEventBroker eventBroker;
@ -105,9 +112,9 @@ public class WaveformViewerPart {
}
}
});
waveformPane = new TxDisplay(parent);
waveformPane = factory.createPanel(parent);
waveformPane.setMaxTime(0);
waveformPane.addPropertyChangeListener(IWaveformPanel.CURSOR_PROPERTY, new PropertyChangeListener() {
waveformPane.addPropertyChangeListener(IWaveformViewer.CURSOR_PROPERTY, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
Long time = (Long) evt.getNewValue();
@ -117,7 +124,7 @@ public class WaveformViewerPart {
}
});
waveformPane.addPropertyChangeListener(IWaveformPanel.MARKER_PROPERTY, new PropertyChangeListener() {
waveformPane.addPropertyChangeListener(IWaveformViewer.MARKER_PROPERTY, new PropertyChangeListener() {
@Override
public void propertyChange(PropertyChangeEvent evt) {
Long time = (Long) evt.getNewValue();
@ -237,8 +244,8 @@ public class WaveformViewerPart {
}
persistedState.put(SHOWN_WAVEFORM+"S", Integer.toString(waveformPane.getStreamList().size()));
index=0;
for(IWaveform<? extends IWaveformEvent> waveform:waveformPane.getStreamList()){
persistedState.put(SHOWN_WAVEFORM+index, waveform.getFullName());
for(TrackEntry trackEntry:waveformPane.getStreamList()){
persistedState.put(SHOWN_WAVEFORM+index, trackEntry.waveform.getFullName());
index++;
}
}
@ -246,10 +253,10 @@ public class WaveformViewerPart {
protected void restoreState() {
updateAll();
Integer waves = persistedState.containsKey(SHOWN_WAVEFORM+"S")?Integer.parseInt(persistedState.get(SHOWN_WAVEFORM+"S")):0;
List<IWaveform<? extends IWaveformEvent>> res = new LinkedList<>();
List<TrackEntry> res = new LinkedList<>();
for(int i=0; i<waves;i++){
IWaveform<? extends IWaveformEvent> waveform = database.getStreamByName(persistedState.get(SHOWN_WAVEFORM+i));
if(waveform!=null) res.add(waveform);
if(waveform!=null) res.add(new TrackEntry(waveform));
}
if(res.size()>0) waveformPane.getStreamList().addAll(res);
}
@ -325,23 +332,25 @@ public class WaveformViewerPart {
}
public void addStreamsToList(IWaveform<? extends IWaveformEvent>[] iWaveforms, boolean insert){
List<IWaveform<? extends IWaveformEvent>> streams= new LinkedList<>();
List<TrackEntry> streams= new LinkedList<>();
for(IWaveform<? extends IWaveformEvent> stream:iWaveforms)
streams.add(stream);
streams.add(new TrackEntry(stream));
IStructuredSelection selection = (IStructuredSelection) waveformPane.getSelection();
if(selection.size()==0)
if(selection.size()==0){
waveformPane.getStreamList().addAll(streams);
else {
IWaveform<?> selectedStream = (selection.getFirstElement() instanceof ITx)?
((ITx)selection.getFirstElement()).getStream():(IWaveform<?>)selection.getFirstElement();
int index = waveformPane.getStreamList().indexOf(selectedStream);
}else {
Object first=selection.getFirstElement();
IWaveform<?> stream = (first instanceof ITx)?((ITx)first).getStream():(IWaveform<?>)first;
TrackEntry trackEntry=waveformPane.getEntryForStream(stream);
int index = waveformPane.getStreamList().indexOf(trackEntry);
if(!insert) index++;
waveformPane.getStreamList().addAll(index, streams);
}
}
public void removeStreamFromList(IWaveform<? extends IWaveformEvent> obj){
waveformPane.getStreamList().remove(obj);
public void removeStreamFromList(IWaveform<? extends IWaveformEvent> stream){
TrackEntry trackEntry=waveformPane.getEntryForStream(stream);
waveformPane.getStreamList().remove(trackEntry);
}
public void removeStreamsFromList(IWaveform<? extends IWaveformEvent>[] iWaveforms){
@ -349,10 +358,6 @@ public class WaveformViewerPart {
removeStreamFromList(stream);
}
public List<IWaveform<? extends IWaveformEvent>> getStreamList(){
return waveformPane.getStreamList();
}
public void moveSelected(int i) {
waveformPane.moveSelected(i);
}