Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Tasse2012-12-17 20:29:20 +0000
committerPatrick Tasse2012-12-19 15:26:35 +0000
commit809d5c0811317138f9e47a5c9eae2f022a549c44 (patch)
tree2199fb21398446276568586c2580352876a631fd
parent9a1872ba9b25f127eec83309dd14b58fbd0b3cf7 (diff)
downloadorg.eclipse.linuxtools-809d5c0811317138f9e47a5c9eae2f022a549c44.tar.gz
org.eclipse.linuxtools-809d5c0811317138f9e47a5c9eae2f022a549c44.tar.xz
org.eclipse.linuxtools-809d5c0811317138f9e47a5c9eae2f022a549c44.zip
Clear text controls and labels when histogram is empty
- Do not display default time (epoch) for text controls and start/end labels when histogram is initialized or when last trace is closed - Prevent user update of text controls when histogram is empty - Fix layout problem on time format update Change-Id: I9285853b127e0dca0fa0c2035fea1c414390a759 Reviewed-on: https://git.eclipse.org/r/9273 Tested-by: Hudson CI Reviewed-by: Bernd Hufmann <bhufmann@gmail.com> IP-Clean: Bernd Hufmann <bhufmann@gmail.com> Tested-by: Bernd Hufmann <bhufmann@gmail.com> Reviewed-by: Patrick Tasse <patrick.tasse@gmail.com>
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/Histogram.java59
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramCurrentTimeControl.java32
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramTimeRangeControl.java12
-rw-r--r--lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramView.java8
4 files changed, 41 insertions, 70 deletions
diff --git a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/Histogram.java b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/Histogram.java
index d80b90aac1..7b2ff4c8cd 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/Histogram.java
+++ b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/Histogram.java
@@ -36,8 +36,6 @@ import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.Point;
-import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
@@ -104,7 +102,7 @@ public abstract class Histogram implements ControlListener, PaintListener, KeyLi
*/
protected TmfView fParentView;
- private Composite fParent;
+ private Composite fComposite;
private Font fFont;
// Histogram text fields
@@ -145,9 +143,8 @@ public abstract class Histogram implements ControlListener, PaintListener, KeyLi
*/
public Histogram(final TmfView view, final Composite parent) {
fParentView = view;
- fParent = parent;
- createWidget(parent);
+ fComposite = createWidget(parent);
fDataModel = new HistogramDataModel();
fDataModel.addHistogramListener(this);
clear();
@@ -171,7 +168,7 @@ public abstract class Histogram implements ControlListener, PaintListener, KeyLi
fDataModel.removeHistogramListener(this);
}
- private void createWidget(final Composite parent) {
+ private Composite createWidget(final Composite parent) {
final Color labelColor = parent.getBackground();
fFont = adjustFont(parent);
@@ -253,7 +250,6 @@ public abstract class Histogram implements ControlListener, PaintListener, KeyLi
fTimeRangeStartText = new Text(composite, SWT.READ_ONLY);
fTimeRangeStartText.setFont(fFont);
fTimeRangeStartText.setBackground(labelColor);
- fTimeRangeStartText.setText(TmfTimestamp.ZERO.toString());
fTimeRangeStartText.setLayoutData(gridData);
// Window range end time
@@ -263,8 +259,9 @@ public abstract class Histogram implements ControlListener, PaintListener, KeyLi
fTimeRangeEndText = new Text(composite, SWT.READ_ONLY);
fTimeRangeEndText.setFont(fFont);
fTimeRangeEndText.setBackground(labelColor);
- fTimeRangeEndText.setText(TmfTimestamp.ZERO.toString());
fTimeRangeEndText.setLayoutData(gridData);
+
+ return composite;
}
private static Font adjustFont(final Composite composite) {
@@ -464,9 +461,14 @@ public abstract class Histogram implements ControlListener, PaintListener, KeyLi
synchronized(fDataModel) {
if (fScaledData != null) {
fCanvas.redraw();
- // Display histogram and update X-,Y-axis labels
- fTimeRangeStartText.setText(TmfTimestampFormat.getDefaulTimeFormat().format(fDataModel.getFirstBucketTime()));
- fTimeRangeEndText.setText(TmfTimestampFormat.getDefaulTimeFormat().format(fDataModel.getEndTime()));
+ if (fDataModel.getNbEvents() != 0) {
+ // Display histogram and update X-,Y-axis labels
+ fTimeRangeStartText.setText(TmfTimestampFormat.getDefaulTimeFormat().format(fDataModel.getFirstBucketTime()));
+ fTimeRangeEndText.setText(TmfTimestampFormat.getDefaulTimeFormat().format(fDataModel.getEndTime()));
+ } else {
+ fTimeRangeStartText.setText(""); //$NON-NLS-1$
+ fTimeRangeEndText.setText(""); //$NON-NLS-1$
+ }
fMaxNbEventsText.setText(Long.toString(fScaledData.fMaxValue));
// The Y-axis area might need to be re-sized
fMaxNbEventsText.getParent().layout();
@@ -675,42 +677,17 @@ public abstract class Histogram implements ControlListener, PaintListener, KeyLi
*/
@TmfSignalHandler
public void timestampFormatUpdated(TmfTimestampFormatUpdateSignal signal) {
- Point size = fTimeRangeStartText.getSize();
+ if (fDataModel.getNbEvents() == 0) {
+ return;
+ }
+
String newTS = TmfTimestampFormat.getDefaulTimeFormat().format(fDataModel.getFirstBucketTime());
- size.x = getTextSize(newTS);
- fTimeRangeStartText.setSize(size);
fTimeRangeStartText.setText(newTS);
newTS = TmfTimestampFormat.getDefaulTimeFormat().format(fDataModel.getEndTime());
- Rectangle rect = fTimeRangeEndText.getBounds();
- int newWidth = getTextSize(newTS);
- rect.x += rect.width - newWidth;
- rect.width = newWidth;
- fTimeRangeEndText.setBounds(rect);
fTimeRangeEndText.setText(newTS);
- }
-
- /**
- * Compute the width of a String.
- *
- * @param text the Text to measure
- * @return The result size
- * @since 2.0
- */
- private int getTextSize(final String text) {
- GC controlGC = new GC(fParent);
- controlGC.setFont(fFont);
-
- int textSize = 0;
- for (int pos = 0; pos < text.length(); pos++) {
- textSize += controlGC.getAdvanceWidth(text.charAt(pos));
- }
- // Add an extra space
- textSize += controlGC.getAdvanceWidth(' ');
-
- controlGC.dispose();
- return textSize;
+ fComposite.layout();
}
}
diff --git a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramCurrentTimeControl.java b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramCurrentTimeControl.java
index 91b7d35cf9..b9043e99f1 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramCurrentTimeControl.java
+++ b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramCurrentTimeControl.java
@@ -23,7 +23,6 @@ import org.eclipse.linuxtools.tmf.core.event.TmfTimestampFormat;
import org.eclipse.linuxtools.tmf.core.signal.TmfSignalHandler;
import org.eclipse.linuxtools.tmf.core.signal.TmfSignalManager;
import org.eclipse.linuxtools.tmf.core.signal.TmfTimestampFormatUpdateSignal;
-import org.eclipse.linuxtools.tmf.core.signal.TmfTraceUpdatedSignal;
import org.eclipse.linuxtools.tmf.core.trace.ITmfTrace;
import org.eclipse.swt.widgets.Composite;
@@ -36,12 +35,6 @@ import org.eclipse.swt.widgets.Composite;
public class HistogramCurrentTimeControl extends HistogramTextControl {
// ------------------------------------------------------------------------
- // Attributes
- // ------------------------------------------------------------------------
-
- private long fTraceStartTime;
-
- // ------------------------------------------------------------------------
// Construction
// ------------------------------------------------------------------------
@@ -75,6 +68,10 @@ public class HistogramCurrentTimeControl extends HistogramTextControl {
@Override
protected void updateValue() {
+ if (getValue() == Long.MIN_VALUE) {
+ fTextValue.setText(""); //$NON-NLS-1$
+ return;
+ }
String string = fTextValue.getText();
long value = 0;
try {
@@ -103,22 +100,11 @@ public class HistogramCurrentTimeControl extends HistogramTextControl {
@Override
public void setValue(long time) {
- super.setValue(time, new TmfTimestamp(time, ITmfTimestamp.NANOSECOND_SCALE).toString());
- }
-
- // ------------------------------------------------------------------------
- // Signal Handlers
- // ------------------------------------------------------------------------
-
- /**
- * Update the initial time value
- *
- * @param signal the time range signal
- * @since 2.0
- */
- @TmfSignalHandler
- public void traceUpdated(final TmfTraceUpdatedSignal signal) {
- fTraceStartTime = signal.getTrace().getTimeRange().getStartTime().normalize(0, ITmfTimestamp.NANOSECOND_SCALE).getValue();
+ if (time != Long.MIN_VALUE) {
+ super.setValue(time, new TmfTimestamp(time, ITmfTimestamp.NANOSECOND_SCALE).toString());
+ } else {
+ super.setValue(time, ""); //$NON-NLS-1$
+ }
}
// ------------------------------------------------------------------------
diff --git a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramTimeRangeControl.java b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramTimeRangeControl.java
index 5a8c5cedfe..fb7b4546eb 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramTimeRangeControl.java
+++ b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramTimeRangeControl.java
@@ -70,6 +70,10 @@ public class HistogramTimeRangeControl extends HistogramTextControl {
*/
@Override
protected void updateValue() {
+ if (getValue() == Long.MIN_VALUE) {
+ fTextValue.setText(""); //$NON-NLS-1$
+ return;
+ }
String string = fTextValue.getText();
long value = getValue();
try {
@@ -81,8 +85,12 @@ public class HistogramTimeRangeControl extends HistogramTextControl {
@Override
public void setValue(long time) {
- ITmfTimestamp ts = new TmfTimestamp(time, ITmfTimestamp.NANOSECOND_SCALE);
- super.setValue(time, ts.toString(TmfTimestampFormat.getDefaulIntervalFormat()));
+ if (time != Long.MIN_VALUE) {
+ ITmfTimestamp ts = new TmfTimestamp(time, ITmfTimestamp.NANOSECOND_SCALE);
+ super.setValue(time, ts.toString(TmfTimestampFormat.getDefaulIntervalFormat()));
+ } else {
+ super.setValue(time, ""); //$NON-NLS-1$
+ }
}
// ------------------------------------------------------------------------
diff --git a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramView.java b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramView.java
index 617d2d0434..e1f1447733 100644
--- a/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramView.java
+++ b/lttng/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/histogram/HistogramView.java
@@ -178,7 +178,7 @@ public class HistogramView extends TmfView {
gridData.verticalAlignment = SWT.CENTER;
fCurrentEventTimeControl = new HistogramCurrentTimeControl(this, controlsComposite, currentEventLabel, 0L);
fCurrentEventTimeControl.setLayoutData(gridData);
- fCurrentEventTimeControl.setValue(0L);
+ fCurrentEventTimeControl.setValue(Long.MIN_VALUE);
// Window span time control
gridData = new GridData();
@@ -186,7 +186,7 @@ public class HistogramView extends TmfView {
gridData.verticalAlignment = SWT.CENTER;
fTimeSpanControl = new HistogramTimeRangeControl(this, controlsComposite, windowSpanLabel, 0L);
fTimeSpanControl.setLayoutData(gridData);
- fTimeSpanControl.setValue(0L);
+ fTimeSpanControl.setValue(Long.MIN_VALUE);
// --------------------------------------------------------------------
// Time range histogram
@@ -426,9 +426,9 @@ public class HistogramView extends TmfView {
// Clear the UI widgets
fFullTraceHistogram.clear();
fTimeRangeHistogram.clear();
- fCurrentEventTimeControl.setValue(0L);
+ fCurrentEventTimeControl.setValue(Long.MIN_VALUE);
- fTimeSpanControl.setValue(0);
+ fTimeSpanControl.setValue(Long.MIN_VALUE);
}
/**

Back to the top