trace/traceviewer/com.nokia.traceviewer/src/com/nokia/traceviewer/action/ActionFactory.java
changeset 11 5b9d4d8641ce
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/trace/traceviewer/com.nokia.traceviewer/src/com/nokia/traceviewer/action/ActionFactory.java	Wed Jun 23 14:49:59 2010 +0300
@@ -0,0 +1,582 @@
+/*
+ * 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:
+ *
+ * ActionFactory class
+ *
+ */
+package com.nokia.traceviewer.action;
+
+import java.net.URL;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IContributionItem;
+import org.eclipse.jface.action.IMenuListener;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.jface.action.MenuManager;
+import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.ui.IWorkbenchActionConstants;
+
+import com.nokia.traceviewer.TraceViewerPlugin;
+import com.nokia.traceviewer.engine.TraceViewerGlobals;
+import com.nokia.traceviewer.engine.dataprocessor.Logger;
+
+/**
+ * ActionFactory
+ * 
+ */
+public final class ActionFactory {
+
+	/**
+	 * Clear view action
+	 */
+	private Action clearViewAction;
+
+	/**
+	 * Color action
+	 */
+	private Action colorAction;
+
+	/**
+	 * Connect action
+	 */
+	private Action connectAction;
+
+	/**
+	 * Count lines action
+	 */
+	private Action countLinesAction;
+
+	/**
+	 * Filter action
+	 */
+	private Action filterAction;
+
+	/**
+	 * Close ASCII log action
+	 */
+	private Action logCloseAsciiAction;
+
+	/**
+	 * Close Binary log action
+	 */
+	private Action logCloseBinaryAction;
+
+	/**
+	 * New ASCII log action
+	 */
+	private Action logNewAsciiAction;
+
+	/**
+	 * New Binary log action
+	 */
+	private Action logNewBinaryAction;
+
+	/**
+	 * Open log action
+	 */
+	private Action logOpenLogAction;
+
+	/**
+	 * Save Binary log action
+	 */
+	private Action logSaveBinaryAction;
+
+	/**
+	 * Save Ascii log action
+	 */
+	private Action logSaveAsciiAction;
+
+	/**
+	 * Open Decode file action
+	 */
+	private Action openDecodeFileAction;
+
+	/**
+	 * Append decode file action
+	 */
+	private Action appendDecodeFileAction;
+
+	/**
+	 * Reload decode files actions
+	 */
+	private Action reloadDecodeFilesAction;
+
+	/**
+	 * Pause action
+	 */
+	private Action pauseAction;
+
+	/**
+	 * Search action
+	 */
+	private Action searchAction;
+
+	/**
+	 * Trace Activation action
+	 */
+	private Action traceActivationAction;
+
+	/**
+	 * Trace Variables action
+	 */
+	private Action traceVariablesAction;
+
+	/**
+	 * Trigger action
+	 */
+	private Action triggerAction;
+
+	/**
+	 * Show trace info action
+	 */
+	private Action showTraceInfoAction;
+
+	/**
+	 * Open trace location action
+	 */
+	private Action openTraceLocationAction;
+
+	/**
+	 * Copy selection action
+	 */
+	private Action copySelectionAction;
+
+	/**
+	 * Open variable tracing history dialog
+	 */
+	private Action openVariableTracingHistoryAction;
+
+	/**
+	 * Start external filter program action
+	 */
+	private Action startExternalFilterAction;
+
+	/**
+	 * Select all action
+	 */
+	private Action selectAllAction;
+
+	/**
+	 * Open Connection Settings action
+	 */
+	private Action openConnectionSettingsAction;
+
+	/**
+	 * Close and restart logging action
+	 */
+	private Action closeAndRestartLoggingAction;
+
+	/**
+	 * Toolbar manager
+	 */
+	private IToolBarManager manager;
+
+	/**
+	 * List of normal items in toolbar
+	 */
+	private IContributionItem[] normalToolbarItems;
+
+	/**
+	 * Image for the log submenu
+	 */
+	private static ImageDescriptor logSubMenuImage;
+
+	static {
+		URL url = TraceViewerPlugin.getDefault().getBundle().getEntry(
+				"/icons/log.gif"); //$NON-NLS-1$
+		logSubMenuImage = ImageDescriptor.createFromURL(url);
+	}
+
+	/**
+	 * Constructor
+	 * 
+	 */
+	public ActionFactory() {
+		createActions();
+	}
+
+	/**
+	 * Creates all the action items
+	 */
+	private void createActions() {
+
+		// Toolbar actions
+		reloadDecodeFilesAction = new ReloadDecodeFilesAction();
+		connectAction = new ConnectAction();
+		pauseAction = new PauseAction();
+		filterAction = new FilterAction();
+		startExternalFilterAction = new StartExternalFilterAction();
+		searchAction = new SearchAction();
+		colorAction = new ColorAction();
+		countLinesAction = new CountLinesAction();
+		traceVariablesAction = new TraceVariablesAction();
+		clearViewAction = new ClearViewAction();
+
+		// Menubar actions
+		traceActivationAction = new TraceActivationAction();
+		triggerAction = new TriggerAction();
+		openConnectionSettingsAction = new OpenConnectionSettingsAction();
+
+		// Log actions are in own submenu
+		logCloseAsciiAction = new LogCloseAsciiAction();
+		logCloseBinaryAction = new LogCloseBinaryAction();
+		logNewAsciiAction = new LogNewAsciiAction();
+		logNewBinaryAction = new LogNewBinaryAction();
+		logOpenLogAction = new LogOpenLogAction();
+		logSaveBinaryAction = new LogSaveBinaryAction();
+		logSaveAsciiAction = new LogSaveAsciiAction();
+
+		// Other, non-visible, actions
+		openDecodeFileAction = new OpenDecodeFileAction();
+		showTraceInfoAction = new ShowTraceInfoAction();
+		openTraceLocationAction = new OpenTraceLocationAction();
+		appendDecodeFileAction = new AppendDecodeFileAction();
+		openVariableTracingHistoryAction = new OpenVariableTracingHistoryAction();
+		closeAndRestartLoggingAction = new CloseAndRestartLoggingAction();
+
+		// System action overrides
+		copySelectionAction = new CopySelectionAction();
+		selectAllAction = new SelectAllAction();
+	}
+
+	/**
+	 * Fills the view menu with the actions
+	 * 
+	 * @param manager
+	 *            the menu manager
+	 */
+	public void fillMenu(IMenuManager manager) {
+		manager.add(traceActivationAction);
+		manager.add(new Separator());
+		IMenuManager subMgr = new MenuManager(
+				Messages.getString("ActionFactory.LogSubMenuTitle"), logSubMenuImage, null); //$NON-NLS-1$
+		subMgr.setRemoveAllWhenShown(true);
+		subMgr.setVisible(true);
+		subMgr.addMenuListener(new IMenuListener() {
+			public void menuAboutToShow(IMenuManager mgr) {
+				mgr.add(logOpenLogAction);
+				mgr.add(new Separator());
+				mgr.add(logNewBinaryAction);
+				mgr.add(logSaveBinaryAction);
+				mgr.add(logCloseBinaryAction);
+
+				mgr.add(new Separator());
+				mgr.add(logNewAsciiAction);
+				mgr.add(logSaveAsciiAction);
+				mgr.add(logCloseAsciiAction);
+
+				// Get the logger DataProcessor
+				Logger logger = TraceViewerGlobals.getTraceViewer()
+						.getDataProcessorAccess().getLogger();
+
+				boolean asciiLogging = logger.isPlainLogging();
+				boolean binaryLogging = logger.isBinLogging();
+				boolean logFileOpened = logger.isLogFileOpened();
+
+				// Check if Binary logging is on
+				logNewBinaryAction.setEnabled(!binaryLogging);
+				logCloseBinaryAction.setEnabled(binaryLogging);
+
+				// Check if ASCII logging is on
+				logNewAsciiAction.setEnabled(!asciiLogging);
+				logCloseAsciiAction.setEnabled(asciiLogging);
+
+				logOpenLogAction.setEnabled(!asciiLogging && !binaryLogging);
+
+				// Check if log file is opened
+				if (logFileOpened) {
+					logNewBinaryAction.setEnabled(false);
+					logCloseBinaryAction.setEnabled(false);
+					logNewAsciiAction.setEnabled(false);
+					logCloseAsciiAction.setEnabled(false);
+				}
+
+			}
+		});
+
+		manager.add(subMgr);
+		manager.add(new Separator());
+		manager.add(triggerAction);
+		manager.add(new Separator());
+		manager.add(openConnectionSettingsAction);
+		manager.add(new Separator());
+		manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+	}
+
+	/**
+	 * Fills the toolbar
+	 * 
+	 * @param manager
+	 *            the toolbar manager
+	 */
+	public void fillToolBar(IToolBarManager manager) {
+		this.manager = manager;
+		manager.add(reloadDecodeFilesAction);
+		manager.add(connectAction);
+		manager.add(new Separator());
+		manager.add(pauseAction);
+		manager.add(filterAction);
+		manager.add(startExternalFilterAction);
+		manager.add(searchAction);
+		manager.add(colorAction);
+		manager.add(new Separator());
+		manager.add(countLinesAction);
+		manager.add(traceVariablesAction);
+		manager.add(new Separator());
+		manager.add(clearViewAction);
+		manager.add(new Separator());
+		manager.add(new Separator(IWorkbenchActionConstants.MB_ADDITIONS));
+	}
+
+	/**
+	 * Adds close and restart logging button
+	 * 
+	 * @param filePath
+	 *            file path of the log file
+	 */
+	public void addCloseAndRestartLoggingButton(String filePath) {
+		((CloseAndRestartLoggingAction) closeAndRestartLoggingAction)
+				.changeToStopLoggingAction();
+
+		if (normalToolbarItems == null) {
+			normalToolbarItems = manager.getItems();
+			manager.removeAll();
+
+			// First add reload Dictionary files action
+			manager.add(reloadDecodeFilesAction);
+
+			((CloseAndRestartLoggingAction) closeAndRestartLoggingAction)
+					.setFilePath(filePath);
+			manager.add(closeAndRestartLoggingAction);
+
+			// Add old items back. Start from index 1 because in index 0 there
+			// is reload Dictionary file action which is already added to the
+			// manager
+			for (int i = 1; i < normalToolbarItems.length; i++) {
+				manager.add(normalToolbarItems[i]);
+			}
+
+			manager.update(true);
+		}
+	}
+
+	/**
+	 * Removes close and restart logging button
+	 */
+	public void removeCloseAndRestartLoggingButton() {
+		if (normalToolbarItems != null) {
+			manager.removeAll();
+
+			// Add old items back
+			for (int i = 0; i < normalToolbarItems.length; i++) {
+				manager.add(normalToolbarItems[i]);
+			}
+			normalToolbarItems = null;
+
+			manager.update(true);
+		}
+	}
+
+	/**
+	 * Gets connect action
+	 * 
+	 * @return connect action
+	 */
+	public Action getConnectAction() {
+		return connectAction;
+	}
+
+	/**
+	 * Gets pause action
+	 * 
+	 * @return pause action
+	 */
+	public Action getPauseAction() {
+		return pauseAction;
+	}
+
+	/**
+	 * Gets search action
+	 * 
+	 * @return search action
+	 */
+	public Action getSearchAction() {
+		return searchAction;
+	}
+
+	/**
+	 * Gets show trace info action
+	 * 
+	 * @return show trace info action
+	 */
+	public Action getShowTraceInfoAction() {
+		return showTraceInfoAction;
+	}
+
+	/**
+	 * Gets open trace location action
+	 * 
+	 * @return open trace location action
+	 */
+	public Action getOpenTraceLocationAction() {
+		return openTraceLocationAction;
+	}
+
+	/**
+	 * Gets trace activation action
+	 * 
+	 * @return trace activation action
+	 */
+	public Action getTraceActivationAction() {
+		return traceActivationAction;
+	}
+
+	/**
+	 * Gets coloring action
+	 * 
+	 * @return coloring action
+	 */
+	public Action getColorAction() {
+		return colorAction;
+	}
+
+	/**
+	 * Gets open decode file action
+	 * 
+	 * @return open decode file action
+	 */
+	public Action getOpenDecodeFileAction() {
+		return openDecodeFileAction;
+	}
+
+	/**
+	 * Gets append decode file action
+	 * 
+	 * @return append decode file action
+	 */
+	public Action getAppendDecodeFileAction() {
+		return appendDecodeFileAction;
+	}
+
+	/**
+	 * Gets copy selection action
+	 * 
+	 * @return copy selection action
+	 */
+	public Action getCopySelectionAction() {
+		return copySelectionAction;
+	}
+
+	/**
+	 * Gets select all action
+	 * 
+	 * @return select all action
+	 */
+	public Action getSelectAllAction() {
+		return selectAllAction;
+	}
+
+	/**
+	 * Gets open variableTracing details action
+	 * 
+	 * @return the open variable tracing details action
+	 */
+	public Action getOpenVariableTracingHistoryAction() {
+		return openVariableTracingHistoryAction;
+	}
+
+	/**
+	 * Gets reload decode files action
+	 * 
+	 * @return the reload decode files action
+	 */
+	public Action getReloadDecodeFilesAction() {
+		return reloadDecodeFilesAction;
+	}
+
+	/**
+	 * Gets open log action
+	 * 
+	 * @return open log action
+	 */
+	public Action getLogOpenLogAction() {
+		return logOpenLogAction;
+	}
+
+	/**
+	 * Gets close ascii log action
+	 * 
+	 * @return close ascii log action
+	 */
+	public Action getLogCloseAsciiAction() {
+		return logCloseAsciiAction;
+	}
+
+	/**
+	 * Gets close binary log action
+	 * 
+	 * @return close binary log action
+	 */
+	public Action getLogCloseBinaryAction() {
+		return logCloseBinaryAction;
+	}
+
+	/**
+	 * Gets new ascii log action
+	 * 
+	 * @return new ascii log action
+	 */
+	public Action getLogNewAsciiAction() {
+		return logNewAsciiAction;
+	}
+
+	/**
+	 * Gets new binary log action
+	 * 
+	 * @return new binary log action
+	 */
+	public Action getLogNewBinaryAction() {
+		return logNewBinaryAction;
+	}
+
+	/**
+	 * Gets save binary log action
+	 * 
+	 * @return save binary log action
+	 */
+	public Action getLogSaveBinaryAction() {
+		return logSaveBinaryAction;
+	}
+
+	/**
+	 * Gets save ascii log action
+	 * 
+	 * @return save ascii log action
+	 */
+	public Action getLogSaveAsciiAction() {
+		return logSaveAsciiAction;
+	}
+
+	/**
+	 * Gets trigger action
+	 * 
+	 * @return trigger action
+	 */
+	public Action getTriggerAction() {
+		return triggerAction;
+	}
+}