Merge pull request #7 from eyck/develop

Develop
This commit is contained in:
Eyck Jentzsch 2015-12-01 21:13:38 +01:00
commit 08fdc18290
46 changed files with 1595 additions and 273 deletions

View File

@ -25,8 +25,10 @@ The plugins are structured as follows:
- com.minres.scviewer.feature - com.minres.scviewer.feature
the feature combining the plugins above into a somhow usable form the feature combining the plugins above into a somhow usable form
- scv_tr_sqlite - scv_tr_sqlite
a C++ project containing the SQLite based SCV database implementation. A simple a C++ project containing the SQLite based SCV database implementation and the scv4tlm
example (scv_tr_recording_example.cpp) for testig purposes is provided. socket implementations.
A simple example (scv_tr_recording_example.cpp) for testig purposes of the database is
provided.
To build the plugins the Eclipse SDK or PDE can be used. In both cases the Groovy To build the plugins the Eclipse SDK or PDE can be used. In both cases the Groovy
eclipse plugin (http://groovy.codehaus.org/Eclipse+Plugin or Market) has to be eclipse plugin (http://groovy.codehaus.org/Eclipse+Plugin or Market) has to be
@ -34,6 +36,7 @@ installed.
TODO TODO
==== ====
- refactor the graphical viewer (again)
- add more tests - add more tests
- additional analysis means - move to feature based product to allow automatic updates
- improve graphics
- catch-up e3 plugin to functionality of e4 product

View File

@ -222,16 +222,32 @@ public class WaveformCanvas extends Canvas {
} }
public void setZoomLevel(int level) { public void setZoomLevel(int level) {
long oldScaleFactor=scaleFactor;
if(level<unitMultiplier.length*unitString.length){ if(level<unitMultiplier.length*unitString.length){
this.level = level; this.level = level;
this.scaleFactor = (long) Math.pow(10, level/2); this.scaleFactor = (long) Math.pow(10, level/2);
if(level%2==1) this.scaleFactor*=3; if(level%2==1) this.scaleFactor*=3;
ITx tx = arrowPainter.getTx(); ITx tx = arrowPainter.getTx();
arrowPainter.setTx(null); arrowPainter.setTx(null);
/*
* xc = tc/oldScaleFactor
* xoffs = xc+origin.x
* xcn = tc/newScaleFactor
* t0n = (xcn-xoffs)*scaleFactor
*/
long tc=cursorPainters.get(0).getTime(); // cursor time
long xc=tc/oldScaleFactor; // cursor total x-offset
long xoffs=xc+origin.x; // cursor offset relative to left border
long xcn=tc/scaleFactor; // new total x-offset
long originX=xcn-xoffs;
if(originX>0)
origin.x=(int) -originX; // new cursor time offset relative to left border
else
origin.x=0;
syncScrollBars(); syncScrollBars();
arrowPainter.setTx(tx); arrowPainter.setTx(tx);
redraw(); redraw();
} }
} }
public long getScaleFactor() { public long getScaleFactor() {

View File

@ -20,6 +20,7 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map.Entry; import java.util.Map.Entry;
import java.util.NavigableMap; import java.util.NavigableMap;
import java.util.NoSuchElementException;
import java.util.TreeMap; import java.util.TreeMap;
import org.eclipse.core.runtime.ListenerList; import org.eclipse.core.runtime.ListenerList;
@ -772,52 +773,56 @@ public class WaveformViewer implements IWaveformViewer {
protected void paintNames(GC gc, Rectangle rect) { protected void paintNames(GC gc, Rectangle rect) {
if (streams.size() > 0) { if (streams.size() > 0) {
Integer firstKey = trackVerticalOffset.floorKey(rect.y); try {
if (firstKey == null) Integer firstKey = trackVerticalOffset.floorKey(rect.y);
firstKey = trackVerticalOffset.firstKey(); if (firstKey == null)
Integer lastKey = trackVerticalOffset.floorKey(rect.y + rect.height); firstKey = trackVerticalOffset.firstKey();
Rectangle subArea = new Rectangle(rect.x, 0, rect.width, waveformCanvas.getTrackHeight()); Integer lastKey = trackVerticalOffset.floorKey(rect.y + rect.height);
if (lastKey == firstKey) { Rectangle subArea = new Rectangle(rect.x, 0, rect.width, waveformCanvas.getTrackHeight());
TrackEntry trackEntry=trackVerticalOffset.get(firstKey); if (lastKey == firstKey) {
IWaveform<? extends IWaveformEvent> w = trackEntry.waveform; TrackEntry trackEntry=trackVerticalOffset.get(firstKey);
if (w instanceof ITxStream<?>) IWaveform<? extends IWaveformEvent> w = trackEntry.waveform;
subArea.height *= ((ITxStream<?>) w).getMaxConcurrency();
drawTextFormat(gc, subArea, firstKey, w.getFullName(), trackEntry.selected);
} else {
for (Entry<Integer, TrackEntry> entry : trackVerticalOffset.subMap(firstKey, true, lastKey, true).entrySet()) {
IWaveform<? extends IWaveformEvent> w = entry.getValue().waveform;
subArea.height = waveformCanvas.getTrackHeight();
if (w instanceof ITxStream<?>) if (w instanceof ITxStream<?>)
subArea.height *= ((ITxStream<?>) w).getMaxConcurrency(); subArea.height *= ((ITxStream<?>) w).getMaxConcurrency();
drawTextFormat(gc, subArea, entry.getKey(), w.getFullName(), entry.getValue().selected); drawTextFormat(gc, subArea, firstKey, w.getFullName(), trackEntry.selected);
} else {
for (Entry<Integer, TrackEntry> entry : trackVerticalOffset.subMap(firstKey, true, lastKey, true).entrySet()) {
IWaveform<? extends IWaveformEvent> w = entry.getValue().waveform;
subArea.height = waveformCanvas.getTrackHeight();
if (w instanceof ITxStream<?>)
subArea.height *= ((ITxStream<?>) w).getMaxConcurrency();
drawTextFormat(gc, subArea, entry.getKey(), w.getFullName(), entry.getValue().selected);
}
} }
} }catch(NoSuchElementException e){}
} }
} }
protected void paintValues(GC gc, Rectangle rect) { protected void paintValues(GC gc, Rectangle rect) {
if (streams.size() > 0) { if (streams.size() > 0) {
Integer firstKey = trackVerticalOffset.floorKey(rect.y); try {
if (firstKey == null) Integer firstKey = trackVerticalOffset.floorKey(rect.y);
firstKey = trackVerticalOffset.firstKey(); if (firstKey == null)
Integer lastKey = trackVerticalOffset.floorKey(rect.y + rect.height); firstKey = trackVerticalOffset.firstKey();
Rectangle subArea = new Rectangle(rect.x, 0, rect.width, waveformCanvas.getTrackHeight()); Integer lastKey = trackVerticalOffset.floorKey(rect.y + rect.height);
if (lastKey == firstKey) { Rectangle subArea = new Rectangle(rect.x, 0, rect.width, waveformCanvas.getTrackHeight());
TrackEntry trackEntry=trackVerticalOffset.get(firstKey); if (lastKey == firstKey) {
IWaveform<? extends IWaveformEvent> w = trackEntry.waveform; TrackEntry trackEntry=trackVerticalOffset.get(firstKey);
if (w instanceof ITxStream<?>) IWaveform<? extends IWaveformEvent> w = trackEntry.waveform;
subArea.height *= ((ITxStream<?>) w).getMaxConcurrency();
drawValue(gc, subArea, firstKey, actualValues.get(w), trackEntry.selected);
} else {
for (Entry<Integer, TrackEntry> entry : trackVerticalOffset.subMap(firstKey, true, lastKey, true)
.entrySet()) {
IWaveform<? extends IWaveformEvent> w = entry.getValue().waveform;
subArea.height = waveformCanvas.getTrackHeight();
if (w instanceof ITxStream<?>) if (w instanceof ITxStream<?>)
subArea.height *= ((ITxStream<?>) w).getMaxConcurrency(); subArea.height *= ((ITxStream<?>) w).getMaxConcurrency();
drawValue(gc, subArea, entry.getKey(), actualValues.get(w), entry.getValue().selected); drawValue(gc, subArea, firstKey, actualValues.get(w), trackEntry.selected);
} else {
for (Entry<Integer, TrackEntry> entry : trackVerticalOffset.subMap(firstKey, true, lastKey, true)
.entrySet()) {
IWaveform<? extends IWaveformEvent> w = entry.getValue().waveform;
subArea.height = waveformCanvas.getTrackHeight();
if (w instanceof ITxStream<?>)
subArea.height *= ((ITxStream<?>) w).getMaxConcurrency();
drawValue(gc, subArea, entry.getKey(), actualValues.get(w), entry.getValue().selected);
}
} }
} }catch(NoSuchElementException e){}
} }
} }
@ -847,9 +852,9 @@ public class WaveformViewer implements IWaveformViewer {
} }
public void setHighliteRelation(RelationType relationType){ public void setHighliteRelation(RelationType relationType){
this.waveformCanvas.setHighliteRelation(relationType); this.waveformCanvas.setHighliteRelation(relationType);
} }
/* (non-Javadoc) /* (non-Javadoc)
* @see com.minres.scviewer.database.swt.IWaveformPanel#getMaxTime() * @see com.minres.scviewer.database.swt.IWaveformPanel#getMaxTime()
@ -918,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
@ -1163,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

@ -12,9 +12,8 @@ package com.minres.scviewer.database.vcd;
import com.minres.scviewer.database.BitVector; import com.minres.scviewer.database.BitVector;
// TODO: Auto-generated Javadoc
/** /**
* The Interface ITraceBuilder. * The Interface IVCDDatabaseBuilder. It allows to add VCD events into the database
*/ */
public interface IVCDDatabaseBuilder { public interface IVCDDatabaseBuilder {

View File

@ -31,15 +31,16 @@ import com.minres.scviewer.database.IWaveformEvent;
import com.minres.scviewer.database.InputFormatException; import com.minres.scviewer.database.InputFormatException;
import com.minres.scviewer.database.RelationType; import com.minres.scviewer.database.RelationType;
// TODO: Auto-generated Javadoc
/** /**
* The Class VCDDb. * The Class VCDDb.
*/ */
public class VCDDbLoader implements IWaveformDbLoader, IVCDDatabaseBuilder { public class VCDDbLoader implements IWaveformDbLoader, IVCDDatabaseBuilder {
/** The Constant TIME_RES. */
private static final Long TIME_RES = 1000L; // ps; private static final Long TIME_RES = 1000L; // ps;
/** The db. */
private IWaveformDb db; private IWaveformDb db;
/** The module stack. */ /** The module stack. */
@ -48,17 +49,17 @@ public class VCDDbLoader implements IWaveformDbLoader, IVCDDatabaseBuilder {
/** The signals. */ /** The signals. */
private List<IWaveform<? extends IWaveformEvent>> signals; private List<IWaveform<? extends IWaveformEvent>> signals;
/** The max time. */
private long maxTime; private long maxTime;
/** /**
* Instantiates a new VCD db. * Instantiates a new VCD db.
*
* @param netName the net name
*/ */
public VCDDbLoader() { public VCDDbLoader() {
} }
private byte[] x = "$date".getBytes(); /** The date bytes. */
private byte[] dateBytes = "$date".getBytes();
/* (non-Javadoc) /* (non-Javadoc)
* @see com.minres.scviewer.database.ITrDb#load(java.io.File) * @see com.minres.scviewer.database.ITrDb#load(java.io.File)
@ -68,12 +69,12 @@ public class VCDDbLoader implements IWaveformDbLoader, IVCDDatabaseBuilder {
public boolean load(IWaveformDb db, File file) throws Exception { public boolean load(IWaveformDb db, File file) throws Exception {
this.db=db; this.db=db;
FileInputStream fis = new FileInputStream(file); FileInputStream fis = new FileInputStream(file);
byte[] buffer = new byte[x.length]; byte[] buffer = new byte[dateBytes.length];
int read = fis.read(buffer, 0, x.length); int read = fis.read(buffer, 0, dateBytes.length);
fis.close(); fis.close();
if (read == x.length) if (read == dateBytes.length)
for (int i = 0; i < x.length; i++) for (int i = 0; i < dateBytes.length; i++)
if (buffer[i] != x[i]) if (buffer[i] != dateBytes[i])
return false; return false;
signals = new Vector<IWaveform<? extends IWaveformEvent>>(); signals = new Vector<IWaveform<? extends IWaveformEvent>>();
@ -180,6 +181,9 @@ public class VCDDbLoader implements IWaveformDbLoader, IVCDDatabaseBuilder {
} }
} }
/* (non-Javadoc)
* @see com.minres.scviewer.database.IWaveformDbLoader#getAllRelationTypes()
*/
@Override @Override
public Collection<RelationType> getAllRelationTypes(){ public Collection<RelationType> getAllRelationTypes(){
return Collections.emptyList(); return Collections.emptyList();

View File

@ -34,8 +34,13 @@
</children> </children>
<mainMenu xmi:id="_95PfyXNmEeWBq8z1Dv39LA" elementId="menu:org.eclipse.ui.main.menu"> <mainMenu xmi:id="_95PfyXNmEeWBq8z1Dv39LA" elementId="menu:org.eclipse.ui.main.menu">
<children xsi:type="menu:Menu" xmi:id="_95QGwHNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.menu.file" label="File"> <children xsi:type="menu:Menu" xmi:id="_95QGwHNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.menu.file" label="File">
<children xsi:type="menu:HandledMenuItem" xmi:id="_VJG3YHgvEeWwZ-9vrAR2UQ" elementId="" label="Open" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/folder_database.png" command="_95PfwHNmEeWBq8z1Dv39LA"/> <children xsi:type="menu:HandledMenuItem" xmi:id="_VJG3YHgvEeWwZ-9vrAR2UQ" elementId="" label="Open Database" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/folder_database.png" command="_95PfwHNmEeWBq8z1Dv39LA"/>
<children xsi:type="menu:HandledMenuItem" xmi:id="_95QGwnNmEeWBq8z1Dv39LA" label="Save" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/save_edit.png" command="_95Pfw3NmEeWBq8z1Dv39LA"/> <children xsi:type="menu:HandledMenuItem" xmi:id="_e7MOYJedEeW09eyIbHsdvg" elementId="" label="Load settings" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/folder_page.png" command="_7-AIMJebEeW09eyIbHsdvg">
<parameters xmi:id="_4vtYgJehEeW09eyIbHsdvg" elementId="com.minres.scviewer.e4.application.parameter.30" name="com.minres.scviewer.e4.application.commandparameter.loadStore" value="load"/>
</children>
<children xsi:type="menu:HandledMenuItem" xmi:id="_95QGwnNmEeWBq8z1Dv39LA" label="Save settings" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/script_save.png" command="_7-AIMJebEeW09eyIbHsdvg">
<parameters xmi:id="_61QIsJehEeW09eyIbHsdvg" elementId="com.minres.scviewer.e4.application.parameter.31" name="com.minres.scviewer.e4.application.commandparameter.loadStore" value="store"/>
</children>
<children xsi:type="menu:HandledMenuItem" xmi:id="_95QGw3NmEeWBq8z1Dv39LA" label="Quit" command="_95PfvHNmEeWBq8z1Dv39LA"/> <children xsi:type="menu:HandledMenuItem" xmi:id="_95QGw3NmEeWBq8z1Dv39LA" label="Quit" command="_95PfvHNmEeWBq8z1Dv39LA"/>
</children> </children>
<children xsi:type="menu:Menu" xmi:id="_ZyHC0HgvEeWwZ-9vrAR2UQ" elementId="" label="Edit"> <children xsi:type="menu:Menu" xmi:id="_ZyHC0HgvEeWwZ-9vrAR2UQ" elementId="" label="Edit">
@ -77,6 +82,9 @@
<trimBars xmi:id="_95QGy3NmEeWBq8z1Dv39LA" elementId="org.eclipse.ui.main.toolbar"> <trimBars xmi:id="_95QGy3NmEeWBq8z1Dv39LA" elementId="org.eclipse.ui.main.toolbar">
<children xsi:type="menu:ToolBar" xmi:id="_95QGzHNmEeWBq8z1Dv39LA" elementId="toolbar:org.eclipse.ui.main.toolbar"> <children xsi:type="menu:ToolBar" xmi:id="_95QGzHNmEeWBq8z1Dv39LA" elementId="toolbar:org.eclipse.ui.main.toolbar">
<children xsi:type="menu:HandledToolItem" xmi:id="_95QGzXNmEeWBq8z1Dv39LA" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/folder_database.png" tooltip="Open new database" command="_95PfwHNmEeWBq8z1Dv39LA"/> <children xsi:type="menu:HandledToolItem" xmi:id="_95QGzXNmEeWBq8z1Dv39LA" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/folder_database.png" tooltip="Open new database" command="_95PfwHNmEeWBq8z1Dv39LA"/>
<children xsi:type="menu:HandledToolItem" xmi:id="_o9UBUJeiEeW09eyIbHsdvg" elementId="com.minres.scviewer.e4.application.handledtoolitem.loadsettings" label="Load settings" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/folder_page.png" command="_7-AIMJebEeW09eyIbHsdvg">
<parameters xmi:id="_tQZAEJeiEeW09eyIbHsdvg" elementId="com.minres.scviewer.e4.application.parameter.32" name="com.minres.scviewer.e4.application.commandparameter.loadStore" value="load"/>
</children>
<children xsi:type="menu:HandledToolItem" xmi:id="_95QGznNmEeWBq8z1Dv39LA" toBeRendered="false" visible="false" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/save_edit.png" command="_95Pfw3NmEeWBq8z1Dv39LA"/> <children xsi:type="menu:HandledToolItem" xmi:id="_95QGznNmEeWBq8z1Dv39LA" toBeRendered="false" visible="false" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/save_edit.png" command="_95Pfw3NmEeWBq8z1Dv39LA"/>
</children> </children>
<children xsi:type="menu:ToolBar" xmi:id="_VUv_AHckEeWwZ-9vrAR2UQ" elementId="com.minres.scviewer.e4.application.toolbar.0"> <children xsi:type="menu:ToolBar" xmi:id="_VUv_AHckEeWwZ-9vrAR2UQ" elementId="com.minres.scviewer.e4.application.toolbar.0">
@ -134,6 +142,9 @@
</children> </children>
</trimBars> </trimBars>
</children> </children>
<children xsi:type="basic:Dialog" xmi:id="_8BTkQIytEeWid7xO48ZBXw" elementId="com.minres.scviewer.e4.application.dialog.aboutscviewer" toBeRendered="false" visible="false" selectedElement="__VNlAIytEeWid7xO48ZBXw" label="About SCViewer" y="600">
<children xsi:type="basic:Part" xmi:id="__VNlAIytEeWid7xO48ZBXw" elementId="com.minres.scviewer.e4.application.part.0" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.parts.AboutDialog"/>
</children>
<handlers xmi:id="_95PfvXNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.handler.quitCommand" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.QuitHandler" command="_95PfvHNmEeWBq8z1Dv39LA"/> <handlers xmi:id="_95PfvXNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.handler.quitCommand" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.QuitHandler" command="_95PfvHNmEeWBq8z1Dv39LA"/>
<handlers xmi:id="_95PfwXNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.handler.openCommand" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.OpenHandler" command="_95PfwHNmEeWBq8z1Dv39LA"/> <handlers xmi:id="_95PfwXNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.handler.openCommand" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.OpenHandler" command="_95PfwHNmEeWBq8z1Dv39LA"/>
<handlers xmi:id="_95PfxHNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.handler.saveCommand" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.SaveHandler" command="_95Pfw3NmEeWBq8z1Dv39LA"/> <handlers xmi:id="_95PfxHNmEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.handler.saveCommand" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.SaveHandler" command="_95Pfw3NmEeWBq8z1Dv39LA"/>
@ -142,6 +153,7 @@
<handlers xmi:id="_CTcpEIl_EeWxJ_wPkM6yGQ" elementId="com.minres.scviewer.e4.application.handler.preferences" contributionURI="bundleclass://com.opcoach.e4.preferences/com.opcoach.e4.preferences.handlers.E4PreferencesHandler" command="_AxH6sIl_EeWxJ_wPkM6yGQ"/> <handlers xmi:id="_CTcpEIl_EeWxJ_wPkM6yGQ" elementId="com.minres.scviewer.e4.application.handler.preferences" contributionURI="bundleclass://com.opcoach.e4.preferences/com.opcoach.e4.preferences.handlers.E4PreferencesHandler" command="_AxH6sIl_EeWxJ_wPkM6yGQ"/>
<handlers xmi:id="_UUnX8IoNEeWxJ_wPkM6yGQ" elementId="com.minres.scviewer.e4.application.handler.set_them" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.ThemeSetHandler" command="_KlGlsIoNEeWxJ_wPkM6yGQ"/> <handlers xmi:id="_UUnX8IoNEeWxJ_wPkM6yGQ" elementId="com.minres.scviewer.e4.application.handler.set_them" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.ThemeSetHandler" command="_KlGlsIoNEeWxJ_wPkM6yGQ"/>
<handlers xmi:id="_V4EscIuGEeWid7xO48ZBXw" elementId="com.minres.scviewer.e4.application.handler.setreleationtype" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.SetRelationTypeHandler" command="_E9lUgIt2EeWid7xO48ZBXw"/> <handlers xmi:id="_V4EscIuGEeWid7xO48ZBXw" elementId="com.minres.scviewer.e4.application.handler.setreleationtype" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.SetRelationTypeHandler" command="_E9lUgIt2EeWid7xO48ZBXw"/>
<handlers xmi:id="__99WoJebEeW09eyIbHsdvg" elementId="com.minres.scviewer.e4.application.handler.loadStoreSettings" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.LoadStoreSettingsHandler" command="_7-AIMJebEeW09eyIbHsdvg"/>
<bindingTables xmi:id="_95PfvnNmEeWBq8z1Dv39LA" bindingContext="_95PfuXNmEeWBq8z1Dv39LA"> <bindingTables xmi:id="_95PfvnNmEeWBq8z1Dv39LA" bindingContext="_95PfuXNmEeWBq8z1Dv39LA">
<bindings xmi:id="_95Pfv3NmEeWBq8z1Dv39LA" keySequence="M1+Q" command="_95PfvHNmEeWBq8z1Dv39LA"/> <bindings xmi:id="_95Pfv3NmEeWBq8z1Dv39LA" keySequence="M1+Q" command="_95PfvHNmEeWBq8z1Dv39LA"/>
<bindings xmi:id="_95PfwnNmEeWBq8z1Dv39LA" keySequence="M1+O" command="_95PfwHNmEeWBq8z1Dv39LA"/> <bindings xmi:id="_95PfwnNmEeWBq8z1Dv39LA" keySequence="M1+O" command="_95PfwHNmEeWBq8z1Dv39LA"/>
@ -152,7 +164,7 @@
<children xmi:id="_95PfunNmEeWBq8z1Dv39LA" elementId="org.eclipse.ui.contexts.window" name="In Windows"/> <children xmi:id="_95PfunNmEeWBq8z1Dv39LA" elementId="org.eclipse.ui.contexts.window" name="In Windows"/>
<children xmi:id="_95Pfu3NmEeWBq8z1Dv39LA" elementId="org.eclipse.ui.contexts.dialog" name="In Dialogs"/> <children xmi:id="_95Pfu3NmEeWBq8z1Dv39LA" elementId="org.eclipse.ui.contexts.dialog" name="In Dialogs"/>
</rootContext> </rootContext>
<descriptors xmi:id="_KicY0HRMEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.partdescriptor.waveformviewer" label="SCViewer" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/scviewer.png" allowMultiple="true" category="General" closeable="true" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.parts.WaveformViewerPart"> <descriptors xmi:id="_KicY0HRMEeWBq8z1Dv39LA" elementId="com.minres.scviewer.e4.application.partdescriptor.waveformviewer" label="SCViewer" iconURI="platform:/plugin/com.minres.scviewer.e4.application/icons/scviewer.png" allowMultiple="true" category="General" closeable="true" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.parts.WaveformViewer">
<tags>categoryTag:General</tags> <tags>categoryTag:General</tags>
<handlers xmi:id="_BSIuEHacEeWwZ-9vrAR2UQ" elementId="com.minres.scviewer.e4.application.handler.navigateEventCommand" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.NavigateEvent" command="_79rx4HabEeWwZ-9vrAR2UQ"/> <handlers xmi:id="_BSIuEHacEeWwZ-9vrAR2UQ" elementId="com.minres.scviewer.e4.application.handler.navigateEventCommand" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.NavigateEvent" command="_79rx4HabEeWwZ-9vrAR2UQ"/>
<handlers xmi:id="_JpdGwHXKEeWwZ-9vrAR2UQ" elementId="com.minres.scviewer.e4.application.handler.navigateTransCommand" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.NavigateTrans" command="_Gn3lEHXKEeWwZ-9vrAR2UQ"/> <handlers xmi:id="_JpdGwHXKEeWwZ-9vrAR2UQ" elementId="com.minres.scviewer.e4.application.handler.navigateTransCommand" contributionURI="bundleclass://com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.handlers.NavigateTrans" command="_Gn3lEHXKEeWwZ-9vrAR2UQ"/>
@ -223,6 +235,9 @@
<commands xmi:id="_E9lUgIt2EeWid7xO48ZBXw" elementId="com.minres.scviewer.e4.application.command.setrelationtype" commandName="SetRelationType"> <commands xmi:id="_E9lUgIt2EeWid7xO48ZBXw" elementId="com.minres.scviewer.e4.application.command.setrelationtype" commandName="SetRelationType">
<parameters xmi:id="_xnW7IIt_EeWid7xO48ZBXw" elementId="com.minres.scviewer.e4.application.commandparameter.relationName" name="relationName" optional="false"/> <parameters xmi:id="_xnW7IIt_EeWid7xO48ZBXw" elementId="com.minres.scviewer.e4.application.commandparameter.relationName" name="relationName" optional="false"/>
</commands> </commands>
<commands xmi:id="_7-AIMJebEeW09eyIbHsdvg" elementId="com.minres.scviewer.e4.application.command.loadStoreSettings" commandName="loadStoreSettings">
<parameters xmi:id="_wxY3EJehEeW09eyIbHsdvg" elementId="com.minres.scviewer.e4.application.commandparameter.loadStore" name="loadStore"/>
</commands>
<addons xmi:id="_95PfsnNmEeWBq8z1Dv39LA" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/> <addons xmi:id="_95PfsnNmEeWBq8z1Dv39LA" elementId="org.eclipse.e4.core.commands.service" contributionURI="bundleclass://org.eclipse.e4.core.commands/org.eclipse.e4.core.commands.CommandServiceAddon"/>
<addons xmi:id="_95Pfs3NmEeWBq8z1Dv39LA" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/> <addons xmi:id="_95Pfs3NmEeWBq8z1Dv39LA" elementId="org.eclipse.e4.ui.contexts.service" contributionURI="bundleclass://org.eclipse.e4.ui.services/org.eclipse.e4.ui.services.ContextServiceAddon"/>
<addons xmi:id="_95PftHNmEeWBq8z1Dv39LA" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/> <addons xmi:id="_95PftHNmEeWBq8z1Dv39LA" elementId="org.eclipse.e4.ui.bindings.service" contributionURI="bundleclass://org.eclipse.e4.ui.bindings/org.eclipse.e4.ui.bindings.BindingServiceAddon"/>

Binary file not shown.

After

Width:  |  Height:  |  Size: 698 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 688 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 804 B

View File

@ -34,7 +34,7 @@ import org.osgi.service.event.Event;
import org.osgi.service.event.EventHandler; import org.osgi.service.event.EventHandler;
/** /**
* This is a stub implementation containing e4 LifeCycle annotated methods.<br /> * This implementation contains e4 LifeCycle annotated methods.<br />
* There is a corresponding entry in <em>plugin.xml</em> (under the * There is a corresponding entry in <em>plugin.xml</em> (under the
* <em>org.eclipse.core.runtime.products' extension point</em>) that references * <em>org.eclipse.core.runtime.products' extension point</em>) that references
* this class. * this class.
@ -42,10 +42,21 @@ import org.osgi.service.event.EventHandler;
@SuppressWarnings("restriction") @SuppressWarnings("restriction")
public class E4LifeCycle { public class E4LifeCycle {
/**
* Post construct.
*
* @param eventBroker the event broker
*/
@PostConstruct @PostConstruct
private static void postConstruct(final IEventBroker eventBroker) { private static void postConstruct(final IEventBroker eventBroker) {
} }
/**
* Post context create. Open a database if given on command line using the OpenViewHandler
*
* @param appContext the app context
* @param eventBroker the event broker
*/
@PostContextCreate @PostContextCreate
void postContextCreate(IApplicationContext appContext, final IEventBroker eventBroker) { void postContextCreate(IApplicationContext appContext, final IEventBroker eventBroker) {
final String[] args = (String[])appContext.getArguments().get(IApplicationContext.APPLICATION_ARGS); final String[] args = (String[])appContext.getArguments().get(IApplicationContext.APPLICATION_ARGS);
@ -66,18 +77,40 @@ public class E4LifeCycle {
} }
}); });
} }
/**
* Pre save.
*
* @param workbenchContext the workbench context
*/
@PreSave @PreSave
void preSave(IEclipseContext workbenchContext) { void preSave(IEclipseContext workbenchContext) {
} }
/**
* Process additions.
*
* @param workbenchContext the workbench context
*/
@ProcessAdditions @ProcessAdditions
void processAdditions(IEclipseContext workbenchContext) { void processAdditions(IEclipseContext workbenchContext) {
} }
/**
* Process removals.
*
* @param workbenchContext the workbench context
*/
@ProcessRemovals @ProcessRemovals
void processRemovals(IEclipseContext workbenchContext) { void processRemovals(IEclipseContext workbenchContext) {
} }
/**
* Join.
*
* @param tokens the tokens
* @return the string
*/
String join(String[] tokens){ String join(String[] tokens){
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
boolean first=true; boolean first=true;
@ -89,10 +122,25 @@ public class E4LifeCycle {
return sb.toString(); return sb.toString();
} }
/**
* The Class OpenViewHandler.
*/
private class OpenViewHandler { private class OpenViewHandler {
/** The app. */
@Inject MApplication app; @Inject MApplication app;
/** The model service. */
@Inject EModelService modelService; @Inject EModelService modelService;
/** The part service. */
@Inject EPartService partService; @Inject EPartService partService;
/**
* Open view for file.
*
* @param name the name
*/
public void openViewForFile(String name){ public void openViewForFile(String name){
File file = new File(name); File file = new File(name);
MPart part = partService.createPart("com.minres.scviewer.e4.application.partdescriptor.waveformviewer"); MPart part = partService.createPart("com.minres.scviewer.e4.application.partdescriptor.waveformviewer");

View File

@ -27,19 +27,31 @@ import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.e4.ui.workbench.modeling.EPartService; import org.eclipse.e4.ui.workbench.modeling.EPartService;
import com.minres.scviewer.database.RelationType; import com.minres.scviewer.database.RelationType;
import com.minres.scviewer.e4.application.parts.WaveformViewerPart; import com.minres.scviewer.e4.application.parts.WaveformViewer;
/**
* The Class NavigateContribution. Currently not used in Application.e4xmi
*/
public class NavigateContribution { public class NavigateContribution {
/** The part service. */
@Inject EPartService partService; @Inject EPartService partService;
/**
* About to show.
*
* @param items the items
* @param application the application
* @param modelService the model service
*/
@AboutToShow @AboutToShow
public void aboutToShow(List<MMenuElement> items, MApplication application, EModelService modelService) { public void aboutToShow(List<MMenuElement> items, MApplication application, EModelService modelService) {
// modelService.getActivePerspective(window) // modelService.getActivePerspective(window)
// modelService.findElements(application,"myID",MPart.class, EModelService.IN_ACTIVE_PERSPECTIVE); // modelService.findElements(application,"myID",MPart.class, EModelService.IN_ACTIVE_PERSPECTIVE);
// MDirectMenuItem dynamicItem = MMenuFactory.INSTANCE.createDirectMenuItem(); // MDirectMenuItem dynamicItem = MMenuFactory.INSTANCE.createDirectMenuItem();
MPart part = partService.getActivePart(); MPart part = partService.getActivePart();
if(part.getObject()instanceof WaveformViewerPart){ if(part.getObject()instanceof WaveformViewer){
WaveformViewerPart waveformViewerPart = (WaveformViewerPart) part.getObject(); WaveformViewer waveformViewerPart = (WaveformViewer) part.getObject();
RelationType relationTypeFilter = waveformViewerPart.getRelationTypeFilter(); RelationType relationTypeFilter = waveformViewerPart.getRelationTypeFilter();
MCommand command = modelService.findElements(application, MCommand command = modelService.findElements(application,
"com.minres.scviewer.e4.application.command.setrelationtype", MCommand.class, null).get(0); "com.minres.scviewer.e4.application.command.setrelationtype", MCommand.class, null).get(0);

View File

@ -32,24 +32,41 @@ import org.eclipse.swt.widgets.Composite;
import com.minres.scviewer.database.ITx; import com.minres.scviewer.database.ITx;
import com.minres.scviewer.database.RelationType; import com.minres.scviewer.database.RelationType;
import com.minres.scviewer.e4.application.parts.PartListener; import com.minres.scviewer.e4.application.parts.PartListener;
import com.minres.scviewer.e4.application.parts.WaveformViewerPart; import com.minres.scviewer.e4.application.parts.WaveformViewer;
/**
* The Class RelationTypeToolControl allowing to control which TX relation is used for navigation.
*/
public class RelationTypeToolControl extends PartListener implements ISelectionChangedListener { public class RelationTypeToolControl extends PartListener implements ISelectionChangedListener {
/** The part service. */
EPartService partService; EPartService partService;
/** The combo viewer. */
ComboViewer comboViewer; ComboViewer comboViewer;
WaveformViewerPart waveformViewerPart; /** The waveform viewer part. */
WaveformViewer waveformViewerPart;
/** The dummy. */
RelationType dummy = RelationType.create("------------"); RelationType dummy = RelationType.create("------------");
/**
* Instantiates a new relation type tool control.
*
* @param partService the part service
*/
@Inject @Inject
public RelationTypeToolControl(EPartService partService) { public RelationTypeToolControl(EPartService partService) {
this.partService=partService; this.partService=partService;
partService.addPartListener(this); partService.addPartListener(this);
} }
/**
* Creates the gui.
*
* @param parent the parent
*/
@PostConstruct @PostConstruct
public void createGui(Composite parent) { public void createGui(Composite parent) {
comboViewer = new ComboViewer(parent, SWT.NONE); comboViewer = new ComboViewer(parent, SWT.NONE);
@ -62,10 +79,13 @@ public class RelationTypeToolControl extends PartListener implements ISelectionC
comboViewer.addSelectionChangedListener(this); comboViewer.addSelectionChangedListener(this);
} }
/* (non-Javadoc)
* @see com.minres.scviewer.e4.application.parts.PartListener#partActivated(org.eclipse.e4.ui.model.application.ui.basic.MPart)
*/
@Override @Override
public void partActivated(MPart part) { public void partActivated(MPart part) {
if(part.getObject() instanceof WaveformViewerPart){ if(part.getObject() instanceof WaveformViewer){
waveformViewerPart=(WaveformViewerPart) part.getObject(); waveformViewerPart=(WaveformViewer) part.getObject();
checkSelection(waveformViewerPart.getSelection()); checkSelection(waveformViewerPart.getSelection());
} else { } else {
waveformViewerPart=null; waveformViewerPart=null;
@ -73,14 +93,25 @@ public class RelationTypeToolControl extends PartListener implements ISelectionC
} }
} }
/**
* Sets the selection.
*
* @param selection the selection
* @param partService the part service
*/
@Inject @Inject
public void setSelection(@Named(IServiceConstants.ACTIVE_SELECTION) @Optional IStructuredSelection selection, EPartService partService){ public void setSelection(@Named(IServiceConstants.ACTIVE_SELECTION) @Optional IStructuredSelection selection, EPartService partService){
MPart part = partService.getActivePart(); MPart part = partService.getActivePart();
if(part!=null && part.getObject() instanceof WaveformViewerPart && comboViewer!=null){ if(part!=null && part.getObject() instanceof WaveformViewer && comboViewer!=null){
checkSelection(selection); checkSelection(selection);
} }
} }
/**
* Check selection.
*
* @param selection the selection
*/
protected void checkSelection(ISelection selection) { protected void checkSelection(ISelection selection) {
if( selection instanceof IStructuredSelection) { if( selection instanceof IStructuredSelection) {
Object object= ((IStructuredSelection)selection).getFirstElement(); Object object= ((IStructuredSelection)selection).getFirstElement();
@ -94,11 +125,14 @@ public class RelationTypeToolControl extends PartListener implements ISelectionC
comboViewer.getCombo().setEnabled(false); comboViewer.getCombo().setEnabled(false);
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
*/
@Override @Override
public void selectionChanged(SelectionChangedEvent event) { public void selectionChanged(SelectionChangedEvent event) {
MPart part = partService.getActivePart(); MPart part = partService.getActivePart();
if(part!=null && part.getObject() instanceof WaveformViewerPart && !event.getSelection().isEmpty()){ if(part!=null && part.getObject() instanceof WaveformViewer && !event.getSelection().isEmpty()){
WaveformViewerPart waveformViewerPart=(WaveformViewerPart) part.getObject(); WaveformViewer waveformViewerPart=(WaveformViewer) part.getObject();
if(event.getSelection() instanceof IStructuredSelection){ if(event.getSelection() instanceof IStructuredSelection){
waveformViewerPart.setNavigationRelationType( waveformViewerPart.setNavigationRelationType(
(RelationType)((IStructuredSelection)event.getSelection()).getFirstElement()); (RelationType)((IStructuredSelection)event.getSelection()).getFirstElement());

View File

@ -11,15 +11,19 @@
package com.minres.scviewer.e4.application.handlers; package com.minres.scviewer.e4.application.handlers;
import org.eclipse.e4.core.di.annotations.Execute; import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.swt.SWT; import org.eclipse.e4.ui.model.application.ui.basic.MDialog;
import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Shell;
import com.minres.scviewer.e4.application.parts.AboutDialog;
public class AboutHandler { public class AboutHandler {
@Execute @Execute
public void execute(Shell shell) { public void execute(Shell shell, MApplication app, MWindow window, EModelService ms /*@Named("mdialog01.dialog.0") MDialog dialog*/) {
AboutDialog.open(shell, SWT.NONE); MDialog dialog = (MDialog) ms.find("com.minres.scviewer.e4.application.dialog.aboutscviewer", app);
dialog.setToBeRendered(true);
dialog.setToBeRendered(false);
} }
} }

View File

@ -18,7 +18,7 @@ import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.IStructuredSelection;
import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.IWaveform;
import com.minres.scviewer.e4.application.parts.WaveformViewerPart; import com.minres.scviewer.e4.application.parts.WaveformViewer;
public class DeleteWaveformHandler { public class DeleteWaveformHandler {
@ -32,8 +32,8 @@ public class DeleteWaveformHandler {
public void execute(ESelectionService selectionService, MPart activePart) { public void execute(ESelectionService selectionService, MPart activePart) {
Object o = activePart.getObject(); Object o = activePart.getObject();
Object sel = selectionService.getSelection(); Object sel = selectionService.getSelection();
if(o instanceof WaveformViewerPart && ((IStructuredSelection)sel).getFirstElement() instanceof IWaveform<?>){ if(o instanceof WaveformViewer && ((IStructuredSelection)sel).getFirstElement() instanceof IWaveform<?>){
((WaveformViewerPart)o).removeStreamFromList((IWaveform<?>) ((IStructuredSelection)sel).getFirstElement()); ((WaveformViewer)o).removeStreamFromList((IWaveform<?>) ((IStructuredSelection)sel).getFirstElement());
} }
} }
} }

View File

@ -0,0 +1,57 @@
/*******************************************************************************
* Copyright (c) 2015 MINRES Technologies GmbH and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MINRES Technologies GmbH - initial API and implementation
*******************************************************************************/
package com.minres.scviewer.e4.application.handlers;
import javax.inject.Named;
import org.eclipse.e4.core.di.annotations.CanExecute;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Shell;
import com.minres.scviewer.e4.application.parts.WaveformViewer;
public class LoadStoreSettingsHandler {
static final String PARAMETER_ID="com.minres.scviewer.e4.application.commandparameter.loadStore";
@CanExecute
public boolean canExecute(EPartService partService) {
MPart part = partService.getActivePart();
if(part==null) return false;
return (part.getObject() instanceof WaveformViewer);
}
@Execute
public void execute(@Named(PARAMETER_ID) String param, Shell shell, MApplication app, EModelService modelService,
EPartService partService){
boolean load = "load".equals(param);
FileDialog dialog = new FileDialog(shell, load?SWT.OPEN:SWT.SAVE);
dialog.setFilterExtensions (new String []{"*.scview"});
if(!load) dialog.setFileName("SCViewer.scview");
String res = dialog.open();
MPart part = partService.getActivePart();
if(res!=null && part!=null){
Object obj = part.getObject();
if(obj instanceof WaveformViewer){
if(load)
((WaveformViewer)obj).loadState(res);
else
((WaveformViewer)obj).saveState(res);
}
}
}
}

View File

@ -22,7 +22,7 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import com.minres.scviewer.database.ITx; import com.minres.scviewer.database.ITx;
import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.IWaveform;
import com.minres.scviewer.e4.application.parts.WaveformViewerPart; import com.minres.scviewer.e4.application.parts.WaveformViewer;
public class MoveWaveformHandler { public class MoveWaveformHandler {
@ -42,11 +42,11 @@ public class MoveWaveformHandler {
public void execute(@Named(PARAMETER_ID) String param, EPartService partService) { public void execute(@Named(PARAMETER_ID) String param, EPartService partService) {
MPart part = partService.getActivePart(); MPart part = partService.getActivePart();
Object obj = part.getObject(); Object obj = part.getObject();
if(obj instanceof WaveformViewerPart){ if(obj instanceof WaveformViewer){
if("up".equalsIgnoreCase(param)) if("up".equalsIgnoreCase(param))
((WaveformViewerPart)obj).moveSelected(-1); ((WaveformViewer)obj).moveSelected(-1);
else if("down".equalsIgnoreCase(param)) else if("down".equalsIgnoreCase(param))
((WaveformViewerPart)obj).moveSelected(1); ((WaveformViewer)obj).moveSelected(1);
} }
} }

View File

@ -23,7 +23,7 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import com.minres.scviewer.database.ITx; import com.minres.scviewer.database.ITx;
import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.IWaveform;
import com.minres.scviewer.database.ui.GotoDirection; import com.minres.scviewer.database.ui.GotoDirection;
import com.minres.scviewer.e4.application.parts.WaveformViewerPart; import com.minres.scviewer.e4.application.parts.WaveformViewer;
public class NavigateEvent { public class NavigateEvent {
@ -45,11 +45,11 @@ public class NavigateEvent {
// String param="next"; // String param="next";
MPart part = partService.getActivePart(); MPart part = partService.getActivePart();
Object obj = part.getObject(); Object obj = part.getObject();
if(obj instanceof WaveformViewerPart){ if(obj instanceof WaveformViewer){
if("next".equalsIgnoreCase(param)) if("next".equalsIgnoreCase(param))
((WaveformViewerPart)obj).moveCursor(GotoDirection.NEXT); ((WaveformViewer)obj).moveCursor(GotoDirection.NEXT);
else if("prev".equalsIgnoreCase(param)) else if("prev".equalsIgnoreCase(param))
((WaveformViewerPart)obj).moveCursor(GotoDirection.PREV); ((WaveformViewer)obj).moveCursor(GotoDirection.PREV);
} }
} }
} }

View File

@ -22,7 +22,7 @@ import org.eclipse.jface.viewers.IStructuredSelection;
import com.minres.scviewer.database.ITx; import com.minres.scviewer.database.ITx;
import com.minres.scviewer.database.ui.GotoDirection; import com.minres.scviewer.database.ui.GotoDirection;
import com.minres.scviewer.e4.application.parts.WaveformViewerPart; import com.minres.scviewer.e4.application.parts.WaveformViewer;
public class NavigateTrans { public class NavigateTrans {
@ -42,11 +42,11 @@ public class NavigateTrans {
public void execute(@Named(PARAMTER_ID) String param, EPartService partService) { public void execute(@Named(PARAMTER_ID) String param, EPartService partService) {
MPart part = partService.getActivePart(); MPart part = partService.getActivePart();
Object obj = part.getObject(); Object obj = part.getObject();
if(obj instanceof WaveformViewerPart){ if(obj instanceof WaveformViewer){
if("next".equalsIgnoreCase(param)) if("next".equalsIgnoreCase(param))
((WaveformViewerPart)obj).moveSelection(GotoDirection.NEXT); ((WaveformViewer)obj).moveSelection(GotoDirection.NEXT);
else if("prev".equalsIgnoreCase(param)) else if("prev".equalsIgnoreCase(param))
((WaveformViewerPart)obj).moveSelection(GotoDirection.PREV); ((WaveformViewer)obj).moveSelection(GotoDirection.PREV);
} }
} }
} }

View File

@ -27,8 +27,9 @@ public class OpenHandler {
@Execute @Execute
public void execute(Shell shell, MApplication app, EModelService modelService, EPartService partService){ public void execute(Shell shell, MApplication app, EModelService modelService, EPartService partService){
FileDialog dialog = new FileDialog(shell, SWT.MULTI); FileDialog dialog = new FileDialog(shell, SWT.OPEN | SWT.MULTI);
dialog.setFilterExtensions (new String []{"vcd", "txdb", "txlog"}); // dialog.setFilterExtensions (new String []{"vcd", "txdb", "txlog"});
dialog.setFilterExtensions (new String []{"*.vcd;*.txdb;*.txlog"});
dialog.open(); dialog.open();
String path = dialog.getFilterPath(); String path = dialog.getFilterPath();
for(String fileName: dialog.getFileNames()){ for(String fileName: dialog.getFileNames()){
@ -36,8 +37,7 @@ public class OpenHandler {
if(file.exists()){ if(file.exists()){
// MPart part = MBasicFactory.INSTANCE.createPart(); // MPart part = MBasicFactory.INSTANCE.createPart();
// part.setLabel(fileName); // part.setLabel(fileName);
// part.setContributionURI("bundleclass://com.minres.scviewer.e4.application/"+ // part.setContributionURI("bundleclass://com.minres.scviewer.e4.application/"+ WaveformViewerPart.class.getName());
// WaveformViewerPart.class.getName());
MPart part = partService .createPart("com.minres.scviewer.e4.application.partdescriptor.waveformviewer"); MPart part = partService .createPart("com.minres.scviewer.e4.application.partdescriptor.waveformviewer");
part.setLabel(file.getName()); part.setLabel(file.getName());

View File

@ -17,7 +17,7 @@ import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.model.application.ui.basic.MPart; import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.workbench.modeling.EPartService; import org.eclipse.e4.ui.workbench.modeling.EPartService;
import com.minres.scviewer.e4.application.parts.WaveformViewerPart; import com.minres.scviewer.e4.application.parts.WaveformViewer;
public class SetRelationTypeHandler { public class SetRelationTypeHandler {
final static String PARAMTER_ID="com.minres.scviewer.e4.application.commandparameter.relationName"; final static String PARAMTER_ID="com.minres.scviewer.e4.application.commandparameter.relationName";
@ -26,8 +26,8 @@ public class SetRelationTypeHandler {
public void execute(@Named(PARAMTER_ID) String relationName, EPartService partService) { public void execute(@Named(PARAMTER_ID) String relationName, EPartService partService) {
MPart part = partService.getActivePart(); MPart part = partService.getActivePart();
Object obj = part.getObject(); Object obj = part.getObject();
if(obj instanceof WaveformViewerPart){ if(obj instanceof WaveformViewer){
WaveformViewerPart waveformViewerPart = (WaveformViewerPart) obj; WaveformViewer waveformViewerPart = (WaveformViewer) obj;
waveformViewerPart.setNavigationRelationType(relationName); waveformViewerPart.setNavigationRelationType(relationName);
} }
} }

View File

@ -18,7 +18,7 @@ import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.ui.model.application.ui.basic.MPart; import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.workbench.modeling.EPartService; import org.eclipse.e4.ui.workbench.modeling.EPartService;
import com.minres.scviewer.e4.application.parts.WaveformViewerPart; import com.minres.scviewer.e4.application.parts.WaveformViewer;
public class ZoomHandler { public class ZoomHandler {
@ -33,8 +33,8 @@ public class ZoomHandler {
public void execute(@Named(PARAMTER_ID) String level, EPartService partService) { public void execute(@Named(PARAMTER_ID) String level, EPartService partService) {
MPart part = partService.getActivePart(); MPart part = partService.getActivePart();
Object obj = part.getObject(); Object obj = part.getObject();
if(obj instanceof WaveformViewerPart){ if(obj instanceof WaveformViewer){
WaveformViewerPart waveformViewerPart = (WaveformViewerPart) obj; WaveformViewer waveformViewerPart = (WaveformViewer) obj;
int zoomLevel = waveformViewerPart.getZoomLevel(); int zoomLevel = waveformViewerPart.getZoomLevel();
if("in".equalsIgnoreCase(level)) if("in".equalsIgnoreCase(level))
waveformViewerPart.setZoomLevel(zoomLevel-1); waveformViewerPart.setZoomLevel(zoomLevel-1);

View File

@ -38,35 +38,75 @@ import org.osgi.service.prefs.Preferences;
/** /**
* The Heap Status control, which shows the heap usage statistics in the window trim. * The Heap Status control, which shows the heap usage statistics in the window trim.
* * Part of the code is taken from the eclipse internal implementation
* @since 3.1
*/ */
public class HeapStatus extends Composite { public class HeapStatus extends Composite {
/** The armed. */
private boolean armed; private boolean armed;
/** The gc image. */
private Image gcImage; private Image gcImage;
/** The disabled gc image. */
private Image disabledGcImage; private Image disabledGcImage;
/** The arm col. */
private Color bgCol, usedMemCol, lowMemCol, freeMemCol, topLeftCol, bottomRightCol, sepCol, textCol, markCol, armCol; private Color bgCol, usedMemCol, lowMemCol, freeMemCol, topLeftCol, bottomRightCol, sepCol, textCol, markCol, armCol;
/** The button. */
private Canvas button; private Canvas button;
/** The preferences. */
private Preferences preferences; private Preferences preferences;
/** The update interval. */
private int updateInterval; private int updateInterval;
/** The show max. */
private boolean showMax; private boolean showMax;
/** The total mem. */
private long totalMem; private long totalMem;
/** The prev total mem. */
private long prevTotalMem = -1L; private long prevTotalMem = -1L;
/** The prev used mem. */
private long prevUsedMem = -1L; private long prevUsedMem = -1L;
/** The has changed. */
private boolean hasChanged; private boolean hasChanged;
/** The used mem. */
private long usedMem; private long usedMem;
/** The mark. */
private long mark = -1; private long mark = -1;
/** The img bounds. */
// start with 12x12 // start with 12x12
private Rectangle imgBounds = new Rectangle(0,0,12,12); private Rectangle imgBounds = new Rectangle(0,0,12,12);
/** The max mem. */
private long maxMem = Long.MAX_VALUE; private long maxMem = Long.MAX_VALUE;
/** The max mem known. */
private boolean maxMemKnown; private boolean maxMemKnown;
/** The low mem threshold. */
private float lowMemThreshold = 0.05f; private float lowMemThreshold = 0.05f;
/** The show low mem threshold. */
private boolean showLowMemThreshold = true; private boolean showLowMemThreshold = true;
/** The update tooltip. */
private boolean updateTooltip = false; private boolean updateTooltip = false;
/** The is in gc. */
protected volatile boolean isInGC = false; protected volatile boolean isInGC = false;
/** The timer. */
private final Runnable timer = new Runnable() { private final Runnable timer = new Runnable() {
@Override @Override
public void run() { public void run() {
@ -84,6 +124,7 @@ public class HeapStatus extends Composite {
} }
}; };
/** The pref listener. */
private final IPreferenceChangeListener prefListener = new IPreferenceChangeListener() { private final IPreferenceChangeListener prefListener = new IPreferenceChangeListener() {
@Override @Override
public void preferenceChange(PreferenceChangeEvent event) { public void preferenceChange(PreferenceChangeEvent event) {
@ -215,6 +256,9 @@ public class HeapStatus extends Composite {
}); });
} }
/* (non-Javadoc)
* @see org.eclipse.swt.widgets.Control#setBackground(org.eclipse.swt.graphics.Color)
*/
@Override @Override
public void setBackground(Color color) { public void setBackground(Color color) {
bgCol = color; bgCol = color;
@ -222,6 +266,9 @@ public class HeapStatus extends Composite {
button.update(); button.update();
} }
/* (non-Javadoc)
* @see org.eclipse.swt.widgets.Control#setForeground(org.eclipse.swt.graphics.Color)
*/
@Override @Override
public void setForeground(Color color) { public void setForeground(Color color) {
if (color == null) { if (color == null) {
@ -234,6 +281,9 @@ public class HeapStatus extends Composite {
button.update(); button.update();
} }
/* (non-Javadoc)
* @see org.eclipse.swt.widgets.Control#getForeground()
*/
@Override @Override
public Color getForeground() { public Color getForeground() {
if (usedMemCol != null) { if (usedMemCol != null) {
@ -244,6 +294,8 @@ public class HeapStatus extends Composite {
/** /**
* Returns the maximum memory limit, or Long.MAX_VALUE if the max is not known. * Returns the maximum memory limit, or Long.MAX_VALUE if the max is not known.
*
* @return the max mem
*/ */
private long getMaxMem() { private long getMaxMem() {
long max = Long.MAX_VALUE; long max = Long.MAX_VALUE;
@ -261,10 +313,18 @@ public class HeapStatus extends Composite {
return max; return max;
} }
/**
* Sets the update interval in ms.
*
* @param interval the new update interval in ms
*/
private void setUpdateIntervalInMS(int interval) { private void setUpdateIntervalInMS(int interval) {
updateInterval = Math.max(100, interval); updateInterval = Math.max(100, interval);
} }
/**
* Do dispose.
*/
private void doDispose() { private void doDispose() {
if(preferences instanceof IEclipsePreferences) if(preferences instanceof IEclipsePreferences)
((IEclipsePreferences)preferences).removePreferenceChangeListener(prefListener); ((IEclipsePreferences)preferences).removePreferenceChangeListener(prefListener);
@ -276,6 +336,9 @@ public class HeapStatus extends Composite {
} }
} }
/* (non-Javadoc)
* @see org.eclipse.swt.widgets.Composite#computeSize(int, int, boolean)
*/
@Override @Override
public Point computeSize(int wHint, int hHint, boolean changed) { public Point computeSize(int wHint, int hHint, boolean changed) {
GC gc = new GC(this); GC gc = new GC(this);
@ -291,6 +354,11 @@ public class HeapStatus extends Composite {
return new Point(p.x + 15, height); return new Point(p.x + 15, height);
} }
/**
* Arm.
*
* @param armed the armed
*/
private void arm(boolean armed) { private void arm(boolean armed) {
if (this.armed == armed) { if (this.armed == armed) {
return; return;
@ -300,6 +368,11 @@ public class HeapStatus extends Composite {
button.update(); button.update();
} }
/**
* Gc running.
*
* @param isInGC the is in gc
*/
private void gcRunning(boolean isInGC) { private void gcRunning(boolean isInGC) {
if (this.isInGC == isInGC) { if (this.isInGC == isInGC) {
return; return;
@ -310,7 +383,7 @@ public class HeapStatus extends Composite {
} }
/** /**
* Creates the context menu * Creates the context menu.
*/ */
private void createContextMenu() { private void createContextMenu() {
MenuManager menuMgr = new MenuManager(); MenuManager menuMgr = new MenuManager();
@ -325,6 +398,11 @@ public class HeapStatus extends Composite {
setMenu(menu); setMenu(menu);
} }
/**
* Fill menu.
*
* @param menuMgr the menu mgr
*/
private void fillMenu(IMenuManager menuMgr) { private void fillMenu(IMenuManager menuMgr) {
menuMgr.add(new SetMarkAction()); menuMgr.add(new SetMarkAction());
menuMgr.add(new ClearMarkAction()); menuMgr.add(new ClearMarkAction());
@ -354,6 +432,9 @@ public class HeapStatus extends Composite {
redraw(); redraw();
} }
/**
* Gc.
*/
private void gc() { private void gc() {
gcRunning(true); gcRunning(true);
Thread t = new Thread() { Thread t = new Thread() {
@ -373,6 +454,9 @@ public class HeapStatus extends Composite {
t.start(); t.start();
} }
/**
* Busy gc.
*/
private void busyGC() { private void busyGC() {
for (int i = 0; i < 2; ++i) { for (int i = 0; i < 2; ++i) {
System.gc(); System.gc();
@ -380,6 +464,11 @@ public class HeapStatus extends Composite {
} }
} }
/**
* Paint button.
*
* @param gc the gc
*/
private void paintButton(GC gc) { private void paintButton(GC gc) {
Rectangle rect = button.getClientArea(); Rectangle rect = button.getClientArea();
if (isInGC) { if (isInGC) {
@ -399,6 +488,11 @@ public class HeapStatus extends Composite {
} }
} }
/**
* Paint composite.
*
* @param gc the gc
*/
private void paintComposite(GC gc) { private void paintComposite(GC gc) {
if (showMax && maxMemKnown) { if (showMax && maxMemKnown) {
paintCompositeMaxKnown(gc); paintCompositeMaxKnown(gc);
@ -407,6 +501,11 @@ public class HeapStatus extends Composite {
} }
} }
/**
* Paint composite max unknown.
*
* @param gc the gc
*/
private void paintCompositeMaxUnknown(GC gc) { private void paintCompositeMaxUnknown(GC gc) {
Rectangle rect = getClientArea(); Rectangle rect = getClientArea();
int x = rect.x; int x = rect.x;
@ -449,6 +548,11 @@ public class HeapStatus extends Composite {
} }
} }
/**
* Paint composite max known.
*
* @param gc the gc
*/
private void paintCompositeMaxKnown(GC gc) { private void paintCompositeMaxKnown(GC gc) {
Rectangle rect = getClientArea(); Rectangle rect = getClientArea();
int x = rect.x; int x = rect.x;
@ -509,6 +613,14 @@ public class HeapStatus extends Composite {
} }
} }
/**
* Paint mark.
*
* @param gc the gc
* @param x the x
* @param y the y
* @param h the h
*/
private void paintMark(GC gc, int x, int y, int h) { private void paintMark(GC gc, int x, int y, int h) {
gc.setForeground(markCol); gc.setForeground(markCol);
gc.drawLine(x, y+1, x, y+h-2); gc.drawLine(x, y+1, x, y+h-2);
@ -516,6 +628,9 @@ public class HeapStatus extends Composite {
gc.drawLine(x-1, y+h-2, x+1, y+h-2); gc.drawLine(x-1, y+h-2, x+1, y+h-2);
} }
/**
* Update stats.
*/
private void updateStats() { private void updateStats() {
Runtime runtime = Runtime.getRuntime(); Runtime runtime = Runtime.getRuntime();
totalMem = runtime.totalMemory(); totalMem = runtime.totalMemory();
@ -533,6 +648,9 @@ public class HeapStatus extends Composite {
} }
} }
/**
* Update tool tip.
*/
private void updateToolTip() { private void updateToolTip() {
String usedStr = convertToMegString(usedMem); String usedStr = convertToMegString(usedMem);
String totalStr = convertToMegString(totalMem); String totalStr = convertToMegString(totalMem);
@ -546,6 +664,9 @@ public class HeapStatus extends Composite {
/** /**
* Converts the given number of bytes to a printable number of megabytes (rounded up). * Converts the given number of bytes to a printable number of megabytes (rounded up).
*
* @param numBytes the num bytes
* @return the string
*/ */
private String convertToMegString(long numBytes) { private String convertToMegString(long numBytes) {
return new Long(convertToMeg(numBytes)).toString()+"M"; return new Long(convertToMeg(numBytes)).toString()+"M";
@ -553,41 +674,74 @@ public class HeapStatus extends Composite {
/** /**
* Converts the given number of bytes to the corresponding number of megabytes (rounded up). * Converts the given number of bytes to the corresponding number of megabytes (rounded up).
*
* @param numBytes the num bytes
* @return the long
*/ */
private long convertToMeg(long numBytes) { private long convertToMeg(long numBytes) {
return (numBytes + (512 * 1024)) / (1024 * 1024); return (numBytes + (512 * 1024)) / (1024 * 1024);
} }
/**
* The Class SetMarkAction.
*/
class SetMarkAction extends Action { class SetMarkAction extends Action {
/**
* Instantiates a new sets the mark action.
*/
SetMarkAction() { SetMarkAction() {
super("&Set Mark"); super("&Set Mark");
} }
/* (non-Javadoc)
* @see org.eclipse.jface.action.Action#run()
*/
@Override @Override
public void run() { public void run() {
setMark(); setMark();
} }
} }
/**
* The Class ClearMarkAction.
*/
class ClearMarkAction extends Action { class ClearMarkAction extends Action {
/**
* Instantiates a new clear mark action.
*/
ClearMarkAction() { ClearMarkAction() {
super("&Clear Mark"); super("&Clear Mark");
} }
/* (non-Javadoc)
* @see org.eclipse.jface.action.Action#run()
*/
@Override @Override
public void run() { public void run() {
clearMark(); clearMark();
} }
} }
/**
* The Class ShowMaxAction.
*/
class ShowMaxAction extends Action { class ShowMaxAction extends Action {
ShowMaxAction() {
/**
* Instantiates a new show max action.
*/
ShowMaxAction() {
super("Show &Max Heap", IAction.AS_CHECK_BOX); super("Show &Max Heap", IAction.AS_CHECK_BOX);
setEnabled(maxMemKnown); setEnabled(maxMemKnown);
setChecked(showMax); setChecked(showMax);
} }
/* (non-Javadoc)
* @see org.eclipse.jface.action.Action#run()
*/
@Override @Override
public void run() { public void run() {
preferences.putBoolean(IHeapStatusConstants.PREF_SHOW_MAX, isChecked()); preferences.putBoolean(IHeapStatusConstants.PREF_SHOW_MAX, isChecked());
@ -595,13 +749,22 @@ public class HeapStatus extends Composite {
} }
} }
/**
* The Class CloseHeapStatusAction.
*/
class CloseHeapStatusAction extends Action{ class CloseHeapStatusAction extends Action{
CloseHeapStatusAction(){ /**
* Instantiates a new close heap status action.
*/
CloseHeapStatusAction(){
super("&Close"); super("&Close");
} }
@Override /* (non-Javadoc)
* @see org.eclipse.jface.action.Action#run()
*/
@Override
public void run(){ public void run(){
// WorkbenchWindow wbw = (WorkbenchWindow) PlatformUI.getWorkbench() // WorkbenchWindow wbw = (WorkbenchWindow) PlatformUI.getWorkbench()
// .getActiveWorkbenchWindow(); // .getActiveWorkbenchWindow();

View File

@ -11,8 +11,6 @@
package com.minres.scviewer.e4.application.internal.status; package com.minres.scviewer.e4.application.internal.status;
/** /**
* Preference constants for the heap status. * Preference constants for the heap status.
*
* @since 3.1
*/ */
public interface IHeapStatusConstants { public interface IHeapStatusConstants {

View File

@ -32,21 +32,37 @@ import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.ProgressBar; import org.eclipse.swt.widgets.ProgressBar;
import org.osgi.service.prefs.PreferencesService; import org.osgi.service.prefs.PreferencesService;
/**
* The Class StatusBarControl.
*/
public class StatusBarControl { public class StatusBarControl {
/** The Constant STATUS_UPDATE. */
public static final String STATUS_UPDATE="StatusUpdate"; public static final String STATUS_UPDATE="StatusUpdate";
/** The model service. */
@Inject EModelService modelService; @Inject EModelService modelService;
/** The osgi preverences. */
@Inject @Optional PreferencesService osgiPreverences; @Inject @Optional PreferencesService osgiPreverences;
/** The sync. */
private final UISynchronize sync; private final UISynchronize sync;
/** The manager. */
protected StatusLineManager manager; protected StatusLineManager manager;
/** The monitor. */
private SyncedProgressMonitor monitor; private SyncedProgressMonitor monitor;
/** The progress bar. */
private ProgressBar progressBar; private ProgressBar progressBar;
/**
* Instantiates a new status bar control.
*
* @param sync the sync
*/
@Inject @Inject
public StatusBarControl(UISynchronize sync) { public StatusBarControl(UISynchronize sync) {
this.sync=sync; this.sync=sync;
@ -54,6 +70,12 @@ public class StatusBarControl {
manager.update(true); manager.update(true);
} }
/**
* Creates the widget.
*
* @param parent the parent
* @param toolControl the tool control
*/
@PostConstruct @PostConstruct
void createWidget(Composite parent, MToolControl toolControl) { void createWidget(Composite parent, MToolControl toolControl) {
if (toolControl.getElementId().equals("org.eclipse.ui.StatusLine")) { //$NON-NLS-1$ if (toolControl.getElementId().equals("org.eclipse.ui.StatusLine")) { //$NON-NLS-1$
@ -65,6 +87,9 @@ public class StatusBarControl {
} }
} }
/**
* Destroy.
*/
@PreDestroy @PreDestroy
void destroy() { void destroy() {
if (manager != null) { if (manager != null) {
@ -74,8 +99,10 @@ public class StatusBarControl {
} }
/** /**
* @param parent * Creates the progress bar.
* @param toolControl *
* @param parent the parent
* @param toolControl the tool control
*/ */
private void createProgressBar(Composite parent, MToolControl toolControl) { private void createProgressBar(Composite parent, MToolControl toolControl) {
new Label(parent, SWT.NONE); new Label(parent, SWT.NONE);
@ -92,22 +119,32 @@ public class StatusBarControl {
} }
/** /**
* @param parent * Creates the heap status.
* @param toolControl *
* @param parent the parent
* @param toolControl the tool control
*/ */
private void createHeapStatus(Composite parent, MToolControl toolControl) { private void createHeapStatus(Composite parent, MToolControl toolControl) {
new HeapStatus(parent, osgiPreverences.getSystemPreferences()); new HeapStatus(parent, osgiPreverences.getSystemPreferences());
} }
/** /**
* @param parent * Creates the status line.
* @param toolControl *
* @param parent the parent
* @param toolControl the tool control
*/ */
private void createStatusLine(Composite parent, MToolControl toolControl) { private void createStatusLine(Composite parent, MToolControl toolControl) {
// IEclipseContext context = modelService.getContainingContext(toolControl); // IEclipseContext context = modelService.getContainingContext(toolControl);
manager.createControl(parent); manager.createControl(parent);
} }
/**
* Gets the status event.
*
* @param text the text
* @return the status event
*/
@Inject @Optional @Inject @Optional
public void getStatusEvent(@UIEventTopic(STATUS_UPDATE) String text) { public void getStatusEvent(@UIEventTopic(STATUS_UPDATE) String text) {
if(manager!=null ){ if(manager!=null ){
@ -115,13 +152,24 @@ public class StatusBarControl {
} }
} }
/**
* The Class SyncedProgressMonitor.
*/
private final class SyncedProgressMonitor extends NullProgressMonitor { private final class SyncedProgressMonitor extends NullProgressMonitor {
// thread-Safe via thread confinement of the UI-Thread // thread-Safe via thread confinement of the UI-Thread
/** The running tasks. */
// (means access only via UI-Thread) // (means access only via UI-Thread)
private long runningTasks = 0L; private long runningTasks = 0L;
/** The progress bar. */
private ProgressBar progressBar; private ProgressBar progressBar;
/**
* Instantiates a new synced progress monitor.
*
* @param progressBar the progress bar
*/
public SyncedProgressMonitor(ProgressBar progressBar) { public SyncedProgressMonitor(ProgressBar progressBar) {
super(); super();
this.progressBar = progressBar; this.progressBar = progressBar;
@ -130,6 +178,9 @@ public class StatusBarControl {
progressBar.setEnabled(false); progressBar.setEnabled(false);
} }
/* (non-Javadoc)
* @see org.eclipse.core.runtime.NullProgressMonitor#beginTask(java.lang.String, int)
*/
@Override @Override
public void beginTask(final String name, final int totalWork) { public void beginTask(final String name, final int totalWork) {
sync.syncExec(new Runnable() { sync.syncExec(new Runnable() {
@ -148,6 +199,9 @@ public class StatusBarControl {
}); });
} }
/* (non-Javadoc)
* @see org.eclipse.core.runtime.NullProgressMonitor#worked(int)
*/
@Override @Override
public void worked(final int work) { public void worked(final int work) {
sync.syncExec(new Runnable() { sync.syncExec(new Runnable() {
@ -158,6 +212,9 @@ public class StatusBarControl {
}); });
} }
/* (non-Javadoc)
* @see org.eclipse.core.runtime.NullProgressMonitor#done()
*/
@Override @Override
public void done() { public void done() {
sync.syncExec(new Runnable() { sync.syncExec(new Runnable() {
@ -169,6 +226,13 @@ public class StatusBarControl {
} }
}); });
} }
/**
* Adds the job.
*
* @param job the job
* @return the i progress monitor
*/
/* /*
@Override @Override
public boolean isCanceled() { public boolean isCanceled() {

View File

@ -24,8 +24,6 @@ import org.eclipse.swt.widgets.ToolItem;
/** /**
* Simple class to provide some common internal Trim support. * Simple class to provide some common internal Trim support.
* *
* @since 3.2
*
*/ */
public class TrimUtil { public class TrimUtil {

View File

@ -27,23 +27,50 @@ import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Composite;
/**
* The Class WaveStatusBarControl.
*/
public class WaveStatusBarControl extends StatusBarControl { public class WaveStatusBarControl extends StatusBarControl {
/** The Constant ZOOM_LEVEL. */
public static final String ZOOM_LEVEL="ZoomLevelUpdate"; public static final String ZOOM_LEVEL="ZoomLevelUpdate";
/** The Constant CURSOR_TIME. */
public static final String CURSOR_TIME="CursorPosUpdate"; public static final String CURSOR_TIME="CursorPosUpdate";
/** The Constant MARKER_TIME. */
public static final String MARKER_TIME="MarkerPosUpdate"; public static final String MARKER_TIME="MarkerPosUpdate";
/** The Constant MARKER_DIFF. */
public static final String MARKER_DIFF="MarlerDiffUpdate"; public static final String MARKER_DIFF="MarlerDiffUpdate";
/** The model service. */
@Inject @Inject
EModelService modelService; EModelService modelService;
/**
* The Class TextContributionItem.
*/
class TextContributionItem extends ContributionItem { class TextContributionItem extends ContributionItem {
/** The label string. */
final String labelString; final String labelString;
/** The width. */
final int width; final int width;
/** The text. */
CLabel label, text; CLabel label, text;
/** The content. */
private String content; private String content;
/**
* Instantiates a new text contribution item.
*
* @param labelString the label string
* @param width the width
*/
public TextContributionItem(String labelString, int width) { public TextContributionItem(String labelString, int width) {
super(); super();
this.labelString = labelString; this.labelString = labelString;
@ -51,6 +78,9 @@ public class WaveStatusBarControl extends StatusBarControl {
content=""; content="";
} }
/* (non-Javadoc)
* @see org.eclipse.jface.action.ContributionItem#fill(org.eclipse.swt.widgets.Composite)
*/
@Override @Override
public void fill(Composite parent) { public void fill(Composite parent) {
Composite box=new Composite(parent, SWT.NONE); Composite box=new Composite(parent, SWT.NONE);
@ -63,11 +93,19 @@ public class WaveStatusBarControl extends StatusBarControl {
text.setLayoutData(layoutData); text.setLayoutData(layoutData);
} }
/* (non-Javadoc)
* @see org.eclipse.jface.action.ContributionItem#isDynamic()
*/
@Override @Override
public boolean isDynamic() { public boolean isDynamic() {
return true; return true;
} }
/**
* Sets the text.
*
* @param message the new text
*/
public void setText(String message){ public void setText(String message){
this.content=message; this.content=message;
if(text!=null && !text.isDisposed()) text.setText(content); if(text!=null && !text.isDisposed()) text.setText(content);
@ -75,8 +113,14 @@ public class WaveStatusBarControl extends StatusBarControl {
} }
/** The zoom contribution. */
TextContributionItem cursorContribution, markerContribution, markerDiffContribution, zoomContribution; TextContributionItem cursorContribution, markerContribution, markerDiffContribution, zoomContribution;
/**
* Instantiates a new wave status bar control.
*
* @param sync the sync
*/
@Inject @Inject
public WaveStatusBarControl(UISynchronize sync) { public WaveStatusBarControl(UISynchronize sync) {
super(sync); super(sync);
@ -90,6 +134,11 @@ public class WaveStatusBarControl extends StatusBarControl {
manager.appendToGroup(StatusLineManager.BEGIN_GROUP, zoomContribution); manager.appendToGroup(StatusLineManager.BEGIN_GROUP, zoomContribution);
} }
/**
* Sets the selection.
*
* @param selection the new selection
*/
@Inject @Inject
public void setSelection(@Named(IServiceConstants.ACTIVE_SELECTION)@Optional IStructuredSelection selection){ public void setSelection(@Named(IServiceConstants.ACTIVE_SELECTION)@Optional IStructuredSelection selection){
if(manager!=null && selection!=null){ if(manager!=null && selection!=null){
@ -107,21 +156,45 @@ public class WaveStatusBarControl extends StatusBarControl {
} }
} }
/**
* Gets the zoom event.
*
* @param text the text
* @return the zoom event
*/
@Inject @Optional @Inject @Optional
public void getZoomEvent(@UIEventTopic(ZOOM_LEVEL) String text) { public void getZoomEvent(@UIEventTopic(ZOOM_LEVEL) String text) {
zoomContribution.setText(text); zoomContribution.setText(text);
} }
/**
* Gets the cursor event.
*
* @param text the text
* @return the cursor event
*/
@Inject @Optional @Inject @Optional
public void getCursorEvent(@UIEventTopic(CURSOR_TIME) String text) { public void getCursorEvent(@UIEventTopic(CURSOR_TIME) String text) {
cursorContribution.setText(text); cursorContribution.setText(text);
} }
/**
* Gets the marker event.
*
* @param text the text
* @return the marker event
*/
@Inject @Optional @Inject @Optional
public void getMarkerEvent(@UIEventTopic(MARKER_TIME) String text) { public void getMarkerEvent(@UIEventTopic(MARKER_TIME) String text) {
markerContribution.setText(text); markerContribution.setText(text);
} }
/**
* Gets the diff event.
*
* @param text the text
* @return the diff event
*/
@Inject @Optional @Inject @Optional
public void getDiffEvent(@UIEventTopic(MARKER_DIFF) String text) { public void getDiffEvent(@UIEventTopic(MARKER_DIFF) String text) {
markerDiffContribution.setText(text); markerDiffContribution.setText(text);

View File

@ -21,12 +21,16 @@ import java.util.TimerTask;
/** /**
* Class monitoring a {@link File} for changes. * Class monitoring a {@link File} for changes.
* *
* @author Pascal Essiembre
*/ */
public class FileMonitor { public class FileMonitor {
/** The timer. */
private Timer timer; private Timer timer;
/** The enabled. */
private boolean enabled;
/** The timer entries. */
private Hashtable<String, FileSetMonitorTask> timerEntries; private Hashtable<String, FileSetMonitorTask> timerEntries;
/** /**
@ -36,17 +40,16 @@ public class FileMonitor {
// Create timer, run timer thread as daemon. // Create timer, run timer thread as daemon.
timer = new Timer(true); timer = new Timer(true);
timerEntries = new Hashtable<String, FileSetMonitorTask>(); timerEntries = new Hashtable<String, FileSetMonitorTask>();
enabled=true;
} }
/** /**
* Adds a monitored file with a FileChangeListener. * Adds a monitored file with a FileChangeListener.
* *
* @param listener * @param listener listener to notify when the file changed.
* listener to notify when the file changed. * @param file the file
* @param fileName * @param period polling period in milliseconds.
* name of the file to monitor. * @return the i modification checker
* @param period
* polling period in milliseconds.
*/ */
public IModificationChecker addFileChangeListener(IFileChangeListener listener, File file, long period) { public IModificationChecker addFileChangeListener(IFileChangeListener listener, File file, long period) {
return addFileChangeListener(listener, Arrays.asList(new File[]{file}), period); return addFileChangeListener(listener, Arrays.asList(new File[]{file}), period);
@ -55,12 +58,11 @@ public class FileMonitor {
/** /**
* Adds a monitored file with a FileChangeListener. * Adds a monitored file with a FileChangeListener.
* List<File> filesToLoad * List<File> filesToLoad
* @param listener *
* listener to notify when the file changed. * @param listener listener to notify when the file changed.
* @param fileName * @param files the files
* name of the file to monitor. * @param period polling period in milliseconds.
* @param period * @return the i modification checker
* polling period in milliseconds.
*/ */
public IModificationChecker addFileChangeListener(IFileChangeListener listener, List<File> files, long period) { public IModificationChecker addFileChangeListener(IFileChangeListener listener, List<File> files, long period) {
removeFileChangeListener(listener); removeFileChangeListener(listener);
@ -90,7 +92,25 @@ public class FileMonitor {
* the file that changed * the file that changed
*/ */
protected void fireFileChangeEvent(IFileChangeListener listener, List<File> file) { protected void fireFileChangeEvent(IFileChangeListener listener, List<File> file) {
listener.fileChanged(file); if(enabled) listener.fileChanged(file);
}
/**
* Checks if is enabled.
*
* @return true, if is enabled
*/
public boolean isEnabled() {
return enabled;
}
/**
* Sets the enabled.
*
* @param enabled the new enabled
*/
public void setEnabled(boolean enabled) {
this.enabled = enabled;
} }
/** /**
@ -98,14 +118,25 @@ public class FileMonitor {
*/ */
class FileSetMonitorTask extends TimerTask implements IModificationChecker{ class FileSetMonitorTask extends TimerTask implements IModificationChecker{
/** The listener. */
IFileChangeListener listener; IFileChangeListener listener;
/** The monitored files. */
private List<File> monitoredFiles; private List<File> monitoredFiles;
/** The last modified times. */
private List<Long> lastModifiedTimes; private List<Long> lastModifiedTimes;
/** The period. */
public final long period; public final long period;
/**
* Instantiates a new file set monitor task.
*
* @param listener the listener
* @param monitoredFiles the monitored files
* @param period the period
*/
public FileSetMonitorTask(IFileChangeListener listener, List<File> monitoredFiles, long period) { public FileSetMonitorTask(IFileChangeListener listener, List<File> monitoredFiles, long period) {
this.period=period; this.period=period;
this.monitoredFiles = monitoredFiles; this.monitoredFiles = monitoredFiles;
@ -120,10 +151,16 @@ public class FileMonitor {
} }
} }
/* (non-Javadoc)
* @see java.util.TimerTask#run()
*/
public void run() { public void run() {
check(); check();
} }
/* (non-Javadoc)
* @see com.minres.scviewer.e4.application.internal.util.IModificationChecker#check()
*/
public void check() { public void check() {
boolean res = false; boolean res = false;
for(int i=0; i<monitoredFiles.size(); ++i){ for(int i=0; i<monitoredFiles.size(); ++i){

View File

@ -18,14 +18,13 @@ import java.util.List;
/** /**
* Listener interested in {@link File} changes. * Listener interested in {@link File} changes.
* *
* @author Pascal Essiembre
*/ */
public interface IFileChangeListener { public interface IFileChangeListener {
/** /**
* Invoked when a file changes. * Invoked when a file changes.
* *
* @param fileName * @param file the file
* name of changed file.
*/ */
public void fileChanged(List<File> file); public void fileChanged(List<File> file);
} }

View File

@ -10,8 +10,14 @@
*******************************************************************************/ *******************************************************************************/
package com.minres.scviewer.e4.application.internal.util; package com.minres.scviewer.e4.application.internal.util;
/**
* The Interface IModificationChecker. Allows to trigger a check independent of the timer
*/
public interface IModificationChecker { public interface IModificationChecker {
/**
* Check.
*/
public void check(); public void check();
} }

View File

@ -16,45 +16,40 @@ import java.net.URISyntaxException;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.SWT; import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.StyleRange; import org.eclipse.swt.custom.StyleRange;
import org.eclipse.swt.custom.StyledText; import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.events.PaintEvent; import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener; import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Dialog; import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Link;
import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Shell;
import org.eclipse.wb.swt.ResourceManager; import org.eclipse.wb.swt.ResourceManager;
import org.eclipse.wb.swt.SWTResourceManager; import org.eclipse.wb.swt.SWTResourceManager;
/**
* The Class AboutDialog.
*/
public class AboutDialog extends Dialog { public class AboutDialog extends Dialog {
protected int result; /** The product title. */
protected Shell shell;
private Color white;
protected StyledText styledText;
/*
Eclipse IDE for Java Developers
Version: Mars.1 Release (4.5.1)
Build id: 20150924-1200
(c) Copyright Eclipse contributors and others 2000, 2015. All rights reserved. Eclipse and the Eclipse logo are trademarks of the Eclipse Foundation, Inc., https://www.eclipse.org/. The Eclipse logo cannot be altered without Eclipse's permission. Eclipse logos are provided for use under the Eclipse logo and trademark guidelines, https://www.eclipse.org/logotm/. Oracle and Java are trademarks or registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.
*/
private String productTitle= private String productTitle=
"\nSCViewer - a SystemC waveform viewer\n\nVersion: 1.0\n"; "\nSCViewer - a SystemC waveform viewer\n\nVersion: 1.0\n";
/** The copyright text. */
private String copyrightText="\nCopyright (c) 2015 MINRES Technologies GmbH and others.\n"+ private String copyrightText="\nCopyright (c) 2015 MINRES Technologies GmbH and others.\n"+
"\n"+ "\n"+
"All rights reserved. MINRES and the MINRES logo are trademarks of MINRES Technologies GmbH, http://www.minres.com/ . "+ "All rights reserved. MINRES and the MINRES logo are trademarks of MINRES Technologies GmbH, http://www.minres.com/ . "+
@ -64,44 +59,35 @@ Build id: 20150924-1200
/** /**
* Create the dialog. * Create the dialog.
* @param parent *
* @param style * @param parentShell the parent shell
*/ */
public AboutDialog(Shell parent, int style) { @Inject
super(parent, style); public AboutDialog(Shell parentShell) {
setText("SWT Dialog"); super(parentShell);
white=SWTResourceManager.getColor(SWT.COLOR_WHITE);
}
/**
* Open the dialog.
* @return the result
*/
public int open() {
createContents();
shell.open();
shell.layout();
Display display = getParent().getDisplay();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
return result;
} }
/** /**
* Create contents of the dialog. * Create contents of the dialog.
*
* @param parent the parent
* @return the control
*/ */
private void createContents() { @Override
shell = new Shell(getParent(), getStyle()); protected Control createDialogArea(Composite parent) {
shell.setSize(600, 300); Composite composite = new Composite(parent, SWT.NONE);
shell.setText(getText()); GridData gd_composite = new GridData(SWT.LEFT, SWT.FILL, true, true);
shell.setLayout(new GridLayout(2, false)); gd_composite.widthHint = 600;
gd_composite.heightHint =250;
composite.setLayoutData(gd_composite);
composite.setLayout(new GridLayout(2, false));
final Color white=SWTResourceManager.getColor(SWT.COLOR_WHITE);
final Image scviewerLogo=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/SCViewer_logo.png"); final Image scviewerLogo=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/SCViewer_logo.png");
final Image minresLogo=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/Minres_logo.png"); final Image minresLogo=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/Minres_logo.png");
Canvas canvas = new Canvas(shell,SWT.NO_REDRAW_RESIZE); Canvas canvas = new Canvas(composite,SWT.NO_REDRAW_RESIZE);
GridData gd_canvas = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1); GridData gd_canvas = new GridData(SWT.LEFT, SWT.CENTER, false, false, 1, 1);
gd_canvas.widthHint = 200; gd_canvas.widthHint = 200;
gd_canvas.heightHint =250; gd_canvas.heightHint =250;
@ -115,7 +101,7 @@ Build id: 20150924-1200
} }
}); });
styledText = new StyledText(shell, SWT.BORDER); StyledText styledText = new StyledText(composite, SWT.BORDER);
styledText.setEditable(false); styledText.setEditable(false);
GridData gd_styledText = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1); GridData gd_styledText = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
styledText.setLayoutData(gd_styledText); styledText.setLayoutData(gd_styledText);
@ -151,8 +137,8 @@ Build id: 20150924-1200
// links are activated on mouse down when the control key is held down // links are activated on mouse down when the control key is held down
// if ((event.stateMask & SWT.MOD1) != 0) { // if ((event.stateMask & SWT.MOD1) != 0) {
try { try {
int offset = styledText.getOffsetAtLocation(new Point (event.x, event.y)); int offset = ((StyledText)event.widget).getOffsetAtLocation(new Point (event.x, event.y));
StyleRange style = styledText.getStyleRangeAtOffset(offset); StyleRange style = ((StyledText)event.widget).getStyleRangeAtOffset(offset);
if (style != null && style.underline && style.underlineStyle == SWT.UNDERLINE_LINK) { if (style != null && style.underline && style.underlineStyle == SWT.UNDERLINE_LINK) {
Desktop.getDesktop().browse(new java.net.URI(style.data.toString())); Desktop.getDesktop().browse(new java.net.URI(style.data.toString()));
} }
@ -162,23 +148,25 @@ Build id: 20150924-1200
}); });
styleRange.start = 0; styleRange.start = 0;
new Label(shell, SWT.NONE); return composite;
Button okButton = new Button(shell, SWT.NONE);
okButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
okButton.setBounds(0, 0, 94, 28);
okButton.setText("Close");
okButton.setFocus();
okButton.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
if(!shell.isDisposed()) shell.dispose();
}
});
} }
public static boolean open(Shell parent, int style) { /* (non-Javadoc)
AboutDialog dialog = new AboutDialog(parent, style | SWT.SHEET); * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
return dialog.open() == 0; */
protected void createButtonsForButtonBar(Composite parent) {
// create OK button
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.CLOSE_LABEL, true);
} }
/**
* Open the dialog.
* @return the result
*/
@PostConstruct
@Override
public int open() {
return super.open();
}
} }

View File

@ -72,36 +72,55 @@ import com.minres.scviewer.e4.application.handlers.AddWaveformHandler;
import com.minres.scviewer.e4.application.provider.TxDbContentProvider; import com.minres.scviewer.e4.application.provider.TxDbContentProvider;
import com.minres.scviewer.e4.application.provider.TxDbLabelProvider; import com.minres.scviewer.e4.application.provider.TxDbLabelProvider;
/**
* The Class DesignBrowser. It contains the design tree, a list of Streams & signals and a few buttons to
* add them them to the waveform view
*/
public class DesignBrowser { public class DesignBrowser {
/** The Constant POPUP_ID. */
private static final String POPUP_ID="com.minres.scviewer.e4.application.parts.DesignBrowser.popupmenu"; private static final String POPUP_ID="com.minres.scviewer.e4.application.parts.DesignBrowser.popupmenu";
/** The event broker. */
@Inject IEventBroker eventBroker; @Inject IEventBroker eventBroker;
/** The selection service. */
@Inject ESelectionService selectionService; @Inject ESelectionService selectionService;
/** The menu service. */
@Inject EMenuService menuService; @Inject EMenuService menuService;
/** The eclipse ctx. */
@Inject IEclipseContext eclipseCtx; @Inject IEclipseContext eclipseCtx;
/** The sash form. */
private SashForm sashForm; private SashForm sashForm;
/** The top. */
Composite top; Composite top;
/** The bottom. */
private Composite bottom; private Composite bottom;
/** The tree viewer. */
private TreeViewer treeViewer; private TreeViewer treeViewer;
/** The name filter. */
private Text nameFilter; private Text nameFilter;
/** The tx table viewer. */
private TableViewer txTableViewer; private TableViewer txTableViewer;
/** The append all item. */
ToolItem appendItem, insertItem, insertAllItem, appendAllItem; ToolItem appendItem, insertItem, insertAllItem, appendAllItem;
/** The attribute filter. */
WaveformAttributeFilter attributeFilter; WaveformAttributeFilter attributeFilter;
/** The other selection count. */
int thisSelectionCount=0, otherSelectionCount=0; int thisSelectionCount=0, otherSelectionCount=0;
/** The tree viewer pcl. */
private PropertyChangeListener treeViewerPCL = new PropertyChangeListener() { private PropertyChangeListener treeViewerPCL = new PropertyChangeListener() {
@Override @Override
public void propertyChange(PropertyChangeEvent evt) { public void propertyChange(PropertyChangeEvent evt) {
@ -116,8 +135,10 @@ public class DesignBrowser {
} }
}; };
private WaveformViewerPart waveformViewerPart; /** The waveform viewer part. */
private WaveformViewer waveformViewerPart;
/** The sash paint listener. */
protected PaintListener sashPaintListener=new PaintListener() { protected PaintListener sashPaintListener=new PaintListener() {
@Override @Override
public void paintControl(PaintEvent e) { public void paintControl(PaintEvent e) {
@ -132,6 +153,11 @@ public class DesignBrowser {
}; };
/**
* Creates the composite.
*
* @param parent the parent
*/
@PostConstruct @PostConstruct
public void createComposite(Composite parent) { public void createComposite(Composite parent) {
sashForm = new SashForm(parent, SWT.BORDER | SWT.SMOOTH | SWT.VERTICAL); sashForm = new SashForm(parent, SWT.BORDER | SWT.SMOOTH | SWT.VERTICAL);
@ -151,6 +177,11 @@ public class DesignBrowser {
}); });
} }
/**
* Creates the tree viewer composite.
*
* @param parent the parent
*/
public void createTreeViewerComposite(Composite parent) { public void createTreeViewerComposite(Composite parent) {
parent.setLayout(new GridLayout(1, false)); parent.setLayout(new GridLayout(1, false));
treeViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); treeViewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL);
@ -175,6 +206,11 @@ public class DesignBrowser {
}); });
} }
/**
* Creates the table composite.
*
* @param parent the parent
*/
public void createTableComposite(Composite parent) { public void createTableComposite(Composite parent) {
parent.setLayout(new GridLayout(1, false)); parent.setLayout(new GridLayout(1, false));
@ -293,6 +329,9 @@ public class DesignBrowser {
}); });
} }
/**
* Sets the focus.
*/
@Focus @Focus
public void setFocus() { public void setFocus() {
txTableViewer.getTable().setFocus(); txTableViewer.getTable().setFocus();
@ -305,9 +344,15 @@ public class DesignBrowser {
updateButtons(); updateButtons();
} }
/**
* Gets the status event.
*
* @param waveformViewerPart the waveform viewer part
* @return the status event
*/
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
@Inject @Optional @Inject @Optional
public void getStatusEvent(@UIEventTopic(WaveformViewerPart.ACTIVE_WAVEFORMVIEW) WaveformViewerPart waveformViewerPart) { public void getActiveWaveformViewerEvent(@UIEventTopic(WaveformViewer.ACTIVE_WAVEFORMVIEW) WaveformViewer waveformViewerPart) {
if(this.waveformViewerPart!=null) if(this.waveformViewerPart!=null)
this.waveformViewerPart.storeDesignBrowerState(new DBState()); this.waveformViewerPart.storeDesignBrowerState(new DBState());
this.waveformViewerPart=waveformViewerPart; this.waveformViewerPart=waveformViewerPart;
@ -318,7 +363,7 @@ public class DesignBrowser {
if(db==database) return; // do nothing if old and new daabase is the same if(db==database) return; // do nothing if old and new daabase is the same
((List<IWaveformDb>)input).get(0).removePropertyChangeListener(treeViewerPCL); ((List<IWaveformDb>)input).get(0).removePropertyChangeListener(treeViewerPCL);
} }
treeViewer.setInput(database.isLoaded()?Arrays.asList(new IWaveformDb[]{database}):null); treeViewer.setInput(Arrays.asList(database.isLoaded()?new IWaveformDb[]{database}:new IWaveformDb[]{new LoadingWaveformDb()}));
Object state=this.waveformViewerPart.retrieveDesignBrowerState(); Object state=this.waveformViewerPart.retrieveDesignBrowerState();
if(state!=null && state instanceof DBState) if(state!=null && state instanceof DBState)
((DBState)state).apply(); ((DBState)state).apply();
@ -328,6 +373,12 @@ public class DesignBrowser {
database.addPropertyChangeListener(treeViewerPCL); database.addPropertyChangeListener(treeViewerPCL);
} }
/**
* Sets the selection.
*
* @param selection the selection
* @param partService the part service
*/
@Inject @Inject
public void setSelection(@Named(IServiceConstants.ACTIVE_SELECTION) @Optional IStructuredSelection selection, EPartService partService){ public void setSelection(@Named(IServiceConstants.ACTIVE_SELECTION) @Optional IStructuredSelection selection, EPartService partService){
MPart part = partService.getActivePart(); MPart part = partService.getActivePart();
@ -342,6 +393,9 @@ public class DesignBrowser {
updateButtons(); updateButtons();
} }
/**
* Update buttons.
*/
private void updateButtons() { private void updateButtons() {
if(txTableViewer!=null && !insertItem.isDisposed() && !appendItem.isDisposed() && if(txTableViewer!=null && !insertItem.isDisposed() && !appendItem.isDisposed() &&
!appendAllItem.isDisposed() && !insertAllItem.isDisposed()){ !appendAllItem.isDisposed() && !insertAllItem.isDisposed()){
@ -357,14 +411,26 @@ public class DesignBrowser {
} }
} }
/**
* The Class WaveformAttributeFilter.
*/
public class WaveformAttributeFilter extends ViewerFilter { public class WaveformAttributeFilter extends ViewerFilter {
/** The search string. */
private String searchString; private String searchString;
/**
* Sets the search text.
*
* @param s the new search text
*/
public void setSearchText(String s) { public void setSearchText(String s) {
this.searchString = ".*" + s + ".*"; this.searchString = ".*" + s + ".*";
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
*/
@Override @Override
public boolean select(Viewer viewer, Object parentElement, Object element) { public boolean select(Viewer viewer, Object parentElement, Object element) {
if (searchString == null || searchString.length() == 0) { if (searchString == null || searchString.length() == 0) {
@ -378,6 +444,12 @@ public class DesignBrowser {
} }
} }
/**
* Gets the filtered children.
*
* @param viewer the viewer
* @return the filtered children
*/
protected Object[] getFilteredChildren(TableViewer viewer){ protected Object[] getFilteredChildren(TableViewer viewer){
Object parent = viewer.getInput(); Object parent = viewer.getInput();
if(parent==null) return new Object[0]; if(parent==null) return new Object[0];
@ -402,32 +474,60 @@ public class DesignBrowser {
return result; return result;
} }
/**
* Run command.
*
* @param handler the handler
* @param annotation the annotation
* @param where the where
* @param all the all
* @return the object
*/
protected Object runCommand(AddWaveformHandler handler, Class<? extends Annotation> annotation, String where, Boolean all) { protected Object runCommand(AddWaveformHandler handler, Class<? extends Annotation> annotation, String where, Boolean all) {
ContextInjectionFactory.inject(handler, eclipseCtx); ContextInjectionFactory.inject(handler, eclipseCtx);
eclipseCtx.set(AddWaveformHandler.PARAM_WHERE_ID, where); eclipseCtx.set(AddWaveformHandler.PARAM_WHERE_ID, where);
eclipseCtx.set(AddWaveformHandler.PARAM_ALL_ID, all.toString()); eclipseCtx.set(AddWaveformHandler.PARAM_ALL_ID, all.toString());
eclipseCtx.set(DesignBrowser.class, this); eclipseCtx.set(DesignBrowser.class, this);
eclipseCtx.set(WaveformViewerPart.class, waveformViewerPart); eclipseCtx.set(WaveformViewer.class, waveformViewerPart);
Object result = ContextInjectionFactory.invoke(handler, annotation, eclipseCtx); Object result = ContextInjectionFactory.invoke(handler, annotation, eclipseCtx);
return result; return result;
} }
/**
* Gets the filtered children.
*
* @return the filtered children
*/
public Object[] getFilteredChildren() { public Object[] getFilteredChildren() {
return getFilteredChildren(txTableViewer); return getFilteredChildren(txTableViewer);
} }
public WaveformViewerPart getActiveWaveformViewerPart() { /**
* Gets the active waveform viewer part.
*
* @return the active waveform viewer part
*/
public WaveformViewer getActiveWaveformViewerPart() {
return waveformViewerPart; return waveformViewerPart;
} }
/**
* The Class DBState.
*/
class DBState { class DBState {
/**
* Instantiates a new DB state.
*/
public DBState() { public DBState() {
this.expandedElements=treeViewer.getExpandedElements(); this.expandedElements=treeViewer.getExpandedElements();
this.treeSelection=treeViewer.getSelection(); this.treeSelection=treeViewer.getSelection();
this.tableSelection=txTableViewer.getSelection(); this.tableSelection=txTableViewer.getSelection();
} }
/**
* Apply.
*/
public void apply() { public void apply() {
treeViewer.setExpandedElements(expandedElements); treeViewer.setExpandedElements(expandedElements);
treeViewer.setSelection(treeSelection, true); treeViewer.setSelection(treeSelection, true);
@ -435,8 +535,13 @@ public class DesignBrowser {
} }
/** The expanded elements. */
private Object[] expandedElements; private Object[] expandedElements;
/** The tree selection. */
private ISelection treeSelection; private ISelection treeSelection;
/** The table selection. */
private ISelection tableSelection; private ISelection tableSelection;
} }
}; };

View File

@ -0,0 +1,88 @@
package com.minres.scviewer.e4.application.parts;
import java.beans.PropertyChangeListener;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import com.minres.scviewer.database.IHierNode;
import com.minres.scviewer.database.IWaveform;
import com.minres.scviewer.database.IWaveformDb;
import com.minres.scviewer.database.IWaveformEvent;
import com.minres.scviewer.database.RelationType;
public class LoadingWaveformDb implements IWaveformDb {
private final String label = "Database loading...";
@Override
public void addPropertyChangeListener(PropertyChangeListener l) {
}
@Override
public void removePropertyChangeListener(PropertyChangeListener l) {
}
@Override
public String getFullName() {
return label;
}
@Override
public String getName() {
return label;
}
@Override
public void setName(String name) {
}
@Override
public void setParentName(String name) {
}
@Override
public List<IHierNode> getChildNodes() {
return new ArrayList<IHierNode>();
}
@Override
public int compareTo(IHierNode o) {
return 0;
}
@Override
public Long getMaxTime() {
return new Long(0);
}
@Override
public IWaveform<? extends IWaveformEvent> getStreamByName(String name) {
return null;
}
@Override
public List<IWaveform<?>> getAllWaves() {
return new ArrayList<IWaveform<?>>();
}
@Override
public List<RelationType> getAllRelationTypes() {
return new ArrayList<RelationType>();
}
@Override
public boolean load(File inp) throws Exception {
return false;
}
@Override
public boolean isLoaded() {
return false;
}
@Override
public void clear() {
}
}

View File

@ -13,19 +13,46 @@ package com.minres.scviewer.e4.application.parts;
import org.eclipse.e4.ui.model.application.ui.basic.MPart; import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.workbench.modeling.IPartListener; import org.eclipse.e4.ui.workbench.modeling.IPartListener;
/**
* The default implementation of a {@link IPartListener}.
* The class that is interested in processing a part
* event extends this class overriding the respective method, and the object created
* with that class is registered with a component using the
* component's <code>addPartListener<code> method. When
* the part event occurs, that object's appropriate
* method is invoked.
*
* @see PartEvent
*/
public class PartListener implements IPartListener { public class PartListener implements IPartListener {
/* (non-Javadoc)
* @see org.eclipse.e4.ui.workbench.modeling.IPartListener#partBroughtToTop(org.eclipse.e4.ui.model.application.ui.basic.MPart)
*/
@Override @Override
public void partBroughtToTop(MPart part) {} public void partBroughtToTop(MPart part) {}
/* (non-Javadoc)
* @see org.eclipse.e4.ui.workbench.modeling.IPartListener#partActivated(org.eclipse.e4.ui.model.application.ui.basic.MPart)
*/
@Override @Override
public void partActivated(MPart part) {} public void partActivated(MPart part) {}
/* (non-Javadoc)
* @see org.eclipse.e4.ui.workbench.modeling.IPartListener#partDeactivated(org.eclipse.e4.ui.model.application.ui.basic.MPart)
*/
@Override @Override
public void partDeactivated(MPart part) {} public void partDeactivated(MPart part) {}
/* (non-Javadoc)
* @see org.eclipse.e4.ui.workbench.modeling.IPartListener#partHidden(org.eclipse.e4.ui.model.application.ui.basic.MPart)
*/
@Override @Override
public void partHidden(MPart part) {} public void partHidden(MPart part) {}
/* (non-Javadoc)
* @see org.eclipse.e4.ui.workbench.modeling.IPartListener#partVisible(org.eclipse.e4.ui.model.application.ui.basic.MPart)
*/
@Override @Override
public void partVisible(MPart part) {} public void partVisible(MPart part) {}
} }

View File

@ -57,32 +57,51 @@ import com.minres.scviewer.database.ITxAttribute;
import com.minres.scviewer.database.ITxRelation; import com.minres.scviewer.database.ITxRelation;
import com.minres.scviewer.e4.application.provider.TxPropertiesLabelProvider; import com.minres.scviewer.e4.application.provider.TxPropertiesLabelProvider;
/**
* The Class TransactionDetails shows the details of a selected transaction.
*/
public class TransactionDetails { public class TransactionDetails {
/** The Constant COLUMN_FIRST. */
// Column constants // Column constants
public static final int COLUMN_FIRST = 0; public static final int COLUMN_FIRST = 0;
/** The Constant COLUMN_SECOND. */
public static final int COLUMN_SECOND = 1; public static final int COLUMN_SECOND = 1;
/** The Constant COLUMN_THIRD. */
public static final int COLUMN_THIRD = 2; public static final int COLUMN_THIRD = 2;
/** The event broker. */
@Inject IEventBroker eventBroker; @Inject IEventBroker eventBroker;
/** The selection service. */
@Inject ESelectionService selectionService; @Inject ESelectionService selectionService;
/** The name filter. */
private Text nameFilter; private Text nameFilter;
/** The tree viewer. */
private TreeViewer treeViewer; private TreeViewer treeViewer;
/** The col3. */
private TreeViewerColumn col1, col2, col3; private TreeViewerColumn col1, col2, col3;
/** The attribute filter. */
TxAttributeFilter attributeFilter; TxAttributeFilter attributeFilter;
/** The view sorter. */
TxAttributeViewerSorter viewSorter; TxAttributeViewerSorter viewSorter;
private WaveformViewerPart waveformViewerPart; /** The waveform viewer part. */
private WaveformViewer waveformViewerPart;
/**
* Creates the composite.
*
* @param parent the parent
*/
@PostConstruct @PostConstruct
public void createComposite(final Composite parent) { public void createComposite(final Composite parent) {
parent.setLayout(new GridLayout(1, false)); parent.setLayout(new GridLayout(1, false));
@ -207,16 +226,30 @@ public class TransactionDetails {
}); });
} }
/**
* Sets the focus.
*/
@Focus @Focus
public void setFocus() { public void setFocus() {
treeViewer.getTree().setFocus(); treeViewer.getTree().setFocus();
} }
/**
* Gets the status event.
*
* @param part the part
* @return the status event
*/
@Inject @Optional @Inject @Optional
public void getStatusEvent(@UIEventTopic(WaveformViewerPart.ACTIVE_WAVEFORMVIEW) WaveformViewerPart part) { public void getStatusEvent(@UIEventTopic(WaveformViewer.ACTIVE_WAVEFORMVIEW) WaveformViewer part) {
this.waveformViewerPart=part; this.waveformViewerPart=part;
} }
/**
* Sets the selection.
*
* @param selection the new selection
*/
@Inject @Inject
public void setSelection(@Named(IServiceConstants.ACTIVE_SELECTION) @Optional IStructuredSelection selection){ public void setSelection(@Named(IServiceConstants.ACTIVE_SELECTION) @Optional IStructuredSelection selection){
if(treeViewer!=null && selection!=null && !treeViewer.getTree().isDisposed()){ if(treeViewer!=null && selection!=null && !treeViewer.getTree().isDisposed()){
@ -231,10 +264,22 @@ public class TransactionDetails {
} }
} }
/**
* Time to string.
*
* @param time the time
* @return the string
*/
String timeToString(Long time){ String timeToString(Long time){
return waveformViewerPart.getScaledTime(time); return waveformViewerPart.getScaledTime(time);
} }
/**
* Tx to string.
*
* @param tx the tx
* @return the string
*/
String txToString(ITx tx){ String txToString(ITx tx){
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
sb.append("tx#").append(tx.getId()).append("[").append(timeToString(tx.getBeginTime())). sb.append("tx#").append(tx.getId()).append("[").append(timeToString(tx.getBeginTime())).
@ -242,13 +287,21 @@ public class TransactionDetails {
return sb.toString(); return sb.toString();
} }
/**
* The Class TxAttributeViewerSorter.
*/
class TxAttributeViewerSorter extends ViewerSorter { class TxAttributeViewerSorter extends ViewerSorter {
/** The Constant ASCENDING. */
private static final int ASCENDING = 0; private static final int ASCENDING = 0;
/** The Constant DESCENDING. */
private static final int DESCENDING = 1; private static final int DESCENDING = 1;
/** The column. */
private int column; private int column;
/** The direction. */
private int direction; private int direction;
/** /**
@ -256,7 +309,7 @@ public class TransactionDetails {
* ascending sort. If it's the same column as the last sort, toggle the sort * ascending sort. If it's the same column as the last sort, toggle the sort
* direction. * direction.
* *
* @param column * @param column the column
*/ */
public void doSort(int column) { public void doSort(int column) {
if (column == this.column) { if (column == this.column) {
@ -270,7 +323,12 @@ public class TransactionDetails {
} }
/** /**
* Compares the object for sorting * Compares the object for sorting.
*
* @param viewer the viewer
* @param e1 the e1
* @param e2 the e2
* @return the int
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public int compare(Viewer viewer, Object e1, Object e2) { public int compare(Viewer viewer, Object e1, Object e2) {
@ -297,14 +355,26 @@ public class TransactionDetails {
} }
} }
/**
* The Class TxAttributeFilter.
*/
class TxAttributeFilter extends ViewerFilter { class TxAttributeFilter extends ViewerFilter {
/** The search string. */
private String searchString; private String searchString;
/**
* Sets the search text.
*
* @param s the new search text
*/
public void setSearchText(String s) { public void setSearchText(String s) {
this.searchString = ".*" + s + ".*"; this.searchString = ".*" + s + ".*";
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ViewerFilter#select(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
*/
@Override @Override
public boolean select(Viewer viewer, Object parentElement, Object element) { public boolean select(Viewer viewer, Object parentElement, Object element) {
if (searchString == null || searchString.length() == 0) { if (searchString == null || searchString.length() == 0) {
@ -321,17 +391,40 @@ public class TransactionDetails {
} }
} }
enum Type {PROPS, ATTRS, IN_REL, OUT_REL} /**
* The Enum Type.
*/
enum Type {/** The props. */
PROPS, /** The attrs. */
ATTRS, /** The in rel. */
IN_REL, /** The out rel. */
OUT_REL}
/**
* The Class TreeNode.
*/
class TreeNode{ class TreeNode{
/** The type. */
public Type type; public Type type;
/** The element. */
public ITx element; public ITx element;
/**
* Instantiates a new tree node.
*
* @param element the element
* @param type the type
*/
public TreeNode(ITx element, Type type){ public TreeNode(ITx element, Type type){
this.element=element; this.element=element;
this.type=type; this.type=type;
} }
/* (non-Javadoc)
* @see java.lang.Object#toString()
*/
public String toString(){ public String toString(){
switch(type){ switch(type){
case PROPS: return "Properties"; case PROPS: return "Properties";
@ -343,15 +436,27 @@ public class TransactionDetails {
} }
} }
/**
* The Class TransactionTreeContentProvider.
*/
class TransactionTreeContentProvider implements ITreeContentProvider { class TransactionTreeContentProvider implements ITreeContentProvider {
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
@Override @Override
public void dispose() { } public void dispose() { }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
*/
@Override @Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#getElements(java.lang.Object)
*/
@Override @Override
public Object[] getElements(Object element) { public Object[] getElements(Object element) {
return new Object[]{ return new Object[]{
@ -362,6 +467,9 @@ public class TransactionDetails {
}; };
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
*/
@Override @Override
public Object[] getChildren(Object element) { public Object[] getChildren(Object element) {
if(element instanceof TreeNode){ if(element instanceof TreeNode){
@ -398,11 +506,17 @@ public class TransactionDetails {
return null; return null;
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
*/
@Override @Override
public Object getParent(Object element) { public Object getParent(Object element) {
return null; return null;
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
*/
@Override @Override
public boolean hasChildren(Object element) { public boolean hasChildren(Object element) {
return getChildren(element)!=null; return getChildren(element)!=null;
@ -410,16 +524,35 @@ public class TransactionDetails {
} }
/**
* The Class AttributeLabelProvider.
*/
class AttributeLabelProvider extends LabelProvider implements IStyledLabelProvider { class AttributeLabelProvider extends LabelProvider implements IStyledLabelProvider {
/** The field. */
final int field; final int field;
/** The Constant NAME. */
public static final int NAME=0; public static final int NAME=0;
/** The Constant TYPE. */
public static final int TYPE=1; public static final int TYPE=1;
/** The Constant VALUE. */
public static final int VALUE=2; public static final int VALUE=2;
/**
* Instantiates a new attribute label provider.
*
* @param field the field
*/
public AttributeLabelProvider(int field) { public AttributeLabelProvider(int field) {
this.field=field; this.field=field;
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider#getStyledText(java.lang.Object)
*/
@Override @Override
public StyledString getStyledText(Object element) { public StyledString getStyledText(Object element) {
switch(field){ switch(field){

View File

@ -13,12 +13,17 @@ package com.minres.scviewer.e4.application.parts;
import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener; import java.beans.PropertyChangeListener;
import java.io.File; import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
@ -76,66 +81,112 @@ import com.minres.scviewer.e4.application.internal.util.IModificationChecker;
import com.minres.scviewer.e4.application.preferences.DefaultValuesInitializer; import com.minres.scviewer.e4.application.preferences.DefaultValuesInitializer;
import com.minres.scviewer.e4.application.preferences.PreferenceConstants; import com.minres.scviewer.e4.application.preferences.PreferenceConstants;
/**
* The Class WaveformViewerPart.
*/
@SuppressWarnings("restriction") @SuppressWarnings("restriction")
public class WaveformViewerPart implements IFileChangeListener, IPreferenceChangeListener { public class WaveformViewer implements IFileChangeListener, IPreferenceChangeListener {
/** The Constant ACTIVE_WAVEFORMVIEW. */
public static final String ACTIVE_WAVEFORMVIEW = "Active_Waveform_View"; public static final String ACTIVE_WAVEFORMVIEW = "Active_Waveform_View";
/** The Constant ADD_WAVEFORM. */
public static final String ADD_WAVEFORM = "AddWaveform"; public static final String ADD_WAVEFORM = "AddWaveform";
/** The Constant DATABASE_FILE. */
protected static final String DATABASE_FILE = "DATABASE_FILE"; protected static final String DATABASE_FILE = "DATABASE_FILE";
/** The Constant SHOWN_WAVEFORM. */
protected static final String SHOWN_WAVEFORM = "SHOWN_WAVEFORM"; protected static final String SHOWN_WAVEFORM = "SHOWN_WAVEFORM";
/** The Constant SHOWN_CURSOR. */
protected static final String SHOWN_CURSOR = "SHOWN_CURSOR"; protected static final String SHOWN_CURSOR = "SHOWN_CURSOR";
/** 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. */
protected static final long FILE_CHECK_INTERVAL = 60000; protected static final long FILE_CHECK_INTERVAL = 60000;
/** The zoom level. */
private String[] zoomLevel; private String[] zoomLevel;
/** The Constant ID. */
public static final String ID = "com.minres.scviewer.ui.TxEditorPart"; //$NON-NLS-1$ public static final String ID = "com.minres.scviewer.ui.TxEditorPart"; //$NON-NLS-1$
/** The Constant WAVE_ACTION_ID. */
public static final String WAVE_ACTION_ID = "com.minres.scviewer.ui.action.AddToWave"; public static final String WAVE_ACTION_ID = "com.minres.scviewer.ui.action.AddToWave";
/** The factory. */
WaveformViewerFactory factory = new WaveformViewerFactory(); WaveformViewerFactory factory = new WaveformViewerFactory();
/** The waveform pane. */
private IWaveformViewer waveformPane; private IWaveformViewer waveformPane;
/** The event broker. */
@Inject @Inject
private IEventBroker eventBroker; private IEventBroker eventBroker;
/** The menu service. */
@Inject @Inject
EMenuService menuService; EMenuService menuService;
/** The selection service. */
@Inject @Inject
ESelectionService selectionService; ESelectionService selectionService;
/** The e part service. */
@Inject @Inject
EPartService ePartService; EPartService ePartService;
/** The prefs. */
@Inject @Inject
@Preference(nodePath = PreferenceConstants.PREFERENCES_SCOPE) @Preference(nodePath = PreferenceConstants.PREFERENCES_SCOPE)
IEclipsePreferences prefs; IEclipsePreferences prefs;
/** The database. */
private IWaveformDb database; private IWaveformDb database;
/** The check for updates. */
private boolean checkForUpdates; private boolean checkForUpdates;
/** The my part. */
private MPart myPart; private MPart myPart;
/** The my parent. */
private Composite myParent; private Composite myParent;
/** The files to load. */
ArrayList<File> filesToLoad; ArrayList<File> filesToLoad;
/** The persisted state. */
Map<String, String> persistedState; Map<String, String> persistedState;
/** The browser state. */
private Object browserState; private Object browserState;
/** The details settings. */
private Object detailsSettings;
/** The navigation relation type. */
private RelationType navigationRelationType=IWaveformViewer.NEXT_PREV_IN_STREAM ; private RelationType navigationRelationType=IWaveformViewer.NEXT_PREV_IN_STREAM ;
/** The file monitor. */
FileMonitor fileMonitor = new FileMonitor(); FileMonitor fileMonitor = new FileMonitor();
/** The file checker. */
IModificationChecker fileChecker; IModificationChecker fileChecker;
/**
* Creates the composite.
*
* @param part the part
* @param parent the parent
* @param dbFactory the db factory
*/
@PostConstruct @PostConstruct
public void createComposite(MPart part, Composite parent, IWaveformDbFactory dbFactory) { public void createComposite(MPart part, Composite parent, IWaveformDbFactory dbFactory) {
myPart = part; myPart = part;
@ -161,7 +212,7 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
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));
} }
@ -214,13 +265,16 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
prefs.addPreferenceChangeListener(this); prefs.addPreferenceChangeListener(this);
} }
/* (non-Javadoc)
* @see org.eclipse.core.runtime.preferences.IEclipsePreferences.IPreferenceChangeListener#preferenceChange(org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChangeEvent)
*/
@Override @Override
public void preferenceChange(PreferenceChangeEvent event) { public void preferenceChange(PreferenceChangeEvent event) {
if (PreferenceConstants.DATABASE_RELOAD.equals(event.getKey())) { if (PreferenceConstants.DATABASE_RELOAD.equals(event.getKey())) {
checkForUpdates = (Boolean) event.getNewValue(); checkForUpdates = (Boolean) event.getNewValue();
fileChecker = null; fileChecker = null;
if (checkForUpdates) if (checkForUpdates)
fileChecker = fileMonitor.addFileChangeListener(WaveformViewerPart.this, filesToLoad, fileChecker = fileMonitor.addFileChangeListener(WaveformViewer.this, filesToLoad,
FILE_CHECK_INTERVAL); FILE_CHECK_INTERVAL);
else else
fileMonitor.removeFileChangeListener(this); fileMonitor.removeFileChangeListener(this);
@ -229,6 +283,9 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
} }
} }
/**
* Setup colors.
*/
protected void setupColors() { protected void setupColors() {
DefaultValuesInitializer initializer = new DefaultValuesInitializer(); DefaultValuesInitializer initializer = new DefaultValuesInitializer();
HashMap<WaveformColors, RGB> colorPref = new HashMap<>(); HashMap<WaveformColors, RGB> colorPref = new HashMap<>();
@ -241,24 +298,28 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
waveformPane.setColors(colorPref); waveformPane.setColors(colorPref);
} }
/**
* Load database.
*
* @param state the state
*/
protected void loadDatabase(final Map<String, String> state) { protected void loadDatabase(final Map<String, String> state) {
fileMonitor.removeFileChangeListener(this); fileMonitor.removeFileChangeListener(this);
Job job = new Job(" My Job") { Job job = new Job("Database Load Job") {
@Override @Override
protected IStatus run(IProgressMonitor monitor) { protected IStatus run(IProgressMonitor monitor) {
// convert to SubMonitor and set total number of work units // convert to SubMonitor and set total number of work units
SubMonitor subMonitor = SubMonitor.convert(monitor, filesToLoad.size()); SubMonitor subMonitor = SubMonitor.convert(monitor, filesToLoad.size()+1);
subMonitor.setTaskName("Loading database");
try { try {
subMonitor.worked(1);
for (File file : filesToLoad) { for (File file : filesToLoad) {
// TimeUnit.SECONDS.sleep(2); subMonitor.setTaskName("Loading "+file.getName());
database.load(file); database.load(file);
database.addPropertyChangeListener(waveformPane); database.addPropertyChangeListener(waveformPane);
subMonitor.worked(1); subMonitor.worked(1);
if (monitor.isCanceled()) if (monitor.isCanceled())
return Status.CANCEL_STATUS; return Status.CANCEL_STATUS;
} }
// sleep a second
} catch (Exception e) { } catch (Exception e) {
database = null; database = null;
e.printStackTrace(); e.printStackTrace();
@ -281,7 +342,7 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
restoreWaveformViewerState(state); restoreWaveformViewerState(state);
fileChecker = null; fileChecker = null;
if (checkForUpdates) if (checkForUpdates)
fileChecker = fileMonitor.addFileChangeListener(WaveformViewerPart.this, filesToLoad, fileChecker = fileMonitor.addFileChangeListener(WaveformViewer.this, filesToLoad,
FILE_CHECK_INTERVAL); FILE_CHECK_INTERVAL);
} }
}); });
@ -290,6 +351,9 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
job.schedule(0); job.schedule(0);
} }
/* (non-Javadoc)
* @see com.minres.scviewer.e4.application.internal.util.IFileChangeListener#fileChanged(java.util.List)
*/
@Override @Override
public void fileChanged(List<File> file) { public void fileChanged(List<File> file) {
final Display display = myParent.getDisplay(); final Display display = myParent.getDisplay();
@ -307,8 +371,14 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
} }
} }
}); });
fileMonitor.removeFileChangeListener(this);
} }
/**
* Sets the part input.
*
* @param partInput the new part input
*/
@Inject @Inject
@Optional @Optional
public void setPartInput(@Named("input") Object partInput) { public void setPartInput(@Named("input") Object partInput) {
@ -338,11 +408,19 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
} }
} }
/**
* Sets the focus.
*/
@Focus @Focus
public void setFocus() { public void setFocus() {
myParent.setFocus(); myParent.setFocus();
} }
/**
* Save state.
*
* @param part the part
*/
@PersistState @PersistState
public void saveState(MPart part) { public void saveState(MPart part) {
// save changes // save changes
@ -356,6 +434,45 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
saveWaveformViewerState(persistedState); saveWaveformViewerState(persistedState);
} }
public void saveState(String fileName){
Map<String, String> persistedState = new HashMap<>();
persistedState.put(DATABASE_FILE + "S", Integer.toString(filesToLoad.size()));
Integer index = 0;
for (File file : filesToLoad) {
persistedState.put(DATABASE_FILE + index, file.getAbsolutePath());
index++;
}
saveWaveformViewerState(persistedState);
Properties props = new Properties();
props.putAll(persistedState);
try {
FileOutputStream out = new FileOutputStream(fileName);
props.store(out, "Written by SCViewer");
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public void loadState(String fileName){
Properties props = new Properties();
try {
FileInputStream in = new FileInputStream(fileName);
props.load(in);
in.close();
} catch (IOException e) {
e.printStackTrace();
}
@SuppressWarnings({ "unchecked", "rawtypes" })
HashMap<String, String> propMap = new HashMap<String, String>((Map) props);
restoreWaveformViewerState(propMap);
}
/**
* Save waveform viewer state.
*
* @param persistedState the persisted state
*/
protected void saveWaveformViewerState(Map<String, String> persistedState) { protected void saveWaveformViewerState(Map<String, String> persistedState) {
Integer index; Integer index;
persistedState.put(SHOWN_WAVEFORM + "S", Integer.toString(waveformPane.getStreamList().size())); persistedState.put(SHOWN_WAVEFORM + "S", Integer.toString(waveformPane.getStreamList().size()));
@ -372,11 +489,16 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
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()));
} }
/**
* Restore waveform viewer 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));
@ -385,8 +507,7 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
} }
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++) {
@ -401,21 +522,38 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
} 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 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));
} }
/**
* Gets the adds the waveform event.
*
* @param o the o
* @return the adds the waveform event
*/
@Inject @Inject
@Optional @Optional
public void getAddWaveformEvent(@UIEventTopic(WaveformViewerPart.ADD_WAVEFORM) Object o) { public void getAddWaveformEvent(@UIEventTopic(WaveformViewer.ADD_WAVEFORM) Object o) {
Object sel = o == null ? selectionService.getSelection() : o; Object sel = o == null ? selectionService.getSelection() : o;
if (sel instanceof IStructuredSelection) if (sel instanceof IStructuredSelection)
for (Object el : ((IStructuredSelection) sel).toArray()) { for (Object el : ((IStructuredSelection) sel).toArray()) {
@ -424,6 +562,12 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
} }
} }
/**
* Ask if to load.
*
* @param txFile the tx file
* @return true, if successful
*/
protected boolean askIfToLoad(File txFile) { protected boolean askIfToLoad(File txFile) {
if (txFile.exists() && MessageDialog.openQuestion(myParent.getDisplay().getActiveShell(), "Database open", if (txFile.exists() && MessageDialog.openQuestion(myParent.getDisplay().getActiveShell(), "Database open",
"Would you like to open the adjacent database " + txFile.getName() + " as well?")) { "Would you like to open the adjacent database " + txFile.getName() + " as well?")) {
@ -432,6 +576,13 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
return false; return false;
} }
/**
* Rename file extension.
*
* @param source the source
* @param newExt the new ext
* @return the string
*/
protected static String renameFileExtension(String source, String newExt) { protected static String renameFileExtension(String source, String newExt) {
String target; String target;
String currentExt = getFileExtension(source); String currentExt = getFileExtension(source);
@ -443,6 +594,12 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
return target; return target;
} }
/**
* Gets the file extension.
*
* @param f the f
* @return the file extension
*/
protected static String getFileExtension(String f) { protected static String getFileExtension(String f) {
String ext = ""; String ext = "";
int i = f.lastIndexOf('.'); int i = f.lastIndexOf('.');
@ -452,18 +609,40 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
return ext; return ext;
} }
/**
* Gets the model.
*
* @return the model
*/
public IWaveformDb getModel() { public IWaveformDb getModel() {
return database; return database;
} }
/**
* Gets the database.
*
* @return the database
*/
public IWaveformDb getDatabase() { public IWaveformDb getDatabase() {
return database; return database;
} }
/**
* Adds the stream to list.
*
* @param obj the obj
* @param insert the insert
*/
public void addStreamToList(IWaveform<? extends IWaveformEvent> obj, boolean insert) { public void addStreamToList(IWaveform<? extends IWaveformEvent> obj, boolean insert) {
addStreamsToList(new IWaveform<?>[] { obj }, insert); addStreamsToList(new IWaveform<?>[] { obj }, insert);
} }
/**
* Adds the streams to list.
*
* @param iWaveforms the i waveforms
* @param insert the insert
*/
public void addStreamsToList(IWaveform<? extends IWaveformEvent>[] iWaveforms, boolean insert) { public void addStreamsToList(IWaveform<? extends IWaveformEvent>[] iWaveforms, boolean insert) {
List<TrackEntry> streams = new LinkedList<>(); List<TrackEntry> streams = new LinkedList<>();
for (IWaveform<? extends IWaveformEvent> stream : iWaveforms) for (IWaveform<? extends IWaveformEvent> stream : iWaveforms)
@ -482,33 +661,69 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
} }
} }
/**
* Removes the stream from list.
*
* @param stream the stream
*/
public void removeStreamFromList(IWaveform<? extends IWaveformEvent> stream) { public void removeStreamFromList(IWaveform<? extends IWaveformEvent> stream) {
TrackEntry trackEntry = waveformPane.getEntryForStream(stream); TrackEntry trackEntry = waveformPane.getEntryForStream(stream);
waveformPane.getStreamList().remove(trackEntry); waveformPane.getStreamList().remove(trackEntry);
} }
/**
* Removes the streams from list.
*
* @param iWaveforms the i waveforms
*/
public void removeStreamsFromList(IWaveform<? extends IWaveformEvent>[] iWaveforms) { public void removeStreamsFromList(IWaveform<? extends IWaveformEvent>[] iWaveforms) {
for (IWaveform<? extends IWaveformEvent> stream : iWaveforms) for (IWaveform<? extends IWaveformEvent> stream : iWaveforms)
removeStreamFromList(stream); removeStreamFromList(stream);
} }
/**
* Move selected.
*
* @param i the i
*/
public void moveSelected(int i) { public void moveSelected(int i) {
waveformPane.moveSelectedTrack(i); waveformPane.moveSelectedTrack(i);
} }
/**
* Move selection.
*
* @param direction the direction
*/
public void moveSelection(GotoDirection direction ) { public void moveSelection(GotoDirection direction ) {
moveSelection(direction, navigationRelationType); moveSelection(direction, navigationRelationType);
} }
/**
* Move selection.
*
* @param direction the direction
* @param relationType the relation type
*/
public void moveSelection(GotoDirection direction, RelationType relationType) { public void moveSelection(GotoDirection direction, RelationType relationType) {
waveformPane.moveSelection(direction, relationType); waveformPane.moveSelection(direction, relationType);
} }
/**
* Move cursor.
*
* @param direction the direction
*/
public void moveCursor(GotoDirection direction) { public void moveCursor(GotoDirection direction) {
waveformPane.moveCursor(direction); waveformPane.moveCursor(direction);
} }
/**
* Sets the zoom level.
*
* @param level the new zoom level
*/
public void setZoomLevel(Integer level) { public void setZoomLevel(Integer level) {
if (level < 0) if (level < 0)
level = 0; level = 0;
@ -518,35 +733,92 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
updateAll(); updateAll();
} }
/**
* Sets the zoom fit.
*/
public void setZoomFit() { public void setZoomFit() {
waveformPane.setZoomLevel(6); waveformPane.setZoomLevel(6);
updateAll(); updateAll();
} }
/**
* Gets the zoom level.
*
* @return the zoom level
*/
public int getZoomLevel() { public int getZoomLevel() {
return waveformPane.getZoomLevel(); return waveformPane.getZoomLevel();
} }
/**
* Gets the selection.
*
* @return the selection
*/
public ISelection getSelection() { public ISelection getSelection() {
return waveformPane.getSelection(); return waveformPane.getSelection();
} }
/**
* Sets the selection.
*
* @param structuredSelection the new selection
*/
public void setSelection(IStructuredSelection structuredSelection) { public void setSelection(IStructuredSelection structuredSelection) {
waveformPane.setSelection(structuredSelection, true); waveformPane.setSelection(structuredSelection, true);
} }
/**
* Gets the scaled time.
*
* @param time the time
* @return the scaled time
*/
public String getScaledTime(Long time) { public String getScaledTime(Long time) {
return waveformPane.getScaledTime(time); return waveformPane.getScaledTime(time);
} }
/**
* Store design brower state.
*
* @param browserState the browser state
*/
public void storeDesignBrowerState(Object browserState) { public void storeDesignBrowerState(Object browserState) {
this.browserState=browserState; this.browserState=browserState;
} }
/**
* Retrieve design brower state.
*
* @return the object
*/
public Object retrieveDesignBrowerState() { public Object retrieveDesignBrowerState() {
return browserState; return browserState;
} }
/**
* Store transaction details settings
*
* @param detailsSettings the details settings
*/
public void storeDetailsSettings(Object detailsSettings) {
this.detailsSettings=detailsSettings;
}
/**
* Retrieve design details settings.
*
* @return the details settings
*/
public Object retrieveDetailsSettings() {
return detailsSettings;
}
/**
* Gets the all relation types.
*
* @return the all relation types
*/
public List<RelationType> getAllRelationTypes() { public List<RelationType> getAllRelationTypes() {
List<RelationType> res =new ArrayList<>(); List<RelationType> res =new ArrayList<>();
res.add(IWaveformViewer.NEXT_PREV_IN_STREAM); res.add(IWaveformViewer.NEXT_PREV_IN_STREAM);
@ -554,6 +826,11 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
return res; return res;
} }
/**
* Gets the selection relation types.
*
* @return the selection relation types
*/
public List<RelationType> getSelectionRelationTypes() { public List<RelationType> getSelectionRelationTypes() {
List<RelationType> res =new ArrayList<>(); List<RelationType> res =new ArrayList<>();
res.add(IWaveformViewer.NEXT_PREV_IN_STREAM); res.add(IWaveformViewer.NEXT_PREV_IN_STREAM);
@ -575,14 +852,29 @@ public class WaveformViewerPart implements IFileChangeListener, IPreferenceChang
return res; return res;
} }
/**
* Gets the relation type filter.
*
* @return the relation type filter
*/
public RelationType getRelationTypeFilter() { public RelationType getRelationTypeFilter() {
return navigationRelationType; return navigationRelationType;
} }
/**
* Sets the navigation relation type.
*
* @param relationName the new navigation relation type
*/
public void setNavigationRelationType(String relationName) { public void setNavigationRelationType(String relationName) {
setNavigationRelationType(RelationType.create(relationName)); setNavigationRelationType(RelationType.create(relationName));
} }
/**
* Sets the navigation relation type.
*
* @param relationType the new navigation relation type
*/
public void setNavigationRelationType(RelationType relationType) { public void setNavigationRelationType(RelationType relationType) {
if(navigationRelationType!=relationType) waveformPane.setHighliteRelation(relationType); if(navigationRelationType!=relationType) waveformPane.setHighliteRelation(relationType);
navigationRelationType=relationType; navigationRelationType=relationType;

View File

@ -21,10 +21,17 @@ import org.eclipse.wb.swt.SWTResourceManager;
import com.minres.scviewer.database.ui.WaveformColors; import com.minres.scviewer.database.ui.WaveformColors;
import com.opcoach.e4.preferences.ScopedPreferenceStore; import com.opcoach.e4.preferences.ScopedPreferenceStore;
/**
* The Class DefaultValuesInitializer.
*/
public class DefaultValuesInitializer extends AbstractPreferenceInitializer { public class DefaultValuesInitializer extends AbstractPreferenceInitializer {
/** The default colors. */
public final Color[] colors = new Color[WaveformColors.values().length]; public final Color[] colors = new Color[WaveformColors.values().length];
/**
* Instantiates a new default values initializer.
*/
public DefaultValuesInitializer() { public DefaultValuesInitializer() {
colors[WaveformColors.LINE.ordinal()] = SWTResourceManager.getColor(SWT.COLOR_RED); colors[WaveformColors.LINE.ordinal()] = SWTResourceManager.getColor(SWT.COLOR_RED);
colors[WaveformColors.LINE_HIGHLITE.ordinal()] = SWTResourceManager.getColor(SWT.COLOR_CYAN); colors[WaveformColors.LINE_HIGHLITE.ordinal()] = SWTResourceManager.getColor(SWT.COLOR_CYAN);
@ -48,6 +55,9 @@ public class DefaultValuesInitializer extends AbstractPreferenceInitializer {
colors[WaveformColors.REL_ARROW_HIGHLITE.ordinal()] = SWTResourceManager.getColor(255, 128, 255); colors[WaveformColors.REL_ARROW_HIGHLITE.ordinal()] = SWTResourceManager.getColor(255, 128, 255);
} }
/* (non-Javadoc)
* @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences()
*/
@Override @Override
public void initializeDefaultPreferences() { public void initializeDefaultPreferences() {
IPreferenceStore store = new ScopedPreferenceStore(InstanceScope.INSTANCE, PreferenceConstants.PREFERENCES_SCOPE); IPreferenceStore store = new ScopedPreferenceStore(InstanceScope.INSTANCE, PreferenceConstants.PREFERENCES_SCOPE);

View File

@ -10,27 +10,69 @@
*******************************************************************************/ *******************************************************************************/
package com.minres.scviewer.e4.application.preferences; package com.minres.scviewer.e4.application.preferences;
/**
* The Class PreferenceConstants for the preferences dialog & setting.
*/
public class PreferenceConstants { public class PreferenceConstants {
/** The Constant PREFERENCES_SCOPE. */
public static final String PREFERENCES_SCOPE="com.minres.scviewer.e4.application"; public static final String PREFERENCES_SCOPE="com.minres.scviewer.e4.application";
/** The Constant DATABASE_RELOAD. */
public static final String DATABASE_RELOAD="databaseReload"; public static final String DATABASE_RELOAD="databaseReload";
/** The Constant LINE_COLOR. */
public static final String LINE_COLOR="LINE_COLOR"; public static final String LINE_COLOR="LINE_COLOR";
/** The Constant LINE_HIGHLITE_COLOR. */
public static final String LINE_HIGHLITE_COLOR="LINE_HIGHLITE_COLOR"; public static final String LINE_HIGHLITE_COLOR="LINE_HIGHLITE_COLOR";
/** The Constant TRACK_BG_EVEN_COLOR. */
public static final String TRACK_BG_EVEN_COLOR="TRACK_BG_EVEN_COLOR"; public static final String TRACK_BG_EVEN_COLOR="TRACK_BG_EVEN_COLOR";
/** The Constant TRACK_BG_ODD_COLOR. */
public static final String TRACK_BG_ODD_COLOR="TRACK_BG_ODD_COLOR"; public static final String TRACK_BG_ODD_COLOR="TRACK_BG_ODD_COLOR";
/** The Constant TRACK_BG_HIGHLITE_COLOR. */
public static final String TRACK_BG_HIGHLITE_COLOR="TRACK_BG_HIGHLITE_COLOR"; public static final String TRACK_BG_HIGHLITE_COLOR="TRACK_BG_HIGHLITE_COLOR";
/** The Constant TX_BG_COLOR. */
public static final String TX_BG_COLOR="TX_BG_COLOR"; public static final String TX_BG_COLOR="TX_BG_COLOR";
/** The Constant TX_BG_HIGHLITE_COLOR. */
public static final String TX_BG_HIGHLITE_COLOR="TX_BG_HIGHLITE_COLOR"; public static final String TX_BG_HIGHLITE_COLOR="TX_BG_HIGHLITE_COLOR";
/** The Constant TX_BORDER_COLOR. */
public static final String TX_BORDER_COLOR="TX_BORDER_COLOR"; public static final String TX_BORDER_COLOR="TX_BORDER_COLOR";
/** The Constant SIGNAL0_COLOR. */
public static final String SIGNAL0_COLOR="SIGNAL0_COLOR"; public static final String SIGNAL0_COLOR="SIGNAL0_COLOR";
/** The Constant SIGNAL1_COLOR. */
public static final String SIGNAL1_COLOR="SIGNAL1_COLOR"; public static final String SIGNAL1_COLOR="SIGNAL1_COLOR";
/** The Constant SIGNALZ_COLOR. */
public static final String SIGNALZ_COLOR="SIGNALZ_COLOR"; public static final String SIGNALZ_COLOR="SIGNALZ_COLOR";
/** The Constant SIGNALX_COLOR. */
public static final String SIGNALX_COLOR="SIGNALX_COLOR"; public static final String SIGNALX_COLOR="SIGNALX_COLOR";
/** The Constant SIGNAL_TEXT_COLOR. */
public static final String SIGNAL_TEXT_COLOR="SIGNAL_TEXT_COLOR"; public static final String SIGNAL_TEXT_COLOR="SIGNAL_TEXT_COLOR";
/** The Constant CURSOR_COLOR. */
public static final String CURSOR_COLOR="CURSOR_COLOR"; public static final String CURSOR_COLOR="CURSOR_COLOR";
/** The Constant CURSOR_DRAG_COLOR. */
public static final String CURSOR_DRAG_COLOR="CURSOR_DRAG_COLOR"; public static final String CURSOR_DRAG_COLOR="CURSOR_DRAG_COLOR";
/** The Constant CURSOR_TEXT_COLOR. */
public static final String CURSOR_TEXT_COLOR="CURSOR_TEXT_COLOR"; public static final String CURSOR_TEXT_COLOR="CURSOR_TEXT_COLOR";
/** The Constant MARKER_COLOR. */
public static final String MARKER_COLOR="MARKER_COLOR"; public static final String MARKER_COLOR="MARKER_COLOR";
/** The Constant MARKER_TEXT_COLOR. */
public static final String MARKER_TEXT_COLOR="MARKER_TEXT_COLOR"; public static final String MARKER_TEXT_COLOR="MARKER_TEXT_COLOR";

View File

@ -13,13 +13,22 @@ package com.minres.scviewer.e4.application.preferences;
import org.eclipse.jface.preference.BooleanFieldEditor; import org.eclipse.jface.preference.BooleanFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.FieldEditorPreferencePage;
/** A sample preference page to show how it works */
/**
* The Class SCViewerPreferencesPage showing the SCViewer top preferences.
*/
public class SCViewerPreferencesPage extends FieldEditorPreferencePage { public class SCViewerPreferencesPage extends FieldEditorPreferencePage {
/**
* Instantiates a new SC viewer preferences page.
*/
public SCViewerPreferencesPage() { public SCViewerPreferencesPage() {
super(GRID); super(GRID);
} }
/* (non-Javadoc)
* @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
*/
@Override @Override
protected void createFieldEditors() { protected void createFieldEditors() {

View File

@ -15,13 +15,21 @@ import org.eclipse.jface.preference.FieldEditorPreferencePage;
import com.minres.scviewer.database.ui.WaveformColors; import com.minres.scviewer.database.ui.WaveformColors;
/** A sample preference page to show how it works */ /**
* The WaveformView preference page to show the colors to use.
*/
public class WaveformPreferencesPage extends FieldEditorPreferencePage { public class WaveformPreferencesPage extends FieldEditorPreferencePage {
/**
* Instantiates a new waveform preferences page.
*/
public WaveformPreferencesPage() { public WaveformPreferencesPage() {
super(GRID); super(GRID);
} }
/* (non-Javadoc)
* @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
*/
@Override @Override
protected void createFieldEditors() { protected void createFieldEditors() {

View File

@ -20,30 +20,52 @@ import com.google.common.base.Predicate;
import com.google.common.collect.Collections2; import com.google.common.collect.Collections2;
import com.minres.scviewer.database.IHierNode; import com.minres.scviewer.database.IHierNode;
import com.minres.scviewer.database.IWaveform; import com.minres.scviewer.database.IWaveform;
import com.minres.scviewer.database.IWaveformDb;
/**
* The Class TxDbContentProvider providing the tree content of a database for the respective viewer.
*/
public class TxDbContentProvider implements ITreeContentProvider { public class TxDbContentProvider implements ITreeContentProvider {
/** The show nodes. */
// private List<HierNode> nodes; // private List<HierNode> nodes;
private boolean showNodes; private boolean showNodes;
/**
* Instantiates a new tx db content provider.
*/
public TxDbContentProvider() { public TxDbContentProvider() {
super(); super();
this.showNodes = false; this.showNodes = false;
} }
/**
* Instantiates a new tx db content provider.
*
* @param showNodes the show nodes
*/
public TxDbContentProvider(boolean showNodes) { public TxDbContentProvider(boolean showNodes) {
super(); super();
this.showNodes = showNodes; this.showNodes = showNodes;
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
@Override @Override
public void dispose() { } public void dispose() { }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
*/
@Override @Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
// showNodes=!(newInput instanceof IHierNode); // showNodes=!(newInput instanceof IHierNode);
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#getElements(java.lang.Object)
*/
@Override @Override
public Object[] getElements(Object inputElement) { public Object[] getElements(Object inputElement) {
if(inputElement instanceof IHierNode){ if(inputElement instanceof IHierNode){
@ -58,22 +80,33 @@ public class TxDbContentProvider implements ITreeContentProvider {
} }
}); });
return res.toArray(); return res.toArray();
}else if(inputElement instanceof List<?>) }else if(inputElement instanceof List<?>){
return ((List<?>)inputElement).toArray(); return ((List<?>)inputElement).toArray();
else }else if(inputElement instanceof IWaveformDb){
return new Object[]{};
} else
return null; return null;
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(java.lang.Object)
*/
@Override @Override
public Object[] getChildren(Object parentElement) { public Object[] getChildren(Object parentElement) {
return getElements(parentElement); return getElements(parentElement);
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(java.lang.Object)
*/
@Override @Override
public Object getParent(Object element) { public Object getParent(Object element) {
return null; return null;
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(java.lang.Object)
*/
@Override @Override
public boolean hasChildren(Object element) { public boolean hasChildren(Object element) {
Object[] obj = getElements(element); Object[] obj = getElements(element);

View File

@ -23,16 +23,26 @@ import com.minres.scviewer.database.ISignal;
import com.minres.scviewer.database.ISignalChangeMulti; import com.minres.scviewer.database.ISignalChangeMulti;
import com.minres.scviewer.database.ITxStream; import com.minres.scviewer.database.ITxStream;
import com.minres.scviewer.database.IWaveformDb; import com.minres.scviewer.database.IWaveformDb;
import com.minres.scviewer.e4.application.parts.LoadingWaveformDb;
/**
* The Class TxDbLabelProvider providing the labels for the respective viewers.
*/
public class TxDbLabelProvider implements ILabelProvider { public class TxDbLabelProvider implements ILabelProvider {
/** The listeners. */
private List<ILabelProviderListener> listeners = new ArrayList<ILabelProviderListener>(); private List<ILabelProviderListener> listeners = new ArrayList<ILabelProviderListener>();
private Image database, stream, signal, folder, wave; /** The wave. */
private Image loadinDatabase, database, stream, signal, folder, wave;
/**
* Instantiates a new tx db label provider.
*/
public TxDbLabelProvider() { public TxDbLabelProvider() {
super(); super();
loadinDatabase=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/database_go.png");
database=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/database.png"); database=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/database.png");
stream=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/stream.png"); stream=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/stream.png");
folder=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/folder.png"); folder=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/folder.png");
@ -40,13 +50,20 @@ public class TxDbLabelProvider implements ILabelProvider {
wave=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/wave.png"); wave=ResourceManager.getPluginImage("com.minres.scviewer.e4.application", "icons/wave.png");
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
@Override @Override
public void addListener(ILabelProviderListener listener) { public void addListener(ILabelProviderListener listener) {
listeners.add(listener); listeners.add(listener);
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
*/
@Override @Override
public void dispose() { public void dispose() {
if(loadinDatabase!=null) database.dispose();
if(database!=null) database.dispose(); if(database!=null) database.dispose();
if(stream!=null) stream.dispose(); if(stream!=null) stream.dispose();
if(folder!=null) folder.dispose(); if(folder!=null) folder.dispose();
@ -54,20 +71,32 @@ public class TxDbLabelProvider implements ILabelProvider {
if(wave!=null) wave.dispose(); if(wave!=null) wave.dispose();
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
*/
@Override @Override
public boolean isLabelProperty(Object element, String property) { public boolean isLabelProperty(Object element, String property) {
return false; return false;
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
@Override @Override
public void removeListener(ILabelProviderListener listener) { public void removeListener(ILabelProviderListener listener) {
listeners.remove(listener); listeners.remove(listener);
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object)
*/
@Override @Override
public Image getImage(Object element) { public Image getImage(Object element) {
if(element instanceof IWaveformDb){ if(element instanceof IWaveformDb){
return database; if(element instanceof LoadingWaveformDb)
return loadinDatabase;
else
return database;
}else if(element instanceof ITxStream){ }else if(element instanceof ITxStream){
return stream; return stream;
}else if(element instanceof ISignal<?>){ }else if(element instanceof ISignal<?>){
@ -82,6 +111,9 @@ public class TxDbLabelProvider implements ILabelProvider {
return null; return null;
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object)
*/
@Override @Override
public String getText(Object element) { public String getText(Object element) {
return ((IHierNode)element).getName(); return ((IHierNode)element).getName();

View File

@ -21,19 +21,32 @@ import com.minres.scviewer.database.IHierNode;
import com.minres.scviewer.database.ITx; import com.minres.scviewer.database.ITx;
import com.minres.scviewer.database.ITxAttribute; import com.minres.scviewer.database.ITxAttribute;
/**
* The Class TxPropertiesContentProvider. Not used atm
*/
public class TxPropertiesContentProvider implements IStructuredContentProvider { public class TxPropertiesContentProvider implements IStructuredContentProvider {
/** The show nodes. */
// private List<HierNode> nodes; // private List<HierNode> nodes;
private boolean showNodes=false; private boolean showNodes=false;
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
@Override @Override
public void dispose() { } public void dispose() { }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object)
*/
@Override @Override
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
showNodes=!(newInput instanceof IHierNode); showNodes=!(newInput instanceof IHierNode);
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(java.lang.Object)
*/
@Override @Override
public Object[] getElements(Object inputElement) { public Object[] getElements(Object inputElement) {
if(inputElement instanceof ITx){ if(inputElement instanceof ITx){

View File

@ -20,38 +20,63 @@ import org.eclipse.swt.graphics.Image;
import com.minres.scviewer.database.ITxAttribute; import com.minres.scviewer.database.ITxAttribute;
import com.minres.scviewer.e4.application.parts.TransactionDetails; import com.minres.scviewer.e4.application.parts.TransactionDetails;
/**
* The Class TxPropertiesLabelProvider providing the labels of a property to the respective viewer.
*/
public class TxPropertiesLabelProvider implements ITableLabelProvider { public class TxPropertiesLabelProvider implements ITableLabelProvider {
/** The listeners. */
private List<ILabelProviderListener> listeners = new ArrayList<ILabelProviderListener>(); private List<ILabelProviderListener> listeners = new ArrayList<ILabelProviderListener>();
/**
* Instantiates a new tx properties label provider.
*/
public TxPropertiesLabelProvider() { public TxPropertiesLabelProvider() {
super(); super();
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#dispose()
*/
@Override @Override
public void dispose() { public void dispose() {
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#addListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
@Override @Override
public void addListener(ILabelProviderListener listener) { public void addListener(ILabelProviderListener listener) {
listeners.add(listener); listeners.add(listener);
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#removeListener(org.eclipse.jface.viewers.ILabelProviderListener)
*/
@Override @Override
public void removeListener(ILabelProviderListener listener) { public void removeListener(ILabelProviderListener listener) {
listeners.remove(listener); listeners.remove(listener);
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IBaseLabelProvider#isLabelProperty(java.lang.Object, java.lang.String)
*/
@Override @Override
public boolean isLabelProperty(Object element, String property) { public boolean isLabelProperty(Object element, String property) {
return false; return false;
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
*/
@Override @Override
public Image getColumnImage(Object element, int columnIndex) { public Image getColumnImage(Object element, int columnIndex) {
return null; return null;
} }
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
*/
@Override @Override
public String getColumnText(Object element, int columnIndex) { public String getColumnText(Object element, int columnIndex) {
ITxAttribute attribute = (ITxAttribute) element; ITxAttribute attribute = (ITxAttribute) element;

View File

@ -1,34 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
<booleanAttribute key="append.args" value="true"/>
<stringAttribute key="application" value="org.eclipse.e4.ui.workbench.swt.E4Application"/>
<booleanAttribute key="askclear" value="false"/>
<booleanAttribute key="automaticAdd" value="false"/>
<booleanAttribute key="automaticValidate" value="false"/>
<stringAttribute key="bootstrap" value=""/>
<stringAttribute key="checked" value="[NONE]"/>
<booleanAttribute key="clearConfig" value="false"/>
<booleanAttribute key="clearws" value="true"/>
<booleanAttribute key="clearwslog" value="false"/>
<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/SCViewer"/>
<booleanAttribute key="default" value="false"/>
<booleanAttribute key="includeOptional" value="true"/>
<stringAttribute key="location" value="${workspace_loc}/../runtime-com.minres.scviewer.e4.application.product"/>
<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -clearPersistedState /Users/eyck/Workspaces/cpp/tlm_router01/top.txlog"/>
<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xms40m -Xmx512m -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts"/>
<stringAttribute key="pde.version" value="3.3"/>
<stringAttribute key="product" value="com.minres.scviewer.e4.application.product"/>
<stringAttribute key="productFile" value="/com.minres.scviewer.e4.application/com.minres.scviewer.e4.application.product"/>
<stringAttribute key="selected_target_plugins" value="com.google.guava@default:default,com.ibm.icu@default:default,javax.annotation@default:default,javax.inject@default:default,javax.servlet@default:default,javax.xml@default:default,org.apache.ant@default:default,org.apache.batik.css@default:default,org.apache.batik.util.gui@default:default,org.apache.batik.util@default:default,org.apache.commons.jxpath@default:default,org.apache.commons.logging@default:default,org.apache.felix.gogo.command@default:default,org.apache.felix.gogo.runtime@default:default,org.apache.felix.gogo.shell@default:default,org.codehaus.groovy@default:default,org.eclipse.ant.core@default:default,org.eclipse.compare.core@default:default,org.eclipse.core.commands@default:default,org.eclipse.core.contenttype@default:default,org.eclipse.core.databinding.beans@default:default,org.eclipse.core.databinding.observable@default:default,org.eclipse.core.databinding.property@default:default,org.eclipse.core.databinding@default:default,org.eclipse.core.expressions@default:default,org.eclipse.core.filesystem.java7@default:false,org.eclipse.core.filesystem.macosx@default:false,org.eclipse.core.filesystem@default:default,org.eclipse.core.jobs@default:default,org.eclipse.core.resources@default:default,org.eclipse.core.runtime.compatibility.registry@default:false,org.eclipse.core.runtime@default:true,org.eclipse.core.variables@default:default,org.eclipse.e4.core.commands@default:default,org.eclipse.e4.core.contexts@default:default,org.eclipse.e4.core.di.annotations@default:default,org.eclipse.e4.core.di.extensions@default:default,org.eclipse.e4.core.di@default:default,org.eclipse.e4.core.services@default:default,org.eclipse.e4.emf.xpath@default:default,org.eclipse.e4.ui.bindings@default:default,org.eclipse.e4.ui.css.core@default:default,org.eclipse.e4.ui.css.swt.theme@default:default,org.eclipse.e4.ui.css.swt@default:default,org.eclipse.e4.ui.di@default:default,org.eclipse.e4.ui.model.workbench@default:default,org.eclipse.e4.ui.services@default:default,org.eclipse.e4.ui.widgets@default:default,org.eclipse.e4.ui.workbench.addons.swt@default:default,org.eclipse.e4.ui.workbench.renderers.swt.cocoa@default:false,org.eclipse.e4.ui.workbench.renderers.swt@default:default,org.eclipse.e4.ui.workbench.swt@default:default,org.eclipse.e4.ui.workbench3@default:default,org.eclipse.e4.ui.workbench@default:default,org.eclipse.emf.common@default:default,org.eclipse.emf.ecore.change@default:default,org.eclipse.emf.ecore.xmi@default:default,org.eclipse.emf.ecore@default:default,org.eclipse.equinox.app@default:default,org.eclipse.equinox.bidi@default:default,org.eclipse.equinox.common@2:true,org.eclipse.equinox.concurrent@default:default,org.eclipse.equinox.console@default:default,org.eclipse.equinox.ds@1:true,org.eclipse.equinox.event@default:default,org.eclipse.equinox.preferences@default:default,org.eclipse.equinox.registry@default:default,org.eclipse.equinox.util@default:default,org.eclipse.help@default:default,org.eclipse.jface.databinding@default:default,org.eclipse.jface.text@default:default,org.eclipse.jface@default:default,org.eclipse.osgi.compatibility.state@default:false,org.eclipse.osgi.services@default:default,org.eclipse.osgi@-1:true,org.eclipse.swt.cocoa.macosx.x86_64@default:false,org.eclipse.swt@default:default,org.eclipse.team.core@default:default,org.eclipse.text@default:default,org.hamcrest.core@default:default,org.junit@default:default,org.w3c.css.sac@default:default,org.w3c.dom.events@default:default,org.w3c.dom.smil@default:default,org.w3c.dom.svg@default:default"/>
<stringAttribute key="selected_workspace_plugins" value="com.minres.scviewer.database.sqlite@default:default,com.minres.scviewer.database.text@default:default,com.minres.scviewer.database.ui.swt@default:default,com.minres.scviewer.database.ui@default:default,com.minres.scviewer.database.vcd@default:default,com.minres.scviewer.database@default:default,com.minres.scviewer.e4.application@default:default,com.opcoach.e4.preferences@default:default"/>
<booleanAttribute key="show_selected_only" value="false"/>
<booleanAttribute key="tracing" value="false"/>
<booleanAttribute key="useCustomFeatures" value="false"/>
<booleanAttribute key="useDefaultConfig" value="true"/>
<booleanAttribute key="useDefaultConfigArea" value="true"/>
<booleanAttribute key="useProduct" value="true"/>
<booleanAttribute key="usefeatures" value="false"/>
</launchConfiguration>

View File

@ -7,7 +7,7 @@
</configIni> </configIni>
<launcherArgs> <launcherArgs>
<programArgs>-clearPersistedState <programArgs>-clearPersistedState -data @none
</programArgs> </programArgs>
<vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts
</vmArgsMac> </vmArgsMac>