/* * 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.widgets.client.widget; import java.util.List; import javax.inject.Inject; import com.google.gwt.event.dom.client.ChangeEvent; import org.jboss.errai.common.client.dom.Document; import org.jboss.errai.common.client.dom.Label; import org.jboss.errai.common.client.dom.Option; import org.jboss.errai.common.client.dom.Select; 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; @Templated public class KSessionSelectorViewImpl implements KSessionSelectorView { Document document; @DataField("kbaseSelect") Select kbaseSelect; @Inject @DataField("ksessionSelect") Select ksessionSelect; @Inject @DataField("warningLabel") Label warningLabel; private KSessionSelector presenter; public KSessionSelectorViewImpl() { } @Inject public KSessionSelectorViewImpl(final Document document, final Select kbaseSelect, final Select ksessionSelect, final Label warningLabel) { this.document = document; this.kbaseSelect = kbaseSelect; this.ksessionSelect = ksessionSelect; this.warningLabel = warningLabel; } @Override public void setPresenter(final KSessionSelector presenter) { this.presenter = presenter; } @Override public void setSelected(final String kbase, final String ksession) { kbaseSelect.setValue(kbase); ksessionSelect.setValue(ksession); onSelectionChange(); } @Override public void addKBase(final String name) { kbaseSelect.add(createOption(name)); } @Override public void setKSessions(final List<String> ksessions) { removeChildren(ksessionSelect); for (String ksession : ksessions) { ksessionSelect.add(createOption(ksession)); } } private Option createOption(final String value) { Option option = (Option) document.createElement("option"); option.setText(value); return option; } private void removeChildren(final Select select) { while (select.hasChildNodes()) { select.removeChild(select.getLastChild()); } } @Override public void showWarningSelectedKSessionDoesNotExist() { warningLabel.setHidden(false); } @Override public void clear() { removeChildren(kbaseSelect); removeChildren(ksessionSelect); } @Override public String getSelectedKSessionName() { return ksessionSelect.getValue(); } @EventHandler("kbaseSelect") public void onKBaseChange(final ChangeEvent event) { presenter.onKBaseSelected(kbaseSelect.getValue()); } @EventHandler("ksessionSelect") public void onKSessionSelected(final ChangeEvent event) { onSelectionChange(); } void onSelectionChange() { presenter.onSelectionChange(); } }