org.jboss.as.console.client.teiid.runtime.VDBTranslatorsTab.java Source code

Java tutorial

Introduction

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

Source

/* 
 * JBoss, Home of Professional Open Source 
 * Copyright 2011 Red Hat Inc. and/or its affiliates and other contributors
 * as indicated by the @author tags. All rights reserved. 
 * See the copyright.txt in the distribution for a 
 * full listing of individual contributors.
 *
 * This copyrighted material is made available to anyone wishing to use, 
 * modify, copy, or redistribute it subject to the terms and conditions 
 * of the GNU Lesser General Public License, v. 2.1. 
 * This program is distributed in the hope that it will be useful, but WITHOUT A 
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
 * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details. 
 * You should have received a copy of the GNU Lesser General Public License, 
 * v.2.1 along with this distribution; if not, write to the Free Software 
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
 * MA  02110-1301, USA.
 */
package org.jboss.as.console.client.teiid.runtime;

import java.util.Comparator;

import org.jboss.as.console.client.teiid.model.KeyValuePair;
import org.jboss.as.console.client.teiid.model.VDB;
import org.jboss.as.console.client.teiid.model.VDBTranslator;
import org.jboss.as.console.client.teiid.runtime.VDBView.TableSelectionCallback;
import org.jboss.ballroom.client.widgets.forms.Form;
import org.jboss.ballroom.client.widgets.forms.TextItem;
import org.jboss.ballroom.client.widgets.tables.DefaultCellTable;
import org.jboss.ballroom.client.widgets.tables.DefaultPager;

import com.google.gwt.user.cellview.client.ColumnSortEvent.ListHandler;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.view.client.ListDataProvider;
import com.google.gwt.view.client.ProvidesKey;
import com.google.gwt.view.client.SingleSelectionModel;

@SuppressWarnings("nls")
public class VDBTranslatorsTab extends VDBProvider {
    private VDBPresenter presenter;

    public VDBTranslatorsTab(VDBPresenter presenter) {
        this.presenter = presenter;
    }

    @Override
    public VerticalPanel getPanel(DefaultCellTable vdbTable) {
        final Form<VDBTranslator> form = new Form<VDBTranslator>(VDBTranslator.class);
        final ListDataProvider<VDBTranslator> translatorProvider = new ListDataProvider<VDBTranslator>();
        final ListDataProvider<KeyValuePair> propertyProvider = new ListDataProvider<KeyValuePair>();
        ListHandler<VDBTranslator> sortHandler = new ListHandler<VDBTranslator>(translatorProvider.getList());

        // the main translator table
        final DefaultCellTable<VDBTranslator> translatorsTable = getTranslatorsTable(sortHandler);
        translatorProvider.addDataDisplay(translatorsTable);
        VDBView.onTableSectionChange(vdbTable, new TableSelectionCallback<VDB>() {
            @Override
            public void onSelectionChange(VDB selection) {
                if (selection != null && !selection.getOverrideTranslators().isEmpty()) {
                    translatorProvider.getList().clear();
                    translatorProvider.getList().addAll(selection.getOverrideTranslators());
                    translatorsTable.getSelectionModel().setSelected(selection.getOverrideTranslators().get(0),
                            true);
                    VDBTranslator selected = translatorsTable.getPreviousSelectedEntity();
                    if (selected != null) {
                        propertyProvider.getList().clear();
                        propertyProvider.getList().addAll(selected.getProperties());
                    }
                } else {
                    translatorProvider.getList().clear();
                    propertyProvider.getList().clear();
                    form.clearValues();
                }
            }
        });
        DefaultPager translatorsTablePager = new DefaultPager();
        translatorsTablePager.setDisplay(translatorsTable);

        // Details about Model        
        form.setNumColumns(1);
        form.setEnabled(false);

        TextItem descriptionLabel = new TextItem("description", "Description");

        form.setFields(descriptionLabel);
        form.bind(translatorsTable);

        // Properties in translator
        Label propertiesLabel = new Label("Properties");
        propertiesLabel.getElement().setAttribute("style", "margin-top:10px;margin-bottom:10px;font-weight:bold;");

        final DefaultCellTable propertiesTable = VDBView.buildPropertiesTable();
        //propertiesTable.p
        propertyProvider.addDataDisplay(propertiesTable);
        VDBView.onTableSectionChange(translatorsTable, new TableSelectionCallback<VDBTranslator>() {
            @Override
            public void onSelectionChange(VDBTranslator translator) {
                propertyProvider.getList().clear();
                propertyProvider.getList().addAll(translator.getProperties());
            }
        });
        DefaultPager propertiesTablePager = new DefaultPager();
        propertiesTablePager.setDisplay(propertiesTable);

        Label descritpionsLabel = new Label("This tab shows overridden translators in a VDB");
        descritpionsLabel.getElement().setAttribute("style", "margin-top:5px;margin-bottom:5px;");

        // build overall panel
        VerticalPanel formPanel = new VerticalPanel();
        formPanel.add(descritpionsLabel.asWidget());
        formPanel.add(translatorsTable.asWidget());
        formPanel.add(translatorsTablePager);
        formPanel.add(form.asWidget());
        formPanel.add(propertiesLabel.asWidget());
        formPanel.add(propertiesTable.asWidget());
        formPanel.add(propertiesTablePager);
        return formPanel;
    }

    private DefaultCellTable<VDBTranslator> getTranslatorsTable(ListHandler<VDBTranslator> sortHandler) {
        ProvidesKey<VDBTranslator> keyProvider = new ProvidesKey<VDBTranslator>() {
            @Override
            public Object getKey(VDBTranslator item) {
                return getVdbName() + "." + getVdbVersion() + "." + item.getName();
            }
        };

        final DefaultCellTable<VDBTranslator> table = new DefaultCellTable<VDBTranslator>(5, keyProvider);
        table.addColumnSortHandler(sortHandler);

        TextColumn<VDBTranslator> nameColumn = new TextColumn<VDBTranslator>() {
            @Override
            public String getValue(VDBTranslator record) {
                return record.getName();
            }
        };
        nameColumn.setSortable(true);
        sortHandler.setComparator(nameColumn, new Comparator<VDBTranslator>() {
            @Override
            public int compare(VDBTranslator o1, VDBTranslator o2) {
                return o1.getName().compareTo(o2.getName());
            }
        });

        TextColumn<VDBTranslator> typeColumn = new TextColumn<VDBTranslator>() {
            @Override
            public String getValue(VDBTranslator record) {
                return record.getType();
            }
        };
        typeColumn.setSortable(true);
        sortHandler.setComparator(typeColumn, new Comparator<VDBTranslator>() {
            @Override
            public int compare(VDBTranslator o1, VDBTranslator o2) {
                return o1.getType().compareTo(o2.getType());
            }
        });

        TextColumn<VDBTranslator> moduleColumn = new TextColumn<VDBTranslator>() {
            @Override
            public String getValue(VDBTranslator record) {
                return String.valueOf(record.getModuleName());
            }
        };
        moduleColumn.setSortable(true);
        sortHandler.setComparator(moduleColumn, new Comparator<VDBTranslator>() {
            @Override
            public int compare(VDBTranslator o1, VDBTranslator o2) {
                return o1.getModuleName().compareTo(o2.getModuleName());
            }
        });

        table.setSelectionModel(new SingleSelectionModel<VDBTranslator>(keyProvider));

        table.setTitle("Translators");
        table.addColumn(nameColumn, "Name");
        table.addColumn(typeColumn, "Type");
        table.addColumn(moduleColumn, "Module Name");

        // sets initial sorting
        table.getColumnSortList().push(nameColumn);

        return table;
    }
}