188 lines
4.8 KiB
Java
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);
|
|
}
|
|
|
|
}
|