trace/tracebuilder/com.nokia.tracebuilder/src/com/nokia/tracebuilder/engine/propertydialog/PropertyDialogEngine.java
changeset 10 ed1c9f64298a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/trace/tracebuilder/com.nokia.tracebuilder/src/com/nokia/tracebuilder/engine/propertydialog/PropertyDialogEngine.java	Wed Jun 23 14:35:40 2010 +0300
@@ -0,0 +1,698 @@
+/*
+* 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:
+*
+* Control logic for property dialog
+*
+*/
+package com.nokia.tracebuilder.engine.propertydialog;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.nokia.tracebuilder.engine.SourceContextManager;
+import com.nokia.tracebuilder.engine.TraceBuilderConfiguration;
+import com.nokia.tracebuilder.engine.TraceBuilderDialogs;
+import com.nokia.tracebuilder.engine.TraceBuilderGlobals;
+import com.nokia.tracebuilder.engine.TraceLocation;
+import com.nokia.tracebuilder.engine.TraceLocationList;
+import com.nokia.tracebuilder.engine.TraceObjectPropertyDialog;
+import com.nokia.tracebuilder.engine.TraceObjectPropertyDialogConfiguration;
+import com.nokia.tracebuilder.engine.TraceObjectPropertyDialogEnabler;
+import com.nokia.tracebuilder.engine.TraceObjectPropertyDialogFlag;
+import com.nokia.tracebuilder.engine.TraceObjectPropertyDialogTemplate;
+import com.nokia.tracebuilder.engine.TraceBuilderErrorCodes.TraceBuilderErrorCode;
+import com.nokia.tracebuilder.engine.utils.TraceUtils;
+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.TraceModel;
+import com.nokia.tracebuilder.model.TraceModelExtension;
+import com.nokia.tracebuilder.model.TraceObject;
+import com.nokia.tracebuilder.model.TraceObjectUtils;
+import com.nokia.tracebuilder.model.TraceParameter;
+import com.nokia.tracebuilder.rules.ReadOnlyObjectRule;
+import com.nokia.tracebuilder.rules.TraceParameterRestrictionRule;
+
+/**
+ * Control logic for property dialog. Separated from TraceBuilder, since it was
+ * getting too complex
+ * 
+ */
+public class PropertyDialogEngine implements PropertyDialogConfigurationNames {
+
+	/**
+	 * Properties dialog is used to add and edit trace objects
+	 */
+	private TraceObjectPropertyDialog propertyDialog;
+
+	/**
+	 * Interface which is used to configure the property dialog
+	 */
+	private TraceObjectPropertyDialogConfiguration propertyDialogConfiguration;
+
+	/**
+	 * Property dialog verifier
+	 */
+	private PropertyDialogVerifier propertyDialogVerifier;
+
+	/**
+	 * Trace model
+	 */
+	private TraceModel model;
+
+	/**
+	 * Constructor
+	 * 
+	 * @param model
+	 *            the trace model
+	 * @param dialogConfiguration
+	 *            dialog configuration interface
+	 */
+	public PropertyDialogEngine(TraceModel model,
+			TraceObjectPropertyDialogConfiguration dialogConfiguration) {
+		this.model = model;
+		propertyDialogConfiguration = dialogConfiguration;
+		propertyDialogVerifier = new PropertyDialogVerifier(model,
+				propertyDialog);
+	}
+
+	/**
+	 * Changes the property dialog
+	 * 
+	 * @param propertyDialog
+	 *            the new property dialog
+	 */
+	public void setPropertyDialog(TraceObjectPropertyDialog propertyDialog) {
+		this.propertyDialog = propertyDialog;
+		propertyDialogVerifier.setPropertyDialog(propertyDialog);
+	}
+
+	/**
+	 * Shows "Add Trace" dialog.
+	 * 
+	 * @param group
+	 *            group proposal
+	 * @param name
+	 *            name proposal
+	 * @param value
+	 *            value proposal
+	 * @param enabler
+	 *            dialog enabler interface
+	 * @return the new trace
+	 */
+	public Trace showAddTraceDialog(TraceGroup group, String name,
+			String value, PropertyDialogEnabler enabler) {
+		return showAddTraceDialog(group, name, value, null, enabler);
+	}
+
+	/**
+	 * Shows "Add Trace" dialog.
+	 * 
+	 * @param group
+	 *            group proposal
+	 * @param name
+	 *            name proposal
+	 * @param value
+	 *            value proposal
+	 * @param extensions
+	 *            extensions for the next object
+	 * @param enabler
+	 *            dialog enabler interface
+	 * @return the new trace
+	 */
+	public Trace showAddTraceDialog(TraceGroup group, String name,
+			String value, List<TraceModelExtension> extensions,
+			PropertyDialogEnabler enabler) {
+		TraceBuilderConfiguration config = TraceBuilderGlobals
+				.getConfiguration();
+		// If a group has been selected, the selection is set to the dialog
+		int id;
+		if (group != null) {
+			id = group.getNextTraceID();
+		} else {
+			id = 1;
+		}
+		if (name == null) {
+			name = config.getText(PROPERTY_DIALOG_TRACE_NAME);
+		}
+		if (value == null) {
+			value = config.getText(PROPERTY_DIALOG_TRACE_TEXT);
+		}
+		if (group == null) {
+			group = model.findGroupByName(config
+					.getText(PROPERTY_DIALOG_TRACE_GROUP));
+		}
+		name = TraceObjectUtils.modifyDuplicateTraceName(model,
+				TraceUtils.convertName(name)).getData();
+		setAddDialogDefaults(TraceObjectPropertyDialog.ADD_TRACE, id, name,
+				value, group, enabler);
+		propertyDialog.setEnabler(enabler);
+		CreateTraceCallback callback = new CreateTraceCallback(model,
+				extensions);
+		showDialog(callback);
+		return callback.getTrace();
+	}
+
+	/**
+	 * Shows the instrumenter dialog
+	 * 
+	 * @param target
+	 *            the selected group
+	 * @param enabler
+	 *            dialog enabler interface
+	 * @param callback
+	 *            callback processing the instrumentation
+	 */
+	public void showInstrumenterDialog(TraceGroup target,
+			PropertyDialogEnabler enabler, RunInstrumenterCallback callback) {
+		TraceBuilderConfiguration config = TraceBuilderGlobals
+				.getConfiguration();
+		String name = config.getText(PROPERTY_DIALOG_INSTRUMENTER_NAME_FORMAT);
+		if (name == null || name.length() == 0) {
+			name = TraceUtils.getDefaultNameFormat();
+		}
+		String trace = config
+				.getText(PROPERTY_DIALOG_INSTRUMENTER_TRACE_FORMAT);
+		if (trace == null || trace.length() == 0) {
+			trace = TraceUtils.getDefaultTraceFormat();
+		}
+		if (target == null) {
+			target = model.findGroupByName(config
+					.getText(PROPERTY_DIALOG_INSTRUMENTER_TRACE_GROUP));
+		}
+		setAddDialogDefaults(TraceObjectPropertyDialog.INSTRUMENTER, 0, name,
+				trace, target, enabler);
+		SourceContextManager manager = TraceBuilderGlobals
+				.getSourceContextManager();
+		manager.setInstrumenting(true);
+		try {
+			showDialog(callback);
+		} finally {
+			manager.setInstrumenting(false);
+		}
+	}
+
+	/**
+	 * Shows "Add Parameter" dialog
+	 * 
+	 * @param trace
+	 *            owner of the new parameter
+	 * @param enabler
+	 *            dialog enabler interface
+	 * @return the new parameter
+	 * @throws TraceBuilderException
+	 *             if dialog cannot be shown
+	 */
+	public TraceParameter showAddParameterDialog(Trace trace,
+			PropertyDialogEnabler enabler) throws TraceBuilderException {
+		TraceParameter retval = null;
+		// Trace rules are checked first
+		TraceParameterRestrictionRule restriction = trace
+				.getExtension(TraceParameterRestrictionRule.class);
+		ReadOnlyObjectRule readOnly = trace
+				.getExtension(ReadOnlyObjectRule.class);
+		if (readOnly == null
+				&& (restriction == null || restriction.canAddParameters())) {
+			int result = PropertyDialogCallback
+					.showLocationConfirmationQuery(trace);
+			if (result == TraceBuilderDialogs.OK) {
+				retval = internalShowAddParameterDialog(trace, enabler);
+			}
+		} else {
+			throw new TraceBuilderException(
+					TraceBuilderErrorCode.PARAMETER_ADD_NOT_ALLOWED);
+		}
+		return retval;
+	}
+
+	/**
+	 * Shows "Select component" dialog
+	 */
+	public void showSelectComponentDialog() {
+
+		if (propertyDialog != null) {
+
+			// Create enabler
+			PropertyDialogEnabler enabler = new PropertyDialogEnabler(
+					PropertyDialogEnabler.ENABLE_TARGET);
+			TraceBuilderConfiguration config = TraceBuilderGlobals
+					.getConfiguration();
+			String name = config.getText(PROPERTY_DIALOG_COMPONENT_NAME);
+			setAddDialogDefaults(TraceObjectPropertyDialog.SELECT_COMPONENT, 0,
+					name, null, model, enabler);
+			// Set default target to be same as previous software component
+			propertyDialog.setTarget(TraceBuilderGlobals
+					.getPreviousSoftwareComponentName());
+			showDialog(new SelectComponentCallback(model));
+		}
+	}
+
+	/**
+	 * Shows "Add Parameter" dialog
+	 * 
+	 * @param trace
+	 *            owner of the new parameter
+	 * @param enabler
+	 *            dialog enabler interface
+	 * @return the new parameter
+	 */
+	private TraceParameter internalShowAddParameterDialog(Trace trace,
+			PropertyDialogEnabler enabler) {
+		TraceBuilderConfiguration config = TraceBuilderGlobals
+				.getConfiguration();
+		int id = trace.getNextParameterID();
+		// Parameter proposal defaults to last used value
+		String name = config.getText(PROPERTY_DIALOG_PARAMETER_NAME);
+		String type = config.getText(PROPERTY_DIALOG_PARAMETER_TYPE);
+		setAddDialogDefaults(TraceObjectPropertyDialog.ADD_PARAMETER, id,
+				TraceObjectUtils.modifyDuplicateParameterName(trace, name)
+						.getData(), null, trace, enabler);
+		propertyDialog.setValue(type);
+		TraceLocationList list = trace.getExtension(TraceLocationList.class);
+		if (list != null && list.hasLocations()) {
+			TraceLocation loc = (TraceLocation) list.iterator().next();
+			if (loc.getParameterCount() > trace.getParameterCount()) {
+				String proposal = loc.getParameter(trace.getParameterCount());
+				if (proposal.length() > 0) {
+					propertyDialog.setName(proposal);
+					propertyDialog.setValue(proposal);
+				}
+			}
+		}
+		CreateParameterCallback callback = new CreateParameterCallback(model,
+				trace);
+		showDialog(callback);
+		return callback.getParameter();
+	}
+
+	/**
+	 * Shows "Add Constant" dialog
+	 * 
+	 * @param table
+	 *            target constant table
+	 * @param enabler
+	 *            dialog enabler interface
+	 */
+	public void showAddConstantDialog(TraceConstantTable table,
+			PropertyDialogEnabler enabler) {
+		TraceBuilderConfiguration config = TraceBuilderGlobals
+				.getConfiguration();
+		String name = config.getText(PROPERTY_DIALOG_CONSTANT_NAME);
+		int id = 0;
+		if (table != null) {
+			id = table.getNextEntryID();
+		}
+		setAddDialogDefaults(TraceObjectPropertyDialog.ADD_CONSTANT, id,
+				TraceObjectUtils.modifyDuplicateConstantName(table, name)
+						.getData(), null, table, enabler);
+		showDialog(new CreateConstantCallback(model));
+	}
+
+	/**
+	 * Shows the "Edit Group" dialog
+	 * 
+	 * @param group
+	 *            group to be edited
+	 */
+	public void showEditGroupDialog(TraceGroup group) {
+		int result = PropertyDialogCallback
+				.showLocationConfirmationQuery(group);
+		if (result == TraceBuilderDialogs.OK) {
+			setEditDialogDefaults(TraceObjectPropertyDialog.EDIT_GROUP, group);
+			showDialog(new UpdateGroupCallback(model, group));
+		}
+	}
+
+	/**
+	 * Shows the "Edit Trace" dialog
+	 * 
+	 * @param trace
+	 *            trace to be edited
+	 */
+	public void showEditTraceDialog(Trace trace) {
+		int result = PropertyDialogCallback
+				.showLocationConfirmationQuery(trace);
+		if (result == TraceBuilderDialogs.OK) {
+			setEditDialogDefaults(TraceObjectPropertyDialog.EDIT_TRACE, trace);
+			propertyDialog.setValue(trace.getTrace());
+			showDialog(new UpdateTraceCallback(model, trace));
+		}
+	}
+
+	/**
+	 * Shows the "Edit Constant Table" dialog
+	 * 
+	 * @param table
+	 *            the table to be edited
+	 */
+	public void showEditConstantTableDialog(TraceConstantTable table) {
+		setEditDialogDefaults(TraceObjectPropertyDialog.EDIT_CONSTANT_TABLE,
+				table);
+		showDialog(new UpdateConstantTableCallback(model, table));
+	}
+
+	/**
+	 * Shows the "Edit Constant" dialog
+	 * 
+	 * @param entry
+	 *            entry to be edited
+	 */
+	public void showEditConstantDialog(TraceConstantTableEntry entry) {
+		setEditDialogDefaults(TraceObjectPropertyDialog.EDIT_CONSTANT, entry);
+		showDialog(new UpdateConstantCallback(model, entry));
+	}
+
+	/**
+	 * Sets the default values for the dialog
+	 * 
+	 * @param dialogType
+	 *            the dialog type
+	 * @param id
+	 *            value for ID field
+	 * @param name
+	 *            value for name field
+	 * @param value
+	 *            value for value field
+	 * @param target
+	 *            the target object
+	 * @param enabler
+	 *            dialog enabler interface
+	 */
+	private void setAddDialogDefaults(int dialogType, int id, String name,
+			String value, TraceObject target, PropertyDialogEnabler enabler) {
+		ArrayList<TraceObjectPropertyDialogFlag> flags = initFlags(dialogType,
+				enabler);
+		ArrayList<TraceObjectPropertyDialogTemplate> templates = initTemplates(
+				dialogType, enabler);
+		TraceObjectPropertyDialogTemplate selectedTemplate = findTemplateByTitle(
+				dialogType, templates);
+		propertyDialog.setVerifier(propertyDialogVerifier);
+		propertyDialog.setTargetObject(target);
+		propertyDialog.setEnabler(enabler);
+		propertyDialog.setDialogType(dialogType);
+		propertyDialog.setFlags(flags);
+		propertyDialog.setTemplates(templates, selectedTemplate);
+		propertyDialog.setID(id);
+		propertyDialog.setName(name);
+		propertyDialog.setValue(value);
+	}
+
+	/**
+	 * Creates the dialog templates array
+	 * 
+	 * @param dialogType
+	 *            the dialog type
+	 * @param enabler
+	 *            the dialog enabler interface
+	 * @return the templates array
+	 */
+	private ArrayList<TraceObjectPropertyDialogTemplate> initTemplates(
+			int dialogType, PropertyDialogEnabler enabler) {
+		ArrayList<TraceObjectPropertyDialogTemplate> templates;
+		if (enabler == null || enabler.isTemplateEnabled()) {
+			templates = new ArrayList<TraceObjectPropertyDialogTemplate>();
+			addViewTemplates(dialogType, templates);
+		} else {
+			// If enabler interface exists and disables templates, the templates
+			// are not added to the dialog
+			templates = null;
+		}
+		return templates;
+	}
+
+	/**
+	 * Creates the dialog flags array
+	 * 
+	 * @param dialogType
+	 *            the dialog type
+	 * @param enabler
+	 *            dialog enabler interface
+	 * @return the flags array
+	 */
+	private ArrayList<TraceObjectPropertyDialogFlag> initFlags(int dialogType,
+			PropertyDialogEnabler enabler) {
+		ArrayList<TraceObjectPropertyDialogFlag> flags;
+		if (enabler == null || enabler.isFlagsEnabled()) {
+			flags = new ArrayList<TraceObjectPropertyDialogFlag>();
+			propertyDialogConfiguration.addViewFlags(flags, dialogType);
+		} else {
+			// If enabler interface exists and disables flags, the flags
+			// are not added to the dialog
+			flags = null;
+		}
+		if (flags != null) {
+			String flagPrefix = null;
+			switch (dialogType) {
+			case TraceObjectPropertyDialog.ADD_TRACE:
+				flagPrefix = PROPERTY_DIALOG_TRACE_FLAG;
+				break;
+			case TraceObjectPropertyDialog.ADD_PARAMETER:
+				flagPrefix = PROPERTY_DIALOG_PARAMETER_FLAG;
+				break;
+			case TraceObjectPropertyDialog.ADD_CONSTANT:
+				flagPrefix = PROPERTY_DIALOG_CONSTANT_FLAG;
+				break;
+			case TraceObjectPropertyDialog.INSTRUMENTER:
+				flagPrefix = PROPERTY_DIALOG_INSTRUMENTER_FLAG;
+				break;
+			}
+			// The flag values are set to what has been stored into preferences
+			if (flagPrefix != null) {
+				TraceBuilderConfiguration config = TraceBuilderGlobals
+						.getConfiguration();
+				for (TraceObjectPropertyDialogFlag flag : flags) {
+					String flagName = flagPrefix + flag.getText();
+					if (config.hasEntry(flagName)) {
+						flag.setEnabled(config.getFlag(flagName));
+					}
+				}
+			}
+		}
+		return flags;
+	}
+
+	/**
+	 * Finds a template from given list by title stored into configuration
+	 * 
+	 * @param dialogType
+	 *            the dialog type
+	 * @param templates
+	 *            the templates list
+	 * @return the template that should be activated
+	 */
+	private TraceObjectPropertyDialogTemplate findTemplateByTitle(
+			int dialogType, List<TraceObjectPropertyDialogTemplate> templates) {
+		TraceBuilderConfiguration config = TraceBuilderGlobals
+				.getConfiguration();
+		String templateTitle = null;
+		switch (dialogType) {
+		case TraceObjectPropertyDialog.ADD_TRACE:
+			templateTitle = config.getText(PROPERTY_DIALOG_TRACE_TEMPLATE);
+			break;
+		case TraceObjectPropertyDialog.ADD_PARAMETER:
+			templateTitle = config.getText(PROPERTY_DIALOG_PARAMETER_TEMPLATE);
+			break;
+		case TraceObjectPropertyDialog.ADD_CONSTANT:
+			templateTitle = config.getText(PROPERTY_DIALOG_CONSTANT_TEMPLATE);
+			break;
+		case TraceObjectPropertyDialog.INSTRUMENTER:
+			templateTitle = config
+					.getText(PROPERTY_DIALOG_INSTRUMENTER_TEMPLATE);
+			break;
+		}
+		// Selects the template which has the title stored into preferences
+		TraceObjectPropertyDialogTemplate template = null;
+		if (templateTitle != null && templates != null) {
+			for (TraceObjectPropertyDialogTemplate temp : templates) {
+				if (temp.getTitle().equals(templateTitle)) {
+					template = temp;
+					break;
+				}
+			}
+		}
+		return template;
+	}
+
+	/**
+	 * Adds the templates to "Add" dialog
+	 * 
+	 * @param dialogType
+	 *            the dialog type
+	 * @param templates
+	 *            the list of templates
+	 */
+	private void addViewTemplates(int dialogType,
+			ArrayList<TraceObjectPropertyDialogTemplate> templates) {
+		propertyDialogConfiguration.addViewTemplates(templates, dialogType);
+		if (dialogType != TraceObjectPropertyDialog.INSTRUMENTER) {
+			// Removes all templates that are not available in current context
+			// Instrumenter affects multiple contexts, so templates are always
+			// available at this point
+			for (int i = 0; i < templates.size(); i++) {
+				TraceObjectPropertyDialogTemplate template = templates.get(i);
+				if (template instanceof ContextBasedTemplate) {
+					if (!((ContextBasedTemplate) template)
+							.isAvailableInContext(TraceBuilderGlobals
+									.getSourceContextManager().getContext())) {
+						templates.remove(i);
+						i--;
+					}
+				}
+			}
+		}
+	}
+
+	/**
+	 * Initializes the edit dialog with values from object
+	 * 
+	 * @param dialogType
+	 *            the dialog type
+	 * @param object
+	 *            the object to be edited
+	 */
+	private void setEditDialogDefaults(int dialogType, TraceObject object) {
+		ArrayList<TraceObjectPropertyDialogFlag> list = new ArrayList<TraceObjectPropertyDialogFlag>();
+		propertyDialogConfiguration.addViewFlags(list, dialogType);
+		propertyDialog.setVerifier(propertyDialogVerifier);
+		propertyDialog.setTargetObject(object);
+		propertyDialog.setEnabler(object
+				.getExtension(TraceObjectPropertyDialogEnabler.class));
+		propertyDialog.setDialogType(dialogType);
+		propertyDialog.setFlags(list);
+		propertyDialog.setTemplates(null, null);
+		propertyDialog.setID(object.getID());
+		propertyDialog.setName(object.getName());
+		propertyDialog.setValue(null);
+	}
+
+	/**
+	 * Shows the property dialog
+	 * 
+	 * @param callback
+	 *            the callback for OK processing
+	 */
+	private void showDialog(PropertyDialogEngineCallback callback) {
+		TraceBuilderErrorCode valid;
+		do {
+			int res = propertyDialog.open();
+			if (res == TraceObjectPropertyDialog.OK) {
+				valid = TraceBuilderErrorCode.OK;
+				try {
+					callback.okSelected(propertyDialog);
+					saveData();
+				} catch (TraceBuilderException e) {
+					valid = (TraceBuilderErrorCode) e.getErrorCode();
+					TraceBuilderGlobals.getEvents().postError(e);
+				}
+			} else {
+				valid = TraceBuilderErrorCode.OK;
+			}
+		} while (valid != TraceBuilderErrorCode.OK);
+	}
+
+	/**
+	 * Saves the data into properties for later use
+	 */
+	private void saveData() {
+		TraceBuilderConfiguration config = TraceBuilderGlobals
+				.getConfiguration();
+		String templateTitle = null;
+		TraceObjectPropertyDialogTemplate template = propertyDialog
+				.getTemplate();
+		// Template is saved based on localized title -> Not so good but works
+		if (template != null) {
+			templateTitle = template.getTitle();
+		}
+		if (templateTitle == null) {
+			templateTitle = ""; //$NON-NLS-1$
+		}
+		String flagPrefix = getFlagPrefix(config, templateTitle);
+		if (flagPrefix != null) {
+			List<TraceObjectPropertyDialogFlag> flags = propertyDialog
+					.getFlags();
+			if (flags != null) {
+				for (int i = 0; i < flags.size(); i++) {
+					TraceObjectPropertyDialogFlag flag = flags.get(i);
+					config.setFlag(flagPrefix + flag.getText(), flag
+							.isEnabled());
+				}
+			}
+		}
+	}
+
+	/**
+	 * Gets the prefix for flags and saves other properties
+	 * 
+	 * @param config
+	 *            the configuration
+	 * @param templateTitle
+	 *            the template title
+	 * @return the prefix
+	 */
+	private String getFlagPrefix(TraceBuilderConfiguration config,
+			String templateTitle) {
+		String flagPrefix = null;
+		// Each dialog type is separately saved
+		switch (propertyDialog.getDialogType()) {
+		case TraceObjectPropertyDialog.ADD_TRACE:
+			config
+					.setText(PROPERTY_DIALOG_TRACE_NAME, propertyDialog
+							.getName());
+			config.setText(PROPERTY_DIALOG_TRACE_TEXT, propertyDialog
+					.getValue());
+			config.setText(PROPERTY_DIALOG_TRACE_TEMPLATE, templateTitle);
+			config.setText(PROPERTY_DIALOG_TRACE_GROUP, propertyDialog
+					.getTarget());
+			flagPrefix = PROPERTY_DIALOG_TRACE_FLAG;
+			break;
+		case TraceObjectPropertyDialog.ADD_PARAMETER:
+			config.setText(PROPERTY_DIALOG_PARAMETER_NAME, propertyDialog
+					.getName());
+			config.setText(PROPERTY_DIALOG_PARAMETER_TYPE, propertyDialog
+					.getValue());
+			config.setText(PROPERTY_DIALOG_PARAMETER_TEMPLATE, templateTitle);
+			flagPrefix = PROPERTY_DIALOG_PARAMETER_FLAG;
+			break;
+		case TraceObjectPropertyDialog.SELECT_COMPONENT:
+			config.setText(PROPERTY_DIALOG_COMPONENT_NAME, propertyDialog
+					.getName());
+			config.setText(PROPERTY_DIALOG_SELECT_COMPONENT_TEMPLATE,
+					templateTitle);
+			flagPrefix = PROPERTY_DIALOG_COMPONENT_FLAG;
+			break;
+		case TraceObjectPropertyDialog.ADD_CONSTANT:
+			config.setText(PROPERTY_DIALOG_CONSTANT_NAME, propertyDialog
+					.getName());
+			config.setText(PROPERTY_DIALOG_CONSTANT_TEMPLATE, templateTitle);
+			flagPrefix = PROPERTY_DIALOG_CONSTANT_FLAG;
+			break;
+		case TraceObjectPropertyDialog.INSTRUMENTER:
+			config.setText(PROPERTY_DIALOG_INSTRUMENTER_NAME_FORMAT,
+					propertyDialog.getName());
+			config.setText(PROPERTY_DIALOG_INSTRUMENTER_TRACE_FORMAT,
+					propertyDialog.getValue());
+			config
+					.setText(PROPERTY_DIALOG_INSTRUMENTER_TEMPLATE,
+							templateTitle);
+			flagPrefix = PROPERTY_DIALOG_INSTRUMENTER_FLAG;
+			config.setText(PROPERTY_DIALOG_INSTRUMENTER_TRACE_GROUP,
+					propertyDialog.getTarget());
+			break;
+		}
+		return flagPrefix;
+	}
+}
\ No newline at end of file