trace/tracebuilder/com.nokia.tracebuilder.view/src/com/nokia/tracebuilder/view/TraceViewDialogs.java
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/trace/tracebuilder/com.nokia.tracebuilder.view/src/com/nokia/tracebuilder/view/TraceViewDialogs.java Wed Jun 23 14:35:40 2010 +0300
@@ -0,0 +1,192 @@
+/*
+* Copyright (c) 2007 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:
+*
+* Dialog interface implementation
+*
+*/
+package com.nokia.tracebuilder.view;
+
+import java.io.File;
+
+import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.DirectoryDialog;
+import org.eclipse.swt.widgets.FileDialog;
+import org.eclipse.swt.widgets.Shell;
+
+import com.nokia.tracebuilder.engine.TraceBuilderDialogs;
+
+/**
+ * Dialog interface implementation
+ *
+ */
+final class TraceViewDialogs implements TraceBuilderDialogs {
+
+ /**
+ * Trace view
+ */
+ private TraceView view;
+
+ /**
+ * Constructor
+ *
+ * @param view
+ * trace view
+ */
+ TraceViewDialogs(TraceView view) {
+ this.view = view;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.nokia.tracebuilder.engine.TraceBuilderDialogs#
+ * showConfirmationQuery(com.nokia.tracebuilder.engine.TraceBuilderDialogs.QueryDialogParameters)
+ */
+ public int showConfirmationQuery(QueryDialogParameters parameters) {
+ Shell shell = view.getShell();
+ int ret = CANCEL;
+ if (shell != null) {
+ if (parameters instanceof DirectoryDialogQueryParameters) {
+ ret = showDirectoryQuery((DirectoryDialogQueryParameters) parameters);
+ } else if (parameters instanceof FileDialogQueryParameters) {
+ ret = showFileQuery((FileDialogQueryParameters) parameters);
+ } else if (parameters instanceof ExtendedQueryParameters) {
+ ret = showExtendedQueryDialog(parameters, shell);
+ } else {
+ if (MessageDialog.openQuestion(shell, Messages
+ .getString("TraceView.TraceBuilder"), //$NON-NLS-1$
+ TraceViewMessages.getConfirmationQueryText(parameters))) {
+ ret = OK;
+ }
+ }
+ }
+ return ret;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.nokia.tracebuilder.engine.TraceBuilderDialogs#
+ * showErrorMessage(java.lang.String)
+ */
+ public void showErrorMessage(String message) {
+ Shell shell = view.getShell();
+ if (shell != null) {
+ shell.getDisplay().asyncExec(
+ new MessageDialogRunnable(shell, message));
+ }
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see com.nokia.tracebuilder.engine.TraceBuilderDialogs#
+ * showCheckList(com.nokia.tracebuilder.engine.TraceBuilderDialogs.CheckListDialogType,
+ * java.util.List, java.util.List)
+ */
+ public int showCheckList(CheckListDialogParameters parameters) {
+ Shell shell = view.getShell();
+ int ret = CANCEL;
+ if (shell != null) {
+ CheckListSelectionDialog dlg = new CheckListSelectionDialog(shell,
+ parameters);
+ int result = dlg.open();
+ if (result == IDialogConstants.OK_ID
+ || result == IDialogConstants.YES_ID) {
+ ret = OK;
+ }
+ }
+ return ret;
+ }
+
+ /**
+ * Shows a directory query
+ *
+ * @param parameters
+ * the query parameters
+ * @return OK / CANCEL
+ */
+ private int showDirectoryQuery(DirectoryDialogQueryParameters parameters) {
+ Shell shell = view.getShell();
+ int ret = CANCEL;
+ if (shell != null) {
+ DirectoryDialog dd = new DirectoryDialog(shell);
+ dd.setMessage(TraceViewMessages
+ .getConfirmationQueryText(parameters));
+ String res = dd.open();
+ if (res != null) {
+ parameters.path = res;
+ ret = OK;
+ }
+ }
+ return ret;
+ }
+
+ /**
+ * Shows file selection dialog
+ *
+ * @param parameters
+ * the parameters
+ * @return OK / CANCEL
+ */
+ private int showFileQuery(FileDialogQueryParameters parameters) {
+ Shell shell = view.getShell();
+ int ret = CANCEL;
+ if (shell != null) {
+ FileDialog fd = new FileDialog(shell, SWT.SINGLE | SWT.OPEN);
+ File f = new File(parameters.path);
+ if (f.isDirectory()) {
+ fd.setFilterPath(f.getPath());
+ } else {
+ fd.setFilterPath(f.getParent());
+ }
+ if (parameters.filters != null) {
+ fd.setFilterNames(parameters.filterTitles);
+ fd.setFilterExtensions(parameters.filters);
+ }
+ fd.setText(TraceViewMessages.getConfirmationQueryText(parameters));
+ String res = fd.open();
+ if (res != null) {
+ parameters.path = res;
+ ret = OK;
+ }
+ }
+ return ret;
+ }
+
+ /**
+ * Shows a query dialog, where the buttons have been defined by client
+ *
+ * @param parameters
+ * the dialog parameters
+ * @param shell
+ * the parent shell
+ * @return the index of the selected button
+ */
+ private int showExtendedQueryDialog(QueryDialogParameters parameters,
+ Shell shell) {
+ MessageDialog md = new MessageDialog(
+ shell,
+ Messages.getString("TraceView.TraceBuilder"), //$NON-NLS-1$
+ null, ((ExtendedQueryParameters) parameters).message,
+ MessageDialog.QUESTION,
+ ((ExtendedQueryParameters) parameters).buttonTitles, 0);
+ // Returns the index of the button defined in extended query parameters
+ return md.open();
+ }
+
+}