2010-07-28 Francois Chouinard <fchouinard@gmail.com> Fix for Bug316349 + a bunch...
authorFrancois Chouinard <fchouinard@gmail.com>
Wed, 28 Jul 2010 18:10:12 +0000 (18:10 +0000)
committerFrancois Chouinard <fchouinard@gmail.com>
Wed, 28 Jul 2010 18:10:12 +0000 (18:10 +0000)
* src/org/eclipse/linuxtools/lttng/ui/views/events/EventsTable.java: Cleanup
* src/org/eclipse/linuxtools/tmf/ui/widgets/ColumnData.java: New file.
* src/org/eclipse/linuxtools/tmf/ui/widgets/TmfVirtualTable.java: New file.
* META-INF/MANIFEST.MF: Export org.eclipse.linuxtools.tmf.ui.widgets
* src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java: Replace Table by TmfVirtualTable

35 files changed:
org.eclipse.linuxtools.lttng.ui/ChangeLog
org.eclipse.linuxtools.lttng.ui/src/org/eclipse/linuxtools/lttng/ui/views/events/EventsTable.java
org.eclipse.linuxtools.tmf.tests/ChangeLog [new file with mode: 0644]
org.eclipse.linuxtools.tmf.tests/stubs/org/eclipse/linuxtools/tmf/component/TmfSyntheticEventProviderStub.java
org.eclipse.linuxtools.tmf.ui/ChangeLog
org.eclipse.linuxtools.tmf.ui/META-INF/MANIFEST.MF
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/editors/TmfEditorInput.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/parsers/custom/CustomEventsTable.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/parsers/custom/CustomTxtTraceDefinition.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/parsers/custom/CustomXmlTraceDefinition.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/project/handlers/CloseProjectHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/DeleteExperimentHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/DeleteProjectHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/DeleteTraceHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/ImportTraceHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/NewExperimentHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/NewProjectHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/OpenExperimentHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/OpenProjectHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/OpenTraceHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/RefreshHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/RenameExperimentHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/RenameProjectHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/RenameTraceHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/SelectParserHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/SelectTracesHandler.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/widgets/ColumnData.java [new file with mode: 0644]
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/widgets/TmfVirtualTable.java [new file with mode: 0644]
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/wizards/CustomTxtParserInputWizardPage.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/CustomTxtParserWizard.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/wizards/CustomXmlParserInputWizardPage.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/wizards/CustomXmlParserOutputWizardPage.java
org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/wizards/CustomXmlParserWizard.java

index d4f5a19bfb1c8edabe34b5f86adddc472a4f6179..b47411d4dd0beaebf13a4506f001e3e40ccd789f 100644 (file)
@@ -1,3 +1,7 @@
+2010-07-28  Francois Chouinard  <fchouinard@gmail.com>
+
+       * src/org/eclipse/linuxtools/lttng/ui/views/events/EventsTable.java: Cleanup 
+
 2010-07-14  Francois Chouinard  <fchouinard@gmail.com>
 
        * plugin.xml: Point to the 16x16 LTTng icon for the perspective
index c74bb960ebeb7aac9ccc42db5d161d96257ff5bf..81dad5e35c0be20ee607aa3a1303745926b46718 100644 (file)
@@ -15,12 +15,9 @@ package org.eclipse.linuxtools.lttng.ui.views.events;
 import org.eclipse.linuxtools.lttng.event.LttngEventContent;\r
 import org.eclipse.linuxtools.tmf.event.TmfEvent;\r
 import org.eclipse.linuxtools.tmf.ui.viewers.events.TmfEventsTable;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.ColumnData;\r
 import org.eclipse.swt.SWT;\r
-import org.eclipse.swt.events.SelectionEvent;\r
-import org.eclipse.swt.events.SelectionListener;\r
 import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Table;\r
-import org.eclipse.swt.widgets.TableColumn;\r
 \r
 public class EventsTable extends TmfEventsTable {\r
 \r
@@ -42,19 +39,6 @@ public class EventsTable extends TmfEventsTable {
         CONTENT_COLUMN\r
     };\r
 \r
-    // Column data\r
-    static private class ColumnData {\r
-        public final String header;\r
-        public final int    width;\r
-        public final int    alignment;\r
-\r
-        public ColumnData(String h, int w, int a) {\r
-            header = h;\r
-            width = w;\r
-            alignment = a;\r
-        }\r
-    };\r
-\r
     static private final ColumnData[] COLUMN_DATA = new ColumnData[] {\r
         new ColumnData(COLUMN_NAMES[0], 125, SWT.LEFT),\r
         new ColumnData(COLUMN_NAMES[1], 100, SWT.LEFT),\r
@@ -68,31 +52,7 @@ public class EventsTable extends TmfEventsTable {
     // ------------------------------------------------------------------------\r
 \r
     public EventsTable(Composite parent, int cacheSize) {\r
-        super(parent, cacheSize);\r
-    }\r
-\r
-    /**\r
-     * @param table\r
-     * \r
-     * FIXME: Add support for column selection\r
-     */\r
-    @Override\r
-    protected void createColumnHeaders(Table table) {\r
-        for (int i = 0; i < COLUMN_DATA.length; i++) {\r
-            final 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
-            // TODO: Investigate why the column resizing doesn't work by default\r
-            // Anything to do with SWT_VIRTUAL?\r
-            column.addSelectionListener(new SelectionListener() {\r
-                public void widgetDefaultSelected(SelectionEvent e) {\r
-                    // TODO Auto-generated method stub\r
-                }\r
-                public void widgetSelected(SelectionEvent e) {\r
-                    column.pack();\r
-                }\r
-            });\r
-        }\r
+        super(parent, cacheSize, COLUMN_DATA);\r
     }\r
 \r
     /**\r
diff --git a/org.eclipse.linuxtools.tmf.tests/ChangeLog b/org.eclipse.linuxtools.tmf.tests/ChangeLog
new file mode 100644 (file)
index 0000000..ea46def
--- /dev/null
@@ -0,0 +1,3 @@
+2010-07-28  Francois Chouinard  <fchouinard@gmail.com>
+
+       * stubs/org/eclipse/linuxtools/tmf/component/TmfSyntheticEventProviderStub.java: Missing @Override
\ No newline at end of file
index 4e4b6d16eb7eee37fee0706997424ffa17211b92..6de6d763635937fc990079d10f431c67214d952f 100644 (file)
@@ -81,6 +81,7 @@ public class TmfSyntheticEventProviderStub extends TmfEventProvider<TmfSynthetic
 
        private static final int TIMEOUT = 10000;
 
+       @Override
        public TmfSyntheticEventStub getNext(ITmfContext context) {
                TmfSyntheticEventStub data = null;
                try {
index f916227dd71991c7df2fc7df0eb82a75cbbd270c..439b66a91e7788183cc0677a55d3765f6bff020b 100644 (file)
@@ -1,3 +1,36 @@
+2010-07-28  Francois Chouinard  <fchouinard@gmail.com>
+
+       * src/org/eclipse/linuxtools/tmf/ui/widgets/ColumnData.java: New file.
+       * src/org/eclipse/linuxtools/tmf/ui/widgets/TmfVirtualTable.java: New file.
+       * META-INF/MANIFEST.MF: Export org.eclipse.linuxtools.tmf.ui.widgets
+       * src/org/eclipse/linuxtools/tmf/ui/editors/TmfEditorInput.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/parsers/custom/CustomEventsTable.java: Missing @Override 
+       * src/org/eclipse/linuxtools/tmf/ui/parsers/custom/CustomTxtTraceDefinition.java: Missing @Override 
+       * src/org/eclipse/linuxtools/tmf/ui/parsers/custom/CustomXmlTraceDefinition.java: Missing @Override 
+       * src/org/eclipse/linuxtools/tmf/ui/viewers/events/TmfEventsTable.java: Replace Table by TmfVirtualTable
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/CloseProjectHandler.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/DeleteExperimentHandler.java: Missing @Override 
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/DeleteProjectHandler.java : Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/DeleteTraceHandler.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/ImportTraceHandler.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/NewExperimentHandler.java: Missing @Override 
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/NewProjectHandler.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/OpenExperimentHandler.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/OpenProjectHandler.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/OpenTraceHandler.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/RefreshHandler.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/RenameExperimentHandler.java: Missing @Override 
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/RenameProjectHandler.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/RenameTraceHandler.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/SelectParserHandler.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/views/project/handlers/SelectTracesHandler.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/wizards/CustomTxtParserInputWizardPage.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/wizards/CustomTxtParserOutputWizardPage.java: Missing @Override 
+       * src/org/eclipse/linuxtools/tmf/ui/wizards/CustomTxtParserWizard.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/wizards/CustomXmlParserInputWizardPage.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/wizards/CustomXmlParserOutputWizardPage.java: Missing @Override
+       * src/org/eclipse/linuxtools/tmf/ui/wizards/CustomXmlParserWizard.java: Missing @Override
+
 2010-07-20  Francois Chouinard  <fchouinard@gmail.com>
 
        * src/org/eclipse/linuxtools/tmf/ui/editors/TmfEventsEditor.java 
index 3f01a433837808a2724dced215bc10801110de9f..13d57666f3405834d37ef976fe7d972b89444726 100644 (file)
@@ -22,5 +22,6 @@ Export-Package: org.eclipse.linuxtools.tmf.ui,
  org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.model,
  org.eclipse.linuxtools.tmf.ui.viewers.timeAnalysis.widgets,
  org.eclipse.linuxtools.tmf.ui.views,
- org.eclipse.linuxtools.tmf.ui.views.project
+ org.eclipse.linuxtools.tmf.ui.views.project,
+ org.eclipse.linuxtools.tmf.ui.widgets
 Bundle-Localization: plugin
index 0355d6b6a0277574042d9a3dacacc609c9d2fc0d..3740fae215b672995fbb57defac3e9302f83a5bf 100644 (file)
@@ -72,7 +72,8 @@ public class TmfEditorInput implements IEditorInput {
         return fTrace;\r
     }\r
 \r
-    public boolean equals(Object obj) {\r
+    @Override\r
+       public boolean equals(Object obj) {\r
         if (obj instanceof TmfEditorInput) {\r
             return fResource.equals(((TmfEditorInput) obj).fResource);\r
         } else if (obj instanceof IFileEditorInput) {\r
index f8d4a7bf712a937e6aa1c96e9ac67b745949eeb4..22e8defce45d4f9ec8427a08fbc3c409ddc12cd3 100644 (file)
 package org.eclipse.linuxtools.tmf.ui.parsers.custom;\r
 \r
 import java.text.SimpleDateFormat;\r
+import java.util.LinkedList;\r
+import java.util.List;\r
 import java.util.TimeZone;\r
 \r
 import org.eclipse.linuxtools.tmf.event.TmfEvent;\r
 import org.eclipse.linuxtools.tmf.ui.parsers.custom.CustomTraceDefinition.OutputColumn;\r
 import org.eclipse.linuxtools.tmf.ui.viewers.events.TmfEventsTable;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.ColumnData;\r
 import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.widgets.Composite;\r
-import org.eclipse.swt.widgets.Table;\r
-import org.eclipse.swt.widgets.TableColumn;\r
 \r
 public class CustomEventsTable extends TmfEventsTable {\r
 \r
@@ -30,7 +31,7 @@ public class CustomEventsTable extends TmfEventsTable {
     public CustomEventsTable(CustomTraceDefinition definition, Composite parent, int cacheSize) {\r
         super(parent, cacheSize);\r
         fDefinition = definition;\r
-        createColumnHeaders(fTable);\r
+        createColumnHeaders();\r
     }\r
 \r
     public static final String TIMESTAMP_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";\r
@@ -39,16 +40,27 @@ public class CustomEventsTable extends TmfEventsTable {
         TIMESTAMP_SIMPLE_DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("GMT"));\r
     }\r
 \r
-    @Override\r
-    public void createColumnHeaders(final Table table) {\r
-        if (fDefinition == null) return; // ignore when called by the super constructor\r
-        for (OutputColumn outputColumn : fDefinition.outputs) {\r
-            TableColumn column = new TableColumn(table, SWT.LEFT);\r
-            column.setText(outputColumn.name);\r
-            column.pack();\r
-        }\r
+    protected void createColumnHeaders() {\r
+               if (fDefinition == null)\r
+                       return;\r
+       List<ColumnData> columnData = new LinkedList<ColumnData>();\r
+               for (OutputColumn outputColumn : fDefinition.outputs) {\r
+                       ColumnData column = new ColumnData(outputColumn.name, 0, SWT.LEFT);\r
+                       columnData.add(column);\r
+               }\r
+       setColumnHeaders((ColumnData[]) columnData.toArray());\r
     }\r
 \r
+//    @Override\r
+//    public void createColumnHeaders(final Table table) {\r
+//        if (fDefinition == null) return; // ignore when called by the super constructor\r
+//        for (OutputColumn outputColumn : fDefinition.outputs) {\r
+//            TableColumn column = new TableColumn(table, SWT.LEFT);\r
+//            column.setText(outputColumn.name);\r
+//            column.pack();\r
+//        }\r
+//    }\r
+\r
     @Override\r
     public String[] extractItemFields(TmfEvent event) {\r
         if (event instanceof CustomEvent) {\r
index 0e18903021e89dec1c243f3b1276877368c81a24..e9a6d5ee13e91ccd84e443bc4cf95a3fba155f7a 100644 (file)
@@ -251,11 +251,13 @@ public class CustomTxtTraceDefinition extends CustomTraceDefinition {
         }\r
     }\r
     \r
-    public void save() {\r
+    @Override\r
+       public void save() {\r
         save(CUSTOM_TXT_TRACE_DEFINITIONS_PATH_NAME);\r
     }\r
     \r
-    public void save(String path) {\r
+    @Override\r
+       public void save(String path) {\r
         try {\r
             DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();\r
             DocumentBuilder db = dbf.newDocumentBuilder();\r
index fb9f036c26c8c8ce3a7b079a58ecbb92b341f273..c6f8b285538f32e97fab4751a56ea0ecce6699ae 100644 (file)
@@ -167,10 +167,12 @@ public class CustomXmlTraceDefinition extends CustomTraceDefinition {
         }\r
     }\r
 \r
+       @Override\r
     public void save() {\r
         save(CUSTOM_XML_TRACE_DEFINITIONS_PATH_NAME);\r
     }\r
     \r
+       @Override\r
     public void save(String path) {\r
         try {\r
             DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();\r
index edb3b0db739edb444511db7a33432879b40d1da3..e6448957d97382f0b6dd0ae46a9a45f9f321480a 100644 (file)
@@ -9,6 +9,7 @@
  * Contributors:\r
  *   Francois Chouinard - Initial API and implementation\r
  *   Patrick Tasse - Factored out from events view\r
+ *   Francois Chouinard - Replaced Table by TmfVirtualTable\r
  *******************************************************************************/\r
 \r
 package org.eclipse.linuxtools.tmf.ui.viewers.events;\r
@@ -28,6 +29,8 @@ import org.eclipse.linuxtools.tmf.signal.TmfSignalHandler;
 import org.eclipse.linuxtools.tmf.signal.TmfTimeSynchSignal;\r
 import org.eclipse.linuxtools.tmf.signal.TmfTraceUpdatedSignal;\r
 import org.eclipse.linuxtools.tmf.trace.ITmfTrace;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.ColumnData;\r
+import org.eclipse.linuxtools.tmf.ui.widgets.TmfVirtualTable;\r
 import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.events.SelectionAdapter;\r
 import org.eclipse.swt.events.SelectionEvent;\r
@@ -35,7 +38,6 @@ import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.widgets.Composite;\r
 import org.eclipse.swt.widgets.Event;\r
 import org.eclipse.swt.widgets.Listener;\r
-import org.eclipse.swt.widgets.Table;\r
 import org.eclipse.swt.widgets.TableColumn;\r
 import org.eclipse.swt.widgets.TableItem;\r
 \r
@@ -50,7 +52,7 @@ public class TmfEventsTable extends TmfComponent {
     // Table data\r
     // ------------------------------------------------------------------------\r
 \r
-    protected Table fTable;\r
+    protected TmfVirtualTable fTable;\r
     protected ITmfTrace fTrace;\r
     protected boolean fPackDone = false;\r
 \r
@@ -68,19 +70,6 @@ public class TmfEventsTable extends TmfComponent {
         CONTENT_COLUMN\r
     };\r
 \r
-    // Column data\r
-    static private class ColumnData {\r
-        public final String header;\r
-        public final int    width;\r
-        public final int    alignment;\r
-\r
-        public ColumnData(String h, int w, int a) {\r
-            header = h;\r
-            width = w;\r
-            alignment = a;\r
-        }\r
-    };\r
-\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
@@ -93,28 +82,30 @@ public class TmfEventsTable extends TmfComponent {
     // Event cache\r
     // ------------------------------------------------------------------------\r
 \r
-    private final int fCacheSize;\r
-    private TmfEvent[] cache = new TmfEvent[1];\r
-    private int cacheStartIndex = 0;\r
-    private int cacheEndIndex = 0;\r
+    private final int  fCacheSize;\r
+    private TmfEvent[] fCache;\r
+    private int fCacheStartIndex = 0;\r
+    private int fCacheEndIndex   = 0;\r
+\r
     private boolean fDisposeOnClose;\r
-//    private IResourceChangeListener fResourceChangeListener;\r
 \r
     // ------------------------------------------------------------------------\r
     // Constructor\r
     // ------------------------------------------------------------------------\r
 \r
     public TmfEventsTable(Composite parent, int cacheSize) {\r
+       this(parent, cacheSize, COLUMN_DATA);\r
+    }\r
+\r
+    public TmfEventsTable(Composite parent, int cacheSize, ColumnData[] columnData) {\r
         super("TmfEventsTable");\r
         \r
         fCacheSize = cacheSize;\r
-        \r
-//        fShell = parent.getShell();\r
+        fCache = new TmfEvent[fCacheSize];\r
         \r
         // Create a virtual table\r
-        // TODO: change SINGLE to MULTI line selection and adjust the selection listener\r
-        final int style = SWT.SINGLE | SWT.FULL_SELECTION | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER | SWT.VIRTUAL;\r
-        fTable = new Table(parent, style);\r
+        final int style = SWT.SINGLE | SWT.FULL_SELECTION | SWT.BORDER;\r
+        fTable = new TmfVirtualTable(parent, style);\r
 \r
         // Set the table layout\r
         GridData layoutData = new GridData(SWT.FILL, SWT.FILL, true, true);\r
@@ -125,11 +116,10 @@ public class TmfEventsTable extends TmfComponent {
         fTable.setLinesVisible(true);\r
 \r
         // Set the columns\r
-        createColumnHeaders(fTable);\r
+        setColumnHeaders(columnData);\r
 \r
         // Handle the table item requests \r
         fTable.addSelectionListener(new SelectionAdapter() {\r
-\r
             @Override\r
             public void widgetSelected(SelectionEvent e) {\r
                 TmfTimestamp ts = (TmfTimestamp) fTable.getSelection()[0].getData();\r
@@ -147,10 +137,10 @@ public class TmfEventsTable extends TmfComponent {
                 final int index = fTable.indexOf(item);\r
 \r
                 // Note: this works because handleEvent() is called once for each row, in sequence  \r
-                if ((index >= cacheStartIndex ) && (index < cacheEndIndex)) {\r
-                    int i = index - cacheStartIndex;\r
-                    item.setText(extractItemFields(cache[i]));\r
-                    item.setData(new TmfTimestamp(cache[i].getTimestamp()));\r
+                if ((index >= fCacheStartIndex) && (index < fCacheEndIndex)) {\r
+                    int i = index - fCacheStartIndex;\r
+                    item.setText(extractItemFields(fCache[i]));\r
+                    item.setData(new TmfTimestamp(fCache[i].getTimestamp()));\r
                     return;\r
                 }\r
 \r
@@ -159,9 +149,9 @@ public class TmfEventsTable extends TmfComponent {
                     public void handleData() {\r
                         TmfEvent[] tmpEvent = getData();\r
                         if ((tmpEvent != null) && (tmpEvent.length > 0)) {\r
-                            cache = tmpEvent;\r
-                            cacheStartIndex = index;\r
-                            cacheEndIndex = index + tmpEvent.length;\r
+                            fCache = tmpEvent;\r
+                            fCacheStartIndex = index;\r
+                            fCacheEndIndex = index + tmpEvent.length;\r
                         }\r
                     }\r
                 };\r
@@ -172,10 +162,10 @@ public class TmfEventsTable extends TmfComponent {
                     e.printStackTrace();\r
                 }\r
                 \r
-                if (cache[0] != null && cacheStartIndex == index) {\r
-                    item.setText(extractItemFields(cache[0]));\r
-                    item.setData(new TmfTimestamp(cache[0].getTimestamp()));\r
-                    packColumns(fTable);\r
+                if (fCache[0] != null && fCacheStartIndex == index) {\r
+                    item.setText(extractItemFields(fCache[0]));\r
+                    item.setData(new TmfTimestamp(fCache[0].getTimestamp()));\r
+                    packColumns();\r
                 }\r
                 \r
             }\r
@@ -184,7 +174,8 @@ public class TmfEventsTable extends TmfComponent {
         fTable.setItemCount(0);\r
     }\r
 \r
-    public void dispose() {\r
+    @Override\r
+       public void dispose() {\r
         fTable.dispose();\r
         if (fTrace != null && fDisposeOnClose) {\r
             fTrace.dispose();\r
@@ -192,7 +183,7 @@ public class TmfEventsTable extends TmfComponent {
         super.dispose();\r
     }\r
 \r
-    public Table getTable() {\r
+    public TmfVirtualTable getTable() {\r
         return fTable;\r
     }\r
     \r
@@ -201,15 +192,11 @@ public class TmfEventsTable extends TmfComponent {
      * \r
      * FIXME: Add support for column selection\r
      */\r
-    protected void createColumnHeaders(Table table) {\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
+    protected void setColumnHeaders(ColumnData[] columnData) {\r
+       fTable.setColumnHeaders(columnData);\r
     }\r
 \r
-    protected void packColumns(Table table) {\r
+    protected void packColumns() {\r
         if (fPackDone) return;\r
         for (TableColumn column : fTable.getColumns()) {\r
             int headerWidth = column.getWidth();\r
@@ -261,7 +248,7 @@ public class TmfEventsTable extends TmfComponent {
             public void run() {\r
                 //fTable.setSelection(0);\r
                 fTable.removeAll();\r
-                cacheStartIndex = cacheEndIndex = 0; // Clear the cache\r
+                fCacheStartIndex = fCacheEndIndex = 0; // Clear the cache\r
                 \r
                 if (!fTable.isDisposed() && fTrace != null) {\r
                     //int nbEvents = (int) fTrace.getNbEvents();\r
@@ -270,19 +257,6 @@ public class TmfEventsTable extends TmfComponent {
                 }\r
             }\r
         });\r
-//        ProgressMonitorDialog dialog = new ProgressMonitorDialog(fShell);\r
-//        try {\r
-//            dialog.run(false, false, new IRunnableWithProgress() {\r
-//                public void run(final IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {\r
-//                    monitor.beginTask("Cleaning up, please wait", 0);\r
-//\r
-//\r
-//                    monitor.done();\r
-//                }\r
-//              });\r
-//        } catch (InvocationTargetException e) {\r
-//        } catch (InterruptedException e) {\r
-//        }\r
     }\r
 \r
     // ------------------------------------------------------------------------\r
@@ -297,6 +271,7 @@ public class TmfEventsTable extends TmfComponent {
             public void run() {\r
                 if (!fTable.isDisposed() && fTrace != null) {\r
                     fTable.setItemCount((int) fTrace.getNbEvents());\r
+                    fTable.refresh();\r
                 }\r
             }\r
         });\r
index 427661fb4700dd7ceb3b990208c5ae33e96c9782..e3d728cb1cd382e7876d0994cb8de49faac039f8 100644 (file)
@@ -36,6 +36,7 @@ public class CloseProjectHandler extends AbstractHandler {
        // Validation
        // ------------------------------------------------------------------------
 
+       @Override
        public boolean isEnabled() {
                
                // Check if we are closing down
index d40f6126e185d92439a24ce3acf2a431c0183b90..924f38aecafc5a2d9ba69b249e04084fd4b92abc 100644 (file)
@@ -39,6 +39,7 @@ public class DeleteExperimentHandler extends AbstractHandler {
        // Validation
        // ------------------------------------------------------------------------
 
+       @Override
        public boolean isEnabled() {
 
                // Check if we are closing down
index 612ea06ff1ccf0da131c9bb6c6873af2f43fde04..8bbc3653bc80c2457afc8adff3c84fc580eeb418 100644 (file)
@@ -39,6 +39,7 @@ public class DeleteProjectHandler extends AbstractHandler {
        // Validation
        // ------------------------------------------------------------------------
 
+       @Override
        public boolean isEnabled() {
                
                // Check if we are closing down
index 66bbddab973c9856617b392aaf97fff713063288..1fa9598aebe1e470bf4a948480ac30b166e7ffc2 100644 (file)
@@ -41,6 +41,7 @@ public class DeleteTraceHandler extends AbstractHandler {
        // Validation
        // ------------------------------------------------------------------------
 
+       @Override
        public boolean isEnabled() {
                
                // Check if we are closing down
index 303a5ca715365618d357d2b2ad4ac5fbed676551..af90aed4bfeff17a4b6279b25693d03abf12f3e0 100644 (file)
@@ -42,6 +42,7 @@ public class ImportTraceHandler extends AbstractHandler {
        // Validation
        // ------------------------------------------------------------------------
 
+       @Override
        public boolean isEnabled() {
                
                // Check if we are closing down
index 592234167d9b86a9053765c48f9aba52295fe6df..4d638260674ffa5e087087468d64cdcbe6861368 100644 (file)
@@ -42,6 +42,7 @@ public class NewExperimentHandler extends AbstractHandler {
        // Validation
        // ------------------------------------------------------------------------
 
+       @Override
        public boolean isEnabled() {
 
                // Check if we are closing down
index a3e778cf0585d638c1889c750a3c624607370a7d..03df7f2fe015345517d68a6b103149a9485d3aeb 100644 (file)
@@ -44,6 +44,7 @@ public class NewProjectHandler extends AbstractHandler {
        // Validation
        // ------------------------------------------------------------------------
 
+       @Override
        public boolean isEnabled() {
                
                // Check if we are closing down
index c45c606a34ce7ef0b28bebe33a8277e2dc94b2fc..7de08393e7e861c21520bfb69fd3b729e14632a6 100644 (file)
@@ -36,6 +36,7 @@ public class OpenExperimentHandler extends AbstractHandler {
        // Validation
        // ------------------------------------------------------------------------
 
+       @Override
        public boolean isEnabled() {
                // Check if we are closing down
                IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
index e1a67260504bee7abeea57e60c687821ff165550..2e5c8e5723a7dba786f7c19f91bc5be188d91567 100644 (file)
@@ -36,6 +36,7 @@ public class OpenProjectHandler extends AbstractHandler {
        // Validation
        // ------------------------------------------------------------------------
 
+       @Override
        public boolean isEnabled() {
                
                // Check if we are closing down
index 6b7eaf6a0279a81f8793e00115e4bac97fd40128..151cfcb1fa9917f36572bbbaeec5db2f50f76146 100644 (file)
@@ -46,6 +46,7 @@ public class OpenTraceHandler extends AbstractHandler {
        // Validation
        // ------------------------------------------------------------------------
 
+       @Override
        public boolean isEnabled() {
            
         // Check if we are closing down
index 8123f6d86537be0cd9570bf9aa7cd558cf16e28b..05d2966caa68abb398c1a8b6ad03631d3283bbd4 100644 (file)
@@ -40,6 +40,7 @@ public class RefreshHandler extends AbstractHandler {
        // Validation
        // ------------------------------------------------------------------------
 
+       @Override
        public boolean isEnabled() {
                
                // Check if we are closing down
index d65dd61c1a748ba0d4de79f81ba87d9b7c25699c..2dcd99f2616a0f165f5d1ebbaca960a0d179c2c6 100644 (file)
@@ -32,6 +32,7 @@ public class RenameExperimentHandler extends AbstractHandler {
        // Validation
        // ------------------------------------------------------------------------
 
+       @Override
        public boolean isEnabled() {
                return (fExperiment != null);
        }
index 45fe8abbfc849257079094242c68ebc5070faa18..b7f90cd4bdd4e8f7fc2c82a22ba5a70efe7717e0 100644 (file)
@@ -32,6 +32,7 @@ public class RenameProjectHandler extends AbstractHandler {
        // Validation
        // ------------------------------------------------------------------------
 
+       @Override
        public boolean isEnabled() {
 
 //             // Check if we are closing down
index b077b245ff7e8075d5dca30820b37875c007385f..46728aff080cf0461dee7c8e12c2aff74b73cc66 100644 (file)
@@ -32,6 +32,7 @@ public class RenameTraceHandler extends AbstractHandler {
        // Validation
        // ------------------------------------------------------------------------
 
+       @Override
        public boolean isEnabled() {
                return (fTrace != null);
        }
index 2d55dbc171eadd3f57b5bc8543c561022bf7c504..ad546e27928e60804be541d9a02c1190f3dee234 100644 (file)
@@ -45,6 +45,7 @@ public class SelectParserHandler extends AbstractHandler {
     // Validation\r
     // ------------------------------------------------------------------------\r
 \r
+       @Override\r
     public boolean isEnabled() {\r
         \r
         // Check if we are closing down\r
index 054d9502056bddbe8cdd1586e5995825a4db5418..056f0d69dfd63b96c2c6d01d7b35c3db1de14e43 100644 (file)
@@ -40,6 +40,7 @@ public class SelectTracesHandler extends AbstractHandler {
        // Validation
        // ------------------------------------------------------------------------
 
+       @Override
        public boolean isEnabled() {
 
                // Check if we are closing down
diff --git a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/widgets/ColumnData.java b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/widgets/ColumnData.java
new file mode 100644 (file)
index 0000000..6c20fa5
--- /dev/null
@@ -0,0 +1,26 @@
+/*******************************************************************************\r
+ * Copyright (c) 2010 Ericsson\r
+ * \r
+ * All rights reserved. This program and the accompanying materials are\r
+ * made available under the terms of the Eclipse Public License v1.0 which\r
+ * accompanies this distribution, and is available at\r
+ * http://www.eclipse.org/legal/epl-v10.html\r
+ * \r
+ * Contributors:\r
+ *   Matthew Khouzam - Extracted from TmfEventsView\r
+ ******************************************************************************/\r
+\r
+package org.eclipse.linuxtools.tmf.ui.widgets;\r
+\r
+public class ColumnData {\r
+    public final String header;\r
+    public final int    width;\r
+    public final int    alignment;\r
+\r
+    public ColumnData(String h, int w, int a) {\r
+        header = h;\r
+        width = w;\r
+        alignment = a;\r
+    }\r
+\r
+}\r
diff --git a/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/widgets/TmfVirtualTable.java b/org.eclipse.linuxtools.tmf.ui/src/org/eclipse/linuxtools/tmf/ui/widgets/TmfVirtualTable.java
new file mode 100644 (file)
index 0000000..24a5401
--- /dev/null
@@ -0,0 +1,451 @@
+/*******************************************************************************
+ * Copyright (c) 2010 Ericsson
+ * 
+ * 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:
+ *   Matthew Khouzam - Initial API and implementation
+ *   Francois Chouinard - Refactoring, slider support, bug fixing 
+ ******************************************************************************/
+
+package org.eclipse.linuxtools.tmf.ui.widgets;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseWheelListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Event;
+import org.eclipse.swt.widgets.Listener;
+import org.eclipse.swt.widgets.Slider;
+import org.eclipse.swt.widgets.Table;
+import org.eclipse.swt.widgets.TableColumn;
+import org.eclipse.swt.widgets.TableItem;
+
+/**
+ * <b><u>TmfVirtualTable</u></b>
+ * <p>
+ * TmfVirtualTable allows for the tabular display of arbitrarily large data sets
+ * (well, up to Integer.MAX_VALUE or ~2G rows).
+ * 
+ * It is essentially a Composite of Table and Slider, where the number of rows
+ * in the table is set to fill the table display area. The slider is rank-based.
+ * 
+ * It differs from Table with the VIRTUAL style flag where an empty entry is
+ * created for each virtual row. This does not scale well for very large data sets.
+ */
+public class TmfVirtualTable extends Composite {
+
+       // The table
+       private Table fTable;
+       private int   fFirstRowOffset = 0;
+       private int   fTableRow       = 0; 
+       private int   fEffectiveRow   = 0; 
+
+       private TableItem fSelectedItems[] = null;
+       private int       fTableItemCount  = 0;
+       private int       fRowsDisplayed;
+       private TableItem fTableItems[];
+
+       // The slider
+       private Slider  fSlider;
+
+       // ------------------------------------------------------------------------
+       // Constructor
+       // ------------------------------------------------------------------------
+
+       /**
+        * @param parent
+        * @param style
+        */
+       public TmfVirtualTable(Composite parent, int style) {
+               super(parent, style | SWT.BORDER & (~SWT.H_SCROLL) & (~SWT.V_SCROLL));
+
+               // Create the controls
+               createTable();
+               createSlider();
+
+               // Set the layout
+               GridLayout gridLayout = new GridLayout();
+               gridLayout.numColumns = 2;
+               gridLayout.horizontalSpacing = 0;
+               gridLayout.verticalSpacing = 0;
+               gridLayout.marginWidth = 0;
+               setLayout(gridLayout);
+               
+               GridData tableGridData = new GridData(SWT.FILL, SWT.FILL, true, true);
+               fTable.setLayoutData(tableGridData);
+
+               GridData sliderGridData = new GridData(SWT.FILL, SWT.FILL, false, true);
+               fSlider.setLayoutData(sliderGridData);
+
+               // Add the listeners
+               addMouseWheelListener(new MouseWheelListener() {
+                       public void mouseScrolled(MouseEvent event) {
+                               fFirstRowOffset -= event.count;
+                               int lastFirstRowOffset = fTableItemCount - fRowsDisplayed - 1;
+                               if (fFirstRowOffset > lastFirstRowOffset) {
+                                       fFirstRowOffset = lastFirstRowOffset;
+                               } else if (fFirstRowOffset < 0) {
+                                       fFirstRowOffset = 0;
+                               }
+                               fSlider.setSelection(fFirstRowOffset);
+                               setSelection();
+                       }
+               });
+
+               addControlListener(new ControlAdapter() {
+                       @Override
+                       public void controlResized(ControlEvent event) {
+                               resize();
+                       }
+               });             
+
+               // And display
+               refresh();
+       }
+
+       // ------------------------------------------------------------------------
+       // Table handling
+       // ------------------------------------------------------------------------
+
+       /**
+        * Create the table and add listeners
+        */
+       private void createTable() {
+
+               int tableStyle = SWT.NO_SCROLL | SWT.SINGLE | SWT.FULL_SELECTION; 
+               fTable = new Table(this, tableStyle);
+
+               fTable.addSelectionListener(new SelectionAdapter() {
+                       @Override
+                       public void widgetSelected(SelectionEvent event) {
+                               handleTableSelection();
+                       }
+               });
+
+               fTable.addKeyListener(new KeyListener() {
+                       public void keyPressed(KeyEvent event) {
+                               handleTableKeyEvent(event);
+                       }
+                       public void keyReleased(KeyEvent event) {
+                       }
+               });
+       }       
+
+       /**
+        * Update the rows and selected item
+        */
+       private void handleTableSelection() {
+               fTableRow = fTable.getSelectionIndices()[0];
+               fEffectiveRow = fFirstRowOffset + fTableRow;
+               fSelectedItems = new TableItem[1];
+               fSelectedItems[0] = fTable.getSelection()[0];
+       }
+
+       /**
+        * Handle key-based navigation in table.
+        * 
+        * The key variables are:
+        * - fFirstRowOffset: the absolute index (in the data set) of the first row displayed
+        * - fTableRow: the index of the selected event in the table window
+        * - fEffectiveRow: the absolute index of the selected event (in the data set)
+        * 
+        * At all times, the following relation should hold true:
+        *              fEffectiveRow = fFirstRowOffset + fTableRow
+        * 
+        * @param event
+        */
+       private void handleTableKeyEvent(KeyEvent event) {
+
+               boolean needsUpdate    = false;
+               final int lastTableRow = fTableItemCount - 1;
+               int lastRowDisplayed = ((fTableItemCount < fRowsDisplayed) ?  fTableItemCount : fRowsDisplayed) - 1;
+
+               // We are handling things
+               event.doit = false;
+
+               switch (event.keyCode) {
+
+                       case SWT.ARROW_DOWN: {
+                               if (fEffectiveRow < lastTableRow) {
+                                       fEffectiveRow++;
+                                       if (fTableRow < lastRowDisplayed) {
+                                               fTableRow++;
+                                       } else if (fTableRow < fEffectiveRow) {
+                                               fFirstRowOffset++;
+                                               needsUpdate = true;
+                                       }
+                               }
+                               break;
+                       }
+
+                       case SWT.PAGE_DOWN: {
+                               if (fEffectiveRow < lastTableRow) {
+                                       if ((lastTableRow - fEffectiveRow) >= fRowsDisplayed) {
+                                               fEffectiveRow   += fRowsDisplayed;
+                                               fFirstRowOffset += fRowsDisplayed;
+                                       } else {
+                                               fEffectiveRow = lastTableRow;
+                                               fTableRow = lastRowDisplayed;
+                                       }
+                                       needsUpdate = true;
+                               }
+                               break;
+                       }
+
+                       case SWT.END: {
+                               fEffectiveRow = lastTableRow;
+                               fTableRow = lastRowDisplayed;
+                               if (lastTableRow > lastRowDisplayed) {
+                                       fFirstRowOffset = fTableItemCount - fRowsDisplayed;
+                               }
+                               needsUpdate = true;
+                               break;
+                       }
+
+                       case SWT.ARROW_UP: {
+                               if (fEffectiveRow > 0) {
+                                       fEffectiveRow--;
+                                       if (fTableRow > 0) {
+                                               fTableRow--;
+                                       } else {
+                                               fFirstRowOffset--;
+                                               needsUpdate = true;
+                                       }
+                               }
+                               break;
+                       }
+
+                       case SWT.PAGE_UP: {
+                               if (fEffectiveRow > 0) {
+                                       if (fEffectiveRow > fRowsDisplayed - 1) {
+                                               fEffectiveRow   -= fRowsDisplayed;
+                                               fFirstRowOffset -= fRowsDisplayed;
+                                       } else {
+                                               fEffectiveRow = 0;
+                                               fTableRow = 0;
+                                       }
+                                       needsUpdate = true;
+                               }
+                               break;
+                       }
+
+                       case SWT.HOME: {
+                               fEffectiveRow   = 0;
+                               fTableRow       = 0;
+                               fFirstRowOffset = 0;
+                               needsUpdate     = true;
+                               break;
+                       }
+               }
+       
+               if (needsUpdate) {
+                       for (int i = 0; i < fTableItems.length; i++) {
+                               setDataItem(fTableItems[i]);
+                       }
+               }
+
+               fTable.setSelection(fTableRow);
+               fSlider.setSelection(fEffectiveRow);
+
+//             System.out.println("1st: " + fFirstRowOffset + ", TR: " + fTableRow + ", ER: " + fEffectiveRow +
+//                             ", Valid: " + ((fFirstRowOffset >= 0) && (fEffectiveRow == (fFirstRowOffset + fTableRow))));
+       }
+
+       private void setDataItem(TableItem item) {
+               int index = fTable.indexOf(item); 
+               if( index != -1) {
+                       Event event = new Event();
+                       event.item  = item;
+                       event.index = index + fFirstRowOffset;
+                       event.doit  = true;
+                       notifyListeners(SWT.SetData, event);
+               }
+       }
+
+       // ------------------------------------------------------------------------
+       // Slider handling
+       // ------------------------------------------------------------------------
+
+       private void createSlider() {
+               fSlider = new Slider(this, SWT.VERTICAL);
+               fSlider.setMinimum(0);
+               fSlider.setMaximum(0);
+
+               fSlider.addSelectionListener(new SelectionAdapter() {
+                       @Override
+                       public void widgetSelected(SelectionEvent event) {
+                               setSelection();
+                       }
+               });
+
+               fSlider.addListener(SWT.Selection, new Listener() {
+                       public void handleEvent(Event event) {
+                               switch (event.detail) {
+                                       case SWT.ARROW_DOWN:
+                                       case SWT.ARROW_UP:
+                                       case SWT.NONE:
+                                       case SWT.END:
+                                       case SWT.HOME:
+                                       case SWT.PAGE_DOWN:
+                                       case SWT.PAGE_UP: {
+                                       fFirstRowOffset = fSlider.getSelection();
+                                               setSelection();
+                                               break;
+                                       }
+                       }
+                       }
+               });
+       }
+
+       // ------------------------------------------------------------------------
+       // Simulated Table API
+       // ------------------------------------------------------------------------
+
+       public void setHeaderVisible(boolean b) {
+               fTable.setHeaderVisible(b);
+       }
+
+       public void setLinesVisible(boolean b) {
+               fTable.setLinesVisible(b);
+       }
+
+       public TableItem[] getSelection() {
+               return fSelectedItems;
+       }
+       
+       public void addSelectionListener(SelectionAdapter sa) {
+               fTable.addSelectionListener(sa);
+       }       
+       
+       public void setItemCount(int nbItems) {
+               nbItems = Math.max(0, nbItems);
+               if (nbItems != fTableItemCount) {
+                       fTableItemCount = nbItems;
+                       fSlider.setMaximum(nbItems);
+                       resize();
+               }
+       }
+
+       public int getItemHeight() {
+               return fTable.getItemHeight();
+       }
+
+       public int getTopIndex() {
+               return fFirstRowOffset;
+       }
+
+       public void setTopIndex(int i) {
+               fSlider.setSelection(i);
+       }
+       
+       public int indexOf(TableItem ti) {
+               return fTable.indexOf(ti) + getTopIndex();
+       }
+       
+       public TableColumn[] getColumns() {
+               return fTable.getColumns();
+       }
+
+       private void resize() {
+
+               // Compute the numbers of rows that fit the new area
+               Rectangle clientArea = getClientArea();
+               int tableHeight = clientArea.height - fTable.getHeaderHeight();
+               int itemHeight = fTable.getItemHeight();
+               fRowsDisplayed = tableHeight / itemHeight + 1;  // For partial rows
+               if (fTableItemCount == 0) {
+                       fRowsDisplayed = 0;
+               }
+
+               // Re-size and re-create the virtual table if needed
+               int delta = fTable.getItemCount() - fRowsDisplayed;
+               if (delta != 0) {
+                       fTable.removeAll();
+                       if (fTableItems != null) {
+                               for (int i = 0; i < fTableItems.length; i++) {
+                                       if (fTableItems[i] != null) {
+                                               fTableItems[i].dispose();
+                                       }
+                                       fTableItems[i] = null;
+                               }
+                       }
+                       fTableItems = new TableItem[fRowsDisplayed];
+                       for (int i = 0; i < fTableItems.length; i++) {
+                               fTableItems[i] = new TableItem(fTable, i);
+                       }
+               }
+
+               refresh();
+       }
+
+       // ------------------------------------------------------------------------
+       // Controls interactions
+       // ------------------------------------------------------------------------
+
+       @Override
+       public boolean setFocus() {
+               boolean isVisible = isVisible();
+               if (isVisible) {
+                       fTable.setFocus();
+               }
+               return isVisible;
+       }
+       
+       public void refresh() {
+               setSelection();
+       }
+
+       public void setColumnHeaders(ColumnData columnData[]) {
+               for (int i = 0; i < columnData.length; i++) {
+                       TableColumn column = new TableColumn(fTable, columnData[i].alignment, i);
+                       column.setText(columnData[i].header);
+                       if (columnData[i].width > 0) {
+                               column.setWidth(columnData[i].width);
+                       } else {
+                               column.pack();
+                       }
+               }
+       }    
+
+       public int removeAll() {
+               fSlider.setMaximum(0);
+               fTable.removeAll();
+               return 0;
+       }
+       
+       private void setSelection() {
+               if ((fEffectiveRow >= fFirstRowOffset) && (fEffectiveRow < (fFirstRowOffset + fRowsDisplayed))) {
+                       fTableRow = fEffectiveRow - fFirstRowOffset;
+                       fTable.setSelection(fTableRow);
+               } else {
+                       fTable.deselect(fTableRow);
+               }
+
+               for (int i = 0; i < fRowsDisplayed; i++) {
+                       setDataItem(fTableItems[i]);
+               }
+       }
+
+       public void setSelection(int i) {
+               if (fTableItems != null) {
+                       i = Math.min(i, fTableItemCount);
+                       i = Math.max(i, 0);
+                       fSlider.setSelection(i);
+                       setSelection();
+               }
+       }
+
+}
index 5bceafa8185d6caeec1a2a5d0a84a64f135b29b1..3f0f846b55d89117b0d45439c10cfc1e700ecc4b 100644 (file)
@@ -166,7 +166,8 @@ public class CustomTxtParserInputWizardPage extends WizardPage {
         dateFormatHelpButton.setImage(helpImage);\r
         dateFormatHelpButton.setToolTipText("Date Format Help");\r
         dateFormatHelpButton.addSelectionListener(new SelectionAdapter() {\r
-            public void widgetSelected(SelectionEvent e) {\r
+            @Override\r
+                       public void widgetSelected(SelectionEvent e) {\r
                 openHelpShell(SIMPLE_DATE_FORMAT_URL);\r
             }\r
         });\r
@@ -189,6 +190,7 @@ public class CustomTxtParserInputWizardPage extends WizardPage {
         removeButton.setImage(deleteImage);\r
         removeButton.setToolTipText("Remove line");\r
         removeButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
             public void widgetSelected(SelectionEvent e) {\r
                 if (treeViewer.getSelection().isEmpty() || selectedLine == null) return;\r
                 removeLine();\r
@@ -207,6 +209,7 @@ public class CustomTxtParserInputWizardPage extends WizardPage {
         addNextButton.setImage(addNextImage);\r
         addNextButton.setToolTipText("Add next line");\r
         addNextButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
             public void widgetSelected(SelectionEvent e) {\r
                 InputLine inputLine = new InputLine(Cardinality.ZERO_OR_MORE, "", null);\r
                 if (((List<?>) treeViewer.getInput()).size() == 0) {\r
@@ -233,7 +236,8 @@ public class CustomTxtParserInputWizardPage extends WizardPage {
         addChildButton.setImage(addChildImage);\r
         addChildButton.setToolTipText("Add child line");\r
         addChildButton.addSelectionListener(new SelectionAdapter() {\r
-            public void widgetSelected(SelectionEvent e) {\r
+               @Override\r
+               public void widgetSelected(SelectionEvent e) {\r
                 InputLine inputLine = new InputLine(Cardinality.ZERO_OR_MORE, "", null);\r
                 if (((List<?>) treeViewer.getInput()).size() == 0) {\r
                     definition.inputs.add(inputLine);\r
@@ -251,6 +255,7 @@ public class CustomTxtParserInputWizardPage extends WizardPage {
         moveUpButton.setImage(moveUpImage);\r
         moveUpButton.setToolTipText("Move up");\r
         moveUpButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
             public void widgetSelected(SelectionEvent e) {\r
                 if (treeViewer.getSelection().isEmpty()) return;\r
                 InputLine inputLine = (InputLine) ((IStructuredSelection) treeViewer.getSelection()).getFirstElement();\r
@@ -273,6 +278,7 @@ public class CustomTxtParserInputWizardPage extends WizardPage {
         moveDownButton.setImage(moveDownImage);\r
         moveDownButton.setToolTipText("Move down");\r
         moveDownButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
             public void widgetSelected(SelectionEvent e) {\r
                 if (treeViewer.getSelection().isEmpty()) return;\r
                 InputLine inputLine = (InputLine) ((IStructuredSelection) treeViewer.getSelection()).getFirstElement();\r
@@ -356,6 +362,7 @@ public class CustomTxtParserInputWizardPage extends WizardPage {
         highlightAllButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));\r
         highlightAllButton.setText("Highlight All");\r
         highlightAllButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
             public void widgetSelected(SelectionEvent e) {\r
                 updatePreviews(true);\r
             }\r
@@ -366,6 +373,7 @@ public class CustomTxtParserInputWizardPage extends WizardPage {
         legendButton.setToolTipText("Preview Legend");\r
         legendButton.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));\r
         legendButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
             public void widgetSelected(SelectionEvent e) {\r
                 openLegend();\r
             }\r
@@ -975,7 +983,8 @@ public class CustomTxtParserInputWizardPage extends WizardPage {
             regexHelpButton.setImage(helpImage);\r
             regexHelpButton.setToolTipText("Regular Expression Help");\r
             regexHelpButton.addSelectionListener(new SelectionAdapter() {\r
-                public void widgetSelected(SelectionEvent e) {\r
+               @Override\r
+               public void widgetSelected(SelectionEvent e) {\r
                     openHelpShell(PATTERN_URL);\r
                 }\r
             });\r
@@ -1134,6 +1143,7 @@ public class CustomTxtParserInputWizardPage extends WizardPage {
             addGroupButton.setImage(addImage);\r
             addGroupButton.setToolTipText("Add group");\r
             addGroupButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
                 public void widgetSelected(SelectionEvent e) {\r
                     removeAddGroupButton();\r
                     inputs.add(new InputGroup(group, Line.this, inputs.size()+1));\r
@@ -1266,6 +1276,7 @@ public class CustomTxtParserInputWizardPage extends WizardPage {
             deleteButton.setImage(deleteImage);\r
             deleteButton.setToolTipText("Remove group");\r
             deleteButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
                 public void widgetSelected(SelectionEvent e) {\r
                     InputGroup.this.line.removeInput(InputGroup.this.inputNumber);\r
                     validate();\r
index 699b58ddc9e661208d2a0969544e7b2a14b1a72a..8ef7d6c5da2e8fb18337f78c8679668f13bddfbc 100644 (file)
@@ -12,9 +12,9 @@ import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.linuxtools.tmf.trace.ITmfTrace;\r
 import org.eclipse.linuxtools.tmf.ui.TmfUiPlugin;\r
 import org.eclipse.linuxtools.tmf.ui.parsers.custom.CustomEventsTable;\r
+import org.eclipse.linuxtools.tmf.ui.parsers.custom.CustomTraceDefinition.OutputColumn;\r
 import org.eclipse.linuxtools.tmf.ui.parsers.custom.CustomTxtTrace;\r
 import org.eclipse.linuxtools.tmf.ui.parsers.custom.CustomTxtTraceDefinition;\r
-import org.eclipse.linuxtools.tmf.ui.parsers.custom.CustomTraceDefinition.OutputColumn;\r
 import org.eclipse.swt.SWT;\r
 import org.eclipse.swt.custom.SashForm;\r
 import org.eclipse.swt.custom.ScrolledComposite;\r
@@ -250,6 +250,7 @@ public class CustomTxtParserOutputWizardPage extends WizardPage {
             enabledButton.setToolTipText("Visible");\r
             enabledButton.setSelection(true);\r
             enabledButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
                 public void widgetSelected(SelectionEvent e) {\r
                     updatePreviewTable();\r
                 }\r
@@ -267,6 +268,7 @@ public class CustomTxtParserOutputWizardPage extends WizardPage {
             upButton.setImage(upImage);\r
             upButton.setToolTipText("Move Before");\r
             upButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
                 public void widgetSelected(SelectionEvent e) {\r
                     moveBefore(Output.this);\r
                 }\r
@@ -277,6 +279,7 @@ public class CustomTxtParserOutputWizardPage extends WizardPage {
             downButton.setImage(downImage);\r
             downButton.setToolTipText("Move After");\r
             downButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
                 public void widgetSelected(SelectionEvent e) {\r
                     moveAfter(Output.this);\r
                 }\r
index e6ae71f342a608a3b4f4b8fb47b41f736c8757fd..cf9c8c6c08b35775005dd1867c9ae60007341874 100644 (file)
@@ -61,7 +61,8 @@ public class CustomTxtParserWizard extends Wizard implements INewWizard {
      * Adding the page to the wizard.\r
      */\r
 \r
-    public void addPages() {\r
+    @Override\r
+       public void addPages() {\r
         inputPage = new CustomTxtParserInputWizardPage(selection, definition);\r
         addPage(inputPage);\r
         outputPage = new CustomTxtParserOutputWizardPage(this);\r
index fea85276604813a000aa095bf3e65f06e8be4c23..1fedaf2a714e0c60c74ac72245e85afaa073214b 100644 (file)
@@ -172,6 +172,7 @@ public class CustomXmlParserInputWizardPage extends WizardPage {
         dateFormatHelpButton.setImage(helpImage);\r
         dateFormatHelpButton.setToolTipText("Date Format Help");\r
         dateFormatHelpButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
             public void widgetSelected(SelectionEvent e) {\r
                 openHelpShell(SIMPLE_DATE_FORMAT_URL);\r
             }\r
@@ -292,6 +293,7 @@ public class CustomXmlParserInputWizardPage extends WizardPage {
         removeButton.setImage(deleteImage);\r
         removeButton.setToolTipText("Remove element");\r
         removeButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
             public void widgetSelected(SelectionEvent e) {\r
                 if (treeViewer.getSelection().isEmpty() || selectedElement == null) return;\r
                 removeElement();\r
@@ -321,6 +323,7 @@ public class CustomXmlParserInputWizardPage extends WizardPage {
         addChildButton.setImage(addChildImage);\r
         addChildButton.setToolTipText("Add child element");\r
         addChildButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
             public void widgetSelected(SelectionEvent e) {\r
                 InputElement inputElement = new InputElement("", false, CustomXmlTraceDefinition.TAG_IGNORE, 0, "", null);\r
                 if (definition.rootInputElement == null) {\r
@@ -342,6 +345,7 @@ public class CustomXmlParserInputWizardPage extends WizardPage {
         addNextButton.setImage(addNextImage);\r
         addNextButton.setToolTipText("Add next element");\r
         addNextButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
             public void widgetSelected(SelectionEvent e) {\r
                 InputElement inputElement = new InputElement("", false, CustomXmlTraceDefinition.TAG_IGNORE, 0, "", null);\r
                 if (definition.rootInputElement == null) {\r
@@ -367,6 +371,7 @@ public class CustomXmlParserInputWizardPage extends WizardPage {
         feelingLuckyButton.setImage(addManyImage);\r
         feelingLuckyButton.setToolTipText("Feeling lucky");\r
         feelingLuckyButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
             public void widgetSelected(SelectionEvent e) {\r
                 InputElement inputElement = null;\r
                 if (definition.rootInputElement == null) {\r
@@ -391,6 +396,7 @@ public class CustomXmlParserInputWizardPage extends WizardPage {
         moveUpButton.setImage(moveUpImage);\r
         moveUpButton.setToolTipText("Move up");\r
         moveUpButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
             public void widgetSelected(SelectionEvent e) {\r
                 if (treeViewer.getSelection().isEmpty()) return;\r
                 InputElement inputElement = (InputElement) ((IStructuredSelection) treeViewer.getSelection()).getFirstElement();\r
@@ -409,6 +415,7 @@ public class CustomXmlParserInputWizardPage extends WizardPage {
         moveDownButton.setImage(moveDownImage);\r
         moveDownButton.setToolTipText("Move down");\r
         moveDownButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
             public void widgetSelected(SelectionEvent e) {\r
                 if (treeViewer.getSelection().isEmpty()) return;\r
                 InputElement inputElement = (InputElement) ((IStructuredSelection) treeViewer.getSelection()).getFirstElement();\r
@@ -1035,6 +1042,7 @@ public class CustomXmlParserInputWizardPage extends WizardPage {
             addAttributeButton.setImage(addImage);\r
             addAttributeButton.setToolTipText("Add attribute");\r
             addAttributeButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
                 public void widgetSelected(SelectionEvent e) {\r
                     removeAddButton();\r
                     String attributeName = getAttributeNameSuggestion(inputElement);\r
@@ -1147,6 +1155,7 @@ public class CustomXmlParserInputWizardPage extends WizardPage {
             deleteButton.setImage(deleteImage);\r
             deleteButton.setToolTipText("Remove attribute");\r
             deleteButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
                 public void widgetSelected(SelectionEvent e) {\r
                     Attribute.this.element.removeAttribute(Attribute.this.attributeNumber);\r
                     validate();\r
index 5565174db1cd4cb6f4f30ff499db4dd09a66694b..502af087e54f2fdae34264a30c830a38bf328e11 100644 (file)
@@ -251,6 +251,7 @@ public class CustomXmlParserOutputWizardPage extends WizardPage {
             enabledButton.setToolTipText("Visible");\r
             enabledButton.setSelection(true);\r
             enabledButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
                 public void widgetSelected(SelectionEvent e) {\r
                     updatePreviewTable();\r
                 }\r
@@ -268,6 +269,7 @@ public class CustomXmlParserOutputWizardPage extends WizardPage {
             upButton.setImage(upImage);\r
             upButton.setToolTipText("Move Before");\r
             upButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
                 public void widgetSelected(SelectionEvent e) {\r
                     moveBefore(Output.this);\r
                 }\r
@@ -278,6 +280,7 @@ public class CustomXmlParserOutputWizardPage extends WizardPage {
             downButton.setImage(downImage);\r
             downButton.setToolTipText("Move After");\r
             downButton.addSelectionListener(new SelectionAdapter() {\r
+               @Override\r
                 public void widgetSelected(SelectionEvent e) {\r
                     moveAfter(Output.this);\r
                 }\r
index bd740681066dd63a9509414b6e5cb397186f3960..9af0bc7874360a9bce09acacd23125ea6ea11e6e 100644 (file)
@@ -61,7 +61,8 @@ public class CustomXmlParserWizard extends Wizard implements INewWizard {
      * Adding the page to the wizard.\r
      */\r
 \r
-    public void addPages() {\r
+    @Override\r
+       public void addPages() {\r
         inputPage = new CustomXmlParserInputWizardPage(selection, definition);\r
         addPage(inputPage);\r
         outputPage = new CustomXmlParserOutputWizardPage(this);\r
This page took 0.050535 seconds and 5 git commands to generate.