/******************************************************************************* | |
* Copyright (c) 2011, 2012 Ericsson | |
* | |
* All rights reserved. This program and the accompanying materials are | |
* made available under the terms of the Eclipse Public License v1.0 which | |
* accompanies this distribution, and is available at | |
* http://www.eclipse.org/legal/epl-v10.html | |
* | |
* Description: | |
* | |
* Contributors: | |
* Jacques Bouthillier - Initial Implementation of R4E Report directory selection | |
*******************************************************************************/ | |
package org.eclipse.mylyn.reviews.r4e.report.internal.dialog; | |
import java.io.File; | |
import org.eclipse.jface.dialogs.Dialog; | |
import org.eclipse.jface.dialogs.IDialogConstants; | |
import org.eclipse.jface.preference.DirectoryFieldEditor; | |
import org.eclipse.swt.SWT; | |
import org.eclipse.swt.events.ModifyEvent; | |
import org.eclipse.swt.events.ModifyListener; | |
import org.eclipse.swt.layout.GridData; | |
import org.eclipse.swt.widgets.Button; | |
import org.eclipse.swt.widgets.Composite; | |
import org.eclipse.swt.widgets.Control; | |
import org.eclipse.swt.widgets.Shell; | |
import org.eclipse.swt.widgets.Text; | |
/** | |
* @author Jacques Bouthillier | |
* | |
*/ | |
public class ReportDirectorySelection extends Dialog { | |
// ------------------------------------------------------------------------ | |
// Constants | |
// ------------------------------------------------------------------------ | |
private final int fWIDTH = 400; | |
private final int fHEIGHT = 150; | |
private final String fTITLE = "R4E Directory selection"; | |
private final String fOkTooltip = "Consider the new directory as the valid one"; | |
private final String fCancelTooltip = "Return to the old directory"; | |
private final String fStorage = "storage"; | |
// ------------------------------------------------------------------------ | |
// Variables | |
// ------------------------------------------------------------------------ | |
private File fReportFolder = null; | |
private static Button ok; | |
private static Button cancel; | |
private DirectoryFieldEditor dirFieldEditor; | |
// ------------------------------------------------------------------------ | |
// Constructors | |
// ------------------------------------------------------------------------ | |
/** | |
* | |
*/ | |
public ReportDirectorySelection(Shell aParentShell) { | |
super(aParentShell); | |
// setShellStyle(SWT.DIALOG_TRIM | SWT.RESIZE | SWT.MODELESS); | |
setShellStyle(SWT.DIALOG_TRIM | SWT.RESIZE); | |
} | |
// ------------------------------------------------------------------------ | |
// Methods | |
// ------------------------------------------------------------------------ | |
/** | |
* @see org.eclipse.jface.dialogs.Dialog#createDialogArea(org.eclipse.swt.widgets.Composite) | |
*/ | |
protected Control createDialogArea(Composite aParent) { | |
getShell().setText(fTITLE); | |
final Composite composite = (Composite) super.createDialogArea(aParent); | |
// Set the minimum size for the window | |
composite.getShell().setMinimumSize(fWIDTH, fHEIGHT); | |
// Set the window data | |
createDirSelectionWindow(composite); | |
return composite; | |
} | |
protected void createButtonsForButtonBar(Composite aParent) { | |
ok = createButton(aParent, IDialogConstants.OK_ID, | |
IDialogConstants.OK_LABEL, false); | |
cancel = createButton(aParent, IDialogConstants.CANCEL_ID, | |
IDialogConstants.CANCEL_LABEL, false); | |
ok.setToolTipText(fOkTooltip); | |
cancel.setToolTipText(fCancelTooltip); | |
} | |
protected void buttonPressed(int aButtonId) { | |
// Ok button selected | |
if (aButtonId == IDialogConstants.OK_ID) { | |
File fi = getFieldDirectory(); | |
setReportDirectory(fi); | |
super.close(); | |
} | |
// Cancel Button selected | |
if (aButtonId == IDialogConstants.CANCEL_ID) { | |
super.close(); | |
} | |
} | |
/** | |
* Creates message info content window. | |
* | |
* @param aParent | |
* of the composite. | |
*/ | |
private void createDirSelectionWindow(Composite aParent) { | |
dirFieldEditor = new DirectoryFieldEditor( | |
fStorage, " &Directory:", aParent); | |
setTextIntoGrid(aParent); | |
} | |
// Fills the field editor's controls into the given parent. | |
private void setTextIntoGrid(Composite aPparent) { | |
final Text txt = dirFieldEditor.getTextControl(aPparent); | |
txt.addModifyListener(new ModifyListener() { | |
public void modifyText(ModifyEvent e) { | |
// Set the text also in the tooltip | |
txt.setToolTipText(txt.getText()); | |
} | |
}); | |
GridData gridData = new GridData(); | |
gridData.horizontalAlignment = GridData.FILL; | |
gridData.grabExcessHorizontalSpace = true; | |
gridData.grabExcessVerticalSpace = true; | |
txt.setLayoutData(gridData); | |
} | |
public void setFieldDirectory(String aSt) { | |
dirFieldEditor.setStringValue(aSt); | |
} | |
private File getFieldDirectory() { | |
String st = dirFieldEditor.getStringValue(); | |
return new File(st); | |
} | |
private void setReportDirectory(File afi) { | |
fReportFolder = afi; | |
} | |
public File getReportDirectory () { | |
return fReportFolder; | |
} | |
} |