src/main/java/xelfi/design/components/xawt/XGauge.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
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.awt.Gauge;
jaroslav@0
    17
import xelfi.design.components.*;
jaroslav@0
    18
import xelfi.design.components.property.*;
jaroslav@0
    19
import xelfi.design.forms.XelfiDesignForm;
jaroslav@0
    20
import xelfi.design.util.XFDesignConstants;
jaroslav@0
    21
import xelfi.design.util.XFDesignOptions;
jaroslav@0
    22
import xelfi.design.util.XFDesignUtils;
jaroslav@0
    23
jaroslav@0
    24
public class XGauge extends XAWTPanel {
jaroslav@0
    25
	private Gauge gauge;
jaroslav@0
    26
jaroslav@0
    27
	private static int propertyCount = 15;
jaroslav@0
    28
	private Object propDef[];
jaroslav@0
    29
	private boolean propDefSet = false;
jaroslav@0
    30
	private static int eventCount = 2;
jaroslav@0
    31
	private String events[] = new String[eventCount];
jaroslav@0
    32
	protected static Image icon = null;
jaroslav@0
    33
	
jaroslav@0
    34
	public XGauge() { 
jaroslav@0
    35
		super(XAWTPanel.WITHOUT_DRAGBORDER);
jaroslav@0
    36
		setComponent(gauge = new Gauge());
jaroslav@0
    37
		propDef = new Object[propertyCount];
jaroslav@0
    38
		for (int i=0; i<propertyCount; i++)
jaroslav@0
    39
			propDef[i] = null;
jaroslav@0
    40
		if (icon == null)
jaroslav@0
    41
			icon = loadIcon("gauge.gif");
jaroslav@0
    42
	}
jaroslav@0
    43
jaroslav@0
    44
	protected void regenForm(int what) {
jaroslav@0
    45
		if (parentForm != null)
jaroslav@0
    46
			parentForm.regenerateCode(this, what);
jaroslav@0
    47
	}
jaroslav@0
    48
jaroslav@0
    49
	public String[] neededImports() {
jaroslav@0
    50
		String[] ret = new String[1];
jaroslav@0
    51
		ret[0] = "xelfi.awt.Gauge";
jaroslav@0
    52
		return ret;
jaroslav@0
    53
	}
jaroslav@0
    54
jaroslav@0
    55
	public Image getIcon() {
jaroslav@0
    56
		return icon; 
jaroslav@0
    57
	}
jaroslav@0
    58
jaroslav@0
    59
	public boolean handleEvent(Event evt) {
jaroslav@0
    60
		evt.target = this;
jaroslav@0
    61
		return super.handleEvent(evt);
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(gauge.getBackground());
jaroslav@0
    71
			case 1: return ((Color) propDef[i]).equals(gauge.getForeground());
jaroslav@0
    72
			case 2: return (((Boolean) propDef[i]).booleanValue() == gauge.isEnabled());
jaroslav@0
    73
			case 3: return (((Boolean) propDef[i]).booleanValue() == bVisible);
jaroslav@0
    74
			case 4: return ((Font) propDef[i]).equals(gauge.getFont());
jaroslav@0
    75
			case 5: return (((Boolean) propDef[i]).booleanValue() == autoSize);
jaroslav@0
    76
			case 6: return (((Boolean) propDef[i]).booleanValue() == parentColor);
jaroslav@0
    77
			case 7: return (((Boolean) propDef[i]).booleanValue() == parentFont);
jaroslav@0
    78
			case 8: return (gauge.defaultFillColor.equals(gauge.getFillColor()));
jaroslav@0
    79
			case 9: return (gauge.defaultKind == gauge.getKind());
jaroslav@0
    80
			case 10: return (((Boolean) propDef[i]).booleanValue() == gauge.getShowText());
jaroslav@0
    81
			case 11: return (gauge.defaultBorderColor.equals(gauge.getBorderColor()));
jaroslav@0
    82
			case 12: return (gauge.defaultBorderWidth == gauge.getBorderWidth());
jaroslav@0
    83
			case 13: return (gauge.defaultBorderStyle == gauge.getBorderStyle());
jaroslav@0
    84
			case 14: return (gauge.getValue() == 0);
jaroslav@0
    85
			default: throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
    86
		}
jaroslav@0
    87
	}
jaroslav@0
    88
jaroslav@0
    89
	private void propertiesSetDefault() {
jaroslav@0
    90
		if (propDefSet)
jaroslav@0
    91
			return;
jaroslav@0
    92
		propDefSet = true;
jaroslav@0
    93
		if (getBackground() != null)
jaroslav@0
    94
				propDef[0] = new Color(gauge.getBackground().getRGB());
jaroslav@0
    95
		if (getForeground() != null)
jaroslav@0
    96
				propDef[1] = new Color(gauge.getForeground().getRGB());
jaroslav@0
    97
		propDef[2] = new Boolean(gauge.isEnabled());
jaroslav@0
    98
		propDef[3] = new Boolean(bVisible);
jaroslav@0
    99
		if (gauge.getFont() != null) {
jaroslav@0
   100
			Font f = gauge.getFont();
jaroslav@0
   101
			propDef[4] = new Font(f.getName(), f.getStyle(), f.getSize());
jaroslav@0
   102
		}
jaroslav@0
   103
		propDef[5] = new Boolean(autoSize);
jaroslav@0
   104
		propDef[6] = new Boolean(parentColor);
jaroslav@0
   105
		propDef[7] = new Boolean(parentFont);
jaroslav@0
   106
		propDef[8] = gauge.defaultFillColor;
jaroslav@0
   107
		propDef[9] = new Integer(gauge.defaultKind);
jaroslav@0
   108
		propDef[10] = new Boolean(gauge.defaultShowText);
jaroslav@0
   109
		propDef[11] = gauge.defaultBorderColor;
jaroslav@0
   110
		propDef[12] = new Integer(gauge.defaultBorderWidth);
jaroslav@0
   111
		propDef[13] = new Integer(gauge.defaultBorderStyle);
jaroslav@0
   112
		propDef[14] = new Integer(0);
jaroslav@0
   113
	}
jaroslav@0
   114
jaroslav@0
   115
	public int getPropertyCount() { return propertyCount; }
jaroslav@0
   116
	
jaroslav@0
   117
	public Object getProperty(int index) throws XFPropertyIndexOutOfBoundsException { 
jaroslav@0
   118
		switch (index) {
jaroslav@0
   119
			case 0: return gauge.getBackground();
jaroslav@0
   120
			case 1: return gauge.getForeground();
jaroslav@0
   121
			case 2: return (gauge.isEnabled()) ? Boolean.TRUE : Boolean.FALSE;
jaroslav@0
   122
			case 3: return (bVisible) ? Boolean.TRUE : Boolean.FALSE;
jaroslav@0
   123
			case 4: return gauge.getFont();
jaroslav@0
   124
			case 5: return (autoSize) ? Boolean.TRUE : Boolean.FALSE;
jaroslav@0
   125
			case 6: return (parentColor) ? Boolean.TRUE : Boolean.FALSE;
jaroslav@0
   126
			case 7: return (parentFont) ? Boolean.TRUE : Boolean.FALSE;
jaroslav@0
   127
			case 8: return gauge.getFillColor();
jaroslav@0
   128
			case 9: return new Integer(gauge.getKind());
jaroslav@0
   129
			case 10: return (gauge.getShowText()) ? Boolean.TRUE : Boolean.FALSE;
jaroslav@0
   130
			case 11: return gauge.getBorderColor();
jaroslav@0
   131
			case 12: return new Integer(gauge.getBorderWidth());
jaroslav@0
   132
			case 13: return new Integer(gauge.getBorderStyle());
jaroslav@0
   133
			case 14: return new Integer(gauge.getValue());
jaroslav@0
   134
			default: throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   135
		}
jaroslav@0
   136
	}
jaroslav@0
   137
			
jaroslav@0
   138
	public String[] getPropertyNames() { 
jaroslav@0
   139
		String list[] = new String[propertyCount];
jaroslav@0
   140
		list[0] = "Background Color";
jaroslav@0
   141
		list[1] = "Foreground Color";
jaroslav@0
   142
		list[2] = "Enabled";
jaroslav@0
   143
		list[3] = "Visible";
jaroslav@0
   144
		list[4] = "Font";
jaroslav@0
   145
		list[5] = "Auto Size";
jaroslav@0
   146
		list[6] = "Parent Color";
jaroslav@0
   147
		list[7] = "Parent Font";
jaroslav@0
   148
		list[8] = "Fill Color";
jaroslav@0
   149
		list[9] = "Kind";
jaroslav@0
   150
		list[10] = "Show Text";
jaroslav@0
   151
		list[11] = "Border Color";
jaroslav@0
   152
		list[12] = "Border Width";
jaroslav@0
   153
		list[13] = "Border Style";
jaroslav@0
   154
		list[14] = "Value";
jaroslav@0
   155
		return list;
jaroslav@0
   156
	}
jaroslav@0
   157
		
jaroslav@0
   158
	public String getPropertyString(int index) throws 
jaroslav@0
   159
		XFPropertyIndexOutOfBoundsException { 
jaroslav@0
   160
		switch (index) {
jaroslav@0
   161
			case 0: 
jaroslav@0
   162
			case 1: return XColorPropertyType.viewString(getProperty(index));
jaroslav@0
   163
			case 2:
jaroslav@0
   164
			case 3: return XBooleanPropertyType.viewString(getProperty(index));
jaroslav@0
   165
			case 4: return XFontPropertyType.viewString(getProperty(index));
jaroslav@0
   166
			case 5: 
jaroslav@0
   167
			case 6: 
jaroslav@0
   168
			case 7: return XBooleanPropertyType.viewString(getProperty(index));
jaroslav@0
   169
			case 8: return XColorPropertyType.viewString(getProperty(index));
jaroslav@0
   170
			case 9: return XIntegerPropertyType.viewString(getProperty(index));
jaroslav@0
   171
			case 10: return XBooleanPropertyType.viewString(getProperty(index));
jaroslav@0
   172
			case 11: return XColorPropertyType.viewString(getProperty(index));
jaroslav@0
   173
			case 12:
jaroslav@0
   174
			case 13:
jaroslav@0
   175
			case 14: return XIntegerPropertyType.viewString(getProperty(index));
jaroslav@0
   176
			default: throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   177
		}
jaroslav@0
   178
	}
jaroslav@0
   179
jaroslav@0
   180
	public int getPropertyViewerType(int index) throws 
jaroslav@0
   181
		XFPropertyIndexOutOfBoundsException {
jaroslav@0
   182
		switch (index) {
jaroslav@0
   183
			case 0: 
jaroslav@0
   184
			case 1: return XFDesignConstants.PVT_SPECIAL;
jaroslav@0
   185
			case 2:
jaroslav@0
   186
			case 3: return XFDesignConstants.PVT_CHECK;
jaroslav@0
   187
			case 4: return XFDesignConstants.PVT_SPECIAL;
jaroslav@0
   188
			case 5: 
jaroslav@0
   189
			case 6: 
jaroslav@0
   190
			case 7: return XFDesignConstants.PVT_CHECK;
jaroslav@0
   191
			case 8: return XFDesignConstants.PVT_SPECIAL;
jaroslav@0
   192
			case 9: return XFDesignConstants.PVT_CHOICE_STRICT;
jaroslav@0
   193
			case 10: return XFDesignConstants.PVT_CHECK;
jaroslav@0
   194
			case 11: return XFDesignConstants.PVT_SPECIAL;
jaroslav@0
   195
			case 12: return XFDesignConstants.PVT_INPUT_INT;
jaroslav@0
   196
			case 13: return XFDesignConstants.PVT_CHOICE_STRICT;
jaroslav@0
   197
			case 14: return XFDesignConstants.PVT_INPUT_INT;
jaroslav@0
   198
			default: throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   199
		}
jaroslav@0
   200
	}
jaroslav@0
   201
jaroslav@0
   202
	public String[] getPropertyValueNames(int index) throws 
jaroslav@0
   203
		XFPropertyIndexOutOfBoundsException {
jaroslav@0
   204
		switch (index) {
jaroslav@0
   205
			case 9: String[] ret = new String[5];
jaroslav@0
   206
					ret[0] = "HORIZONTAL";
jaroslav@0
   207
					ret[1] = "VERTICAL";
jaroslav@0
   208
					ret[2] = "NEEDLE";
jaroslav@0
   209
					ret[3] = "PIE";
jaroslav@0
   210
					ret[4] = "TEXT";
jaroslav@0
   211
					return ret;
jaroslav@0
   212
			case 13:String[] ret1 = new String[4];
jaroslav@0
   213
					ret1[0] = "NONE";
jaroslav@0
   214
					ret1[1] = "NORMAL";
jaroslav@0
   215
					ret1[2] = "3D RAISED";
jaroslav@0
   216
					ret1[3] = "3D LOWERED";
jaroslav@0
   217
					return ret1;
jaroslav@0
   218
			default: throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   219
		}
jaroslav@0
   220
	}
jaroslav@0
   221
jaroslav@0
   222
	public Object[] getPropertyValueValues(int index) throws 
jaroslav@0
   223
		XFPropertyIndexOutOfBoundsException {
jaroslav@0
   224
		switch (index) {
jaroslav@0
   225
			case 9: Integer[] ret = new Integer[5];
jaroslav@0
   226
					ret[0] = new Integer(Gauge.GAUGE_HORIZONTAL);
jaroslav@0
   227
					ret[1] = new Integer(Gauge.GAUGE_VERTICAL);
jaroslav@0
   228
					ret[2] = new Integer(Gauge.GAUGE_NEEDLE);
jaroslav@0
   229
					ret[3] = new Integer(Gauge.GAUGE_PIE);
jaroslav@0
   230
					ret[4] = new Integer(Gauge.GAUGE_TEXT);
jaroslav@0
   231
					return ret;
jaroslav@0
   232
			case 13: Integer[] ret1 = new Integer[4];
jaroslav@0
   233
					ret1[0] = new Integer(Gauge.BS_NONE);
jaroslav@0
   234
					ret1[1] = new Integer(Gauge.BS_NORMAL);
jaroslav@0
   235
					ret1[2] = new Integer(Gauge.BS_3D_RAISED);
jaroslav@0
   236
					ret1[3] = new Integer(Gauge.BS_3D_LOWERED);
jaroslav@0
   237
					return ret1;
jaroslav@0
   238
			default: throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   239
		}
jaroslav@0
   240
	}
jaroslav@0
   241
jaroslav@0
   242
	public int setProperty(int index, Object value) throws 	
jaroslav@0
   243
		XFPropertyIndexOutOfBoundsException,
jaroslav@0
   244
		XFPropertyBadValueTypeException 
jaroslav@0
   245
	{ 
jaroslav@0
   246
		int ret = XFDesignConstants.RSP_OK;
jaroslav@0
   247
		int regen = XFDesignConstants.GEN_SETPROPS;
jaroslav@0
   248
		if (!propDefSet)
jaroslav@0
   249
			propertiesSetDefault();
jaroslav@0
   250
		switch (index) { 
jaroslav@0
   251
			case 0: if (!(value instanceof Color)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   252
					gauge.setBackground((Color)value);
jaroslav@0
   253
					ret = ret | XFDesignConstants.RSP_REPAINT_COMP;
jaroslav@0
   254
					if (parentColor) {
jaroslav@0
   255
						parentColor = false;
jaroslav@0
   256
						ret = ret | XFDesignConstants.RSP_OTHER_PROP;
jaroslav@0
   257
					}
jaroslav@0
   258
					gauge.repaint();
jaroslav@0
   259
					break;
jaroslav@0
   260
			case 1:	if (!(value instanceof Color)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   261
					gauge.setForeground((Color)value);
jaroslav@0
   262
					ret = ret | XFDesignConstants.RSP_REPAINT_COMP;
jaroslav@0
   263
					if (parentColor) {
jaroslav@0
   264
						parentColor = false;
jaroslav@0
   265
						ret = ret | XFDesignConstants.RSP_OTHER_PROP;
jaroslav@0
   266
					}
jaroslav@0
   267
					gauge.repaint();
jaroslav@0
   268
					break;
jaroslav@0
   269
			case 2:	if (!(value instanceof Boolean)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   270
					gauge.enable(((Boolean)value).booleanValue());
jaroslav@0
   271
					break;
jaroslav@0
   272
			case 3: if (!(value instanceof Boolean)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   273
					bVisible = ((Boolean)value).booleanValue();
jaroslav@0
   274
					break;
jaroslav@0
   275
			case 4: if (!(value instanceof Font)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   276
					gauge.setFont((Font)value); 
jaroslav@0
   277
					ret = ret | XFDesignConstants.RSP_REPAINT_COMP | XFDesignConstants.RSP_OTHER_PROP;
jaroslav@0
   278
					if (parentFont) {
jaroslav@0
   279
						parentFont = false;
jaroslav@0
   280
						if (autoSize) {
jaroslav@6
   281
							setDesignSize(0,0);
jaroslav@0
   282
							regen = regen | XFDesignConstants.GEN_RESHAPE;
jaroslav@0
   283
							gauge.repaint();
jaroslav@0
   284
						}
jaroslav@0
   285
					}
jaroslav@0
   286
					break;
jaroslav@0
   287
			case 5:	if (!(value instanceof Boolean)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   288
					setAutoSize(((Boolean)value).booleanValue());
jaroslav@0
   289
					if (autoSize) {
jaroslav@6
   290
						setDesignSize(0,0);
jaroslav@0
   291
						ret = ret | XFDesignConstants.RSP_OTHER_PROP;
jaroslav@0
   292
						gauge.repaint();
jaroslav@0
   293
					}
jaroslav@0
   294
					regen = regen | XFDesignConstants.GEN_RESHAPE;
jaroslav@0
   295
					ret = ret | XFDesignConstants.RSP_REPAINT_COMP;
jaroslav@0
   296
					break;
jaroslav@0
   297
			case 6:	if (!(value instanceof Boolean)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   298
					setParentColor(((Boolean)value).booleanValue());
jaroslav@0
   299
					if (parentColor)
jaroslav@0
   300
						ret = ret | XFDesignConstants.RSP_REPAINT_COMP;
jaroslav@0
   301
					break;
jaroslav@0
   302
			case 7: if (!(value instanceof Boolean)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   303
					setParentFont(((Boolean)value).booleanValue());
jaroslav@0
   304
					if (parentFont)
jaroslav@0
   305
						ret = ret | XFDesignConstants.RSP_REPAINT_COMP;
jaroslav@0
   306
					if (autoSize)
jaroslav@0
   307
					 	ret = ret | XFDesignConstants.RSP_OTHER_PROP;
jaroslav@0
   308
					break;
jaroslav@0
   309
			case 8:if (!(value instanceof Color)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   310
					gauge.setFillColor((Color)value);
jaroslav@0
   311
					ret = ret | XFDesignConstants.RSP_REPAINT_COMP;
jaroslav@0
   312
					break;
jaroslav@0
   313
			case 9:if (!(value instanceof Integer)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   314
					gauge.setKind(((Integer)value).intValue());
jaroslav@0
   315
					ret = ret | XFDesignConstants.RSP_REPAINT_COMP;
jaroslav@0
   316
					if (autoSize) {
jaroslav@6
   317
						setDesignSize(0,0);
jaroslav@0
   318
						ret = ret | XFDesignConstants.RSP_OTHER_PROP;
jaroslav@0
   319
					}
jaroslav@0
   320
					repaintComponent();
jaroslav@0
   321
					break;
jaroslav@0
   322
			case 10:if (!(value instanceof Boolean)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   323
					gauge.setShowText(((Boolean)value).booleanValue());
jaroslav@0
   324
					break;
jaroslav@0
   325
			case 11:if (!(value instanceof Color)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   326
					gauge.setBorderColor((Color)value);
jaroslav@0
   327
					ret = ret | XFDesignConstants.RSP_REPAINT_COMP;
jaroslav@0
   328
					break;
jaroslav@0
   329
			case 12:if (!(value instanceof Integer)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   330
					gauge.setBorderWidth(((Integer)value).intValue());
jaroslav@0
   331
					if (autoSize) {
jaroslav@6
   332
						setDesignSize(0,0);
jaroslav@0
   333
						ret = ret | XFDesignConstants.RSP_OTHER_PROP;
jaroslav@0
   334
					}
jaroslav@0
   335
					repaintComponent();
jaroslav@0
   336
					break;
jaroslav@0
   337
			case 13:if (!(value instanceof Integer)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   338
					gauge.setBorderStyle(((Integer)value).intValue());
jaroslav@0
   339
					if (autoSize) {
jaroslav@6
   340
						setDesignSize(0,0);
jaroslav@0
   341
						ret = ret | XFDesignConstants.RSP_OTHER_PROP;
jaroslav@0
   342
					}
jaroslav@0
   343
					repaintComponent();
jaroslav@0
   344
					break;
jaroslav@0
   345
			case 14:if (!(value instanceof Integer)) throw new XFPropertyBadValueTypeException();
jaroslav@0
   346
					try {
jaroslav@0
   347
						gauge.setValue(((Integer)value).intValue());
jaroslav@0
   348
					} catch (IllegalArgumentException e) {
jaroslav@0
   349
						System.out.println("Illegal Argument Exception.");
jaroslav@0
   350
					}
jaroslav@0
   351
					break;
jaroslav@0
   352
			default: throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   353
		}
jaroslav@0
   354
		regenForm(regen);
jaroslav@0
   355
		
jaroslav@0
   356
		return ret;
jaroslav@0
   357
	}
jaroslav@0
   358
			
jaroslav@0
   359
	public void specialPropertyInput(Frame parent, int index) throws 	
jaroslav@0
   360
		XFPropertyIndexOutOfBoundsException, 
jaroslav@0
   361
		XFPropertyNoSpecialInputException { 
jaroslav@0
   362
		if ((index < 0) || (index >= propertyCount)) throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   363
		switch (index) { 
jaroslav@0
   364
			case 0:
jaroslav@0
   365
			case 1: XColorPropertyType.invokeSpecialInput(parent, this, index);
jaroslav@0
   366
					break;
jaroslav@0
   367
			case 4: XFontPropertyType.invokeSpecialInput(parent, this, index);
jaroslav@0
   368
					break;
jaroslav@0
   369
			case 8:
jaroslav@0
   370
			case 11: XColorPropertyType.invokeSpecialInput(parent, this, index);
jaroslav@0
   371
					break;
jaroslav@0
   372
			default: throw new XFPropertyNoSpecialInputException();
jaroslav@0
   373
		}
jaroslav@0
   374
	}
jaroslav@0
   375
jaroslav@0
   376
	public int getEventCount() {
jaroslav@0
   377
		return eventCount;
jaroslav@0
   378
	}
jaroslav@0
   379
jaroslav@0
   380
	public String[] getEventNames() {
jaroslav@0
   381
		String list[] = new String[eventCount];
jaroslav@0
   382
		list[0] = "OnGotFocus";
jaroslav@0
   383
		list[1] = "OnLostFocus";
jaroslav@0
   384
		return list;
jaroslav@0
   385
	}
jaroslav@0
   386
jaroslav@0
   387
	public String getEvent(int index) throws 
jaroslav@0
   388
		XFPropertyIndexOutOfBoundsException {
jaroslav@0
   389
		if ((index>=0) && (index<eventCount)) {
jaroslav@0
   390
			if (events[index] == null)
jaroslav@0
   391
				return null;
jaroslav@0
   392
			else
jaroslav@0
   393
				return new String(events[index]); 
jaroslav@0
   394
		}
jaroslav@0
   395
		else throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   396
	}		
jaroslav@0
   397
		
jaroslav@0
   398
	public void setEvent(int index, String value) throws 
jaroslav@0
   399
		XFPropertyIndexOutOfBoundsException {
jaroslav@0
   400
		if ((index>=0) && (index<eventCount))
jaroslav@0
   401
			events[index] = value;
jaroslav@0
   402
		else throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   403
	}		
jaroslav@0
   404
jaroslav@0
   405
	public String getClassName() {
jaroslav@0
   406
		return "Gauge";
jaroslav@0
   407
	}
jaroslav@0
   408
	
jaroslav@0
   409
	public String generateCode(int what) {
jaroslav@0
   410
		String gen = "";
jaroslav@0
   411
		switch (what) {
jaroslav@0
   412
			case XFDesignConstants.GEN_VARIABLE: 
jaroslav@0
   413
				gen = getClassName()+" "+ name + ";\n";
jaroslav@0
   414
				break;
jaroslav@0
   415
			case XFDesignConstants.GEN_INIT: 
jaroslav@0
   416
				gen = name + " = new " + getClassName() + "();\n";
jaroslav@0
   417
				break;
jaroslav@0
   418
			case XFDesignConstants.GEN_SETPROPS:
jaroslav@0
   419
				if (!propDefSet)
jaroslav@0
   420
					propertiesSetDefault();
jaroslav@0
   421
				for (int i = 0; i < propertyCount; i++) {
jaroslav@0
   422
					if (!propertyDefault(i)) {
jaroslav@0
   423
						switch(i) {
jaroslav@0
   424
							case 0: if (!parentColor)
jaroslav@0
   425
										gen = gen + name + ".setBackground(" +
jaroslav@0
   426
											XFDesignUtils.genColor(gauge.getBackground()) + ");\n";
jaroslav@0
   427
									break;
jaroslav@0
   428
							case 1: if (!parentColor)
jaroslav@0
   429
										gen = gen + name + ".setForeground(" +
jaroslav@0
   430
											XFDesignUtils.genColor(gauge.getForeground()) + ");\n";
jaroslav@0
   431
									break;
jaroslav@0
   432
							case 2: gen = gen + name + (gauge.isEnabled() ? ".enable();\n" : ".disable();\n");
jaroslav@0
   433
									break;
jaroslav@0
   434
							case 3: gen = gen + name + ((bVisible) ? ".show();\n" : ".hide();\n");
jaroslav@0
   435
									break;
jaroslav@0
   436
							case 4: if (!parentFont) {
jaroslav@0
   437
										gen = gen + name + ".setFont(" + 
jaroslav@0
   438
											XFDesignUtils.genFont(gauge.getFont())+");\n";
jaroslav@0
   439
									}
jaroslav@0
   440
									break;
jaroslav@0
   441
							case 8: gen = gen + name + ".setFillColor(" +
jaroslav@0
   442
										XFDesignUtils.genColor(gauge.getFillColor()) + ");\n";
jaroslav@0
   443
									break;
jaroslav@0
   444
							case 9: gen = gen + name + ".setKind(Gauge.GAUGE_";
jaroslav@0
   445
									switch (gauge.getKind()) {
jaroslav@0
   446
										case Gauge.GAUGE_HORIZONTAL: gen = gen + "HORIZONTAL"; break;
jaroslav@0
   447
										case Gauge.GAUGE_VERTICAL: gen = gen + "VERTICAL"; break;
jaroslav@0
   448
										case Gauge.GAUGE_NEEDLE: gen = gen + "NEEDLE"; break;
jaroslav@0
   449
										case Gauge.GAUGE_PIE: gen = gen + "PIE"; break;
jaroslav@0
   450
										case Gauge.GAUGE_TEXT: gen = gen + "TEXT"; break;
jaroslav@0
   451
									}
jaroslav@0
   452
									gen = gen + ");\n";
jaroslav@0
   453
									break;
jaroslav@0
   454
							case 10: gen = gen + name + ".setShowText(" + ((gauge.getShowText()) ? "true" : "false") + ");\n";
jaroslav@0
   455
									break;
jaroslav@0
   456
							case 11: gen = gen + name + ".setBorderColor(" +
jaroslav@0
   457
										XFDesignUtils.genColor(gauge.getBorderColor()) + ");\n";
jaroslav@0
   458
									break;
jaroslav@0
   459
							case 12: gen = gen + name + ".setBorderWidth(" + gauge.getBorderWidth() + ");\n";
jaroslav@0
   460
									break;
jaroslav@0
   461
							case 13: gen = gen + name + ".setBorderStyle(Gauge.BS_";
jaroslav@0
   462
									switch (gauge.getBorderStyle()) {
jaroslav@0
   463
										case Gauge.BS_NONE: gen = gen + "NONE"; break;
jaroslav@0
   464
										case Gauge.BS_NORMAL: gen = gen + "NORMAL"; break;
jaroslav@0
   465
										case Gauge.BS_3D_RAISED: gen = gen + "3D_RAISED"; break;
jaroslav@0
   466
										case Gauge.BS_3D_LOWERED: gen = gen + "3D_LOWERED"; break;
jaroslav@0
   467
									}
jaroslav@0
   468
									gen = gen + ");\n";
jaroslav@0
   469
									break;
jaroslav@0
   470
							case 14: gen = gen + name + ".setValue(" + gauge.getValue() + ");\n";
jaroslav@0
   471
									break;
jaroslav@0
   472
						}
jaroslav@0
   473
					}
jaroslav@0
   474
				}
jaroslav@0
   475
				break;			
jaroslav@0
   476
			case XFDesignConstants.GEN_RESHAPE:
jaroslav@0
   477
				if (((XelfiVisualContainer) getParent()).getDesignLayout().allowsDragging()) {
jaroslav@0
   478
					if (!autoSize) 
jaroslav@0
   479
						if (getParent() instanceof XelfiDesignForm)
jaroslav@0
   480
							gen = name + ".reshape(insets.left+"+position.x+", insets.top+"+position.y+","+size.width+","+size.height+");\n";
jaroslav@0
   481
						else 
jaroslav@0
   482
							gen = name + ".reshape("+position.x+","+position.y+","+size.width+","+size.height+");\n";
jaroslav@0
   483
					else {
jaroslav@0
   484
						gen = name + ".resize(" + name + ".preferredSize());\n";
jaroslav@0
   485
						if (getParent() instanceof XelfiDesignForm)
jaroslav@0
   486
							gen = gen + name + ".move(insets.left+"+position.x+", insets.top+"+position.y+");\n";
jaroslav@0
   487
						else
jaroslav@0
   488
							gen = gen + name + ".move("+position.x+","+position.y+");\n";
jaroslav@0
   489
					}
jaroslav@0
   490
				}
jaroslav@0
   491
				break;
jaroslav@0
   492
		}
jaroslav@0
   493
		return gen;
jaroslav@0
   494
	}
jaroslav@0
   495
jaroslav@0
   496
	public String generateEventCondition(int index) throws XFPropertyIndexOutOfBoundsException {
jaroslav@0
   497
		String evt = XFDesignOptions.eventVarName;
jaroslav@0
   498
		switch (index) { 
jaroslav@0
   499
			case 0: return evt +".id == Event.GOT_FOCUS && "+evt+".target == "+getName();
jaroslav@0
   500
			case 1: return evt +".id == Event.LOST_FOCUS && "+evt+".target == "+getName();
jaroslav@0
   501
			default: throw new XFPropertyIndexOutOfBoundsException();
jaroslav@0
   502
		}
jaroslav@0
   503
	}
jaroslav@0
   504
jaroslav@0
   505
	public void loadFromStream(DataInput stream) throws IOException {
jaroslav@0
   506
jaroslav@0
   507
		super.loadFromStream(stream);
jaroslav@0
   508
jaroslav@0
   509
		if (!propDefSet)
jaroslav@0
   510
			propertiesSetDefault();
jaroslav@0
   511
jaroslav@0
   512
		for (int i = 0; i < propertyCount; i++) {
jaroslav@0
   513
			if (stream.readBoolean())
jaroslav@0
   514
				propDef[i] = null;
jaroslav@0
   515
			else switch (i) {
jaroslav@0
   516
				case 0: gauge.setBackground(XColorPropertyType.loadFromStream(stream)); break;
jaroslav@0
   517
				case 1: gauge.setForeground(XColorPropertyType.loadFromStream(stream)); break;
jaroslav@0
   518
				case 2: gauge.enable(XBooleanPropertyType.loadBFromStream(stream)); break;
jaroslav@0
   519
				case 3: bVisible = XBooleanPropertyType.loadBFromStream(stream); break;
jaroslav@0
   520
				case 4: gauge.setFont(XFontPropertyType.loadFromStream(stream)); break;
jaroslav@0
   521
				case 5: setAutoSize(XBooleanPropertyType.loadBFromStream(stream)); break;
jaroslav@0
   522
				case 6: setParentColor(XBooleanPropertyType.loadBFromStream(stream)); break;
jaroslav@0
   523
				case 7: setParentFont(XBooleanPropertyType.loadBFromStream(stream)); break;
jaroslav@0
   524
				case 8: gauge.setFillColor(XColorPropertyType.loadFromStream(stream)); break;
jaroslav@0
   525
				case 9: gauge.setKind(XIntegerPropertyType.loadFromStream(stream).intValue()); break;
jaroslav@0
   526
				case 10: gauge.setShowText(XBooleanPropertyType.loadBFromStream(stream)); break;
jaroslav@0
   527
				case 11: gauge.setBorderColor(XColorPropertyType.loadFromStream(stream)); break;
jaroslav@0
   528
				case 12: gauge.setBorderWidth(XIntegerPropertyType.loadFromStream(stream).intValue()); break;
jaroslav@0
   529
				case 13: gauge.setBorderStyle(XIntegerPropertyType.loadFromStream(stream).intValue()); break;
jaroslav@0
   530
				case 14: gauge.setValue(XIntegerPropertyType.loadFromStream(stream).intValue()); break;
jaroslav@0
   531
			}
jaroslav@0
   532
		}
jaroslav@0
   533
jaroslav@0
   534
		for (int i = 0; i < eventCount; i++) {
jaroslav@0
   535
			if (stream.readBoolean())
jaroslav@0
   536
				parentForm.assignEvent(this, i, stream.readUTF());
jaroslav@0
   537
		}
jaroslav@0
   538
	}		
jaroslav@0
   539
	
jaroslav@0
   540
	public void saveToStream(DataOutput stream) throws IOException {
jaroslav@0
   541
jaroslav@0
   542
		super.saveToStream(stream);
jaroslav@0
   543
jaroslav@0
   544
		for (int i = 0; i < propertyCount; i++) {
jaroslav@0
   545
			boolean b = propertyDefault(i);
jaroslav@0
   546
			stream.writeBoolean(b);
jaroslav@0
   547
			if (!b) {
jaroslav@0
   548
				switch (i) {
jaroslav@0
   549
					case 0: XColorPropertyType.saveToStream(gauge.getBackground(), stream); break;
jaroslav@0
   550
					case 1: XColorPropertyType.saveToStream(gauge.getForeground(), stream); break;
jaroslav@0
   551
					case 2: XBooleanPropertyType.saveToStream(gauge.isEnabled(), stream); break;
jaroslav@0
   552
					case 3: XBooleanPropertyType.saveToStream(bVisible, stream); break;
jaroslav@0
   553
					case 4: XFontPropertyType.saveToStream(gauge.getFont(), stream); break;
jaroslav@0
   554
					case 5: XBooleanPropertyType.saveToStream(autoSize, stream); break;
jaroslav@0
   555
					case 6: XBooleanPropertyType.saveToStream(parentColor, stream); break;
jaroslav@0
   556
					case 7: XBooleanPropertyType.saveToStream(parentFont, stream); break;
jaroslav@0
   557
					case 8: XColorPropertyType.saveToStream(gauge.getFillColor(), stream); break;
jaroslav@0
   558
					case 9: XIntegerPropertyType.saveToStream(new Integer(gauge.getKind()), stream); break;
jaroslav@0
   559
					case 10: XBooleanPropertyType.saveToStream(gauge.getShowText(), stream); break;
jaroslav@0
   560
					case 11: XColorPropertyType.saveToStream(gauge.getBorderColor(), stream); break;
jaroslav@0
   561
					case 12: XIntegerPropertyType.saveToStream(new Integer(gauge.getBorderWidth()), stream); break;
jaroslav@0
   562
					case 13: XIntegerPropertyType.saveToStream(new Integer(gauge.getBorderStyle()), stream); break;
jaroslav@0
   563
					case 14: XIntegerPropertyType.saveToStream(new Integer(gauge.getValue()), stream); break;
jaroslav@0
   564
				}
jaroslav@0
   565
			}
jaroslav@0
   566
		}
jaroslav@0
   567
jaroslav@0
   568
		for (int i = 0; i < eventCount; i++) {
jaroslav@0
   569
			if ((events[i] != null) && (events[i].length() > 0)) {
jaroslav@0
   570
				stream.writeBoolean(true);
jaroslav@0
   571
				stream.writeUTF(events[i]);
jaroslav@0
   572
			}
jaroslav@0
   573
			else stream.writeBoolean(false);
jaroslav@0
   574
		}
jaroslav@0
   575
	}
jaroslav@0
   576
	
jaroslav@0
   577
}