Package ro.fortsoft.wicket.pivot.web

Source Code of ro.fortsoft.wicket.pivot.web.PivotConfigStoragePanel

package ro.fortsoft.wicket.pivot.web;

import java.util.ArrayList;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxLink;
import org.apache.wicket.ajax.markup.html.form.AjaxButton;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.markup.html.list.ListItem;
import org.apache.wicket.markup.html.list.ListView;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.Model;

import ro.fortsoft.wicket.pivot.PivotModel;
import ro.fortsoft.wicket.pivot.config.IPivotConfigStorage;
import ro.fortsoft.wicket.pivot.config.PivotConfig;

public class PivotConfigStoragePanel extends Panel {
  private static final long serialVersionUID = 1L;
  private IPivotConfigStorage pivotConfigStorage;
  private Model<ArrayList<String>> configNameModel;
  private ListView<String> configListView;

  public PivotConfigStoragePanel(String id, final PivotModel pivotModel, final IPivotConfigStorage pivotConfigStorage) {
    super(id);
    this.pivotConfigStorage = pivotConfigStorage;

    Form<Void> form = new Form<Void>("form");
    final TextField<String> configStoreName = new TextField<String>("configStoreName", new Model<String>(""));
    form.add(configStoreName);

    AjaxButton saveButton = new AjaxButton("save") {
      private static final long serialVersionUID = 1L;

      @Override
      protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
        String value = configStoreName.getValue();
        if (value == null || value.isEmpty())
          return;
        PivotConfig config = new PivotConfig();
        config.setName(value);
        config.storeModelState(pivotModel);
        pivotConfigStorage.saveConfig(config);
        ModalWindow.closeCurrent(target);
      }
    };
    form.add(saveButton);
    add(form);

    configNameModel = new Model<ArrayList<String>>();
    configListView = new ListView<String>("configs", configNameModel) {
      private static final long serialVersionUID = 1L;

      @Override
      protected void populateItem(final ListItem<String> item) {
        item.add(new Label("name", new Model<String>(item.getModelObject())));
        item.add(new AjaxLink<Void>("load") {
          private static final long serialVersionUID = 1L;

          @Override
          public void onClick(AjaxRequestTarget target) {
            PivotConfig config = pivotConfigStorage.loadConfig(item.getModelObject());
            if (config == null) {
              refreshList(target);
              return;
            }
            config.restoreModelState(pivotModel);
            ModalWindow.closeCurrent(target);
          }
        });
        item.add(new AjaxLink<Void>("delete") {
          private static final long serialVersionUID = 1L;

          @Override
          public void onClick(AjaxRequestTarget target) {
            pivotConfigStorage.deleteConfig(item.getModelObject());
            refreshList(target);
          }
        });
      }
    };
    setOutputMarkupId(true);
    add(configListView);
    refreshList(null);
  }

  private void refreshList(AjaxRequestTarget target) {
    configNameModel.setObject(new ArrayList<String>(pivotConfigStorage.listConfigNames()));
    if (target != null)
      target.add(this);
  }
}
TOP

Related Classes of ro.fortsoft.wicket.pivot.web.PivotConfigStoragePanel

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.