Package org.zkoss.zss.ui.au.in

Source Code of org.zkoss.zss.ui.au.in.MoveWidgetCommand

/* WidgetCommand.java

{{IS_NOTE
  Purpose:
   
  Description:
   
  History:
    Nov 18, 2011 5:20:37 PM , Created by sam
}}IS_NOTE

Copyright (C) 2011 Potix Corporation. All Rights Reserved.

{{IS_RIGHT
}}IS_RIGHT
*/
package org.zkoss.zss.ui.au.in;

import java.util.List;
import java.util.Map;

import org.zkoss.lang.Objects;
import org.zkoss.poi.ss.usermodel.Chart;
import org.zkoss.poi.ss.usermodel.Picture;
import org.zkoss.poi.ss.usermodel.ZssChartX;
import org.zkoss.poi.xssf.usermodel.XSSFClientAnchor;
import org.zkoss.zk.au.AuRequest;
import org.zkoss.zk.mesg.MZk;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.UiException;
import org.zkoss.zss.model.Ranges;
import org.zkoss.zss.model.Worksheet;
import org.zkoss.zss.model.impl.DrawingManager;
import org.zkoss.zss.model.impl.SheetCtrl;
import org.zkoss.zss.ui.Spreadsheet;

/**
* @author sam
*
*/
public class MoveWidgetCommand implements Command {

  @Override
  public void process(AuRequest request) {
    final Component comp = request.getComponent();
    if (comp == null)
      throw new UiException(MZk.ILLEGAL_REQUEST_COMPONENT_REQUIRED, this);
    final Map data = request.getData();
    if (data == null || data.size() != 11)
      throw new UiException(MZk.ILLEGAL_REQUEST_WRONG_DATA,
        new Object[] {Objects.toString(data), this});
   
    String type = (String) data.get("type");
    if ("onWidgetMove".equals(type) || "onWidgetSize".equals(type)) {
      processWidgetMove(((Spreadsheet) comp).getSelectedSheet(), data);
    }
  }

  private void processWidgetMove(Worksheet sheet, Map data) {
    String widgetType = (String) data.get("wgt");
    if ("chart".equals(widgetType)) {
      processChartMove(sheet, data);
    } else if ("image".equals(widgetType)) {
      processPictureMove(sheet, data);
    }
  }
 
  private void processChartMove(Worksheet sheet, Map data) {
    DrawingManager dm = ((SheetCtrl)sheet).getDrawingManager();
    String widgetId = (String) data.get("id");
    ZssChartX chartX = null;
    List<ZssChartX> charts = dm.getChartXs();
    for (ZssChartX c : charts) {
      if (c != null) {
        if (c.getChartId().equals(widgetId)) {
          chartX = c;
          break;
       
      }
    }
    Chart chart = chartX.getChart();
    if (chart != null) {
      int dx1 = (Integer) data.get("dx1");
      int dy1 = (Integer) data.get("dy1");
      int dx2 = (Integer) data.get("dx2");
      int dy2 = (Integer) data.get("dy2");
      int col1 = (Integer) data.get("col1");
      int row1 = (Integer) data.get("row1");
      int col2 = (Integer) data.get("col2");
      int row2 = (Integer) data.get("row2");
      Ranges.range(sheet).moveChart(chart,
          new XSSFClientAnchor(pxToEmu(dx1), pxToEmu(dy1), pxToEmu(dx2), pxToEmu(dy2), col1, row1, col2, row2));
    }
  }
 
  private void processPictureMove(Worksheet sheet, Map data) {
    DrawingManager dm = ((SheetCtrl)sheet).getDrawingManager();
    String widgetId = (String) data.get("id");
    Picture pic = null;
    List<Picture> pics = dm.getPictures();
    for (Picture p : pics) {
      if (p.getPictureId().equals(widgetId)) {
        pic = p;
        break;
      }
    }
    if (pic != null) {
      int dx1 = (Integer) data.get("dx1");
      int dy1 = (Integer) data.get("dy1");
      int dx2 = (Integer) data.get("dx2");
      int dy2 = (Integer) data.get("dy2");
      int col1 = (Integer) data.get("col1");
      int row1 = (Integer) data.get("row1");
      int col2 = (Integer) data.get("col2");
      int row2 = (Integer) data.get("row2");
      Ranges.range(sheet).movePicture(pic,
          new XSSFClientAnchor(pxToEmu(dx1), pxToEmu(dy1), pxToEmu(dx2), pxToEmu(dy2), col1, row1, col2, row2));
    }
  }
 
  public static int emuToPx(int emu) {
    return (int) Math.round(((double)emu) * 96 / 72 / 20 / 635); //assume 96dpi
  }
 
  /** convert pixel to EMU */
  public static int pxToEmu(int px) {
    return (int) Math.round(((double)px) * 72 * 20 * 635 / 96); //assume 96dpi
  }
}
TOP

Related Classes of org.zkoss.zss.ui.au.in.MoveWidgetCommand

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.