2010-07-20 Francois Chouinard <fchouinard@gmail.com>
authorFrancois Chouinard <fchouinard@gmail.com>
Tue, 20 Jul 2010 14:54:26 +0000 (14:54 +0000)
committerFrancois Chouinard <fchouinard@gmail.com>
Tue, 20 Jul 2010 14:54:26 +0000 (14:54 +0000)
* src/org/eclipse/linuxtools/tmf/ui/editors/TmfEventsEditor.java
- Enable the dispose of trace when events table is disposed
* src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java
- Use static defaults for column data
- Make optional the dispose of trace when table is disposed
- Perform the seek on timestamp in a background job in TmfTimeSynchSignal handler
* src/org/eclipse/linuxtools/tmf/ui/views/project/ProjectView.java
- Fix tree item selection on mouse double-click
* src/org/eclipse/linuxtools/tmf/ui/views/TmfEventsView.java
- Reduce default cache size to 100
- Disable the dispose of trace when events table is disposed
* src/org/eclipse/linuxtools/tmf/ui/wizards/CustomTxtParserOutputWizardPage.java
- Enable the dispose of trace when events table is disposed
* src/org/eclipse/linuxtools/tmf/ui/wizards/CustomXmlParserOutputWizardPage.java
- Enable the dispose of trace when events table is disposed

org.eclipse.linuxtools.tmf.ui/ChangeLog
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/editors/TmfEventsEditor.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/TmfEventsView.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/project/ProjectView.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/wizards/CustomTxtParserOutputWizardPage.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/wizards/CustomXmlParserOutputWizardPage.java

index f58654e14182bcf2b424917a6dbc0ea79f5b3c8f..f916227dd71991c7df2fc7df0eb82a75cbbd270c 100644 (file)
@@ -1,3 +1,21 @@
+2010-07-20  Francois Chouinard  <fchouinard@gmail.com>
+
+       * src/org/eclipse/linuxtools/tmf/ui/editors/TmfEventsEditor.java 
+               - Enable the dispose of trace when events table is disposed
+       * src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java
+               - Use static defaults for column data
+               - Make optional the dispose of trace when table is disposed
+               - Perform the seek on timestamp in a background job in TmfTimeSynchSignal handler
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/ProjectView.java
+               - Fix tree item selection on mouse double-click 
+       * src/org/eclipse/linuxtools/tmf/ui/views/TmfEventsView.java
+               - Reduce default cache size to 100
+               - Disable the dispose of trace when events table is disposed 
+       * src/org/eclipse/linuxtools/tmf/ui/wizards/CustomTxtParserOutputWizardPage.java
+               - Enable the dispose of trace when events table is disposed
+       * src/org/eclipse/linuxtools/tmf/ui/wizards/CustomXmlParserOutputWizardPage.java 
+               - Enable the dispose of trace when events table is disposed
+
 2010-07-13  Francois Chouinard  <fchouinard@gmail.com>
 
        * src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java: Changed visibility of 2 methods (from public to protected)
index d106b7078b22c4385dbba2448daac891800a5274..fb9276a63ac191bffb0ba63757eddecc6402a0e9 100644 (file)
@@ -107,7 +107,7 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
             fEventsTable.dispose();\r
             if (fTrace != null) {\r
                 fEventsTable = createEventsTable(fParent, fTrace.getCacheSize());\r
-                fEventsTable.setTrace(fTrace);\r
+                fEventsTable.setTrace(fTrace, true);\r
                 broadcast(new TmfTraceOpenedSignal(this, fTrace));\r
             } else {\r
                 fEventsTable = new TmfEventsTable(fParent, 0);\r
@@ -122,7 +122,7 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
         setPartName(getEditorInput().getName());\r
         if (fTrace != null) {\r
             fEventsTable = createEventsTable(parent, fTrace.getCacheSize());\r
-            fEventsTable.setTrace(fTrace);\r
+            fEventsTable.setTrace(fTrace, true);\r
             broadcast(new TmfTraceOpenedSignal(this, fTrace));\r
         } else {\r
             fEventsTable = new TmfEventsTable(parent, 0);\r
@@ -175,7 +175,7 @@ public class TmfEventsEditor extends TmfEditor implements ITmfTraceEditor, IReus
             fEventsTable.dispose();\r
             if (fTrace != null) {\r
                 fEventsTable = createEventsTable(fParent, fTrace.getCacheSize());\r
-                fEventsTable.setTrace(fTrace);\r
+                fEventsTable.setTrace(fTrace, true);\r
                 broadcast(new TmfTraceOpenedSignal(this, fTrace));\r
             } else {\r
                 fEventsTable = new TmfEventsTable(fParent, 0);\r
index fdbe150196e2024ac705ce9674c6205aa9027d99..edb3b0db739edb444511db7a33432879b40d1da3 100644 (file)
 \r
 package org.eclipse.linuxtools.tmf.ui.viewers.events;\r
 \r
+import org.eclipse.core.runtime.IProgressMonitor;\r
+import org.eclipse.core.runtime.IStatus;\r
+import org.eclipse.core.runtime.Status;\r
+import org.eclipse.core.runtime.jobs.Job;\r
 import org.eclipse.linuxtools.tmf.component.ITmfDataProvider;\r
 import org.eclipse.linuxtools.tmf.component.TmfComponent;\r
 import org.eclipse.linuxtools.tmf.event.TmfEvent;\r
@@ -51,12 +55,12 @@ public class TmfEventsTable extends TmfComponent {
     protected boolean fPackDone = false;\r
 \r
     // Table column names\r
-    private final String TIMESTAMP_COLUMN = "Timestamp";\r
-    private final String SOURCE_COLUMN    = "Source";\r
-    private final String TYPE_COLUMN      = "Type";\r
-    private final String REFERENCE_COLUMN = "File";\r
-    private final String CONTENT_COLUMN   = "Content";\r
-    private final String[] columnProperties =  new String[] {\r
+    static private final String TIMESTAMP_COLUMN = "Timestamp";\r
+    static private final String SOURCE_COLUMN    = "Source";\r
+    static private final String TYPE_COLUMN      = "Type";\r
+    static private final String REFERENCE_COLUMN = "File";\r
+    static private final String CONTENT_COLUMN   = "Content";\r
+    static private final String[] COLUMN_NAMES =  new String[] {\r
         TIMESTAMP_COLUMN,\r
         SOURCE_COLUMN,\r
         TYPE_COLUMN,\r
@@ -65,7 +69,7 @@ public class TmfEventsTable extends TmfComponent {
     };\r
 \r
     // Column data\r
-    private class ColumnData {\r
+    static private class ColumnData {\r
         public final String header;\r
         public final int    width;\r
         public final int    alignment;\r
@@ -77,12 +81,12 @@ public class TmfEventsTable extends TmfComponent {
         }\r
     };\r
 \r
-    private ColumnData[] columnData = new ColumnData[] {\r
-        new ColumnData(columnProperties[0], 100, SWT.LEFT),\r
-        new ColumnData(columnProperties[1], 100, SWT.LEFT),\r
-        new ColumnData(columnProperties[2], 100, SWT.LEFT),\r
-        new ColumnData(columnProperties[3], 100, SWT.LEFT),\r
-        new ColumnData(columnProperties[4], 100, SWT.LEFT)\r
+    static private ColumnData[] COLUMN_DATA = new ColumnData[] {\r
+        new ColumnData(COLUMN_NAMES[0], 100, SWT.LEFT),\r
+        new ColumnData(COLUMN_NAMES[1], 100, SWT.LEFT),\r
+        new ColumnData(COLUMN_NAMES[2], 100, SWT.LEFT),\r
+        new ColumnData(COLUMN_NAMES[3], 100, SWT.LEFT),\r
+        new ColumnData(COLUMN_NAMES[4], 100, SWT.LEFT)\r
     };\r
 \r
     // ------------------------------------------------------------------------\r
@@ -93,6 +97,7 @@ public class TmfEventsTable extends TmfComponent {
     private TmfEvent[] cache = new TmfEvent[1];\r
     private int cacheStartIndex = 0;\r
     private int cacheEndIndex = 0;\r
+    private boolean fDisposeOnClose;\r
 //    private IResourceChangeListener fResourceChangeListener;\r
 \r
     // ------------------------------------------------------------------------\r
@@ -181,7 +186,7 @@ public class TmfEventsTable extends TmfComponent {
 \r
     public void dispose() {\r
         fTable.dispose();\r
-        if (fTrace != null) {\r
+        if (fTrace != null && fDisposeOnClose) {\r
             fTrace.dispose();\r
         }\r
         super.dispose();\r
@@ -197,10 +202,10 @@ public class TmfEventsTable extends TmfComponent {
      * FIXME: Add support for column selection\r
      */\r
     protected void createColumnHeaders(Table table) {\r
-        for (int i = 0; i < columnData.length; i++) {\r
-            TableColumn column = new TableColumn(table, columnData[i].alignment, i);\r
-            column.setText(columnData[i].header);\r
-            column.setWidth(columnData[i].width);\r
+        for (int i = 0; i < COLUMN_DATA.length; i++) {\r
+            TableColumn column = new TableColumn(table, COLUMN_DATA[i].alignment, i);\r
+            column.setText(COLUMN_DATA[i].header);\r
+            column.setWidth(COLUMN_DATA[i].width);\r
         }\r
     }\r
 \r
@@ -240,13 +245,21 @@ public class TmfEventsTable extends TmfComponent {
         fTable.setFocus();\r
     }\r
 \r
-    public void setTrace(ITmfTrace trace) {\r
+    /**\r
+     * @param trace\r
+     * @param disposeOnClose true if the trace should be disposed when the table is disposed\r
+     */\r
+    public void setTrace(ITmfTrace trace, boolean disposeOnClose) {\r
+        if (fTrace != null && fDisposeOnClose) {\r
+            fTrace.dispose();\r
+        }\r
         fTrace = trace;\r
+        fDisposeOnClose = disposeOnClose;\r
         \r
         // Perform the updates on the UI thread\r
         fTable.getDisplay().syncExec(new Runnable() {\r
             public void run() {\r
-                //fTable.setSelection(0); PATA\r
+                //fTable.setSelection(0);\r
                 fTable.removeAll();\r
                 cacheStartIndex = cacheEndIndex = 0; // Clear the cache\r
                 \r
@@ -322,25 +335,31 @@ public class TmfEventsTable extends TmfComponent {
     }\r
     \r
     @TmfSignalHandler\r
-    public void currentTimeUpdated(TmfTimeSynchSignal signal) {\r
+    public void currentTimeUpdated(final TmfTimeSynchSignal signal) {\r
         if (signal.getSource() != fTable && fTrace != null) {\r
-            final int index = (int) fTrace.getRank(signal.getCurrentTime());\r
-            // Perform the updates on the UI thread\r
-            fTable.getDisplay().asyncExec(new Runnable() {\r
-                public void run() {\r
-                    fTable.setSelection(index);\r
-                    // The timestamp might not correspond to an actual event\r
-                    // and the selection will point to the next experiment event.\r
-                    // But we would like to display both the event before and\r
-                    // after the selected timestamp.\r
-                    // This works fine by default except when the selected event\r
-                    // is the top displayed event. The following ensures that we\r
-                    // always see both events.\r
-                    if ((index > 0) && (index == fTable.getTopIndex())) {\r
-                        fTable.setTopIndex(index - 1);\r
-                    }\r
-                }\r
-            });\r
+            Job job = new Job("seeking...") {\r
+                @Override\r
+                protected IStatus run(IProgressMonitor monitor) {\r
+                    final int index = (int) fTrace.getRank(signal.getCurrentTime());\r
+                    // Perform the updates on the UI thread\r
+                    fTable.getDisplay().asyncExec(new Runnable() {\r
+                        public void run() {\r
+                            fTable.setSelection(index);\r
+                            // The timestamp might not correspond to an actual event\r
+                            // and the selection will point to the next experiment event.\r
+                            // But we would like to display both the event before and\r
+                            // after the selected timestamp.\r
+                            // This works fine by default except when the selected event\r
+                            // is the top displayed event. The following ensures that we\r
+                            // always see both events.\r
+                            if ((index > 0) && (index == fTable.getTopIndex())) {\r
+                                fTable.setTopIndex(index - 1);\r
+                            }\r
+                        }\r
+                    });\r
+                    return Status.OK_STATUS;\r
+                }};\r
+            job.schedule();\r
         }\r
     }\r
 }\r
index 00ed0e53bac16234343f84728e86ce4bae88a750..f44c1a9bd2f5dfde573841b988bc357552fb7158 100644 (file)
@@ -34,7 +34,7 @@ public class TmfEventsView extends TmfView {
 
     private TmfExperiment<TmfEvent> fExperiment;
     private TmfEventsTable fEventsTable;
-    private static final int DEFAULT_CACHE_SIZE = 1000;
+    private static final int DEFAULT_CACHE_SIZE = 100;
     private final int fCacheSize;
     private String fTitlePrefix;
     
@@ -109,7 +109,7 @@ public class TmfEventsView extends TmfView {
         setPartName(fTitlePrefix + " - " + fExperiment.getName());
 
         if (fEventsTable != null) {
-            fEventsTable.setTrace(fExperiment);
+            fEventsTable.setTrace(fExperiment, false);
         }
     }
 
index e8c7aec9e58f2fc6a16cddea229e6c1dae6165d4..d2e92d89e0fa51765d00d70c48b5b32fa3a0a972 100644 (file)
@@ -39,7 +39,6 @@ import org.eclipse.core.runtime.preferences.IEclipsePreferences.PreferenceChange
 import org.eclipse.core.runtime.preferences.InstanceScope;
 import org.eclipse.jface.action.MenuManager;
 import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.jface.viewers.TreeSelection;
 import org.eclipse.jface.viewers.TreeViewer;
 import org.eclipse.jface.viewers.ViewerDropAdapter;
 import org.eclipse.jface.viewers.ViewerSorter;
@@ -67,9 +66,11 @@ import org.eclipse.swt.dnd.Transfer;
 import org.eclipse.swt.dnd.TransferData;
 import org.eclipse.swt.events.MouseAdapter;
 import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.Tree;
+import org.eclipse.swt.widgets.TreeItem;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorPart;
 import org.eclipse.ui.IReusableEditor;
@@ -304,8 +305,9 @@ public class ProjectView extends TmfView {
         fViewer.getTree().addMouseListener(new MouseAdapter() {
                @Override
                        public void mouseDoubleClick(MouseEvent event) {
-                TreeSelection selection = (TreeSelection) fViewer.getSelection();
-                Object element = selection.getFirstElement();
+                TreeItem treeItem = fViewer.getTree().getItem(new Point(event.x, event.y));
+                if (treeItem == null) return;
+                Object element = treeItem.getData();
                 if (element instanceof TmfExperimentNode) {
                        TmfExperimentNode experiment = (TmfExperimentNode) element;
                        selectExperiment(experiment);                
index f50c85d3978f12e6e160d38419e7f5a2bf06b52d..699b58ddc9e661208d2a0969544e7b2a14b1a72a 100644 (file)
@@ -204,7 +204,7 @@ public class CustomTxtParserOutputWizardPage extends WizardPage {
             ITmfTrace trace = new CustomTxtTrace(tmpFile.getName(), definition, tmpFile.getAbsolutePath(), MAX_NUM_ENTRIES);\r
             previewTable.dispose();\r
             previewTable = new CustomEventsTable(definition, tableContainer, MAX_NUM_ENTRIES);\r
-            previewTable.setTrace(trace);\r
+            previewTable.setTrace(trace, true);\r
             previewTable.getTable().setItemCount(MAX_NUM_ENTRIES); // Trigger parsing\r
         } catch (FileNotFoundException e) {\r
             e.printStackTrace();\r
index 573e5ec62767a91dbee46205071caa30196f4028..5565174db1cd4cb6f4f30ff499db4dd09a66694b 100644 (file)
@@ -205,7 +205,7 @@ public class CustomXmlParserOutputWizardPage extends WizardPage {
             ITmfTrace trace = new CustomXmlTrace(tmpFile.getName(), definition, tmpFile.getAbsolutePath(), MAX_NUM_ENTRIES);\r
             previewTable.dispose();\r
             previewTable = new CustomEventsTable(definition, tableContainer, MAX_NUM_ENTRIES);\r
-            previewTable.setTrace(trace);\r
+            previewTable.setTrace(trace, true);\r
             previewTable.getTable().setItemCount(MAX_NUM_ENTRIES); // Trigger parsing\r
         } catch (FileNotFoundException e) {\r
             e.printStackTrace();\r
This page took 0.031564 seconds and 5 git commands to generate.