package com.mobilesorcery.sdk.builder.winmobilecs.ui.properties;
import java.util.UUID;
import org.eclipse.jface.dialogs.IMessageProvider;
import org.eclipse.swt.SWT;
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.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Text;
import com.mobilesorcery.sdk.builder.winmobilecs.PropertyInitializer;
import com.mobilesorcery.sdk.core.CoreMoSyncPlugin;
import com.mobilesorcery.sdk.ui.DefaultMessageProvider;
import com.mobilesorcery.sdk.ui.MoSyncPropertyPage;
import com.mobilesorcery.sdk.ui.Note;
import com.mobilesorcery.sdk.ui.UpdateListener;
public class WindowsPhoneGUIDPropertyPage extends MoSyncPropertyPage {
public WindowsPhoneGUIDPropertyPage() {
super(false);
}
public class GenerateRandomUIDListener implements Listener {
@Override
public void handleEvent(Event event) {
guid.setText(CoreMoSyncPlugin.getDefault().generateUUID().toString());
}
}
private Text guid;
@Override
protected Control createContents(Composite parent) {
noDefaultAndApplyButton();
Composite main = new Composite(parent, SWT.NONE);
main.setLayout(new GridLayout(3, false));
Label guidLabel = new Label(main, SWT.NONE);
guidLabel.setText("&GUID:");
guid = new Text(main, SWT.BORDER | SWT.SINGLE);
guid.addListener(SWT.Modify, new UpdateListener(this));
guid.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
Button generateRandom = new Button(main, SWT.PUSH);
generateRandom.setText("Generate G&UID");
generateRandom.addListener(SWT.Selection, new GenerateRandomUIDListener());
generateRandom.setLayoutData(new GridData(SWT.RIGHT, SWT.TOP, true, false));
setText(guid, getProject().getProperty(PropertyInitializer.GUID));
Note note = new Note(main, SWT.NONE);
note.setText("The \'Generate GUID\' button will generate a time-based UUID with a random MAC address.");
note.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false, 3, 1));
return main;
}
@Override
public void validate() {
String msg = null;
int msgType = IMessageProvider.NONE;
try {
UUID.fromString(guid.getText());
} catch (Exception e) {
msg = "Invalid GUID (Note: No brackets are allowed)";
msgType = IMessageProvider.ERROR;
}
setMessage(new DefaultMessageProvider(msg, msgType));
}
@Override
public boolean performOk() {
getProject().setProperty(PropertyInitializer.GUID, guid.getText());
return super.performOk();
}
}