trace/tracebuilder/com.nokia.tracebuilder.view/src/com/nokia/tracebuilder/action/TraceBuilderAction.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/trace/tracebuilder/com.nokia.tracebuilder.view/src/com/nokia/tracebuilder/action/TraceBuilderAction.java Wed Jun 23 14:35:40 2010 +0300
@@ -0,0 +1,168 @@
+/*
+ * Copyright (c) 2008 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:
+ *
+ * Base class for all action objects of Trace Builder view
+ *
+ */
+package com.nokia.tracebuilder.action;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.ui.PlatformUI;
+
+import com.nokia.tracebuilder.engine.LastKnownLocation;
+import com.nokia.tracebuilder.engine.LastKnownLocationList;
+import com.nokia.tracebuilder.engine.TraceBuilderGlobals;
+import com.nokia.tracebuilder.engine.TraceBuilderHelp;
+import com.nokia.tracebuilder.engine.TraceLocation;
+import com.nokia.tracebuilder.engine.TraceLocationList;
+import com.nokia.tracebuilder.model.TraceBuilderException;
+import com.nokia.tracebuilder.view.TraceViewPlugin;
+
+/**
+ * Base class for all action objects of Trace Builder view
+ *
+ */
+abstract class TraceBuilderAction extends Action {
+
+ /**
+ * Constructor
+ */
+ protected TraceBuilderAction() {
+ }
+
+ /**
+ * Constructor with action type
+ *
+ * @param type
+ * the action type
+ */
+ protected TraceBuilderAction(int type) {
+ super("", type); //$NON-NLS-1$
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.jface.action.IAction#run()
+ */
+ @Override
+ public void run() {
+ try {
+ doRun();
+ } catch (TraceBuilderException e) {
+ TraceBuilderGlobals.getEvents().postError(e);
+ }
+ }
+
+ /**
+ * Sets the properties of this action
+ *
+ * @param actionID
+ * the action ID
+ * @param helpID
+ * the help ID
+ */
+ protected void setDefaultProperties(String actionID, String helpID) {
+ if (actionID != null) {
+ setImageDescriptor(TraceViewPlugin
+ .getImageDescriptor(ActionIDs.ICONS_DIRECTORY + actionID
+ + ActionIDs.GIF));
+ setActionDefinitionId(ActionIDs.ACTION_ID_BASE + actionID);
+ }
+ if (helpID != null) {
+ PlatformUI.getWorkbench().getHelpSystem().setHelp(this,
+ TraceBuilderHelp.HELP_CONTEXT_BASE + helpID);
+ }
+ }
+
+ /**
+ * Enables this action based on model validity and selected object
+ *
+ * @param modelValid
+ * the model validity
+ * @param selectedObject
+ * the object
+ */
+ protected void setEnabled(boolean modelValid, Object selectedObject) {
+ if (!modelValid) {
+ setEnabled(false);
+ } else {
+ setEnabled(getEnabledFlag(selectedObject));
+ }
+ }
+
+ /**
+ * Checks if this action belongs to the menu
+ *
+ * @return true if in menu, false if not
+ */
+ protected boolean isInMenu() {
+ return true;
+ }
+
+ /**
+ * Checks if this action belongs to the pop-up menu
+ *
+ * @param selectedObject
+ * the selection associated to the pop-up
+ * @return true if in pop-up, false if not
+ */
+ protected boolean isInPopupMenu(Object selectedObject) {
+ return isEnabled();
+ }
+
+ /**
+ * If given object is a location or location list, this returns the
+ * associated trace. Otherwise returns the object passed as parameter
+ *
+ * @param selectedObject
+ * the object
+ * @return the trace related to the object
+ */
+ protected Object locationToTrace(Object selectedObject) {
+ Object retval = null;
+ if (selectedObject instanceof TraceLocation) {
+ retval = ((TraceLocation) selectedObject).getTrace();
+ } else if (selectedObject instanceof LastKnownLocation) {
+ retval = ((LastKnownLocation) selectedObject).getTrace();
+ } else if (selectedObject instanceof TraceLocationList) {
+ retval = ((TraceLocationList) selectedObject).getOwner();
+ } else if (selectedObject instanceof LastKnownLocationList) {
+ retval = ((LastKnownLocationList) selectedObject).getOwner();
+ }
+ if (retval == null) {
+ retval = selectedObject;
+ }
+ return retval;
+ }
+
+ /**
+ * Gets the enabled flag based on the object selected by user
+ *
+ * @param selectedObject
+ * the object
+ * @return true if enabled, false if not
+ */
+ protected abstract boolean getEnabledFlag(Object selectedObject);
+
+ /**
+ * Runs this action
+ *
+ * @throws TraceBuilderException
+ * if an exception occurs
+ */
+ protected abstract void doRun() throws TraceBuilderException;
+
+}