diff -r 14dc2103a631 -r ed1c9f64298a trace/tracebuilder/com.nokia.tracebuilder.view/src/com/nokia/tracebuilder/action/DeleteAction.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/trace/tracebuilder/com.nokia.tracebuilder.view/src/com/nokia/tracebuilder/action/DeleteAction.java Wed Jun 23 14:35:40 2010 +0300 @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2009-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: + * + * Handler for delete command + * + */ +package com.nokia.tracebuilder.action; + +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.model.Trace; +import com.nokia.tracebuilder.model.TraceBuilderException; +import com.nokia.tracebuilder.model.TraceConstantTable; +import com.nokia.tracebuilder.model.TraceConstantTableEntry; +import com.nokia.tracebuilder.model.TraceGroup; +import com.nokia.tracebuilder.model.TraceObject; +import com.nokia.tracebuilder.model.TraceParameter; +import com.nokia.tracebuilder.project.GroupNameHandlerBase; +import com.nokia.tracebuilder.rules.ReadOnlyObjectRule; +import com.nokia.tracebuilder.rules.TraceParameterRestrictionRule; + +/** + * Handler for delete command + * + */ +final class DeleteAction extends TraceBuilderAction { + + /** + * Constructor + */ + DeleteAction() { + setText(Messages.getString("DeleteAction.Title")); //$NON-NLS-1$ + setToolTipText(Messages.getString("DeleteAction.Tooltip")); //$NON-NLS-1$ + setDefaultProperties(ActionIDs.DELETE_ACTION_ID, + TraceBuilderHelp.DELETE_OBJECT_HELP_CONTEXT); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.action.IAction#run() + */ + @Override + public void doRun() throws TraceBuilderException { + TraceBuilderGlobals.getTraceBuilder().delete(); + } + + /* + * (non-Javadoc) + * + * @see + * com.nokia.tracebuilder.action.TraceBuilderAction#getEnabledFlag(java. + * lang.Object) + */ + @Override + protected boolean getEnabledFlag(Object selectedObject) { + boolean retval; + selectedObject = locationToTrace(selectedObject); + if (selectedObject instanceof TraceGroup) { + setText(Messages.getString("ActionFactory.DeleteGroupAction")); //$NON-NLS-1$ + retval = true; + } else if (selectedObject instanceof Trace) { + setText(Messages.getString("ActionFactory.DeleteTraceAction")); //$NON-NLS-1$ + retval = true; + } else if (selectedObject instanceof TraceParameter) { + TraceParameter selectedParameter = (TraceParameter) selectedObject; + Trace owner = selectedParameter.getTrace(); + TraceParameterRestrictionRule restriction = owner + .getExtension(TraceParameterRestrictionRule.class); + ReadOnlyObjectRule readOnly = owner + .getExtension(ReadOnlyObjectRule.class); + if (readOnly != null + || (restriction != null && !restriction + .canRemoveParameters())) { + setText(Messages.getString("DeleteAction.Title")); //$NON-NLS-1$ + retval = false; + } else { + setText(Messages + .getString("ActionFactory.DeleteParameterAction")); //$NON-NLS-1$ + + // If there are last known locations, source file is not open + // and parameters cannot be deleted + LastKnownLocationList list = owner + .getExtension(LastKnownLocationList.class); + String groupName = owner.getGroup().getName(); + + // Only optional 32-bit instance identifier can be deleted from + // State Trace + GroupNameHandlerBase groupNameHandler = TraceBuilderGlobals + .getGroupNameHandler(); + boolean isStateTrace = groupName.equals(groupNameHandler + .getDefaultGroups()[groupNameHandler + .getStateGroupIdIndex()]); + if ((list != null && list.hasLocations()) + || (isStateTrace && selectedParameter.getType().equals( + TraceParameter.ASCII))) { + retval = false; + } else { + retval = true; + } + } + } else if (selectedObject instanceof TraceConstantTable) { + if (!((TraceConstantTable) selectedObject).hasParameterReferences()) { + setText(Messages + .getString("ActionFactory.DeleteConstantTableAction")); //$NON-NLS-1$ + retval = true; + } else { + setText(Messages.getString("DeleteAction.ConstantTableInUse")); //$NON-NLS-1$ + retval = false; + } + } else if (selectedObject instanceof TraceConstantTableEntry) { + setText(Messages.getString("ActionFactory.DeleteConstantAction")); //$NON-NLS-1$ + retval = true; + } else { + setText(Messages.getString("DeleteAction.Title")); //$NON-NLS-1$ + retval = false; + } + return retval; + } + + /* + * (non-Javadoc) + * + * @see + * com.nokia.tracebuilder.action.TraceBuilderAction#isInPopupMenu(java.lang + * .Object) + */ + @Override + protected boolean isInPopupMenu(Object selectedObject) { + Object parent = locationToTrace(selectedObject); + return isEnabled() && (parent instanceof TraceObject) + && !(selectedObject instanceof TraceLocation) + && !(selectedObject instanceof LastKnownLocation); + } + +} \ No newline at end of file