tmf : Use StringBuilder in TmfRawEventViewer
[deliverable/tracecompass.git] / tmf / org.eclipse.tracecompass.tmf.ui / src / org / eclipse / tracecompass / tmf / ui / widgets / rawviewer / TmfRawEventViewer.java
index ba58804661fa4e3b24e989c468c2ba49f13baa90..5e5d90955854f552b26dcbd13e9d2565e484d4b9 100644 (file)
@@ -77,6 +77,9 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
     private static final String SELECTION_COLOR_DEFINITION_ID = "org.eclipse.tracecompass.tmf.ui.color.eventraw.selection"; //$NON-NLS-1$
     private static final int MAX_LINE_DATA_SIZE = 1000;
     private static final int SLIDER_MAX = 1000000;
+    private static final String EMPTY_STRING = ""; //$NON-NLS-1$
+    private static final String LF = "\n"; //$NON-NLS-1$
+    private static final String CR_LF = "\r?\n"; //$NON-NLS-1$
 
     private ITmfTrace fTrace;
     private ITmfContext fBottomContext;
@@ -114,7 +117,8 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
             this.rank = rank;
             this.location = location;
             if (string.length() == 0) {
-                this.string = " "; // workaround for setLineBackground has no effect on empty line //$NON-NLS-1$
+                /* workaround for setLineBackground has no effect on empty line */
+                this.string = " "; //$NON-NLS-1$
             } else {
                 this.string = string;
             }
@@ -197,6 +201,9 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
 
     @Override
     public void dispose() {
+        if (fBottomContext != null) {
+            fBottomContext.dispose();
+        }
         PlatformUI.getWorkbench().getThemeManager().removePropertyChangeListener(this);
         super.dispose();
     }
@@ -217,7 +224,7 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
 
     /**
      * Initialize the colors.
-     * @since 1.0
+     * @since 1.1
      */
     protected void initializeColors() {
         ColorRegistry colorRegistry = PlatformUI.getWorkbench().getThemeManager().getCurrentTheme().getColorRegistry();
@@ -278,9 +285,13 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
         fStyledText.addMouseMoveListener(this);
         fStyledText.addMouseTrackListener(this);
         fStyledText.addMouseWheelListener(this);
-        fStyledText.addListener(SWT.MouseWheel, new Listener() { // disable mouse scroll of horizontal scroll bar
+        /* disable mouse scroll of horizontal scroll bar */
+        fStyledText.addListener(SWT.MouseWheel, new Listener() {
             @Override
-            public void handleEvent(Event event) { event.doit = false; }});
+            public void handleEvent(Event event) {
+                event.doit = false;
+            }
+        });
         fStyledText.addKeyListener(this);
 
         fTextArea.setBackground(fStyledText.getBackground());
@@ -288,7 +299,8 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
             @Override
             public void mouseDown(MouseEvent e) {
                 fTextArea.setFocus();
-            }});
+            }
+        });
     }
 
     // ------------------------------------------------------------------------
@@ -353,14 +365,19 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
             if (fLines.size() == 0) {
                 setTopRank(0);
             } else if (fLines.size() < fNumVisibleLines) {
-                fBottomContext = null;
+                if (fBottomContext != null) {
+                    fBottomContext.dispose();
+                    fBottomContext = null;
+                }
                 loadLineData();
                 fillTextArea();
-                //fSlider.setSelection((int) (SLIDER_MAX * ((double) fLines.get(fTopLineIndex).rank / fTrace.getNbEvents())));
                 fSlider.setSelection((int) (SLIDER_MAX * fTrace.getLocationRatio(fLines.get(fTopLineIndex).location)));
             }
         } else {
-            fBottomContext = null;
+            if (fBottomContext != null) {
+                fBottomContext.dispose();
+                fBottomContext = null;
+            }
             fillTextArea();
             fSlider.setThumb(SLIDER_MAX);
             fSlider.setSelection(0);
@@ -430,6 +447,9 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
     }
 
     private void setTopRank(long rank) {
+        if (fBottomContext != null) {
+            fBottomContext.dispose();
+        }
         fBottomContext = fTrace.seekEvent(rank);
         if (fBottomContext == null) {
             return;
@@ -442,12 +462,14 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
         if (fLines.size() == 0) {
             fSlider.setSelection(0);
         } else {
-            //fSlider.setSelection((int) (SLIDER_MAX * ((double) fLines.get(fTopLineIndex).rank / fTrace.getNbEvents())));
             fSlider.setSelection((int) (SLIDER_MAX * fTrace.getLocationRatio(fLines.get(fTopLineIndex).location)));
         }
     }
 
     private void setTopPosition(double ratio) {
+        if (fBottomContext != null) {
+            fBottomContext.dispose();
+        }
         fBottomContext = fTrace.seekEvent(ratio);
         if (fBottomContext == null) {
             return;
@@ -462,25 +484,6 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
 
     private void loadLineData() {
         if (fTopLineIndex < 0) {
-            //if (fLines.size() > 0 && fLines.get(0).rank > 0) {
-                //long endRank = fLines.get(0).rank;
-                //long startRank = Math.max(0, endRank - fNumVisibleLines);
-                //TmfContext context = fTrace.seekEvent(startRank);
-                //int index = 0;
-                //while (context.getRank() < endRank) {
-                    //long rank = context.getRank();
-                    //ITmfLocation<?> location = context.getLocation();
-                    //TmfEvent event = fTrace.getNextEvent(context);
-                    //String[] lines = event.getRawText().split("\r?\n");
-                    //for (int i = 0; i < lines.length; i++) {
-                        //String line = lines[i];
-                        //LineData lineData = new LineData(rank, location, line);
-                        //fLines.add(index++, lineData);
-                        //fTopLineIndex++;
-                        //fLastTopLineIndex++;
-                    //}
-                //}
-            //}
             if (fLines.size() > 0 && fTrace.getLocationRatio(fLines.get(0).location) > 0) {
                 double lastRatio = fTrace.getLocationRatio(fLines.get(fLines.size() - 1).location);
                 double firstRatio = fTrace.getLocationRatio(fLines.get(0).location);
@@ -507,7 +510,7 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
                             break;
                         }
                         if (event.getContent() != null && event.getContent().getValue() != null) {
-                            String[] lines = event.getContent().getValue().toString().split("\r?\n"); //$NON-NLS-1$
+                            String[] lines = event.getContent().getValue().toString().split(CR_LF);
                             for (int i = 0; i < lines.length; i++) {
                                 String line = lines[i];
                                 LineData lineData = new LineData(rank, location, line);
@@ -516,13 +519,14 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
                                 fLastTopLineIndex++;
                             }
                         } else {
-                            LineData lineData = new LineData(rank, location, ""); //$NON-NLS-1$
+                            LineData lineData = new LineData(rank, location, EMPTY_STRING);
                             fLines.add(index++, lineData);
                             fTopLineIndex++;
                             fLastTopLineIndex++;
                         }
                         rank++;
                     }
+                    context.dispose();
                     long rankOffset = fLines.get(index).rank - rank;
                     for (int i = 0; i < index; i++) {
                         fLines.get(i).rank += rankOffset;
@@ -545,7 +549,6 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
                 if (fLines.size() == 0) {
                     fBottomContext = fTrace.seekEvent(0);
                 } else {
-                    //fBottomContext = fTrace.seekEvent(fLines.get(fLines.size() - 1).rank + 1);
                     fBottomContext = fTrace.seekEvent(fLines.get(fLines.size() - 1).location);
                     fTrace.getNext(fBottomContext);
                 }
@@ -560,7 +563,7 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
                 break;
             }
             if (event.getContent() != null && event.getContent().getValue() != null) {
-                for (String line : event.getContent().getValue().toString().split("\r?\n")) { //$NON-NLS-1$
+                for (String line : event.getContent().getValue().toString().split(CR_LF)) {
                     int crPos;
                     if ((crPos = line.indexOf('\r')) != -1) {
                         line = line.substring(0, crPos);
@@ -569,7 +572,7 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
                     fLines.add(lineData);
                 }
             } else {
-                LineData lineData = new LineData(rank, location, ""); //$NON-NLS-1$
+                LineData lineData = new LineData(rank, location, EMPTY_STRING);
                 fLines.add(lineData);
             }
         }
@@ -581,7 +584,10 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
                 for (int i = MAX_LINE_DATA_SIZE; i < fLines.size(); i++) {
                     if (fLines.get(i).rank > rank) {
                         fLines.subList(i, fLines.size()).clear();
-                        fBottomContext = null;
+                        if (fBottomContext != null) {
+                            fBottomContext.dispose();
+                            fBottomContext = null;
+                        }
                         break;
                     }
                 }
@@ -600,11 +606,11 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
     }
 
     private void refreshTextArea() {
-        fStyledText.setText(""); //$NON-NLS-1$
+        fStyledText.setText(EMPTY_STRING);
         for (int i = 0; i < fLines.size() - fTopLineIndex && i < fNumVisibleLines; i++) {
             if (i > 0)
              {
-                fStyledText.append("\n"); //$NON-NLS-1$
+                fStyledText.append(LF);
             }
             LineData lineData = fLines.get(fTopLineIndex + i);
             fStyledText.append(lineData.string);
@@ -620,7 +626,7 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
         for (int i = nextLine; i < fLines.size() - fTopLineIndex && i < fNumVisibleLines; i++) {
             if (i > 0)
              {
-                fStyledText.append("\n"); //$NON-NLS-1$
+                fStyledText.append(LF);
             }
             LineData lineData = fLines.get(fTopLineIndex + i);
             fStyledText.append(lineData.string);
@@ -631,7 +637,7 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
             int endOffset = fStyledText.getOffsetAtLine(endLine) - 1;
             if (endOffset > fStyledText.getCharCount()) {
                 fHoldSelection++;
-                fStyledText.replaceTextRange(endOffset, fStyledText.getCharCount() - endOffset, ""); //$NON-NLS-1$
+                fStyledText.replaceTextRange(endOffset, fStyledText.getCharCount() - endOffset, EMPTY_STRING);
                 fHoldSelection--;
             }
         }
@@ -641,9 +647,9 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
 
     private void updateTextArea() {
         if (fTopLineIndex < fLastTopLineIndex) {
-            StringBuffer insertedText = new StringBuffer();
+            StringBuilder insertedText = new StringBuilder();
             for (int i = fTopLineIndex; i < fLastTopLineIndex; i++) {
-                insertedText.append(fLines.get(i).string + "\n"); //$NON-NLS-1$
+                insertedText.append(fLines.get(i).string).append(LF);
             }
             fStyledText.replaceTextRange(0, 0, insertedText.toString());
             for (int i = 0; i < fLastTopLineIndex - fTopLineIndex; i++) {
@@ -659,7 +665,7 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
                     length += 1;
                 }
             }
-            fStyledText.replaceTextRange(0, length, ""); //$NON-NLS-1$
+            fStyledText.replaceTextRange(0, length, EMPTY_STRING);
             fLastTopLineIndex = fTopLineIndex;
             fillTextArea();
         }
@@ -667,7 +673,7 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
         if (endLine < fStyledText.getLineCount()) {
             int endOffset = fStyledText.getOffsetAtLine(endLine) - 1;
             if (endOffset > fStyledText.getCharCount()) {
-                fStyledText.replaceTextRange(endOffset, fStyledText.getCharCount() - endOffset, ""); //$NON-NLS-1$
+                fStyledText.replaceTextRange(endOffset, fStyledText.getCharCount() - endOffset, EMPTY_STRING);
             }
         }
         fTextArea.layout();
@@ -786,8 +792,6 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
                 /*
                  * The selection event was sent by the viewer, refresh now.
                  */
-                //long rank = (long) (fTrace.getNbEvents() * ((double) fSlider.getSelection() / SLIDER_MAX));
-                //setTopRank(rank);
                 if (fSlider.getSelection() == 0 || fSlider.getThumb() == SLIDER_MAX) {
                     fLines.clear();
                     setTopPosition(0.0);
@@ -822,8 +826,7 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
                 break;
             }
             case SWT.ARROW_UP: {
-                //if (fLines.size() == 0 || (fTopLineIndex == 0 && fLines.get(0).rank == 0)) {
-                if (fLines.size() == 0) {// || (fTopLineIndex == 0 && fLines.get(0).rank == 0)) {
+                if (fLines.size() == 0) {
                     break;
                 }
                 fTopLineIndex--;
@@ -838,14 +841,10 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
                 break;
             }
             case SWT.HOME: {
-                //selectAndReveal(0);
                 setTopPosition(0.0);
                 break;
             }
             case SWT.END: {
-                //if (fTrace.getNbEvents() > 0) {
-                    //selectAndReveal(fTrace.getNbEvents() - 1);
-                //}
                 double ratio = 1.0;
                 double delta = Math.pow(10, -15);
                 fLines.clear();
@@ -862,7 +861,6 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
             default:
                 break;
         }
-        //fSlider.setSelection((int) (SLIDER_MAX * ((double) fLines.get(fTopLineIndex).rank / fTrace.getNbEvents())));
         if (e.detail != SWT.NONE) {
             fSlider.setSelection((int) (SLIDER_MAX * fTrace.getLocationRatio(fLines.get(fTopLineIndex).location)));
         }
@@ -879,14 +877,14 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
     // ------------------------------------------------------------------------
 
     /**
-     * @since 1.0
+     * @since 1.1
      */
     @Override
     public void mouseDown(MouseEvent e) {
     }
 
     /**
-     * @since 1.0
+     * @since 1.1
      */
     @Override
     public void mouseUp(MouseEvent e) {
@@ -908,7 +906,7 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
     }
 
     /**
-     * @since 1.0
+     * @since 1.1
      */
     @Override
     public void mouseDoubleClick(MouseEvent e) {
@@ -980,7 +978,7 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
                 if (previousLineAtCaretPosition > 0) {
                     break;
                 }
-                if (fLines.size() == 0) {// || (fTopLineIndex == 0 && fLines.get(0).rank == 0)) {
+                if (fLines.size() == 0) {
                     break;
                 }
                 fHoldSelection++;
@@ -1019,7 +1017,7 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
                 if (previousCaretOffset > 0) {
                     break;
                 }
-                if (fLines.size() == 0) {// || (fTopLineIndex == 0 && fLines.get(0).rank == 0)) {
+                if (fLines.size() == 0) {
                     break;
                 }
                 long topRank = fLines.get(fTopLineIndex).rank;
@@ -1043,7 +1041,6 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
                 if ((e.stateMask & SWT.CTRL) == 0) {
                     break;
                 }
-                //selectAndReveal(0);
                 setTopPosition(0.0);
                 LineData lineData = fLines.get(fTopLineIndex);
                 if (!lineData.location.equals(fSelectedLocation)) {
@@ -1057,9 +1054,6 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
                 if ((e.stateMask & SWT.CTRL) == 0) {
                     break;
                 }
-                //if (fTrace.getNbEvents() > 0) {
-                    //selectAndReveal(fTrace.getNbEvents() - 1);
-                //}
                 double ratio = 1.0;
                 double delta = Math.pow(10, -15);
                 fLines.clear();
@@ -1082,7 +1076,6 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
             default:
                 break;
         }
-        //fSlider.setSelection((int) (SLIDER_MAX * ((double) fLines.get(fTopLineIndex).rank / fTrace.getNbEvents())));
         updateHighlightedRank();
         fSlider.setSelection((int) (SLIDER_MAX * fTrace.getLocationRatio(fLines.get(fTopLineIndex).location)));
     }
@@ -1187,7 +1180,6 @@ public class TmfRawEventViewer extends Composite implements ControlListener, Sel
         loadLineData();
         updateTextArea();
         fHoldSelection = 0;
-        //fSlider.setSelection((int) (SLIDER_MAX * ((double) fLines.get(fTopLineIndex).rank / fTrace.getNbEvents())));
         updateHighlightedRank();
         fSlider.setSelection((int) (SLIDER_MAX * fTrace.getLocationRatio(fLines.get(fTopLineIndex).location)));
     }
This page took 0.036025 seconds and 5 git commands to generate.