remotecontrol/com.nokia.s60tools.remotecontrol/src/com/nokia/s60tools/remotecontrol/ui/dialogs/RenameDialog.java
author dpodwall
Tue, 12 Jan 2010 13:17:53 -0600
changeset 0 61163b28edca
permissions -rw-r--r--
initial EPL conversion
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     1
/*
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     3
* All rights reserved.
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     4
* This component and the accompanying materials are made available
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     6
* which accompanies this distribution, and is available
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     8
*
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
     9
* Initial Contributors:
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    11
*
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    12
* Contributors:
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    13
*
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    14
* Description:
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    15
*
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    16
*/
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    17
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    18
package com.nokia.s60tools.remotecontrol.ui.dialogs;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    19
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    20
import org.eclipse.jface.dialogs.Dialog;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    21
import org.eclipse.jface.dialogs.IDialogConstants;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    22
import org.eclipse.swt.SWT;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    23
import org.eclipse.swt.events.ModifyEvent;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    24
import org.eclipse.swt.events.ModifyListener;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    25
import org.eclipse.swt.layout.GridData;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    26
import org.eclipse.swt.layout.GridLayout;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    27
import org.eclipse.swt.widgets.Composite;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    28
import org.eclipse.swt.widgets.Control;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    29
import org.eclipse.swt.widgets.Label;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    30
import org.eclipse.swt.widgets.Shell;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    31
import org.eclipse.swt.widgets.Text;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    32
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    33
import com.nokia.s60tools.remotecontrol.resources.Messages;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    34
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    35
/**
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    36
 * Dialog for renaming file
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    37
 */
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    38
public class RenameDialog extends Dialog implements ModifyListener {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    39
	
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    40
	/**
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    41
	 * Name
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    42
	 */
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    43
	private String name;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    44
	
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    45
	/**
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    46
	 * File name text field
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    47
	 */
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    48
	private Text nameField = null;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    49
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    50
	/**
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    51
	 * Flag for keeping track if original name is possible return value.
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    52
	 */
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    53
	private final boolean allowOriginalName;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    54
	
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    55
	/**
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    56
	 * Name for dialog.
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    57
	 */
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    58
	private final String dialogName;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    59
	
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    60
	/**
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    61
	 * Constructor
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    62
	 * @param parentShell Shell
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    63
	 * @param name Current name of the file
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    64
	 * @param allowOriginalName True if it is possible to return original name. False otherwise.
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    65
	 */
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    66
	public RenameDialog(Shell parentShell, String fileName, boolean allowOriginalName, String dialogName) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    67
		super(parentShell);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    68
		this.name = fileName;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    69
		this.allowOriginalName = allowOriginalName;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    70
		this.dialogName = dialogName;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    71
	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    72
	
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    73
    /* (non-Javadoc)
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    74
     * @see org.eclipse.jface.window.Window#configureShell(org.eclipse.swt.widgets.Shell)
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    75
     */
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    76
    protected void configureShell(Shell shell) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    77
        super.configureShell(shell);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    78
        shell.setText(dialogName);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    79
    } 	
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    80
	
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    81
	/* (non-Javadoc)
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    82
     * @see org.eclipse.jface.dialogs.Dialog#createButtonsForButtonBar(org.eclipse.swt.widgets.Composite)
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    83
     */
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    84
    protected void createButtonsForButtonBar(Composite parent) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    85
    	GridLayout gdl = new GridLayout(1, false);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    86
		GridData gd = new GridData(GridData.HORIZONTAL_ALIGN_CENTER);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    87
		parent.setLayout(gdl);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    88
		parent.setLayoutData(gd);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    89
		
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    90
    	createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    91
    	createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    92
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    93
    	if(!allowOriginalName) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    94
    		// Not allowed to return same file name. User needs to modify name before enabling OK button.
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    95
			getButton(IDialogConstants.OK_ID).setEnabled(false);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    96
    	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    97
    }
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    98
    
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
    99
    /* (non-Javadoc)
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   100
	 * @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite)
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   101
	 */
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   102
	protected Control createDialogArea(Composite parent) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   103
		Composite dialogAreaComposite = (Composite) super.createDialogArea(parent);		
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   104
		
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   105
		//
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   106
		//Adding custom controls
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   107
		//
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   108
		final int cols = 1;	  
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   109
		GridLayout gl = new GridLayout(cols, false);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   110
		GridData gd = new GridData(GridData.FILL_BOTH);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   111
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   112
		dialogAreaComposite.setLayout(gl);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   113
		dialogAreaComposite.setLayoutData(gd);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   114
	
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   115
		Label label = new Label(dialogAreaComposite, SWT.NONE);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   116
		label.setText(Messages.getString("RenameDialog.label"));   //$NON-NLS-1$
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   117
		nameField = new Text(dialogAreaComposite, SWT.LEFT | SWT.SINGLE | SWT.BORDER);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   118
		nameField.setLayoutData(gd);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   119
		nameField.setText(name);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   120
		
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   121
		nameField.addModifyListener(this);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   122
		
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   123
		return dialogAreaComposite;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   124
	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   125
	
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   126
	/* (non-Javadoc)
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   127
	 * @see org.eclipse.jface.dialogs.Dialog#buttonPressed(int)
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   128
	 */
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   129
	protected void buttonPressed(int buttonId) {	
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   130
		if (buttonId == IDialogConstants.OK_ID) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   131
			// Save file name that user entered
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   132
			name = nameField.getText();
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   133
		}	
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   134
		super.buttonPressed(buttonId);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   135
	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   136
	
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   137
	
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   138
	/**
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   139
	 * Get file name
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   140
	 * @return File name that user entered. If user canceled dialog
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   141
	 * 			the original file name is returned.
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   142
	 */
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   143
	public String getFileName(){
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   144
		return name;
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   145
	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   146
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   147
	/* (non-Javadoc)
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   148
	 * @see org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events.ModifyEvent)
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   149
	 */
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   150
	public void modifyText(ModifyEvent e) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   151
		if(!allowOriginalName && nameField.getText().equalsIgnoreCase(name)) {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   152
			// Not allowed to return same file name.
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   153
			getButton(IDialogConstants.OK_ID).setEnabled(false);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   154
		} else {
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   155
			getButton(IDialogConstants.OK_ID).setEnabled(true);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   156
		}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   157
		
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   158
		// Empty names are not allowed.
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   159
		if(nameField.getText().equals("")) { //$NON-NLS-1$
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   160
			getButton(IDialogConstants.OK_ID).setEnabled(false);
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   161
		}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   162
	}
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   163
61163b28edca initial EPL conversion
dpodwall
parents:
diff changeset
   164
}