/*
* Copyright 2016 Red Hat, Inc. and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.kie.workbench.common.screens.examples.client.wizard.pages.repository;
import javax.enterprise.context.Dependent;
import javax.inject.Inject;
import com.google.gwt.dom.client.Element;
import com.google.gwt.dom.client.Style;
import com.google.gwt.event.dom.client.ChangeEvent;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.Composite;
import org.gwtbootstrap3.client.ui.constants.ValidationState;
import org.jboss.errai.common.client.dom.RadioInput;
import org.jboss.errai.common.client.dom.TextInput;
import org.jboss.errai.ui.shared.api.annotations.DataField;
import org.jboss.errai.ui.shared.api.annotations.EventHandler;
import org.jboss.errai.ui.shared.api.annotations.Templated;
import org.uberfire.ext.widgets.common.client.common.StyleHelper;
@Dependent
@Templated
public class RepositoryPageViewImpl extends Composite implements RepositoryPageView {
@DataField("repository-type")
Element repositoryType = DOM.createDiv();
@Inject
@DataField("stockRadio")
RadioInput stockRadio;
@Inject
@DataField("customRadio")
RadioInput customRadio;
@DataField("repository-form")
Element repositoryGroup = DOM.createDiv();
@Inject
@DataField("repositoryUrlInput")
TextInput repositoryUrlInput;
@DataField("repository-help")
Element repositoryHelp = DOM.createSpan();
private RepositoryPage presenter;
@Override
public void init(final RepositoryPage presenter) {
this.presenter = presenter;
}
@Override
public void initialise() {
repositoryUrlInput.setValue("");
}
@Override
public void setPlaceHolder(final String placeHolder) {
repositoryUrlInput.setAttribute("placeholder",
placeHolder);
}
@Override
public void setUrlGroupType(final ValidationState state) {
StyleHelper.addUniqueEnumStyleName(repositoryGroup,
ValidationState.class,
state);
}
@Override
public void showUrlHelpMessage(final String message) {
repositoryHelp.getStyle().setVisibility(Style.Visibility.VISIBLE);
repositoryHelp.setInnerText(message);
}
@Override
public void hideUrlHelpMessage() {
repositoryHelp.getStyle().setVisibility(Style.Visibility.HIDDEN);
repositoryHelp.setInnerText("");
}
@Override
public void setStockRepositoryOption() {
stockRadio.setChecked(true);
customRadio.setChecked(false);
}
@Override
public void disableStockRepositoryOption() {
stockRadio.setDisabled(true);
}
@Override
public void setCustomRepositoryOption() {
customRadio.setChecked(true);
stockRadio.setChecked(false);
}
@Override
public void showRepositoryUrlInputForm() {
repositoryGroup.getStyle().setVisibility(Style.Visibility.VISIBLE);
}
@Override
public void hideRepositoryUrlInputForm() {
repositoryGroup.getStyle().setVisibility(Style.Visibility.HIDDEN);
}
@Override
public String getCustomRepositoryValue() {
return repositoryUrlInput.getValue();
}
@Override
public void setCustomRepositoryValue(final String value) {
repositoryUrlInput.setValue(value);
}
@EventHandler("stockRadio")
public void handleStockRadioClick(ClickEvent event) {
presenter.playgroundRepositorySelected();
}
@EventHandler("customRadio")
public void handleCustomRadioClick(ClickEvent event) {
presenter.onCustomRepositorySelected();
}
@EventHandler("repositoryUrlInput")
public void handleRepositoryUrlInputValueChange(ChangeEvent event) {
presenter.onCustomRepositoryValueChanged();
}
}