1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 package util;
29 
30 import com.sun.star.awt.Point;
31 import com.sun.star.beans.PropertyValue;
32 import com.sun.star.drawing.PolygonFlags;
33 //import util.BitmapLoader;
34 import com.sun.star.uno.Enum ;
35 import java.lang.reflect.Field ;
36 import java.lang.reflect.Method ;
37 import java.lang.reflect.Modifier ;
38 import java.lang.reflect.Array ;
39 import com.sun.star.uno.Any;
40 import com.sun.star.uno.AnyConverter;
41 
42 
43 public class ValueChanger {
44 
45 
46  // Method to change a Value, thought for properties
47  public static Object changePValue( Object oldValue ) {
48 
49    Object newValue = null;
50 
51    if (oldValue instanceof com.sun.star.uno.Any) {
52      try {
53         oldValue = AnyConverter.toObject(((Any) oldValue).getType(),oldValue);
54      } catch (com.sun.star.lang.IllegalArgumentException iae) {
55      }
56    }
57 
58    if (oldValue == null)
59      return null;
60 
61    if (oldValue instanceof Boolean) {
62      boolean oldbool = ((Boolean) oldValue).booleanValue();
63      newValue = new Boolean(!oldbool);
64    } else
65 
66    if (oldValue instanceof Integer) {
67      int oldint = ((Integer) oldValue).intValue();
68      newValue = new Integer(oldint+5);
69    } else
70 
71    if (oldValue instanceof Long) {
72      long oldlong = ((Long) oldValue).longValue();
73      newValue = new Long(oldlong + 15);
74    } else
75 
76    if (oldValue instanceof Short) {
77      short oldshort = ((Short) oldValue).shortValue();
78      newValue = new Short((short) (oldshort + 1));
79    } else
80 
81    if (oldValue instanceof Byte) {
82      byte oldbyte = ((Byte) oldValue).byteValue();
83      newValue = new Byte((byte) (oldbyte + 1));
84    } else
85 
86    if (oldValue instanceof Float) {
87      float oldfloat = ((Float) oldValue).floatValue();
88      newValue = new Float((float) (oldfloat + 16.7));
89    } else
90 
91    if (oldValue instanceof Double) {
92      double olddouble = ((Double) oldValue).doubleValue();
93      newValue = new Double(olddouble + 17.8);
94    } else
95 
96    if (oldValue instanceof String) {
97      String oldString = (String) oldValue;
98      newValue = oldString + "New";
99    } else
100 
101 
102    if (oldValue instanceof com.sun.star.chart.ChartAxisArrangeOrderType) {
103          Object AO1 = com.sun.star.chart.ChartAxisArrangeOrderType.AUTO;
104          Object AO2=  com.sun.star.chart.ChartAxisArrangeOrderType.SIDE_BY_SIDE;
105          Object AO3=  com.sun.star.chart.ChartAxisArrangeOrderType.STAGGER_EVEN;
106          Object AO4=  com.sun.star.chart.ChartAxisArrangeOrderType.STAGGER_ODD;
107 
108          if (oldValue.equals(AO1)) newValue = AO2;
109          if (oldValue.equals(AO2)) newValue = AO3;
110          if (oldValue.equals(AO3)) newValue = AO4;
111          if (oldValue.equals(AO4)) newValue = AO1;
112    } else
113 
114    if (oldValue instanceof com.sun.star.view.PaperOrientation) {
115          Object OR1 = com.sun.star.view.PaperOrientation.LANDSCAPE;
116          Object OR2 = com.sun.star.view.PaperOrientation.PORTRAIT;
117 
118          if (oldValue.equals(OR1)) newValue = OR2;
119                              else newValue = OR1;
120    } else
121 
122    if (oldValue instanceof com.sun.star.lang.Locale) {
123          Object Loc1 = new com.sun.star.lang.Locale("en","US","");
124          Object Loc2 = new com.sun.star.lang.Locale("de","DE","");
125 
126          if (oldValue.equals(Loc1)) newValue = Loc2;
127                              else newValue = Loc1;
128    } else
129 
130    if (oldValue instanceof com.sun.star.style.ParagraphAdjust) {
131          Object PA1 = com.sun.star.style.ParagraphAdjust.LEFT;
132          Object PA2 = com.sun.star.style.ParagraphAdjust.CENTER;
133 
134          if (oldValue.equals(PA1)) newValue = PA2;
135                              else newValue = PA1;
136    } else
137 
138    if (oldValue instanceof com.sun.star.style.LineSpacing) {
139          com.sun.star.style.LineSpacing LS = new com.sun.star.style.LineSpacing();
140          com.sun.star.style.LineSpacing LSold = (com.sun.star.style.LineSpacing) oldValue;
141          LS.Height = (short) ((LSold.Height)+1);
142          LS.Mode = (short) ((LSold.Mode)+1);
143          newValue = LS;
144    } else
145 
146    if (oldValue instanceof com.sun.star.drawing.Direction3D) {
147          com.sun.star.drawing.Direction3D D3D = new com.sun.star.drawing.Direction3D();
148          com.sun.star.drawing.Direction3D D3Dold = (com.sun.star.drawing.Direction3D) oldValue;
149          D3D.DirectionX = D3Dold.DirectionX + .5;
150          D3D.DirectionY = D3Dold.DirectionY + .5;
151          D3D.DirectionZ = D3Dold.DirectionZ + .5;
152          newValue = D3D;
153    } else
154 
155    if (oldValue instanceof com.sun.star.style.GraphicLocation) {
156          Object GL1 = com.sun.star.style.GraphicLocation.AREA;
157          Object GL2 = com.sun.star.style.GraphicLocation.LEFT_BOTTOM;
158 
159          if (oldValue.equals(GL1)) newValue = GL2;
160                              else newValue = GL1;
161    } else
162 
163    if (oldValue instanceof com.sun.star.style.TabStop) {
164          com.sun.star.style.TabStop TS = new com.sun.star.style.TabStop();
165          com.sun.star.style.TabStop TSold = (com.sun.star.style.TabStop) oldValue;
166          com.sun.star.style.TabAlign TA1 = com.sun.star.style.TabAlign.CENTER;
167          com.sun.star.style.TabAlign TA2 = com.sun.star.style.TabAlign.RIGHT;
168 
169          if ((TSold.Alignment).equals(TA1)) TS.Alignment = TA2;
170                              else TS.Alignment = TA1;
171 
172          TS.Position = ((TSold.Position)+1);
173 
174          newValue = TS;
175    } else
176 
177    if (oldValue instanceof com.sun.star.style.DropCapFormat) {
178          com.sun.star.style.DropCapFormat DCF = new com.sun.star.style.DropCapFormat();
179          com.sun.star.style.DropCapFormat DCFold = (com.sun.star.style.DropCapFormat) oldValue;
180          DCF.Count = (byte) ((DCFold.Count)+1);
181          DCF.Distance = (short) ((DCFold.Distance)+1);
182          DCF.Lines = (byte) ((DCFold.Lines)+1);
183          newValue = DCF;
184    } else
185 
186    if (oldValue instanceof com.sun.star.text.TextContentAnchorType) {
187          com.sun.star.text.TextContentAnchorType TCAT1 = com.sun.star.text.TextContentAnchorType.AS_CHARACTER;
188          com.sun.star.text.TextContentAnchorType TCAT2 = com.sun.star.text.TextContentAnchorType.AT_CHARACTER;
189          com.sun.star.text.TextContentAnchorType TCAT3 = com.sun.star.text.TextContentAnchorType.AT_FRAME;
190          com.sun.star.text.TextContentAnchorType TCAT4 = com.sun.star.text.TextContentAnchorType.AT_PAGE;
191          com.sun.star.text.TextContentAnchorType TCAT5 = com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH;
192          if (oldValue.equals(TCAT1)) newValue = TCAT2;
193          if (oldValue.equals(TCAT2)) newValue = TCAT3;
194          if (oldValue.equals(TCAT3)) newValue = TCAT4;
195          if (oldValue.equals(TCAT4)) newValue = TCAT5;
196          if (oldValue.equals(TCAT5)) newValue = TCAT1;
197    } else
198 
199    if (oldValue instanceof com.sun.star.text.WrapTextMode) {
200          com.sun.star.text.WrapTextMode WTM1 = com.sun.star.text.WrapTextMode.DYNAMIC;
201          com.sun.star.text.WrapTextMode WTM2 = com.sun.star.text.WrapTextMode.LEFT;
202          com.sun.star.text.WrapTextMode WTM3 = com.sun.star.text.WrapTextMode.NONE;
203          com.sun.star.text.WrapTextMode WTM4 = com.sun.star.text.WrapTextMode.PARALLEL;
204          com.sun.star.text.WrapTextMode WTM5 = com.sun.star.text.WrapTextMode.RIGHT;
205          com.sun.star.text.WrapTextMode WTM6 = com.sun.star.text.WrapTextMode.THROUGHT;
206          if (oldValue.equals(WTM1)) newValue = WTM2;
207          if (oldValue.equals(WTM2)) newValue = WTM3;
208          if (oldValue.equals(WTM3)) newValue = WTM4;
209          if (oldValue.equals(WTM4)) newValue = WTM5;
210          if (oldValue.equals(WTM5)) newValue = WTM6;
211          if (oldValue.equals(WTM6)) newValue = WTM1;
212    } else
213 
214    if (oldValue instanceof com.sun.star.awt.Size) {
215          com.sun.star.awt.Size oldSize = (com.sun.star.awt.Size) oldValue;
216          com.sun.star.awt.Size newSize = new com.sun.star.awt.Size();
217          newSize.Height = oldSize.Height +1;
218          newSize.Width = oldSize.Width +1;
219          newValue = newSize;
220    } else
221 
222    if (oldValue instanceof com.sun.star.awt.Rectangle) {
223          com.sun.star.awt.Rectangle oldRectangle = (com.sun.star.awt.Rectangle) oldValue;
224          com.sun.star.awt.Rectangle newRectangle = new com.sun.star.awt.Rectangle();
225          newRectangle.Height =oldRectangle.Height +1;
226          newRectangle.Width = oldRectangle.Width +1;
227          newRectangle.X =oldRectangle.Y +1;
228          newRectangle.Y = oldRectangle.X +1;
229          newValue = newRectangle;
230    } else
231 
232    if (oldValue instanceof com.sun.star.awt.Point) {
233          com.sun.star.awt.Point oldPoint = (com.sun.star.awt.Point) oldValue;
234          com.sun.star.awt.Point newPoint = new com.sun.star.awt.Point();
235          newPoint.X = oldPoint.X +1;
236          newPoint.Y = oldPoint.Y +1;
237          newValue = newPoint;
238    } else
239 
240    if (oldValue instanceof com.sun.star.table.ShadowFormat) {
241          com.sun.star.table.ShadowFormat SF = new com.sun.star.table.ShadowFormat();
242          com.sun.star.table.ShadowFormat SFold = (com.sun.star.table.ShadowFormat) oldValue;
243          SF.IsTransparent = (! SFold.IsTransparent);
244          SF.ShadowWidth = (short) ((SFold.ShadowWidth)+1);
245          newValue = SF;
246    } else
247 
248    if (oldValue instanceof com.sun.star.awt.FontSlant) {
249          com.sun.star.awt.FontSlant FS1 = com.sun.star.awt.FontSlant.DONTKNOW;
250          com.sun.star.awt.FontSlant FS2 = com.sun.star.awt.FontSlant.ITALIC;
251          com.sun.star.awt.FontSlant FS3 = com.sun.star.awt.FontSlant.NONE;
252          com.sun.star.awt.FontSlant FS4 = com.sun.star.awt.FontSlant.OBLIQUE;
253          com.sun.star.awt.FontSlant FS5 = com.sun.star.awt.FontSlant.REVERSE_ITALIC;
254          com.sun.star.awt.FontSlant FS6 = com.sun.star.awt.FontSlant.REVERSE_OBLIQUE;
255          if (oldValue.equals(FS1)) newValue = FS2;
256          if (oldValue.equals(FS2)) newValue = FS3;
257          if (oldValue.equals(FS3)) newValue = FS4;
258          if (oldValue.equals(FS4)) newValue = FS5;
259          if (oldValue.equals(FS5)) newValue = FS6;
260          if (oldValue.equals(FS6)) newValue = FS1;
261    } else
262 
263    if (oldValue instanceof com.sun.star.table.CellHoriJustify) {
264          com.sun.star.table.CellHoriJustify CHJ1 = com.sun.star.table.CellHoriJustify.BLOCK;
265          com.sun.star.table.CellHoriJustify CHJ2 = com.sun.star.table.CellHoriJustify.CENTER;
266          com.sun.star.table.CellHoriJustify CHJ3 = com.sun.star.table.CellHoriJustify.LEFT;
267          com.sun.star.table.CellHoriJustify CHJ4 = com.sun.star.table.CellHoriJustify.REPEAT;
268          com.sun.star.table.CellHoriJustify CHJ5 = com.sun.star.table.CellHoriJustify.RIGHT;
269          com.sun.star.table.CellHoriJustify CHJ6 = com.sun.star.table.CellHoriJustify.STANDARD;
270          if (oldValue.equals(CHJ1)) newValue = CHJ2;
271          if (oldValue.equals(CHJ2)) newValue = CHJ3;
272          if (oldValue.equals(CHJ3)) newValue = CHJ4;
273          if (oldValue.equals(CHJ4)) newValue = CHJ5;
274          if (oldValue.equals(CHJ5)) newValue = CHJ6;
275          if (oldValue.equals(CHJ6)) newValue = CHJ1;
276    } else
277 
278    if (oldValue instanceof com.sun.star.table.CellVertJustify) {
279          com.sun.star.table.CellVertJustify CVJ1 = com.sun.star.table.CellVertJustify.BOTTOM;
280          com.sun.star.table.CellVertJustify CVJ2 = com.sun.star.table.CellVertJustify.CENTER;
281          com.sun.star.table.CellVertJustify CVJ3 = com.sun.star.table.CellVertJustify.STANDARD;
282          com.sun.star.table.CellVertJustify CVJ4 = com.sun.star.table.CellVertJustify.TOP;
283          if (oldValue.equals(CVJ1)) newValue = CVJ2;
284          if (oldValue.equals(CVJ2)) newValue = CVJ3;
285          if (oldValue.equals(CVJ3)) newValue = CVJ4;
286          if (oldValue.equals(CVJ4)) newValue = CVJ1;
287    } else
288 
289    if (oldValue instanceof com.sun.star.table.CellOrientation) {
290          com.sun.star.table.CellOrientation CO1 = com.sun.star.table.CellOrientation.BOTTOMTOP;
291          com.sun.star.table.CellOrientation CO2 = com.sun.star.table.CellOrientation.STACKED;
292          com.sun.star.table.CellOrientation CO3 = com.sun.star.table.CellOrientation.STANDARD;
293          com.sun.star.table.CellOrientation CO4 = com.sun.star.table.CellOrientation.TOPBOTTOM;
294          if (oldValue.equals(CO1)) newValue = CO2;
295          if (oldValue.equals(CO2)) newValue = CO3;
296          if (oldValue.equals(CO3)) newValue = CO4;
297          if (oldValue.equals(CO4)) newValue = CO1;
298    } else
299 
300    if (oldValue instanceof com.sun.star.util.CellProtection) {
301          com.sun.star.util.CellProtection CP = new com.sun.star.util.CellProtection();
302          com.sun.star.util.CellProtection CPold = (com.sun.star.util.CellProtection) oldValue;
303          CP.IsFormulaHidden = (! CPold.IsFormulaHidden);
304          CP.IsHidden = (! CPold.IsHidden);
305          CP.IsLocked = (! CPold.IsLocked);
306          CP.IsPrintHidden = (! CPold.IsPrintHidden);
307          newValue = CP;
308    } else
309 
310    if (oldValue instanceof com.sun.star.table.TableBorder) {
311          com.sun.star.table.TableBorder TBold = (com.sun.star.table.TableBorder) oldValue;
312          com.sun.star.table.TableBorder TB = new com.sun.star.table.TableBorder();
313          TB.IsBottomLineValid = (! TBold.IsBottomLineValid);
314          TB.IsDistanceValid = (! TBold.IsDistanceValid);
315          TB.IsRightLineValid = (! TBold.IsRightLineValid);
316          TB.IsTopLineValid = (! TBold.IsTopLineValid);
317          newValue = TB;
318    } else
319 /*
320    if (oldValue instanceof com.sun.star.awt.XBitmap) {
321         newValue = new BitmapLoader();
322    }
323 */
324    if (oldValue instanceof com.sun.star.drawing.FillStyle) {
325          com.sun.star.drawing.FillStyle FS1 = com.sun.star.drawing.FillStyle.NONE;
326          com.sun.star.drawing.FillStyle FS2 = com.sun.star.drawing.FillStyle.SOLID;
327          com.sun.star.drawing.FillStyle FS3 = com.sun.star.drawing.FillStyle.GRADIENT;
328          com.sun.star.drawing.FillStyle FS4 = com.sun.star.drawing.FillStyle.HATCH;
329          com.sun.star.drawing.FillStyle FS5 = com.sun.star.drawing.FillStyle.BITMAP;
330          if (oldValue.equals(FS1)) newValue = FS2;
331          if (oldValue.equals(FS2)) newValue = FS3;
332          if (oldValue.equals(FS3)) newValue = FS4;
333          if (oldValue.equals(FS4)) newValue = FS5;
334          if (oldValue.equals(FS5)) newValue = FS1;
335    } else
336 
337    if (oldValue instanceof com.sun.star.awt.Gradient){
338         com.sun.star.awt.Gradient _newValue = (com.sun.star.awt.Gradient)oldValue;
339         _newValue.Angle += 10;
340         _newValue.Border += 1;
341         _newValue.EndColor += 1000;
342         _newValue.EndIntensity -= 10;
343         _newValue.StartColor += 500;
344         _newValue.StartIntensity += 10;
345         _newValue.StepCount += 50;
346         _newValue.Style = com.sun.star.awt.GradientStyle.RADIAL;
347         _newValue.XOffset += 10;
348         _newValue.YOffset += 10;
349         newValue = _newValue;
350    } else
351 
352    if (oldValue instanceof com.sun.star.text.GraphicCrop){
353         com.sun.star.text.GraphicCrop _newValue = (com.sun.star.text.GraphicCrop)oldValue;
354         _newValue.Bottom += 10;
355         _newValue.Left += 10;
356         _newValue.Right += 10;
357         _newValue.Top += 10;
358         newValue = _newValue;
359    } else
360 
361    if (oldValue instanceof com.sun.star.drawing.BitmapMode){
362         com.sun.star.drawing.BitmapMode bm1 = com.sun.star.drawing.BitmapMode.NO_REPEAT;
363         com.sun.star.drawing.BitmapMode bm2 = com.sun.star.drawing.BitmapMode.REPEAT;
364         com.sun.star.drawing.BitmapMode bm3 = com.sun.star.drawing.BitmapMode.STRETCH;
365          if (oldValue.equals(bm1)) newValue = bm2;
366          if (oldValue.equals(bm2)) newValue = bm3;
367          if (oldValue.equals(bm3)) newValue = bm3;
368    } else
369 
370    if (oldValue instanceof com.sun.star.drawing.TextAdjust){
371         com.sun.star.drawing.TextAdjust TA1 = com.sun.star.drawing.TextAdjust.BLOCK;
372         com.sun.star.drawing.TextAdjust TA2 = com.sun.star.drawing.TextAdjust.CENTER;
373         com.sun.star.drawing.TextAdjust TA3 = com.sun.star.drawing.TextAdjust.LEFT;
374         com.sun.star.drawing.TextAdjust TA4 = com.sun.star.drawing.TextAdjust.RIGHT;
375         com.sun.star.drawing.TextAdjust TA5 = com.sun.star.drawing.TextAdjust.STRETCH;
376         if (oldValue.equals(TA1)) newValue = TA2;
377         if (oldValue.equals(TA2)) newValue = TA3;
378         if (oldValue.equals(TA3)) newValue = TA4;
379         if (oldValue.equals(TA4)) newValue = TA5;
380         if (oldValue.equals(TA5)) newValue = TA1;
381    } else
382     if (oldValue instanceof com.sun.star.drawing.TextFitToSizeType){
383         com.sun.star.drawing.TextFitToSizeType TF1 = com.sun.star.drawing.TextFitToSizeType.ALLLINES;
384         com.sun.star.drawing.TextFitToSizeType TF2 = com.sun.star.drawing.TextFitToSizeType.NONE;
385         com.sun.star.drawing.TextFitToSizeType TF3 = com.sun.star.drawing.TextFitToSizeType.PROPORTIONAL;
386         com.sun.star.drawing.TextFitToSizeType TF4 = com.sun.star.drawing.TextFitToSizeType.RESIZEATTR;
387         if (oldValue.equals(TF1)) newValue = TF2;
388         if (oldValue.equals(TF2)) newValue = TF3;
389         if (oldValue.equals(TF3)) newValue = TF4;
390         if (oldValue.equals(TF4)) newValue = TF1;
391     } else
392     if (oldValue instanceof com.sun.star.drawing.TextAnimationKind){
393         com.sun.star.drawing.TextAnimationKind AK1 = com.sun.star.drawing.TextAnimationKind.NONE;
394         com.sun.star.drawing.TextAnimationKind AK2 = com.sun.star.drawing.TextAnimationKind.SLIDE;
395         com.sun.star.drawing.TextAnimationKind AK3 = com.sun.star.drawing.TextAnimationKind.SCROLL;
396         com.sun.star.drawing.TextAnimationKind AK4 = com.sun.star.drawing.TextAnimationKind.BLINK;
397         com.sun.star.drawing.TextAnimationKind AK5 = com.sun.star.drawing.TextAnimationKind.ALTERNATE;
398 
399         if (oldValue.equals(AK1)) newValue = AK2;
400         if (oldValue.equals(AK2)) newValue = AK3;
401         if (oldValue.equals(AK3)) newValue = AK4;
402         if (oldValue.equals(AK4)) newValue = AK5;
403         if (oldValue.equals(AK5)) newValue = AK1;
404     } else
405     if (oldValue instanceof com.sun.star.drawing.TextAnimationDirection){
406         com.sun.star.drawing.TextAnimationDirection AD1 = com.sun.star.drawing.TextAnimationDirection.LEFT;
407         com.sun.star.drawing.TextAnimationDirection AD2 = com.sun.star.drawing.TextAnimationDirection.RIGHT;
408         com.sun.star.drawing.TextAnimationDirection AD3 = com.sun.star.drawing.TextAnimationDirection.DOWN;
409         com.sun.star.drawing.TextAnimationDirection AD4 = com.sun.star.drawing.TextAnimationDirection.UP;
410         if (oldValue.equals(AD1)) newValue = AD2;
411         if (oldValue.equals(AD2)) newValue = AD3;
412         if (oldValue.equals(AD3)) newValue = AD4;
413         if (oldValue.equals(AD4)) newValue = AD1;
414     } else
415     if (oldValue instanceof com.sun.star.drawing.LineStyle){
416         com.sun.star.drawing.LineStyle LS1 = com.sun.star.drawing.LineStyle.NONE;
417         com.sun.star.drawing.LineStyle LS2 = com.sun.star.drawing.LineStyle.DASH;
418         com.sun.star.drawing.LineStyle LS3 = com.sun.star.drawing.LineStyle.SOLID;
419         if (oldValue.equals(LS1)) newValue = LS2;
420         if (oldValue.equals(LS2)) newValue = LS3;
421         if (oldValue.equals(LS3)) newValue = LS1;
422     } else
423     if (oldValue instanceof com.sun.star.drawing.LineJoint){
424         com.sun.star.drawing.LineJoint LJ1 = com.sun.star.drawing.LineJoint.BEVEL;
425         com.sun.star.drawing.LineJoint LJ2 = com.sun.star.drawing.LineJoint.MIDDLE;
426         com.sun.star.drawing.LineJoint LJ3 = com.sun.star.drawing.LineJoint.MITER;
427         com.sun.star.drawing.LineJoint LJ4 = com.sun.star.drawing.LineJoint.NONE;
428         com.sun.star.drawing.LineJoint LJ5 = com.sun.star.drawing.LineJoint.ROUND;
429         if (oldValue.equals(LJ1)) newValue = LJ2;
430         if (oldValue.equals(LJ2)) newValue = LJ3;
431         if (oldValue.equals(LJ3)) newValue = LJ4;
432         if (oldValue.equals(LJ4)) newValue = LJ5;
433         if (oldValue.equals(LJ5)) newValue = LJ1;
434     } else
435     if (oldValue instanceof com.sun.star.drawing.LineDash){
436         com.sun.star.drawing.LineDash _newValue = (com.sun.star.drawing.LineDash)oldValue;
437         _newValue.Dashes += 1;
438         _newValue.DashLen += 10;
439         _newValue.Distance += 20;
440         _newValue.DotLen += 10;
441         _newValue.Dots += 10;
442         _newValue.Style = com.sun.star.drawing.DashStyle.RECT;
443         newValue = _newValue;
444     } else
445     if (oldValue instanceof com.sun.star.drawing.Hatch){
446         com.sun.star.drawing.Hatch _newValue = (com.sun.star.drawing.Hatch) oldValue;
447         _newValue.Angle += 10;
448         _newValue.Color += 1000;
449         _newValue.Distance += 10;
450         _newValue.Style = com.sun.star.drawing.HatchStyle.DOUBLE;
451     } else
452     if (oldValue instanceof com.sun.star.drawing.RectanglePoint){
453         com.sun.star.drawing.RectanglePoint RP1 = com.sun.star.drawing.RectanglePoint.LEFT_BOTTOM;
454         com.sun.star.drawing.RectanglePoint RP2 = com.sun.star.drawing.RectanglePoint.LEFT_MIDDLE;
455         com.sun.star.drawing.RectanglePoint RP3 = com.sun.star.drawing.RectanglePoint.LEFT_TOP;
456         com.sun.star.drawing.RectanglePoint RP4 = com.sun.star.drawing.RectanglePoint.MIDDLE_BOTTOM;
457         com.sun.star.drawing.RectanglePoint RP5 = com.sun.star.drawing.RectanglePoint.MIDDLE_MIDDLE;
458         com.sun.star.drawing.RectanglePoint RP6 = com.sun.star.drawing.RectanglePoint.MIDDLE_TOP;
459         com.sun.star.drawing.RectanglePoint RP7 = com.sun.star.drawing.RectanglePoint.RIGHT_BOTTOM;
460         com.sun.star.drawing.RectanglePoint RP8 = com.sun.star.drawing.RectanglePoint.RIGHT_MIDDLE;
461         com.sun.star.drawing.RectanglePoint RP9 = com.sun.star.drawing.RectanglePoint.RIGHT_TOP;
462 
463         if (oldValue.equals(RP1)) newValue = RP2;
464         if (oldValue.equals(RP2)) newValue = RP3;
465         if (oldValue.equals(RP3)) newValue = RP4;
466         if (oldValue.equals(RP4)) newValue = RP5;
467         if (oldValue.equals(RP5)) newValue = RP6;
468         if (oldValue.equals(RP6)) newValue = RP7;
469         if (oldValue.equals(RP7)) newValue = RP8;
470         if (oldValue.equals(RP8)) newValue = RP9;
471         if (oldValue.equals(RP9)) newValue = RP1;
472 
473     } else
474     if (oldValue instanceof com.sun.star.chart.ChartErrorCategory){
475         com.sun.star.chart.ChartErrorCategory CC1 = com.sun.star.chart.ChartErrorCategory.CONSTANT_VALUE;
476         com.sun.star.chart.ChartErrorCategory CC2 = com.sun.star.chart.ChartErrorCategory.ERROR_MARGIN;
477         com.sun.star.chart.ChartErrorCategory CC3 = com.sun.star.chart.ChartErrorCategory.NONE;
478         com.sun.star.chart.ChartErrorCategory CC4 = com.sun.star.chart.ChartErrorCategory.PERCENT;
479         com.sun.star.chart.ChartErrorCategory CC5 = com.sun.star.chart.ChartErrorCategory.STANDARD_DEVIATION;
480         com.sun.star.chart.ChartErrorCategory CC6 = com.sun.star.chart.ChartErrorCategory.VARIANCE;
481         if (oldValue.equals(CC1)) newValue = CC2;
482         if (oldValue.equals(CC2)) newValue = CC3;
483         if (oldValue.equals(CC3)) newValue = CC4;
484         if (oldValue.equals(CC4)) newValue = CC5;
485         if (oldValue.equals(CC5)) newValue = CC6;
486         if (oldValue.equals(CC6)) newValue = CC1;
487     } else
488     if (oldValue instanceof com.sun.star.chart.ChartErrorIndicatorType){
489         com.sun.star.chart.ChartErrorIndicatorType IT1 = com.sun.star.chart.ChartErrorIndicatorType.LOWER;
490         com.sun.star.chart.ChartErrorIndicatorType IT2 = com.sun.star.chart.ChartErrorIndicatorType.NONE;
491         com.sun.star.chart.ChartErrorIndicatorType IT3 = com.sun.star.chart.ChartErrorIndicatorType.TOP_AND_BOTTOM;
492         com.sun.star.chart.ChartErrorIndicatorType IT4 = com.sun.star.chart.ChartErrorIndicatorType.UPPER;
493         if (oldValue.equals(IT1)) newValue = IT2;
494         if (oldValue.equals(IT2)) newValue = IT3;
495         if (oldValue.equals(IT3)) newValue = IT4;
496         if (oldValue.equals(IT4)) newValue = IT1;
497     } else
498     if (oldValue instanceof com.sun.star.chart.ChartRegressionCurveType){
499         com.sun.star.chart.ChartRegressionCurveType CT1 = com.sun.star.chart.ChartRegressionCurveType.EXPONENTIAL;
500         com.sun.star.chart.ChartRegressionCurveType CT2 = com.sun.star.chart.ChartRegressionCurveType.LINEAR;
501         com.sun.star.chart.ChartRegressionCurveType CT3 = com.sun.star.chart.ChartRegressionCurveType.LOGARITHM;
502         com.sun.star.chart.ChartRegressionCurveType CT4 = com.sun.star.chart.ChartRegressionCurveType.NONE;
503         com.sun.star.chart.ChartRegressionCurveType CT5 = com.sun.star.chart.ChartRegressionCurveType.POLYNOMIAL;
504         com.sun.star.chart.ChartRegressionCurveType CT6 = com.sun.star.chart.ChartRegressionCurveType.POWER;
505         if (oldValue.equals(CT1)) newValue = CT2;
506         if (oldValue.equals(CT2)) newValue = CT3;
507         if (oldValue.equals(CT3)) newValue = CT4;
508         if (oldValue.equals(CT4)) newValue = CT5;
509         if (oldValue.equals(CT5)) newValue = CT6;
510         if (oldValue.equals(CT6)) newValue = CT1;
511 
512     } else
513     if (oldValue instanceof com.sun.star.chart.ChartDataRowSource){
514         com.sun.star.chart.ChartDataRowSource RS1 = com.sun.star.chart.ChartDataRowSource.COLUMNS;
515         com.sun.star.chart.ChartDataRowSource RS2 = com.sun.star.chart.ChartDataRowSource.ROWS;
516         if (oldValue.equals(RS1)) newValue = RS2;
517         if (oldValue.equals(RS2)) newValue = RS1;
518     } else
519     if (oldValue instanceof com.sun.star.awt.FontDescriptor){
520         com.sun.star.awt.FontDescriptor _newValue = (com.sun.star.awt.FontDescriptor)oldValue;
521         _newValue.CharacterWidth += 5;
522         _newValue.CharSet = com.sun.star.awt.CharSet.ANSI;
523         _newValue.Family = com.sun.star.awt.FontFamily.DECORATIVE;
524         _newValue.Height += 2;
525         _newValue.Kerning = !_newValue.Kerning;
526         _newValue.Name = "Courier";
527         _newValue.Orientation += 45;
528         _newValue.Pitch = com.sun.star.awt.FontPitch.VARIABLE;
529         _newValue.Slant = com.sun.star.awt.FontSlant.REVERSE_ITALIC;
530         _newValue.Strikeout = com.sun.star.awt.FontStrikeout.X;
531         _newValue.StyleName = "Bold";
532         _newValue.Type = com.sun.star.awt.FontType.SCALABLE;
533         _newValue.Underline = com.sun.star.awt.FontUnderline.BOLDDASHDOTDOT;
534         _newValue.Weight += 5;
535         _newValue.Width += 6;
536         _newValue.WordLineMode = !_newValue.WordLineMode;
537 
538         newValue = _newValue;
539     } else
540     if (oldValue instanceof com.sun.star.form.NavigationBarMode){
541         com.sun.star.form.NavigationBarMode BM1 = com.sun.star.form.NavigationBarMode.CURRENT;
542         com.sun.star.form.NavigationBarMode BM2 = com.sun.star.form.NavigationBarMode.NONE;
543         com.sun.star.form.NavigationBarMode BM3 = com.sun.star.form.NavigationBarMode.PARENT;
544         if (oldValue.equals(BM1)) newValue = BM2;
545         if (oldValue.equals(BM2)) newValue = BM3;
546         if (oldValue.equals(BM3)) newValue = BM1;
547     } else
548     if (oldValue instanceof com.sun.star.form.FormSubmitEncoding){
549         com.sun.star.form.FormSubmitEncoding SE1 = com.sun.star.form.FormSubmitEncoding.MULTIPART;
550         com.sun.star.form.FormSubmitEncoding SE2 = com.sun.star.form.FormSubmitEncoding.TEXT;
551         com.sun.star.form.FormSubmitEncoding SE3 = com.sun.star.form.FormSubmitEncoding.URL;
552         if (oldValue.equals(SE1)) newValue = SE2;
553         if (oldValue.equals(SE2)) newValue = SE3;
554         if (oldValue.equals(SE3)) newValue = SE1;
555     } else
556     if (oldValue instanceof com.sun.star.form.FormSubmitMethod){
557         com.sun.star.form.FormSubmitMethod FM1 = com.sun.star.form.FormSubmitMethod.GET;
558         com.sun.star.form.FormSubmitMethod FM2 = com.sun.star.form.FormSubmitMethod.POST;
559         if (oldValue.equals(FM1)) newValue = FM2;
560         if (oldValue.equals(FM2)) newValue = FM1;
561     } else
562 
563    if (oldValue instanceof com.sun.star.text.SectionFileLink){
564         com.sun.star.text.SectionFileLink _newValue =
565                                     new com.sun.star.text.SectionFileLink();
566 
567         _newValue.FileURL = util.utils.getFullTestURL("SwXTextSection.sdw");
568         newValue=_newValue;
569     } else
570 
571    if (oldValue instanceof com.sun.star.table.BorderLine){
572         com.sun.star.table.BorderLine _newValue = (com.sun.star.table.BorderLine)oldValue;
573     _newValue.Color += 2;
574         _newValue.InnerLineWidth += 2;
575         _newValue.LineDistance += 2;
576         _newValue.OuterLineWidth += 3;
577         newValue=_newValue;
578     } else
579 
580    if (oldValue instanceof com.sun.star.text.XTextColumns){
581         com.sun.star.text.XTextColumns _newValue = (com.sun.star.text.XTextColumns)oldValue;
582     _newValue.setColumnCount((short)1);
583         newValue=_newValue;
584     } else
585 
586    if (oldValue instanceof com.sun.star.form.FormButtonType){
587         com.sun.star.form.FormButtonType BT1 = com.sun.star.form.FormButtonType.PUSH;
588         com.sun.star.form.FormButtonType BT2 = com.sun.star.form.FormButtonType.RESET;
589         com.sun.star.form.FormButtonType BT3 = com.sun.star.form.FormButtonType.SUBMIT;
590         com.sun.star.form.FormButtonType BT4 = com.sun.star.form.FormButtonType.URL;
591 
592         if (oldValue.equals(BT1)) newValue = BT2;
593         if (oldValue.equals(BT2)) newValue = BT3;
594         if (oldValue.equals(BT3)) newValue = BT4;
595         if (oldValue.equals(BT4)) newValue = BT1;
596 
597    } else
598    if (oldValue instanceof com.sun.star.form.ListSourceType){
599         com.sun.star.form.ListSourceType ST1 = com.sun.star.form.ListSourceType.QUERY;
600         com.sun.star.form.ListSourceType ST2 = com.sun.star.form.ListSourceType.SQL;
601         com.sun.star.form.ListSourceType ST3 = com.sun.star.form.ListSourceType.SQLPASSTHROUGH;
602         com.sun.star.form.ListSourceType ST4 = com.sun.star.form.ListSourceType.TABLE;
603         com.sun.star.form.ListSourceType ST5 = com.sun.star.form.ListSourceType.TABLEFIELDS;
604         com.sun.star.form.ListSourceType ST6 = com.sun.star.form.ListSourceType.VALUELIST;
605         if (oldValue.equals(ST1)) newValue = ST2;
606         if (oldValue.equals(ST2)) newValue = ST3;
607         if (oldValue.equals(ST3)) newValue = ST4;
608         if (oldValue.equals(ST4)) newValue = ST5;
609         if (oldValue.equals(ST5)) newValue = ST6;
610         if (oldValue.equals(ST6)) newValue = ST1;
611    } else
612    if (oldValue instanceof com.sun.star.table.BorderLine){
613         com.sun.star.table.BorderLine _newValue = (com.sun.star.table.BorderLine)oldValue;
614         _newValue.Color += 1000;
615         _newValue.InnerLineWidth += 2;
616         _newValue.LineDistance +=3;
617         _newValue.OuterLineWidth += 3;
618         newValue = _newValue;
619    } else
620    if (oldValue instanceof com.sun.star.sheet.DataPilotFieldOrientation) {
621         com.sun.star.sheet.DataPilotFieldOrientation FO1 = com.sun.star.sheet.DataPilotFieldOrientation.PAGE;
622         com.sun.star.sheet.DataPilotFieldOrientation FO2 = com.sun.star.sheet.DataPilotFieldOrientation.COLUMN;
623         com.sun.star.sheet.DataPilotFieldOrientation FO3 = com.sun.star.sheet.DataPilotFieldOrientation.DATA;
624         com.sun.star.sheet.DataPilotFieldOrientation FO4 = com.sun.star.sheet.DataPilotFieldOrientation.HIDDEN;
625         com.sun.star.sheet.DataPilotFieldOrientation FO5 = com.sun.star.sheet.DataPilotFieldOrientation.ROW;
626         if (oldValue.equals(FO1)) newValue = FO2;
627         if (oldValue.equals(FO2)) newValue = FO3;
628         if (oldValue.equals(FO3)) newValue = FO4;
629         if (oldValue.equals(FO4)) newValue = FO5;
630         if (oldValue.equals(FO5)) newValue = FO1;
631    } else
632    if (oldValue instanceof com.sun.star.sheet.GeneralFunction) {
633         com.sun.star.sheet.GeneralFunction GF1 = com.sun.star.sheet.GeneralFunction.NONE;
634         com.sun.star.sheet.GeneralFunction GF2 = com.sun.star.sheet.GeneralFunction.AVERAGE;
635         com.sun.star.sheet.GeneralFunction GF3 = com.sun.star.sheet.GeneralFunction.COUNT;
636         com.sun.star.sheet.GeneralFunction GF4 = com.sun.star.sheet.GeneralFunction.COUNTNUMS;
637         com.sun.star.sheet.GeneralFunction GF5 = com.sun.star.sheet.GeneralFunction.MAX;
638         com.sun.star.sheet.GeneralFunction GF6 = com.sun.star.sheet.GeneralFunction.MIN;
639         com.sun.star.sheet.GeneralFunction GF7 = com.sun.star.sheet.GeneralFunction.AUTO;
640         com.sun.star.sheet.GeneralFunction GF8 = com.sun.star.sheet.GeneralFunction.PRODUCT;
641         com.sun.star.sheet.GeneralFunction GF9 = com.sun.star.sheet.GeneralFunction.STDEV;
642         com.sun.star.sheet.GeneralFunction GF10 = com.sun.star.sheet.GeneralFunction.STDEVP;
643         com.sun.star.sheet.GeneralFunction GF11 = com.sun.star.sheet.GeneralFunction.SUM;
644         com.sun.star.sheet.GeneralFunction GF12 = com.sun.star.sheet.GeneralFunction.VAR;
645         com.sun.star.sheet.GeneralFunction GF13 = com.sun.star.sheet.GeneralFunction.VARP;
646 
647         if (oldValue.equals(GF1)) newValue = GF2;
648         if (oldValue.equals(GF2)) newValue = GF3;
649         if (oldValue.equals(GF3)) newValue = GF4;
650         if (oldValue.equals(GF4)) newValue = GF5;
651         if (oldValue.equals(GF5)) newValue = GF6;
652         if (oldValue.equals(GF6)) newValue = GF7;
653         if (oldValue.equals(GF7)) newValue = GF8;
654         if (oldValue.equals(GF8)) newValue = GF9;
655         if (oldValue.equals(GF9)) newValue = GF10;
656         if (oldValue.equals(GF10)) newValue = GF11;
657         if (oldValue.equals(GF11)) newValue = GF12;
658         if (oldValue.equals(GF12)) newValue = GF13;
659         if (oldValue.equals(GF13)) newValue = GF1;
660    } else
661 
662    if (oldValue instanceof com.sun.star.table.CellAddress){
663         com.sun.star.table.CellAddress _newValue = (com.sun.star.table.CellAddress)oldValue;
664         _newValue.Column += 1;
665         _newValue.Row += 1;
666         newValue = _newValue;
667    } else
668 
669    if (oldValue instanceof com.sun.star.table.TableOrientation){
670         com.sun.star.table.TableOrientation TO1 = com.sun.star.table.TableOrientation.COLUMNS;
671         com.sun.star.table.TableOrientation TO2 = com.sun.star.table.TableOrientation.ROWS;
672         if (oldValue.equals(TO1)) newValue = TO2; else newValue = TO1;
673    } else
674 
675    if (oldValue instanceof com.sun.star.sheet.DataImportMode){
676         com.sun.star.sheet.DataImportMode DIM1 = com.sun.star.sheet.DataImportMode.NONE;
677         com.sun.star.sheet.DataImportMode DIM2 = com.sun.star.sheet.DataImportMode.QUERY;
678         com.sun.star.sheet.DataImportMode DIM3 = com.sun.star.sheet.DataImportMode.SQL;
679         com.sun.star.sheet.DataImportMode DIM4 = com.sun.star.sheet.DataImportMode.TABLE;
680 
681         if (oldValue.equals(DIM1)) newValue = DIM2;
682         if (oldValue.equals(DIM2)) newValue = DIM3;
683         if (oldValue.equals(DIM3)) newValue = DIM4;
684         if (oldValue.equals(DIM4)) newValue = DIM1;
685 
686    } else
687 
688 //   if (oldValue instanceof com.sun.star.text.TableColumnSeparator[]){
689 //        com.sun.star.text.TableColumnSeparator[] _newValue = (com.sun.star.text.TableColumnSeparator[]) oldValue;
690 //        com.sun.star.text.TableColumnSeparator sep = new com.sun.star.text.TableColumnSeparator();
691 //        sep.IsVisible = ! _newValue[0].IsVisible;
692 //        _newValue[0] = sep;
693 //        newValue = _newValue;
694 //   } else
695 
696    if (oldValue instanceof com.sun.star.style.BreakType){
697         com.sun.star.style.BreakType BT1 = com.sun.star.style.BreakType.COLUMN_AFTER;
698         com.sun.star.style.BreakType BT2 = com.sun.star.style.BreakType.COLUMN_BEFORE;
699         com.sun.star.style.BreakType BT3 = com.sun.star.style.BreakType.COLUMN_BOTH;
700         com.sun.star.style.BreakType BT4 = com.sun.star.style.BreakType.PAGE_AFTER;
701         com.sun.star.style.BreakType BT5 = com.sun.star.style.BreakType.PAGE_BEFORE;
702         com.sun.star.style.BreakType BT6 = com.sun.star.style.BreakType.PAGE_BOTH;
703         com.sun.star.style.BreakType BT7 = com.sun.star.style.BreakType.NONE;
704         if (oldValue.equals(BT1)) newValue = BT2;
705         if (oldValue.equals(BT2)) newValue = BT3;
706         if (oldValue.equals(BT3)) newValue = BT4;
707         if (oldValue.equals(BT4)) newValue = BT5;
708         if (oldValue.equals(BT6)) newValue = BT6;
709         if (oldValue.equals(BT6)) newValue = BT7;
710         if (oldValue.equals(BT7)) newValue = BT1;
711    } else
712     if (oldValue instanceof PropertyValue){
713         PropertyValue newVal = new PropertyValue();
714         newVal.Name = ((PropertyValue)oldValue).Name;
715         newVal.Value = changePValue(((PropertyValue)oldValue).Value);
716         newValue = newVal;
717     } else
718    if (oldValue instanceof com.sun.star.sheet.ValidationAlertStyle){
719         com.sun.star.sheet.ValidationAlertStyle VAS1 = com.sun.star.sheet.ValidationAlertStyle.INFO;
720         com.sun.star.sheet.ValidationAlertStyle VAS2 = com.sun.star.sheet.ValidationAlertStyle.MACRO;
721         com.sun.star.sheet.ValidationAlertStyle VAS3 = com.sun.star.sheet.ValidationAlertStyle.STOP;
722         com.sun.star.sheet.ValidationAlertStyle VAS4 = com.sun.star.sheet.ValidationAlertStyle.WARNING;
723 
724         if (oldValue.equals(VAS1)) newValue = VAS2;
725         if (oldValue.equals(VAS2)) newValue = VAS3;
726         if (oldValue.equals(VAS3)) newValue = VAS4;
727         if (oldValue.equals(VAS4)) newValue = VAS1;
728 
729    } else
730     if (oldValue instanceof com.sun.star.sheet.ValidationType){
731         com.sun.star.sheet.ValidationType VT1 = com.sun.star.sheet.ValidationType.ANY;
732         com.sun.star.sheet.ValidationType VT2 = com.sun.star.sheet.ValidationType.CUSTOM;
733         com.sun.star.sheet.ValidationType VT3 = com.sun.star.sheet.ValidationType.DATE;
734         com.sun.star.sheet.ValidationType VT4 = com.sun.star.sheet.ValidationType.DECIMAL;
735         com.sun.star.sheet.ValidationType VT5 = com.sun.star.sheet.ValidationType.LIST;
736         com.sun.star.sheet.ValidationType VT6 = com.sun.star.sheet.ValidationType.TEXT_LEN;
737         com.sun.star.sheet.ValidationType VT7 = com.sun.star.sheet.ValidationType.TIME;
738         com.sun.star.sheet.ValidationType VT8 = com.sun.star.sheet.ValidationType.WHOLE;
739 
740         if (oldValue.equals(VT1)) newValue = VT2;
741         if (oldValue.equals(VT2)) newValue = VT3;
742         if (oldValue.equals(VT3)) newValue = VT4;
743         if (oldValue.equals(VT4)) newValue = VT5;
744         if (oldValue.equals(VT5)) newValue = VT6;
745         if (oldValue.equals(VT6)) newValue = VT7;
746         if (oldValue.equals(VT7)) newValue = VT8;
747         if (oldValue.equals(VT8)) newValue = VT1;
748 
749     } else
750     if (oldValue instanceof com.sun.star.text.WritingMode){
751         if (oldValue.equals(com.sun.star.text.WritingMode.LR_TB)) {
752             newValue = com.sun.star.text.WritingMode.TB_RL;
753         } else {
754             newValue = com.sun.star.text.WritingMode.LR_TB;
755         }
756     } else
757     if (oldValue instanceof com.sun.star.uno.Enum) {
758         // universal changer for Enumerations
759         try {
760             Class enumClass = oldValue.getClass() ;
761             Field[] flds = enumClass.getFields() ;
762 
763             newValue = null ;
764 
765             for (int i = 0; i < flds.length; i++) {
766                 if (Enum.class.equals(flds[i].getType().getSuperclass())) {
767 
768                     Enum value = (Enum) flds[i].get(null) ;
769                     if (newValue == null && !value.equals(oldValue)) {
770                         newValue = value ;
771                         break ;
772                     }
773                 }
774             }
775         } catch (Exception e) {
776             System.err.println("Exception occured while changing Enumeration value:") ;
777             e.printStackTrace(System.err) ;
778         }
779         if (newValue == null) newValue = oldValue ;
780 
781     } else
782     if (oldValue instanceof com.sun.star.style.TabStop[]){
783         com.sun.star.style.TabStop[] _newValue = (com.sun.star.style.TabStop[]) oldValue;
784         if (_newValue.length == 0) {
785             _newValue = new com.sun.star.style.TabStop[1];
786         }
787         com.sun.star.style.TabStop sep = new com.sun.star.style.TabStop();
788         sep.Position += 1;
789         _newValue[0] = sep;
790         newValue = _newValue;
791     } else
792     if (oldValue instanceof short[]){
793         short[] oldArr = (short[])oldValue;
794         int len = oldArr.length;
795         short[] newArr = new short[len + 1];
796         for (int i = 0; i < len; i++) {
797             newArr[i] = (short)(oldArr[i] + 1);
798         }
799         newArr[len] = 5;
800         newValue = newArr;
801     } else
802     if (oldValue instanceof String[]){
803         String[] oldArr = (String[])oldValue;
804         int len = oldArr.length;
805         String[] newArr = new String[len + 1];
806         for (int i = 0; i < len; i++) {
807             newArr[i] = "_" + oldArr[i];
808         }
809         newArr[len] = "_dummy";
810         newValue = newArr;
811     } else
812     if (oldValue instanceof PropertyValue){
813         PropertyValue newVal = new PropertyValue();
814         newVal.Name = ((PropertyValue)oldValue).Name;
815         newVal.Value = changePValue(((PropertyValue)oldValue).Value);
816         newValue = newVal;
817     } else
818     if (oldValue instanceof com.sun.star.util.DateTime) {
819         com.sun.star.util.DateTime oldDT = (com.sun.star.util.DateTime) oldValue;
820         com.sun.star.util.DateTime newDT = new com.sun.star.util.DateTime();
821         newDT.Day = (short) (oldDT.Day+(short) 1);
822         newDT.Hours = (short) (oldDT.Hours+(short) 1);
823         newValue = newDT;
824     } else
825     if (oldValue instanceof com.sun.star.text.TableColumnSeparator) {
826         com.sun.star.text.TableColumnSeparator oldTCS = (com.sun.star.text.TableColumnSeparator) oldValue;
827         com.sun.star.text.TableColumnSeparator newTCS = new com.sun.star.text.TableColumnSeparator();
828         newTCS.IsVisible = !(oldTCS.IsVisible);
829         newTCS.Position = (short) (oldTCS.Position+(short) 1);
830         newValue = newTCS;
831     } else
832     if (oldValue instanceof com.sun.star.drawing.HomogenMatrix3) {
833         com.sun.star.drawing.HomogenMatrix3 oldHM = (com.sun.star.drawing.HomogenMatrix3) oldValue;
834         com.sun.star.drawing.HomogenMatrix3 newHM = new com.sun.star.drawing.HomogenMatrix3();
835         newHM.Line1.Column1 = oldHM.Line1.Column1+1;
836         newHM.Line2.Column2 = oldHM.Line2.Column2+1;
837         newHM.Line3.Column3 = oldHM.Line3.Column3+1;
838         newValue = newHM;
839     } else
840 
841     if (oldValue instanceof com.sun.star.drawing.PolyPolygonBezierCoords) {
842         com.sun.star.drawing.PolyPolygonBezierCoords oldPPC = (com.sun.star.drawing.PolyPolygonBezierCoords) oldValue;
843         com.sun.star.drawing.PolyPolygonBezierCoords newPPC = new com.sun.star.drawing.PolyPolygonBezierCoords();
844         newPPC.Coordinates = oldPPC.Coordinates;
845         newPPC.Flags = oldPPC.Flags;
846         PolygonFlags[][] fArray = new PolygonFlags[1][1];
847         PolygonFlags[] flags = new PolygonFlags[1];
848         flags[0] = PolygonFlags.NORMAL;
849         fArray[0] = flags;
850         Point[][] pArray = new Point[1][1];
851         Point[] points = new Point[1];
852         Point aPoint = new Point();
853         aPoint.X = 1;
854         aPoint.Y = 2;
855         points[0] = aPoint;
856         pArray[0] = points;
857         if ( oldPPC.Coordinates.length == 0 ) {
858             newPPC.Coordinates = pArray;
859             newPPC.Flags = fArray;
860         } else {
861             if ( oldPPC.Coordinates[0].length == 0 ) {
862                 newPPC.Coordinates = pArray;
863                 newPPC.Flags = fArray;
864             } else {
865                 newPPC.Coordinates[0][0].X = oldPPC.Coordinates[0][0].X +1;
866                 newPPC.Coordinates[0][0].Y = oldPPC.Coordinates[0][0].Y +1;
867             }
868         }
869         newValue = newPPC;
870     } else
871     if (oldValue.getClass().isArray()) {
872         // changer for arrays : changes all elements
873         Class arrType = oldValue.getClass().getComponentType() ;
874         newValue = Array.newInstance(arrType, Array.getLength(oldValue)) ;
875         for (int i = 0; i < Array.getLength(newValue); i++) {
876             if (!arrType.isPrimitive()) {
877                 Object elem = changePValue(Array.get(oldValue, i)) ;
878                 Array.set(newValue, i, elem);
879             } else {
880                 if (Boolean.TYPE.equals(arrType)) {
881                     Array.setBoolean(newValue, i, !Array.getBoolean(oldValue, i));
882                 } else
883                 if (Byte.TYPE.equals(arrType)) {
884                     Array.setByte(newValue, i,
885                         (byte) (Array.getByte(oldValue, i) + 1));
886                 } else
887                 if (Character.TYPE.equals(arrType)) {
888                     Array.setChar(newValue, i,
889                         (char) (Array.getChar(oldValue, i) + 1));
890                 } else
891                 if (Double.TYPE.equals(arrType)) {
892                     Array.setDouble(newValue, i, Array.getDouble(oldValue, i) + 1);
893                 } else
894                 if (Float.TYPE.equals(arrType)) {
895                     Array.setFloat(newValue, i, Array.getFloat(oldValue, i) + 1);
896                 } else
897                 if (Integer.TYPE.equals(arrType)) {
898                     Array.setInt(newValue, i, Array.getInt(oldValue, i) + 1);
899                 } else
900                 if (Long.TYPE.equals(arrType)) {
901                     Array.setLong(newValue, i, Array.getLong(oldValue, i) + 1);
902                 } else
903                 if (Short.TYPE.equals(arrType)) {
904                     Array.setShort(newValue, i,
905                         (short) (Array.getShort(oldValue, i) + 1));
906                 }
907             }
908         }
909     } else
910     if (isStructure(oldValue)) {
911         // universal changer for structures
912         Class clazz = oldValue.getClass() ;
913         try {
914             newValue = clazz.newInstance() ;
915             Field[] fields = clazz.getFields();
916             for (int i = 0; i < fields.length; i++) {
917                 if ((fields[i].getModifiers() & Modifier.PUBLIC) != 0) {
918                     Class fType = fields[i].getType() ;
919                     Field field = fields[i] ;
920                     if (!fType.isPrimitive()) {
921                         field.set(newValue, changePValue(field.get(oldValue)));
922                     } else {
923                         if (Boolean.TYPE.equals(fType)) {
924                             field.setBoolean(newValue, !field.getBoolean(oldValue));
925                         } else
926                         if (Byte.TYPE.equals(fType)) {
927                             field.setByte(newValue, (byte) (field.getByte(oldValue) + 1));
928                         } else
929                         if (Character.TYPE.equals(fType)) {
930                             field.setChar(newValue, (char) (field.getChar(oldValue) + 1));
931                         } else
932                         if (Double.TYPE.equals(fType)) {
933                             field.setDouble(newValue, field.getDouble(oldValue) + 1);
934                         } else
935                         if (Float.TYPE.equals(fType)) {
936                             field.setFloat(newValue, field.getFloat(oldValue) + 1);
937                         } else
938                         if (Integer.TYPE.equals(fType)) {
939                             field.setInt(newValue, field.getInt(oldValue) + 1);
940                         } else
941                         if (Long.TYPE.equals(fType)) {
942                             field.setLong(newValue, field.getLong(oldValue) + 1);
943                         } else
944                         if (Short.TYPE.equals(fType)) {
945                             field.setShort(newValue, (short) (field.getShort(oldValue) + 1));
946                         }
947                     }
948                 }
949             }
950         } catch (IllegalAccessException e) {
951             e.printStackTrace() ;
952         } catch (InstantiationException e) {
953             e.printStackTrace() ;
954         }
955 
956     } else
957     {
958         System.out.println("ValueChanger don't know type " + oldValue.getClass());
959     }
960 
961    return newValue;
962 
963  } // end of Change PValue
964 
965  /**
966   * Checks if the passed value is the API structure.
967   * The value assumed to be a structure if there are no public
968   * methods, and all public fields are not static or final.
969   *
970   * @param val the value to be checked.
971   * @return <code>true</code> if the value is acssumed to be a
972   * structure.
973   */
974  private static boolean isStructure(Object val) {
975     boolean result = true ;
976 
977     Class clazz = val.getClass() ;
978 
979     Method[] meth = clazz.getDeclaredMethods() ;
980     for (int i = 0; i < meth.length; i++) {
981         result &= (meth[i].getModifiers() & Modifier.PUBLIC) == 0 ;
982     }
983 
984     Field[] fields = clazz.getDeclaredFields() ;
985     for (int i = 0; i < fields.length; i++) {
986         int mod = fields[i].getModifiers() ;
987         // If the field is PUBLIC it must not be STATIC or FINAL
988         result &= ((mod & Modifier.PUBLIC) == 0) ||
989             (((mod & Modifier.STATIC) == 0) && ((mod & Modifier.FINAL) == 0)) ;
990     }
991 
992     return result ;
993  }
994 }
995