package tk.eclipse.plugin.htmleditor;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.graphics.Image;
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.Shell;
import org.eclipse.swt.widgets.Text;
public abstract class AbstractValidationDialog extends Dialog {
private CLabel errorLabel;
private static Image errorImage
= HTMLPlugin.getDefault().getImageRegistry().get(HTMLPlugin.ICON_ERROR);
protected AbstractValidationDialog(Shell parentShell) {
super(parentShell);
setShellStyle(getShellStyle()|SWT.RESIZE);
}
protected Control createContents(Composite parent) {
// create the top level composite for the dialog
Composite composite = new Composite(parent, 0);
GridLayout layout = new GridLayout();
layout.marginHeight = 0;
layout.marginWidth = 0;
layout.verticalSpacing = 0;
composite.setLayout(layout);
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
applyDialogFont(composite);
// initialize the dialog units
initializeDialogUnits(composite);
// create the dialog area and button bar
dialogArea = createDialogArea(composite);
errorLabel = new CLabel(composite, SWT.NULL);
errorLabel.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
buttonBar = createButtonBar(composite);
validate();
return composite;
}
protected abstract void validate();
protected void add(Text text){
text.addModifyListener(new ModifyListener(){
public void modifyText(ModifyEvent evt) {
validate();
}
});
}
protected void setErrorMessage(String message){
if(message==null || message.length()==0){
errorLabel.setImage(null);
errorLabel.setText("");
getButton(OK).setEnabled(true);
} else {
errorLabel.setImage(errorImage);
errorLabel.setText(message);
getButton(OK).setEnabled(false);
}
}
}