sysmodelmgr/com.symbian.smt.gui/src/com/symbian/smt/gui/smtwidgets/XmlFileSelectionDialog.java
author terytkon
Thu, 11 Mar 2010 19:08:43 +0200
changeset 0 522a326673b6
permissions -rw-r--r--
Moved swconfigapps content under oss repository.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     1
// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     2
// All rights reserved.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     3
// This component and the accompanying materials are made available
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     5
// which accompanies this distribution, and is available
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     7
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     8
// Initial Contributors:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    10
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    11
// Contributors:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    12
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    13
// Description:
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    14
//
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    15
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    16
package com.symbian.smt.gui.smtwidgets;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    17
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    18
import java.lang.reflect.InvocationTargetException;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    19
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    20
import org.eclipse.core.runtime.IProgressMonitor;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    21
import org.eclipse.jface.dialogs.Dialog;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    22
import org.eclipse.jface.dialogs.IDialogConstants;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    23
import org.eclipse.jface.dialogs.IInputValidator;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    24
import org.eclipse.jface.dialogs.MessageDialog;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    25
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    26
import org.eclipse.jface.operation.IRunnableWithProgress;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    27
import org.eclipse.jface.resource.StringConverter;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    28
import org.eclipse.swt.SWT;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    29
import org.eclipse.swt.events.ModifyEvent;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    30
import org.eclipse.swt.events.ModifyListener;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    31
import org.eclipse.swt.events.SelectionEvent;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    32
import org.eclipse.swt.events.SelectionListener;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    33
import org.eclipse.swt.layout.GridData;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    34
import org.eclipse.swt.layout.GridLayout;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    35
import org.eclipse.swt.widgets.Button;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    36
import org.eclipse.swt.widgets.Composite;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    37
import org.eclipse.swt.widgets.Control;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    38
import org.eclipse.swt.widgets.FileDialog;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    39
import org.eclipse.swt.widgets.Label;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    40
import org.eclipse.swt.widgets.Shell;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    41
import org.eclipse.swt.widgets.Text;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    42
import org.eclipse.ui.PlatformUI;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    43
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    44
/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    45
 * This dialog is adapted from Eclipse's InputDialog in order to accept the name
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    46
 * (local or URL) of an XML file. Validation of the XML also occurs.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    47
 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    48
 * @author barbararosi-schwartz
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    49
 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    50
 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    51
public class XmlFileSelectionDialog extends Dialog {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    52
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    53
	private static final String BROWSE_BUTTON = "Browse..."; //$NON-NLS-1$
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    54
	private static final String EMPTY_STRING = ""; //$NON-NLS-1$
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    55
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    56
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    57
	 * Browse button widget.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    58
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    59
	private Button browseButton;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    60
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    61
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    62
	 * Cancel button widget.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    63
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    64
	private Button cancelButton;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    65
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    66
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    67
	 * Error message string.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    68
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    69
	private String errorMessage;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    70
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    71
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    72
	 * Error message label widget.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    73
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    74
	private Text errorMessageText;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    75
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    76
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    77
	 * The file extensions to filter on.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    78
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    79
	private String[] extensionFilter;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    80
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    81
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    82
	 * The message to display, or <code>null</code> if none.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    83
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    84
	private String message;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    85
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    86
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    87
	 * Ok button widget.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    88
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    89
	private Button okButton;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    90
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    91
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    92
	 * Input text widget.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    93
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    94
	private Text inputText;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    95
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    96
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    97
	 * The title of the dialog.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    98
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
    99
	private String title;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   100
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   101
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   102
	 * The input m_validator, or <code>null</code> if none.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   103
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   104
	private IXmlFileInputValidator validator;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   105
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   106
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   107
	 * The input value; the empty string by default.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   108
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   109
	private String inputValue = EMPTY_STRING;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   110
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   111
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   112
	 * Creates an input dialog with OK and Cancel buttons. Note that the dialog
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   113
	 * will have no visual representation (no widgets) until it is told to open.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   114
	 * <p>
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   115
	 * Note that the <code>open</code> method blocks for input dialogs.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   116
	 * </p>
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   117
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   118
	 * @param parentShell
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   119
	 *            the parent shell, or <code>null</code> to create a top-level
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   120
	 *            shell
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   121
	 * @param dialogTitle
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   122
	 *            the dialog title, or <code>null</code> if none
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   123
	 * @param dialogMessage
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   124
	 *            the dialog message, or <code>null</code> if none
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   125
	 * @param initialValue
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   126
	 *            the initial input value, or <code>null</code> if none
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   127
	 *            (equivalent to the empty string)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   128
	 * @param extensionFilter
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   129
	 *            the file extensions to filter on.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   130
	 * @param validator
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   131
	 *            an input validator, or <code>null</code> if none
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   132
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   133
	public XmlFileSelectionDialog(Shell parentShell, String dialogTitle,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   134
			String dialogMessage, String initialValue,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   135
			String[] extensionFilter, IXmlFileInputValidator validator) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   136
		super(parentShell);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   137
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   138
		this.title = dialogTitle;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   139
		message = dialogMessage;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   140
		this.extensionFilter = extensionFilter;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   141
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   142
		if (initialValue == null) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   143
			inputValue = EMPTY_STRING;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   144
		} else {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   145
			inputValue = initialValue;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   146
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   147
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   148
		this.validator = validator;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   149
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   150
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   151
	/*
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   152
	 * Method declared on Dialog.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   153
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   154
	protected void buttonPressed(int buttonId) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   155
		if (buttonId == IDialogConstants.OK_ID) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   156
			inputValue = inputText.getText();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   157
		} else {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   158
			inputValue = null;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   159
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   160
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   161
		super.buttonPressed(buttonId);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   162
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   163
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   164
	/*
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   165
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   166
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   167
	 * @see
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   168
	 * org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   169
	 * .Shell)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   170
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   171
	protected void configureShell(Shell shell) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   172
		super.configureShell(shell);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   173
		if (title != null) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   174
			shell.setText(title);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   175
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   176
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   177
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   178
	/*
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   179
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   180
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   181
	 * @see
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   182
	 * org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   183
	 * .swt.widgets.Composite)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   184
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   185
	protected void createButtonsForButtonBar(Composite parent) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   186
		// create OK and Cancel buttons by default
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   187
		okButton = createButton(parent, IDialogConstants.OK_ID,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   188
				IDialogConstants.OK_LABEL, true);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   189
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   190
		cancelButton = createButton(parent, IDialogConstants.CANCEL_ID,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   191
				IDialogConstants.CANCEL_LABEL, false);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   192
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   193
		// do this here because setting the m_text will set enablement on the ok
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   194
		// button
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   195
		inputText.setFocus();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   196
		if (inputValue != null) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   197
			inputText.setText(inputValue);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   198
			inputText.selectAll();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   199
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   200
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   201
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   202
	/*
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   203
	 * Method declared on Dialog.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   204
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   205
	protected Control createDialogArea(Composite parent) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   206
		// create composite
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   207
		Composite composite = (Composite) super.createDialogArea(parent);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   208
		GridLayout layout = (GridLayout) composite.getLayout();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   209
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   210
		layout.numColumns = 2;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   211
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   212
		// create message
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   213
		if (message != null) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   214
			Label label = new Label(composite, SWT.WRAP);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   215
			label.setText(message);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   216
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   217
			GridData data = new GridData(GridData.HORIZONTAL_ALIGN_FILL,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   218
					GridData.VERTICAL_ALIGN_CENTER, true, true, 2, 1);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   219
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   220
			data.widthHint = convertHorizontalDLUsToPixels(IDialogConstants.MINIMUM_MESSAGE_AREA_WIDTH);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   221
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   222
			label.setLayoutData(data);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   223
			label.setFont(parent.getFont());
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   224
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   225
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   226
		inputText = new Text(composite, getInputTextStyle());
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   227
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   228
		inputText.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   229
				| GridData.HORIZONTAL_ALIGN_FILL));
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   230
		inputText.addModifyListener(new ModifyListener() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   231
			public void modifyText(ModifyEvent e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   232
				validateInput();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   233
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   234
		});
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   235
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   236
		browseButton = new Button(composite, SWT.PUSH);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   237
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   238
		browseButton.setText(BROWSE_BUTTON);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   239
		browseButton.addSelectionListener(new SelectionListener() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   240
			public void widgetDefaultSelected(SelectionEvent event) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   241
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   242
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   243
			public void widgetSelected(SelectionEvent event) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   244
				FileDialog fd = new FileDialog(
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   245
						PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell(), 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   246
						SWT.OPEN | SWT.APPLICATION_MODAL);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   247
				fd.setText("Select the desired resource file name");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   248
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   249
				if (extensionFilter != null) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   250
					fd.setFilterExtensions(extensionFilter);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   251
				}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   252
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   253
				String selected = fd.open();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   254
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   255
				if (selected != null) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   256
					inputText.setText(selected);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   257
				}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   258
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   259
		});
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   260
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   261
		GridData gd = new GridData(GridData.GRAB_HORIZONTAL
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   262
				| GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_VERTICAL
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   263
				| GridData.VERTICAL_ALIGN_FILL);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   264
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   265
		gd.horizontalSpan = 2;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   266
		gd.minimumHeight = 40;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   267
		errorMessageText = new Text(composite, SWT.MULTI | SWT.READ_ONLY
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   268
				| SWT.WRAP);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   269
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   270
		errorMessageText.setLayoutData(gd);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   271
		errorMessageText.setBackground(errorMessageText.getDisplay()
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   272
				.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND));
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   273
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   274
		// Set the error message text
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   275
		setErrorMessage(errorMessage);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   276
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   277
		applyDialogFont(composite);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   278
		return composite;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   279
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   280
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   281
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   282
	 * @return the cancelButton
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   283
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   284
	public Button getCancelButton() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   285
		return cancelButton;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   286
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   287
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   288
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   289
	 * Returns the style bits that should be used for the input text field.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   290
	 * Defaults to a single line entry. Subclasses may override.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   291
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   292
	 * @return the integer style bits that should be used when creating the
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   293
	 *         input text
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   294
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   295
	protected int getInputTextStyle() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   296
		return SWT.SINGLE | SWT.BORDER;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   297
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   298
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   299
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   300
	 * Returns the ok button.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   301
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   302
	 * @return the ok button
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   303
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   304
	public Button getOkButton() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   305
		return okButton;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   306
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   307
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   308
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   309
	 * Returns the text area.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   310
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   311
	 * @return the text area
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   312
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   313
	public Text getText() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   314
		return inputText;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   315
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   316
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   317
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   318
	 * Returns the validator.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   319
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   320
	 * @return the validator
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   321
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   322
	protected IInputValidator getValidator() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   323
		return validator;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   324
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   325
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   326
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   327
	 * Returns the string typed into this input dialog.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   328
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   329
	 * @return the input string
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   330
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   331
	public String getValue() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   332
		return inputValue;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   333
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   334
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   335
	/*
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   336
	 * (non-Javadoc)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   337
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   338
	 * @see org.eclipse.jface.dialogs.Dialog#okPressed()
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   339
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   340
	@Override
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   341
	protected void okPressed() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   342
		IRunnableWithProgress op = new IRunnableWithProgress() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   343
			String input = getValue();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   344
			String result;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   345
			
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   346
			// Validation of the XML content does not happen here as an invalid XML
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   347
			// file
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   348
			// is deemed acceptable. It occurs as part of the update that takes
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   349
			// place
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   350
			// in the ManageResources class, which is also responsible for arranging
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   351
			// for error markers to be placed on any invalid resource file or sys
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   352
			// def file.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   353
			public void run(IProgressMonitor monitor) throws InvocationTargetException {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   354
				monitor.beginTask("Reading " + input, 2);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   355
				
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   356
				try {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   357
					input = getValue();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   358
					
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   359
					if (validator.isUrl(input)) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   360
						result = validator.isUrlResourceReadable(input);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   361
					} else { // If file path is local
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   362
						result = validator.isFileReadable(input);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   363
					}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   364
				} catch (InvalidPathException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   365
					result = e.getMessage();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   366
				}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   367
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   368
				monitor.worked(1);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   369
				monitor.setTaskName("Checking validation");
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   370
				setValidationError(result);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   371
				monitor.worked(1);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   372
				monitor.done();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   373
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   374
		};
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   375
		
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   376
		try {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   377
			new ProgressMonitorDialog(getShell()).run(true, false, op);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   378
		} catch (InterruptedException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   379
			return;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   380
		} catch (InvocationTargetException e) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   381
			Throwable realException = e.getTargetException();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   382
			MessageDialog.openError(getShell(), "Error", realException.getMessage());
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   383
			return;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   384
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   385
		finally {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   386
			if (validationError != null) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   387
				setErrorMessage(validationError);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   388
				setValidationError(null);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   389
				
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   390
				return;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   391
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   392
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   393
		
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   394
		super.okPressed();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   395
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   396
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   397
	private String validationError;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   398
	
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   399
	private void setValidationError(String error) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   400
		validationError = error;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   401
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   402
	
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   403
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   404
	 * Sets or clears the error message. If not <code>null</code>, the OK button
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   405
	 * is disabled.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   406
	 * 
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   407
	 * @param errorMessage
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   408
	 *            the error message, or <code>null</code> to clear
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   409
	 * @since 3.0
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   410
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   411
	public void setErrorMessage(String errorMessage) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   412
		this.errorMessage = errorMessage;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   413
		if (errorMessageText != null && !errorMessageText.isDisposed()) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   414
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   415
			errorMessageText
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   416
					.setText(errorMessage == null ? "\n" : errorMessage); //$NON-NLS-1$
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   417
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   418
			// Disable the error message text control if there is no error, or
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   419
			// no error text (empty or whitespace only). Hide it also to avoid
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   420
			// color change.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   421
			boolean hasError = errorMessage != null
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   422
					&& (StringConverter.removeWhiteSpaces(errorMessage))
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   423
							.length() > 0;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   424
			errorMessageText.setEnabled(hasError);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   425
			errorMessageText.setVisible(hasError);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   426
			errorMessageText.getParent().update();
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   427
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   428
			// Access the ok button by id, in case clients have overridden
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   429
			// button creation.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   430
			Control button = getButton(IDialogConstants.OK_ID);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   431
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   432
			if (button != null) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   433
				button.setEnabled(errorMessage == null);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   434
			}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   435
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   436
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   437
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   438
	/**
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   439
	 * Validates the input.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   440
	 * <p>
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   441
	 * The default implementation of this framework method delegates the request
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   442
	 * to the supplied input validator object; if it finds the input invalid,
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   443
	 * the error message is displayed in the dialog's message line. This
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   444
	 * hook method is called whenever the text changes in the input field.
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   445
	 * </p>
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   446
	 */
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   447
	protected void validateInput() {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   448
		String errorMessage = null;
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   449
		if (validator != null) {
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   450
			errorMessage = validator.isValid(inputText.getText());
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   451
		}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   452
		// It is important not to treat "" (blank error) the same as null
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   453
		// (no error)
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   454
		setErrorMessage(errorMessage);
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   455
	}
522a326673b6 Moved swconfigapps content under oss repository.
terytkon
parents:
diff changeset
   456
}