Package org.jboss.as.console.client.tools

Source Code of org.jboss.as.console.client.tools.FXTemplatesView

package org.jboss.as.console.client.tools;

import com.google.gwt.cell.client.ActionCell;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.cellview.client.Column;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.ui.VerticalPanel;
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.SelectionChangeEvent;
import com.google.gwt.view.client.SingleSelectionModel;
import org.jboss.as.console.client.Console;
import org.jboss.as.console.client.shared.viewframework.builder.MultipleToOneLayout;
import org.jboss.as.console.client.widgets.pages.PagedView;
import org.jboss.as.console.client.widgets.tables.TextLinkCell;
import org.jboss.ballroom.client.widgets.forms.TextAreaItem;
import org.jboss.ballroom.client.widgets.forms.TextItem;
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.dmr.client.ModelNode;

import java.util.Map;
import java.util.Set;

/**
* @author Heiko Braun
* @date 7/23/12
*/
public class FXTemplatesView {

    private FXTemplatesPresenter presenter;
    private DefaultCellTable<FXTemplate> table;
    private ListDataProvider<FXTemplate> dataProvider;
    private PagedView pages;
    private FXModelsView modelStepView;
    private SimpleForm form;

    public FXTemplatesView() {

    }

    public void setPresenter(BrowserPresenter presenter) {
        this.presenter = presenter;
        modelStepView.setPresenter(presenter);
    }

    Widget asWidget() {

        pages = new PagedView();

        table = new DefaultCellTable<FXTemplate>(8,
                new ProvidesKey<FXTemplate>() {
                    @Override
                    public Object getKey(FXTemplate fxTemplate) {
                        return fxTemplate.getId();
                    }
                });

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

        final SingleSelectionModel<FXTemplate> selectionModel = new SingleSelectionModel<FXTemplate>();
        table.setSelectionModel(selectionModel);


        TextColumn<FXTemplate> nameCol = new TextColumn<FXTemplate>() {
            @Override
            public String getValue(FXTemplate fxTemplate) {
                return fxTemplate.getName();
            }
        };

        table.addColumn(nameCol, "Name");

        Column<FXTemplate, FXTemplate> option = new Column<FXTemplate, FXTemplate>(
                new TextLinkCell<FXTemplate>(Console.CONSTANTS.common_label_view(),
                        new ActionCell.Delegate<FXTemplate>() {
                            @Override
                            public void execute(FXTemplate selection) {
                                pages.showPage(1);
                            }
                        })
        ) {

            @Override
            public FXTemplate getValue(FXTemplate t) {
                return t;
            }
        };

        table.addColumn(option, "Option");

        ToolStrip toolstrip = new ToolStrip();
        ToolButton addBtn = new ToolButton("Add", new ClickHandler() {
            @Override
            public void onClick(ClickEvent clickEvent) {
                presenter.launchNewTemplateWizard();
            }
        });

        ToolButton removeBtn = new ToolButton("Remove", new ClickHandler() {
            @Override
            public void onClick(ClickEvent clickEvent) {
                final FXTemplate selectedObject = selectionModel.getSelectedObject();
                presenter.onRemoveTemplate(selectedObject.getId());

            }
        });

        toolstrip.addToolButtonRight(addBtn);
        toolstrip.addToolButtonRight(removeBtn);


        form = new SimpleForm();
        final TextItem id = new TextItem("id", "ID");
        final TextAreaItem name = new TextAreaItem("name", "Name", true);
        form.setFields(id, name);

        modelStepView = new FXModelsView();

        table.getSelectionModel().addSelectionChangeHandler(new SelectionChangeEvent.Handler() {
            @Override
            public void onSelectionChange(SelectionChangeEvent selectionChangeEvent) {
                form.clearValues();
                final FXTemplate template = selectionModel.getSelectedObject();

                if(template!=null)
                {
                    form.edit(template.asModelNode());

                    // update the model step views
                    modelStepView.setTemplate(template);
                }
            }
        });

        SimpleFormToolStrip formTools = new SimpleFormToolStrip(form, new SimpleFormToolStrip.FormCallback() {
            @Override
            public void onSave(Map<String, Object> changeset) {

                final FXTemplate template = selectionModel.getSelectedObject();
                final ModelNode modelNode = template.asModelNode();
                DMR.mergeChanges(modelNode, changeset);

                presenter.onUpdateTemplate(FXTemplate.fromModelNode(modelNode));
            }

            @Override
            public void onDelete(Object entity) {

            }
        }) ;

        VerticalPanel formLayout = new VerticalPanel();
        formLayout.setStyleName("fill-layout-width");
        formLayout.add(formTools.asWidget());
        formLayout.add(form.asWidget());

        MultipleToOneLayout layout = new MultipleToOneLayout()
                .setHeadline("Templates")
                .setPlain(true)
                .setDescription("UI Templates for generic model updates.")
                .setMaster("Available Templates", table)
                .setMasterTools(toolstrip)
                .setDetail("Detail", formLayout);


        pages.addPage(Console.CONSTANTS.common_label_back(), layout.build());
        pages.addPage("Models", modelStepView.asWidget());

        pages.showPage(0);

        return pages.asWidget();
    }

    public void setTemplates(Set<FXTemplate> fxTemplates) {
        form.clearValues();
        dataProvider.getList().clear();
        dataProvider.getList().addAll(fxTemplates);
        dataProvider.flush();
        table.selectDefaultEntity();
    }
}
TOP

Related Classes of org.jboss.as.console.client.tools.FXTemplatesView

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.