trace/tracebuilder/com.nokia.tracebuilder.view/src/com/nokia/tracebuilder/view/PropertyDialogUITarget.java
changeset 10 ed1c9f64298a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/trace/tracebuilder/com.nokia.tracebuilder.view/src/com/nokia/tracebuilder/view/PropertyDialogUITarget.java	Wed Jun 23 14:35:40 2010 +0300
@@ -0,0 +1,198 @@
+/*
+ * 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:
+ *
+ * Composite for target label and combo box
+ *
+ */
+package com.nokia.tracebuilder.view;
+
+import java.util.Iterator;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import com.nokia.tracebuilder.engine.SoftwareComponent;
+import com.nokia.tracebuilder.engine.TraceBuilderGlobals;
+import com.nokia.tracebuilder.engine.TraceObjectPropertyDialog;
+import com.nokia.tracebuilder.engine.rules.RuleUtils;
+import com.nokia.tracebuilder.model.TraceConstantTable;
+import com.nokia.tracebuilder.project.FormattingUtils;
+import com.nokia.tracebuilder.project.GroupNameHandlerBase;
+
+/**
+ * Composite for target label and combo box
+ * 
+ */
+final class PropertyDialogUITarget extends PropertyDialogComposite {
+
+	/**
+	 * Target label
+	 */
+	private Label targetLabel = null;
+
+	/**
+	 * Target selector
+	 */
+	private Combo targetCombo = null;
+
+	/**
+	 * Property dialog UI
+	 */
+	private PropertyDialogUI dialogUI;
+
+	/**
+	 * Constructor
+	 * 
+	 * @param parent
+	 *            parent composite
+	 * @param uiType
+	 *            the type of UI
+	 * @param modifyListener
+	 *            combobox text change listener
+	 * @param selectionListener
+	 *            combobox selection change listener
+	 */
+	PropertyDialogUITarget(Composite parent, int uiType,
+			ModifyListener modifyListener, SelectionListener selectionListener) {
+		super(parent);
+		this.dialogUI = (PropertyDialogUI) parent;
+		create(uiType, modifyListener, selectionListener);
+	}
+
+	/**
+	 * Creates the label and combo box
+	 * 
+	 * @param uiType
+	 *            the UI type
+	 * @param modifyListener
+	 *            combobox text change listener
+	 * @param selectionListener
+	 *            combobox selection change listener
+	 */
+	private void create(int uiType, ModifyListener modifyListener,
+			SelectionListener selectionListener) {
+		targetLabel = new Label(getParent(), SWT.NONE);
+
+		if (uiType == TraceObjectPropertyDialog.SELECT_COMPONENT) {
+			targetCombo = new Combo(getParent(), SWT.READ_ONLY);
+		} else {
+			targetCombo = new Combo(getParent(), SWT.NONE);
+		}
+
+		int selid = 0;
+		String text;
+		if (uiType == TraceObjectPropertyDialog.SELECT_COMPONENT) {
+			text = Messages
+					.getString("PropertyDialogUI.SelectComponentNameLabel"); //$NON-NLS-1$	
+			Iterator<SoftwareComponent> components = TraceBuilderGlobals
+					.getSoftwareComponents();
+			while (components.hasNext()) {
+				SoftwareComponent component = components.next();
+				targetCombo.add(component.getName());
+			}
+		} else if (uiType == TraceObjectPropertyDialog.ADD_CONSTANT) {
+			text = Messages
+					.getString("PropertyDialogUITarget.AddConstantTargetLabel"); //$NON-NLS-1$
+			Iterator<TraceConstantTable> tables = TraceBuilderGlobals
+					.getTraceModel().getConstantTables();
+			while (tables.hasNext()) {
+				targetCombo.add(tables.next().getName());
+			}
+		} else {
+			text = Messages.getString("PropertyDialogUI.AddTraceTargetLabel"); //$NON-NLS-1$
+			Iterator<String> groups = FormattingUtils
+					.getGroupNames(TraceBuilderGlobals.getTraceModel());
+			while (groups.hasNext()) {
+				String group = groups.next();
+
+				// TRACE_STATE and TRACE_PERFORMACE group names are not added
+				// to combo, those can be used only via templates
+				GroupNameHandlerBase groupNameHandler = TraceBuilderGlobals.getGroupNameHandler();
+				String[] defaultGroups = groupNameHandler.getDefaultGroups();
+				if (group != defaultGroups[groupNameHandler.getStateGroupIdIndex()]
+						&& group != defaultGroups[groupNameHandler.getPerformanceGroupIdIndex()]) {
+					targetCombo.add(group);
+				}
+			}
+		}
+
+		targetLabel.setText(text);
+		targetCombo.select(selid);
+		targetCombo.addSelectionListener(selectionListener);
+		targetCombo.addModifyListener(modifyListener);
+		setFieldButtonLayoutData(targetCombo, null);
+	}
+
+	/**
+	 * Gets the target trace object
+	 * 
+	 * @return the target
+	 */
+	String getTarget() {
+		return targetCombo.getText();
+	}
+
+	/**
+	 * Sets the target object
+	 * 
+	 * @param target
+	 *            the new target
+	 */
+	void setTarget(String target) {
+		int found = -1;
+		for (int i = 0; i < targetCombo.getItemCount() && found == -1; i++) {
+			if (targetCombo.getItem(i).equals(target)) {
+				found = i;
+			}
+		}
+		int uiType = dialogUI.getUiType();
+		if (found >= 0) {
+			targetCombo.select(found);
+		} else if (uiType == TraceObjectPropertyDialog.ADD_PARAMETER
+				|| uiType == TraceObjectPropertyDialog.ADD_TRACE
+				|| uiType == TraceObjectPropertyDialog.INSTRUMENTER) {
+			int templateIndex = dialogUI.templateComposite.getTemplateIndex();
+			GroupNameHandlerBase groupNameHandler = TraceBuilderGlobals.getGroupNameHandler();
+			String[] defaultGroups = groupNameHandler.getDefaultGroups();
+			if (((!target
+					.equals(defaultGroups[groupNameHandler.getStateGroupIdIndex()]) && !target
+					.equals(defaultGroups[groupNameHandler.getPerformanceGroupIdIndex()])) && templateIndex == 0)
+					|| (target
+							.equals(defaultGroups[groupNameHandler.getStateGroupIdIndex()]) && templateIndex == RuleUtils.TYPE_STATE_TRACE + 1)
+					|| (target
+							.equals(defaultGroups[groupNameHandler.getPerformanceGroupIdIndex()]) && templateIndex == RuleUtils.TYPE_PERF_EVENT + 1)
+					|| (target
+							.equals(defaultGroups[groupNameHandler.getFlowGroupIdIndex()]) && templateIndex == RuleUtils.TYPE_ENTRY_EXIT + 1)) {
+				targetCombo.setText(target);
+			} else {
+				targetCombo.select(groupNameHandler.getNormalGroupIdIndex() - 1);
+			}
+		}
+	}
+
+	/**
+	 * Enables / disables the target field
+	 * 
+	 * @param flag
+	 *            new enabled state
+	 */
+	void setEnabled(boolean flag) {
+		targetCombo.setEnabled(flag);
+	}
+}