/* * 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 03.01.2005. */ package com.scriptographer.adm; import com.scratchdisk.util.IntegerEnumUtils; /** * @author lehni */ public class Frame extends TextItem implements ComponentGroup { public Frame(Dialog dialog) { super(dialog,ItemType.FRAME); setPadding(0, 0, 0, 0); } protected void updateAWTMargin(Border margin) { if (padding != null) { // Add padding to AWT margin super.updateAWTMargin(margin.add(padding)); // Remove padding from AWT bounds updateAWTBounds(bounds.subtract(padding)); } } public boolean hasText() { return this.getText().length() > 0; } public void setText(String text) { // Make sure we update padding if text changes Border padding = getPadding(); super.setText(text); setPadding(padding); } public FrameStyle getStyle() { return IntegerEnumUtils.get(FrameStyle.class, nativeGetStyle()); } public void setStyle(FrameStyle style) { if (style != null) nativeSetStyle(style.value); } private Border padding = null; protected static final Border PADDING_TEXT = new Border(10, 4, 5, 4); public Border getPadding() { Border border = new Border(padding); if (hasText()) border = border.subtract(PADDING_TEXT); return border; } public void setPadding(int top, int right, int bottom, int left) { padding = new Border(top, right, bottom, left); if (hasText()) padding = padding.add(PADDING_TEXT); // Update AWT margin, but only if it's used if (component != null) updateAWTMargin(margin); } public void setPadding(Border padding) { setPadding(padding.top, padding.right, padding.bottom, padding.left); } public void setPadding(int margin) { setPadding(margin, margin, margin, margin); } public void setPadding(int ver, int hor) { setPadding(ver, hor, ver, hor); } public int getPaddingLeft() { return padding.left; } public void setPaddingLeft(int left) { padding.left = left; } public int getPaddingTop() { return padding.top; } public void setPaddingTop(int top) { padding.top = top; } public int getPaddingRight() { return padding.right; } public void setPaddingRight(int right) { padding.right = right; } public int getPaddingBottom() { return padding.bottom; } public void setPaddingBottom(int bottom) { padding.bottom = bottom; } }