Package com.scriptographer.script

Source Code of com.scriptographer.script.LayoutConverter

/*
* Scriptographer
*
* This file is part of Scriptographer, a Scripting Plugin for Adobe Illustrator
* http://scriptographer.org/
*
* Copyright (c) 2002-2010, Juerg Lehni
* http://scratchdisk.com/
*
* All rights reserved. See LICENSE file for details.
*
* File created on Feb 12, 2008.
*/

package com.scriptographer.script;

import java.awt.BorderLayout;
import java.awt.LayoutManager;

import com.scratchdisk.script.ArgumentConverter;
import com.scratchdisk.script.ArgumentReader;
import com.scriptographer.adm.layout.HorizontalLayout;
import com.scriptographer.adm.layout.TableLayout;

/**
* @author lehni
*
*/
public class LayoutConverter extends ArgumentConverter<LayoutManager> {

  public LayoutManager convert(ArgumentReader reader, Object from) {
    if (reader.isArray()) {
      String str = reader.readString();
      if (str != null) {
        // See if it's an available alignment for FlowLayout
        if (HorizontalLayout.getAlignment(str) != null) {
          // FlowLayout
          return new HorizontalLayout(
              str,
              reader.readInteger(0),
              reader.readInteger(0));
        } else {
          // TableLayout
          return new TableLayout(str,
              reader.readString(""),
              reader.readInteger(0),
              reader.readInteger(0));
        }
      } else {
        reader.revert();
        // Try if there's an array now:
        Object[] array = reader.readObject(Object[].class);
        if (array != null) {
          // TableLayout
          return new TableLayout(array,
              reader.readObject(Object[].class),
              reader.readInteger(0),
              reader.readInteger(0));
        } else {
          reader.revert();
          // BorderLayout
          return new BorderLayout(
              reader.readInteger(0),
              reader.readInteger(0));
        }
      }
    } else if (reader.isMap()) {
      if (reader.has("columns")) {
        // TableLayout
        String str = reader.readString("columns");
        if (str != null) {
          return new TableLayoutstr,
              reader.readString("rows", ""),
              reader.readInteger("", 0),
              reader.readInteger(0));
        } else {
          Object[] array = reader.readObject("columns",
              Object[].class);
          if (array != null) {
            return new TableLayout(array,
                reader.readObject("rows", Object[].class),
                reader.readInteger("hgap", 0),
                reader.readInteger("vgap", 0));
          } else {
            throw new RuntimeException(
                "Unsupported format for TableLayout");
          }
        }
      } else if (reader.has("alignment")) {
        // FlowLayout
        String alignment = reader.readString("alignment");
        if (HorizontalLayout.getAlignment(alignment) != null) {
          return new HorizontalLayout(
              alignment,
              reader.readInteger("hgap", 0),
              reader.readInteger("vgap", 0));
        } else {
          throw new RuntimeException(
              "Unsupported alignment for FlowLayout: "
              + alignment);
        }
      } else {
        return new BorderLayout(
            reader.readInteger("hgap", 0),
            reader.readInteger("vgap", 0));
      }
    }
    return null;
  }
}
TOP

Related Classes of com.scriptographer.script.LayoutConverter

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.