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: * * 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, //$NON-NLS-1$ null); 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; } }