diff -r 14dc2103a631 -r ed1c9f64298a trace/tracebuilder/com.nokia.tracebuilder.view/src/com/nokia/tracebuilder/action/EditPropertiesAction.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/trace/tracebuilder/com.nokia.tracebuilder.view/src/com/nokia/tracebuilder/action/EditPropertiesAction.java Wed Jun 23 14:35:40 2010 +0300 @@ -0,0 +1,139 @@ +/* +* 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 edit properties command +* +*/ +package com.nokia.tracebuilder.action; + +import com.nokia.tracebuilder.engine.LastKnownLocation; +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.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; + +/** + * Handler for edit properties command + * + */ +final class EditPropertiesAction extends TraceBuilderAction { + + /** + * Constructor + */ + EditPropertiesAction() { + setText(Messages.getString("EditPropertiesAction.Title")); //$NON-NLS-1$ + setToolTipText(Messages.getString("EditPropertiesAction.Tooltip")); //$NON-NLS-1$ + setDefaultProperties(ActionIDs.EDIT_PROPERTIES_ACTION_ID, + TraceBuilderHelp.EDIT_PROPERTIES_HELP_CONTEXT); + } + + /* + * (non-Javadoc) + * + * @see com.nokia.tracebuilder.action.TraceBuilderAction#doRun() + */ + @Override + protected void doRun() throws TraceBuilderException { + TraceBuilderGlobals.getTraceBuilder().showProperties(); + } + + /* + * (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) { + retval = true; + setText(Messages.getString("ActionFactory.GroupPropertiesAction")); //$NON-NLS-1$ + } else if (selectedObject instanceof Trace) { + if (((Trace) selectedObject).getExtension(ReadOnlyObjectRule.class) != null) { + retval = false; + setText(Messages.getString("EditPropertiesAction.Title")); //$NON-NLS-1$ + } else { + retval = true; + setText(Messages + .getString("ActionFactory.TracePropertiesAction")); //$NON-NLS-1$ + } + } else if (selectedObject instanceof TraceConstantTable) { + if (!((TraceConstantTable) selectedObject).hasParameterReferences()) { + retval = true; + setText(Messages + .getString("ActionFactory.ConstantTableProperties")); //$NON-NLS-1$ + } else { + retval = false; + setText(Messages + .getString("EditPropertiesAction.ConstantTableInUse")); //$NON-NLS-1$ + } + } else if (selectedObject instanceof TraceConstantTableEntry) { + retval = true; + setText(Messages + .getString("ActionFactory.ConstantPropertiesAction")); //$NON-NLS-1$ + } else { + retval = false; + setText(Messages.getString("EditPropertiesAction.Title")); //$NON-NLS-1$ + } + return retval; + } + + /* + * (non-Javadoc) + * + * @see com.nokia.tracebuilder.action.TraceBuilderAction#isInPopupMenu(java.lang.Object) + */ + @Override + protected boolean isInPopupMenu(Object selectedObject) { + Object parent = locationToTrace(selectedObject); + boolean retval = isEnabled() && (parent instanceof TraceObject) + && !(selectedObject instanceof TraceLocation) + && !(selectedObject instanceof TraceParameter) + && !(selectedObject instanceof LastKnownLocation); + if (retval && (selectedObject instanceof TraceLocationList)) { + // Unrelated locations list does not show this action + if (!(((TraceLocationList) selectedObject).getOwner() instanceof Trace)) { + retval = false; + } + } else if (retval && (selectedObject instanceof TraceGroup)) { + TraceGroup group = (TraceGroup) selectedObject; + String groupName = group.getName(); + + // Name of TRACE_STATE and TRACE_PERFORMANCE groups can not be changed + GroupNameHandlerBase groupNameHandler = TraceBuilderGlobals.getGroupNameHandler(); + String[] defaultGroups = groupNameHandler.getDefaultGroups(); + if (groupName + .equals(defaultGroups[groupNameHandler.getStateGroupIdIndex()]) + || groupName + .equals(defaultGroups[groupNameHandler.getPerformanceGroupIdIndex()])) { + retval = false; + } + + } + return retval; + } + +} \ No newline at end of file