package klik.client.mvp.setup;
import java.util.LinkedHashMap;
import java.util.Map;
import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.ControlGroup;
import com.github.gwtbootstrap.client.ui.Modal;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Widget;
import com.google.inject.Inject;
import com.google.web.bindery.event.shared.EventBus;
import com.gwtplatform.mvp.client.PopupViewCloseHandler;
import com.gwtplatform.mvp.client.PopupViewWithUiHandlers;
public class SetupWidgetView extends PopupViewWithUiHandlers<SetupWidgetUiHandlers>
implements SetupWidgetPresenter.MyView {
public interface Binder extends UiBinder<Widget, SetupWidgetView> {
}
private final Widget widget;
@UiField(provided = true) Modal modal;
@UiField ControlGroup activeGroup;
@UiField Label activePortLabel;
@UiField Label statusLabel;
@UiField ListBox comPortListBox;
@UiField Button shutDownBtn;
@UiField Button restartBtn;
@UiField Button saveBtn;
@Inject
public SetupWidgetView(final EventBus eventBus, final Binder binder) {
super(eventBus);
setUpDialog();
widget = binder.createAndBindUi(this);
}
@Override
public Widget asWidget() {
return widget;
}
private void setUpDialog() {
modal = new Modal() {
@Override
protected void onUnload() {
SetupWidgetView.this.hide();
}
};
}
@Override
public void center() {
modal.show();
}
@Override
public void hide() {
modal.hide();
if (getUiHandlers() != null) {
getUiHandlers().onClose();
}
}
@Override
public void setAutoHideOnNavigationEventEnabled(boolean autoHide) {
}
@Override
public void setCloseHandler(PopupViewCloseHandler popupViewCloseHandler) {
}
@Override
public void setPosition(int left, int top) {
}
@Override
public void show() {
modal.show();
}
@UiHandler("shutDownBtn")
public void onShutDownClick(ClickEvent e) {
if (getUiHandlers() != null) {
getUiHandlers().onShutDown();
}
}
@UiHandler("restartBtn")
public void onRestartClick(ClickEvent e) {
if (getUiHandlers() != null) {
getUiHandlers().onRestart();
}
}
@UiHandler("saveBtn")
public void onSaveClick(ClickEvent e) {
if (getUiHandlers() != null) {
getUiHandlers().onSave();
}
}
@Override
public void fillFields(boolean isRunning, LinkedHashMap<String, String> comPorts, String activePort) {
comPortListBox.clear();
setIsRunning(isRunning);
if (activePort != null) {
activePortLabel.setText(activePort);
activeGroup.setVisible(true);
} else {
activeGroup.setVisible(false);
}
for (Map.Entry<String, String> e : comPorts.entrySet()) {
comPortListBox.addItem(e.getKey(), e.getValue());
}
}
@Override
public void setIsRunning(boolean isRunning) {
if (isRunning) {
statusLabel.setText("Running");
shutDownBtn.setText("Shut down");
} else {
statusLabel.setText("Stopped");
shutDownBtn.setText("Start up");
}
}
@Override
public String getSelectedPort() {
return comPortListBox.getValue(comPortListBox.getSelectedIndex());
}
}