github-connector/src/main/java/org/gcube/portlets/widgets/githubconnector/client/GitHubConnectorCredentialCa...

188 lines
4.8 KiB
Java

package org.gcube.portlets.widgets.githubconnector.client;
import org.gcube.portlets.widgets.githubconnector.client.wizard.WizardCard;
import org.gcube.portlets.widgets.githubconnector.shared.git.credential.GitHubCredential;
import org.gcube.portlets.widgets.githubconnector.shared.git.credential.GitHubCredentialType;
import com.google.gwt.core.shared.GWT;
import com.google.gwt.event.logical.shared.ValueChangeEvent;
import com.google.gwt.event.logical.shared.ValueChangeHandler;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.DecoratorPanel;
import com.google.gwt.user.client.ui.FlexTable;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.RadioButton;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.TextBox;
public class GitHubConnectorCredentialCard extends WizardCard {
private GitHubCredential gitHubCredential;
private GitHubCredentialType selected;
private SimplePanel simplePanel;
private FlexTable layout;
private TextBox userName;
private TextBox password;
private TextBox token;
//private DecoratorPanel decPanel;
public GitHubConnectorCredentialCard() {
super("Credential", "Select the credentials to use");
selected = GitHubCredentialType.Anonymous;
simplePanel = new SimplePanel();
// Form
layout = new FlexTable();
layout.setCellSpacing(16);
userName = new TextBox();
password = new TextBox();
token = new TextBox();
// Add some standard form options
HorizontalPanel hPanel = new HorizontalPanel();
hPanel.setSpacing(10);
for (GitHubCredentialType type : GitHubCredentialType.values()) {
RadioButton radioButton = new RadioButton("credentialType",
type.getLabel());
radioButton.getElement().setAttribute("itemId", type.name());
radioButton.ensureDebugId("radioButton-credentialType-"
+ type.name());
radioButton
.addValueChangeHandler(new ValueChangeHandler<Boolean>() {
@Override
public void onValueChange(
ValueChangeEvent<Boolean> event) {
if (event.getValue()) {
RadioButton radioButton = (RadioButton) event
.getSource();
String selectedCredential = radioButton
.getElement().getAttribute("itemId");
GWT.log("Selected Credential: "
+ selectedCredential);
if (selectedCredential != null) {
selected = GitHubCredentialType
.valueOf(selectedCredential);
if (selected != null) {
switch (selected) {
case Anonymous:
GWT.log("Anonymous");
setAnonymous();
break;
case Login:
GWT.log("Login");
setLogin();
break;
case OAuth2:
GWT.log("OAuth2");
setOAuth2();
break;
default:
GWT.log("OAuth2");
setAnonymous();
break;
}
} else {
selected = GitHubCredentialType.Anonymous;
setAnonymous();
}
}
}
}
});
if (type.compareTo(GitHubCredentialType.Anonymous) == 0) {
radioButton.setValue(true);
}
hPanel.add(radioButton);
}
layout.setHTML(1, 0, "Type:");
layout.setWidget(1, 1, hPanel);
// Wrap the content in a DecoratorPanel
//decPanel = new DecoratorPanel();
//decPanel.setWidget(layout);
simplePanel.add(layout);
setContent(simplePanel);
}
private void setAnonymous() {
if (selected.compareTo(GitHubCredentialType.Anonymous) != 0) {
for (int i = 1; i <= layout.getRowCount(); i++) {
layout.removeRow(i);
}
}
}
private void setOAuth2() {
if (selected.compareTo(GitHubCredentialType.OAuth2) != 0) {
for (int i = 1; i <= layout.getRowCount(); i++) {
layout.removeRow(i);
}
layout.setHTML(2, 0, "Token:");
layout.add(token);
}
}
private void setLogin() {
if (selected.compareTo(GitHubCredentialType.Login) != 0) {
for (int i = 1; i <= layout.getRowCount(); i++) {
layout.removeRow(i);
}
layout.setHTML(2, 0, "User:");
layout.add(userName);
layout.setHTML(3, 0, "Password:");
layout.add(password);
}
}
@Override
public void setup() {
Command sayNextCard = new Command() {
public void execute() {
try {
GWT.log("NextCard");
getWizardWindow().nextCard();
} catch (Exception e) {
GWT.log("sayNextCard :" + e.getLocalizedMessage());
}
}
};
Command sayPreviousCard = new Command() {
public void execute() {
try {
GWT.log("PreviousCard");
getWizardWindow().previousCard();
} catch (Exception e) {
GWT.log("sayPreviousCard :" + e.getLocalizedMessage());
}
}
};
getWizardWindow().setPreviousButtonCommand(sayPreviousCard);
getWizardWindow().setNextButtonCommand(sayNextCard);
setEnableBackButton(false);
setBackButtonVisible(false);
setEnableNextButton(true);
setNextButtonVisible(true);
}
}