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<TraceActivationComponentItem> 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<TraceActivationGroupItem> 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;
+ }
+
+}