/* * 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.IntMap; import com.scratchdisk.util.IntegerEnumUtils; import com.scriptographer.ui.TextUnits; /** * @author lehni * * @jshide */ public abstract class TextValueItem extends ValueItem { protected TextValueItem(Dialog dialog, int handle, boolean isChild) { super(dialog, handle, isChild); } protected TextValueItem(Dialog dialog, ItemType type, int options) { super(dialog, type, options); } /* * item text accessors * */ public native void setText(String text); public native String getText(); private native void nativeSetJustification(int justification); private native int nativeGetJustification(); public void setJustification(TextJustification justification) { if (justification != null) nativeSetJustification(justification.value); } public TextJustification getJustification() { return IntegerEnumUtils.get(TextJustification.class, nativeGetJustification()); } // justify and units: useful for TextEdit and Static private native void nativeSetUnits(int units); private native int nativeGetUnits(); /* * ADMUnits to TextUnits lookup table */ private static IntMap<TextUnits> textUnitsLookup = new IntMap<TextUnits>(); static { textUnitsLookup.put(0, TextUnits.NONE); textUnitsLookup.put(1, TextUnits.POINT); textUnitsLookup.put(2, TextUnits.INCH); textUnitsLookup.put(3, TextUnits.MILLIMETER); textUnitsLookup.put(4, TextUnits.CENTIMETER); textUnitsLookup.put(5, TextUnits.PICA); textUnitsLookup.put(6, TextUnits.PERCENT); textUnitsLookup.put(7, TextUnits.DEGREE); textUnitsLookup.put(10, TextUnits.PIXEL); } public void setUnits(TextUnits units) { Integer key = textUnitsLookup.keyOf(units); nativeSetUnits(key != null ? key : 0); } public TextUnits getTextUnitsLookup() { TextUnits units = textUnitsLookup.get(nativeGetUnits()); return units != null ? units : TextUnits.NONE; } public native void setShowUnits(boolean showUnits); public native boolean getShowUnits(); public boolean isMultiline() { return type == ItemType.TEXT_EDIT_MULTILINE || type == ItemType.TEXT_EDIT_MULTILINE_READONLY // TODO: TEXT_STATIC appears to support multiline as well, // and TEXT_STATIC_MULTILINE is actually a disabled edit field // with scrollbars, so TextPane might need different options // or handling. || type == ItemType.TEXT_STATIC || type == ItemType.TEXT_STATIC_MULTILINE; } }