Package com.vk.gwt.designer.client.ui.panel.vkDeckPanel

Source Code of com.vk.gwt.designer.client.ui.panel.vkDeckPanel.VkDeckPanelEngine

/*
* 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.panel.vkDeckPanel;

import java.util.List;

import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Widget;
import com.vk.gwt.designer.client.api.attributes.HasVkClickHandler;
import com.vk.gwt.designer.client.api.attributes.HasVkText;
import com.vk.gwt.designer.client.api.component.IVkPanel;
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.IMultipleWidgetDialogCallback;
import com.vk.gwt.designer.client.designer.VkMainDrawingPanel;
import com.vk.gwt.designer.client.designer.VkStateHelper;
import com.vk.gwt.designer.client.ui.widget.button.vkButton.VkButton;
import com.vk.gwt.designer.client.ui.widget.label.vkLabel.VkLabel;
import com.vk.gwt.designer.client.ui.widget.vkImage.VkImage;

public class VkDeckPanelEngine extends VkAbstractWidgetEngine<VkDeckPanel>{
  private final static String ADD_ASSOCIATED_WIDGET = "Add associated widget";
  @Override
  public VkDeckPanel getWidget() {
    VkDeckPanel widget = new VkDeckPanel();
    init(widget);
    return widget;
  }
  @Override
  public void applyAttribute(String attributeName, final Widget invokingWidget){
    if(attributeName.equals(ADD_ASSOCIATED_WIDGET)){
      final ListBox widgetListBox = new ListBox();
      widgetListBox.addItem(VkLabel.NAME);
      widgetListBox.addItem(VkButton.NAME);
      widgetListBox.addItem(VkImage.NAME);
      VkDeckPanel deck =(VkDeckPanel)invokingWidget;
      final ListBox pageListBox = new ListBox();
      DOM.setStyleAttribute(pageListBox.getElement(), "marginTop", "10px");
      for(int i = 0, len = deck.getWidgetCount(); i < len; i++)
        pageListBox.addItem("Page " + i);
      if(pageListBox.getItemCount() > 0) {
        VkDesignerUtil.showAddWidgetsDialog("Choose associated widget", new IMultipleWidgetDialogCallback() {
          @Override
          public void save() {
            Widget widget = VkStateHelper.getInstance().getEngine().addWidget(widgetListBox.getItemText(widgetListBox.getSelectedIndex()), VkMainDrawingPanel.getInstance());
            if(widget instanceof HasVkText)
              ((HasVkText) widget).setText(pageListBox.getItemText(pageListBox.getSelectedIndex()));
            else
              widget.getElement().setTitle(pageListBox.getItemText(pageListBox.getSelectedIndex()));
            ((HasVkClickHandler)widget).addClickHandler("&(" + invokingWidget.getElement().getId() + ").showWidget(" + pageListBox.getSelectedIndex() + ");");
          }
        }, widgetListBox, pageListBox);
      } else
        Window.alert("Deck panel doesn't contain any widgets");
    } else
      super.applyAttribute(attributeName, invokingWidget);
  }
  public List<String> getAttributesList(Widget invokingWidget){
    List<String> attributesList = super.getAttributesList(invokingWidget);
    attributesList.add(ADD_ASSOCIATED_WIDGET);
    return attributesList;
  }
  @Override
  public void buildWidget(JSONObject jsonObj, Widget parent) {
    JSONArray childrenArray = jsonObj.put("children", null).isArray();
    for(int i = 0; i < childrenArray.size(); i++) {
      JSONObject childObj = childrenArray.get(i).isObject();
      if(childObj == null)
        return;
      JSONString widgetName = childObj.get("widgetName").isString();
      Widget widget = VkStateHelper.getInstance().getEngine().getWidget(widgetName.stringValue());
      VkStateHelper.getInstance().getEngine().addWidget(widget, ((IVkPanel)parent));
      VkStateHelper.getInstance().getWidgetEngineMapping().getEngineMap().get(((IVkWidget)widget).getWidgetName()).buildWidget(childObj, widget);
    }
    addAttributes(jsonObj, parent);
  }
}
TOP

Related Classes of com.vk.gwt.designer.client.ui.panel.vkDeckPanel.VkDeckPanelEngine

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.