/*
* Copyright (c) 2012, 2013 Hemanta Sapkota.
* 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
*
* Contributors:
* Hemanta Sapkota (laex.pearl@gmail.com)
*/
package com.laex.cg2d.entityeditor.ui;
import org.apache.commons.lang.StringUtils;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
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.swt.widgets.Text;
/**
* The Class AnimationPropertyChangeDialog.
*/
public class AnimationPropertyChangeDialog extends TitleAreaDialog {
/** The txt name. */
private Text txtName;
/** The name. */
private String name;
/** The ok button. */
private Button okButton;
/** The existing name. */
private String existingName;
/** The anim duration. */
private String animDuration;
/** The lbl animation name. */
private Label lblAnimationName;
/** The lbl animation duration. */
private Label lblAnimationDuration;
/** The txt animation duration. */
private Text txtAnimationDuration;
/**
* The Class Validator.
*/
class Validator implements ModifyListener {
/*
* (non-Javadoc)
*
* @see
* org.eclipse.swt.events.ModifyListener#modifyText(org.eclipse.swt.events
* .ModifyEvent)
*/
@Override
public void modifyText(ModifyEvent e) {
if (StringUtils.isEmpty(txtName.getText()) || StringUtils.isEmpty(txtAnimationDuration.getText())) {
setErrorMessage("Value hould not be empty");
okButton.setEnabled(false);
return;
}
try {
Float.parseFloat(txtAnimationDuration.getText());
} catch (NumberFormatException nex) {
setErrorMessage("Value must be a valid floating point number");
okButton.setEnabled(false);
return;
}
setErrorMessage(null);
okButton.setEnabled(true);
}
}
/** The validator. */
private final Validator validator = new Validator();
/**
* Create the dialog.
*
* @param parentShell
* the parent shell
* @param existingName
* the existing name
* @param animDuration
* the anim duration
*/
public AnimationPropertyChangeDialog(Shell parentShell, String existingName, String animDuration) {
super(parentShell);
this.existingName = existingName;
this.animDuration = animDuration;
}
/**
* Create contents of the dialog.
*
* @param parent
* the parent
* @return the control
*/
@Override
protected Control createDialogArea(Composite parent) {
setTitle("Set new values");
Composite area = (Composite) super.createDialogArea(parent);
Composite container = new Composite(area, SWT.NONE);
container.setLayout(new GridLayout(2, false));
GridData gd_container = new GridData(GridData.FILL_BOTH);
gd_container.grabExcessVerticalSpace = false;
gd_container.heightHint = 55;
container.setLayoutData(gd_container);
lblAnimationName = new Label(container, SWT.NONE);
lblAnimationName.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
lblAnimationName.setText("Animation Name");
txtName = new Text(container, SWT.BORDER);
txtName.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
txtName.setText(existingName);
txtName.addModifyListener(validator);
lblAnimationDuration = new Label(container, SWT.NONE);
lblAnimationDuration.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
lblAnimationDuration.setText("Animation Duration");
txtAnimationDuration = new Text(container, SWT.BORDER);
txtAnimationDuration.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
txtAnimationDuration.setText(animDuration);
txtAnimationDuration.addModifyListener(validator);
return area;
}
/**
* Create contents of the button bar.
*
* @param parent
* the parent
*/
@Override
protected void createButtonsForButtonBar(Composite parent) {
okButton = createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.dialogs.Dialog#okPressed()
*/
@Override
protected void okPressed() {
name = txtName.getText();
animDuration = txtAnimationDuration.getText();
super.okPressed();
}
/**
* Gets the name.
*
* @return the name
*/
public String getName() {
return name;
}
/**
* Gets the animation duration.
*
* @return the animation duration
*/
public String getAnimationDuration() {
return animDuration;
}
/**
* Return the initial size of the dialog.
*
* @return the initial size
*/
@Override
protected Point getInitialSize() {
return new Point(450, 197);
}
}