Java tutorial
/* * Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). * All rights reserved. * This component and the accompanying materials are made available * under the terms of "Eclipse Public License v1.0" * which accompanies this distribution, and is available * at the URL "http://www.eclipse.org/legal/epl-v10.html". * * Initial Contributors: * Nokia Corporation - initial contribution. * * Contributors: * * Description: * * Trace Property view * */ package com.nokia.traceviewer.view; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.action.Separator; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.swt.SWT; import org.eclipse.swt.custom.SashForm; import org.eclipse.swt.events.ControlEvent; import org.eclipse.swt.events.ControlListener; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; import org.eclipse.swt.widgets.TableItem; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.part.ViewPart; import com.nokia.traceviewer.TraceViewerHelpContextIDs; import com.nokia.traceviewer.TraceViewerPlugin; import com.nokia.traceviewer.action.AddLineCountRuleAction; import com.nokia.traceviewer.action.AddVariableTracingRuleAction; import com.nokia.traceviewer.action.DeactivateLineCountRuleAction; import com.nokia.traceviewer.action.DeactivateVariableTracingRuleAction; import com.nokia.traceviewer.action.EditLineCountRuleAction; import com.nokia.traceviewer.action.EditTraceCommentAction; import com.nokia.traceviewer.action.EditVariableTracingRuleAction; import com.nokia.traceviewer.action.JumpToTraceAction; import com.nokia.traceviewer.action.RemoveTraceCommentAction; import com.nokia.traceviewer.api.TraceViewerAPI; import com.nokia.traceviewer.engine.TraceProperties; import com.nokia.traceviewer.engine.TraceViewerGlobals; import com.nokia.traceviewer.engine.TraceViewerPropertyViewInterface; import com.nokia.traceviewer.engine.dataprocessor.DataProcessor; import com.nokia.traceviewer.engine.dataprocessor.LineCountItem; import com.nokia.traceviewer.engine.dataprocessor.VariableTracingItem; /** * Trace Property view */ public class TracePropertyView extends ViewPart implements TraceViewerPropertyViewInterface, DataProcessor, Runnable { /** * Line count rule name width configuration entry */ private static final String LINECOUNTNAME_WIDTH_CONFIGURATION = "TracePropertyView.LineCountNameWidth"; //$NON-NLS-1$ /** * Line count occurrences width configuration entry */ private static final String LINECOUNTOCCURRENCES_WIDTH_CONFIGURATION = "TracePropertyView.OccurrencesWidth"; //$NON-NLS-1$ /** * Variable tracing name width configuration entry */ private static final String VARIABLENAME_WIDTH_CONFIGURATION = "TracePropertyView.VariableNameWidth"; //$NON-NLS-1$ /** * Variable tracing value width configuration entry */ private static final String VARIABLEVALUE_WIDTH_CONFIGURATION = "TracePropertyView.VariableValueWidth"; //$NON-NLS-1$ /** * Name of the right column in variable tracing table */ private static final String VARIABLETABLE_RIGHT_COLUMN_NAME = Messages .getString("TracePropertyView.ValueColumnName"); //$NON-NLS-1$ /** * Name of the left column in variable tracing table */ private static final String VARIABLETABLE_LEFT_COLUMN_NAME = Messages .getString("TracePropertyView.VariableTracingColumnName"); //$NON-NLS-1$ /** * Name of the right column in line count table */ private static final String LINECOUNTTABLE_OCCURRENCES_COLUMN_NAME = Messages .getString("TracePropertyView.OccurrencesColumnName"); //$NON-NLS-1$ /** * Name of the left column in line count table */ private static final String LINECOUNTTABLE_RULE_COLUMN_NAME = Messages .getString("TracePropertyView.LineCountRuleColumnName"); //$NON-NLS-1$ /** * Name of the trace number column in the trace comment table */ private static final String TRACECOMMENTTABLE_NUMBER_COLUMN_NAME = Messages .getString("TracePropertyView.TraceNumberColumnName"); //$NON-NLS-1$ /** * Name of the trace comment column in the trace comment table */ private static final String TRACECOMMENTTABLE_COMMENT_COLUMN_NAME = Messages .getString("TracePropertyView.TraceCommentColumnName"); //$NON-NLS-1$ /** * Width of the left column of line count table */ private static final int LINECOUNTTABLE_RULE_COLUMN_SIZE = 300; /** * Width of the right column of line count table */ private static final int LINECOUNTTABLE_OCCURRENCES_COLUMN_SIZE = 150; /** * Width of the left column of variable tracing table */ private static final int VARIABLETABLE_RULE_COLUMN_SIZE = 150; /** * Width of the right column of variable tracing table */ private static final int VARIABLETABLE_VALUE_COLUMN_SIZE = 300; /** * Update time interval in milliseconds */ private static final long UPDATE_INTERVAL = 100; /** * Timestamp of next update */ private long updateNextTime; /** * Sash that divides the tables horizontally */ private SashForm horizontalSash; /** * Sash that divides the tables vertically */ private SashForm verticalSash; /** * Line counting items table */ private Table lineCountingTable; /** * Variable tracing items table */ private Table variableTracingTable; /** * Trace comment table */ private Table traceCommentTable; /** * Line counting table rule name column */ private TableColumn lineCountRuleNameColumn; /** * Line counting table occurrences column */ private TableColumn lineCountOccurrencesColumn; /** * Variable tracing table value column */ private TableColumn variableTracingValueColumn; /** * Variable tracing table rule name column */ private TableColumn variableTracingRuleNameColumn; /** * Indicates if lineCountingTable should be updated */ private boolean changeToLineCountingTable; /** * Indicates if variableTracingTable should be updated */ private boolean changeToVariableTracingTable; /** * Indicates if traceCommentTable should be updated */ private boolean changeToTraceCommentTable; /** * Indicates that all data hasn't been updated */ private boolean hasUnshownData; /** * Parent composite */ private Composite parent; /* * (non-Javadoc) * * @see * org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets * .Composite) */ @Override public void createPartControl(Composite parent) { this.parent = parent; verticalSash = new SashForm(parent, SWT.VERTICAL); horizontalSash = new SashForm(verticalSash, SWT.HORIZONTAL); // Create tables and columns createTables(); // Create context menus to all tables createContextMenus(); // Create listeners for the tables createListeners(); horizontalSash.setWeights(new int[] { 50, 50 }); verticalSash.setWeights(new int[] { 100, 0 }); // Get items to tables if they exist if (TraceViewerGlobals.getTraceViewer().getDataProcessorAccess() != null && TraceViewerGlobals.getTraceViewer().getDataProcessorAccess().getLineCountProcessor() != null && TraceViewerGlobals.getTraceViewer().getDataProcessorAccess().getLineCountProcessor() .getLineCountItems() != null) { createNewPropertyTableItems(); } // Set this view to engine TraceViewerGlobals.getTraceViewer().setPropertyView(this); // Set help PlatformUI.getWorkbench().getHelpSystem().setHelp(parent, TraceViewerHelpContextIDs.PROPERTY_VIEW); } /** * Creates tables and columns */ private void createTables() { createLineCountTable(); createVariableTracingTable(); createTraceCommentTable(); configureWidgets(); createResizeListeners(); } /** * Creates line count table */ private void createLineCountTable() { // Line counting table lineCountingTable = new Table(horizontalSash, SWT.BORDER | SWT.FULL_SELECTION); lineCountingTable.setHeaderVisible(true); // Create linecount rule name column lineCountRuleNameColumn = new TableColumn(lineCountingTable, SWT.NONE); lineCountRuleNameColumn.setText(LINECOUNTTABLE_RULE_COLUMN_NAME); // Create linecount occurrences column lineCountOccurrencesColumn = new TableColumn(lineCountingTable, SWT.NONE); lineCountOccurrencesColumn.setText(LINECOUNTTABLE_OCCURRENCES_COLUMN_NAME); } /** * Creates variable tracing table */ private void createVariableTracingTable() { // Variable tracing table variableTracingTable = new Table(horizontalSash, SWT.BORDER | SWT.FULL_SELECTION | SWT.MULTI); variableTracingTable.setHeaderVisible(true); // Create variabletracing rule name column variableTracingRuleNameColumn = new TableColumn(variableTracingTable, SWT.NONE); variableTracingRuleNameColumn.setText(VARIABLETABLE_LEFT_COLUMN_NAME); // Create variable tracing value column variableTracingValueColumn = new TableColumn(variableTracingTable, SWT.NONE); variableTracingValueColumn.setText(VARIABLETABLE_RIGHT_COLUMN_NAME); } /** * Creates trace comment table */ private void createTraceCommentTable() { // Trace comment table traceCommentTable = new Table(verticalSash, SWT.BORDER | SWT.FULL_SELECTION); traceCommentTable.setLayout(new GridLayout()); traceCommentTable.setHeaderVisible(true); traceCommentTable.setVisible(false); // Create trace number column TableColumn traceNumberColumn = new TableColumn(traceCommentTable, SWT.NONE); traceNumberColumn.setText(TRACECOMMENTTABLE_NUMBER_COLUMN_NAME); traceNumberColumn.setWidth(60); // Create trace comment column TableColumn traceCommentColumn = new TableColumn(traceCommentTable, SWT.NONE); traceCommentColumn.setText(TRACECOMMENTTABLE_COMMENT_COLUMN_NAME); traceCommentColumn.setWidth(400); } /** * Creates resize listeners to all columns */ private void createResizeListeners() { // Add resize listener to linecount rule name column lineCountRuleNameColumn.addControlListener(new ControlListener() { public void controlMoved(ControlEvent e) { } // When column is resized, save new width to preferencestore public void controlResized(ControlEvent e) { TraceViewerPlugin.getDefault().getPreferenceStore().setValue(LINECOUNTNAME_WIDTH_CONFIGURATION, lineCountRuleNameColumn.getWidth()); } }); // Add resize listener to linecount occurrences column lineCountOccurrencesColumn.addControlListener(new ControlListener() { public void controlMoved(ControlEvent e) { } // When column is resized, save new width to preferencestore public void controlResized(ControlEvent e) { TraceViewerPlugin.getDefault().getPreferenceStore() .setValue(LINECOUNTOCCURRENCES_WIDTH_CONFIGURATION, lineCountOccurrencesColumn.getWidth()); } }); // Add resize listener to variabletracing rule name column variableTracingRuleNameColumn.addControlListener(new ControlListener() { public void controlMoved(ControlEvent e) { } // When column is resized, save new width to preferencestore public void controlResized(ControlEvent e) { TraceViewerPlugin.getDefault().getPreferenceStore().setValue(VARIABLENAME_WIDTH_CONFIGURATION, variableTracingRuleNameColumn.getWidth()); } }); // Add resize listener to variabletracing occurrences column variableTracingValueColumn.addControlListener(new ControlListener() { public void controlMoved(ControlEvent e) { } // When column is resized, save new width to preferencestore public void controlResized(ControlEvent e) { TraceViewerPlugin.getDefault().getPreferenceStore().setValue(VARIABLEVALUE_WIDTH_CONFIGURATION, variableTracingValueColumn.getWidth()); } }); } /** * Configures the table column sizes */ private void configureWidgets() { // Get preference store from the plugin IPreferenceStore preferences = TraceViewerPlugin.getDefault().getPreferenceStore(); // Set line count rule name column width int value = preferences.getInt(LINECOUNTNAME_WIDTH_CONFIGURATION); if (value > 0) { lineCountRuleNameColumn.setWidth(value); } else { lineCountRuleNameColumn.setWidth(LINECOUNTTABLE_RULE_COLUMN_SIZE); } // Set line count occurrences column width value = preferences.getInt(LINECOUNTOCCURRENCES_WIDTH_CONFIGURATION); if (value > 0) { lineCountOccurrencesColumn.setWidth(value); } else { lineCountOccurrencesColumn.setWidth(LINECOUNTTABLE_OCCURRENCES_COLUMN_SIZE); } // Set variable tracing rule name column width value = preferences.getInt(VARIABLENAME_WIDTH_CONFIGURATION); if (value > 0) { variableTracingRuleNameColumn.setWidth(value); } else { variableTracingRuleNameColumn.setWidth(VARIABLETABLE_RULE_COLUMN_SIZE); } // Set variable tracing value column width value = preferences.getInt(VARIABLEVALUE_WIDTH_CONFIGURATION); if (value > 0) { variableTracingValueColumn.setWidth(value); } else { variableTracingValueColumn.setWidth(VARIABLETABLE_VALUE_COLUMN_SIZE); } } /** * Creates context menu */ private void createContextMenus() { // Create menu manager for line count table. final MenuManager lineCountMenuMgr = new MenuManager(); lineCountMenuMgr.setRemoveAllWhenShown(true); lineCountMenuMgr.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager mgr) { fillLineCountContextMenu(lineCountMenuMgr); } }); // Create menu Menu menu = lineCountMenuMgr.createContextMenu(lineCountingTable); lineCountingTable.setMenu(menu); // Create menu manager for variable tracing table. final MenuManager variableTracingMenuMgr = new MenuManager(); variableTracingMenuMgr.setRemoveAllWhenShown(true); variableTracingMenuMgr.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager mgr) { fillVariableTracingContextMenu(variableTracingMenuMgr); } }); // Create menu menu = variableTracingMenuMgr.createContextMenu(variableTracingTable); variableTracingTable.setMenu(menu); // Create menu manager for trace comment table. final MenuManager traceCommentMenuMgr = new MenuManager(); traceCommentMenuMgr.setRemoveAllWhenShown(true); traceCommentMenuMgr.addMenuListener(new IMenuListener() { public void menuAboutToShow(IMenuManager mgr) { fillTraceCommentContextMenu(traceCommentMenuMgr); } }); // Create menu menu = traceCommentMenuMgr.createContextMenu(traceCommentTable); traceCommentTable.setMenu(menu); } /** * Fills the line count context menu * * @param menuMgr * menu manager */ public void fillLineCountContextMenu(MenuManager menuMgr) { menuMgr.add(new AddLineCountRuleAction()); if (lineCountingTable.getSelectionCount() == 1) { EditLineCountRuleAction editAction = new EditLineCountRuleAction(lineCountingTable.getSelectionIndex()); DeactivateLineCountRuleAction deactivateAction = new DeactivateLineCountRuleAction( lineCountingTable.getSelectionIndex(), lineCountingTable); menuMgr.add(editAction); menuMgr.add(deactivateAction); } } /** * Fills the variable tracing context menu * * @param menuMgr * menu manager */ public void fillVariableTracingContextMenu(MenuManager menuMgr) { // Variable tracing history menuMgr.add(TraceViewerGlobals.getTraceViewer().getView().getActionFactory() .getOpenVariableTracingHistoryAction()); if (variableTracingTable.getSelectionCount() == 0) { TraceViewerGlobals.getTraceViewer().getView().getActionFactory().getOpenVariableTracingHistoryAction() .setEnabled(false); } else { TraceViewerGlobals.getTraceViewer().getView().getActionFactory().getOpenVariableTracingHistoryAction() .setEnabled(true); } // Add new and edit actions menuMgr.add(new AddVariableTracingRuleAction()); if (variableTracingTable.getSelectionCount() == 1) { EditVariableTracingRuleAction editAction = new EditVariableTracingRuleAction( variableTracingTable.getSelectionIndex()); DeactivateVariableTracingRuleAction deactivateAction = new DeactivateVariableTracingRuleAction( variableTracingTable.getSelectionIndex(), variableTracingTable); menuMgr.add(editAction); menuMgr.add(deactivateAction); } } /** * Fills the trace comment table context menu * * @param menuMgr * menu manager */ public void fillTraceCommentContextMenu(MenuManager menuMgr) { int selectedTraceNumber = 0; if (traceCommentTable.getSelectionCount() == 1) { selectedTraceNumber = ((Integer) traceCommentTable.getSelection()[0].getData()).intValue(); } // Add Jump, Edit and Remove actions JumpToTraceAction jumpToTraceAction = new JumpToTraceAction(selectedTraceNumber); EditTraceCommentAction editAction = new EditTraceCommentAction(selectedTraceNumber); RemoveTraceCommentAction removeAction = new RemoveTraceCommentAction(selectedTraceNumber); menuMgr.add(jumpToTraceAction); menuMgr.add(new Separator()); menuMgr.add(editAction); menuMgr.add(removeAction); // If no comments are selected, disable the action if (traceCommentTable.getSelectionCount() != 1) { jumpToTraceAction.setEnabled(false); editAction.setEnabled(false); removeAction.setEnabled(false); } } /** * Creates listeners for the tables */ private void createListeners() { // Add double click support lineCountingTable.addListener(SWT.DefaultSelection, new Listener() { public void handleEvent(Event e) { EditLineCountRuleAction action = new EditLineCountRuleAction(lineCountingTable.getSelectionIndex()); action.run(); } }); // Add double click support variableTracingTable.addListener(SWT.DefaultSelection, new Listener() { public void handleEvent(Event e) { TraceViewerGlobals.getTraceViewer().getView().getActionFactory() .getOpenVariableTracingHistoryAction().run(); } }); // Add double click support traceCommentTable.addListener(SWT.DefaultSelection, new Listener() { public void handleEvent(Event e) { if (traceCommentTable.getSelectionCount() > 0) { int traceNumber = ((Integer) traceCommentTable.getSelection()[0].getData()).intValue(); TraceViewerAPI.syncToTrace(traceNumber, traceNumber); } } }); } /* * (non-Javadoc) * * @see com.nokia.traceviewer.engine.TraceViewerViewInterface#clearAll() */ public void clearAll() { // Empty lineCount items List<LineCountItem> lineCountItems = TraceViewerGlobals.getTraceViewer().getDataProcessorAccess() .getLineCountProcessor().getLineCountItems(); for (int i = 0; i < lineCountItems.size(); i++) { lineCountItems.get(i).setCount(0); lineCountItems.get(i).setChanged(true); } // Empty variableTracing items List<VariableTracingItem> variableTracingItems = TraceViewerGlobals.getTraceViewer() .getDataProcessorAccess().getVariableTracingProcessor().getVariableTracingItems(); for (int i = 0; i < variableTracingItems.size(); i++) { variableTracingItems.get(i).clear(); variableTracingItems.get(i).setChanged(true); } changeToLineCountingTable = true; changeToVariableTracingTable = true; changeToTraceCommentTable = true; update(); } /* * (non-Javadoc) * * @see * com.nokia.traceviewer.engine.TraceViewerViewInterface#hasUnshownData() */ public boolean hasUnshownData() { return hasUnshownData; } /* * (non-Javadoc) * * @seecom.nokia.traceviewer.engine.TraceViewerPropertyViewInterface# * updatePropertyTables() */ public void updatePropertyTables() { changeToLineCountingTable = true; changeToVariableTracingTable = true; // Linecounts List<LineCountItem> lineItems = TraceViewerGlobals.getTraceViewer().getDataProcessorAccess() .getLineCountProcessor().getLineCountItems(); for (int i = 0; i < lineItems.size(); i++) { lineItems.get(i).setChanged(true); } // Variables List<VariableTracingItem> varItems = TraceViewerGlobals.getTraceViewer().getDataProcessorAccess() .getVariableTracingProcessor().getVariableTracingItems(); for (int i = 0; i < varItems.size(); i++) { varItems.get(i).setChanged(true); } update(); } /* * (non-Javadoc) * * @seecom.nokia.traceviewer.engine.TraceViewerPropertyViewInterface# * updateTraceComments() */ public void updateTraceComments() { changeToTraceCommentTable = true; update(); } /* * (non-Javadoc) * * @see com.nokia.traceviewer.engine.TraceViewerViewInterface#update() */ public void update() { Display display = this.getDisplay(); if ((display != null) && !display.isDisposed()) { display.asyncExec(this); } } /* * (non-Javadoc) * * @see * com.nokia.traceviewer.engine.DataProcessor#processData(com.nokia.traceviewer * .engine.TraceProperties) */ public void processData(TraceProperties properties) { if (changeToLineCountingTable || changeToVariableTracingTable) { long time = System.currentTimeMillis(); // If update interval has passed, call the view update if (time > updateNextTime) { updateNextTime = time + UPDATE_INTERVAL; update(); } } } /* * (non-Javadoc) * * @see java.lang.Runnable#run() */ public void run() { // Change to the linecounting table if (changeToLineCountingTable) { List<LineCountItem> items = TraceViewerGlobals.getTraceViewer().getDataProcessorAccess() .getLineCountProcessor().getLineCountItems(); if (!lineCountingTable.isDisposed()) { // If item count changed, update it to table for (int i = 0; i < items.size(); i++) { LineCountItem item = items.get(i); if (item.isChanged()) { lineCountingTable.getItem(i).setText(1, String.valueOf(item.getCount())); item.setChanged(false); } } changeToLineCountingTable = false; } } // Change to the variable tracing table if (changeToVariableTracingTable) { List<VariableTracingItem> items = TraceViewerGlobals.getTraceViewer().getDataProcessorAccess() .getVariableTracingProcessor().getVariableTracingItems(); if (!variableTracingTable.isDisposed()) { // If item changed, update it to table for (int i = 0; i < items.size(); i++) { VariableTracingItem item = items.get(i); if (item.isChanged()) { variableTracingTable.getItem(i).setText(1, item.getValue()); item.setChanged(false); } } changeToVariableTracingTable = false; } } // Change to the trace comment table if (changeToTraceCommentTable) { if (!traceCommentTable.isDisposed()) { Map<Integer, String> traceComments = TraceViewerGlobals.getTraceViewer().getDataProcessorAccess() .getTraceCommentHandler().getComments(); if (!traceComments.isEmpty() && !traceCommentTable.isVisible()) { traceCommentTable.setVisible(true); // If table not visible, show it if (verticalSash.getWeights()[0] == 1000) { verticalSash.setWeights(new int[] { 50, 50 }); } verticalSash.redraw(); } traceCommentTable.removeAll(); // Loop the comments map Iterator<Entry<Integer, String>> it = traceComments.entrySet().iterator(); while (it.hasNext()) { Entry<Integer, String> entry = it.next(); TableItem item = new TableItem(traceCommentTable, SWT.NONE); item.setData(entry.getKey()); String traceNumber = String.valueOf(entry.getKey()); item.setText(new String[] { traceNumber, entry.getValue() }); } } } hasUnshownData = false; } /** * Creates new items to table */ public void createNewPropertyTableItems() { // Line counting table - delete old items lineCountingTable.removeAll(); List<LineCountItem> countItems = TraceViewerGlobals.getTraceViewer().getDataProcessorAccess() .getLineCountProcessor().getLineCountItems(); // Insert new items for (int i = 0; i < countItems.size(); i++) { TableItem item = new TableItem(lineCountingTable, SWT.NONE); item.setText( new String[] { countItems.get(i).getName(), String.valueOf(countItems.get(i).getCount()) }); } // Variabletracing table - delete old items variableTracingTable.removeAll(); List<VariableTracingItem> variableItems = TraceViewerGlobals.getTraceViewer().getDataProcessorAccess() .getVariableTracingProcessor().getVariableTracingItems(); // Insert new items for (int i = 0; i < variableItems.size(); i++) { TableItem item = new TableItem(variableTracingTable, SWT.NONE); item.setText(new String[] { variableItems.get(i).getName(), variableItems.get(i).getValue() }); } changeToLineCountingTable = true; changeToVariableTracingTable = true; update(); } /** * Gets display * * @return display */ private Display getDisplay() { Display display = null; if (parent != null && !parent.isDisposed() && parent.getDisplay() != null && !parent.getDisplay().isDisposed()) { display = parent.getDisplay(); } return display; } /* * (non-Javadoc) * * @seecom.nokia.traceviewer.engine.TraceViewerViewInterface# * setLineCountTableChanged() */ public void setLineCountTableChanged() { changeToLineCountingTable = true; hasUnshownData = true; } /* * (non-Javadoc) * * @seecom.nokia.traceviewer.engine.TraceViewerViewInterface# * setVariableTracingTableChanged() */ public void setVariableTracingTableChanged() { changeToVariableTracingTable = true; hasUnshownData = true; } /* * (non-Javadoc) * * @see org.eclipse.ui.part.WorkbenchPart#setFocus() */ @Override public void setFocus() { parent.setFocus(); } /* * (non-Javadoc) * * @see com.nokia.traceviewer.engine.TraceViewerViewInterface#isDisposed() */ public boolean isDisposed() { boolean disposed = false; Display display = getDisplay(); if (display == null || display.isDisposed()) { disposed = true; } return disposed; } /* * (non-Javadoc) * * @seecom.nokia.traceviewer.engine.TraceViewerPropertyViewInterface# * getSelectedVariableItems() */ public int[] getSelectedVariableIndices() { return variableTracingTable.getSelectionIndices(); } }