diff -r ed1c9f64298a -r 5b9d4d8641ce trace/traceviewer/com.nokia.traceviewer/src/com/nokia/traceviewer/dialog/LineCountPropertyDialog.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/trace/traceviewer/com.nokia.traceviewer/src/com/nokia/traceviewer/dialog/LineCountPropertyDialog.java Wed Jun 23 14:49:59 2010 +0300 @@ -0,0 +1,337 @@ +/* + * Copyright (c) 2007-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: + * + * Line Count Property Dialog class + * + */ +package com.nokia.traceviewer.dialog; + +import java.util.List; + +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Shell; + +import com.nokia.traceviewer.dialog.treeitem.LineCountTreeComponentItem; +import com.nokia.traceviewer.dialog.treeitem.LineCountTreeItem; +import com.nokia.traceviewer.dialog.treeitem.LineCountTreeTextItem; +import com.nokia.traceviewer.dialog.treeitem.TreeItemListener; +import com.nokia.traceviewer.engine.TraceViewerGlobals; +import com.nokia.traceviewer.engine.activation.TraceActivationComponentItem; +import com.nokia.traceviewer.engine.activation.TraceActivationGroupItem; + +/** + * Line Count Property Dialog class + * + */ +public class LineCountPropertyDialog extends BasePropertyDialog { + + /** + * Text to show when Text rule is selected + */ + private static final String TEXT_RULE_INFORMATION_TEXT = Messages + .getString("LineCountPropertyDialog.TextRuleInfo"); //$NON-NLS-1$ + + /** + * Text to show when Component rule is selected + */ + private static final String COMPONENT_RULE_INFORMATION_TEXT = Messages + .getString("LineCountPropertyDialog.ComponentRuleInfoLine1") //$NON-NLS-1$ + + WILDCARD_STRING + + Messages + .getString("LineCountPropertyDialog.ComponentRuleInfoLine2"); //$NON-NLS-1$ + + /** + * Old item used when editing + */ + private LineCountTreeItem oldItem; + + /** + * Selected item in tree + */ + private final LineCountTreeItem selectedItem; + + /** + * TreeItem listener + */ + private final TreeItemListener listener; + + /** + * Constructor + * + * @param parent + * Parent shell + * @param newItem + * TreeItem to modify, null if creating new one + * @param listener + * TreeItem listener + * @param selected + * selected item in tree + */ + public LineCountPropertyDialog(Shell parent, LineCountTreeItem newItem, + TreeItemListener listener, Object selected) { + super(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL); + this.newItem = newItem; + this.selectedItem = (LineCountTreeItem) selected; + this.listener = listener; + + // If edit, save the old item to insert info to fields + if (newItem != null) { + oldItem = newItem; + textFieldTouched = true; + nameFieldTouched = true; + } + } + + /* + * (non-Javadoc) + * + * @see com.nokia.traceviewer.dialog.BaseDialog#createDialogContents() + */ + @Override + protected void createDialogContents() { + getShell().setText( + Messages.getString("LineCountPropertyDialog.ShellTitle")); //$NON-NLS-1$ + composite.setLayout(new GridLayout()); + createMainComposite(); + } + + /* + * (non-Javadoc) + * + * @see + * com.nokia.traceviewer.dialog.BasePropertyDialog#insertDataToUpperComposite + * () + */ + @Override + protected void insertDataToUpperComposite() { + // Set data from old item + if (oldItem != null) { + nameText.setText(oldItem.getName()); + if (oldItem.getRule() == LineCountTreeItem.Rule.TEXT_RULE) { + selectedRuleLabel.setText(TEXT_RULE_NAME); + } else if (oldItem.getRule() == LineCountTreeItem.Rule.TEXT_RULE) { + selectedRuleLabel.setText(COMPONENT_RULE_NAME); + } else { + selectedRuleLabel.setText(TEXT_RULE_NAME); + } + } else { + selectedRuleLabel.setText(TEXT_RULE_NAME); + } + } + + /* + * (non-Javadoc) + * + * @see com.nokia.traceviewer.dialog.BasePropertyDialog#setListSelection() + */ + @Override + protected void setListSelection() { + ruleList.add(TEXT_RULE_NAME, TEXT_RULE_INDEX); + ruleList.add(COMPONENT_RULE_NAME, COMPONENT_RULE_INDEX); + // Set list selection + if (oldItem != null) { + if (oldItem.getRule() == LineCountTreeItem.Rule.TEXT_RULE) { + ruleList.setSelection(TEXT_RULE_INDEX); + } else if (oldItem.getRule() == LineCountTreeItem.Rule.COMPONENT_RULE) { + ruleList.setSelection(COMPONENT_RULE_INDEX); + } + } else { + ruleList.setSelection(TEXT_RULE_INDEX); + } + } + + /* + * (non-Javadoc) + * + * @see + * com.nokia.traceviewer.dialog.BasePropertyDialog#insertDataToTextFields() + */ + @Override + protected void insertDataToTextFields() { + if (oldItem instanceof LineCountTreeTextItem) { + LineCountTreeTextItem item = (LineCountTreeTextItem) oldItem; + if (item.getText() != null) { + textText.setText(item.getText()); + } + matchCaseCheckBox.setSelection(item.isMatchCase()); + } + } + + /* + * (non-Javadoc) + * + * @see + * com.nokia.traceviewer.dialog.BasePropertyDialog#insertDataToComponentFields + * () + */ + @Override + protected void insertDataToComponentFields() { + // Get component list + List components = null; + if (TraceViewerGlobals.getDecodeProvider() != null) { + components = TraceViewerGlobals.getDecodeProvider() + .getActivationInformation(false); + } + + // Insert data to fields + if (oldItem instanceof LineCountTreeComponentItem) { + LineCountTreeComponentItem item = (LineCountTreeComponentItem) oldItem; + if (item.getComponentId() == WILDCARD_INTEGER) { + componentTextField.setText(WILDCARD_STRING); + } else { + componentTextField.setText(HEX_PREFIX + + Integer.toHexString(item.getComponentId())); + } + if (item.getGroupId() == WILDCARD_INTEGER) { + groupTextField.setText(WILDCARD_STRING); + } else { + groupTextField.setText(HEX_PREFIX + + Integer.toHexString(item.getGroupId())); + } + + // Loop through components + if (components != null) { + for (int i = 0; i < components.size(); i++) { + if (components.get(i).getId() == item.getComponentId()) { + componentNameLabel.setText(components.get(i).getName()); + // Get groups + List groups = components.get( + i).getGroups(); + // Loop through groups + for (int j = 0; j < groups.size(); j++) { + if (groups.get(j).getId() == item.getGroupId()) { + groupNameLabel.setText(groups.get(j).getName()); + break; + } + } + break; + } + } + } + } + + // Disable change component / group buttons if no components are + // available + if (components == null || components.size() <= 0) { + changeComponentButton.setEnabled(false); + changeGroupButton.setEnabled(false); + } + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.jface.dialogs.Dialog#okPressed() + */ + @Override + protected void okPressed() { + TraceViewerGlobals.postUiEvent("OkButton", "1"); //$NON-NLS-1$ //$NON-NLS-2$ + // Save the position of this item to set it back after creation + // and remove the old child + int pos = 0; + LineCountTreeItem parent = selectedItem; + if (oldItem != null) { + pos = getOldPosition(); + parent = (LineCountTreeItem) oldItem.getParent(); + parent.removeChild(oldItem); + } + + // Create new LineCountTreeTextItem + if (ruleList.getSelectionIndex() == TEXT_RULE_INDEX) { + newItem = new LineCountTreeTextItem(listener, parent, nameText + .getText(), LineCountTreeItem.Rule.TEXT_RULE, textText + .getText(), matchCaseCheckBox.getSelection()); + + // Create new LineCountTreeComponentItem + } else if (ruleList.getSelectionIndex() == COMPONENT_RULE_INDEX) { + int componentId = WILDCARD_INTEGER; + int groupId = WILDCARD_INTEGER; + + // Get component ID + try { + String cid = componentTextField.getText(); + if (cid.substring(0, HEX_PREFIX.length()).equals(HEX_PREFIX)) { + cid = cid.substring(HEX_PREFIX.length()); + } + componentId = Integer.parseInt(cid, HEX_RADIX); + } catch (Exception e) { + } + + // Get group ID + try { + String gid = groupTextField.getText(); + if (gid.substring(0, HEX_PREFIX.length()).equals(HEX_PREFIX)) { + gid = gid.substring(HEX_PREFIX.length()); + } + groupId = Integer.parseInt(gid, HEX_RADIX); + } catch (Exception e) { + } + + // Create new item + newItem = new LineCountTreeComponentItem(listener, parent, nameText + .getText(), LineCountTreeItem.Rule.COMPONENT_RULE, + componentId, groupId); + } + + // Add mode + if (parent.equals(selectedItem)) { + parent.addChild(newItem); + + // Edit mode + } else { + parent.addChild(pos, newItem); + } + + super.okPressed(); + TraceViewerGlobals.postUiEvent("OkButton", "0"); //$NON-NLS-1$ //$NON-NLS-2$ + } + + /* + * (non-Javadoc) + * + * @see + * com.nokia.traceviewer.dialog.BasePropertyDialog#setInformationLabel() + */ + @Override + protected void setInformationLabel() { + if (ruleList.getSelectionIndex() == TEXT_RULE_INDEX) { + informationLabel.setText(TEXT_RULE_INFORMATION_TEXT); + selectedRuleLabel.setText(TEXT_RULE_NAME); + } else if (ruleList.getSelectionIndex() == COMPONENT_RULE_INDEX) { + informationLabel.setText(COMPONENT_RULE_INFORMATION_TEXT); + selectedRuleLabel.setText(COMPONENT_RULE_NAME); + } + } + + /** + * Gets old position of this item + * + * @return old position + */ + protected int getOldPosition() { + LineCountTreeItem item = (LineCountTreeItem) oldItem.getParent(); + Object[] children = item.getChildren(); + int pos = 0; + for (int i = 0; i < children.length; i++) { + if (children[i].equals(oldItem)) { + pos = i; + break; + } + } + return pos; + } + +}