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() { @Override public void onValueChange( ValueChangeEvent 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); } }