package es.java.otro.view;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.jface.layout.GridLayoutFactory;
import org.eclipse.jface.layout.LayoutConstants;
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.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;
public class UrlDialog extends TitleAreaDialog {
private String feedUrl;
private Button okButton;
public UrlDialog(Shell parent) {
super(parent);
}
protected Control createContents(Composite parent) {
Control contents = super.createContents(parent);
setTitle("New Feed");
return contents;
}
@Override
protected Control createDialogArea(Composite parent) {
Composite parentComposite = (Composite) super.createDialogArea(parent);
Composite contents = new Composite(parentComposite, SWT.NONE);
contents.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
Label label1 = new Label(contents, SWT.NONE);
label1.setText("Enter url:");
final Text url = new Text(contents, SWT.BORDER);
url.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent event) {
if (event.widget == url) {
feedUrl = url.getText().trim();
okButton.setEnabled(validateUrl(feedUrl));
}
}
});
url.setFocus();
Dialog.applyDialogFont(contents);
Point defaultMargins = LayoutConstants.getMargins();
GridLayoutFactory.fillDefaults().numColumns(2).margins(
defaultMargins.x, defaultMargins.y).generateLayout(contents);
return contents;
}
private boolean validateUrl(String path) {
if (path.toLowerCase().startsWith("http://")) {
try{
new URL(path);
} catch (MalformedURLException e) {
setErrorMessage("Invalid url");
return false;
}
setErrorMessage(null);
return true;
} else {
return false;
}
}
protected void createButtonsForButtonBar(Composite parent) {
okButton = createButton(parent, IDialogConstants.OK_ID,
IDialogConstants.OK_LABEL, true);
createButton(parent, IDialogConstants.CANCEL_ID,
IDialogConstants.CANCEL_LABEL, false);
}
public String getUrl(){
return feedUrl;
}
}