diff -r 14dc2103a631 -r ed1c9f64298a trace/tracebuilder/com.nokia.tracebuilder.view/src/com/nokia/tracebuilder/view/PropertyDialogUITarget.java --- /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 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 tables = TraceBuilderGlobals + .getTraceModel().getConstantTables(); + while (tables.hasNext()) { + targetCombo.add(tables.next().getName()); + } + } else { + text = Messages.getString("PropertyDialogUI.AddTraceTargetLabel"); //$NON-NLS-1$ + Iterator 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); + } +}