org.jboss.as.console.client.teiid.TranslatorEditor.java Source code

Java tutorial

Introduction

Here is the source code for org.jboss.as.console.client.teiid.TranslatorEditor.java

Source

/*
 * Copyright Red Hat, Inc. and/or its affiliates
 * and other contributors as indicated by the @author tags and
 * the COPYRIGHT.txt file distributed with this work.
 *
 * 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.jboss.as.console.client.teiid;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

import org.jboss.as.console.client.Console;
import org.jboss.as.console.client.layout.MultipleToOneLayout;
import org.jboss.as.console.client.teiid.model.Translator;
import org.jboss.ballroom.client.widgets.forms.CheckBoxItem;
import org.jboss.ballroom.client.widgets.forms.ComboBoxItem;
import org.jboss.ballroom.client.widgets.forms.FormItem;
import org.jboss.ballroom.client.widgets.forms.NumberBoxItem;
import org.jboss.ballroom.client.widgets.forms.TextBoxItem;
import org.jboss.ballroom.client.widgets.tables.DefaultCellTable;
import org.jboss.ballroom.client.widgets.tools.ToolButton;
import org.jboss.ballroom.client.widgets.tools.ToolStrip;
import org.jboss.ballroom.client.widgets.window.DefaultWindow;
import org.jboss.ballroom.client.widgets.window.Feedback;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.ProvidesKey;
import com.google.gwt.view.client.SingleSelectionModel;

public class TranslatorEditor implements Persistable<Translator> {

    private DefaultCellTable<Translator> table;
    private ListDataProvider<Translator> dataProvider;

    private TeiidModelForm<Translator> formCommon;
    private SubsystemPresenter presenter;
    private DefaultWindow window;

    public TranslatorEditor(SubsystemPresenter presenter) {
        this.presenter = presenter;
    }

    public Widget asWidget() {

        ClickHandler addClickHandler = new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                launchTranslatorWizard();
            }
        };

        ClickHandler deleteClickHandler = new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                final Translator selection = getCurrentSelection();
                Feedback.confirm(Console.MESSAGES.deleteTitle("Translator"),
                        Console.MESSAGES.deleteConfirm("Translator " + selection.getName()),
                        new Feedback.ConfirmationHandler() {
                            @Override
                            public void onConfirmation(boolean isConfirmed) {
                                if (isConfirmed) {
                                    delete(selection);
                                }
                            }
                        });
            }
        };

        ToolButton addBtn = new ToolButton(Console.CONSTANTS.common_label_add());
        addBtn.addClickHandler(addClickHandler);
        ToolButton deleteBtn = new ToolButton(Console.CONSTANTS.common_label_delete());
        deleteBtn.addClickHandler(deleteClickHandler);

        ToolStrip topLevelTools = new ToolStrip();
        topLevelTools.addToolButtonRight(addBtn);
        topLevelTools.addToolButtonRight(deleteBtn);

        this.table = new DefaultCellTable<Translator>(5, new ProvidesKey<Translator>() {
            @Override
            public Object getKey(Translator item) {
                return item.getName();
            }
        });

        this.dataProvider = new ListDataProvider<Translator>();
        this.dataProvider.addDataDisplay(this.table);

        TextColumn<Translator> nameColumn = new TextColumn<Translator>() {
            @Override
            public String getValue(Translator record) {
                return record.getName();
            }
        };

        TextColumn<Translator> protocolColumn = new TextColumn<Translator>() {
            @Override
            public String getValue(Translator record) {
                return record.getModuleName();
            }
        };

        TextColumn<Translator> slotColumn = new TextColumn<Translator>() {
            @Override
            public String getValue(Translator record) {
                return record.getSlot();
            }
        };

        this.table.addColumn(nameColumn, "Name");
        this.table.addColumn(protocolColumn, "Module Name");
        this.table.addColumn(slotColumn, "Slot");

        this.formCommon = new TeiidModelForm<Translator>(Translator.class, this,
                buildCommonFormItems().toArray(new FormItem<?>[2]));

        this.formCommon.setTable(this.table);

        MultipleToOneLayout layoutBuilder = new MultipleToOneLayout().setPlain(true).setTitle("Translators")
                .setHeadline("Translators")
                .setDescription(new SafeHtmlBuilder().appendEscaped(
                        "Translator provides a mechanism to " + "to integrate data from various source systems")
                        .toSafeHtml())
                .setMaster(Console.MESSAGES.available("Translators"), table)
                .setMasterTools(topLevelTools.asWidget()).addDetail("Common", this.formCommon.asWidget());

        return layoutBuilder.build();

    }

    static List<FormItem<?>> buildCommonFormItems() {
        TextBoxItem name = new TextBoxItem("name", "Name", true);
        TextBoxItem moduleName = new TextBoxItem("moduleName", "Module Name", true);
        TextBoxItem slot = new TextBoxItem("slot", "Slot", true);
        return Arrays.asList(name, moduleName, slot);
    }

    public void setTranslators(List<Translator> translators) {
        this.dataProvider.setList(translators);
        this.table.selectDefaultEntity();
    }

    private Translator getCurrentSelection() {
        return ((SingleSelectionModel<Translator>) this.table.getSelectionModel()).getSelectedObject();
    }

    public void launchTranslatorWizard() {
        try {
            this.window = new DefaultWindow(Console.MESSAGES.createTitle("Translator"));
            this.window.setWidth(480);
            this.window.setHeight(360);

            TranslatorWizard wizard = new TranslatorWizard(this);

            this.window.trapWidget(wizard.asWidget());

            this.window.setGlassEnabled(true);
            this.window.center();
        } catch (Exception e) {
            Console.error("Error while starting the wizard for new Translator");
        }
    }

    @Override
    public void save(Translator translator, Map<String, Object> changeset) {
        this.presenter.saveTranslator(translator, changeset);
    }

    private void delete(Translator selection) {
        this.presenter.deleteTranslator(selection);
    }

    public void closeNewTranslatorWizard() {
        this.window.hide();
    }

    public void createNewTranslator(Translator translator) {
        this.window.hide();
        this.presenter.createTranslator(translator);
    }
}