diff --git a/.project b/.project
deleted file mode 100644
index a68889f..0000000
--- a/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
- com.minres.scviewer.parent
-
-
-
-
-
- org.eclipse.m2e.core.maven2Builder
-
-
-
-
-
- org.eclipse.m2e.core.maven2Nature
-
-
diff --git a/README.md b/README.md
index 924b76d..589cc20 100644
--- a/README.md
+++ b/README.md
@@ -18,9 +18,7 @@ The viewer has the following features
- sqlite based
- visualization of transaction relations
-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
-installed.
+To build the plugins the Eclipse SDK or PDE can be used.
Key Shortcuts
=============
diff --git a/features/com.minres.scviewer.database.feature/pom.xml b/features/com.minres.scviewer.database.feature/pom.xml
index 0b7d1f8..7b9aad3 100644
--- a/features/com.minres.scviewer.database.feature/pom.xml
+++ b/features/com.minres.scviewer.database.feature/pom.xml
@@ -5,7 +5,7 @@
com.minres.scviewer
com.minres.scviewer.parent
- 2.13.2
+ 2.14.0
../../..
3.0.0-SNAPSHOT
diff --git a/features/com.minres.scviewer.e4.feature/pom.xml b/features/com.minres.scviewer.e4.feature/pom.xml
index ed63681..0d5d210 100644
--- a/features/com.minres.scviewer.e4.feature/pom.xml
+++ b/features/com.minres.scviewer.e4.feature/pom.xml
@@ -5,7 +5,7 @@
com.minres.scviewer
com.minres.scviewer.parent
- 2.13.2
+ 2.14.0
../../..
1.1.0-SNAPSHOT
diff --git a/features/com.minres.scviewer.e4.platform.feature/pom.xml b/features/com.minres.scviewer.e4.platform.feature/pom.xml
index e138214..a58ba0a 100644
--- a/features/com.minres.scviewer.e4.platform.feature/pom.xml
+++ b/features/com.minres.scviewer.e4.platform.feature/pom.xml
@@ -5,7 +5,7 @@
com.minres.scviewer
com.minres.scviewer.parent
- 2.13.2
+ 2.14.0
../../..
1.0.0-SNAPSHOT
diff --git a/features/com.minres.scviewer.feature/pom.xml b/features/com.minres.scviewer.feature/pom.xml
index a1f501d..06aabf5 100644
--- a/features/com.minres.scviewer.feature/pom.xml
+++ b/features/com.minres.scviewer.feature/pom.xml
@@ -5,7 +5,7 @@
com.minres.scviewer
com.minres.scviewer.parent
- 2.13.2
+ 2.14.0
../../..
1.1.0-SNAPSHOT
diff --git a/features/com.minres.scviewer.ui.feature/pom.xml b/features/com.minres.scviewer.ui.feature/pom.xml
index 7975438..a15a59f 100644
--- a/features/com.minres.scviewer.ui.feature/pom.xml
+++ b/features/com.minres.scviewer.ui.feature/pom.xml
@@ -5,7 +5,7 @@
com.minres.scviewer
com.minres.scviewer.parent
- 2.13.2
+ 2.14.0
../../..
1.1.0-SNAPSHOT
diff --git a/plugins/com.minres.scviewer.database.sqlite/pom.xml b/plugins/com.minres.scviewer.database.sqlite/pom.xml
index 0c3dc59..87129d8 100644
--- a/plugins/com.minres.scviewer.database.sqlite/pom.xml
+++ b/plugins/com.minres.scviewer.database.sqlite/pom.xml
@@ -4,7 +4,7 @@
com.minres.scviewer
com.minres.scviewer.parent
- 2.13.2
+ 2.14.0
../../..
eclipse-plugin
diff --git a/plugins/com.minres.scviewer.database.text/pom.xml b/plugins/com.minres.scviewer.database.text/pom.xml
index 057b481..98547d3 100644
--- a/plugins/com.minres.scviewer.database.text/pom.xml
+++ b/plugins/com.minres.scviewer.database.text/pom.xml
@@ -6,7 +6,7 @@
com.minres.scviewer
com.minres.scviewer.parent
- 2.13.2
+ 2.14.0
../../..
eclipse-plugin
diff --git a/plugins/com.minres.scviewer.database.ui.swt/pom.xml b/plugins/com.minres.scviewer.database.ui.swt/pom.xml
index 639d25d..62d3e25 100644
--- a/plugins/com.minres.scviewer.database.ui.swt/pom.xml
+++ b/plugins/com.minres.scviewer.database.ui.swt/pom.xml
@@ -5,7 +5,7 @@
com.minres.scviewer
com.minres.scviewer.parent
- 2.13.2
+ 2.14.0
../../..
4.0.0-SNAPSHOT
diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformCanvas.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformCanvas.java
index c3839c6..05bf89e 100644
--- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformCanvas.java
+++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformCanvas.java
@@ -180,7 +180,13 @@ public class WaveformCanvas extends Canvas {
public void setZoomLevel(int level, long centerTime) {
if(level<0) {
- level = findFitZoomLevel();
+ if(level<-1) {
+ long cTime = getCursorPainters().get(0).getTime();
+ long time_diff = centerTime>cTime?centerTime-cTime:cTime-centerTime;
+ level = findFitZoomLevel(time_diff);
+ centerTime = (centerTime>cTime?cTime:centerTime)+time_diff/2;
+ } else
+ level = findFitZoomLevel(maxTime);
if(level<0) level = 0;
}
//FIXME: keep center if zoom-out and cursor is not in view
@@ -211,7 +217,7 @@ public class WaveformCanvas extends Canvas {
}
}
- private int findFitZoomLevel() {
+ private int findFitZoomLevel(long timeRange) {
//get area actually capable of displaying data, i.e. area of the receiver which is capable of displaying data
Rectangle clientArea = getClientArea();
long clientAreaWidth = clientArea.width;
@@ -221,7 +227,7 @@ public class WaveformCanvas extends Canvas {
for (int multiplier=0; multiplier= maxTime)
+ if(scaleFactor*clientAreaWidth >= timeRange)
return tempLevel;
}
magnitude_factor*=1000;
diff --git a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformView.java b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformView.java
index e1984fd..d4cf7cd 100644
--- a/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformView.java
+++ b/plugins/com.minres.scviewer.database.ui.swt/src/com/minres/scviewer/database/ui/swt/internal/WaveformView.java
@@ -125,6 +125,12 @@ public class WaveformView implements IWaveformView {
protected ObservableList streams;
+ private boolean waveformsContainTx=false;
+
+ public boolean isWaveformsContainTx() {
+ return waveformsContainTx;
+ }
+
int selectedMarker = 0;
private int tracksVerticalHeight;
@@ -515,6 +521,7 @@ public class WaveformView implements IWaveformView {
boolean even = true;
TextLayout tl = new TextLayout(waveformCanvas.getDisplay());
tl.setFont(styleProvider.getNameFont());
+ waveformsContainTx=false;
for (TrackEntry streamEntry : streams) {
streamEntry.height = styleProvider.getTrackHeight();
streamEntry.vOffset = tracksVerticalHeight;
@@ -522,6 +529,7 @@ public class WaveformView implements IWaveformView {
streamEntry.currentValue = "";
streamEntry.height *= streamEntry.waveform.getRowCount();
painter = new StreamPainter(waveformCanvas, even, streamEntry);
+ waveformsContainTx=true;
} else if (streamEntry.waveform.getType() == WaveformType.SIGNAL) {
streamEntry.currentValue = "---";
painter = new SignalPainter(waveformCanvas, even, streamEntry);
@@ -1147,8 +1155,12 @@ public class WaveformView implements IWaveformView {
*/
@Override
public void setZoomLevel(int scale) {
- waveformCanvas.setZoomLevel(scale);
- waveformCanvas.reveal(getCursorTime());
+ if(scale<-1) {
+ waveformCanvas.setZoomLevel(scale, getMarkerTime(selectedMarker));
+ } else {
+ waveformCanvas.setZoomLevel(scale);
+ waveformCanvas.reveal(getCursorTime());
+ }
}
/*
@@ -1554,14 +1566,4 @@ public class WaveformView implements IWaveformView {
getStreamList().add(idx, e);
return e;
}
-
-
-
-
-
-
-
-
-
-
}
diff --git a/plugins/com.minres.scviewer.database.vcd/pom.xml b/plugins/com.minres.scviewer.database.vcd/pom.xml
index 51e769c..36e05fb 100644
--- a/plugins/com.minres.scviewer.database.vcd/pom.xml
+++ b/plugins/com.minres.scviewer.database.vcd/pom.xml
@@ -5,7 +5,7 @@
com.minres.scviewer
com.minres.scviewer.parent
- 2.13.2
+ 2.14.0
../../..
eclipse-plugin
diff --git a/plugins/com.minres.scviewer.database/pom.xml b/plugins/com.minres.scviewer.database/pom.xml
index 002335e..ea264f2 100644
--- a/plugins/com.minres.scviewer.database/pom.xml
+++ b/plugins/com.minres.scviewer.database/pom.xml
@@ -4,7 +4,7 @@
com.minres.scviewer
com.minres.scviewer.parent
- 2.13.2
+ 2.14.0
../../..
eclipse-plugin
diff --git a/plugins/com.minres.scviewer.e4.application/Application.e4xmi b/plugins/com.minres.scviewer.e4.application/Application.e4xmi
index 85f4ea6..90b71f5 100644
--- a/plugins/com.minres.scviewer.e4.application/Application.e4xmi
+++ b/plugins/com.minres.scviewer.e4.application/Application.e4xmi
@@ -102,19 +102,25 @@
-
-
+
+
+
+
+
-
+
-
+
-
+
+ EnableTxDetails
+
+
EnableHover
@@ -137,11 +143,12 @@
-
+
+
type:user
@@ -284,6 +291,7 @@
+
diff --git a/plugins/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF b/plugins/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF
index a8941e9..aa8d0d8 100644
--- a/plugins/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF
+++ b/plugins/com.minres.scviewer.e4.application/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@ Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: com.minres.scviewer.e4.application;singleton:=true
-Bundle-Version: 2.13.2
+Bundle-Version: 2.14.0
Bundle-Vendor: %Bundle-Vendor
Require-Bundle: javax.inject;bundle-version="1.0.0",
org.eclipse.core.runtime;bundle-version="3.11.1",
diff --git a/plugins/com.minres.scviewer.e4.application/icons/application_side_contract.png b/plugins/com.minres.scviewer.e4.application/icons/application_side_contract.png
new file mode 100644
index 0000000..3585f94
Binary files /dev/null and b/plugins/com.minres.scviewer.e4.application/icons/application_side_contract.png differ
diff --git a/plugins/com.minres.scviewer.e4.application/icons/application_side_expand.png b/plugins/com.minres.scviewer.e4.application/icons/application_side_expand.png
new file mode 100644
index 0000000..030cf7c
Binary files /dev/null and b/plugins/com.minres.scviewer.e4.application/icons/application_side_expand.png differ
diff --git a/plugins/com.minres.scviewer.e4.application/icons/zoom_fit.png b/plugins/com.minres.scviewer.e4.application/icons/zoom_fit.png
new file mode 100644
index 0000000..5a28592
Binary files /dev/null and b/plugins/com.minres.scviewer.e4.application/icons/zoom_fit.png differ
diff --git a/plugins/com.minres.scviewer.e4.application/icons/zoom_full.png b/plugins/com.minres.scviewer.e4.application/icons/zoom_full.png
new file mode 100644
index 0000000..e4a9ec2
Binary files /dev/null and b/plugins/com.minres.scviewer.e4.application/icons/zoom_full.png differ
diff --git a/plugins/com.minres.scviewer.e4.application/pom.xml b/plugins/com.minres.scviewer.e4.application/pom.xml
index d9c7b42..c6aa376 100644
--- a/plugins/com.minres.scviewer.e4.application/pom.xml
+++ b/plugins/com.minres.scviewer.e4.application/pom.xml
@@ -6,7 +6,7 @@
com.minres.scviewer
com.minres.scviewer.parent
- 2.13.2
+ 2.14.0
../../..
eclipse-plugin
diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/Messages.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/Messages.java
index 0bb7585..3ca4467 100644
--- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/Messages.java
+++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/Messages.java
@@ -24,6 +24,7 @@ public class Messages extends NLS {
public static String SCViewerPreferencesPage_0;
public static String SCViewerPreferencesPage_1;
public static String SCViewerPreferencesPage_2;
+ public static String SCViewerPreferencesPage_3;
public static String StatusBarControl_1;
public static String StatusBarControl_2;
public static String StatusBarControl_3;
@@ -82,6 +83,14 @@ public class Messages extends NLS {
public static String cursor;
public static String cursor_drag;
public static String cursor_text;
+ public static String HelpDialog_0;
+ public static String HelpDialog_1;
+ public static String HelpDialog_2;
+ public static String HelpDialog_3;
+ public static String HelpDialog_4;
+ public static String HelpDialog_5;
+ public static String HelpDialog_6;
+ public static String HelpDialog_7;
public static String marker;
public static String marker_text;
public static String rel_arrow;
diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/EnableTxDetails.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/EnableTxDetails.java
new file mode 100644
index 0000000..217c1dc
--- /dev/null
+++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/EnableTxDetails.java
@@ -0,0 +1,57 @@
+
+package com.minres.scviewer.e4.application.handlers;
+
+import java.util.LinkedList;
+import java.util.List;
+
+import javax.inject.Inject;
+
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.core.di.annotations.Optional;
+import org.eclipse.e4.core.di.extensions.Preference;
+import org.eclipse.e4.ui.model.application.MApplication;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledItem;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.osgi.service.prefs.BackingStoreException;
+
+import com.minres.scviewer.e4.application.preferences.PreferenceConstants;
+
+@SuppressWarnings("restriction")
+public class EnableTxDetails {
+ static final String TAG_NAME = "EnableTxDetails"; //$NON-NLS-1$
+
+ static final String ICON_DISABLED = "platform:/plugin/com.minres.scviewer.e4.application/icons/application_side_expand.png"; //$NON-NLS-1$
+ static final String ICON_ENABLED = "platform:/plugin/com.minres.scviewer.e4.application/icons/application_side_contract.png"; //$NON-NLS-1$
+ static final String TOOLTIP_DISABLED = "Show tx details parts";
+ static final String TOOLTIP_ENABLED = "Hide tx details parts";
+
+ @Inject
+ MApplication application;
+
+ @Inject
+ EPartService partService;
+
+ @Inject
+ @Optional
+ public void reactOnShowHoverChange(EModelService modelService, @Preference(value = PreferenceConstants.SHOW_TX_DETAILS) Boolean show) {
+ List tags = new LinkedList<>();
+ tags.add(TAG_NAME);
+ List elements = modelService.findElements(application, null, MHandledItem.class, tags );
+ for( MHandledItem hi : elements ){
+ hi.setSelected(show);
+ hi.setIconURI(show?ICON_ENABLED:ICON_DISABLED);
+ hi.setTooltip(show?TOOLTIP_ENABLED:TOOLTIP_DISABLED);
+ }
+ }
+
+ @Execute
+ public void execute(MHandledItem handledItem, @Preference(nodePath = PreferenceConstants.PREFERENCES_SCOPE) IEclipsePreferences prefs ) {
+ try {
+ prefs.putBoolean(PreferenceConstants.SHOW_TX_DETAILS, handledItem.isSelected());
+ prefs.flush();
+ } catch (BackingStoreException e) {}
+ }
+
+}
\ No newline at end of file
diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/ZoomHandler.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/ZoomHandler.java
index 4bae012..a632a23 100644
--- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/ZoomHandler.java
+++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/handlers/ZoomHandler.java
@@ -42,6 +42,8 @@ public class ZoomHandler {
waveformViewerPart.setZoomLevel(zoomLevel+1);
else if("fit".equalsIgnoreCase(level)) //$NON-NLS-1$
waveformViewerPart.setZoomFit();
+ else if("full".equalsIgnoreCase(level)) //$NON-NLS-1$
+ waveformViewerPart.setZoomFull();
}
}
diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/messages.properties b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/messages.properties
index 52d9c0c..a8fff7f 100644
--- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/messages.properties
+++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/messages.properties
@@ -18,6 +18,7 @@ ResourceManager_0=Wrong decorate corner
SCViewerPreferencesPage_0=Check for changed database
SCViewerPreferencesPage_1=Show hover window in waveform
SCViewerPreferencesPage_2=Waveform track height
+SCViewerPreferencesPage_3=Show tx details in waveform
StatusBarControl_1=Currently running:
StatusBarControl_2=\nLast task:
StatusBarControl_3=Currently running:
@@ -76,6 +77,14 @@ signal_nan=Signal NaN Value
cursor=Cursor
cursor_drag=dragged Cursor
cursor_text=Cursor Text
+HelpDialog_0=Back
+HelpDialog_1=Forward
+HelpDialog_2=Stop
+HelpDialog_3=Refresh
+HelpDialog_4=Go
+HelpDialog_5=Address
+HelpDialog_6=https://git.minres.com/VP-Tools/SCViewer/src/branch/master/README.md\#key-shortcuts
+HelpDialog_7=Could not instantiate Browser:
marker=Marker
marker_text=Marker TExt
rel_arrow=Relation arrow
diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/HelpDialog.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/HelpDialog.java
index e6b97f4..749ab42 100644
--- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/HelpDialog.java
+++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/HelpDialog.java
@@ -24,6 +24,8 @@ import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
+import com.minres.scviewer.e4.application.Messages;
+
public class HelpDialog extends Dialog {
/**
* Create the dialog.
@@ -61,22 +63,22 @@ public class HelpDialog extends Dialog {
container.setLayout(gridLayout);
ToolBar toolbar = new ToolBar(container, SWT.NONE);
ToolItem itemBack = new ToolItem(toolbar, SWT.PUSH);
- itemBack.setText("Back");
+ itemBack.setText(Messages.HelpDialog_0);
ToolItem itemForward = new ToolItem(toolbar, SWT.PUSH);
- itemForward.setText("Forward");
+ itemForward.setText(Messages.HelpDialog_1);
ToolItem itemStop = new ToolItem(toolbar, SWT.PUSH);
- itemStop.setText("Stop");
+ itemStop.setText(Messages.HelpDialog_2);
ToolItem itemRefresh = new ToolItem(toolbar, SWT.PUSH);
- itemRefresh.setText("Refresh");
+ itemRefresh.setText(Messages.HelpDialog_3);
ToolItem itemGo = new ToolItem(toolbar, SWT.PUSH);
- itemGo.setText("Go");
+ itemGo.setText(Messages.HelpDialog_4);
GridData data = new GridData();
data.horizontalSpan = 3;
toolbar.setLayoutData(data);
Label labelAddress = new Label(container, SWT.NONE);
- labelAddress.setText("Address");
+ labelAddress.setText(Messages.HelpDialog_5);
final Text location = new Text(container, SWT.BORDER);
data = new GridData();
@@ -112,15 +114,15 @@ public class HelpDialog extends Dialog {
Listener listener = event -> {
ToolItem item = (ToolItem) event.widget;
String string = item.getText();
- if (string.equals("Back"))
+ if (string.equals(Messages.HelpDialog_0))
browser.back();
- else if (string.equals("Forward"))
+ else if (string.equals(Messages.HelpDialog_1))
browser.forward();
- else if (string.equals("Stop"))
+ else if (string.equals(Messages.HelpDialog_2))
browser.stop();
- else if (string.equals("Refresh"))
+ else if (string.equals(Messages.HelpDialog_3))
browser.refresh();
- else if (string.equals("Go"))
+ else if (string.equals(Messages.HelpDialog_4))
browser.setUrl(location.getText());
};
browser.addProgressListener(new ProgressListener() {
@@ -147,9 +149,9 @@ public class HelpDialog extends Dialog {
itemGo.addListener(SWT.Selection, listener);
location.addListener(SWT.DefaultSelection, e -> browser.setUrl(location.getText()));
- browser.setUrl("http://eclipse.org");
+ browser.setUrl(Messages.HelpDialog_6);
} catch (SWTError e) {
- System.out.println("Could not instantiate Browser: " + e.getMessage());
+ System.out.println(Messages.HelpDialog_7 + e.getMessage());
}
return container;
}
diff --git a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java
index 387dae6..076f682 100644
--- a/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java
+++ b/plugins/com.minres.scviewer.e4.application/src/com/minres/scviewer/e4/application/parts/WaveformViewer.java
@@ -74,6 +74,7 @@ import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.Widget;
+import org.osgi.service.prefs.BackingStoreException;
import com.minres.scviewer.database.DataType;
import com.minres.scviewer.database.IHierNode;
@@ -82,6 +83,7 @@ import com.minres.scviewer.database.IWaveformDb;
import com.minres.scviewer.database.IWaveformDbFactory;
import com.minres.scviewer.database.RelationType;
import com.minres.scviewer.database.RelationTypeFactory;
+import com.minres.scviewer.database.WaveformType;
import com.minres.scviewer.database.tx.ITx;
import com.minres.scviewer.database.tx.ITxAttribute;
import com.minres.scviewer.database.tx.ITxEvent;
@@ -117,35 +119,38 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
/** The Constant DATABASE_FILE. */
protected static final String DATABASE_FILE = "DATABASE_FILE"; //$NON-NLS-1$
-
+
/** The Constant SHOWN_WAVEFORM. */
protected static final String SHOWN_WAVEFORM = "SHOWN_WAVEFORM"; //$NON-NLS-1$
-
+
protected static final String VALUE_DISPLAY = ".VALUE_DISPLAY"; //$NON-NLS-1$
-
+
protected static final String WAVE_DISPLAY = ".WAVE_DISPLAY"; //$NON-NLS-1$
-
+
/** The Constant SHOWN_CURSOR. */
protected static final String SHOWN_CURSOR = "SHOWN_CURSOR"; //$NON-NLS-1$
-
+
/** The Constant ZOOM_LEVEL. */
protected static final String ZOOM_LEVEL = "ZOOM_LEVEL"; //$NON-NLS-1$
/** The Constant BASE_LINE_TIME. */
protected static final String BASE_LINE_TIME = "BASE_LINE_TIME"; //$NON-NLS-1$
-
+
/** The Constant SELECTED_TX_ID. */
protected static final String SELECTED_TX_ID = "SELECTED_TX_ID"; //$NON-NLS-1$
/** The Constant SELECTED_TRACKENTRY_NAME. */
protected static final String SELECTED_TRACKENTRY_NAME = "SELECTED_TRACKENTRY_NAME"; //$NON-NLS-1$
-
+
/** The Constant WAVEFORM_SELECTED. */
protected static final String WAVEFORM_SELECTED = ".WAVEFORM_SELECTED"; //$NON-NLS-1$
-
+
/** The Constant FILE_CHECK_INTERVAL. */
protected static final long FILE_CHECK_INTERVAL = 60000;
-
+
+ /** The Constant TX_DETAILS_SHOWN. */
+ protected static final String TX_DETAILS_SHOWN = "TX_DETAILS_SHOWN"; //$NON-NLS-1$
+
/** The zoom level. */
private String[] zoomLevel;
@@ -156,19 +161,19 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
public static final String WAVE_ACTION_ID = "com.minres.scviewer.ui.action.AddToWave"; //$NON-NLS-1$
private static final String MENU_CONTEXT = "com.minres.scviewer.e4.application.popupmenu.wavecontext"; //$NON-NLS-1$
-
+
/** The number of active DisposeListeners */
private int disposeListenerNumber = 0;
-
+
/** The factory. */
WaveformViewFactory factory = new WaveformViewFactory();
DesignBrowser browser = null;
-
+
TransactionDetails detailsView = null;
-
+
TransactionListView transactionList = null;
-
+
/** The waveform pane. */
private IWaveformView waveformPane;
@@ -211,7 +216,7 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
ArrayList filesToLoad = new ArrayList<>();
String partConfig = "";
-
+
/** The persisted state. */
Map persistedState;
@@ -231,11 +236,16 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
IModificationChecker fileChecker;
@Inject IWaveformDbFactory dbFactory;
-
+
@Inject Composite parent;
-
+
private boolean showHover;
+ @Preference(nodePath = PreferenceConstants.PREFERENCES_SCOPE, value = PreferenceConstants.SHOW_TX_DETAILS) Boolean blah;
+
+ private SashForm topSash = null;
+ private SashForm middleSash = null;
+
/**
* Creates the composite.
*
@@ -246,7 +256,7 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
@PostConstruct
public void createComposite(MPart part, EMenuService menuService, @Preference(nodePath = PreferenceConstants.PREFERENCES_SCOPE) IEclipsePreferences prefs, @Preference(value = PreferenceConstants.SHOW_HOVER) Boolean hover) {
disposeListenerNumber += 1;
-
+
myPart = part;
myParent = parent;
store=prefs;
@@ -258,14 +268,14 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
}
});
parent.setLayout(new FillLayout(SWT.HORIZONTAL));
-
+
IEclipseContext ctx = myPart.getContext();
ctx.set(WaveformViewer.class, this);
ctx.set(IWaveformDb.class, database);
- SashForm topSash = new SashForm(parent, SWT.BORDER | SWT.SMOOTH | SWT.HORIZONTAL);
+ topSash = new SashForm(parent, SWT.BORDER | SWT.SMOOTH | SWT.HORIZONTAL);
Composite left = new Composite(topSash, SWT.NONE);
- SashForm middleSash = new SashForm(topSash, SWT.BORDER | SWT.SMOOTH | SWT.VERTICAL);
+ middleSash = new SashForm(topSash, SWT.BORDER | SWT.SMOOTH | SWT.VERTICAL);
Composite right = new Composite(topSash, SWT.NONE);
topSash.setWeights(new int[] {20, 60, 20});
@@ -275,101 +285,101 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
ctx.set(Composite.class, left);
browser = ContextInjectionFactory.make(DesignBrowser.class, ctx);
-
+
ctx.set(Composite.class, right);
detailsView = ContextInjectionFactory.make(TransactionDetails.class, ctx);
waveformPane = factory.createPanel(middleTop);
-
+
ctx.set(Composite.class, middleBottom);
transactionList = ContextInjectionFactory.make(TransactionListView.class, ctx);
-
+
waveformPane.setMaxTime(0);
//set selection to empty selection when opening a new waveformPane
selectionService.setSelection(new StructuredSelection());
-
+
waveformPane.addPropertyChangeListener(IWaveformView.CURSOR_PROPERTY, evt -> {
- Long time = (Long) evt.getNewValue();
- eventBroker.post(WaveStatusBarControl.CURSOR_TIME, waveformPane.getScaledTime(time));
- long marker = waveformPane.getMarkerTime(waveformPane.getSelectedMarkerId());
- eventBroker.post(WaveStatusBarControl.MARKER_DIFF, waveformPane.getScaledTime(time - marker));
+ Long time = (Long) evt.getNewValue();
+ eventBroker.post(WaveStatusBarControl.CURSOR_TIME, waveformPane.getScaledTime(time));
+ long marker = waveformPane.getMarkerTime(waveformPane.getSelectedMarkerId());
+ eventBroker.post(WaveStatusBarControl.MARKER_DIFF, waveformPane.getScaledTime(time - marker));
});
waveformPane.addPropertyChangeListener(IWaveformView.MARKER_PROPERTY, evt -> {
- Long time = (Long) evt.getNewValue();
- eventBroker.post(WaveStatusBarControl.MARKER_TIME, waveformPane.getScaledTime(time));
- long cursor = waveformPane.getCursorTime();
- eventBroker.post(WaveStatusBarControl.MARKER_DIFF, waveformPane.getScaledTime(cursor - time));
+ Long time = (Long) evt.getNewValue();
+ eventBroker.post(WaveStatusBarControl.MARKER_TIME, waveformPane.getScaledTime(time));
+ long cursor = waveformPane.getCursorTime();
+ eventBroker.post(WaveStatusBarControl.MARKER_DIFF, waveformPane.getScaledTime(cursor - time));
});
-
+
waveformPane.addSelectionChangedListener(event -> {
- if (event.getSelection() instanceof IStructuredSelection) {
- selectionService.setSelection(event.getSelection());
- }
+ if (event.getSelection() instanceof IStructuredSelection) {
+ selectionService.setSelection(event.getSelection());
+ }
});
waveformPane.getWaveformControl().addListener(SWT.KeyDown, e -> {
- if((e.stateMask&SWT.MOD3)!=0) { // Alt key
- } else if((e.stateMask&SWT.MOD1)!=0) { //Ctrl/Cmd
- int zoomlevel = waveformPane.getZoomLevel();
- switch(e.keyCode) {
- case '+':
- case SWT.KEYPAD_ADD:
- if(zoomlevel>0)
- waveformPane.setZoomLevel(zoomlevel-1);
- return;
- case '-':
- case SWT.KEYPAD_SUBTRACT:
- if(zoomlevel0)
+ waveformPane.setZoomLevel(zoomlevel-1);
+ return;
+ case '-':
+ case SWT.KEYPAD_SUBTRACT:
+ if(zoomlevel();
@@ -461,8 +471,8 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
valueCol.pack();
table.setSize(table.computeSize(SWT.DEFAULT, SWT.DEFAULT));
parent.addPaintListener( e -> {
- Rectangle area = parent.getClientArea();
- valueCol.setWidth(area.width - nameCol.getWidth());
+ Rectangle area = parent.getClientArea();
+ valueCol.setWidth(area.width - nameCol.getWidth());
});
parent.addFocusListener(FocusListener.focusGainedAdapter(e -> table.setFocus()));
return true;
@@ -484,21 +494,28 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
}
});
waveformPane.setStyleProvider(new WaveformStyleProvider(store));
+ showTxDetails(false);
}
@Inject
@Optional
public void reactOnPrefsChange(@Preference(nodePath = PreferenceConstants.PREFERENCES_SCOPE) IEclipsePreferences prefs) {
prefs.addPreferenceChangeListener(this);
-
+
}
-
+
@Inject
@Optional
public void reactOnShowHoverChange(@Preference(nodePath = PreferenceConstants.PREFERENCES_SCOPE, value = PreferenceConstants.SHOW_HOVER) Boolean hover) {
showHover=hover;
}
-
+
+ @Inject
+ @Optional
+ public void reactOnShowTxDetailsChange(@Preference(nodePath = PreferenceConstants.PREFERENCES_SCOPE, value = PreferenceConstants.SHOW_TX_DETAILS) Boolean show) {
+ showTxDetails(show);
+ }
+
@Inject
@Optional
public void reactOnReloadDatabaseChange(@Preference(nodePath = PreferenceConstants.PREFERENCES_SCOPE, value = PreferenceConstants.DATABASE_RELOAD) Boolean checkForUpdates) {
@@ -568,7 +585,7 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
if (monitor.isCanceled())
throw new OperationCanceledException(Messages.WaveformViewer_14);
-
+
IStatus result = jobGroup.getResult();
if( (!result.isMultiStatus() && result.getCode() != Status.OK_STATUS.getCode() ) ||
(result.isMultiStatus() && result.getChildren().length > 0 && result.getChildren()[0].getCode() != Status.OK_STATUS.getCode() ) ){
@@ -605,10 +622,10 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
public void fileChanged(List file) {
final Display display = myParent.getDisplay();
display.asyncExec(() -> {
- if (MessageDialog.openQuestion(display.getActiveShell(), Messages.WaveformViewer_17,
- Messages.WaveformViewer_18)) {
- reloadDatabase();
- }
+ if (MessageDialog.openQuestion(display.getActiveShell(), Messages.WaveformViewer_17,
+ Messages.WaveformViewer_18)) {
+ reloadDatabase();
+ }
});
fileMonitor.removeFileChangeListener(this);
}
@@ -684,14 +701,14 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
saveWaveformViewerState(persistingState);
Properties props = new Properties();
props.putAll(persistingState);
-
+
try (FileOutputStream out = new FileOutputStream(fileName)) {
props.store(out, "Written by SCViewer"); //$NON-NLS-1$
} catch (IOException e) {
e.printStackTrace();
}
}
-
+
public void loadState(String fileName){
//clear old streams before loading tab settings
if(!waveformPane.getStreamList().isEmpty()) {
@@ -709,7 +726,7 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
e.printStackTrace();
}
}
-
+
/**
* Save waveform viewer state.
*
@@ -734,7 +751,7 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
}
persistingState.put(ZOOM_LEVEL, Integer.toString(waveformPane.getZoomLevel()));
persistingState.put(BASE_LINE_TIME, Long.toString(waveformPane.getBaselineTime()));
-
+
// get selected transaction of a stream
ISelection selection = waveformPane.getSelection();
if (!selection.isEmpty()) {
@@ -749,24 +766,25 @@ public class WaveformViewer implements IFileChangeListener, IPreferenceChangeLis
persistingState.put(SELECTED_TRACKENTRY_NAME, name);
}
}
+ persistingState.put(TX_DETAILS_SHOWN, Boolean.toString(store.getBoolean(PreferenceConstants.SHOW_TX_DETAILS, false)));
}
protected List