src/main/java/xelfi/design/components/xawt/XTextField.java
author Jaroslav Tulach <jaroslav.tulach@xelfi.cz>
Tue, 17 Jan 2017 21:08:47 +0100
changeset 6 947ce1156833
parent 0 189280700bc7
permissions -rw-r--r--
Renaming setName to setDesignName and setSize to setDesignSize to avoid clash with added methods of java.awt.Component that return void
jaroslav@0
     1
/**
jaroslav@0
     2
* Xelfi
jaroslav@0
     3
*/
jaroslav@0
     4
jaroslav@0
     5
package xelfi.design.components.xawt;
jaroslav@0
     6
jaroslav@0
     7
/**
jaroslav@0
     8
  *
jaroslav@0
     9
  * @version 	2.12, 03 Apr 1997
jaroslav@0
    10
  * @author 	Petr Hamernik, Ian Formanek
jaroslav@0
    11
  *
jaroslav@0
    12
  */
jaroslav@0
    13
jaroslav@0
    14
import java.awt.*;
jaroslav@0
    15
import java.io.*;
jaroslav@0
    16
import xelfi.design.components.*;
jaroslav@0
    17
import xelfi.design.components.property.*;
jaroslav@0
    18
import xelfi.design.forms.XelfiDesignForm;
jaroslav@0
    19
import xelfi.design.util.XFDesignConstants;
jaroslav@0
    20
import xelfi.design.util.XFDesignOptions;
jaroslav@0
    21
import xelfi.design.util.XFDesignUtils;
jaroslav@0
    22
jaroslav@0
    23
public class XTextField extends XAWTPanel {
jaroslav@0
    24
	private TextField text;
jaroslav@0
    25
	private static int propertyCount = 13;
jaroslav@0
    26
	private Object propDef[];
jaroslav@0
    27
	private boolean propDefSet = false;
jaroslav@0
    28
	private static int eventCount = 6;
jaroslav@0
    29
	private String events[] = new String[eventCount];
jaroslav@0
    30
	protected static Image icon = null;
jaroslav@0
    31
jaroslav@0
    32
	public XTextField() { 
jaroslav@0
    33
		super(XAWTPanel.WITH_DRAGBORDER);
jaroslav@0
    34
		setComponent(text = new TextField());
jaroslav@0
    35
		propDef = new Object[propertyCount];
jaroslav@0
    36
		for (int i=0; i<propertyCount; i++)
jaroslav@0
    37
			propDef[i] = null;
jaroslav@0
    38
		if (icon == null)
jaroslav@0
    39
			icon = loadIcon("textfield.gif");
jaroslav@0
    40
	}
jaroslav@0
    41
jaroslav@0
    42
	protected void regenForm(int what) {
jaroslav@0
    43
		if (parentForm != null)
jaroslav@0
    44
			parentForm.regenerateCode(this, what);
jaroslav@0
    45
	}
jaroslav@0
    46
jaroslav@0
    47
	public String[] neededImports() {
jaroslav@0
    48
		String[] ret = new String[1];
jaroslav@0
    49
		ret[0] = "java.awt.TextField";
jaroslav@0
    50
		return ret;
jaroslav@0
    51
	}
jaroslav@0
    52
jaroslav@0
    53
	public Image getIcon() {
jaroslav@0
    54
		return icon; 
jaroslav@0
    55
	}
jaroslav@0
    56
jaroslav@0
    57
	public boolean handleEvent(Event evt) {
jaroslav@0
    58
		boolean b = super.handleEvent(evt);
jaroslav@0
    59
		if (XFDesignOptions.designMode == XFDesignConstants.DM_REAL)
jaroslav@0
    60
			return b;
jaroslav@0
    61
		return b;
jaroslav@0
    62
	}
jaroslav@0
    63
jaroslav@0
    64
	private boolean propertyDefault(int i) throws XFPropertyIndexOutOfBoundsException {
jaroslav@0
    65
		if (propDefSet)
jaroslav@0
    66
			propertiesSetDefault();
jaroslav@0
    67
		if (propDef[i] == null)
jaroslav@0
    68
			return false;
jaroslav@0
    69
		switch (i) {
jaroslav@0
    70
			case 0: return ((Color) propDef[i]).equals(text.getBackground());
jaroslav@0
    71
			case 1: return ((Color) propDef[i]).equals(text.getForeground());
jaroslav@0
    72
			case 2: return (((Boolean) propDef[i]).booleanValue() == text.isEnabled());
jaroslav@0
    73
			case 3: return (((Boolean) propDef[i]).booleanValue() == bVisible);
jaroslav@0
    74
			case 4: return ((Font) propDef[i]).equals(text.getFont());
jaroslav@0
    75
			case 5: return ((String) propDef[i]).equals(text.getText());
jaroslav@0
    76
			case 6: return (((Boolean) propDef[i]).booleanValue() == autoSize);
jaroslav@0
    77
			case 7: return (((Boolean) propDef[i]).booleanValue() == parentColor);
jaroslav@0
    78
			case 8: return (((Boolean) propDef[i]).booleanValue() == parentFont);
jaroslav@0
    79
			case 9: return (((Integer) propDef[i]).intValue() == text.getSelectionStart());
jaroslav@0
    80
			case 10: return (((Integer) propDef[i]).intValue() == text.getSelectionEnd());
jaroslav@0
    81
			case 11: return (((Boolean) propDef[i]).booleanValue() == text.isEditable());
jaroslav@0
    82
			case 12: return (((Character) propDef[i]).charValue() == text.getEchoChar());
jaroslav@0
    83
			default: throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
    84
		}
jaroslav@0
    85
	}
jaroslav@0
    86
jaroslav@0
    87
	private void propertiesSetDefault() {
jaroslav@0
    88
		if (propDefSet)
jaroslav@0
    89
			return;
jaroslav@0
    90
		propDefSet = true;
jaroslav@0
    91
		if (text.getBackground() != null)
jaroslav@0
    92
				propDef[0] = new Color(text.getBackground().getRGB());
jaroslav@0
    93
		if (text.getForeground() != null)
jaroslav@0
    94
				propDef[1] = new Color(text.getForeground().getRGB());
jaroslav@0
    95
		propDef[2] = new Boolean(text.isEnabled());
jaroslav@0
    96
		propDef[3] = new Boolean(bVisible);
jaroslav@0
    97
		if (text.getFont() != null)
jaroslav@0
    98
			propDef[4] = new Font(text.getFont().getName(),text.getFont().getStyle(),text.getFont().getSize());
jaroslav@0
    99
		propDef[5] = new String("");
jaroslav@0
   100
		propDef[6] = new Boolean(autoSize);
jaroslav@0
   101
		propDef[7] = new Boolean(parentColor);
jaroslav@0
   102
		propDef[8] = new Boolean(parentFont);
jaroslav@0
   103
		propDef[9] = new Integer(text.getSelectionStart());
jaroslav@0
   104
		propDef[10] = new Integer(text.getSelectionEnd());
jaroslav@0
   105
		propDef[11] = new Boolean(text.isEditable());
jaroslav@0
   106
		propDef[12] = new Character(text.getEchoChar());
jaroslav@0
   107
	}
jaroslav@0
   108
jaroslav@0
   109
	public int getPropertyCount() { return propertyCount; }
jaroslav@0
   110
	
jaroslav@0
   111
	public Object getProperty(int index) throws XFPropertyIndexOutOfBoundsException { 
jaroslav@0
   112
		switch (index) {
jaroslav@0
   113
			case 0: return text.getBackground();
jaroslav@0
   114
			case 1: return text.getForeground();
jaroslav@0
   115
			case 2: return (text.isEnabled()) ? Boolean.TRUE : Boolean.FALSE;
jaroslav@0
   116
			case 3: return (bVisible) ? Boolean.TRUE : Boolean.FALSE;
jaroslav@0
   117
			case 4: return text.getFont();
jaroslav@0
   118
			case 5: return text.getText();
jaroslav@0
   119
			case 6: return (autoSize) ? Boolean.TRUE : Boolean.FALSE;
jaroslav@0
   120
			case 7: return (parentColor) ? Boolean.TRUE : Boolean.FALSE;
jaroslav@0
   121
			case 8: return (parentFont) ? Boolean.TRUE : Boolean.FALSE;
jaroslav@0
   122
			case 9: return new Integer(text.getSelectionStart());
jaroslav@0
   123
			case 10: return new Integer(text.getSelectionEnd());
jaroslav@0
   124
			case 11: return (text.isEditable()) ? Boolean.TRUE : Boolean.FALSE;
jaroslav@0
   125
			case 12: return new Character(text.getEchoChar());
jaroslav@0
   126
			default: throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   127
		}
jaroslav@0
   128
	}
jaroslav@0
   129
			
jaroslav@0
   130
	public String[] getPropertyNames() { 
jaroslav@0
   131
		String list[] = new String[propertyCount];
jaroslav@0
   132
		list[0] = "Background Color";
jaroslav@0
   133
		list[1] = "Foreground Color";
jaroslav@0
   134
		list[2] = "Enabled";
jaroslav@0
   135
		list[3] = "Visible";
jaroslav@0
   136
		list[4] = "Font";
jaroslav@0
   137
		list[5] = "Text";
jaroslav@0
   138
		list[6] = "Auto Size";
jaroslav@0
   139
		list[7] = "Parent Color";
jaroslav@0
   140
		list[8] = "Parent Font";
jaroslav@0
   141
		list[9] = "Selection Start";
jaroslav@0
   142
		list[10] = "Selection End";
jaroslav@0
   143
		list[11] = "Editable";
jaroslav@0
   144
		list[12] = "Echo Char";
jaroslav@0
   145
		return list;
jaroslav@0
   146
	}
jaroslav@0
   147
		
jaroslav@0
   148
	public String getPropertyString(int index) throws 
jaroslav@0
   149
		XFPropertyIndexOutOfBoundsException { 
jaroslav@0
   150
		switch (index) {
jaroslav@0
   151
			case 0: 
jaroslav@0
   152
			case 1: return XColorPropertyType.viewString(getProperty(index));
jaroslav@0
   153
			case 2:
jaroslav@0
   154
			case 3: return XBooleanPropertyType.viewString(getProperty(index));
jaroslav@0
   155
			case 4: return XFontPropertyType.viewString(getProperty(index));
jaroslav@0
   156
			case 5: return XStringPropertyType.viewString(getProperty(index));
jaroslav@0
   157
			case 6: 
jaroslav@0
   158
			case 7: 
jaroslav@0
   159
			case 8: return XBooleanPropertyType.viewString(getProperty(index));
jaroslav@0
   160
			case 9:
jaroslav@0
   161
			case 10: return XIntegerPropertyType.viewString(getProperty(index));
jaroslav@0
   162
			case 11: return XBooleanPropertyType.viewString(getProperty(index));
jaroslav@0
   163
			case 12: return XCharacterPropertyType.viewString(getProperty(index));
jaroslav@0
   164
			default: throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   165
		}
jaroslav@0
   166
	}
jaroslav@0
   167
jaroslav@0
   168
	public int getPropertyViewerType(int index) throws 
jaroslav@0
   169
		XFPropertyIndexOutOfBoundsException {
jaroslav@0
   170
		switch (index) {
jaroslav@0
   171
			case 0: 
jaroslav@0
   172
			case 1: return XFDesignConstants.PVT_SPECIAL;
jaroslav@0
   173
			case 2:
jaroslav@0
   174
			case 3: return XFDesignConstants.PVT_CHECK;
jaroslav@0
   175
			case 4: return XFDesignConstants.PVT_SPECIAL;
jaroslav@0
   176
			case 5: return XFDesignConstants.PVT_INPUT_STRING;
jaroslav@0
   177
			case 6: 
jaroslav@0
   178
			case 7: 
jaroslav@0
   179
			case 8: return XFDesignConstants.PVT_CHECK;
jaroslav@0
   180
			case 9:
jaroslav@0
   181
			case 10: return XFDesignConstants.PVT_INPUT_INT;
jaroslav@0
   182
			case 11: return XFDesignConstants.PVT_CHECK;
jaroslav@0
   183
			case 12: return XFDesignConstants.PVT_INPUT_CHAR;
jaroslav@0
   184
			default: throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   185
		}
jaroslav@0
   186
	}
jaroslav@0
   187
jaroslav@0
   188
	public String[] getPropertyValueNames(int index) throws 
jaroslav@0
   189
		XFPropertyIndexOutOfBoundsException {
jaroslav@0
   190
		switch (index) {
jaroslav@0
   191
			default: throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   192
		}
jaroslav@0
   193
	}
jaroslav@0
   194
jaroslav@0
   195
	public Object[] getPropertyValueValues(int index) throws 
jaroslav@0
   196
		XFPropertyIndexOutOfBoundsException {
jaroslav@0
   197
		switch (index) {
jaroslav@0
   198
			default: throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   199
		}
jaroslav@0
   200
	}
jaroslav@0
   201
jaroslav@0
   202
	public int setProperty(int index, Object value) throws 	
jaroslav@0
   203
		XFPropertyIndexOutOfBoundsException,
jaroslav@0
   204
		XFPropertyBadValueTypeException 
jaroslav@0
   205
	{ 
jaroslav@0
   206
		int ret = XFDesignConstants.RSP_OK;
jaroslav@0
   207
		int regen = XFDesignConstants.GEN_SETPROPS;
jaroslav@0
   208
		if (!propDefSet)
jaroslav@0
   209
			propertiesSetDefault();
jaroslav@0
   210
		switch (index) { 
jaroslav@0
   211
			case 0: if (!(value instanceof Color)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   212
					text.setBackground((Color)value);
jaroslav@0
   213
					ret = ret | XFDesignConstants.RSP_REPAINT_COMP;
jaroslav@0
   214
					text.hide();
jaroslav@0
   215
					text.show();
jaroslav@0
   216
					if (parentColor) {
jaroslav@0
   217
						parentColor = false;
jaroslav@0
   218
						ret = ret | XFDesignConstants.RSP_OTHER_PROP;
jaroslav@0
   219
					}
jaroslav@0
   220
					break;
jaroslav@0
   221
			case 1:	if (!(value instanceof Color)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   222
					text.setForeground((Color)value);
jaroslav@0
   223
					ret = ret | XFDesignConstants.RSP_REPAINT_COMP;
jaroslav@0
   224
					text.hide();
jaroslav@0
   225
					text.show();
jaroslav@0
   226
					if (parentColor) {
jaroslav@0
   227
						parentColor = false;
jaroslav@0
   228
						ret = ret | XFDesignConstants.RSP_OTHER_PROP;
jaroslav@0
   229
					}
jaroslav@0
   230
					break;
jaroslav@0
   231
			case 2:	if (!(value instanceof Boolean)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   232
					text.enable(((Boolean)value).booleanValue());
jaroslav@0
   233
					break;
jaroslav@0
   234
			case 3: if (!(value instanceof Boolean)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   235
					bVisible = ((Boolean)value).booleanValue();
jaroslav@0
   236
					break;
jaroslav@0
   237
			case 4: if (!(value instanceof Font)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   238
					text.setFont((Font)value); 
jaroslav@0
   239
					ret = ret | XFDesignConstants.RSP_REPAINT_COMP | XFDesignConstants.RSP_OTHER_PROP;
jaroslav@0
   240
					if (parentFont) {
jaroslav@0
   241
						parentFont = false;
jaroslav@0
   242
						if (autoSize) {
jaroslav@6
   243
							setDesignSize(0,0);
jaroslav@0
   244
							regen = regen | XFDesignConstants.GEN_RESHAPE;
jaroslav@0
   245
						}
jaroslav@0
   246
					}
jaroslav@0
   247
					repaintComponent();
jaroslav@0
   248
					break;
jaroslav@0
   249
			case 5: if (!(value instanceof String)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   250
					text.setText((String)value);
jaroslav@0
   251
					if (autoSize) {
jaroslav@6
   252
						setDesignSize(0,0);
jaroslav@0
   253
						regen = regen | XFDesignConstants.GEN_RESHAPE;
jaroslav@0
   254
						ret = ret | XFDesignConstants.RSP_REPAINT_COMP;
jaroslav@0
   255
						ret = ret | XFDesignConstants.RSP_OTHER_PROP;
jaroslav@0
   256
					}
jaroslav@0
   257
					repaintComponent();
jaroslav@0
   258
					break;
jaroslav@0
   259
			case 6:	if (!(value instanceof Boolean)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   260
					setAutoSize(((Boolean)value).booleanValue());
jaroslav@0
   261
					if (autoSize) {
jaroslav@0
   262
						repaintComponent();
jaroslav@6
   263
						setDesignSize(0,0);
jaroslav@0
   264
						ret = ret | XFDesignConstants.RSP_OTHER_PROP;
jaroslav@0
   265
					}
jaroslav@0
   266
					regen = regen | XFDesignConstants.GEN_RESHAPE;
jaroslav@0
   267
					ret = ret | XFDesignConstants.RSP_REPAINT_COMP;
jaroslav@0
   268
					break;
jaroslav@0
   269
			case 7:	if (!(value instanceof Boolean)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   270
					setParentColor(((Boolean)value).booleanValue());
jaroslav@0
   271
					if (parentColor)
jaroslav@0
   272
						ret = ret | XFDesignConstants.RSP_REPAINT_COMP;
jaroslav@0
   273
					break;
jaroslav@0
   274
			case 8: if (!(value instanceof Boolean)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   275
					setParentFont(((Boolean)value).booleanValue());
jaroslav@0
   276
					if (parentFont)
jaroslav@0
   277
						ret = ret | XFDesignConstants.RSP_REPAINT_COMP;
jaroslav@0
   278
					if (autoSize)
jaroslav@0
   279
					 	ret = ret | XFDesignConstants.RSP_OTHER_PROP;
jaroslav@0
   280
					break;
jaroslav@0
   281
			case 9: if (!(value instanceof Integer)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   282
					text.select(((Integer)value).intValue(), text.getSelectionEnd());
jaroslav@0
   283
					ret = ret | XFDesignConstants.RSP_OTHER_PROP;
jaroslav@0
   284
					break;
jaroslav@0
   285
			case 10: if (!(value instanceof Integer)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   286
					text.select(text.getSelectionStart(), ((Integer)value).intValue());
jaroslav@0
   287
					ret = ret | XFDesignConstants.RSP_OTHER_PROP;
jaroslav@0
   288
					break;
jaroslav@0
   289
			case 11: if (!(value instanceof Boolean)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   290
					text.setEditable(((Boolean)value).booleanValue());
jaroslav@0
   291
					break;
jaroslav@0
   292
			case 12: if (!(value instanceof Character)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   293
					text.setEchoCharacter(((Character)value).charValue());
jaroslav@0
   294
					break;
jaroslav@0
   295
			default: throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   296
		}
jaroslav@0
   297
		regenForm(regen);
jaroslav@0
   298
		
jaroslav@0
   299
		return ret;
jaroslav@0
   300
	}
jaroslav@0
   301
			
jaroslav@0
   302
	public void specialPropertyInput(Frame parent, int index) throws 	
jaroslav@0
   303
		XFPropertyIndexOutOfBoundsException, 
jaroslav@0
   304
		XFPropertyNoSpecialInputException { 
jaroslav@0
   305
		if ((index < 0) || (index >= propertyCount)) throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   306
		switch (index) { 
jaroslav@0
   307
			case 0:
jaroslav@0
   308
			case 1: XColorPropertyType.invokeSpecialInput(parent, this, index);
jaroslav@0
   309
						break;
jaroslav@0
   310
			case 4: XFontPropertyType.invokeSpecialInput(parent, this, index);
jaroslav@0
   311
						break;
jaroslav@0
   312
			default: throw new XFPropertyNoSpecialInputException();
jaroslav@0
   313
		}
jaroslav@0
   314
	}
jaroslav@0
   315
jaroslav@0
   316
	public int getEventCount() {
jaroslav@0
   317
		return eventCount;
jaroslav@0
   318
	}
jaroslav@0
   319
jaroslav@0
   320
	public String[] getEventNames() {
jaroslav@0
   321
		String list[] = new String[eventCount];
jaroslav@0
   322
		list[0] = "OnGotFocus";
jaroslav@0
   323
		list[1] = "OnLostFocus";
jaroslav@0
   324
		list[2] = "OnKeyAction";
jaroslav@0
   325
		list[3] = "OnKeyActionRelease";
jaroslav@0
   326
		list[4] = "OnPress";
jaroslav@0
   327
		list[5] = "OnRelease";
jaroslav@0
   328
		return list;
jaroslav@0
   329
	}
jaroslav@0
   330
jaroslav@0
   331
	public String getEvent(int index) throws 
jaroslav@0
   332
		XFPropertyIndexOutOfBoundsException {
jaroslav@0
   333
		if ((index>=0) && (index<eventCount)) {
jaroslav@0
   334
			if (events[index] == null)
jaroslav@0
   335
				return null;
jaroslav@0
   336
			else
jaroslav@0
   337
				return new String(events[index]); 
jaroslav@0
   338
		}
jaroslav@0
   339
		else throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   340
	}		
jaroslav@0
   341
		
jaroslav@0
   342
	public void setEvent(int index, String value) throws 
jaroslav@0
   343
		XFPropertyIndexOutOfBoundsException {
jaroslav@0
   344
		if ((index>=0) && (index<eventCount))
jaroslav@0
   345
			events[index] = value;
jaroslav@0
   346
		else throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   347
	}		
jaroslav@0
   348
jaroslav@0
   349
	public String getClassName() {
jaroslav@0
   350
		return "TextField";
jaroslav@0
   351
	}
jaroslav@0
   352
	
jaroslav@0
   353
	public String generateCode(int what) {
jaroslav@0
   354
		String gen = "";
jaroslav@0
   355
		switch (what) {
jaroslav@0
   356
			case XFDesignConstants.GEN_VARIABLE: 
jaroslav@0
   357
				gen = getClassName()+" "+ name + ";\n";
jaroslav@0
   358
				break;
jaroslav@0
   359
			case XFDesignConstants.GEN_INIT: 
jaroslav@0
   360
				gen = name + " = new " + getClassName() + "();\n";
jaroslav@0
   361
				break;
jaroslav@0
   362
			case XFDesignConstants.GEN_SETPROPS:
jaroslav@0
   363
				if (!propDefSet)
jaroslav@0
   364
					propertiesSetDefault();
jaroslav@0
   365
				for (int i = 0; i < propertyCount; i++) {
jaroslav@0
   366
					if (!propertyDefault(i)) {
jaroslav@0
   367
						switch(i) {
jaroslav@0
   368
							case 0: if (!parentColor)
jaroslav@0
   369
										gen = gen + name + ".setBackground(" +
jaroslav@0
   370
											XFDesignUtils.genColor(text.getBackground()) + ");\n";
jaroslav@0
   371
									break;
jaroslav@0
   372
							case 1: if (!parentColor)
jaroslav@0
   373
										gen = gen + name + ".setForeground(" +
jaroslav@0
   374
											XFDesignUtils.genColor(text.getForeground()) + ");\n";
jaroslav@0
   375
									break;
jaroslav@0
   376
							case 2: gen = gen + name + (text.isEnabled() ? ".enable();\n" : ".disable();\n");
jaroslav@0
   377
									break;
jaroslav@0
   378
							case 3: gen = gen + name + ((bVisible) ? ".show();\n" : ".hide();\n");
jaroslav@0
   379
									break;
jaroslav@0
   380
							case 4: if (!parentFont) {
jaroslav@0
   381
										gen = gen + name + ".setFont(" + 
jaroslav@0
   382
											XFDesignUtils.genFont(text.getFont())+");\n";
jaroslav@0
   383
									}
jaroslav@0
   384
									break;
jaroslav@0
   385
							case 5: gen = gen + name + ".setText(\"" + text.getText() + "\");\n";
jaroslav@0
   386
									break;
jaroslav@0
   387
							case 9: 
jaroslav@0
   388
							case 10: if ((i == 9) || ((i == 10) && (!propertyDefault(9))))
jaroslav@0
   389
										if (text.getSelectionStart() != text.getSelectionEnd())
jaroslav@0
   390
											gen = gen + name + ".select(" + text.getSelectionStart() +
jaroslav@0
   391
												"," + text.getSelectionEnd() + ");\n";
jaroslav@0
   392
									break;
jaroslav@0
   393
							case 11: gen = gen + name + ".setEditable(" + text.isEditable() + ");\n";
jaroslav@0
   394
									break;
jaroslav@0
   395
							case 12: gen = gen + name + ".setEchoCharacter('" + text.getEchoChar() + "');\n";
jaroslav@0
   396
									break;
jaroslav@0
   397
jaroslav@0
   398
						}
jaroslav@0
   399
					}
jaroslav@0
   400
				}
jaroslav@0
   401
				break;			
jaroslav@0
   402
			case XFDesignConstants.GEN_RESHAPE:
jaroslav@0
   403
				if (((XelfiVisualContainer) getParent()).getDesignLayout().allowsDragging()) {
jaroslav@0
   404
					if (!autoSize) 
jaroslav@0
   405
						if (getParent() instanceof XelfiDesignForm)
jaroslav@0
   406
							gen = name + ".reshape(insets.left+"+position.x+", insets.top+"+position.y+","+size.width+","+size.height+");\n";
jaroslav@0
   407
						else 
jaroslav@0
   408
							gen = name + ".reshape("+position.x+","+position.y+","+size.width+","+size.height+");\n";
jaroslav@0
   409
					else {
jaroslav@0
   410
						gen = name + ".resize(" + name + ".preferredSize());\n";
jaroslav@0
   411
						if (getParent() instanceof XelfiDesignForm)
jaroslav@0
   412
							gen = gen + name + ".move(insets.left+"+position.x+", insets.top+"+position.y+");\n";
jaroslav@0
   413
						else
jaroslav@0
   414
							gen = gen + name + ".move("+position.x+","+position.y+");\n";
jaroslav@0
   415
					}
jaroslav@0
   416
				}
jaroslav@0
   417
				break;
jaroslav@0
   418
		}
jaroslav@0
   419
		return gen;
jaroslav@0
   420
	}
jaroslav@0
   421
jaroslav@0
   422
	public String generateEventCondition(int index) throws XFPropertyIndexOutOfBoundsException {
jaroslav@0
   423
		String evt = XFDesignOptions.eventVarName;
jaroslav@0
   424
		switch (index) { 
jaroslav@0
   425
			case 0: return evt +".id == Event.GOT_FOCUS && "+evt+".target == "+getName();
jaroslav@0
   426
			case 1: return evt +".id == Event.LOST_FOCUS && "+evt+".target == "+getName();
jaroslav@0
   427
			case 2: return evt +".id == Event.KEY_ACTION && "+evt+".target == "+getName();
jaroslav@0
   428
			case 3: return evt +".id == Event.KEY_ACTION_RELEASE && "+evt+".target == "+getName();
jaroslav@0
   429
			case 4: return evt +".id == Event.KEY_PRESS && "+evt+".target == "+getName();
jaroslav@0
   430
			case 5: return evt +".id == Event.KEY_RELEASE && "+evt+".target == "+getName();
jaroslav@0
   431
			default: throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   432
		}
jaroslav@0
   433
	}
jaroslav@0
   434
jaroslav@0
   435
	public void loadFromStream(DataInput stream) throws IOException {
jaroslav@0
   436
jaroslav@0
   437
		super.loadFromStream(stream);
jaroslav@0
   438
jaroslav@0
   439
		if (!propDefSet)
jaroslav@0
   440
			propertiesSetDefault();
jaroslav@0
   441
jaroslav@0
   442
		for (int i = 0; i < propertyCount; i++) {
jaroslav@0
   443
			if (stream.readBoolean()) {
jaroslav@0
   444
				propDef[i] = null;
jaroslav@0
   445
			}
jaroslav@0
   446
			else switch (i) {
jaroslav@0
   447
				case 0: text.setBackground(XColorPropertyType.loadFromStream(stream)); break;
jaroslav@0
   448
				case 1: text.setForeground(XColorPropertyType.loadFromStream(stream)); break;
jaroslav@0
   449
				case 2: text.enable(XBooleanPropertyType.loadBFromStream(stream)); break;
jaroslav@0
   450
				case 3: bVisible = XBooleanPropertyType.loadBFromStream(stream); break;
jaroslav@0
   451
				case 4: text.setFont(XFontPropertyType.loadFromStream(stream)); break;
jaroslav@0
   452
				case 5: text.setText(XStringPropertyType.loadFromStream(stream)); break;
jaroslav@0
   453
				case 6: setAutoSize(XBooleanPropertyType.loadBFromStream(stream)); break;
jaroslav@0
   454
				case 7: setParentColor(XBooleanPropertyType.loadBFromStream(stream)); break;
jaroslav@0
   455
				case 8: setParentFont(XBooleanPropertyType.loadBFromStream(stream)); break;
jaroslav@0
   456
				case 9: text.select(((Integer) XIntegerPropertyType.loadFromStream(stream)).intValue(), text.getSelectionEnd()); break;
jaroslav@0
   457
				case 10: text.select(text.getSelectionStart(), ((Integer)XIntegerPropertyType.loadFromStream(stream)).intValue()); break;
jaroslav@0
   458
				case 11: text.setEditable(XBooleanPropertyType.loadBFromStream(stream)); break;
jaroslav@0
   459
				case 12: text.setEchoCharacter(XCharacterPropertyType.loadFromStream(stream).charValue()); break;
jaroslav@0
   460
			}
jaroslav@0
   461
		}
jaroslav@0
   462
		
jaroslav@0
   463
		for (int i = 0; i < eventCount; i++) {
jaroslav@0
   464
			if (stream.readBoolean())
jaroslav@0
   465
				parentForm.assignEvent(this, i, stream.readUTF());
jaroslav@0
   466
		}
jaroslav@0
   467
	}		
jaroslav@0
   468
	
jaroslav@0
   469
	public void saveToStream(DataOutput stream) throws IOException {
jaroslav@0
   470
jaroslav@0
   471
		super.saveToStream(stream);
jaroslav@0
   472
jaroslav@0
   473
		for (int i = 0; i < propertyCount; i++) {
jaroslav@0
   474
			boolean b = propertyDefault(i);
jaroslav@0
   475
			stream.writeBoolean(b);
jaroslav@0
   476
			if (!b) {
jaroslav@0
   477
				switch (i) {
jaroslav@0
   478
					case 0: XColorPropertyType.saveToStream(text.getBackground(), stream); break;
jaroslav@0
   479
					case 1: XColorPropertyType.saveToStream(text.getForeground(), stream); break;
jaroslav@0
   480
					case 2: XBooleanPropertyType.saveToStream(text.isEnabled(), stream); break;
jaroslav@0
   481
					case 3: XBooleanPropertyType.saveToStream(bVisible, stream); break;
jaroslav@0
   482
					case 4: XFontPropertyType.saveToStream(text.getFont(), stream); break;
jaroslav@0
   483
					case 5: XStringPropertyType.saveToStream(text.getText(), stream); break;
jaroslav@0
   484
					case 6: XBooleanPropertyType.saveToStream(autoSize, stream); break;
jaroslav@0
   485
					case 7: XBooleanPropertyType.saveToStream(parentColor, stream); break;
jaroslav@0
   486
					case 8: XBooleanPropertyType.saveToStream(parentFont, stream); break;
jaroslav@0
   487
					case 9: XIntegerPropertyType.saveToStream(new Integer(text.getSelectionStart()), stream); break;
jaroslav@0
   488
					case 10: XIntegerPropertyType.saveToStream(new Integer(text.getSelectionEnd()), stream); break;
jaroslav@0
   489
					case 11: XBooleanPropertyType.saveToStream(text.isEditable(), stream); break;
jaroslav@0
   490
					case 12: XCharacterPropertyType.saveToStream(new Character(text.getEchoChar()), stream); break;
jaroslav@0
   491
				}
jaroslav@0
   492
			}
jaroslav@0
   493
		}
jaroslav@0
   494
jaroslav@0
   495
		for (int i = 0; i < eventCount; i++) {
jaroslav@0
   496
			if ((events[i] != null) && (events[i].length() > 0)) {
jaroslav@0
   497
				stream.writeBoolean(true);
jaroslav@0
   498
				stream.writeUTF(events[i]);
jaroslav@0
   499
			}
jaroslav@0
   500
			else stream.writeBoolean(false);
jaroslav@0
   501
		}
jaroslav@0
   502
	}
jaroslav@0
   503
	
jaroslav@0
   504
}