Package com.vk.gwt.designer.client.designer

Source Code of com.vk.gwt.designer.client.designer.ClipBoardHelper

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

import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.ui.UIObject;
import com.google.gwt.user.client.ui.Widget;
import com.vk.gwt.designer.client.api.component.IVkPanel;
import com.vk.gwt.designer.client.api.component.IVkWidget;

public class ClipBoardHelper implements IClipBoard {
  private boolean executeCutsRemoveCommand;
  private IVkWidget copyWidget;
  private IVkWidget copyStyleWidget;
  @Override
  public void copyWidget(IVkWidget widget) {
    copyWidget = widget;
  }
  @Override
  public void cutWidget(IVkWidget widget){
    copyWidget(widget);
    executeCutsRemoveCommand = true;
  }
  @Override
  public void pasteWidget(IVkPanel panel) {
    final boolean tempExecuteCutsRemoveCommand = executeCutsRemoveCommand;
    final IVkPanel tempInvokingWidget = panel;
    final IVkWidget tempCopyWidget = copyWidget;
    final IVkPanel prevParent = (IVkPanel) ((IVkWidget)tempCopyWidget).getVkParent();
    final Widget widget;           
    if(tempExecuteCutsRemoveCommand)
      widget = (Widget) tempCopyWidget;
    else {
      widget = VkStateHelper.getInstance().getEngine().getWidget((tempCopyWidget).getWidgetName());
      VkStateHelper.getInstance().getWidgetEngineMapping().getEngineMap().get(tempCopyWidget.getWidgetName()).deepClone((Widget)copyWidget, widget);
    }
    if(tempCopyWidget != null) {
      if(tempInvokingWidget instanceof IVkPanel) {
        final int top = VkDesignerUtil.getOffsetTop(((UIObject) widget).getElement());
        final int left = VkDesignerUtil.getOffsetLeft(((UIObject) widget).getElement());
        UndoHelper.getInstance().doCommand(new Command(){
          @Override
          public void execute() {
            widget.removeFromParent();
            VkStateHelper.getInstance().getEngine().addWidget(widget , ((IVkPanel)tempInvokingWidget), 8, 4);
          }}, new Command(){
              @Override
              public void execute() {
                if(tempExecuteCutsRemoveCommand) {
                  widget.removeFromParent();
                  VkStateHelper.getInstance().getEngine().addWidget(widget , prevParent, top, left);
                } else {
                  widget.removeFromParent();
                  VkStateHelper.getInstance().getToolbarHelper().hideToolbar();
                }
              }
            });
      }
    }
    executeCutsRemoveCommand = false;
  }
  @Override
  public void copyStyle(IVkWidget widget) {
    this.copyStyleWidget = widget;
  }
  @Override
  public void pasteStyle(IVkWidget widget) {
    String top = DOM.getStyleAttribute(((UIObject) widget).getElement(), "top");
    String left = DOM.getStyleAttribute(((UIObject) widget).getElement(), "left");
    VkDesignerUtil.setCssText((Widget) widget, VkDesignerUtil.getCssText((Widget) copyStyleWidget));
    DOM.setStyleAttribute(((UIObject) widget).getElement(), "left", left);
    DOM.setStyleAttribute(((UIObject) widget).getElement(), "top", top);
  }
  @Override
  public boolean isPasteWidgetPossible() {
    return copyWidget != null;
  }
  @Override
  public boolean isPasteStylePossible() {
    return copyStyleWidget != null;
  }
}
TOP

Related Classes of com.vk.gwt.designer.client.designer.ClipBoardHelper

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.