Package com.vk.gwt.designer.client.ui.widget.vkSuggestBox

Source Code of com.vk.gwt.designer.client.ui.widget.vkSuggestBox.VkSuggestBoxEngine

/*
* Copyright 2011 Gaurav Saxena < gsaxena81 AT gmail.com >
*
* 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 com.vk.gwt.designer.client.ui.widget.vkSuggestBox;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.MultiWordSuggestOracle;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.vk.gwt.designer.client.api.component.IVkWidget;
import com.vk.gwt.designer.client.designer.VkAbstractWidgetEngine;
import com.vk.gwt.designer.client.designer.VkDesignerUtil;
import com.vk.gwt.designer.client.designer.VkDesignerUtil.IDialogCallback;
import com.vk.gwt.designer.client.designer.VkStateHelper;

public class VkSuggestBoxEngine extends VkAbstractWidgetEngine<VkSuggestBox> {
  private static final String ADD_SUGGESTION = "Add Suggestion";
  private static final String REMOVE_SUGGESTION = "Remove Suggestion";
  private static final String EDIT_SUGGESTION = "Edit Suggestion";
  @Override
  public VkSuggestBox getWidget() {
    VkSuggestBox widget = new VkSuggestBox();
    init(widget);
    return widget;
  }
  @Override
  public void applyAttribute(String attributeName, Widget invokingWidget) {
    final VkSuggestBox widget = (VkSuggestBox)invokingWidget;
    if(attributeName.equals(ADD_SUGGESTION))
    {
      final TextBox tb = new TextBox();
      tb.setWidth("300px");
      VkDesignerUtil.showAddTextAttributeDialog("Please edit the suggestion", tb
        , new IDialogCallback() {
          @Override
          public void save(String js) {
            MultiWordSuggestOracle oracle = (MultiWordSuggestOracle)widget.getSuggestOracle();
            oracle.add(tb.getText());
            widget.getSuggestions().add(tb.getText());
          }
        });
    }
    else if(attributeName.equals(REMOVE_SUGGESTION))
    {
      final ListBox listBox = new ListBox();
      listBox.setWidth("200px");
      int i = 0;
      for (Iterator<String> iterator = widget.getSuggestions().iterator(); iterator.hasNext();)
        listBox.addItem(iterator.next(),Integer.toString(i++));
      VkDesignerUtil.showAddListDialog("Pick a suggestion to delete", listBox
        , new IDialogCallback() {
          @Override
          public void save(String js) {
            MultiWordSuggestOracle oracle = (MultiWordSuggestOracle)widget.getSuggestOracle();
            oracle.clear();
            widget.getSuggestions().remove(listBox.getSelectedIndex());
            for (Iterator<String> iterator = widget.getSuggestions().iterator(); iterator.hasNext();)
              oracle.add(iterator.next());
          }
        });
    }
    else if(attributeName.equals(EDIT_SUGGESTION))
    {
      final ListBox listBox = new ListBox();
      listBox.setWidth("200px");
      int i = 0;
      for (Iterator<String> iterator = widget.getSuggestions().iterator(); iterator.hasNext();)
        listBox.addItem(iterator.next(),Integer.toString(i++));
      VkDesignerUtil.showAddListDialog("Pick a suggestion to delete", listBox
        , new IDialogCallback() {
          @Override
          public void save(String js) {
            final TextBox tb = new TextBox();
            tb.setText(widget.getSuggestions().get(listBox.getSelectedIndex()));
            tb.setWidth("300px");
            VkDesignerUtil.showAddTextAttributeDialog("Please edit the suggestion", tb
              , new IDialogCallback() {
                @Override
                public void save(String js) {
                  MultiWordSuggestOracle oracle = (MultiWordSuggestOracle)widget.getSuggestOracle();
                  oracle.clear();
                  widget.getSuggestions().remove(listBox.getSelectedIndex());
                  widget.getSuggestions().add(listBox.getSelectedIndex(), tb.getText());
                  for (Iterator<String> iterator = widget.getSuggestions().iterator(); iterator.hasNext();)
                    oracle.add(iterator.next());
                }
            });
          }
      });
    }
    VkStateHelper.getInstance().getEngine().applyAttribute(attributeName, invokingWidget);
  }
  @Override
  public List<String> getAttributesList(Widget invokingWidget)
  {
   
    List<String> list = new ArrayList<String>();
    list.add(ADD_SUGGESTION);
    list.add(EDIT_SUGGESTION);
    list.add(REMOVE_SUGGESTION);
    list.addAll(VkStateHelper.getInstance().getEngine().getAttributesList(invokingWidget));
    return list;
  }
  @Override
  public String serialize(IVkWidget widget)
  {
    VkSuggestBox suggestBox = (VkSuggestBox)widget;
    StringBuffer buffer = new StringBuffer("{");
    buffer.append("widgetName:'").append(widget.getWidgetName()).append("'");
    buffer.append(",style:'").append(VkDesignerUtil.getCssText((Widget) widget)).append("'");
    serializeAttributes(buffer, (Widget) widget);
    buffer.append(",suggestions:[");
    for(int i = 0; i < suggestBox.getSuggestions().size(); i++)
      buffer.append("'").append(suggestBox.getSuggestions().get(i)).append("',");
    if(buffer.charAt(buffer.length() - 1) == ',')
      buffer.deleteCharAt(buffer.length() - 1);
    buffer.append("]");
    buffer.append(",children:[").append("]}");
    return buffer.toString();
  }
  @Override
  public void buildWidget(JSONObject jsonObj, Widget parent) {
    VkSuggestBox suggestBox = (VkSuggestBox)parent;
    MultiWordSuggestOracle oracle = (MultiWordSuggestOracle)suggestBox.getSuggestOracle();
    JSONArray suggestionArray = jsonObj.get("suggestions").isArray();
    suggestBox.getSuggestions().clear();
    addAttributes(jsonObj, parent);
    for(int i = 0; i < suggestionArray.size(); i++)
    {
      String suggestion = suggestionArray.get(i).isString().stringValue();
      oracle.add(suggestion);
      suggestBox.getSuggestions().add(suggestion);
    }
  }
}
TOP

Related Classes of com.vk.gwt.designer.client.ui.widget.vkSuggestBox.VkSuggestBoxEngine

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.