/**
* Copyright (c) 2014 by JP Moresmau
* This code is made available under the terms of the Eclipse Public License,
* version 1.0 (EPL). See http://www.eclipse.org/legal/epl-v10.html
*/
package net.sf.eclipsefp.haskell.ui.internal.views.worksheet;
import net.sf.eclipsefp.haskell.ui.internal.util.UITexts;
import org.eclipse.jface.dialogs.IInputValidator;
import org.eclipse.jface.dialogs.InputDialog;
import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.model.WorkbenchViewerComparator;
/**
* Input dialog for expressions and their rendering type
* @author JP Moresmau
*
*/
public class EvalExpressionDialog extends InputDialog {
private ResultType resultType=ResultType.TEXT;
/**
* @param parentShell
* @param dialogTitle
* @param dialogMessage
* @param initialValue
*/
public EvalExpressionDialog( final Shell parentShell, final String dialogTitle,
final String dialogMessage, final EvalExpression initialValue) {
super( parentShell, dialogTitle, dialogMessage, initialValue.getExpression(), new EvalExpressionValidator() );
this.resultType=initialValue.getResultType();
}
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.InputDialog#createDialogArea(org.eclipse.swt.widgets.Composite)
*/
@Override
protected Control createDialogArea( final Composite parent ) {
Composite c=(Composite)super.createDialogArea( parent );
Composite typeC=new Composite(c,SWT.NONE);
typeC.setLayoutData( new GridData(GridData.FILL_HORIZONTAL) );
typeC.setLayout( new GridLayout(2,false) );
Label typeL=new Label(typeC,SWT.NONE);
typeL.setText( UITexts.worksheet_expression_type );
ComboViewer cv=new ComboViewer( typeC,SWT.READ_ONLY | SWT.SINGLE);
cv.setContentProvider( new ArrayContentProvider() );
cv.setLabelProvider( new LabelProvider() );
cv.setComparator( new WorkbenchViewerComparator() );
cv.setInput( ResultType.values() );
cv.setSelection( new StructuredSelection(resultType) );
cv.addSelectionChangedListener( new ISelectionChangedListener() {
@Override
public void selectionChanged( final SelectionChangedEvent event ) {
resultType=(ResultType)((IStructuredSelection)event.getSelection()).getFirstElement();
}
} );
return c;
}
/**
* @return the resultType
*/
public ResultType getResultType() {
return resultType;
}
private static class EvalExpressionValidator implements IInputValidator {
/* (non-Javadoc)
* @see org.eclipse.jface.dialogs.IInputValidator#isValid(java.lang.String)
*/
@Override
public String isValid( final String newText ) {
if (newText==null || newText.trim().length()==0){
return UITexts.worksheet_expression_empty;
}
return null;
}
}
}