001: /*
002: * Copyright (c) 2004 JETA Software, Inc. All rights reserved.
003: *
004: * Redistribution and use in source and binary forms, with or without modification,
005: * are permitted provided that the following conditions are met:
006: *
007: * o Redistributions of source code must retain the above copyright notice,
008: * this list of conditions and the following disclaimer.
009: *
010: * o Redistributions in binary form must reproduce the above copyright notice,
011: * this list of conditions and the following disclaimer in the documentation
012: * and/or other materials provided with the distribution.
013: *
014: * o Neither the name of JETA Software nor the names of its contributors may
015: * be used to endorse or promote products derived from this software without
016: * specific prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
020: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
021: * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
022: * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
023: * INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
024: * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
025: * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
026: * INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
027: * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
028: */
029:
030: package com.jeta.forms.gui.beans.factories;
031:
032: import java.awt.Component;
033:
034: import javax.swing.AbstractButton;
035: import javax.swing.SwingConstants;
036:
037: import com.jeta.forms.gui.beans.BeanProperties;
038: import com.jeta.forms.gui.beans.JETABean;
039: import com.jeta.forms.gui.common.FormException;
040: import com.jeta.forms.store.properties.TransformOptionsProperty;
041:
042: /**
043: * Factory for instantiating a JETABean that contains an AbstractButton and its
044: * associated properties.
045: *
046: * @author Jeff Tassin
047: */
048: public class AbstractButtonFactory extends JComponentBeanFactory {
049: /**
050: * Creates an <code>AbstractButtonFactory</code> instance.
051: */
052: public AbstractButtonFactory(Class btnclass) {
053: super (btnclass);
054: }
055:
056: /**
057: * Defines the custom properties and default values for those properties for
058: * an AbstractButton.
059: *
060: * @param props
061: * used to register any custom properties.
062: */
063: public void defineProperties(BeanProperties props) {
064: super .defineProperties(props);
065:
066: TransformOptionsProperty hprop = new TransformOptionsProperty(
067: "horizontalAlignment",
068: "getHorizontalAlignment",
069: "setHorizontalAlignment",
070: new Object[][] {
071: { "LEFT", new Integer(SwingConstants.LEFT) },
072: { "CENTER", new Integer(SwingConstants.CENTER) },
073: { "RIGHT", new Integer(SwingConstants.RIGHT) },
074: { "LEADING",
075: new Integer(SwingConstants.LEADING) },
076: { "TRAILING",
077: new Integer(SwingConstants.TRAILING) } });
078:
079: TransformOptionsProperty htprop = new TransformOptionsProperty(
080: "horizontalTextPosition",
081: "getHorizontalTextPosition",
082: "setHorizontalTextPosition",
083: new Object[][] {
084: { "LEFT", new Integer(SwingConstants.LEFT) },
085: { "CENTER", new Integer(SwingConstants.CENTER) },
086: { "RIGHT", new Integer(SwingConstants.RIGHT) },
087: { "LEADING",
088: new Integer(SwingConstants.LEADING) },
089: { "TRAILING",
090: new Integer(SwingConstants.TRAILING) } });
091:
092: TransformOptionsProperty vprop = new TransformOptionsProperty(
093: "verticalAlignment",
094: "getVerticalAlignment",
095: "setVerticalAlignment",
096: new Object[][] {
097: { "TOP", new Integer(SwingConstants.TOP) },
098: { "CENTER", new Integer(SwingConstants.CENTER) },
099: { "BOTTOM", new Integer(SwingConstants.BOTTOM) } });
100:
101: TransformOptionsProperty vtprop = new TransformOptionsProperty(
102: "verticalTextPosition",
103: "getVerticalTextPosition",
104: "setVerticalTextPosition",
105: new Object[][] {
106: { "TOP", new Integer(SwingConstants.TOP) },
107: { "CENTER", new Integer(SwingConstants.CENTER) },
108: { "BOTTOM", new Integer(SwingConstants.BOTTOM) } });
109:
110: hprop.setPreferred(false);
111: htprop.setPreferred(false);
112: vprop.setPreferred(false);
113: vtprop.setPreferred(false);
114: props.register(hprop);
115: props.register(htprop);
116: props.register(vprop);
117: props.register(vtprop);
118:
119: /**
120: * getLabel/setLabel is deprecated in AbstactButton, so we don't need it
121: * in the designer
122: */
123: props.removeProperty("label");
124: }
125:
126: /**
127: * BeanFactory implementation. Override from JComponentBeanFactory because
128: * we want to set the text property of the button when it is created.
129: *
130: * @param compName
131: * the name to assign to this component by calling
132: * Component.setName
133: * @param instantiateBean
134: * set to true if the underlying Java Bean should be instantiated
135: * as well. During deserialization we don't want to do this
136: * because the BeanDeserializer will create the JavaBean for us.
137: * @param setDefaults
138: * sets default properties for the bean. If false, no properties
139: * will be set (e.g. the text for a JButton)
140: * @return the newly instantiated JETABean
141: */
142: public JETABean createBean(String compName,
143: boolean instantiateBean, boolean setDefaults)
144: throws FormException {
145: JETABean jbean = super .createBean(compName, instantiateBean,
146: setDefaults);
147: Component comp = jbean.getDelegate();
148: if (comp instanceof AbstractButton && setDefaults) {
149: AbstractButton btn = (AbstractButton) comp;
150: btn.setText(getShortBeanClassName());
151: }
152: return jbean;
153: }
154: }
|